@archbase/kanban 4.0.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +630 -0
  3. package/dist/archbase-kanban-4.0.37.tgz +0 -0
  4. package/dist/components/Card/Card.d.ts +26 -0
  5. package/dist/components/Card/index.d.ts +1 -0
  6. package/dist/components/CardSkeleton/CardSkeleton.d.ts +9 -0
  7. package/dist/components/CardSkeleton/index.d.ts +2 -0
  8. package/dist/components/Column/Column.d.ts +47 -0
  9. package/dist/components/Column/index.d.ts +1 -0
  10. package/dist/components/ColumnAdder/ColumnAdder.d.ts +6 -0
  11. package/dist/components/ColumnAdder/index.d.ts +1 -0
  12. package/dist/components/ColumnContent/ColumnContent.d.ts +24 -0
  13. package/dist/components/ColumnContent/index.d.ts +1 -0
  14. package/dist/components/ColumnHeader/ColumnHeader.d.ts +10 -0
  15. package/dist/components/ColumnHeader/index.d.ts +1 -0
  16. package/dist/components/DefaultCard/DefaultCard.d.ts +3 -0
  17. package/dist/components/DefaultCard/index.d.ts +1 -0
  18. package/dist/components/GenericItem/GenericItem.d.ts +26 -0
  19. package/dist/components/GenericItem/index.d.ts +1 -0
  20. package/dist/components/Kanban.d.ts +3 -0
  21. package/dist/components/index.d.ts +2 -0
  22. package/dist/components/types.d.ts +124 -0
  23. package/dist/context/KanbanContext.d.ts +5 -0
  24. package/dist/global/dnd/dropManager.d.ts +16 -0
  25. package/dist/global/dnd/useCardDnd.d.ts +22 -0
  26. package/dist/global/dnd/useColumnDnd.d.ts +29 -0
  27. package/dist/index.css +1 -0
  28. package/dist/index.d.ts +4 -0
  29. package/dist/index.js +1041 -0
  30. package/dist/utils/columnsUtils.d.ts +4 -0
  31. package/dist/utils/getPrefix.d.ts +2 -0
  32. package/dist/utils/getSharedProps.d.ts +8 -0
  33. package/dist/utils/infinite-scroll.d.ts +4 -0
  34. package/dist/utils/mergeRefs.d.ts +5 -0
  35. package/dist/utils/scroll.d.ts +2 -0
  36. package/package.json +66 -0
  37. package/src/common/_index.scss +0 -0
  38. package/src/components/Card/Card.tsx +215 -0
  39. package/src/components/Card/_Card.scss +11 -0
  40. package/src/components/Card/_index.scss +1 -0
  41. package/src/components/Card/index.ts +1 -0
  42. package/src/components/CardSkeleton/CardSkeleton.tsx +45 -0
  43. package/src/components/CardSkeleton/_CardSkeleton.scss +245 -0
  44. package/src/components/CardSkeleton/_index.scss +1 -0
  45. package/src/components/CardSkeleton/index.ts +2 -0
  46. package/src/components/Column/Column.tsx +246 -0
  47. package/src/components/Column/_Column.scss +44 -0
  48. package/src/components/Column/_index.scss +1 -0
  49. package/src/components/Column/index.ts +1 -0
  50. package/src/components/ColumnAdder/ColumnAdder.tsx +18 -0
  51. package/src/components/ColumnAdder/_ColumnAdder.scss +0 -0
  52. package/src/components/ColumnAdder/_index.scss +1 -0
  53. package/src/components/ColumnAdder/index.ts +1 -0
  54. package/src/components/ColumnContent/ColumnContent.tsx +238 -0
  55. package/src/components/ColumnContent/_ColumnContent.scss +23 -0
  56. package/src/components/ColumnContent/_index.scss +1 -0
  57. package/src/components/ColumnContent/index.ts +1 -0
  58. package/src/components/ColumnHeader/ColumnHeader.tsx +43 -0
  59. package/src/components/ColumnHeader/_ColumnHeader.scss +26 -0
  60. package/src/components/ColumnHeader/_index.scss +1 -0
  61. package/src/components/ColumnHeader/index.ts +1 -0
  62. package/src/components/DefaultCard/DefaultCard.tsx +9 -0
  63. package/src/components/DefaultCard/_DefaultCard.scss +14 -0
  64. package/src/components/DefaultCard/_index.scss +1 -0
  65. package/src/components/DefaultCard/index.ts +1 -0
  66. package/src/components/GenericItem/GenericItem.tsx +132 -0
  67. package/src/components/GenericItem/_GenericItem.scss +4 -0
  68. package/src/components/GenericItem/_index.scss +1 -0
  69. package/src/components/GenericItem/index.ts +1 -0
  70. package/src/components/Kanban.tsx +102 -0
  71. package/src/components/_Kanban.scss +8 -0
  72. package/src/components/_index.scss +9 -0
  73. package/src/components/index.ts +2 -0
  74. package/src/components/types.ts +155 -0
  75. package/src/context/KanbanContext.tsx +19 -0
  76. package/src/global/_index.scss +3 -0
  77. package/src/global/assets/styles/abstracts/_breakpoints.scss +71 -0
  78. package/src/global/assets/styles/abstracts/_colors.scss +85 -0
  79. package/src/global/assets/styles/abstracts/_functions.scss +3 -0
  80. package/src/global/assets/styles/abstracts/_index.scss +5 -0
  81. package/src/global/assets/styles/abstracts/_mixins.scss +49 -0
  82. package/src/global/assets/styles/abstracts/_padding.scss +1 -0
  83. package/src/global/assets/styles/abstracts/_variables.scss +8 -0
  84. package/src/global/assets/styles/base/_index.scss +34 -0
  85. package/src/global/dnd/dropManager.ts +301 -0
  86. package/src/global/dnd/useCardDnd.tsx +225 -0
  87. package/src/global/dnd/useColumnDnd.tsx +231 -0
  88. package/src/global/theme-default.scss +137 -0
  89. package/src/index.ts +6 -0
  90. package/src/utils/columnsUtils.ts +19 -0
  91. package/src/utils/getPrefix.ts +7 -0
  92. package/src/utils/getSharedProps.ts +18 -0
  93. package/src/utils/infinite-scroll.ts +18 -0
  94. package/src/utils/mergeRefs.ts +23 -0
  95. package/src/utils/scroll.ts +34 -0
@@ -0,0 +1,47 @@
1
+ import { default as React } from 'react';
2
+ import { BoardItem, BoardProps, ConfigMap, DndState, ScrollEvent } from '../types';
3
+ interface Props {
4
+ index: number;
5
+ data: BoardItem;
6
+ items: BoardItem[];
7
+ configMap: ConfigMap;
8
+ allowColumnDrag?: boolean;
9
+ renderColumnHeader?: (column: BoardItem) => React.ReactNode;
10
+ renderColumnFooter?: (column: BoardItem) => React.ReactNode;
11
+ renderColumnWrapper: (column: BoardItem, props: {
12
+ children: React.ReactNode;
13
+ className?: string;
14
+ style?: React.CSSProperties;
15
+ ref?: React.RefObject<HTMLDivElement>;
16
+ }) => React.ReactNode;
17
+ renderSkeletonCard?: BoardProps["renderSkeletonCard"];
18
+ renderListFooter?: (column: BoardItem) => React.ReactNode;
19
+ renderColumnAdder?: (column: BoardItem) => React.ReactNode;
20
+ renderGap?: (column: BoardItem) => React.ReactNode;
21
+ renderCardDragIndicator?: (card: BoardItem, info: any) => React.ReactNode;
22
+ renderCardDragPreview?: (card: BoardItem, info: any) => React.ReactNode;
23
+ renderColumnDragIndicator?: (column: BoardItem, info: {
24
+ width: number;
25
+ height: number;
26
+ edge: "left" | "right";
27
+ }) => React.ReactNode;
28
+ renderColumnDragPreview?: (column: BoardItem, info: any) => React.ReactNode;
29
+ columnWrapperStyle?: (column: BoardItem) => React.CSSProperties;
30
+ columnWrapperClassName?: (column: BoardItem) => string;
31
+ columnHeaderStyle?: (column: BoardItem) => React.CSSProperties;
32
+ columnHeaderClassName?: (column: BoardItem) => string;
33
+ columnStyle?: (column: BoardItem) => React.CSSProperties;
34
+ columnClassName?: (column: BoardItem) => string;
35
+ columnListContentStyle?: (column: BoardItem) => React.CSSProperties;
36
+ columnListContentClassName?: (column: BoardItem) => string;
37
+ cardWrapperStyle?: (card: BoardItem, column: BoardItem) => React.CSSProperties;
38
+ cardWrapperClassName?: string;
39
+ onColumnClick?: (e: React.MouseEvent<HTMLDivElement>, column: BoardItem) => void;
40
+ onCardClick?: (e: React.MouseEvent<HTMLDivElement>, card: BoardItem) => void;
41
+ onCardDndStateChange?: (info: DndState) => void;
42
+ onColumnDndStateChange?: (info: DndState) => void;
43
+ onScroll?: (e: ScrollEvent, column: BoardItem) => void;
44
+ loadMore?: (columnId: string) => void;
45
+ }
46
+ declare const Column: (props: Props) => import("react/jsx-runtime").JSX.Element;
47
+ export default Column;
@@ -0,0 +1 @@
1
+ export { default as Column } from './Column';
@@ -0,0 +1,6 @@
1
+ import { default as React } from 'react';
2
+ interface Props {
3
+ renderColumnAdder: () => React.ReactNode;
4
+ }
5
+ declare const ColumnAdder: ({ renderColumnAdder }: Props) => import("react/jsx-runtime").JSX.Element;
6
+ export default ColumnAdder;
@@ -0,0 +1 @@
1
+ export { default } from './ColumnAdder';
@@ -0,0 +1,24 @@
1
+ import { default as React } from 'react';
2
+ import { BoardItem, BoardProps, ConfigMap, DndState, ScrollEvent } from '../types';
3
+ interface Props {
4
+ items: BoardItem[];
5
+ column: BoardItem;
6
+ columnListContentStyle?: (column: BoardItem) => React.CSSProperties;
7
+ columnListContentClassName?: string;
8
+ configMap: ConfigMap;
9
+ renderSkeletonCard?: BoardProps["renderSkeletonCard"];
10
+ cardWrapperStyle?: (card: BoardItem, column: BoardItem) => React.CSSProperties;
11
+ cardWrapperClassName?: string;
12
+ onScroll?: (e: ScrollEvent, column: BoardItem) => void;
13
+ onCardClick?: (e: React.MouseEvent<HTMLDivElement>, card: BoardItem) => void;
14
+ loadMore?: (columnId: string) => void;
15
+ cardOverShadowCount?: number;
16
+ cardOverHeight?: number;
17
+ onCardDndStateChange?: (info: DndState) => void;
18
+ renderCardDragIndicator?: (card: BoardItem, info: any) => React.ReactNode;
19
+ renderCardDragPreview?: (card: BoardItem, info: any) => React.ReactNode;
20
+ renderListFooter?: (column: BoardItem) => React.ReactNode;
21
+ renderGap?: (column: BoardItem) => React.ReactNode;
22
+ }
23
+ declare const ColumnContent: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
24
+ export default ColumnContent;
@@ -0,0 +1 @@
1
+ export { default } from './ColumnContent';
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+ import { BoardItem } from '../types';
3
+ interface Props {
4
+ renderColumnHeader?: (column: BoardItem) => React.ReactNode;
5
+ columnHeaderStyle?: (column: BoardItem) => React.CSSProperties;
6
+ columnHeaderClassName?: string;
7
+ data: BoardItem;
8
+ }
9
+ declare const ColumnHeader: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLDivElement>>;
10
+ export default ColumnHeader;
@@ -0,0 +1 @@
1
+ export { default } from './ColumnHeader';
@@ -0,0 +1,3 @@
1
+ import { CardRenderProps } from '../types';
2
+ declare const DefaultCard: (props: CardRenderProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default DefaultCard;
@@ -0,0 +1 @@
1
+ export { default } from './DefaultCard';
@@ -0,0 +1,26 @@
1
+ import { default as React } from 'react';
2
+ import { BoardItem, BoardProps, ConfigMap, DndState } from '../types';
3
+ interface Props {
4
+ index: number;
5
+ options: {
6
+ data: BoardItem;
7
+ column: BoardItem;
8
+ configMap: ConfigMap;
9
+ isSkeleton: boolean;
10
+ isShadow: boolean;
11
+ isListFooter: boolean;
12
+ renderListFooter?: (column: BoardItem) => React.ReactNode;
13
+ cardWrapperStyle?: (card: BoardItem, column: BoardItem) => React.CSSProperties;
14
+ cardWrapperClassName?: string;
15
+ cardsGap?: number;
16
+ renderSkeletonCard?: BoardProps["renderSkeletonCard"];
17
+ onCardDndStateChange?: (info: DndState) => void;
18
+ onCardClick?: (e: React.MouseEvent<HTMLDivElement>, card: BoardItem) => void;
19
+ cardOverHeight?: number;
20
+ renderCardDragIndicator?: (card: BoardItem, info: any) => React.ReactNode;
21
+ renderCardDragPreview?: (card: BoardItem, info: any) => React.ReactNode;
22
+ renderGap?: (column: BoardItem) => React.ReactNode;
23
+ };
24
+ }
25
+ declare const GenericItem: (props: Props) => import("react/jsx-runtime").JSX.Element;
26
+ export default GenericItem;
@@ -0,0 +1 @@
1
+ export { default } from './GenericItem';
@@ -0,0 +1,3 @@
1
+ import { BoardProps } from './types';
2
+ declare const Kanban: import('react').ForwardRefExoticComponent<BoardProps & import('react').RefAttributes<HTMLDivElement>>;
3
+ export default Kanban;
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export { default as Kanban } from './Kanban';
@@ -0,0 +1,124 @@
1
+ import { TaskCardState } from '../global/dnd/useCardDnd';
2
+ import { TColumnState } from '../global/dnd/useColumnDnd';
3
+ import { CSSProperties, ReactNode } from 'react';
4
+ export interface DndState {
5
+ state: TaskCardState | TColumnState;
6
+ column?: BoardItem;
7
+ card?: BoardItem;
8
+ }
9
+ export interface ScrollEvent {
10
+ target: {
11
+ scrollTop: number;
12
+ scrollHeight: number;
13
+ clientHeight: number;
14
+ };
15
+ }
16
+ export type CardRenderProps = {
17
+ data: BoardItem;
18
+ column: BoardItem;
19
+ index: number;
20
+ isDraggable: boolean;
21
+ };
22
+ export type ConfigMap = {
23
+ [type: string]: {
24
+ render: (props: CardRenderProps) => React.ReactNode;
25
+ isDraggable?: boolean;
26
+ };
27
+ };
28
+ export interface BoardItem {
29
+ id: string;
30
+ title: string;
31
+ parentId: string | null;
32
+ children: string[];
33
+ content?: any;
34
+ type?: keyof ConfigMap;
35
+ totalItems?: number;
36
+ totalChildrenCount: number;
37
+ totalItemsCount?: number;
38
+ isDraggable?: boolean;
39
+ }
40
+ export interface BoardData {
41
+ root: BoardItem;
42
+ [key: string]: BoardItem;
43
+ }
44
+ export interface DropColumnParams {
45
+ columnId: string;
46
+ fromIndex: number;
47
+ toIndex: number;
48
+ }
49
+ export interface DropCardParams {
50
+ cardId: string;
51
+ fromColumnId: string;
52
+ toColumnId: string;
53
+ taskAbove: string | null;
54
+ taskBelow: string | null;
55
+ position: number;
56
+ }
57
+ export interface BoardProps {
58
+ dataSource: BoardData;
59
+ configMap: ConfigMap;
60
+ viewOnly?: boolean;
61
+ loadMore?: (groupsId: string) => void;
62
+ renderSkeletonCard?: ({ index, column, }: {
63
+ index: number;
64
+ column: BoardItem;
65
+ }) => ReactNode;
66
+ renderColumnHeader?: (column: BoardItem) => ReactNode;
67
+ renderCardDragIndicator?: (card: BoardItem, info: any) => ReactNode;
68
+ renderCardDragPreview?: (card: BoardItem, info: any) => ReactNode;
69
+ renderColumnDragIndicator?: (column: BoardItem, info: {
70
+ width: number;
71
+ height: number;
72
+ edge: "left" | "right";
73
+ }) => ReactNode;
74
+ renderColumnDragPreview?: (column: BoardItem, info: any) => ReactNode;
75
+ renderListFooter?: (column: BoardItem) => ReactNode;
76
+ allowListFooter?: (column: BoardItem) => boolean;
77
+ renderColumnAdder?: () => ReactNode;
78
+ allowColumnAdder?: boolean;
79
+ allowColumnDrag?: boolean;
80
+ renderColumnWrapper?: (column: BoardItem, { children, className, style, }: {
81
+ children: ReactNode;
82
+ className?: string;
83
+ style?: CSSProperties;
84
+ }) => ReactNode;
85
+ columnWrapperStyle?: (column: BoardItem) => CSSProperties;
86
+ columnHeaderStyle?: (column: BoardItem) => CSSProperties;
87
+ columnListContentStyle?: (column: BoardItem) => CSSProperties;
88
+ columnListContentClassName?: (column: BoardItem) => string;
89
+ columnWrapperClassName?: (column: BoardItem) => string;
90
+ columnHeaderClassName?: (column: BoardItem) => string;
91
+ columnClassName?: (column: BoardItem) => string;
92
+ columnStyle?: (column: BoardItem) => CSSProperties;
93
+ rootStyle?: CSSProperties;
94
+ rootClassName?: string;
95
+ cardWrapperStyle?: (card: BoardItem, column: BoardItem) => CSSProperties;
96
+ cardWrapperClassName?: string;
97
+ virtualization?: boolean;
98
+ cardsGap?: number;
99
+ onScroll?: (e: ScrollEvent, column: BoardItem) => void;
100
+ onColumnMove?: ({ columnId, fromIndex, toIndex }: DropColumnParams) => void;
101
+ onCardMove?: ({ cardId, fromColumnId, toColumnId, taskAbove, taskBelow, position, }: DropCardParams) => void;
102
+ renderColumnFooter?: (column: BoardItem) => ReactNode;
103
+ onColumnClick?: (e: React.MouseEvent<HTMLDivElement>, column: BoardItem) => void;
104
+ onCardClick?: (e: React.MouseEvent<HTMLDivElement>, card: BoardItem) => void;
105
+ onCardDndStateChange?: (info: DndState) => void;
106
+ onColumnDndStateChange?: (info: DndState) => void;
107
+ }
108
+ export interface DropParams {
109
+ source: {
110
+ id: string;
111
+ data: any;
112
+ };
113
+ location: {
114
+ current: {
115
+ dropTargets: Array<{
116
+ data: any;
117
+ }>;
118
+ };
119
+ };
120
+ columns: BoardItem[];
121
+ dataSource: BoardData;
122
+ onCardMove?: BoardProps["onCardMove"];
123
+ onColumnMove?: BoardProps["onColumnMove"];
124
+ }
@@ -0,0 +1,5 @@
1
+ import { BoardProps } from '../components';
2
+ export declare const useKanbanContext: () => Partial<BoardProps>;
3
+ export declare const KanbanProvider: ({ children, ...props }: Partial<BoardProps> & {
4
+ children: React.ReactNode;
5
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ import { BoardData, BoardItem, DropColumnParams, DropParams } from '../../components';
2
+ export declare const handleCardDrop: ({ source, location, columns, dataSource, onCardMove, onColumnMove, }: DropParams) => void;
3
+ export declare const dropColumnHandler: (drop: DropColumnParams, dataSource: BoardData) => {
4
+ [x: string]: BoardItem;
5
+ root: BoardItem;
6
+ };
7
+ export declare const dropHandler: (drop: {
8
+ cardId: string;
9
+ fromColumnId: string;
10
+ toColumnId: string;
11
+ taskAbove: string | null;
12
+ taskBelow: string | null;
13
+ }, dataSource: BoardData, updateDroppedItem?: (targetColumn: BoardItem, droppedItem: any) => any, updateDestinationColumn?: (targetColumn: BoardItem) => any, updateSourceColumn?: (sourceColumn: BoardItem) => any) => {
14
+ [x: string]: BoardItem;
15
+ root: BoardItem;
16
+ };
@@ -0,0 +1,22 @@
1
+ import { BoardItem, DndState } from '../../components/types';
2
+ import { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
3
+ export type TaskCardState = {
4
+ type: "idle";
5
+ } | {
6
+ type: "is-dragging";
7
+ } | {
8
+ type: "is-dragging-and-left-self";
9
+ } | {
10
+ type: "is-over";
11
+ dragging: DOMRect;
12
+ closestEdge: Edge;
13
+ } | {
14
+ type: "preview";
15
+ container: HTMLElement;
16
+ dragging: DOMRect;
17
+ };
18
+ export declare const useCardDnd: (data: BoardItem, column: BoardItem, index: number, isDraggable: boolean, onCardDndStateChange?: (info: DndState) => void) => {
19
+ outerRef: import('react').RefObject<HTMLDivElement>;
20
+ innerRef: import('react').RefObject<HTMLDivElement>;
21
+ state: TaskCardState;
22
+ };
@@ -0,0 +1,29 @@
1
+ import { BoardItem, DndState } from '../../components/types';
2
+ import { Edge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
3
+ export type TColumnState = {
4
+ type: "idle";
5
+ } | {
6
+ type: "is-dragging";
7
+ } | {
8
+ type: "is-dragging-and-left-self";
9
+ } | {
10
+ type: "is-card-over";
11
+ isOverChildCard: boolean;
12
+ dragging: DOMRect;
13
+ } | {
14
+ type: "is-column-over";
15
+ closestEdge: Edge;
16
+ rect: DOMRect;
17
+ } | {
18
+ type: "preview";
19
+ container: HTMLElement;
20
+ dragging: DOMRect;
21
+ };
22
+ export declare const useColumnDnd: (data: BoardItem, index: number, items: BoardItem[], onColumnDndStateChange?: (info: DndState) => void, allowColumnDrag?: boolean, hasCustomPreview?: boolean) => {
23
+ headerRef: import('react').RefObject<HTMLDivElement>;
24
+ outerFullHeightRef: import('react').RefObject<HTMLDivElement>;
25
+ innerRef: import('react').RefObject<HTMLDivElement>;
26
+ state: TColumnState;
27
+ cardOverShadowCount: number;
28
+ totalTasksCount: number;
29
+ };
package/dist/index.css ADDED
@@ -0,0 +1 @@
1
+ .rkk-board{display:flex;overflow:auto;height:100%;gap:8px}.rkk-column-outer{min-width:264px;max-width:264px;height:100%;display:flex;flex-direction:column;transition:all .1s ease;-webkit-transition:all .1s ease;-moz-transition:all .1s ease;-ms-transition:all .1s ease;-o-transition:all .1s ease}.rkk-column-outer .rkk-column{display:flex;flex-direction:column;gap:10px;padding:10px;border-radius:10px;background-color:#f0f0f0;position:relative;overflow:hidden}.rkk-column-outer .rkk-column-wrapper{display:flex;flex-direction:column;flex:1;gap:16px;max-height:100%}.rkk-column-shadow-container{position:relative;flex-shrink:0}.rkk-column-shadow{border-radius:10px;background-color:#ffffffb7;border:1px solid var(--Schemes-Outline-Variant, #e8ecf5)}.rkk-column-header{display:flex;justify-content:space-between;align-items:center;border-radius:10px;height:24px;margin-bottom:10px;background-color:#f0f0f0}.rkk-column-header-left{font-size:18px;font-weight:600;color:#000}.rkk-column-header-right{font-size:15px;background-color:#37352f14;color:#37352f;padding:5px 10px;border-radius:5px;font-weight:500}.rkk-column-content{flex:1;position:relative;height:0;min-height:0}.rkk-column-content-list{height:100%;overflow-y:auto;overflow-x:hidden;contain:none!important;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.3) transparent;transition:scrollbar-color .3s ease}.rkk-column-content-list:hover{scrollbar-color:rgba(0,0,0,.3) transparent}@keyframes skeleton-shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes skeleton-wave{0%{transform:translate(-100%)}50%{transform:translate(100%)}to{transform:translate(100%)}}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.rkk-skeleton{border-radius:8px;border:1px solid #e8ecf5;background:#fff;padding:16px;margin-bottom:8px;box-shadow:0 1px 3px #0000001a;transition:box-shadow .2s ease;position:relative;overflow:hidden}.rkk-skeleton:hover{box-shadow:0 2px 8px #00000026}.rkk-skeleton-content{display:flex;flex-direction:column;gap:12px}.rkk-skeleton .rkk-skeleton-date,.rkk-skeleton .rkk-skeleton-assignee,.rkk-skeleton .rkk-skeleton-avatar,.rkk-skeleton .rkk-skeleton-tag,.rkk-skeleton .rkk-skeleton-priority,.rkk-skeleton .rkk-skeleton-line,.rkk-skeleton .rkk-skeleton-title{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200px 100%;animation:skeleton-shimmer 1.5s infinite ease-in-out;border-radius:4px;position:relative}.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-title,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-title,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-line,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-line,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-tag,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-tag,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-avatar,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-avatar,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-assignee,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-assignee,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-date,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-date,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-priority,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-priority{background:#f0f0f0;position:relative;overflow:hidden;border-radius:4px}.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-title:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-title:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-line:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-line:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-tag:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-tag:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-avatar:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-avatar:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-assignee:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-assignee:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-date:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-date:after,.rkk-skeleton .rkk-skeleton-wave .rkk-skeleton-priority:after,.rkk-skeleton-wave .rkk-skeleton .rkk-skeleton-priority:after{position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,#fff0 0,#fff3 20%,#ffffff80 60%,#fff0);animation:skeleton-wave 2s infinite;content:""}.rkk-skeleton-title{height:20px;width:80%;border-radius:6px}.rkk-skeleton-description{display:flex;flex-direction:column;gap:8px}.rkk-skeleton-line{height:14px;width:100%}.rkk-skeleton-line-short{width:65%}.rkk-skeleton-priority{height:4px;width:40px;border-radius:2px;margin-bottom:4px}.rkk-skeleton-tags{display:flex;gap:8px;flex-wrap:wrap}.rkk-skeleton-tag{height:20px;width:60px;border-radius:12px}.rkk-skeleton-tag:nth-child(2){width:45px}.rkk-skeleton-tag:nth-child(3){width:55px}.rkk-skeleton-footer{display:flex;justify-content:space-between;align-items:center;margin-top:4px}.rkk-skeleton-footer-left{display:flex;align-items:center;gap:8px}.rkk-skeleton-avatar{width:24px;height:24px;border-radius:50%;flex-shrink:0}.rkk-skeleton-assignee{height:12px;width:60px;border-radius:3px}.rkk-skeleton-date{height:12px;width:80px;border-radius:3px}.rkk-skeleton-wave .rkk-skeleton-title,.rkk-skeleton-wave .rkk-skeleton-line,.rkk-skeleton-wave .rkk-skeleton-tag,.rkk-skeleton-wave .rkk-skeleton-avatar,.rkk-skeleton-wave .rkk-skeleton-assignee,.rkk-skeleton-wave .rkk-skeleton-date,.rkk-skeleton-wave .rkk-skeleton-priority{animation:none}.rkk-skeleton-pulse .rkk-skeleton-title,.rkk-skeleton-pulse .rkk-skeleton-line,.rkk-skeleton-pulse .rkk-skeleton-tag,.rkk-skeleton-pulse .rkk-skeleton-avatar,.rkk-skeleton-pulse .rkk-skeleton-assignee,.rkk-skeleton-pulse .rkk-skeleton-date,.rkk-skeleton-pulse .rkk-skeleton-priority{background:#f0f0f0;animation:skeleton-pulse 1.5s ease-in-out infinite}@media (max-width: 768px){.rkk-skeleton{padding:12px}.rkk-skeleton-content{gap:10px}.rkk-skeleton-title{height:18px}.rkk-skeleton-line{height:12px}.rkk-skeleton-tag{height:18px;width:50px}.rkk-skeleton-tag:nth-child(2){width:40px}.rkk-skeleton-avatar{width:20px;height:20px}}.rkk-card-shadow-container{position:relative}.rkk-card-shadow{border-radius:8px;background-color:#ffffffb7;border:1px solid var(--Schemes-Outline-Variant, #e8ecf5)}.rkk-default-card{background-color:#fff;padding:10px;border-radius:8px;border:1px solid #ccc;box-shadow:0 0 10px #0000001a;cursor:pointer;-webkit-border-radius:8px;-moz-border-radius:8px;-ms-border-radius:8px;-o-border-radius:8px}
@@ -0,0 +1,4 @@
1
+ import { dropHandler, dropColumnHandler } from './global/dnd/dropManager';
2
+ export type { BoardProps, BoardItem, BoardData } from './components/types';
3
+ export { default as Kanban } from './components/Kanban';
4
+ export { dropHandler, dropColumnHandler };