@accelint/design-toolkit 9.3.0 → 9.4.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.
- package/catalog-info.yaml +1 -1
- package/dist/components/accordion/context.d.ts +6 -0
- package/dist/components/accordion/context.js +6 -0
- package/dist/components/accordion/context.js.map +1 -1
- package/dist/components/accordion/group.d.ts +37 -2
- package/dist/components/accordion/group.js +34 -0
- package/dist/components/accordion/group.js.map +1 -1
- package/dist/components/accordion/header.d.ts +27 -2
- package/dist/components/accordion/header.js +25 -1
- package/dist/components/accordion/header.js.map +1 -1
- package/dist/components/accordion/index.d.ts +18 -4
- package/dist/components/accordion/index.js +16 -2
- package/dist/components/accordion/index.js.map +1 -1
- package/dist/components/accordion/panel.d.ts +29 -2
- package/dist/components/accordion/panel.js +26 -0
- package/dist/components/accordion/panel.js.map +1 -1
- package/dist/components/accordion/trigger.d.ts +25 -2
- package/dist/components/accordion/trigger.js +23 -1
- package/dist/components/accordion/trigger.js.map +1 -1
- package/dist/components/accordion/types.d.ts +33 -0
- package/dist/components/action-bar/index.d.ts +29 -8
- package/dist/components/action-bar/index.js +27 -6
- package/dist/components/action-bar/index.js.map +1 -1
- package/dist/components/action-bar/types.d.ts +7 -0
- package/dist/components/avatar/context.d.ts +22 -4
- package/dist/components/avatar/context.js +18 -0
- package/dist/components/avatar/context.js.map +1 -1
- package/dist/components/avatar/index.d.ts +22 -15
- package/dist/components/avatar/index.js +21 -14
- package/dist/components/avatar/index.js.map +1 -1
- package/dist/components/avatar/types.d.ts +13 -0
- package/dist/components/badge/context.d.ts +20 -2
- package/dist/components/badge/context.js +18 -0
- package/dist/components/badge/context.js.map +1 -1
- package/dist/components/badge/index.d.ts +28 -14
- package/dist/components/badge/index.js +28 -14
- package/dist/components/badge/index.js.map +1 -1
- package/dist/components/badge/types.d.ts +9 -0
- package/dist/components/breadcrumbs/index.d.ts +8 -0
- package/dist/components/breadcrumbs/index.js +7 -0
- package/dist/components/breadcrumbs/index.js.map +1 -1
- package/dist/components/breadcrumbs/item.d.ts +23 -0
- package/dist/components/breadcrumbs/item.js +23 -1
- package/dist/components/breadcrumbs/item.js.map +1 -1
- package/dist/components/breadcrumbs/types.d.ts +17 -0
- package/dist/components/button/context.d.ts +62 -8
- package/dist/components/button/context.js +54 -0
- package/dist/components/button/context.js.map +1 -1
- package/dist/components/button/index.d.ts +21 -2
- package/dist/components/button/index.js +19 -0
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/button/link.d.ts +20 -0
- package/dist/components/button/link.js +20 -0
- package/dist/components/button/link.js.map +1 -1
- package/dist/components/button/toggle.d.ts +23 -2
- package/dist/components/button/toggle.js +22 -1
- package/dist/components/button/toggle.js.map +1 -1
- package/dist/components/button/types.d.ts +26 -0
- package/dist/components/checkbox/context.d.ts +9 -3
- package/dist/components/checkbox/context.js +6 -0
- package/dist/components/checkbox/context.js.map +1 -1
- package/dist/components/checkbox/group.d.ts +31 -2
- package/dist/components/checkbox/group.js +28 -0
- package/dist/components/checkbox/group.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +19 -2
- package/dist/components/checkbox/index.js +19 -1
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/checkbox/types.d.ts +19 -0
- package/dist/components/chip/context.d.ts +22 -4
- package/dist/components/chip/context.js +18 -0
- package/dist/components/chip/context.js.map +1 -1
- package/dist/components/chip/deletable.d.ts +38 -2
- package/dist/components/chip/deletable.js +36 -1
- package/dist/components/chip/deletable.js.map +1 -1
- package/dist/components/chip/index.d.ts +24 -2
- package/dist/components/chip/index.js +22 -0
- package/dist/components/chip/index.js.map +1 -1
- package/dist/components/chip/list.d.ts +47 -2
- package/dist/components/chip/list.js +45 -0
- package/dist/components/chip/list.js.map +1 -1
- package/dist/components/chip/selectable.d.ts +32 -0
- package/dist/components/chip/selectable.js +31 -0
- package/dist/components/chip/selectable.js.map +1 -1
- package/dist/components/chip/types.d.ts +27 -0
- package/dist/components/classification-badge/context.d.ts +18 -2
- package/dist/components/classification-badge/context.js +16 -0
- package/dist/components/classification-badge/context.js.map +1 -1
- package/dist/components/classification-badge/index.d.ts +26 -8
- package/dist/components/classification-badge/index.js +25 -8
- package/dist/components/classification-badge/index.js.map +1 -1
- package/dist/components/classification-badge/types.d.ts +4 -0
- package/dist/components/classification-banner/context.d.ts +20 -4
- package/dist/components/classification-banner/context.js +16 -0
- package/dist/components/classification-banner/context.js.map +1 -1
- package/dist/components/classification-banner/index.d.ts +12 -2
- package/dist/components/classification-banner/index.js +9 -0
- package/dist/components/classification-banner/index.js.map +1 -1
- package/dist/components/classification-banner/types.d.ts +4 -0
- package/dist/components/clock/index.d.ts +12 -2
- package/dist/components/clock/index.js +10 -0
- package/dist/components/clock/index.js.map +1 -1
- package/dist/components/clock/types.d.ts +4 -0
- package/dist/components/color-picker/index.d.ts +12 -10
- package/dist/components/color-picker/index.js +10 -8
- package/dist/components/color-picker/index.js.map +1 -1
- package/dist/components/color-picker/types.d.ts +8 -0
- package/dist/components/combobox-field/context.d.ts +20 -4
- package/dist/components/combobox-field/context.js +16 -0
- package/dist/components/combobox-field/context.js.map +1 -1
- package/dist/components/combobox-field/index.d.ts +15 -2
- package/dist/components/combobox-field/index.js +13 -1
- package/dist/components/combobox-field/index.js.map +1 -1
- package/dist/components/combobox-field/types.d.ts +19 -0
- package/dist/components/coordinate-field/context.d.ts +15 -6
- package/dist/components/coordinate-field/context.js +9 -0
- package/dist/components/coordinate-field/context.js.map +1 -1
- package/dist/components/coordinate-field/coordinate-utils.d.ts +8 -0
- package/dist/components/coordinate-field/coordinate-utils.js +8 -0
- package/dist/components/coordinate-field/coordinate-utils.js.map +1 -1
- package/dist/components/coordinate-field/index.d.ts +29 -2
- package/dist/components/coordinate-field/index.js +29 -3
- package/dist/components/coordinate-field/index.js.map +1 -1
- package/dist/components/coordinate-field/segment.d.ts +27 -2
- package/dist/components/coordinate-field/segment.js +25 -0
- package/dist/components/coordinate-field/segment.js.map +1 -1
- package/dist/components/coordinate-field/styles.module.css +5 -1
- package/dist/components/date-field/index.d.ts +27 -2
- package/dist/components/date-field/index.js +25 -0
- package/dist/components/date-field/index.js.map +1 -1
- package/dist/components/date-field/types.d.ts +19 -3
- package/dist/components/deferred-collection/index.d.ts +10 -2
- package/dist/components/deferred-collection/index.js +8 -0
- package/dist/components/deferred-collection/index.js.map +1 -1
- package/dist/components/deferred-collection/types.d.ts +6 -3
- package/dist/components/details-list/context.d.ts +25 -4
- package/dist/components/details-list/context.js +21 -0
- package/dist/components/details-list/context.js.map +1 -1
- package/dist/components/details-list/index.d.ts +9 -2
- package/dist/components/details-list/index.js +7 -0
- package/dist/components/details-list/index.js.map +1 -1
- package/dist/components/details-list/label.d.ts +18 -2
- package/dist/components/details-list/label.js +16 -0
- package/dist/components/details-list/label.js.map +1 -1
- package/dist/components/details-list/types.d.ts +14 -0
- package/dist/components/details-list/value.d.ts +20 -2
- package/dist/components/details-list/value.js +17 -0
- package/dist/components/details-list/value.js.map +1 -1
- package/dist/components/dialog/content.d.ts +23 -2
- package/dist/components/dialog/content.js +20 -0
- package/dist/components/dialog/content.js.map +1 -1
- package/dist/components/dialog/context.d.ts +5 -2
- package/dist/components/dialog/context.js +3 -0
- package/dist/components/dialog/context.js.map +1 -1
- package/dist/components/dialog/footer.d.ts +26 -2
- package/dist/components/dialog/footer.js +23 -0
- package/dist/components/dialog/footer.js.map +1 -1
- package/dist/components/dialog/index.d.ts +12 -2
- package/dist/components/dialog/index.js +10 -0
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/dialog/title.d.ts +21 -2
- package/dist/components/dialog/title.js +18 -0
- package/dist/components/dialog/title.js.map +1 -1
- package/dist/components/dialog/trigger.d.ts +18 -0
- package/dist/components/dialog/trigger.js +17 -0
- package/dist/components/dialog/trigger.js.map +1 -1
- package/dist/components/dialog/types.d.ts +12 -0
- package/dist/components/divider/context.d.ts +24 -4
- package/dist/components/divider/context.js +20 -0
- package/dist/components/divider/context.js.map +1 -1
- package/dist/components/divider/index.d.ts +13 -2
- package/dist/components/divider/index.js +10 -0
- package/dist/components/divider/index.js.map +1 -1
- package/dist/components/divider/types.d.ts +4 -4
- package/dist/components/drawer/back.d.ts +21 -2
- package/dist/components/drawer/back.js +19 -1
- package/dist/components/drawer/back.js.map +1 -1
- package/dist/components/drawer/close.d.ts +25 -2
- package/dist/components/drawer/close.js +28 -3
- package/dist/components/drawer/close.js.map +1 -1
- package/dist/components/drawer/content.d.ts +22 -2
- package/dist/components/drawer/content.js +19 -0
- package/dist/components/drawer/content.js.map +1 -1
- package/dist/components/drawer/context.d.ts +46 -4
- package/dist/components/drawer/context.js +45 -2
- package/dist/components/drawer/context.js.map +1 -1
- package/dist/components/drawer/events.d.ts +2 -0
- package/dist/components/drawer/events.js +2 -0
- package/dist/components/drawer/events.js.map +1 -1
- package/dist/components/drawer/footer.d.ts +24 -2
- package/dist/components/drawer/footer.js +21 -0
- package/dist/components/drawer/footer.js.map +1 -1
- package/dist/components/drawer/header-title.d.ts +22 -4
- package/dist/components/drawer/header-title.js +19 -2
- package/dist/components/drawer/header-title.js.map +1 -1
- package/dist/components/drawer/header.d.ts +34 -2
- package/dist/components/drawer/header.js +42 -2
- package/dist/components/drawer/header.js.map +1 -1
- package/dist/components/drawer/index.d.ts +14 -2
- package/dist/components/drawer/index.js +16 -0
- package/dist/components/drawer/index.js.map +1 -1
- package/dist/components/drawer/layout-main.d.ts +23 -2
- package/dist/components/drawer/layout-main.js +20 -0
- package/dist/components/drawer/layout-main.js.map +1 -1
- package/dist/components/drawer/layout.d.ts +25 -2
- package/dist/components/drawer/layout.js +22 -0
- package/dist/components/drawer/layout.js.map +1 -1
- package/dist/components/drawer/menu-item.d.ts +25 -2
- package/dist/components/drawer/menu-item.js +22 -0
- package/dist/components/drawer/menu-item.js.map +1 -1
- package/dist/components/drawer/menu.d.ts +22 -2
- package/dist/components/drawer/menu.js +19 -0
- package/dist/components/drawer/menu.js.map +1 -1
- package/dist/components/drawer/panel.d.ts +21 -2
- package/dist/components/drawer/panel.js +18 -0
- package/dist/components/drawer/panel.js.map +1 -1
- package/dist/components/drawer/trigger.d.ts +31 -2
- package/dist/components/drawer/trigger.js +29 -1
- package/dist/components/drawer/trigger.js.map +1 -1
- package/dist/components/drawer/types.d.ts +149 -2
- package/dist/components/drawer/view.d.ts +25 -2
- package/dist/components/drawer/view.js +22 -0
- package/dist/components/drawer/view.js.map +1 -1
- package/dist/components/flashcard/index.d.ts +129 -27
- package/dist/components/flashcard/index.js +120 -18
- package/dist/components/flashcard/index.js.map +1 -1
- package/dist/components/flashcard/styles.module.css +1 -1
- package/dist/components/flashcard/types.d.ts +12 -0
- package/dist/components/hero/context.d.ts +5 -2
- package/dist/components/hero/context.js +3 -0
- package/dist/components/hero/context.js.map +1 -1
- package/dist/components/hero/index.d.ts +9 -2
- package/dist/components/hero/index.js +7 -0
- package/dist/components/hero/index.js.map +1 -1
- package/dist/components/hero/subtitle.d.ts +17 -2
- package/dist/components/hero/subtitle.js +15 -0
- package/dist/components/hero/subtitle.js.map +1 -1
- package/dist/components/hero/title.d.ts +15 -2
- package/dist/components/hero/title.js +13 -0
- package/dist/components/hero/title.js.map +1 -1
- package/dist/components/hero/types.d.ts +9 -0
- package/dist/components/hotkey/context.d.ts +24 -4
- package/dist/components/hotkey/context.js +20 -0
- package/dist/components/hotkey/context.js.map +1 -1
- package/dist/components/hotkey/index.d.ts +17 -2
- package/dist/components/hotkey/index.js +15 -0
- package/dist/components/hotkey/index.js.map +1 -1
- package/dist/components/hotkey/set.d.ts +21 -2
- package/dist/components/hotkey/set.js +18 -0
- package/dist/components/hotkey/set.js.map +1 -1
- package/dist/components/hotkey/types.d.ts +4 -0
- package/dist/components/icon/context.d.ts +24 -4
- package/dist/components/icon/context.js +20 -0
- package/dist/components/icon/context.js.map +1 -1
- package/dist/components/icon/index.d.ts +15 -2
- package/dist/components/icon/index.js +13 -0
- package/dist/components/icon/index.js.map +1 -1
- package/dist/components/icon/types.d.ts +4 -0
- package/dist/components/input/context.d.ts +4 -0
- package/dist/components/input/context.js +4 -0
- package/dist/components/input/context.js.map +1 -1
- package/dist/components/input/index.d.ts +17 -2
- package/dist/components/input/index.js +16 -1
- package/dist/components/input/index.js.map +1 -1
- package/dist/components/input/types.d.ts +16 -0
- package/dist/components/kanban/card-body.d.ts +10 -2
- package/dist/components/kanban/card-body.js +8 -0
- package/dist/components/kanban/card-body.js.map +1 -1
- package/dist/components/kanban/card-header-actions.d.ts +10 -2
- package/dist/components/kanban/card-header-actions.js +8 -0
- package/dist/components/kanban/card-header-actions.js.map +1 -1
- package/dist/components/kanban/card-header-title.d.ts +10 -2
- package/dist/components/kanban/card-header-title.js +8 -0
- package/dist/components/kanban/card-header-title.js.map +1 -1
- package/dist/components/kanban/card-header.d.ts +12 -2
- package/dist/components/kanban/card-header.js +10 -0
- package/dist/components/kanban/card-header.js.map +1 -1
- package/dist/components/kanban/card.d.ts +26 -2
- package/dist/components/kanban/card.js +23 -0
- package/dist/components/kanban/card.js.map +1 -1
- package/dist/components/kanban/column-actions.d.ts +10 -2
- package/dist/components/kanban/column-actions.js +9 -1
- package/dist/components/kanban/column-actions.js.map +1 -1
- package/dist/components/kanban/column-container.d.ts +10 -2
- package/dist/components/kanban/column-container.js +8 -0
- package/dist/components/kanban/column-container.js.map +1 -1
- package/dist/components/kanban/column-content.d.ts +13 -2
- package/dist/components/kanban/column-content.js +11 -0
- package/dist/components/kanban/column-content.js.map +1 -1
- package/dist/components/kanban/column-header-actions.d.ts +13 -2
- package/dist/components/kanban/column-header-actions.js +11 -0
- package/dist/components/kanban/column-header-actions.js.map +1 -1
- package/dist/components/kanban/column-header-drag-handle.d.ts +7 -2
- package/dist/components/kanban/column-header-drag-handle.js +6 -1
- package/dist/components/kanban/column-header-drag-handle.js.map +1 -1
- package/dist/components/kanban/column-header-title.d.ts +10 -2
- package/dist/components/kanban/column-header-title.js +8 -0
- package/dist/components/kanban/column-header-title.js.map +1 -1
- package/dist/components/kanban/column-header.d.ts +12 -2
- package/dist/components/kanban/column-header.js +10 -0
- package/dist/components/kanban/column-header.js.map +1 -1
- package/dist/components/kanban/column.d.ts +22 -2
- package/dist/components/kanban/column.js +19 -0
- package/dist/components/kanban/column.js.map +1 -1
- package/dist/components/kanban/context.d.ts +49 -2
- package/dist/components/kanban/context.js +30 -0
- package/dist/components/kanban/context.js.map +1 -1
- package/dist/components/kanban/header-actions.d.ts +10 -2
- package/dist/components/kanban/header-actions.js +8 -0
- package/dist/components/kanban/header-actions.js.map +1 -1
- package/dist/components/kanban/header-search.d.ts +9 -2
- package/dist/components/kanban/header-search.js +7 -0
- package/dist/components/kanban/header-search.js.map +1 -1
- package/dist/components/kanban/header-title.d.ts +10 -2
- package/dist/components/kanban/header-title.js +8 -0
- package/dist/components/kanban/header-title.js.map +1 -1
- package/dist/components/kanban/header.d.ts +12 -2
- package/dist/components/kanban/header.js +10 -0
- package/dist/components/kanban/header.js.map +1 -1
- package/dist/components/kanban/kanban.d.ts +33 -4
- package/dist/components/kanban/kanban.js +29 -0
- package/dist/components/kanban/kanban.js.map +1 -1
- package/dist/components/kanban/types.d.ts +51 -0
- package/dist/components/label/context.d.ts +25 -4
- package/dist/components/label/context.js +21 -0
- package/dist/components/label/context.js.map +1 -1
- package/dist/components/label/index.d.ts +16 -2
- package/dist/components/label/index.js +14 -0
- package/dist/components/label/index.js.map +1 -1
- package/dist/components/label/types.d.ts +5 -0
- package/dist/components/lines/index.d.ts +10 -0
- package/dist/components/lines/index.js +9 -0
- package/dist/components/lines/index.js.map +1 -1
- package/dist/components/lines/types.d.ts +6 -0
- package/dist/components/link/context.d.ts +21 -2
- package/dist/components/link/context.js +18 -0
- package/dist/components/link/context.js.map +1 -1
- package/dist/components/link/index.d.ts +12 -2
- package/dist/components/link/index.js +9 -0
- package/dist/components/link/index.js.map +1 -1
- package/dist/components/link/types.d.ts +5 -0
- package/dist/components/list/context.d.ts +11 -2
- package/dist/components/list/context.js +9 -0
- package/dist/components/list/context.js.map +1 -1
- package/dist/components/list/index.d.ts +11 -2
- package/dist/components/list/index.js +9 -0
- package/dist/components/list/index.js.map +1 -1
- package/dist/components/list/item-content.d.ts +9 -2
- package/dist/components/list/item-content.js +6 -0
- package/dist/components/list/item-content.js.map +1 -1
- package/dist/components/list/item-description.d.ts +9 -2
- package/dist/components/list/item-description.js +7 -0
- package/dist/components/list/item-description.js.map +1 -1
- package/dist/components/list/item-title.d.ts +9 -2
- package/dist/components/list/item-title.js +7 -0
- package/dist/components/list/item-title.js.map +1 -1
- package/dist/components/list/item.d.ts +10 -2
- package/dist/components/list/item.js +8 -0
- package/dist/components/list/item.js.map +1 -1
- package/dist/components/list/types.d.ts +22 -0
- package/dist/components/menu/context.d.ts +6 -2
- package/dist/components/menu/context.js +4 -0
- package/dist/components/menu/context.js.map +1 -1
- package/dist/components/menu/index.d.ts +24 -3
- package/dist/components/menu/index.js +22 -1
- package/dist/components/menu/index.js.map +1 -1
- package/dist/components/menu/item-description.d.ts +17 -2
- package/dist/components/menu/item-description.js +15 -0
- package/dist/components/menu/item-description.js.map +1 -1
- package/dist/components/menu/item-label.d.ts +17 -2
- package/dist/components/menu/item-label.js +15 -0
- package/dist/components/menu/item-label.js.map +1 -1
- package/dist/components/menu/item.d.ts +23 -2
- package/dist/components/menu/item.js +21 -1
- package/dist/components/menu/item.js.map +1 -1
- package/dist/components/menu/section.d.ts +23 -2
- package/dist/components/menu/section.js +20 -0
- package/dist/components/menu/section.js.map +1 -1
- package/dist/components/menu/separator.d.ts +16 -2
- package/dist/components/menu/separator.js +14 -0
- package/dist/components/menu/separator.js.map +1 -1
- package/dist/components/menu/submenu.d.ts +18 -2
- package/dist/components/menu/submenu.js +16 -0
- package/dist/components/menu/submenu.js.map +1 -1
- package/dist/components/menu/trigger.d.ts +15 -0
- package/dist/components/menu/trigger.js +15 -0
- package/dist/components/menu/trigger.js.map +1 -1
- package/dist/components/menu/types.d.ts +25 -0
- package/dist/components/notice/events.d.ts +9 -0
- package/dist/components/notice/events.js +9 -0
- package/dist/components/notice/events.js.map +1 -1
- package/dist/components/notice/index.d.ts +34 -2
- package/dist/components/notice/index.js +32 -1
- package/dist/components/notice/index.js.map +1 -1
- package/dist/components/notice/list.d.ts +31 -2
- package/dist/components/notice/list.js +28 -0
- package/dist/components/notice/list.js.map +1 -1
- package/dist/components/notice/notice-icon.d.ts +22 -2
- package/dist/components/notice/notice-icon.js +23 -1
- package/dist/components/notice/notice-icon.js.map +1 -1
- package/dist/components/notice/types.d.ts +60 -0
- package/dist/components/notice/utils.d.ts +8 -0
- package/dist/components/notice/utils.js +8 -0
- package/dist/components/notice/utils.js.map +1 -1
- package/dist/components/options/context.d.ts +1 -0
- package/dist/components/options/context.js +1 -0
- package/dist/components/options/context.js.map +1 -1
- package/dist/components/options/index.d.ts +15 -2
- package/dist/components/options/index.js +13 -0
- package/dist/components/options/index.js.map +1 -1
- package/dist/components/options/item-content.d.ts +22 -2
- package/dist/components/options/item-content.js +19 -0
- package/dist/components/options/item-content.js.map +1 -1
- package/dist/components/options/item-description.d.ts +14 -2
- package/dist/components/options/item-description.js +12 -0
- package/dist/components/options/item-description.js.map +1 -1
- package/dist/components/options/item-label.d.ts +14 -2
- package/dist/components/options/item-label.js +12 -0
- package/dist/components/options/item-label.js.map +1 -1
- package/dist/components/options/item.d.ts +24 -2
- package/dist/components/options/item.js +21 -0
- package/dist/components/options/item.js.map +1 -1
- package/dist/components/options/section.d.ts +21 -2
- package/dist/components/options/section.js +18 -0
- package/dist/components/options/section.js.map +1 -1
- package/dist/components/options/types.d.ts +24 -0
- package/dist/components/pagination/context.d.ts +3 -2
- package/dist/components/pagination/context.js +1 -0
- package/dist/components/pagination/context.js.map +1 -1
- package/dist/components/pagination/index.d.ts +18 -11
- package/dist/components/pagination/index.js +15 -9
- package/dist/components/pagination/index.js.map +1 -1
- package/dist/components/pagination/next.d.ts +17 -2
- package/dist/components/pagination/next.js +15 -0
- package/dist/components/pagination/next.js.map +1 -1
- package/dist/components/pagination/pages.d.ts +21 -2
- package/dist/components/pagination/pages.js +18 -0
- package/dist/components/pagination/pages.js.map +1 -1
- package/dist/components/pagination/prev.d.ts +17 -2
- package/dist/components/pagination/prev.js +16 -1
- package/dist/components/pagination/prev.js.map +1 -1
- package/dist/components/pagination/types.d.ts +32 -0
- package/dist/components/pagination/utils.d.ts +35 -0
- package/dist/components/pagination/utils.js +35 -0
- package/dist/components/pagination/utils.js.map +1 -1
- package/dist/components/popover/content.d.ts +20 -2
- package/dist/components/popover/content.js +17 -0
- package/dist/components/popover/content.js.map +1 -1
- package/dist/components/popover/footer.d.ts +22 -2
- package/dist/components/popover/footer.js +19 -0
- package/dist/components/popover/footer.js.map +1 -1
- package/dist/components/popover/index.d.ts +9 -2
- package/dist/components/popover/index.js +8 -1
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/popover/styles.module.css +6 -0
- package/dist/components/popover/title.d.ts +17 -2
- package/dist/components/popover/title.js +15 -0
- package/dist/components/popover/title.js.map +1 -1
- package/dist/components/popover/trigger.d.ts +24 -2
- package/dist/components/popover/trigger.js +21 -0
- package/dist/components/popover/trigger.js.map +1 -1
- package/dist/components/popover/types.d.ts +10 -0
- package/dist/components/query-builder/action-element.d.ts +20 -2
- package/dist/components/query-builder/action-element.js +17 -0
- package/dist/components/query-builder/action-element.js.map +1 -1
- package/dist/components/query-builder/actions.d.ts +37 -4
- package/dist/components/query-builder/actions.js +36 -1
- package/dist/components/query-builder/actions.js.map +1 -1
- package/dist/components/query-builder/combinator-selector.d.ts +10 -2
- package/dist/components/query-builder/combinator-selector.js +8 -0
- package/dist/components/query-builder/combinator-selector.js.map +1 -1
- package/dist/components/query-builder/constants.d.ts +1 -0
- package/dist/components/query-builder/constants.js +1 -0
- package/dist/components/query-builder/constants.js.map +1 -1
- package/dist/components/query-builder/index.d.ts +11 -2
- package/dist/components/query-builder/index.js +9 -0
- package/dist/components/query-builder/index.js.map +1 -1
- package/dist/components/query-builder/rule-group.d.ts +52 -4
- package/dist/components/query-builder/rule-group.js +47 -0
- package/dist/components/query-builder/rule-group.js.map +1 -1
- package/dist/components/query-builder/rule.d.ts +20 -2
- package/dist/components/query-builder/rule.js +18 -0
- package/dist/components/query-builder/rule.js.map +1 -1
- package/dist/components/query-builder/types.d.ts +9 -0
- package/dist/components/query-builder/utils.d.ts +15 -0
- package/dist/components/query-builder/utils.js +15 -0
- package/dist/components/query-builder/utils.js.map +1 -1
- package/dist/components/query-builder/value-editor.d.ts +23 -2
- package/dist/components/query-builder/value-editor.js +20 -0
- package/dist/components/query-builder/value-editor.js.map +1 -1
- package/dist/components/query-builder/value-selector.d.ts +23 -2
- package/dist/components/query-builder/value-selector.js +20 -0
- package/dist/components/query-builder/value-selector.js.map +1 -1
- package/dist/components/radio/context.d.ts +2 -2
- package/dist/components/radio/group.d.ts +19 -2
- package/dist/components/radio/group.js +16 -0
- package/dist/components/radio/group.js.map +1 -1
- package/dist/components/radio/index.d.ts +13 -26
- package/dist/components/radio/index.js +11 -24
- package/dist/components/radio/index.js.map +1 -1
- package/dist/components/radio/types.d.ts +16 -0
- package/dist/components/search-field/context.d.ts +7 -4
- package/dist/components/search-field/context.js +3 -0
- package/dist/components/search-field/context.js.map +1 -1
- package/dist/components/search-field/index.d.ts +15 -24
- package/dist/components/search-field/index.js +16 -23
- package/dist/components/search-field/index.js.map +1 -1
- package/dist/components/search-field/types.d.ts +13 -0
- package/dist/components/select-field/context.d.ts +11 -4
- package/dist/components/select-field/context.js +7 -0
- package/dist/components/select-field/context.js.map +1 -1
- package/dist/components/select-field/index.d.ts +19 -39
- package/dist/components/select-field/index.js +18 -38
- package/dist/components/select-field/index.js.map +1 -1
- package/dist/components/select-field/styles.module.css +8 -0
- package/dist/components/select-field/types.d.ts +18 -0
- package/dist/components/sidenav/avatar.d.ts +19 -2
- package/dist/components/sidenav/avatar.js +16 -0
- package/dist/components/sidenav/avatar.js.map +1 -1
- package/dist/components/sidenav/content.d.ts +23 -2
- package/dist/components/sidenav/content.js +20 -0
- package/dist/components/sidenav/content.js.map +1 -1
- package/dist/components/sidenav/context.d.ts +3 -2
- package/dist/components/sidenav/context.js +1 -0
- package/dist/components/sidenav/context.js.map +1 -1
- package/dist/components/sidenav/events.d.ts +2 -0
- package/dist/components/sidenav/events.js +2 -0
- package/dist/components/sidenav/events.js.map +1 -1
- package/dist/components/sidenav/footer.d.ts +16 -2
- package/dist/components/sidenav/footer.js +13 -0
- package/dist/components/sidenav/footer.js.map +1 -1
- package/dist/components/sidenav/header.d.ts +20 -2
- package/dist/components/sidenav/header.js +18 -1
- package/dist/components/sidenav/header.js.map +1 -1
- package/dist/components/sidenav/index.d.ts +11 -2
- package/dist/components/sidenav/index.js +9 -0
- package/dist/components/sidenav/index.js.map +1 -1
- package/dist/components/sidenav/item.d.ts +17 -2
- package/dist/components/sidenav/item.js +14 -0
- package/dist/components/sidenav/item.js.map +1 -1
- package/dist/components/sidenav/link.d.ts +17 -2
- package/dist/components/sidenav/link.js +15 -1
- package/dist/components/sidenav/link.js.map +1 -1
- package/dist/components/sidenav/menu-item.d.ts +16 -2
- package/dist/components/sidenav/menu-item.js +13 -0
- package/dist/components/sidenav/menu-item.js.map +1 -1
- package/dist/components/sidenav/menu.d.ts +19 -2
- package/dist/components/sidenav/menu.js +17 -1
- package/dist/components/sidenav/menu.js.map +1 -1
- package/dist/components/sidenav/trigger.d.ts +17 -2
- package/dist/components/sidenav/trigger.js +14 -0
- package/dist/components/sidenav/trigger.js.map +1 -1
- package/dist/components/sidenav/types.d.ts +53 -0
- package/dist/components/skeleton/index.d.ts +12 -27
- package/dist/components/skeleton/index.js +10 -24
- package/dist/components/skeleton/index.js.map +1 -1
- package/dist/components/skeleton/types.d.ts +4 -0
- package/dist/components/slider/index.d.ts +30 -29
- package/dist/components/slider/index.js +28 -27
- package/dist/components/slider/index.js.map +1 -1
- package/dist/components/slider/types.d.ts +18 -0
- package/dist/components/switch/context.d.ts +16 -10
- package/dist/components/switch/context.js +13 -7
- package/dist/components/switch/context.js.map +1 -1
- package/dist/components/switch/index.d.ts +14 -31
- package/dist/components/switch/index.js +12 -29
- package/dist/components/switch/index.js.map +1 -1
- package/dist/components/switch/types.d.ts +5 -0
- package/dist/components/table/body.d.ts +21 -2
- package/dist/components/table/body.js +18 -0
- package/dist/components/table/body.js.map +1 -1
- package/dist/components/table/cell.d.ts +22 -2
- package/dist/components/table/cell.js +19 -0
- package/dist/components/table/cell.js.map +1 -1
- package/dist/components/table/constants/table.d.ts +6 -0
- package/dist/components/table/constants/table.js +4 -0
- package/dist/components/table/constants/table.js.map +1 -1
- package/dist/components/table/context.d.ts +3 -2
- package/dist/components/table/context.js +1 -0
- package/dist/components/table/context.js.map +1 -1
- package/dist/components/table/header-cell.d.ts +24 -2
- package/dist/components/table/header-cell.js +24 -1
- package/dist/components/table/header-cell.js.map +1 -1
- package/dist/components/table/header.d.ts +20 -0
- package/dist/components/table/header.js +19 -0
- package/dist/components/table/header.js.map +1 -1
- package/dist/components/table/index.d.ts +28 -6
- package/dist/components/table/index.js +27 -5
- package/dist/components/table/index.js.map +1 -1
- package/dist/components/table/row.d.ts +26 -2
- package/dist/components/table/row.js +23 -0
- package/dist/components/table/row.js.map +1 -1
- package/dist/components/table/types.d.ts +3 -0
- package/dist/components/tabs/context.d.ts +20 -10
- package/dist/components/tabs/context.js +17 -7
- package/dist/components/tabs/context.js.map +1 -1
- package/dist/components/tabs/index.d.ts +17 -40
- package/dist/components/tabs/index.js +15 -38
- package/dist/components/tabs/index.js.map +1 -1
- package/dist/components/tabs/list.d.ts +20 -4
- package/dist/components/tabs/list.js +17 -2
- package/dist/components/tabs/list.js.map +1 -1
- package/dist/components/tabs/panel.d.ts +21 -4
- package/dist/components/tabs/panel.js +18 -2
- package/dist/components/tabs/panel.js.map +1 -1
- package/dist/components/tabs/tab.d.ts +17 -4
- package/dist/components/tabs/tab.js +14 -2
- package/dist/components/tabs/tab.js.map +1 -1
- package/dist/components/tabs/types.d.ts +3 -0
- package/dist/components/text-area-field/context.d.ts +20 -10
- package/dist/components/text-area-field/context.js +17 -7
- package/dist/components/text-area-field/context.js.map +1 -1
- package/dist/components/text-area-field/index.d.ts +20 -15
- package/dist/components/text-area-field/index.js +18 -13
- package/dist/components/text-area-field/index.js.map +1 -1
- package/dist/components/text-area-field/styles.module.css +1 -1
- package/dist/components/text-area-field/types.d.ts +9 -0
- package/dist/components/text-field/context.d.ts +24 -4
- package/dist/components/text-field/context.js +20 -0
- package/dist/components/text-field/context.js.map +1 -1
- package/dist/components/text-field/index.d.ts +17 -82
- package/dist/components/text-field/index.js +15 -80
- package/dist/components/text-field/index.js.map +1 -1
- package/dist/components/text-field/types.d.ts +9 -0
- package/dist/components/time-field/index.d.ts +23 -5
- package/dist/components/time-field/index.js +21 -4
- package/dist/components/time-field/index.js.map +1 -1
- package/dist/components/time-field/types.d.ts +9 -0
- package/dist/components/tooltip/context.d.ts +3 -2
- package/dist/components/tooltip/context.js +1 -0
- package/dist/components/tooltip/context.js.map +1 -1
- package/dist/components/tooltip/index.d.ts +15 -30
- package/dist/components/tooltip/index.js +13 -28
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/components/tooltip/trigger.d.ts +22 -2
- package/dist/components/tooltip/trigger.js +19 -0
- package/dist/components/tooltip/trigger.js.map +1 -1
- package/dist/components/tooltip/types.d.ts +7 -0
- package/dist/components/tree/context.d.ts +5 -9
- package/dist/components/tree/context.js +2 -6
- package/dist/components/tree/context.js.map +1 -1
- package/dist/components/tree/index.d.ts +30 -8
- package/dist/components/tree/index.js +28 -6
- package/dist/components/tree/index.js.map +1 -1
- package/dist/components/tree/item-actions.d.ts +19 -4
- package/dist/components/tree/item-actions.js +16 -2
- package/dist/components/tree/item-actions.js.map +1 -1
- package/dist/components/tree/item-content.d.ts +18 -4
- package/dist/components/tree/item-content.js +20 -3
- package/dist/components/tree/item-content.js.map +1 -1
- package/dist/components/tree/item-description.d.ts +15 -4
- package/dist/components/tree/item-description.js +13 -2
- package/dist/components/tree/item-description.js.map +1 -1
- package/dist/components/tree/item-label.d.ts +15 -4
- package/dist/components/tree/item-label.js +13 -2
- package/dist/components/tree/item-label.js.map +1 -1
- package/dist/components/tree/item-prefix-icon.d.ts +15 -4
- package/dist/components/tree/item-prefix-icon.js +13 -2
- package/dist/components/tree/item-prefix-icon.js.map +1 -1
- package/dist/components/tree/item.d.ts +24 -4
- package/dist/components/tree/item.js +21 -2
- package/dist/components/tree/item.js.map +1 -1
- package/dist/components/tree/lines.d.ts +10 -2
- package/dist/components/tree/lines.js +8 -0
- package/dist/components/tree/lines.js.map +1 -1
- package/dist/components/tree/types.d.ts +26 -0
- package/dist/components/view-stack/context.d.ts +20 -9
- package/dist/components/view-stack/context.js +18 -7
- package/dist/components/view-stack/context.js.map +1 -1
- package/dist/components/view-stack/events.d.ts +2 -0
- package/dist/components/view-stack/events.js +2 -0
- package/dist/components/view-stack/events.js.map +1 -1
- package/dist/components/view-stack/index.d.ts +16 -24
- package/dist/components/view-stack/index.js +14 -22
- package/dist/components/view-stack/index.js.map +1 -1
- package/dist/components/view-stack/trigger.d.ts +26 -4
- package/dist/components/view-stack/trigger.js +23 -2
- package/dist/components/view-stack/trigger.js.map +1 -1
- package/dist/components/view-stack/types.d.ts +29 -0
- package/dist/components/view-stack/view.d.ts +22 -2
- package/dist/components/view-stack/view.js +19 -0
- package/dist/components/view-stack/view.js.map +1 -1
- package/dist/hooks/coordinate-field/use-coordinate-copy.d.ts +44 -0
- package/dist/hooks/coordinate-field/use-coordinate-copy.js +35 -0
- package/dist/hooks/coordinate-field/use-coordinate-copy.js.map +1 -1
- package/dist/hooks/coordinate-field/use-coordinate-field-state.d.ts +69 -0
- package/dist/hooks/coordinate-field/use-coordinate-field-state.js +50 -0
- package/dist/hooks/coordinate-field/use-coordinate-field-state.js.map +1 -1
- package/dist/hooks/coordinate-field/use-coordinate-field.d.ts +61 -0
- package/dist/hooks/coordinate-field/use-coordinate-field.js +47 -0
- package/dist/hooks/coordinate-field/use-coordinate-field.js.map +1 -1
- package/dist/hooks/coordinate-field/use-coordinate-focus.d.ts +51 -0
- package/dist/hooks/coordinate-field/use-coordinate-focus.js +39 -0
- package/dist/hooks/coordinate-field/use-coordinate-focus.js.map +1 -1
- package/dist/hooks/coordinate-field/use-coordinate-paste.d.ts +63 -0
- package/dist/hooks/coordinate-field/use-coordinate-paste.js +51 -0
- package/dist/hooks/coordinate-field/use-coordinate-paste.js.map +1 -1
- package/dist/hooks/coordinate-field/use-timeout-cleanup.d.ts +32 -0
- package/dist/hooks/coordinate-field/use-timeout-cleanup.js +30 -0
- package/dist/hooks/coordinate-field/use-timeout-cleanup.js.map +1 -1
- package/dist/hooks/use-frame-delay/index.d.ts +5 -0
- package/dist/hooks/use-frame-delay/index.js +5 -0
- package/dist/hooks/use-frame-delay/index.js.map +1 -1
- package/dist/hooks/use-tree/actions/index.d.ts +4 -2
- package/dist/hooks/use-tree/actions/index.js +4 -2
- package/dist/hooks/use-tree/actions/index.js.map +1 -1
- package/dist/hooks/use-tree/state/index.d.ts +7 -0
- package/dist/hooks/use-tree/state/index.js +7 -0
- package/dist/hooks/use-tree/state/index.js.map +1 -1
- package/dist/hooks/use-tree/types.d.ts +22 -0
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/lib/types.d.ts +17 -0
- package/dist/lib/utils.d.ts +15 -0
- package/dist/lib/utils.js +15 -0
- package/dist/lib/utils.js.map +1 -1
- package/dist/providers/portal.d.ts +11 -2
- package/dist/providers/portal.js +9 -0
- package/dist/providers/portal.js.map +1 -1
- package/dist/providers/theme-provider.d.ts +18 -2
- package/dist/providers/theme-provider.js +15 -0
- package/dist/providers/theme-provider.js.map +1 -1
- package/package.json +3 -3
|
@@ -12,25 +12,42 @@
|
|
|
12
12
|
|
|
13
13
|
import { KanbanCardData, KanbanColumnData } from "./types.js";
|
|
14
14
|
import { ReactNode } from "react";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime86 from "react/jsx-runtime";
|
|
16
16
|
import { DragEndEvent } from "@dnd-kit/core";
|
|
17
17
|
|
|
18
18
|
//#region src/components/kanban/context.d.ts
|
|
19
|
+
/**
|
|
20
|
+
* Function signature for moving a card between columns or positions.
|
|
21
|
+
*/
|
|
19
22
|
type MoveCard = (cardId: string, targetColumnId: string, targetPosition: number, closestEdge?: 'top' | 'bottom') => void;
|
|
23
|
+
/**
|
|
24
|
+
* Context data for Kanban state and operations.
|
|
25
|
+
*/
|
|
20
26
|
interface KanbanContextData {
|
|
27
|
+
/** Array of all columns. */
|
|
21
28
|
columns: KanbanColumnData[];
|
|
29
|
+
/** Callback to update column state. */
|
|
22
30
|
updateColumnState: (columns: KanbanColumnData[]) => void;
|
|
31
|
+
/** Function to move a card. */
|
|
23
32
|
moveCard: MoveCard;
|
|
33
|
+
/** Get a column by its ID. */
|
|
24
34
|
getColumnById: (id: string) => KanbanColumnData | undefined;
|
|
35
|
+
/** Map of card IDs to their location info. */
|
|
25
36
|
cardMap: Map<string, {
|
|
26
37
|
column: KanbanColumnData;
|
|
27
38
|
card: KanbanCardData;
|
|
28
39
|
index: number;
|
|
29
40
|
}>;
|
|
30
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Props for KanbanProvider component.
|
|
44
|
+
*/
|
|
31
45
|
interface KanbanProviderProps {
|
|
46
|
+
/** Array of column data. */
|
|
32
47
|
columns: KanbanColumnData[];
|
|
48
|
+
/** Callback to update column state. */
|
|
33
49
|
updateColumnState: (columns: KanbanColumnData[]) => void;
|
|
50
|
+
/** Child components. */
|
|
34
51
|
children: ReactNode;
|
|
35
52
|
}
|
|
36
53
|
/**
|
|
@@ -96,6 +113,12 @@ declare function calculateClosestEdge(over: DragEndEvent['over'], active: DragEn
|
|
|
96
113
|
* @returns Normalized drop target information or null if invalid drop
|
|
97
114
|
*/
|
|
98
115
|
declare function parseDropTarget(event: DragEndEvent): DropTargetInfo | null;
|
|
116
|
+
/**
|
|
117
|
+
* Calculates the insert index based on target position and drop edge.
|
|
118
|
+
* @param targetPosition - The target position index.
|
|
119
|
+
* @param closestEdge - The edge to drop relative to.
|
|
120
|
+
* @returns The calculated insert index.
|
|
121
|
+
*/
|
|
99
122
|
declare const getInsertIndex: (targetPosition: number, closestEdge?: "top" | "bottom") => number;
|
|
100
123
|
/**
|
|
101
124
|
* Validates all parameters for a card move operation
|
|
@@ -109,11 +132,35 @@ declare function validateMoveCard({
|
|
|
109
132
|
columns,
|
|
110
133
|
cardMap
|
|
111
134
|
}: MoveCardValidationParams): MoveCardValidationResult;
|
|
135
|
+
/**
|
|
136
|
+
* KanbanProvider - Context provider for Kanban state management
|
|
137
|
+
*
|
|
138
|
+
* Manages column and card state, handles drag-and-drop operations,
|
|
139
|
+
* and provides the moveCard function for card movements.
|
|
140
|
+
*
|
|
141
|
+
* @param props - {@link KanbanProviderProps}
|
|
142
|
+
* @param props.children - Child components.
|
|
143
|
+
* @param props.columns - Array of column data.
|
|
144
|
+
* @param props.updateColumnState - Callback to update column state.
|
|
145
|
+
* @returns The rendered KanbanProvider component.
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```tsx
|
|
149
|
+
* <KanbanProvider columns={columns} updateColumnState={setColumns}>
|
|
150
|
+
* <Kanban>...</Kanban>
|
|
151
|
+
* </KanbanProvider>
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
112
154
|
declare const KanbanProvider: ({
|
|
113
155
|
children,
|
|
114
156
|
columns,
|
|
115
157
|
updateColumnState
|
|
116
|
-
}: KanbanProviderProps) =>
|
|
158
|
+
}: KanbanProviderProps) => react_jsx_runtime86.JSX.Element;
|
|
159
|
+
/**
|
|
160
|
+
* Hook to access Kanban context values.
|
|
161
|
+
* Must be used within a KanbanProvider.
|
|
162
|
+
* @returns The Kanban context data.
|
|
163
|
+
*/
|
|
117
164
|
declare const useKanban: () => KanbanContextData;
|
|
118
165
|
//#endregion
|
|
119
166
|
export { DropTargetInfo, KanbanContextData, KanbanProvider, KanbanProviderProps, MoveCard, MoveCardValidationParams, MoveCardValidationResult, calculateClosestEdge, getInsertIndex, parseDropTarget, useKanban, validateMoveCard };
|
|
@@ -56,6 +56,12 @@ const updatePositions = (column) => {
|
|
|
56
56
|
c.position = index;
|
|
57
57
|
});
|
|
58
58
|
};
|
|
59
|
+
/**
|
|
60
|
+
* Calculates the insert index based on target position and drop edge.
|
|
61
|
+
* @param targetPosition - The target position index.
|
|
62
|
+
* @param closestEdge - The edge to drop relative to.
|
|
63
|
+
* @returns The calculated insert index.
|
|
64
|
+
*/
|
|
59
65
|
const getInsertIndex = (targetPosition, closestEdge) => {
|
|
60
66
|
if (!closestEdge) return targetPosition;
|
|
61
67
|
return closestEdge === "top" ? targetPosition : targetPosition + 1;
|
|
@@ -122,6 +128,25 @@ const KanbanContext = createContext({
|
|
|
122
128
|
getColumnById: () => void 0,
|
|
123
129
|
cardMap: /* @__PURE__ */ new Map()
|
|
124
130
|
});
|
|
131
|
+
/**
|
|
132
|
+
* KanbanProvider - Context provider for Kanban state management
|
|
133
|
+
*
|
|
134
|
+
* Manages column and card state, handles drag-and-drop operations,
|
|
135
|
+
* and provides the moveCard function for card movements.
|
|
136
|
+
*
|
|
137
|
+
* @param props - {@link KanbanProviderProps}
|
|
138
|
+
* @param props.children - Child components.
|
|
139
|
+
* @param props.columns - Array of column data.
|
|
140
|
+
* @param props.updateColumnState - Callback to update column state.
|
|
141
|
+
* @returns The rendered KanbanProvider component.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```tsx
|
|
145
|
+
* <KanbanProvider columns={columns} updateColumnState={setColumns}>
|
|
146
|
+
* <Kanban>...</Kanban>
|
|
147
|
+
* </KanbanProvider>
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
125
150
|
const KanbanProvider = ({ children, columns, updateColumnState }) => {
|
|
126
151
|
const cardMap = useMemo(() => {
|
|
127
152
|
const map = /* @__PURE__ */ new Map();
|
|
@@ -191,6 +216,11 @@ const KanbanProvider = ({ children, columns, updateColumnState }) => {
|
|
|
191
216
|
children
|
|
192
217
|
});
|
|
193
218
|
};
|
|
219
|
+
/**
|
|
220
|
+
* Hook to access Kanban context values.
|
|
221
|
+
* Must be used within a KanbanProvider.
|
|
222
|
+
* @returns The Kanban context data.
|
|
223
|
+
*/
|
|
194
224
|
const useKanban = () => {
|
|
195
225
|
const context = useContext(KanbanContext);
|
|
196
226
|
if (!context) throw new Error("useKanban must be used within KanbanProvider");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":["errors: string[]"],"sources":["../../../src/components/kanban/context.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport type { DragEndEvent } from '@dnd-kit/core';\nimport type { KanbanCardData, KanbanColumnData } from './types';\n\nexport type MoveCard = (\n cardId: string,\n targetColumnId: string,\n targetPosition: number,\n closestEdge?: 'top' | 'bottom',\n) => void;\nexport interface KanbanContextData {\n columns: KanbanColumnData[];\n updateColumnState: (columns: KanbanColumnData[]) => void;\n moveCard: MoveCard;\n getColumnById: (id: string) => KanbanColumnData | undefined;\n cardMap: Map<\n string,\n { column: KanbanColumnData; card: KanbanCardData; index: number }\n >;\n}\n\nexport interface KanbanProviderProps {\n columns: KanbanColumnData[];\n updateColumnState: (columns: KanbanColumnData[]) => void;\n children: ReactNode;\n}\n\n/**\n * Result of parsing a drop target from a drag event\n */\nexport interface DropTargetInfo {\n /** The ID of the column where the card should be dropped */\n columnId: string;\n /** The position/index within the column */\n position: number;\n /** The edge to drop relative to (undefined when dropping on empty column) */\n edge: 'top' | 'bottom' | undefined;\n}\n\n/**\n * Parameters for validating a card move operation\n */\nexport interface MoveCardValidationParams {\n cardId: string;\n targetColumnId: string;\n targetPosition: number;\n columns: KanbanColumnData[];\n cardMap: Map<\n string,\n { column: KanbanColumnData; card: KanbanCardData; index: number }\n >;\n}\n\n/**\n * Result of validating a card move operation\n * Uses discriminated union to ensure type safety based on success/failure\n */\nexport type MoveCardValidationResult =\n | {\n /** Validation succeeded */\n success: true;\n /** Adjusted target position (clamped to valid bounds) */\n adjustedPosition: number;\n /** Source card information */\n sourceInfo: {\n column: KanbanColumnData;\n card: KanbanCardData;\n index: number;\n };\n /** Target column */\n targetColumn: KanbanColumnData;\n /** Empty error array for success case */\n errors: [];\n }\n | {\n /** Validation failed */\n success: false;\n /** List of error messages describing validation failures */\n errors: string[];\n };\n\n/**\n * Calculates which edge of a drop target is closest to the dragged item\n * @param over - The drop target from dnd-kit\n * @param active - The active dragged item from dnd-kit\n * @returns 'top' if the dragged item's center is above the midpoint, 'bottom' otherwise\n */\nexport function calculateClosestEdge(\n over: DragEndEvent['over'],\n active: DragEndEvent['active'],\n): 'top' | 'bottom' {\n if (!over?.rect) {\n return 'bottom';\n }\n\n const translated = active?.rect?.current?.translated;\n if (!translated) {\n return 'bottom';\n }\n\n const overRect = over.rect;\n const midpoint = overRect.top + overRect.height / 2;\n const draggedItemCenter = translated.top + translated.height / 2;\n\n return draggedItemCenter < midpoint ? 'top' : 'bottom';\n}\n\n/**\n * Parses a drag event to determine where a card should be dropped\n * @param event - The drag end event from dnd-kit\n * @returns Normalized drop target information or null if invalid drop\n */\nexport function parseDropTarget(event: DragEndEvent): DropTargetInfo | null {\n const { active, over } = event;\n\n if (!over) {\n return null;\n }\n\n const overData = over.data.current;\n\n if (!overData) {\n return null;\n }\n\n // Dropping on a column (empty space or column container)\n if (Array.isArray(overData.cards)) {\n return {\n columnId: overData.id,\n position: overData.cards.length,\n edge: undefined,\n };\n }\n\n // Dropping on a card position\n const edge = calculateClosestEdge(over, active);\n return {\n columnId: overData.columnId,\n position: overData.position,\n edge,\n };\n}\n\nconst updatePositions = (column: KanbanColumnData) => {\n column.cards.forEach((c, index) => {\n c.position = index;\n });\n};\n\nexport const getInsertIndex = (\n targetPosition: number,\n closestEdge?: 'top' | 'bottom',\n) => {\n // If no edge is specified, use the target position as-is\n if (!closestEdge) {\n return targetPosition;\n }\n\n // If dropping on top edge, insert at the target position (before the card)\n // If dropping on bottom edge, insert after the target position (position + 1)\n return closestEdge === 'top' ? targetPosition : targetPosition + 1;\n};\n\n/**\n * Validates all parameters for a card move operation\n * @param params - Validation parameters\n * @returns Validation result with success flag, adjusted values, and errors\n */\nexport function validateMoveCard({\n cardId,\n targetColumnId,\n targetPosition,\n columns,\n cardMap,\n}: MoveCardValidationParams): MoveCardValidationResult {\n const errors: string[] = [];\n let adjustedPosition = targetPosition;\n\n // 1. Type validation\n if (typeof cardId !== 'string' || !cardId.trim()) {\n errors.push('[Kanban] moveCard: cardId must be a non-empty string');\n }\n\n if (typeof targetColumnId !== 'string' || !targetColumnId.trim()) {\n errors.push('[Kanban] moveCard: targetColumnId must be a non-empty string');\n }\n\n if (typeof targetPosition !== 'number' || !Number.isFinite(targetPosition)) {\n errors.push('[Kanban] moveCard: targetPosition must be a finite number');\n }\n\n // Early return if type validation fails\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n // 2. Card existence validation\n const sourceInfo = cardMap.get(cardId);\n if (!sourceInfo) {\n errors.push(`[Kanban] moveCard: Card \"${cardId}\" not found in any column`);\n return { success: false, errors };\n }\n\n // 3. Target column existence validation\n const targetColumn = columns.find((col) => col.id === targetColumnId);\n if (!targetColumn) {\n errors.push(\n `[Kanban] moveCard: Target column \"${targetColumnId}\" not found`,\n );\n return { success: false, errors };\n }\n\n // 4. Position bounds validation (with adjustment)\n if (adjustedPosition < 0) {\n console.warn(\n `[Kanban] moveCard: targetPosition (${adjustedPosition}) cannot be negative. Using 0 instead.`,\n );\n adjustedPosition = 0;\n }\n\n const maxPosition = targetColumn.cards.length;\n if (adjustedPosition > maxPosition) {\n console.warn(\n `[Kanban] moveCard: targetPosition (${adjustedPosition}) exceeds maximum (${maxPosition}). ` +\n `Using ${maxPosition} instead.`,\n );\n adjustedPosition = maxPosition;\n }\n\n // 5. canDrop validation\n if (targetColumn.canDrop === false) {\n errors.push(\n `[Kanban] moveCard: Column \"${targetColumnId}\" does not accept drops`,\n );\n return { success: false, errors };\n }\n\n // All validations passed\n return {\n success: true,\n adjustedPosition,\n sourceInfo,\n targetColumn,\n errors: [],\n };\n}\n\nconst KanbanContext = createContext<KanbanContextData>({\n columns: [],\n updateColumnState: () => null,\n moveCard: () => null,\n getColumnById: () => undefined,\n cardMap: new Map(),\n});\n\nexport const KanbanProvider = ({\n children,\n columns,\n updateColumnState,\n}: KanbanProviderProps) => {\n // Create a lookup map for O(1) card access\n const cardMap = useMemo(() => {\n const map = new Map<\n string,\n { column: KanbanColumnData; card: KanbanCardData; index: number }\n >();\n\n columns.forEach((column) => {\n column.cards.forEach((card, index) => {\n map.set(card.id, { column, card, index });\n });\n });\n\n return map;\n }, [columns]);\n\n const moveCard = useCallback(\n (\n cardId: string,\n targetColumnId: string,\n targetPosition: number,\n closestEdge?: 'top' | 'bottom',\n ) => {\n // Validate all inputs\n const validation = validateMoveCard({\n cardId,\n targetColumnId,\n targetPosition,\n columns,\n cardMap,\n });\n\n // Handle validation failure\n if (!validation.success) {\n validation.errors.forEach((error) => {\n console.error(error);\n });\n return false;\n }\n\n // Extract validated data - TypeScript knows these are defined after success check\n const { adjustedPosition, sourceInfo: source, targetColumn } = validation;\n\n const newColumns = [...columns];\n const isSameColumn = source.column.id === targetColumn.id;\n\n // Remove card from source column\n const newSourceColumn = {\n ...source.column,\n cards: source.column.cards.filter((_, i) => i !== source.index),\n };\n\n // Calculate insert index using adjusted position\n let index = getInsertIndex(adjustedPosition, closestEdge);\n\n // If moving within the same column and moving down, adjust index\n if (isSameColumn && source.index < index) {\n index -= 1;\n }\n\n // Insert card into target column\n const newTargetColumn = isSameColumn\n ? newSourceColumn\n : { ...targetColumn, cards: [...targetColumn.cards] };\n\n newTargetColumn.cards.splice(index, 0, {\n ...source.card,\n columnId: targetColumnId,\n });\n\n // Update positions\n updatePositions(newTargetColumn);\n if (!isSameColumn) {\n updatePositions(newSourceColumn);\n }\n\n // Update the columns array with the modified columns\n const updatedColumns = newColumns.map((col) => {\n if (col.id === source.column.id) {\n return newSourceColumn;\n }\n if (col.id === targetColumn.id) {\n return newTargetColumn;\n }\n return col;\n });\n\n updateColumnState(updatedColumns);\n },\n [columns, updateColumnState, cardMap],\n );\n\n const getColumnById = useCallback(\n (id: string) => columns.find((c) => c.id === id),\n [columns],\n );\n\n return (\n <KanbanContext.Provider\n value={{ columns, updateColumnState, moveCard, getColumnById, cardMap }}\n >\n {children}\n </KanbanContext.Provider>\n );\n};\n\nexport const useKanban = () => {\n const context = useContext(KanbanContext);\n if (!context) {\n throw new Error('useKanban must be used within KanbanProvider');\n }\n return context;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAyGA,SAAgB,qBACd,MACA,QACkB;AAClB,KAAI,CAAC,MAAM,KACT,QAAO;CAGT,MAAM,aAAa,QAAQ,MAAM,SAAS;AAC1C,KAAI,CAAC,WACH,QAAO;CAGT,MAAM,WAAW,KAAK;CACtB,MAAM,WAAW,SAAS,MAAM,SAAS,SAAS;AAGlD,QAF0B,WAAW,MAAM,WAAW,SAAS,IAEpC,WAAW,QAAQ;;;;;;;AAQhD,SAAgB,gBAAgB,OAA4C;CAC1E,MAAM,EAAE,QAAQ,SAAS;AAEzB,KAAI,CAAC,KACH,QAAO;CAGT,MAAM,WAAW,KAAK,KAAK;AAE3B,KAAI,CAAC,SACH,QAAO;AAIT,KAAI,MAAM,QAAQ,SAAS,MAAM,CAC/B,QAAO;EACL,UAAU,SAAS;EACnB,UAAU,SAAS,MAAM;EACzB,MAAM;EACP;CAIH,MAAM,OAAO,qBAAqB,MAAM,OAAO;AAC/C,QAAO;EACL,UAAU,SAAS;EACnB,UAAU,SAAS;EACnB;EACD;;AAGH,MAAM,mBAAmB,WAA6B;AACpD,QAAO,MAAM,SAAS,GAAG,UAAU;AACjC,IAAE,WAAW;GACb;;AAGJ,MAAa,kBACX,gBACA,gBACG;AAEH,KAAI,CAAC,YACH,QAAO;AAKT,QAAO,gBAAgB,QAAQ,iBAAiB,iBAAiB;;;;;;;AAQnE,SAAgB,iBAAiB,EAC/B,QACA,gBACA,gBACA,SACA,WACqD;CACrD,MAAMA,SAAmB,EAAE;CAC3B,IAAI,mBAAmB;AAGvB,KAAI,OAAO,WAAW,YAAY,CAAC,OAAO,MAAM,CAC9C,QAAO,KAAK,uDAAuD;AAGrE,KAAI,OAAO,mBAAmB,YAAY,CAAC,eAAe,MAAM,CAC9D,QAAO,KAAK,+DAA+D;AAG7E,KAAI,OAAO,mBAAmB,YAAY,CAAC,OAAO,SAAS,eAAe,CACxE,QAAO,KAAK,4DAA4D;AAI1E,KAAI,OAAO,SAAS,EAClB,QAAO;EAAE,SAAS;EAAO;EAAQ;CAInC,MAAM,aAAa,QAAQ,IAAI,OAAO;AACtC,KAAI,CAAC,YAAY;AACf,SAAO,KAAK,4BAA4B,OAAO,2BAA2B;AAC1E,SAAO;GAAE,SAAS;GAAO;GAAQ;;CAInC,MAAM,eAAe,QAAQ,MAAM,QAAQ,IAAI,OAAO,eAAe;AACrE,KAAI,CAAC,cAAc;AACjB,SAAO,KACL,qCAAqC,eAAe,aACrD;AACD,SAAO;GAAE,SAAS;GAAO;GAAQ;;AAInC,KAAI,mBAAmB,GAAG;AACxB,UAAQ,KACN,sCAAsC,iBAAiB,wCACxD;AACD,qBAAmB;;CAGrB,MAAM,cAAc,aAAa,MAAM;AACvC,KAAI,mBAAmB,aAAa;AAClC,UAAQ,KACN,sCAAsC,iBAAiB,qBAAqB,YAAY,WAC7E,YAAY,WACxB;AACD,qBAAmB;;AAIrB,KAAI,aAAa,YAAY,OAAO;AAClC,SAAO,KACL,8BAA8B,eAAe,yBAC9C;AACD,SAAO;GAAE,SAAS;GAAO;GAAQ;;AAInC,QAAO;EACL,SAAS;EACT;EACA;EACA;EACA,QAAQ,EAAE;EACX;;AAGH,MAAM,gBAAgB,cAAiC;CACrD,SAAS,EAAE;CACX,yBAAyB;CACzB,gBAAgB;CAChB,qBAAqB;CACrB,yBAAS,IAAI,KAAK;CACnB,CAAC;AAEF,MAAa,kBAAkB,EAC7B,UACA,SACA,wBACyB;CAEzB,MAAM,UAAU,cAAc;EAC5B,MAAM,sBAAM,IAAI,KAGb;AAEH,UAAQ,SAAS,WAAW;AAC1B,UAAO,MAAM,SAAS,MAAM,UAAU;AACpC,QAAI,IAAI,KAAK,IAAI;KAAE;KAAQ;KAAM;KAAO,CAAC;KACzC;IACF;AAEF,SAAO;IACN,CAAC,QAAQ,CAAC;CAEb,MAAM,WAAW,aAEb,QACA,gBACA,gBACA,gBACG;EAEH,MAAM,aAAa,iBAAiB;GAClC;GACA;GACA;GACA;GACA;GACD,CAAC;AAGF,MAAI,CAAC,WAAW,SAAS;AACvB,cAAW,OAAO,SAAS,UAAU;AACnC,YAAQ,MAAM,MAAM;KACpB;AACF,UAAO;;EAIT,MAAM,EAAE,kBAAkB,YAAY,QAAQ,iBAAiB;EAE/D,MAAM,aAAa,CAAC,GAAG,QAAQ;EAC/B,MAAM,eAAe,OAAO,OAAO,OAAO,aAAa;EAGvD,MAAM,kBAAkB;GACtB,GAAG,OAAO;GACV,OAAO,OAAO,OAAO,MAAM,QAAQ,GAAG,MAAM,MAAM,OAAO,MAAM;GAChE;EAGD,IAAI,QAAQ,eAAe,kBAAkB,YAAY;AAGzD,MAAI,gBAAgB,OAAO,QAAQ,MACjC,UAAS;EAIX,MAAM,kBAAkB,eACpB,kBACA;GAAE,GAAG;GAAc,OAAO,CAAC,GAAG,aAAa,MAAM;GAAE;AAEvD,kBAAgB,MAAM,OAAO,OAAO,GAAG;GACrC,GAAG,OAAO;GACV,UAAU;GACX,CAAC;AAGF,kBAAgB,gBAAgB;AAChC,MAAI,CAAC,aACH,iBAAgB,gBAAgB;AAclC,oBAVuB,WAAW,KAAK,QAAQ;AAC7C,OAAI,IAAI,OAAO,OAAO,OAAO,GAC3B,QAAO;AAET,OAAI,IAAI,OAAO,aAAa,GAC1B,QAAO;AAET,UAAO;IACP,CAE+B;IAEnC;EAAC;EAAS;EAAmB;EAAQ,CACtC;CAED,MAAM,gBAAgB,aACnB,OAAe,QAAQ,MAAM,MAAM,EAAE,OAAO,GAAG,EAChD,CAAC,QAAQ,CACV;AAED,QACE,oBAAC,cAAc;EACb,OAAO;GAAE;GAAS;GAAmB;GAAU;GAAe;GAAS;EAEtE;GACsB;;AAI7B,MAAa,kBAAkB;CAC7B,MAAM,UAAU,WAAW,cAAc;AACzC,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,+CAA+C;AAEjE,QAAO"}
|
|
1
|
+
{"version":3,"file":"context.js","names":["errors: string[]"],"sources":["../../../src/components/kanban/context.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n createContext,\n type ReactNode,\n useCallback,\n useContext,\n useMemo,\n} from 'react';\nimport type { DragEndEvent } from '@dnd-kit/core';\nimport type { KanbanCardData, KanbanColumnData } from './types';\n\n/**\n * Function signature for moving a card between columns or positions.\n */\nexport type MoveCard = (\n cardId: string,\n targetColumnId: string,\n targetPosition: number,\n closestEdge?: 'top' | 'bottom',\n) => void;\n\n/**\n * Context data for Kanban state and operations.\n */\nexport interface KanbanContextData {\n /** Array of all columns. */\n columns: KanbanColumnData[];\n /** Callback to update column state. */\n updateColumnState: (columns: KanbanColumnData[]) => void;\n /** Function to move a card. */\n moveCard: MoveCard;\n /** Get a column by its ID. */\n getColumnById: (id: string) => KanbanColumnData | undefined;\n /** Map of card IDs to their location info. */\n cardMap: Map<\n string,\n { column: KanbanColumnData; card: KanbanCardData; index: number }\n >;\n}\n\n/**\n * Props for KanbanProvider component.\n */\nexport interface KanbanProviderProps {\n /** Array of column data. */\n columns: KanbanColumnData[];\n /** Callback to update column state. */\n updateColumnState: (columns: KanbanColumnData[]) => void;\n /** Child components. */\n children: ReactNode;\n}\n\n/**\n * Result of parsing a drop target from a drag event\n */\nexport interface DropTargetInfo {\n /** The ID of the column where the card should be dropped */\n columnId: string;\n /** The position/index within the column */\n position: number;\n /** The edge to drop relative to (undefined when dropping on empty column) */\n edge: 'top' | 'bottom' | undefined;\n}\n\n/**\n * Parameters for validating a card move operation\n */\nexport interface MoveCardValidationParams {\n cardId: string;\n targetColumnId: string;\n targetPosition: number;\n columns: KanbanColumnData[];\n cardMap: Map<\n string,\n { column: KanbanColumnData; card: KanbanCardData; index: number }\n >;\n}\n\n/**\n * Result of validating a card move operation\n * Uses discriminated union to ensure type safety based on success/failure\n */\nexport type MoveCardValidationResult =\n | {\n /** Validation succeeded */\n success: true;\n /** Adjusted target position (clamped to valid bounds) */\n adjustedPosition: number;\n /** Source card information */\n sourceInfo: {\n column: KanbanColumnData;\n card: KanbanCardData;\n index: number;\n };\n /** Target column */\n targetColumn: KanbanColumnData;\n /** Empty error array for success case */\n errors: [];\n }\n | {\n /** Validation failed */\n success: false;\n /** List of error messages describing validation failures */\n errors: string[];\n };\n\n/**\n * Calculates which edge of a drop target is closest to the dragged item\n * @param over - The drop target from dnd-kit\n * @param active - The active dragged item from dnd-kit\n * @returns 'top' if the dragged item's center is above the midpoint, 'bottom' otherwise\n */\nexport function calculateClosestEdge(\n over: DragEndEvent['over'],\n active: DragEndEvent['active'],\n): 'top' | 'bottom' {\n if (!over?.rect) {\n return 'bottom';\n }\n\n const translated = active?.rect?.current?.translated;\n if (!translated) {\n return 'bottom';\n }\n\n const overRect = over.rect;\n const midpoint = overRect.top + overRect.height / 2;\n const draggedItemCenter = translated.top + translated.height / 2;\n\n return draggedItemCenter < midpoint ? 'top' : 'bottom';\n}\n\n/**\n * Parses a drag event to determine where a card should be dropped\n * @param event - The drag end event from dnd-kit\n * @returns Normalized drop target information or null if invalid drop\n */\nexport function parseDropTarget(event: DragEndEvent): DropTargetInfo | null {\n const { active, over } = event;\n\n if (!over) {\n return null;\n }\n\n const overData = over.data.current;\n\n if (!overData) {\n return null;\n }\n\n // Dropping on a column (empty space or column container)\n if (Array.isArray(overData.cards)) {\n return {\n columnId: overData.id,\n position: overData.cards.length,\n edge: undefined,\n };\n }\n\n // Dropping on a card position\n const edge = calculateClosestEdge(over, active);\n return {\n columnId: overData.columnId,\n position: overData.position,\n edge,\n };\n}\n\nconst updatePositions = (column: KanbanColumnData) => {\n column.cards.forEach((c, index) => {\n c.position = index;\n });\n};\n\n/**\n * Calculates the insert index based on target position and drop edge.\n * @param targetPosition - The target position index.\n * @param closestEdge - The edge to drop relative to.\n * @returns The calculated insert index.\n */\nexport const getInsertIndex = (\n targetPosition: number,\n closestEdge?: 'top' | 'bottom',\n) => {\n // If no edge is specified, use the target position as-is\n if (!closestEdge) {\n return targetPosition;\n }\n\n // If dropping on top edge, insert at the target position (before the card)\n // If dropping on bottom edge, insert after the target position (position + 1)\n return closestEdge === 'top' ? targetPosition : targetPosition + 1;\n};\n\n/**\n * Validates all parameters for a card move operation\n * @param params - Validation parameters\n * @returns Validation result with success flag, adjusted values, and errors\n */\nexport function validateMoveCard({\n cardId,\n targetColumnId,\n targetPosition,\n columns,\n cardMap,\n}: MoveCardValidationParams): MoveCardValidationResult {\n const errors: string[] = [];\n let adjustedPosition = targetPosition;\n\n // 1. Type validation\n if (typeof cardId !== 'string' || !cardId.trim()) {\n errors.push('[Kanban] moveCard: cardId must be a non-empty string');\n }\n\n if (typeof targetColumnId !== 'string' || !targetColumnId.trim()) {\n errors.push('[Kanban] moveCard: targetColumnId must be a non-empty string');\n }\n\n if (typeof targetPosition !== 'number' || !Number.isFinite(targetPosition)) {\n errors.push('[Kanban] moveCard: targetPosition must be a finite number');\n }\n\n // Early return if type validation fails\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n // 2. Card existence validation\n const sourceInfo = cardMap.get(cardId);\n if (!sourceInfo) {\n errors.push(`[Kanban] moveCard: Card \"${cardId}\" not found in any column`);\n return { success: false, errors };\n }\n\n // 3. Target column existence validation\n const targetColumn = columns.find((col) => col.id === targetColumnId);\n if (!targetColumn) {\n errors.push(\n `[Kanban] moveCard: Target column \"${targetColumnId}\" not found`,\n );\n return { success: false, errors };\n }\n\n // 4. Position bounds validation (with adjustment)\n if (adjustedPosition < 0) {\n console.warn(\n `[Kanban] moveCard: targetPosition (${adjustedPosition}) cannot be negative. Using 0 instead.`,\n );\n adjustedPosition = 0;\n }\n\n const maxPosition = targetColumn.cards.length;\n if (adjustedPosition > maxPosition) {\n console.warn(\n `[Kanban] moveCard: targetPosition (${adjustedPosition}) exceeds maximum (${maxPosition}). ` +\n `Using ${maxPosition} instead.`,\n );\n adjustedPosition = maxPosition;\n }\n\n // 5. canDrop validation\n if (targetColumn.canDrop === false) {\n errors.push(\n `[Kanban] moveCard: Column \"${targetColumnId}\" does not accept drops`,\n );\n return { success: false, errors };\n }\n\n // All validations passed\n return {\n success: true,\n adjustedPosition,\n sourceInfo,\n targetColumn,\n errors: [],\n };\n}\n\nconst KanbanContext = createContext<KanbanContextData>({\n columns: [],\n updateColumnState: () => null,\n moveCard: () => null,\n getColumnById: () => undefined,\n cardMap: new Map(),\n});\n\n/**\n * KanbanProvider - Context provider for Kanban state management\n *\n * Manages column and card state, handles drag-and-drop operations,\n * and provides the moveCard function for card movements.\n *\n * @param props - {@link KanbanProviderProps}\n * @param props.children - Child components.\n * @param props.columns - Array of column data.\n * @param props.updateColumnState - Callback to update column state.\n * @returns The rendered KanbanProvider component.\n *\n * @example\n * ```tsx\n * <KanbanProvider columns={columns} updateColumnState={setColumns}>\n * <Kanban>...</Kanban>\n * </KanbanProvider>\n * ```\n */\nexport const KanbanProvider = ({\n children,\n columns,\n updateColumnState,\n}: KanbanProviderProps) => {\n // Create a lookup map for O(1) card access\n const cardMap = useMemo(() => {\n const map = new Map<\n string,\n { column: KanbanColumnData; card: KanbanCardData; index: number }\n >();\n\n columns.forEach((column) => {\n column.cards.forEach((card, index) => {\n map.set(card.id, { column, card, index });\n });\n });\n\n return map;\n }, [columns]);\n\n const moveCard = useCallback(\n (\n cardId: string,\n targetColumnId: string,\n targetPosition: number,\n closestEdge?: 'top' | 'bottom',\n ) => {\n // Validate all inputs\n const validation = validateMoveCard({\n cardId,\n targetColumnId,\n targetPosition,\n columns,\n cardMap,\n });\n\n // Handle validation failure\n if (!validation.success) {\n validation.errors.forEach((error) => {\n console.error(error);\n });\n return false;\n }\n\n // Extract validated data - TypeScript knows these are defined after success check\n const { adjustedPosition, sourceInfo: source, targetColumn } = validation;\n\n const newColumns = [...columns];\n const isSameColumn = source.column.id === targetColumn.id;\n\n // Remove card from source column\n const newSourceColumn = {\n ...source.column,\n cards: source.column.cards.filter((_, i) => i !== source.index),\n };\n\n // Calculate insert index using adjusted position\n let index = getInsertIndex(adjustedPosition, closestEdge);\n\n // If moving within the same column and moving down, adjust index\n if (isSameColumn && source.index < index) {\n index -= 1;\n }\n\n // Insert card into target column\n const newTargetColumn = isSameColumn\n ? newSourceColumn\n : { ...targetColumn, cards: [...targetColumn.cards] };\n\n newTargetColumn.cards.splice(index, 0, {\n ...source.card,\n columnId: targetColumnId,\n });\n\n // Update positions\n updatePositions(newTargetColumn);\n if (!isSameColumn) {\n updatePositions(newSourceColumn);\n }\n\n // Update the columns array with the modified columns\n const updatedColumns = newColumns.map((col) => {\n if (col.id === source.column.id) {\n return newSourceColumn;\n }\n if (col.id === targetColumn.id) {\n return newTargetColumn;\n }\n return col;\n });\n\n updateColumnState(updatedColumns);\n },\n [columns, updateColumnState, cardMap],\n );\n\n const getColumnById = useCallback(\n (id: string) => columns.find((c) => c.id === id),\n [columns],\n );\n\n return (\n <KanbanContext.Provider\n value={{ columns, updateColumnState, moveCard, getColumnById, cardMap }}\n >\n {children}\n </KanbanContext.Provider>\n );\n};\n\n/**\n * Hook to access Kanban context values.\n * Must be used within a KanbanProvider.\n * @returns The Kanban context data.\n */\nexport const useKanban = () => {\n const context = useContext(KanbanContext);\n if (!context) {\n throw new Error('useKanban must be used within KanbanProvider');\n }\n return context;\n};\n"],"mappings":"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"}
|
|
@@ -12,14 +12,22 @@
|
|
|
12
12
|
|
|
13
13
|
import { KanbanComponentProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime83 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/kanban/header-actions.d.ts
|
|
18
|
+
/**
|
|
19
|
+
* KanbanHeaderActions - Container for header action buttons
|
|
20
|
+
*
|
|
21
|
+
* @param props - {@link KanbanComponentProps}
|
|
22
|
+
* @param props.children - Action button elements.
|
|
23
|
+
* @param props.className - Optional CSS class name.
|
|
24
|
+
* @returns The rendered KanbanHeaderActions component.
|
|
25
|
+
*/
|
|
18
26
|
declare function KanbanHeaderActions({
|
|
19
27
|
children,
|
|
20
28
|
className,
|
|
21
29
|
...rest
|
|
22
|
-
}: KanbanComponentProps):
|
|
30
|
+
}: KanbanComponentProps): react_jsx_runtime83.JSX.Element;
|
|
23
31
|
//#endregion
|
|
24
32
|
export { KanbanHeaderActions };
|
|
25
33
|
//# sourceMappingURL=header-actions.d.ts.map
|
|
@@ -19,6 +19,14 @@ import { jsx } from "react/jsx-runtime";
|
|
|
19
19
|
import styles from "./styles.module.css";
|
|
20
20
|
|
|
21
21
|
//#region src/components/kanban/header-actions.tsx
|
|
22
|
+
/**
|
|
23
|
+
* KanbanHeaderActions - Container for header action buttons
|
|
24
|
+
*
|
|
25
|
+
* @param props - {@link KanbanComponentProps}
|
|
26
|
+
* @param props.children - Action button elements.
|
|
27
|
+
* @param props.className - Optional CSS class name.
|
|
28
|
+
* @returns The rendered KanbanHeaderActions component.
|
|
29
|
+
*/
|
|
22
30
|
function KanbanHeaderActions({ children, className, ...rest }) {
|
|
23
31
|
return /* @__PURE__ */ jsx("div", {
|
|
24
32
|
...rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-actions.js","names":[],"sources":["../../../src/components/kanban/header-actions.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\nimport 'client-only';\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport styles from './styles.module.css';\nimport type { KanbanComponentProps } from './types';\n\nexport function KanbanHeaderActions({\n children,\n className,\n ...rest\n}: KanbanComponentProps) {\n return (\n <div {...rest} className={clsx(styles.headerActions, className)}>\n {children}\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"header-actions.js","names":[],"sources":["../../../src/components/kanban/header-actions.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\nimport 'client-only';\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport styles from './styles.module.css';\nimport type { KanbanComponentProps } from './types';\n\n/**\n * KanbanHeaderActions - Container for header action buttons\n *\n * @param props - {@link KanbanComponentProps}\n * @param props.children - Action button elements.\n * @param props.className - Optional CSS class name.\n * @returns The rendered KanbanHeaderActions component.\n */\nexport function KanbanHeaderActions({\n children,\n className,\n ...rest\n}: KanbanComponentProps) {\n return (\n <div {...rest} className={clsx(styles.headerActions, className)}>\n {children}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,SAAgB,oBAAoB,EAClC,UACA,WACA,GAAG,QACoB;AACvB,QACE,oBAAC;EAAI,GAAI;EAAM,WAAW,KAAK,OAAO,eAAe,UAAU;EAC5D;GACG"}
|
|
@@ -12,13 +12,20 @@
|
|
|
12
12
|
|
|
13
13
|
import { KanbanSearchProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime84 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/kanban/header-search.d.ts
|
|
18
|
+
/**
|
|
19
|
+
* KanbanHeaderSearch - Search field for filtering cards
|
|
20
|
+
*
|
|
21
|
+
* @param props - {@link KanbanSearchProps}
|
|
22
|
+
* @param props.classNames - CSS class names for the search field.
|
|
23
|
+
* @returns The rendered KanbanHeaderSearch component.
|
|
24
|
+
*/
|
|
18
25
|
declare function KanbanHeaderSearch({
|
|
19
26
|
classNames,
|
|
20
27
|
...rest
|
|
21
|
-
}: KanbanSearchProps):
|
|
28
|
+
}: KanbanSearchProps): react_jsx_runtime84.JSX.Element;
|
|
22
29
|
//#endregion
|
|
23
30
|
export { KanbanHeaderSearch };
|
|
24
31
|
//# sourceMappingURL=header-search.d.ts.map
|
|
@@ -18,6 +18,13 @@ import "client-only";
|
|
|
18
18
|
import { jsx } from "react/jsx-runtime";
|
|
19
19
|
|
|
20
20
|
//#region src/components/kanban/header-search.tsx
|
|
21
|
+
/**
|
|
22
|
+
* KanbanHeaderSearch - Search field for filtering cards
|
|
23
|
+
*
|
|
24
|
+
* @param props - {@link KanbanSearchProps}
|
|
25
|
+
* @param props.classNames - CSS class names for the search field.
|
|
26
|
+
* @returns The rendered KanbanHeaderSearch component.
|
|
27
|
+
*/
|
|
21
28
|
function KanbanHeaderSearch({ classNames, ...rest }) {
|
|
22
29
|
return /* @__PURE__ */ jsx(SearchField, {
|
|
23
30
|
...rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-search.js","names":[],"sources":["../../../src/components/kanban/header-search.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\nimport 'client-only';\n\nimport { SearchField } from '../search-field';\nimport type { KanbanSearchProps } from './types';\n\nexport function KanbanHeaderSearch({ classNames, ...rest }: KanbanSearchProps) {\n return (\n <SearchField\n {...rest}\n variant='outline'\n classNames={classNames}\n aria-label='Search'\n />\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"header-search.js","names":[],"sources":["../../../src/components/kanban/header-search.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\nimport 'client-only';\n\nimport { SearchField } from '../search-field';\nimport type { KanbanSearchProps } from './types';\n\n/**\n * KanbanHeaderSearch - Search field for filtering cards\n *\n * @param props - {@link KanbanSearchProps}\n * @param props.classNames - CSS class names for the search field.\n * @returns The rendered KanbanHeaderSearch component.\n */\nexport function KanbanHeaderSearch({ classNames, ...rest }: KanbanSearchProps) {\n return (\n <SearchField\n {...rest}\n variant='outline'\n classNames={classNames}\n aria-label='Search'\n />\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,SAAgB,mBAAmB,EAAE,YAAY,GAAG,QAA2B;AAC7E,QACE,oBAAC;EACC,GAAI;EACJ,SAAQ;EACI;EACZ,cAAW;GACX"}
|
|
@@ -12,14 +12,22 @@
|
|
|
12
12
|
|
|
13
13
|
import { KanbanComponentProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime85 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/kanban/header-title.d.ts
|
|
18
|
+
/**
|
|
19
|
+
* KanbanHeaderTitle - Heading element for the board title
|
|
20
|
+
*
|
|
21
|
+
* @param props - {@link KanbanComponentProps}
|
|
22
|
+
* @param props.children - Title text content.
|
|
23
|
+
* @param props.className - Optional CSS class name.
|
|
24
|
+
* @returns The rendered KanbanHeaderTitle component.
|
|
25
|
+
*/
|
|
18
26
|
declare function KanbanHeaderTitle({
|
|
19
27
|
children,
|
|
20
28
|
className,
|
|
21
29
|
...rest
|
|
22
|
-
}: KanbanComponentProps):
|
|
30
|
+
}: KanbanComponentProps): react_jsx_runtime85.JSX.Element;
|
|
23
31
|
//#endregion
|
|
24
32
|
export { KanbanHeaderTitle };
|
|
25
33
|
//# sourceMappingURL=header-title.d.ts.map
|
|
@@ -20,6 +20,14 @@ import { jsx } from "react/jsx-runtime";
|
|
|
20
20
|
import styles from "./styles.module.css";
|
|
21
21
|
|
|
22
22
|
//#region src/components/kanban/header-title.tsx
|
|
23
|
+
/**
|
|
24
|
+
* KanbanHeaderTitle - Heading element for the board title
|
|
25
|
+
*
|
|
26
|
+
* @param props - {@link KanbanComponentProps}
|
|
27
|
+
* @param props.children - Title text content.
|
|
28
|
+
* @param props.className - Optional CSS class name.
|
|
29
|
+
* @returns The rendered KanbanHeaderTitle component.
|
|
30
|
+
*/
|
|
23
31
|
function KanbanHeaderTitle({ children, className, ...rest }) {
|
|
24
32
|
return /* @__PURE__ */ jsx(Heading, {
|
|
25
33
|
...rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header-title.js","names":[],"sources":["../../../src/components/kanban/header-title.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\nimport 'client-only';\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport { Heading } from 'react-aria-components';\nimport styles from './styles.module.css';\nimport type { KanbanComponentProps } from './types';\n\nexport function KanbanHeaderTitle({\n children,\n className,\n ...rest\n}: KanbanComponentProps) {\n return (\n <Heading {...rest} className={clsx(styles.headerTitle, className)}>\n {children}\n </Heading>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"header-title.js","names":[],"sources":["../../../src/components/kanban/header-title.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\nimport 'client-only';\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport { Heading } from 'react-aria-components';\nimport styles from './styles.module.css';\nimport type { KanbanComponentProps } from './types';\n\n/**\n * KanbanHeaderTitle - Heading element for the board title\n *\n * @param props - {@link KanbanComponentProps}\n * @param props.children - Title text content.\n * @param props.className - Optional CSS class name.\n * @returns The rendered KanbanHeaderTitle component.\n */\nexport function KanbanHeaderTitle({\n children,\n className,\n ...rest\n}: KanbanComponentProps) {\n return (\n <Heading {...rest} className={clsx(styles.headerTitle, className)}>\n {children}\n </Heading>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,SAAgB,kBAAkB,EAChC,UACA,WACA,GAAG,QACoB;AACvB,QACE,oBAAC;EAAQ,GAAI;EAAM,WAAW,KAAK,OAAO,aAAa,UAAU;EAC9D;GACO"}
|
|
@@ -12,14 +12,24 @@
|
|
|
12
12
|
|
|
13
13
|
import { KanbanComponentProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
15
|
+
import * as react_jsx_runtime87 from "react/jsx-runtime";
|
|
16
16
|
|
|
17
17
|
//#region src/components/kanban/header.d.ts
|
|
18
|
+
/**
|
|
19
|
+
* KanbanHeader - Header section for the kanban board
|
|
20
|
+
*
|
|
21
|
+
* Contains title, search, and action buttons.
|
|
22
|
+
*
|
|
23
|
+
* @param props - {@link KanbanComponentProps}
|
|
24
|
+
* @param props.children - Header content (title, search, actions).
|
|
25
|
+
* @param props.className - Optional CSS class name.
|
|
26
|
+
* @returns The rendered KanbanHeader component.
|
|
27
|
+
*/
|
|
18
28
|
declare function KanbanHeader({
|
|
19
29
|
children,
|
|
20
30
|
className,
|
|
21
31
|
...rest
|
|
22
|
-
}: KanbanComponentProps):
|
|
32
|
+
}: KanbanComponentProps): react_jsx_runtime87.JSX.Element;
|
|
23
33
|
//#endregion
|
|
24
34
|
export { KanbanHeader };
|
|
25
35
|
//# sourceMappingURL=header.d.ts.map
|
|
@@ -19,6 +19,16 @@ import { jsx } from "react/jsx-runtime";
|
|
|
19
19
|
import styles from "./styles.module.css";
|
|
20
20
|
|
|
21
21
|
//#region src/components/kanban/header.tsx
|
|
22
|
+
/**
|
|
23
|
+
* KanbanHeader - Header section for the kanban board
|
|
24
|
+
*
|
|
25
|
+
* Contains title, search, and action buttons.
|
|
26
|
+
*
|
|
27
|
+
* @param props - {@link KanbanComponentProps}
|
|
28
|
+
* @param props.children - Header content (title, search, actions).
|
|
29
|
+
* @param props.className - Optional CSS class name.
|
|
30
|
+
* @returns The rendered KanbanHeader component.
|
|
31
|
+
*/
|
|
22
32
|
function KanbanHeader({ children, className, ...rest }) {
|
|
23
33
|
return /* @__PURE__ */ jsx("div", {
|
|
24
34
|
...rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","names":[],"sources":["../../../src/components/kanban/header.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\nimport 'client-only';\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport styles from './styles.module.css';\nimport type { KanbanComponentProps } from './types';\n\nexport function KanbanHeader({\n children,\n className,\n ...rest\n}: KanbanComponentProps) {\n return (\n <div {...rest} className={clsx(styles.header, className)}>\n {children}\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"header.js","names":[],"sources":["../../../src/components/kanban/header.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\nimport 'client-only';\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport styles from './styles.module.css';\nimport type { KanbanComponentProps } from './types';\n\n/**\n * KanbanHeader - Header section for the kanban board\n *\n * Contains title, search, and action buttons.\n *\n * @param props - {@link KanbanComponentProps}\n * @param props.children - Header content (title, search, actions).\n * @param props.className - Optional CSS class name.\n * @returns The rendered KanbanHeader component.\n */\nexport function KanbanHeader({\n children,\n className,\n ...rest\n}: KanbanComponentProps) {\n return (\n <div {...rest} className={clsx(styles.header, className)}>\n {children}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,SAAgB,aAAa,EAC3B,UACA,WACA,GAAG,QACoB;AACvB,QACE,oBAAC;EAAI,GAAI;EAAM,WAAW,KAAK,OAAO,QAAQ,UAAU;EACrD;GACG"}
|
|
@@ -12,21 +12,50 @@
|
|
|
12
12
|
|
|
13
13
|
import { KanbanProps } from "./types.js";
|
|
14
14
|
import "client-only";
|
|
15
|
-
import * as
|
|
16
|
-
import * as
|
|
15
|
+
import * as react25 from "react";
|
|
16
|
+
import * as react_jsx_runtime88 from "react/jsx-runtime";
|
|
17
17
|
|
|
18
18
|
//#region src/components/kanban/kanban.d.ts
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Context for sharing active drag state across Kanban components.
|
|
21
|
+
*/
|
|
22
|
+
declare const DragContext: react25.Context<{
|
|
20
23
|
activeId: string | null;
|
|
21
24
|
} | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Hook to access the active drag state.
|
|
27
|
+
* Must be used within a Kanban component.
|
|
28
|
+
* @returns The drag context with activeId.
|
|
29
|
+
*/
|
|
22
30
|
declare const useDragContext: () => {
|
|
23
31
|
activeId: string | null;
|
|
24
32
|
};
|
|
33
|
+
/**
|
|
34
|
+
* Kanban - Root container for the drag-and-drop kanban board
|
|
35
|
+
*
|
|
36
|
+
* Provides DnD context and manages drag state for cards and columns.
|
|
37
|
+
* Must be wrapped in a KanbanProvider.
|
|
38
|
+
*
|
|
39
|
+
* @param props - {@link KanbanProps}
|
|
40
|
+
* @param props.children - Child components (columns, header, etc.).
|
|
41
|
+
* @param props.className - Optional CSS class name.
|
|
42
|
+
* @returns The rendered Kanban component.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```tsx
|
|
46
|
+
* <KanbanProvider columns={columns} updateColumnState={setColumns}>
|
|
47
|
+
* <Kanban>
|
|
48
|
+
* <KanbanHeader>...</KanbanHeader>
|
|
49
|
+
* <KanbanColumnContainer>...</KanbanColumnContainer>
|
|
50
|
+
* </Kanban>
|
|
51
|
+
* </KanbanProvider>
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
25
54
|
declare function Kanban({
|
|
26
55
|
children,
|
|
27
56
|
className,
|
|
28
57
|
...rest
|
|
29
|
-
}: KanbanProps):
|
|
58
|
+
}: KanbanProps): react_jsx_runtime88.JSX.Element;
|
|
30
59
|
//#endregion
|
|
31
60
|
export { DragContext, Kanban, useDragContext };
|
|
32
61
|
//# sourceMappingURL=kanban.d.ts.map
|
|
@@ -22,13 +22,42 @@ import styles from "./styles.module.css";
|
|
|
22
22
|
import { DndContext, DragOverlay, PointerSensor, closestCenter, pointerWithin, rectIntersection, useSensor, useSensors } from "@dnd-kit/core";
|
|
23
23
|
|
|
24
24
|
//#region src/components/kanban/kanban.tsx
|
|
25
|
+
/**
|
|
26
|
+
* Context for sharing active drag state across Kanban components.
|
|
27
|
+
*/
|
|
25
28
|
const DragContext = createContext(null);
|
|
29
|
+
/**
|
|
30
|
+
* Hook to access the active drag state.
|
|
31
|
+
* Must be used within a Kanban component.
|
|
32
|
+
* @returns The drag context with activeId.
|
|
33
|
+
*/
|
|
26
34
|
const useDragContext = () => {
|
|
27
35
|
const context = useContext(DragContext);
|
|
28
36
|
if (!context) throw new Error("useDragContext must be used within Kanban component");
|
|
29
37
|
return context;
|
|
30
38
|
};
|
|
31
39
|
const ACTIVATION_DISTANCE = 8;
|
|
40
|
+
/**
|
|
41
|
+
* Kanban - Root container for the drag-and-drop kanban board
|
|
42
|
+
*
|
|
43
|
+
* Provides DnD context and manages drag state for cards and columns.
|
|
44
|
+
* Must be wrapped in a KanbanProvider.
|
|
45
|
+
*
|
|
46
|
+
* @param props - {@link KanbanProps}
|
|
47
|
+
* @param props.children - Child components (columns, header, etc.).
|
|
48
|
+
* @param props.className - Optional CSS class name.
|
|
49
|
+
* @returns The rendered Kanban component.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```tsx
|
|
53
|
+
* <KanbanProvider columns={columns} updateColumnState={setColumns}>
|
|
54
|
+
* <Kanban>
|
|
55
|
+
* <KanbanHeader>...</KanbanHeader>
|
|
56
|
+
* <KanbanColumnContainer>...</KanbanColumnContainer>
|
|
57
|
+
* </Kanban>
|
|
58
|
+
* </KanbanProvider>
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
32
61
|
function Kanban({ children, className, ...rest }) {
|
|
33
62
|
const { moveCard, cardMap } = useKanban();
|
|
34
63
|
const [activeId, setActiveId] = useState(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kanban.js","names":["collisionDetectionStrategy: CollisionDetection"],"sources":["../../../src/components/kanban/kanban.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\nimport 'client-only';\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport {\n type CollisionDetection,\n closestCenter,\n DndContext,\n type DragEndEvent,\n DragOverlay,\n type DragStartEvent,\n PointerSensor,\n pointerWithin,\n rectIntersection,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { createContext, useContext, useState } from 'react';\nimport { parseDropTarget, useKanban } from '@/components/kanban/context';\nimport styles from './styles.module.css';\nimport type { KanbanProps } from './types';\n\n
|
|
1
|
+
{"version":3,"file":"kanban.js","names":["collisionDetectionStrategy: CollisionDetection"],"sources":["../../../src/components/kanban/kanban.tsx"],"sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n'use client';\nimport 'client-only';\n\nimport { clsx } from '@accelint/design-foundation/lib/utils';\nimport {\n type CollisionDetection,\n closestCenter,\n DndContext,\n type DragEndEvent,\n DragOverlay,\n type DragStartEvent,\n PointerSensor,\n pointerWithin,\n rectIntersection,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { createContext, useContext, useState } from 'react';\nimport { parseDropTarget, useKanban } from '@/components/kanban/context';\nimport styles from './styles.module.css';\nimport type { KanbanProps } from './types';\n\n/**\n * Context for sharing active drag state across Kanban components.\n */\nexport const DragContext = createContext<{ activeId: string | null } | null>(\n null,\n);\n\n/**\n * Hook to access the active drag state.\n * Must be used within a Kanban component.\n * @returns The drag context with activeId.\n */\nexport const useDragContext = () => {\n const context = useContext(DragContext);\n if (!context) {\n throw new Error('useDragContext must be used within Kanban component');\n }\n return context;\n};\n\nconst ACTIVATION_DISTANCE = 8;\n\n/**\n * Kanban - Root container for the drag-and-drop kanban board\n *\n * Provides DnD context and manages drag state for cards and columns.\n * Must be wrapped in a KanbanProvider.\n *\n * @param props - {@link KanbanProps}\n * @param props.children - Child components (columns, header, etc.).\n * @param props.className - Optional CSS class name.\n * @returns The rendered Kanban component.\n *\n * @example\n * ```tsx\n * <KanbanProvider columns={columns} updateColumnState={setColumns}>\n * <Kanban>\n * <KanbanHeader>...</KanbanHeader>\n * <KanbanColumnContainer>...</KanbanColumnContainer>\n * </Kanban>\n * </KanbanProvider>\n * ```\n */\nexport function Kanban({ children, className, ...rest }: KanbanProps) {\n const { moveCard, cardMap } = useKanban();\n const [activeId, setActiveId] = useState<string | null>(null);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: ACTIVATION_DISTANCE,\n },\n }),\n );\n\n const collisionDetectionStrategy: CollisionDetection = (args) => {\n // First, try pointer within for direct pointer detection\n const pointerCollisions = pointerWithin(args);\n if (pointerCollisions.length > 0) {\n return pointerCollisions;\n }\n\n // Then try rectangle intersection for better coverage\n const rectCollisions = rectIntersection(args);\n if (rectCollisions.length > 0) {\n return rectCollisions;\n }\n\n // Fall back to closest center\n return closestCenter(args);\n };\n\n const handleDragStart = (event: DragStartEvent) => {\n setActiveId(event.active.id as string);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n setActiveId(null);\n\n const dropTarget = parseDropTarget(event);\n if (!dropTarget) {\n return;\n }\n\n moveCard(\n event.active.id as string,\n dropTarget.columnId,\n dropTarget.position,\n dropTarget.edge,\n );\n };\n\n // Find the active card for the drag overlay\n const activeCard = activeId ? cardMap.get(activeId)?.card : null;\n\n return (\n <DragContext.Provider value={{ activeId }}>\n <DndContext\n sensors={sensors}\n collisionDetection={collisionDetectionStrategy}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n >\n <div className={clsx(styles.kanban, className)} {...rest}>\n {children}\n </div>\n <DragOverlay>\n {activeCard ? (\n <div data-current className={clsx(styles.card)}>\n <div className={styles.cardHeader}>\n <span className={styles.cardTitle}>{activeCard.title}</span>\n </div>\n <div className={styles.cardBody}>{activeCard.body}</div>\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n </DragContext.Provider>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAa,cAAc,cACzB,KACD;;;;;;AAOD,MAAa,uBAAuB;CAClC,MAAM,UAAU,WAAW,YAAY;AACvC,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,sDAAsD;AAExE,QAAO;;AAGT,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;AAuB5B,SAAgB,OAAO,EAAE,UAAU,WAAW,GAAG,QAAqB;CACpE,MAAM,EAAE,UAAU,YAAY,WAAW;CACzC,MAAM,CAAC,UAAU,eAAe,SAAwB,KAAK;CAE7D,MAAM,UAAU,WACd,UAAU,eAAe,EACvB,sBAAsB,EACpB,UAAU,qBACX,EACF,CAAC,CACH;CAED,MAAMA,8BAAkD,SAAS;EAE/D,MAAM,oBAAoB,cAAc,KAAK;AAC7C,MAAI,kBAAkB,SAAS,EAC7B,QAAO;EAIT,MAAM,iBAAiB,iBAAiB,KAAK;AAC7C,MAAI,eAAe,SAAS,EAC1B,QAAO;AAIT,SAAO,cAAc,KAAK;;CAG5B,MAAM,mBAAmB,UAA0B;AACjD,cAAY,MAAM,OAAO,GAAa;;CAGxC,MAAM,iBAAiB,UAAwB;AAC7C,cAAY,KAAK;EAEjB,MAAM,aAAa,gBAAgB,MAAM;AACzC,MAAI,CAAC,WACH;AAGF,WACE,MAAM,OAAO,IACb,WAAW,UACX,WAAW,UACX,WAAW,KACZ;;CAIH,MAAM,aAAa,WAAW,QAAQ,IAAI,SAAS,EAAE,OAAO;AAE5D,QACE,oBAAC,YAAY;EAAS,OAAO,EAAE,UAAU;YACvC,qBAAC;GACU;GACT,oBAAoB;GACpB,aAAa;GACb,WAAW;cAEX,oBAAC;IAAI,WAAW,KAAK,OAAO,QAAQ,UAAU;IAAE,GAAI;IACjD;KACG,EACN,oBAAC,yBACE,aACC,qBAAC;IAAI;IAAa,WAAW,KAAK,OAAO,KAAK;eAC5C,oBAAC;KAAI,WAAW,OAAO;eACrB,oBAAC;MAAK,WAAW,OAAO;gBAAY,WAAW;OAAa;MACxD,EACN,oBAAC;KAAI,WAAW,OAAO;eAAW,WAAW;MAAW;KACpD,GACJ,OACQ;IACH;GACQ"}
|