@moontra/moonui-pro 2.12.0 → 2.14.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.
@@ -0,0 +1,168 @@
1
+ export interface KanbanAssignee {
2
+ id: string
3
+ name: string
4
+ avatar?: string
5
+ email?: string
6
+ }
7
+
8
+ export interface KanbanLabel {
9
+ id: string
10
+ name: string
11
+ color: string
12
+ }
13
+
14
+ export interface KanbanChecklist {
15
+ id: string
16
+ title: string
17
+ items: {
18
+ id: string
19
+ text: string
20
+ completed: boolean
21
+ }[]
22
+ }
23
+
24
+ export interface KanbanActivity {
25
+ id: string
26
+ user: KanbanAssignee
27
+ action: string
28
+ timestamp: Date
29
+ details?: string
30
+ }
31
+
32
+ export interface KanbanCard {
33
+ id: string
34
+ title: string
35
+ description?: string
36
+ coverImage?: string
37
+ assignees?: KanbanAssignee[]
38
+ dueDate?: Date
39
+ startDate?: Date
40
+ priority?: 'low' | 'medium' | 'high' | 'urgent'
41
+ tags?: string[]
42
+ labels?: KanbanLabel[]
43
+ attachments?: {
44
+ id: string
45
+ name: string
46
+ type: string
47
+ url: string
48
+ size: number
49
+ }[]
50
+ comments?: number
51
+ completed?: boolean
52
+ progress?: number
53
+ checklist?: KanbanChecklist
54
+ activities?: KanbanActivity[]
55
+ customFields?: Record<string, any>
56
+ position: number
57
+ }
58
+
59
+ export interface KanbanColumn {
60
+ id: string
61
+ title: string
62
+ color?: string
63
+ cards: KanbanCard[]
64
+ limit?: number
65
+ collapsed?: boolean
66
+ locked?: boolean
67
+ template?: 'todo' | 'inProgress' | 'done' | 'custom'
68
+ }
69
+
70
+ export interface KanbanFilter {
71
+ id: string
72
+ name: string
73
+ query: string
74
+ assignees?: string[]
75
+ labels?: string[]
76
+ priority?: string[]
77
+ tags?: string[]
78
+ dueDate?: {
79
+ from?: Date
80
+ to?: Date
81
+ }
82
+ }
83
+
84
+ export interface KanbanProps {
85
+ columns: KanbanColumn[]
86
+ onCardMove?: (cardId: string, fromColumn: string, toColumn: string, newPosition: number) => void
87
+ onCardClick?: (card: KanbanCard) => void
88
+ onCardEdit?: (card: KanbanCard) => void
89
+ onCardDelete?: (card: KanbanCard) => void
90
+ onCardUpdate?: (card: KanbanCard) => void
91
+ onAddCard?: (columnId: string, card?: Partial<KanbanCard>) => void
92
+ onAddColumn?: (column?: Partial<KanbanColumn>) => void
93
+ onColumnUpdate?: (column: KanbanColumn) => void
94
+ onColumnDelete?: (columnId: string) => void
95
+ onBulkAction?: (action: string, cardIds: string[]) => void
96
+ onExport?: (format: 'json' | 'csv') => void
97
+ className?: string
98
+ showAddColumn?: boolean
99
+ showCardDetails?: boolean
100
+ showFilters?: boolean
101
+ showSearch?: boolean
102
+ enableKeyboardShortcuts?: boolean
103
+ cardTemplates?: Partial<KanbanCard>[]
104
+ columnTemplates?: Partial<KanbanColumn>[]
105
+ filters?: KanbanFilter[]
106
+ defaultFilter?: string
107
+ loading?: boolean
108
+ disabled?: boolean
109
+ labels?: KanbanLabel[]
110
+ users?: KanbanAssignee[]
111
+
112
+ // Card Render Customization
113
+ renderCard?: (card: KanbanCard, column: KanbanColumn, provided: any) => React.ReactNode
114
+ renderCardPreview?: (card: KanbanCard) => React.ReactNode
115
+ renderCardBadge?: (card: KanbanCard) => React.ReactNode
116
+ renderCardActions?: (card: KanbanCard) => React.ReactNode
117
+ cardCompactMode?: boolean
118
+ cardShowCoverImage?: boolean
119
+ cardShowAssignees?: boolean
120
+ cardShowLabels?: boolean
121
+ cardShowProgress?: boolean
122
+ cardDateFormat?: string
123
+ cardMaxAssigneesToShow?: number
124
+
125
+ // Add Card Customization
126
+ renderAddCardButton?: (columnId: string) => React.ReactNode
127
+ renderAddCardForm?: (columnId: string, onAdd: (card: Partial<KanbanCard>) => void, onCancel: () => void) => React.ReactNode
128
+ addCardButtonText?: string | ((columnId: string) => string)
129
+ addCardPosition?: 'top' | 'bottom'
130
+ allowQuickAdd?: boolean
131
+ quickAddFields?: ('title' | 'description' | 'assignee' | 'priority')[]
132
+ validateCard?: (card: Partial<KanbanCard>) => { valid: boolean; errors?: string[] }
133
+ onBeforeCardAdd?: (card: Partial<KanbanCard>) => Partial<KanbanCard> | false
134
+
135
+ // Column Customization
136
+ renderColumnHeader?: (column: KanbanColumn) => React.ReactNode
137
+ renderColumnFooter?: (column: KanbanColumn) => React.ReactNode
138
+ renderEmptyColumn?: (column: KanbanColumn) => React.ReactNode
139
+ columnMenuActions?: Array<{
140
+ label: string
141
+ icon?: React.ReactNode
142
+ action: (column: KanbanColumn) => void
143
+ visible?: (column: KanbanColumn) => boolean
144
+ }>
145
+ allowColumnReorder?: boolean
146
+ columnColorOptions?: string[]
147
+ columnDefaultColor?: string
148
+
149
+ // Drag & Drop Enhancement
150
+ dragDisabled?: boolean | ((card: KanbanCard) => boolean)
151
+ dropDisabled?: boolean | ((column: KanbanColumn) => boolean)
152
+ dragPreview?: 'card' | 'compact' | 'custom'
153
+ renderDragPreview?: (card: KanbanCard) => React.ReactNode
154
+ canDrop?: (card: KanbanCard, targetColumn: KanbanColumn, position: number) => boolean
155
+ onDragStart?: (card: KanbanCard, column: KanbanColumn) => void
156
+ onDragEnd?: (card: KanbanCard, column: KanbanColumn) => void
157
+
158
+ // UI/UX Customization
159
+ theme?: 'default' | 'compact' | 'modern' | 'minimal'
160
+ cardVariant?: 'default' | 'bordered' | 'elevated' | 'flat'
161
+ enableAnimations?: boolean
162
+ animationDuration?: number
163
+ columnWidth?: number | 'auto'
164
+ columnGap?: number
165
+ cardGap?: number
166
+ showTooltips?: boolean
167
+ tooltipDelay?: number
168
+ }
@@ -0,0 +1,15 @@
1
+ interface ToastOptions {
2
+ title: string
3
+ description?: string
4
+ variant?: 'default' | 'destructive'
5
+ }
6
+
7
+ export function useToast() {
8
+ const toast = (options: ToastOptions) => {
9
+ // Simple console implementation for now
10
+ // In production, this would integrate with a proper toast system
11
+ console.log(`[Toast] ${options.title}${options.description ? ': ' + options.description : ''}`)
12
+ }
13
+
14
+ return { toast }
15
+ }