kanto-ds 1.5.2 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +10 -10
  2. package/dist/chunks/floating-B33g-M_1.js +63 -0
  3. package/dist/chunks/floating-B33g-M_1.js.map +1 -0
  4. package/dist/chunks/{index-STEEvEP7.js → index-TWJzttLX.js} +38 -15
  5. package/dist/chunks/index-TWJzttLX.js.map +1 -0
  6. package/dist/chunks/kt-calendar-CtwOby1R.js +780 -0
  7. package/dist/chunks/kt-calendar-CtwOby1R.js.map +1 -0
  8. package/dist/chunks/{kt-element-Djx2JcGl.js → kt-element-T0VbIBNp.js} +2 -2
  9. package/dist/chunks/{kt-element-Djx2JcGl.js.map → kt-element-T0VbIBNp.js.map} +1 -1
  10. package/dist/chunks/{listbox-llcUu_V-.js → listbox-LsUEyGhQ.js} +2 -2
  11. package/dist/chunks/{listbox-llcUu_V-.js.map → listbox-LsUEyGhQ.js.map} +1 -1
  12. package/dist/chunks/segmented-field-BBXR4XFL.js +384 -0
  13. package/dist/chunks/segmented-field-BBXR4XFL.js.map +1 -0
  14. package/dist/chunks/typed-date-CPAUNHzr.js +103 -0
  15. package/dist/chunks/typed-date-CPAUNHzr.js.map +1 -0
  16. package/dist/components/core/kt-avatar/kt-avatar.js +2 -2
  17. package/dist/components/core/kt-badge/kt-badge.js +2 -2
  18. package/dist/components/core/kt-button/kt-button.js +1 -1
  19. package/dist/components/core/kt-card/kt-card.js +1 -1
  20. package/dist/components/core/kt-code/kt-code.js +13 -13
  21. package/dist/components/core/kt-code/kt-code.js.map +1 -1
  22. package/dist/components/core/kt-icon/kt-icon.js +1 -1
  23. package/dist/components/core/kt-kbd/kt-kbd.js +5 -5
  24. package/dist/components/core/kt-kbd/kt-kbd.js.map +1 -1
  25. package/dist/components/core/kt-split-button/kt-split-button.js +3 -3
  26. package/dist/components/data/kt-chart/kt-chart.js +3 -3
  27. package/dist/components/data/kt-chart/kt-chart.js.map +1 -1
  28. package/dist/components/data/kt-meter/kt-meter.js +1 -1
  29. package/dist/components/data/kt-pagination/kt-pagination.js +2 -2
  30. package/dist/components/data/kt-stat/kt-stat.js +1 -1
  31. package/dist/components/data/kt-table/kt-table.js +85 -85
  32. package/dist/components/data/kt-table/kt-table.js.map +1 -1
  33. package/dist/components/data/kt-timeline/kt-timeline.js +1 -1
  34. package/dist/components/feedback/kt-alert/kt-alert.js +15 -15
  35. package/dist/components/feedback/kt-alert/kt-alert.js.map +1 -1
  36. package/dist/components/feedback/kt-empty-state/kt-empty-state.js +1 -1
  37. package/dist/components/feedback/kt-progress-bar/kt-progress-bar.js +1 -1
  38. package/dist/components/feedback/kt-skeleton/kt-skeleton.js +13 -13
  39. package/dist/components/feedback/kt-skeleton/kt-skeleton.js.map +1 -1
  40. package/dist/components/feedback/kt-toast/kt-toast.js +3 -3
  41. package/dist/components/feedback/kt-toast/kt-toast.js.map +1 -1
  42. package/dist/components/feedback/kt-toast-container/kt-toast-container.js +1 -1
  43. package/dist/components/feedback/kt-tooltip/kt-tooltip.js +1 -1
  44. package/dist/components/forms/kt-calendar/kt-calendar.d.ts +35 -9
  45. package/dist/components/forms/kt-calendar/kt-calendar.js +3 -3
  46. package/dist/components/forms/kt-checkbox/kt-checkbox.js +2 -2
  47. package/dist/components/forms/kt-date-input/kt-date-input.d.ts +65 -0
  48. package/dist/components/forms/kt-date-input/kt-date-input.js +241 -0
  49. package/dist/components/forms/kt-date-input/kt-date-input.js.map +1 -0
  50. package/dist/components/forms/kt-date-picker/kt-date-picker.d.ts +47 -3
  51. package/dist/components/forms/kt-date-picker/kt-date-picker.js +430 -199
  52. package/dist/components/forms/kt-date-picker/kt-date-picker.js.map +1 -1
  53. package/dist/components/forms/kt-drag-drop/kt-drag-drop.js +3 -3
  54. package/dist/components/forms/kt-drag-drop/kt-drag-drop.js.map +1 -1
  55. package/dist/components/forms/kt-form/kt-form.js +2 -2
  56. package/dist/components/forms/kt-input/kt-input.js +10 -10
  57. package/dist/components/forms/kt-input/kt-input.js.map +1 -1
  58. package/dist/components/forms/kt-input-menu/kt-input-menu.js +4 -4
  59. package/dist/components/forms/kt-label-input/kt-label-input.js +1 -1
  60. package/dist/components/forms/kt-multi-select/kt-multi-select.d.ts +113 -0
  61. package/dist/components/forms/kt-multi-select/kt-multi-select.js +532 -0
  62. package/dist/components/forms/kt-multi-select/kt-multi-select.js.map +1 -0
  63. package/dist/components/forms/kt-radio-group/kt-radio-group.js +56 -51
  64. package/dist/components/forms/kt-radio-group/kt-radio-group.js.map +1 -1
  65. package/dist/components/forms/kt-select/kt-select.js +4 -4
  66. package/dist/components/forms/kt-textarea/kt-textarea.js +2 -2
  67. package/dist/components/forms/kt-time-input/kt-time-input.d.ts +48 -0
  68. package/dist/components/forms/kt-time-input/kt-time-input.js +114 -0
  69. package/dist/components/forms/kt-time-input/kt-time-input.js.map +1 -0
  70. package/dist/components/forms/kt-toggle/kt-toggle.js +1 -1
  71. package/dist/components/navigation/kt-breadcrumb/kt-breadcrumb.js +6 -6
  72. package/dist/components/navigation/kt-breadcrumb/kt-breadcrumb.js.map +1 -1
  73. package/dist/components/navigation/kt-header/kt-header.js +2 -2
  74. package/dist/components/navigation/kt-page-header/kt-page-header.js +1 -1
  75. package/dist/components/navigation/kt-segmented-control/kt-segmented-control.js +2 -2
  76. package/dist/components/navigation/kt-sub-menu-navigation/kt-sub-menu-navigation.js +2 -2
  77. package/dist/components/navigation/kt-tabs/kt-tabs.js +2 -2
  78. package/dist/components/navigation/kt-tabs/kt-tabs.js.map +1 -1
  79. package/dist/components/navigation/kt-toggle-button/kt-toggle-button.js +1 -1
  80. package/dist/components/navigation/kt-toggle-button-group/kt-toggle-button-group.js +2 -2
  81. package/dist/components/overlays/kt-collapsible/kt-collapsible.js +3 -3
  82. package/dist/components/overlays/kt-collapsible/kt-collapsible.js.map +1 -1
  83. package/dist/components/overlays/kt-confirm-dialog/kt-confirm-dialog.js +2 -2
  84. package/dist/components/overlays/kt-dropdown/kt-dropdown.js +24 -24
  85. package/dist/components/overlays/kt-dropdown/kt-dropdown.js.map +1 -1
  86. package/dist/components/overlays/kt-modal/kt-modal.js +2 -2
  87. package/dist/components/overlays/kt-side-panel/kt-side-panel.js +2 -2
  88. package/dist/custom-elements.json +2230 -842
  89. package/dist/index.d.ts +9 -1
  90. package/dist/index.js +316 -109
  91. package/dist/index.js.map +1 -1
  92. package/dist/internal/floating.d.ts +3 -0
  93. package/dist/internal/segmented-field.d.ts +114 -0
  94. package/dist/internal/segments.d.ts +30 -0
  95. package/dist/internal/strings.d.ts +30 -0
  96. package/dist/internal/typed-date.d.ts +33 -0
  97. package/dist/react/index.d.ts +23 -0
  98. package/dist/react/index.js +193 -169
  99. package/dist/react/index.js.map +1 -1
  100. package/dist/react/jsx.d.ts +20 -1
  101. package/dist/strings/index.js +1 -1
  102. package/dist/theme/accent.d.ts +51 -0
  103. package/dist/theme/appearance.d.ts +37 -0
  104. package/dist/tokens/README.md +100 -1
  105. package/dist/tokens/accents.css +80 -0
  106. package/dist/tokens/appearance.css +65 -0
  107. package/dist/tokens/base.css +3 -0
  108. package/dist/tokens/colors.css +78 -25
  109. package/dist/tokens/index.css +2 -0
  110. package/dist/tokens/responsive.css +160 -75
  111. package/dist/tokens/spacing.css +47 -28
  112. package/dist/tokens/theme-light.css +124 -38
  113. package/dist/tokens/typography.css +20 -13
  114. package/dist/vscode.css-custom-data.json +36 -1
  115. package/dist/vscode.html-custom-data.json +67 -2
  116. package/dist/vue/index.d.ts +6 -0
  117. package/dist/vue/index.js +11 -8
  118. package/dist/vue/index.js.map +1 -1
  119. package/dist/web-types.json +190 -3
  120. package/package.json +13 -1
  121. package/dist/chunks/floating-B7_Dahpn.js +0 -54
  122. package/dist/chunks/floating-B7_Dahpn.js.map +0 -1
  123. package/dist/chunks/index-STEEvEP7.js.map +0 -1
  124. package/dist/chunks/kt-calendar-B_hFdD9V.js +0 -640
  125. package/dist/chunks/kt-calendar-B_hFdD9V.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/react/index.ts"],"sourcesContent":["/**\n * React wrappers for the Kanto elements — for React 18.\n *\n * React 18 sets every prop as a string attribute and cannot listen for custom\n * events, so each element is wrapped with `@lit/react`: props become\n * properties, `onKtChange` listens for `kt-change`, refs are typed as the\n * element. `@lit/react` is an optional peer dependency — a React 18 project\n * installs it alongside kanto-ds:\n *\n * npm install kanto-ds @lit/react\n *\n * import { KtButton, KtInput } from 'kanto-ds/react';\n * import 'kanto-ds/styles.css';\n *\n * <KtInput placeholder=\"Search\" onKtChange={(e) => setQuery(e.detail.value)} />\n *\n * React 19 needs none of this: it renders the `kt-*` tags directly, and\n * `kanto-ds/react/jsx` types them.\n */\nimport * as React from 'react';\nimport { createComponent, type EventName } from '@lit/react';\n\nimport { KtAvatar as KtAvatarElement } from '../components/core/kt-avatar/kt-avatar.js';\nimport { KtBadge as KtBadgeElement } from '../components/core/kt-badge/kt-badge.js';\nimport { KtButton as KtButtonElement } from '../components/core/kt-button/kt-button.js';\nimport { KtSplitButton as KtSplitButtonElement } from '../components/core/kt-split-button/kt-split-button.js';\nimport { KtCard as KtCardElement } from '../components/core/kt-card/kt-card.js';\nimport { KtCode as KtCodeElement } from '../components/core/kt-code/kt-code.js';\nimport { KtIcon as KtIconElement } from '../components/core/kt-icon/kt-icon.js';\nimport { KtKbd as KtKbdElement } from '../components/core/kt-kbd/kt-kbd.js';\nimport { KtCheckbox as KtCheckboxElement } from '../components/forms/kt-checkbox/kt-checkbox.js';\nimport { KtCalendar as KtCalendarElement } from '../components/forms/kt-calendar/kt-calendar.js';\nimport { KtDatePicker as KtDatePickerElement } from '../components/forms/kt-date-picker/kt-date-picker.js';\nimport { KtDragDrop as KtDragDropElement } from '../components/forms/kt-drag-drop/kt-drag-drop.js';\nimport { KtForm as KtFormElement } from '../components/forms/kt-form/kt-form.js';\nimport { KtInput as KtInputElement } from '../components/forms/kt-input/kt-input.js';\nimport { KtInputMenu as KtInputMenuElement } from '../components/forms/kt-input-menu/kt-input-menu.js';\nimport { KtLabelInput as KtLabelInputElement } from '../components/forms/kt-label-input/kt-label-input.js';\nimport {\n KtRadio as KtRadioElement,\n KtRadioGroup as KtRadioGroupElement,\n} from '../components/forms/kt-radio-group/kt-radio-group.js';\nimport { KtSelect as KtSelectElement } from '../components/forms/kt-select/kt-select.js';\nimport { KtTextarea as KtTextareaElement } from '../components/forms/kt-textarea/kt-textarea.js';\nimport { KtToggle as KtToggleElement } from '../components/forms/kt-toggle/kt-toggle.js';\nimport { KtBreadcrumb as KtBreadcrumbElement } from '../components/navigation/kt-breadcrumb/kt-breadcrumb.js';\nimport { KtPageHeader as KtPageHeaderElement } from '../components/navigation/kt-page-header/kt-page-header.js';\nimport { KtSegmentedControl as KtSegmentedControlElement } from '../components/navigation/kt-segmented-control/kt-segmented-control.js';\nimport { KtSubMenuNavigation as KtSubMenuNavigationElement } from '../components/navigation/kt-sub-menu-navigation/kt-sub-menu-navigation.js';\nimport { KtTabs as KtTabsElement } from '../components/navigation/kt-tabs/kt-tabs.js';\nimport { KtHeader as KtHeaderElement } from '../components/navigation/kt-header/kt-header.js';\nimport { KtToggleButton as KtToggleButtonElement } from '../components/navigation/kt-toggle-button/kt-toggle-button.js';\nimport { KtToggleButtonGroup as KtToggleButtonGroupElement } from '../components/navigation/kt-toggle-button-group/kt-toggle-button-group.js';\nimport { KtAlert as KtAlertElement } from '../components/feedback/kt-alert/kt-alert.js';\nimport { KtEmptyState as KtEmptyStateElement } from '../components/feedback/kt-empty-state/kt-empty-state.js';\nimport { KtProgressBar as KtProgressBarElement } from '../components/feedback/kt-progress-bar/kt-progress-bar.js';\nimport { KtSkeleton as KtSkeletonElement } from '../components/feedback/kt-skeleton/kt-skeleton.js';\nimport { KtToast as KtToastElement } from '../components/feedback/kt-toast/kt-toast.js';\nimport { KtToastContainer as KtToastContainerElement } from '../components/feedback/kt-toast-container/kt-toast-container.js';\nimport { KtTooltip as KtTooltipElement } from '../components/feedback/kt-tooltip/kt-tooltip.js';\nimport { KtCollapsible as KtCollapsibleElement } from '../components/overlays/kt-collapsible/kt-collapsible.js';\nimport { KtConfirmDialog as KtConfirmDialogElement } from '../components/overlays/kt-confirm-dialog/kt-confirm-dialog.js';\nimport { KtDropdown as KtDropdownElement } from '../components/overlays/kt-dropdown/kt-dropdown.js';\nimport { KtModal as KtModalElement } from '../components/overlays/kt-modal/kt-modal.js';\nimport { KtSidePanel as KtSidePanelElement } from '../components/overlays/kt-side-panel/kt-side-panel.js';\nimport { KtChart as KtChartElement } from '../components/data/kt-chart/kt-chart.js';\nimport { KtMeter as KtMeterElement } from '../components/data/kt-meter/kt-meter.js';\nimport { KtPagination as KtPaginationElement } from '../components/data/kt-pagination/kt-pagination.js';\nimport { KtStat as KtStatElement } from '../components/data/kt-stat/kt-stat.js';\nimport { KtTable as KtTableElement } from '../components/data/kt-table/kt-table.js';\nimport {\n KtTimeline as KtTimelineElement,\n KtTimelineItem as KtTimelineItemElement,\n} from '../components/data/kt-timeline/kt-timeline.js';\n\n/** Narrows an event name to the detail its element actually dispatches. */\ntype Kt<T> = EventName<CustomEvent<T>>;\n\n// === CORE ===\nexport const KtAvatar = createComponent({\n tagName: 'kt-avatar',\n elementClass: KtAvatarElement,\n react: React,\n});\n\nexport const KtBadge = createComponent({\n tagName: 'kt-badge',\n elementClass: KtBadgeElement,\n react: React,\n events: {\n onKtBadgeClick: 'kt-badge-click' as Kt<never>,\n onKtRemove: 'kt-remove' as Kt<never>,\n },\n});\n\nexport const KtButton = createComponent({\n tagName: 'kt-button',\n elementClass: KtButtonElement,\n react: React,\n});\n\nexport const KtSplitButton = createComponent({\n tagName: 'kt-split-button',\n elementClass: KtSplitButtonElement,\n react: React,\n events: {\n onKtSelect: 'kt-select' as Kt<{ value: string | number }>,\n onKtOpen: 'kt-open' as Kt<never>,\n onKtClose: 'kt-close' as Kt<never>,\n },\n});\n\nexport const KtCard = createComponent({\n tagName: 'kt-card',\n elementClass: KtCardElement,\n react: React,\n events: { onKtCardClick: 'kt-card-click' as Kt<never> },\n});\n\nexport const KtCode = createComponent({\n tagName: 'kt-code',\n elementClass: KtCodeElement,\n react: React,\n events: { onKtCopy: 'kt-copy' as Kt<{ code: string }> },\n});\n\nexport const KtIcon = createComponent({\n tagName: 'kt-icon',\n elementClass: KtIconElement,\n react: React,\n});\n\nexport const KtKbd = createComponent({\n tagName: 'kt-kbd',\n elementClass: KtKbdElement,\n react: React,\n});\n\n// === FORMS ===\nexport const KtForm = createComponent({\n tagName: 'kt-form',\n elementClass: KtFormElement,\n react: React,\n});\n\nexport const KtInput = createComponent({\n tagName: 'kt-input',\n elementClass: KtInputElement,\n react: React,\n events: {\n onKtInput: 'kt-input' as Kt<{ value: string }>,\n onKtChange: 'kt-change' as Kt<{ value: string }>,\n onKtClear: 'kt-clear' as Kt<never>,\n onKtCountryChange: 'kt-country-change' as Kt<{ country: string; dialCode: string }>,\n },\n});\n\nexport const KtTextarea = createComponent({\n tagName: 'kt-textarea',\n elementClass: KtTextareaElement,\n react: React,\n events: {\n onKtInput: 'kt-input' as Kt<{ value: string }>,\n onKtChange: 'kt-change' as Kt<{ value: string }>,\n },\n});\n\nexport const KtLabelInput = createComponent({\n tagName: 'kt-label-input',\n elementClass: KtLabelInputElement,\n react: React,\n});\n\nexport const KtToggle = createComponent({\n tagName: 'kt-toggle',\n elementClass: KtToggleElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ checked: boolean }> },\n});\n\nexport const KtCalendar = createComponent({\n tagName: 'kt-calendar',\n elementClass: KtCalendarElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string }> },\n});\n\nexport const KtDatePicker = createComponent({\n tagName: 'kt-date-picker',\n elementClass: KtDatePickerElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | null }> },\n});\n\nexport const KtCheckbox = createComponent({\n tagName: 'kt-checkbox',\n elementClass: KtCheckboxElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ checked: boolean }> },\n});\n\nexport const KtRadioGroup = createComponent({\n tagName: 'kt-radio-group',\n elementClass: KtRadioGroupElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | null }> },\n});\n\nexport const KtRadio = createComponent({\n tagName: 'kt-radio',\n elementClass: KtRadioElement,\n react: React,\n});\n\nexport const KtSelect = createComponent({\n tagName: 'kt-select',\n elementClass: KtSelectElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | number | null }> },\n});\n\nexport const KtInputMenu = createComponent({\n tagName: 'kt-input-menu',\n elementClass: KtInputMenuElement,\n react: React,\n events: {\n onKtChange: 'kt-change' as Kt<{ value: string | number | null }>,\n onKtFilter: 'kt-filter' as Kt<{ query: string }>,\n },\n});\n\nexport const KtDragDrop = createComponent({\n tagName: 'kt-drag-drop',\n elementClass: KtDragDropElement,\n react: React,\n events: {\n onKtFilesChange: 'kt-files-change' as Kt<{ files: File[] }>,\n onKtFilesRejected: 'kt-files-rejected' as Kt<{ files: File[]; reason: 'type' | 'size' }>,\n },\n});\n\n// === NAVIGATION ===\nexport const KtBreadcrumb = createComponent({\n tagName: 'kt-breadcrumb',\n elementClass: KtBreadcrumbElement,\n react: React,\n events: { onKtNavigate: 'kt-navigate' as Kt<{ index: number }> },\n});\n\nexport const KtSubMenuNavigation = createComponent({\n tagName: 'kt-sub-menu-navigation',\n elementClass: KtSubMenuNavigationElement,\n react: React,\n events: { onKtNavigate: 'kt-navigate' as Kt<unknown> },\n});\n\nexport const KtPageHeader = createComponent({\n tagName: 'kt-page-header',\n elementClass: KtPageHeaderElement,\n react: React,\n});\n\nexport const KtSegmentedControl = createComponent({\n tagName: 'kt-segmented-control',\n elementClass: KtSegmentedControlElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | number }> },\n});\n\nexport const KtTabs = createComponent({\n tagName: 'kt-tabs',\n elementClass: KtTabsElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | number }> },\n});\n\nexport const KtHeader = createComponent({\n tagName: 'kt-header',\n elementClass: KtHeaderElement,\n react: React,\n events: { onKtMenuToggle: 'kt-menu-toggle' as Kt<{ open: boolean }> },\n});\n\nexport const KtToggleButton = createComponent({\n tagName: 'kt-toggle-button',\n elementClass: KtToggleButtonElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ selected: boolean; value: string }> },\n});\n\nexport const KtToggleButtonGroup = createComponent({\n tagName: 'kt-toggle-button-group',\n elementClass: KtToggleButtonGroupElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | string[] | null }> },\n});\n\n// === FEEDBACK ===\nexport const KtAlert = createComponent({\n tagName: 'kt-alert',\n elementClass: KtAlertElement,\n react: React,\n events: { onKtClose: 'kt-close' as Kt<never> },\n});\n\nexport const KtEmptyState = createComponent({\n tagName: 'kt-empty-state',\n elementClass: KtEmptyStateElement,\n react: React,\n});\n\nexport const KtProgressBar = createComponent({\n tagName: 'kt-progress-bar',\n elementClass: KtProgressBarElement,\n react: React,\n});\n\nexport const KtSkeleton = createComponent({\n tagName: 'kt-skeleton',\n elementClass: KtSkeletonElement,\n react: React,\n});\n\nexport const KtTooltip = createComponent({\n tagName: 'kt-tooltip',\n elementClass: KtTooltipElement,\n react: React,\n});\n\nexport const KtToast = createComponent({\n tagName: 'kt-toast',\n elementClass: KtToastElement,\n react: React,\n events: { onKtToastClose: 'kt-toast-close' as Kt<never> },\n});\n\nexport const KtToastContainer = createComponent({\n tagName: 'kt-toast-container',\n elementClass: KtToastContainerElement,\n react: React,\n});\n\n// === OVERLAYS ===\nexport const KtCollapsible = createComponent({\n tagName: 'kt-collapsible',\n elementClass: KtCollapsibleElement,\n react: React,\n events: { onKtToggle: 'kt-toggle' as Kt<{ open: boolean }> },\n});\n\nexport const KtDropdown = createComponent({\n tagName: 'kt-dropdown',\n elementClass: KtDropdownElement,\n react: React,\n events: {\n onKtSelect: 'kt-select' as Kt<{ value: string | number }>,\n onKtOpen: 'kt-open' as Kt<never>,\n onKtClose: 'kt-close' as Kt<never>,\n },\n});\n\nexport const KtModal = createComponent({\n tagName: 'kt-modal',\n elementClass: KtModalElement,\n react: React,\n events: { onKtClose: 'kt-close' as Kt<never> },\n});\n\nexport const KtSidePanel = createComponent({\n tagName: 'kt-side-panel',\n elementClass: KtSidePanelElement,\n react: React,\n events: { onKtClose: 'kt-close' as Kt<never> },\n});\n\nexport const KtConfirmDialog = createComponent({\n tagName: 'kt-confirm-dialog',\n elementClass: KtConfirmDialogElement,\n react: React,\n events: {\n onKtConfirm: 'kt-confirm' as Kt<never>,\n onKtCancel: 'kt-cancel' as Kt<never>,\n },\n});\n\n// === DATA ===\nexport const KtChart = createComponent({\n tagName: 'kt-chart',\n elementClass: KtChartElement,\n react: React,\n events: {\n onKtPointHover: 'kt-point-hover' as Kt<{ index: number; series: number }>,\n onKtSeriesToggle: 'kt-series-toggle' as Kt<{ series: number; hidden: boolean }>,\n },\n});\n\nexport const KtTable = createComponent({\n tagName: 'kt-table',\n elementClass: KtTableElement,\n react: React,\n events: {\n onKtSortChange: 'kt-sort-change' as Kt<{\n key: string | null;\n direction: 'asc' | 'desc' | null;\n }>,\n onKtSelectionChange: 'kt-selection-change' as Kt<{ selected: unknown[] }>,\n onKtRowClick: 'kt-row-click' as Kt<{ index: number }>,\n onKtPageChange: 'kt-page-change' as Kt<{ page: number }>,\n },\n});\n\nexport const KtMeter = createComponent({\n tagName: 'kt-meter',\n elementClass: KtMeterElement,\n react: React,\n});\n\nexport const KtPagination = createComponent({\n tagName: 'kt-pagination',\n elementClass: KtPaginationElement,\n react: React,\n events: { onKtPageChange: 'kt-page-change' as Kt<{ page: number }> },\n});\n\n// The imperative toaster needs no wrapper.\nexport { toaster } from '../components/feedback/kt-toast-container/toaster.js';\n\nexport const KtStat = createComponent({\n tagName: 'kt-stat',\n elementClass: KtStatElement,\n react: React,\n});\n\nexport const KtTimeline = createComponent({\n tagName: 'kt-timeline',\n elementClass: KtTimelineElement,\n react: React,\n});\n\nexport const KtTimelineItem = createComponent({\n tagName: 'kt-timeline-item',\n elementClass: KtTimelineItemElement,\n react: React,\n});\n"],"names":["KtAvatar","createComponent","KtAvatarElement","React","KtBadge","KtBadgeElement","KtButton","KtButtonElement","KtSplitButton","KtSplitButtonElement","KtCard","KtCardElement","KtCode","KtCodeElement","KtIcon","KtIconElement","KtKbd","KtKbdElement","KtForm","KtFormElement","KtInput","KtInputElement","KtTextarea","KtTextareaElement","KtLabelInput","KtLabelInputElement","KtToggle","KtToggleElement","KtCalendar","KtCalendarElement","KtDatePicker","KtDatePickerElement","KtCheckbox","KtCheckboxElement","KtRadioGroup","KtRadioGroupElement","KtRadio","KtRadioElement","KtSelect","KtSelectElement","KtInputMenu","KtInputMenuElement","KtDragDrop","KtDragDropElement","KtBreadcrumb","KtBreadcrumbElement","KtSubMenuNavigation","KtSubMenuNavigationElement","KtPageHeader","KtPageHeaderElement","KtSegmentedControl","KtSegmentedControlElement","KtTabs","KtTabsElement","KtHeader","KtHeaderElement","KtToggleButton","KtToggleButtonElement","KtToggleButtonGroup","KtToggleButtonGroupElement","KtAlert","KtAlertElement","KtEmptyState","KtEmptyStateElement","KtProgressBar","KtProgressBarElement","KtSkeleton","KtSkeletonElement","KtTooltip","KtTooltipElement","KtToast","KtToastElement","KtToastContainer","KtToastContainerElement","KtCollapsible","KtCollapsibleElement","KtDropdown","KtDropdownElement","KtModal","KtModalElement","KtSidePanel","KtSidePanelElement","KtConfirmDialog","KtConfirmDialogElement","KtChart","KtChartElement","KtTable","KtTableElement","KtMeter","KtMeterElement","KtPagination","KtPaginationElement","KtStat","KtStatElement","KtTimeline","KtTimelineElement","KtTimelineItem","KtTimelineItemElement"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/react/index.ts"],"sourcesContent":["/**\n * React wrappers for the Kanto elements — for React 18.\n *\n * React 18 sets every prop as a string attribute and cannot listen for custom\n * events, so each element is wrapped with `@lit/react`: props become\n * properties, `onKtChange` listens for `kt-change`, refs are typed as the\n * element. `@lit/react` is an optional peer dependency — a React 18 project\n * installs it alongside kanto-ds:\n *\n * npm install kanto-ds @lit/react\n *\n * import { KtButton, KtInput } from 'kanto-ds/react';\n * import 'kanto-ds/styles.css';\n *\n * <KtInput placeholder=\"Search\" onKtChange={(e) => setQuery(e.detail.value)} />\n *\n * React 19 needs none of this: it renders the `kt-*` tags directly, and\n * `kanto-ds/react/jsx` types them.\n */\nimport * as React from 'react';\nimport { createComponent, type EventName } from '@lit/react';\nimport type { KtOption } from '../internal/listbox.js';\n\nimport { KtAvatar as KtAvatarElement } from '../components/core/kt-avatar/kt-avatar.js';\nimport { KtBadge as KtBadgeElement } from '../components/core/kt-badge/kt-badge.js';\nimport { KtButton as KtButtonElement } from '../components/core/kt-button/kt-button.js';\nimport { KtSplitButton as KtSplitButtonElement } from '../components/core/kt-split-button/kt-split-button.js';\nimport { KtCard as KtCardElement } from '../components/core/kt-card/kt-card.js';\nimport { KtCode as KtCodeElement } from '../components/core/kt-code/kt-code.js';\nimport { KtIcon as KtIconElement } from '../components/core/kt-icon/kt-icon.js';\nimport { KtKbd as KtKbdElement } from '../components/core/kt-kbd/kt-kbd.js';\nimport { KtCheckbox as KtCheckboxElement } from '../components/forms/kt-checkbox/kt-checkbox.js';\nimport { KtCalendar as KtCalendarElement } from '../components/forms/kt-calendar/kt-calendar.js';\nimport { KtDateInput as KtDateInputElement } from '../components/forms/kt-date-input/kt-date-input.js';\nimport { KtDatePicker as KtDatePickerElement } from '../components/forms/kt-date-picker/kt-date-picker.js';\nimport { KtDragDrop as KtDragDropElement } from '../components/forms/kt-drag-drop/kt-drag-drop.js';\nimport { KtForm as KtFormElement } from '../components/forms/kt-form/kt-form.js';\nimport { KtInput as KtInputElement } from '../components/forms/kt-input/kt-input.js';\nimport { KtInputMenu as KtInputMenuElement } from '../components/forms/kt-input-menu/kt-input-menu.js';\nimport { KtMultiSelect as KtMultiSelectElement } from '../components/forms/kt-multi-select/kt-multi-select.js';\nimport { KtLabelInput as KtLabelInputElement } from '../components/forms/kt-label-input/kt-label-input.js';\nimport {\n KtRadio as KtRadioElement,\n KtRadioGroup as KtRadioGroupElement,\n} from '../components/forms/kt-radio-group/kt-radio-group.js';\nimport { KtSelect as KtSelectElement } from '../components/forms/kt-select/kt-select.js';\nimport { KtTextarea as KtTextareaElement } from '../components/forms/kt-textarea/kt-textarea.js';\nimport { KtTimeInput as KtTimeInputElement } from '../components/forms/kt-time-input/kt-time-input.js';\nimport { KtToggle as KtToggleElement } from '../components/forms/kt-toggle/kt-toggle.js';\nimport { KtBreadcrumb as KtBreadcrumbElement } from '../components/navigation/kt-breadcrumb/kt-breadcrumb.js';\nimport { KtPageHeader as KtPageHeaderElement } from '../components/navigation/kt-page-header/kt-page-header.js';\nimport { KtSegmentedControl as KtSegmentedControlElement } from '../components/navigation/kt-segmented-control/kt-segmented-control.js';\nimport { KtSubMenuNavigation as KtSubMenuNavigationElement } from '../components/navigation/kt-sub-menu-navigation/kt-sub-menu-navigation.js';\nimport { KtTabs as KtTabsElement } from '../components/navigation/kt-tabs/kt-tabs.js';\nimport { KtHeader as KtHeaderElement } from '../components/navigation/kt-header/kt-header.js';\nimport { KtToggleButton as KtToggleButtonElement } from '../components/navigation/kt-toggle-button/kt-toggle-button.js';\nimport { KtToggleButtonGroup as KtToggleButtonGroupElement } from '../components/navigation/kt-toggle-button-group/kt-toggle-button-group.js';\nimport { KtAlert as KtAlertElement } from '../components/feedback/kt-alert/kt-alert.js';\nimport { KtEmptyState as KtEmptyStateElement } from '../components/feedback/kt-empty-state/kt-empty-state.js';\nimport { KtProgressBar as KtProgressBarElement } from '../components/feedback/kt-progress-bar/kt-progress-bar.js';\nimport { KtSkeleton as KtSkeletonElement } from '../components/feedback/kt-skeleton/kt-skeleton.js';\nimport { KtToast as KtToastElement } from '../components/feedback/kt-toast/kt-toast.js';\nimport { KtToastContainer as KtToastContainerElement } from '../components/feedback/kt-toast-container/kt-toast-container.js';\nimport { KtTooltip as KtTooltipElement } from '../components/feedback/kt-tooltip/kt-tooltip.js';\nimport { KtCollapsible as KtCollapsibleElement } from '../components/overlays/kt-collapsible/kt-collapsible.js';\nimport { KtConfirmDialog as KtConfirmDialogElement } from '../components/overlays/kt-confirm-dialog/kt-confirm-dialog.js';\nimport { KtDropdown as KtDropdownElement } from '../components/overlays/kt-dropdown/kt-dropdown.js';\nimport { KtModal as KtModalElement } from '../components/overlays/kt-modal/kt-modal.js';\nimport { KtSidePanel as KtSidePanelElement } from '../components/overlays/kt-side-panel/kt-side-panel.js';\nimport { KtChart as KtChartElement } from '../components/data/kt-chart/kt-chart.js';\nimport { KtMeter as KtMeterElement } from '../components/data/kt-meter/kt-meter.js';\nimport { KtPagination as KtPaginationElement } from '../components/data/kt-pagination/kt-pagination.js';\nimport { KtStat as KtStatElement } from '../components/data/kt-stat/kt-stat.js';\nimport { KtTable as KtTableElement } from '../components/data/kt-table/kt-table.js';\nimport {\n KtTimeline as KtTimelineElement,\n KtTimelineItem as KtTimelineItemElement,\n} from '../components/data/kt-timeline/kt-timeline.js';\n\n/** Narrows an event name to the detail its element actually dispatches. */\ntype Kt<T> = EventName<CustomEvent<T>>;\n\n// === CORE ===\nexport const KtAvatar = createComponent({\n tagName: 'kt-avatar',\n elementClass: KtAvatarElement,\n react: React,\n});\n\nexport const KtBadge = createComponent({\n tagName: 'kt-badge',\n elementClass: KtBadgeElement,\n react: React,\n events: {\n onKtBadgeClick: 'kt-badge-click' as Kt<never>,\n onKtRemove: 'kt-remove' as Kt<never>,\n },\n});\n\nexport const KtButton = createComponent({\n tagName: 'kt-button',\n elementClass: KtButtonElement,\n react: React,\n});\n\nexport const KtSplitButton = createComponent({\n tagName: 'kt-split-button',\n elementClass: KtSplitButtonElement,\n react: React,\n events: {\n onKtSelect: 'kt-select' as Kt<{ value: string | number }>,\n onKtOpen: 'kt-open' as Kt<never>,\n onKtClose: 'kt-close' as Kt<never>,\n },\n});\n\nexport const KtCard = createComponent({\n tagName: 'kt-card',\n elementClass: KtCardElement,\n react: React,\n events: { onKtCardClick: 'kt-card-click' as Kt<never> },\n});\n\nexport const KtCode = createComponent({\n tagName: 'kt-code',\n elementClass: KtCodeElement,\n react: React,\n events: { onKtCopy: 'kt-copy' as Kt<{ code: string }> },\n});\n\nexport const KtIcon = createComponent({\n tagName: 'kt-icon',\n elementClass: KtIconElement,\n react: React,\n});\n\nexport const KtKbd = createComponent({\n tagName: 'kt-kbd',\n elementClass: KtKbdElement,\n react: React,\n});\n\n// === FORMS ===\nexport const KtForm = createComponent({\n tagName: 'kt-form',\n elementClass: KtFormElement,\n react: React,\n});\n\nexport const KtInput = createComponent({\n tagName: 'kt-input',\n elementClass: KtInputElement,\n react: React,\n events: {\n onKtInput: 'kt-input' as Kt<{ value: string }>,\n onKtChange: 'kt-change' as Kt<{ value: string }>,\n onKtClear: 'kt-clear' as Kt<never>,\n onKtCountryChange: 'kt-country-change' as Kt<{ country: string; dialCode: string }>,\n },\n});\n\nexport const KtTextarea = createComponent({\n tagName: 'kt-textarea',\n elementClass: KtTextareaElement,\n react: React,\n events: {\n onKtInput: 'kt-input' as Kt<{ value: string }>,\n onKtChange: 'kt-change' as Kt<{ value: string }>,\n },\n});\n\nexport const KtLabelInput = createComponent({\n tagName: 'kt-label-input',\n elementClass: KtLabelInputElement,\n react: React,\n});\n\nexport const KtToggle = createComponent({\n tagName: 'kt-toggle',\n elementClass: KtToggleElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ checked: boolean }> },\n});\n\nexport const KtCalendar = createComponent({\n tagName: 'kt-calendar',\n elementClass: KtCalendarElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string }> },\n});\n\nexport const KtDateInput = createComponent({\n tagName: 'kt-date-input',\n elementClass: KtDateInputElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | null }> },\n});\n\nexport const KtTimeInput = createComponent({\n tagName: 'kt-time-input',\n elementClass: KtTimeInputElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | null }> },\n});\n\nexport const KtDatePicker = createComponent({\n tagName: 'kt-date-picker',\n elementClass: KtDatePickerElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | null }> },\n});\n\nexport const KtCheckbox = createComponent({\n tagName: 'kt-checkbox',\n elementClass: KtCheckboxElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ checked: boolean }> },\n});\n\nexport const KtRadioGroup = createComponent({\n tagName: 'kt-radio-group',\n elementClass: KtRadioGroupElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | null }> },\n});\n\nexport const KtRadio = createComponent({\n tagName: 'kt-radio',\n elementClass: KtRadioElement,\n react: React,\n});\n\nexport const KtSelect = createComponent({\n tagName: 'kt-select',\n elementClass: KtSelectElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | number | null }> },\n});\n\nexport const KtInputMenu = createComponent({\n tagName: 'kt-input-menu',\n elementClass: KtInputMenuElement,\n react: React,\n events: {\n onKtChange: 'kt-change' as Kt<{ value: string | number | null }>,\n onKtFilter: 'kt-filter' as Kt<{ query: string }>,\n },\n});\n\nexport const KtMultiSelect = createComponent({\n tagName: 'kt-multi-select',\n elementClass: KtMultiSelectElement,\n react: React,\n events: {\n onKtChange: 'kt-change' as Kt<{ value: (string | number)[]; options: KtOption[] }>,\n onKtFilter: 'kt-filter' as Kt<{ query: string }>,\n },\n});\n\nexport const KtDragDrop = createComponent({\n tagName: 'kt-drag-drop',\n elementClass: KtDragDropElement,\n react: React,\n events: {\n onKtFilesChange: 'kt-files-change' as Kt<{ files: File[] }>,\n onKtFilesRejected: 'kt-files-rejected' as Kt<{ files: File[]; reason: 'type' | 'size' }>,\n },\n});\n\n// === NAVIGATION ===\nexport const KtBreadcrumb = createComponent({\n tagName: 'kt-breadcrumb',\n elementClass: KtBreadcrumbElement,\n react: React,\n events: { onKtNavigate: 'kt-navigate' as Kt<{ index: number }> },\n});\n\nexport const KtSubMenuNavigation = createComponent({\n tagName: 'kt-sub-menu-navigation',\n elementClass: KtSubMenuNavigationElement,\n react: React,\n events: { onKtNavigate: 'kt-navigate' as Kt<unknown> },\n});\n\nexport const KtPageHeader = createComponent({\n tagName: 'kt-page-header',\n elementClass: KtPageHeaderElement,\n react: React,\n});\n\nexport const KtSegmentedControl = createComponent({\n tagName: 'kt-segmented-control',\n elementClass: KtSegmentedControlElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | number }> },\n});\n\nexport const KtTabs = createComponent({\n tagName: 'kt-tabs',\n elementClass: KtTabsElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | number }> },\n});\n\nexport const KtHeader = createComponent({\n tagName: 'kt-header',\n elementClass: KtHeaderElement,\n react: React,\n events: { onKtMenuToggle: 'kt-menu-toggle' as Kt<{ open: boolean }> },\n});\n\nexport const KtToggleButton = createComponent({\n tagName: 'kt-toggle-button',\n elementClass: KtToggleButtonElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ selected: boolean; value: string }> },\n});\n\nexport const KtToggleButtonGroup = createComponent({\n tagName: 'kt-toggle-button-group',\n elementClass: KtToggleButtonGroupElement,\n react: React,\n events: { onKtChange: 'kt-change' as Kt<{ value: string | string[] | null }> },\n});\n\n// === FEEDBACK ===\nexport const KtAlert = createComponent({\n tagName: 'kt-alert',\n elementClass: KtAlertElement,\n react: React,\n events: { onKtClose: 'kt-close' as Kt<never> },\n});\n\nexport const KtEmptyState = createComponent({\n tagName: 'kt-empty-state',\n elementClass: KtEmptyStateElement,\n react: React,\n});\n\nexport const KtProgressBar = createComponent({\n tagName: 'kt-progress-bar',\n elementClass: KtProgressBarElement,\n react: React,\n});\n\nexport const KtSkeleton = createComponent({\n tagName: 'kt-skeleton',\n elementClass: KtSkeletonElement,\n react: React,\n});\n\nexport const KtTooltip = createComponent({\n tagName: 'kt-tooltip',\n elementClass: KtTooltipElement,\n react: React,\n});\n\nexport const KtToast = createComponent({\n tagName: 'kt-toast',\n elementClass: KtToastElement,\n react: React,\n events: { onKtToastClose: 'kt-toast-close' as Kt<never> },\n});\n\nexport const KtToastContainer = createComponent({\n tagName: 'kt-toast-container',\n elementClass: KtToastContainerElement,\n react: React,\n});\n\n// === OVERLAYS ===\nexport const KtCollapsible = createComponent({\n tagName: 'kt-collapsible',\n elementClass: KtCollapsibleElement,\n react: React,\n events: { onKtToggle: 'kt-toggle' as Kt<{ open: boolean }> },\n});\n\nexport const KtDropdown = createComponent({\n tagName: 'kt-dropdown',\n elementClass: KtDropdownElement,\n react: React,\n events: {\n onKtSelect: 'kt-select' as Kt<{ value: string | number }>,\n onKtOpen: 'kt-open' as Kt<never>,\n onKtClose: 'kt-close' as Kt<never>,\n },\n});\n\nexport const KtModal = createComponent({\n tagName: 'kt-modal',\n elementClass: KtModalElement,\n react: React,\n events: { onKtClose: 'kt-close' as Kt<never> },\n});\n\nexport const KtSidePanel = createComponent({\n tagName: 'kt-side-panel',\n elementClass: KtSidePanelElement,\n react: React,\n events: { onKtClose: 'kt-close' as Kt<never> },\n});\n\nexport const KtConfirmDialog = createComponent({\n tagName: 'kt-confirm-dialog',\n elementClass: KtConfirmDialogElement,\n react: React,\n events: {\n onKtConfirm: 'kt-confirm' as Kt<never>,\n onKtCancel: 'kt-cancel' as Kt<never>,\n },\n});\n\n// === DATA ===\nexport const KtChart = createComponent({\n tagName: 'kt-chart',\n elementClass: KtChartElement,\n react: React,\n events: {\n onKtPointHover: 'kt-point-hover' as Kt<{ index: number; series: number }>,\n onKtSeriesToggle: 'kt-series-toggle' as Kt<{ series: number; hidden: boolean }>,\n },\n});\n\nexport const KtTable = createComponent({\n tagName: 'kt-table',\n elementClass: KtTableElement,\n react: React,\n events: {\n onKtSortChange: 'kt-sort-change' as Kt<{\n key: string | null;\n direction: 'asc' | 'desc' | null;\n }>,\n onKtSelectionChange: 'kt-selection-change' as Kt<{ selected: unknown[] }>,\n onKtRowClick: 'kt-row-click' as Kt<{ index: number }>,\n onKtPageChange: 'kt-page-change' as Kt<{ page: number }>,\n },\n});\n\nexport const KtMeter = createComponent({\n tagName: 'kt-meter',\n elementClass: KtMeterElement,\n react: React,\n});\n\nexport const KtPagination = createComponent({\n tagName: 'kt-pagination',\n elementClass: KtPaginationElement,\n react: React,\n events: { onKtPageChange: 'kt-page-change' as Kt<{ page: number }> },\n});\n\n// The imperative toaster needs no wrapper.\nexport { toaster } from '../components/feedback/kt-toast-container/toaster.js';\n\nexport const KtStat = createComponent({\n tagName: 'kt-stat',\n elementClass: KtStatElement,\n react: React,\n});\n\nexport const KtTimeline = createComponent({\n tagName: 'kt-timeline',\n elementClass: KtTimelineElement,\n react: React,\n});\n\nexport const KtTimelineItem = createComponent({\n tagName: 'kt-timeline-item',\n elementClass: KtTimelineItemElement,\n react: React,\n});\n"],"names":["KtAvatar","createComponent","KtAvatarElement","React","KtBadge","KtBadgeElement","KtButton","KtButtonElement","KtSplitButton","KtSplitButtonElement","KtCard","KtCardElement","KtCode","KtCodeElement","KtIcon","KtIconElement","KtKbd","KtKbdElement","KtForm","KtFormElement","KtInput","KtInputElement","KtTextarea","KtTextareaElement","KtLabelInput","KtLabelInputElement","KtToggle","KtToggleElement","KtCalendar","KtCalendarElement","KtDateInput","KtDateInputElement","KtTimeInput","KtTimeInputElement","KtDatePicker","KtDatePickerElement","KtCheckbox","KtCheckboxElement","KtRadioGroup","KtRadioGroupElement","KtRadio","KtRadioElement","KtSelect","KtSelectElement","KtInputMenu","KtInputMenuElement","KtMultiSelect","KtMultiSelectElement","KtDragDrop","KtDragDropElement","KtBreadcrumb","KtBreadcrumbElement","KtSubMenuNavigation","KtSubMenuNavigationElement","KtPageHeader","KtPageHeaderElement","KtSegmentedControl","KtSegmentedControlElement","KtTabs","KtTabsElement","KtHeader","KtHeaderElement","KtToggleButton","KtToggleButtonElement","KtToggleButtonGroup","KtToggleButtonGroupElement","KtAlert","KtAlertElement","KtEmptyState","KtEmptyStateElement","KtProgressBar","KtProgressBarElement","KtSkeleton","KtSkeletonElement","KtTooltip","KtTooltipElement","KtToast","KtToastElement","KtToastContainer","KtToastContainerElement","KtCollapsible","KtCollapsibleElement","KtDropdown","KtDropdownElement","KtModal","KtModalElement","KtSidePanel","KtSidePanelElement","KtConfirmDialog","KtConfirmDialogElement","KtChart","KtChartElement","KtTable","KtTableElement","KtMeter","KtMeterElement","KtPagination","KtPaginationElement","KtStat","KtStatElement","KtTimeline","KtTimelineElement","KtTimelineItem","KtTimelineItemElement"],"mappings":"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"}
@@ -19,7 +19,7 @@
19
19
  * are for.
20
20
  */
21
21
  import type * as React from 'react';
22
- import type { KtAvatar, KtBadge, KtButton, KtSplitButton, KtCard, KtCode, KtIcon, KtKbd, KtForm, KtInput, KtTextarea, KtLabelInput, KtToggle, KtSelect, KtCheckbox, KtCalendar, KtDatePicker, KtRadioGroup, KtRadio, KtInputMenu, KtDragDrop, KtBreadcrumb, KtSubMenuNavigation, KtPageHeader, KtSegmentedControl, KtTabs, KtHeader, KtToggleButton, KtToggleButtonGroup, KtAlert, KtEmptyState, KtProgressBar, KtSkeleton, KtTooltip, KtToast, KtToastContainer, KtCollapsible, KtDropdown, KtModal, KtSidePanel, KtConfirmDialog, KtChart, KtTable, KtMeter, KtPagination, KtStat, KtTimeline, KtTimelineItem } from 'kanto-ds';
22
+ import type { KtAvatar, KtBadge, KtButton, KtSplitButton, KtCard, KtCode, KtIcon, KtKbd, KtForm, KtInput, KtTextarea, KtLabelInput, KtToggle, KtSelect, KtCheckbox, KtCalendar, KtDateInput, KtDatePicker, KtTimeInput, KtRadioGroup, KtRadio, KtInputMenu, KtMultiSelect, KtOption, KtDragDrop, KtBreadcrumb, KtSubMenuNavigation, KtPageHeader, KtSegmentedControl, KtTabs, KtHeader, KtToggleButton, KtToggleButtonGroup, KtAlert, KtEmptyState, KtProgressBar, KtSkeleton, KtTooltip, KtToast, KtToastContainer, KtCollapsible, KtDropdown, KtModal, KtSidePanel, KtConfirmDialog, KtChart, KtTable, KtMeter, KtPagination, KtStat, KtTimeline, KtTimelineItem } from 'kanto-ds';
23
23
  /** The `on<event>` props React 19 turns into listeners, typed by their detail. */
24
24
  type Handlers<E> = {
25
25
  [K in keyof E & string as `on${K}`]?: (event: CustomEvent<E[K]>) => void;
@@ -88,6 +88,16 @@ declare module 'react' {
88
88
  value: string;
89
89
  };
90
90
  }>;
91
+ 'kt-date-input': KtProps<KtDateInput, {
92
+ 'kt-change': {
93
+ value: string | null;
94
+ };
95
+ }>;
96
+ 'kt-time-input': KtProps<KtTimeInput, {
97
+ 'kt-change': {
98
+ value: string | null;
99
+ };
100
+ }>;
91
101
  'kt-date-picker': KtProps<KtDatePicker, {
92
102
  'kt-change': {
93
103
  value: string | null;
@@ -117,6 +127,15 @@ declare module 'react' {
117
127
  query: string;
118
128
  };
119
129
  }>;
130
+ 'kt-multi-select': KtProps<KtMultiSelect, {
131
+ 'kt-change': {
132
+ value: (string | number)[];
133
+ options: KtOption[];
134
+ };
135
+ 'kt-filter': {
136
+ query: string;
137
+ };
138
+ }>;
120
139
  'kt-drag-drop': KtProps<KtDragDrop, {
121
140
  'kt-files-change': {
122
141
  files: File[];
@@ -1,4 +1,4 @@
1
- import { d as r, s as a, r as e, a as g } from "../chunks/index-STEEvEP7.js";
1
+ import { d as r, s as a, r as e, a as g } from "../chunks/index-TWJzttLX.js";
2
2
  export {
3
3
  r as defaultStrings,
4
4
  a as getStrings,
@@ -0,0 +1,51 @@
1
+ /**
2
+ * The accent colour: one colour in, every input the token layer reads out,
3
+ * each at the contrast Kanto promises.
4
+ *
5
+ * Self-contained on purpose — no imports — so `scripts/generate-accents.js`
6
+ * runs it straight from source under Node.
7
+ */
8
+ /** An sRGB colour, each channel 0–255. */
9
+ export type KtRgb = readonly [number, number, number];
10
+ /** The WCAG contrast ratio of two colours. */
11
+ export declare function contrastRatio(a: KtRgb, b: KtRgb): number;
12
+ /** Reads `#rgb`, `#rrggbb`, `rgb()`/`rgba()` and `oklch()`; throws on anything else. */
13
+ export declare function parseColor(input: string): KtRgb;
14
+ /** What the token layer reads for an accent. */
15
+ export interface KtAccentPalette {
16
+ /** Solid fill; carries white text at 4.5:1 or more. */
17
+ readonly base: string;
18
+ /** Fill on hover, a step darker. */
19
+ readonly hover: string;
20
+ /** The accent as text or an icon in the dark theme. */
21
+ readonly textDark: string;
22
+ /** The accent as text or an icon in the light theme. */
23
+ readonly textLight: string;
24
+ /** The translucent wash behind secondary buttons on hover: the fill at 16%. */
25
+ readonly wash: string;
26
+ /** The hue, in degrees, the neutral ramp is tinted with. */
27
+ readonly neutralHue: number;
28
+ /** How much of the ramp's tint to keep: 0 for a grey accent, 1 for a vivid one. */
29
+ readonly neutralChroma: number;
30
+ }
31
+ /** The violet Kanto ships, as literal values: what the tokens fall back to. */
32
+ export declare const KT_DEFAULT_ACCENT: KtAccentPalette;
33
+ /** The presets `accents.css` carries, each from a reference colour. */
34
+ export declare const KT_ACCENTS: readonly {
35
+ id: string;
36
+ label: string;
37
+ color: string;
38
+ }[];
39
+ /** Every token input for `color`, solved in OKLCH for the contrast Kanto promises. */
40
+ export declare function accentPalette(color: string): KtAccentPalette;
41
+ /** The custom properties a palette sets — what `accents.css` and `setAccent` write. */
42
+ export declare function accentProperties(palette: KtAccentPalette): Record<string, string>;
43
+ /**
44
+ * Themes `root` — the page by default — with any colour; `null` takes it off,
45
+ * back to the `data-accent` preset or the default.
46
+ *
47
+ * The inputs go on as inline custom properties. The element also needs a
48
+ * `data-accent` attribute for the token layer to re-read them there: a preset
49
+ * already on it is kept, otherwise it gets `data-accent="custom"`.
50
+ */
51
+ export declare function setAccent(color: string | null, root?: HTMLElement): void;
@@ -0,0 +1,37 @@
1
+ export type KtTheme = 'dark' | 'light' | 'auto';
2
+ export type KtFont = 'kanto' | 'system' | 'inter' | 'plex' | 'geist';
3
+ export type KtRadius = 'sharp' | 'default' | 'round';
4
+ export type KtDensity = 'compact' | 'default' | 'comfortable';
5
+ export type KtTextSize = 'small' | 'default' | 'large';
6
+ /** Every setting is optional: setAppearance changes only those given. */
7
+ export interface KtAppearance {
8
+ theme?: KtTheme;
9
+ /** A preset id from `KT_ACCENTS`, or any colour `setAccent` reads. */
10
+ accent?: string;
11
+ font?: KtFont;
12
+ radius?: KtRadius;
13
+ density?: KtDensity;
14
+ textSize?: KtTextSize;
15
+ }
16
+ interface KtChoice<T extends string> {
17
+ readonly id: T;
18
+ readonly label: string;
19
+ }
20
+ export declare const KT_THEMES: readonly KtChoice<KtTheme>[];
21
+ /** The fonts, each with the stack it sets — for showing a name in its face. */
22
+ export declare const KT_FONTS: readonly (KtChoice<KtFont> & {
23
+ readonly family: string;
24
+ })[];
25
+ export declare const KT_RADII: readonly KtChoice<KtRadius>[];
26
+ export declare const KT_DENSITIES: readonly KtChoice<KtDensity>[];
27
+ export declare const KT_TEXT_SIZES: readonly KtChoice<KtTextSize>[];
28
+ export declare const KT_DEFAULT_APPEARANCE: Required<KtAppearance>;
29
+ /**
30
+ * Applies `appearance` to `root` — the page by default. A setting at its
31
+ * default removes its attribute. Everything is checked first, so an unknown
32
+ * value throws a TypeError with nothing changed.
33
+ */
34
+ export declare function setAppearance(appearance: KtAppearance, root?: HTMLElement): void;
35
+ /** The appearance `root` shows: its attributes, with defaults for the rest. */
36
+ export declare function readAppearance(root?: HTMLElement): Required<KtAppearance>;
37
+ export {};
@@ -45,11 +45,110 @@ Dark is the canonical theme and is what `:root` carries.
45
45
  </html>
46
46
  ```
47
47
 
48
+ ## Accent colour
49
+
50
+ Kanto ships violet. Seven presets are a data attribute away, on the page or on
51
+ any container:
52
+
53
+ ```html
54
+ <html data-accent="blue"></html>
55
+ ```
56
+
57
+ `violet` · `blue` · `teal` · `green` · `orange` · `pink` · `slate`
58
+
59
+ Any other colour goes through `setAccent`, which solves the variants for it:
60
+
61
+ ```js
62
+ import { setAccent } from 'kanto-ds';
63
+
64
+ setAccent('#e11d48'); // the page
65
+ setAccent('#e11d48', panel); // one container
66
+ setAccent(null); // back to the preset or the default
67
+ ```
68
+
69
+ Whatever the colour, white text reads on a primary fill at 4.5:1 or more, and
70
+ the accent as text reads at 4.5:1 or more on the surfaces, on its own tint and on the hover wash of a secondary button,
71
+ in both themes. A bright colour — a yellow, a light orange — is darkened for
72
+ it, as Kanto's own violet is. The neutral surfaces take a trace of the accent's
73
+ hue; a grey accent gives plain greys.
74
+
75
+ `accentPalette(color)` returns the values without applying them — to write
76
+ them into a stylesheet at build time, for instance. The inputs it sets are
77
+ `--accent-base`, `--accent-hover`, `--accent-text-dark`, `--accent-text-light`,
78
+ `--accent-wash`, `--neutral-hue` and `--neutral-chroma`; components never read
79
+ them, only the tokens do.
80
+
81
+ A red or a green accent sits close to the danger and success colours; Kanto
82
+ does not stop you, but a primary button and a destructive one will look
83
+ alike.
84
+
85
+ ## Appearance
86
+
87
+ Besides the accent, four settings change how Kanto looks. Each is a data
88
+ attribute, on the page or on any container:
89
+
90
+ ```html
91
+ <html data-font="inter" data-radius="round" data-density="compact" data-text-size="large"></html>
92
+ ```
93
+
94
+ | Attribute | Values |
95
+ | ---------------- | ----------------------------------------------- |
96
+ | `data-font` | `kanto` · `system` · `inter` · `plex` · `geist` |
97
+ | `data-radius` | `sharp` · `default` · `round` |
98
+ | `data-density` | `compact` · `default` · `comfortable` |
99
+ | `data-text-size` | `small` · `default` · `large` |
100
+ | `data-theme` | `dark` · `light` · `auto` |
101
+
102
+ Or all at once, with the accent:
103
+
104
+ ```js
105
+ import { setAppearance, readAppearance } from 'kanto-ds';
106
+
107
+ setAppearance({ theme: 'auto', accent: 'teal', font: 'inter', density: 'compact' });
108
+ readAppearance(); // { theme: 'auto', accent: 'teal', font: 'inter', radius: 'default', … }
109
+ ```
110
+
111
+ `setAppearance` changes only the settings it is given, and checks them all
112
+ first: an unknown value throws and changes nothing.
113
+
114
+ Density scales the heights of controls and fields — a button is 34px in
115
+ `compact`, 46px in `comfortable`, on even pixels — the padding and gap
116
+ tokens, and table cells. Text size scales every type token and table text.
117
+ Both compose with the mobile and ultra-wide scales. A few inner sizes —
118
+ calendar cells, the small segmented control — keep their own.
119
+
120
+ The rounding of heights uses CSS `round()` where the browser has it (Chrome
121
+ 125, Firefox 118, Safari 15.4); before that, heights keep their exact
122
+ fraction and nothing else changes.
123
+
124
+ Kanto ships its own faces only. With `inter`, `plex` or `geist`, load the font
125
+ yourself (Google Fonts has all three); without it, the system face shows.
126
+
127
+ The inputs behind the attributes are `--radius-scale`, `--density-scale`,
128
+ `--text-scale`, `--font-body` and `--font-display`. Set in CSS, they need one
129
+ of the attributes on the same element for the tokens to re-read them there;
130
+ `--font-body` and `--font-display` take a full font stack, the scales a plain
131
+ number.
132
+
133
+ An element carrying one of these attributes re-declares Kanto's spacing and
134
+ type tokens from these inputs, so an app that overrides a token itself —
135
+ `:root { --button-height: 36px }` — repeats the override for that element, or
136
+ overrides the input instead. The same goes for colour tokens under
137
+ `data-accent`.
138
+
48
139
  ## Conventions
49
140
 
50
141
  - **Surfaces are a ramp, not a shadow scale.** Elevation means a lighter
51
142
  surface: `--color-dark-12` (page) → `--color-dark-16` (card) →
52
- `--color-dark-20` (raised). The only shadow in the system is on toasts.
143
+ `--color-dark-20` (raised). Shadows are kept for what floats over the page:
144
+ toasts, and popovers in the light theme.
145
+ - **Popovers have their own surface.** Lists, menus and calendars that open
146
+ over the page use `--surface-popover`, `--border-popover`,
147
+ `--shadow-popover` and, for lines inside them, `--divider-popover`. In the
148
+ dark the ramp sets them apart alone — a lighter surface, no edge, no shadow.
149
+ In the light a darker step reads as a grey smudge and fades what sits on it,
150
+ and white alone is lost on a near-white page: white, then, with an edge and a
151
+ soft shadow.
53
152
  - **Semantic colours come in four variants.** `-base` is opaque, for solid
54
153
  fills; `-soft` is the same hue at 12% alpha, for tinted backgrounds; `-hover`
55
154
  is 16%; `-text` is for text and icons. Never colour text with `-base`: it is
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Accent presets — generated by scripts/generate-accents.js; do not edit.
3
+ *
4
+ * Set one on the page or on any container:
5
+ *
6
+ * <html data-accent="blue">
7
+ *
8
+ * Each block sets the inputs colors.css reads. Violet is Kanto's default,
9
+ * spelled out so it can reset a container inside another accent.
10
+ */
11
+
12
+ [data-accent='violet'] {
13
+ --accent-base: #5f5dea;
14
+ --accent-hover: #5856e0;
15
+ --accent-text-dark: #8e97ff;
16
+ --accent-text-light: #4f30ef;
17
+ --accent-wash: rgba(111, 116, 246, 0.16);
18
+ --neutral-hue: 278;
19
+ --neutral-chroma: 1;
20
+ }
21
+
22
+ [data-accent='blue'] {
23
+ --accent-base: #1668e3;
24
+ --accent-hover: #0960db;
25
+ --accent-text-dark: #6aa3ff;
26
+ --accent-text-light: #004eba;
27
+ --accent-wash: rgba(22, 104, 227, 0.16);
28
+ --neutral-hue: 259.7;
29
+ --neutral-chroma: 1;
30
+ }
31
+
32
+ [data-accent='teal'] {
33
+ --accent-base: #007c72;
34
+ --accent-hover: #00746a;
35
+ --accent-text-dark: #42b5a8;
36
+ --accent-text-light: #005f57;
37
+ --accent-wash: rgba(0, 124, 114, 0.16);
38
+ --neutral-hue: 184.7;
39
+ --neutral-chroma: 1;
40
+ }
41
+
42
+ [data-accent='green'] {
43
+ --accent-base: #007f36;
44
+ --accent-hover: #007732;
45
+ --accent-text-dark: #3bba60;
46
+ --accent-text-light: #006328;
47
+ --accent-wash: rgba(0, 127, 54, 0.16);
48
+ --neutral-hue: 149.2;
49
+ --neutral-chroma: 1;
50
+ }
51
+
52
+ [data-accent='orange'] {
53
+ --accent-base: #c14500;
54
+ --accent-hover: #b54000;
55
+ --accent-text-dark: #ff7c48;
56
+ --accent-text-light: #953300;
57
+ --accent-wash: rgba(193, 69, 0, 0.16);
58
+ --neutral-hue: 41.1;
59
+ --neutral-chroma: 1;
60
+ }
61
+
62
+ [data-accent='pink'] {
63
+ --accent-base: #d21970;
64
+ --accent-hover: #c90369;
65
+ --accent-text-dark: #ff6da1;
66
+ --accent-text-light: #a30053;
67
+ --accent-wash: rgba(210, 25, 112, 0.16);
68
+ --neutral-hue: 0.6;
69
+ --neutral-chroma: 1;
70
+ }
71
+
72
+ [data-accent='slate'] {
73
+ --accent-base: #607086;
74
+ --accent-hover: #59687f;
75
+ --accent-text-dark: #95a6bf;
76
+ --accent-text-light: #48576d;
77
+ --accent-wash: rgba(96, 112, 134, 0.16);
78
+ --neutral-hue: 257.4;
79
+ --neutral-chroma: 0.51;
80
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Appearance presets: the font, corners, density and text size, each a data
3
+ * attribute on the page or any container.
4
+ *
5
+ * <html data-font="inter" data-radius="round" data-density="compact">
6
+ *
7
+ * Each sets an input the token layer reads; the tokens re-declare themselves
8
+ * on any element carrying one of these attributes, so a container can differ
9
+ * from the page. Kanto ships its own fonts only: an app choosing Inter, IBM
10
+ * Plex Sans or Geist loads the face itself, or the system stack shows.
11
+ */
12
+
13
+ [data-radius='sharp'] {
14
+ --radius-scale: 0.25;
15
+ }
16
+ [data-radius='round'] {
17
+ --radius-scale: 1.75;
18
+ }
19
+
20
+ [data-density='compact'] {
21
+ --density-scale: 0.85;
22
+ }
23
+ [data-density='comfortable'] {
24
+ --density-scale: 1.15;
25
+ }
26
+
27
+ [data-text-size='small'] {
28
+ --text-scale: 0.93;
29
+ }
30
+ [data-text-size='large'] {
31
+ --text-scale: 1.125;
32
+ }
33
+
34
+ [data-font='system'] {
35
+ --font-body: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
36
+ --font-display: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
37
+ }
38
+ [data-font='inter'] {
39
+ --font-body: 'Inter', system-ui, sans-serif;
40
+ --font-display: 'Inter', system-ui, sans-serif;
41
+ }
42
+ [data-font='plex'] {
43
+ --font-body: 'IBM Plex Sans', system-ui, sans-serif;
44
+ --font-display: 'IBM Plex Sans', system-ui, sans-serif;
45
+ }
46
+ [data-font='geist'] {
47
+ --font-body: 'Geist', system-ui, sans-serif;
48
+ --font-display: 'Geist', system-ui, sans-serif;
49
+ }
50
+
51
+ /* The defaults, spelled out so a container can go back to them inside one
52
+ that changed them — each resetting its own scale only. */
53
+ [data-radius='default'] {
54
+ --radius-scale: 1;
55
+ }
56
+ [data-density='default'] {
57
+ --density-scale: 1;
58
+ }
59
+ [data-text-size='default'] {
60
+ --text-scale: 1;
61
+ }
62
+ [data-font='kanto'] {
63
+ --font-body: 'Mulish', system-ui, -apple-system, 'Segoe UI', sans-serif;
64
+ --font-display: 'Manrope', 'Segoe UI', system-ui, sans-serif;
65
+ }
@@ -96,6 +96,7 @@ pre {
96
96
  kt-code,
97
97
  kt-collapsible,
98
98
  kt-confirm-dialog,
99
+ kt-date-input,
99
100
  kt-date-picker,
100
101
  kt-drag-drop,
101
102
  kt-dropdown,
@@ -105,6 +106,7 @@ pre {
105
106
  kt-icon,
106
107
  kt-input,
107
108
  kt-input-menu,
109
+ kt-multi-select,
108
110
  kt-kbd,
109
111
  kt-label-input,
110
112
  kt-meter,
@@ -124,6 +126,7 @@ pre {
124
126
  kt-table,
125
127
  kt-tabs,
126
128
  kt-textarea,
129
+ kt-time-input,
127
130
  kt-timeline,
128
131
  kt-timeline-item,
129
132
  kt-toast,