organify-ui 0.3.4 → 0.3.6
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/dist/ai/index.d.ts +201 -0
- package/dist/ai/index.js +3 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai-chat-sidebar-DnEOUzSL.d.ts +29 -0
- package/dist/{chunk-NUA6OPJV.js → chunk-F7LW2OMM.js} +79 -61
- package/dist/chunk-F7LW2OMM.js.map +1 -0
- package/dist/chunk-P2ORBJBL.js +269 -0
- package/dist/chunk-P2ORBJBL.js.map +1 -0
- package/dist/{chunk-A2H2TBSV.js → chunk-SAYB3NN2.js} +8 -3
- package/dist/chunk-SAYB3NN2.js.map +1 -0
- package/dist/components/chat/index.d.ts +5 -53
- package/dist/components/chat/index.js +1 -1
- package/dist/components/notifications/index.js +1 -1
- package/dist/index.d.ts +32 -5
- package/dist/index.js +36 -13
- package/dist/index.js.map +1 -1
- package/dist/{ai-chat-sidebar-BYphYj2N.d.ts → inline-ai-CcYfjXIS.d.ts} +42 -18
- package/package.json +5 -1
- package/src/globals.css +80 -0
- package/dist/chunk-A2H2TBSV.js.map +0 -1
- package/dist/chunk-NUA6OPJV.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -26,8 +26,10 @@ export { IconProps, OrgAI, OrgActivity, OrgArrowLeft, OrgArrowRight, OrgAttachme
|
|
|
26
26
|
export { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
27
27
|
export { Theme, ThemeProvider, ThemeProviderProps, useTheme } from './providers/theme-provider.js';
|
|
28
28
|
export { I18nProvider, I18nProviderProps, Locale, TranslationKey, createTranslator, useI18n } from './i18n/index.js';
|
|
29
|
-
export {
|
|
29
|
+
export { b as ChatConfig, c as ChatEvents, d as ChatMention, C as ChatMessage, e as ChatMessages, f as ChatPermissions, g as ChatReaction, h as ChatRoom, i as ChatRoomMember, j as ChatSidebar, k as ChatUser, l as CommandBar, m as CommandBarItem, n as CommandBarProps, o as CreateRoomDialog, I as InlineAiButton, p as InlineAiButtonProps, q as MOCK_PROJECTS, r as MOCK_USERS, s as MemberRole, O as OrganifyChat, v as OrganifyChatProps, R as RoomManagementPanel, w as RoomType, x as RoomVisibility, T as TypingIndicatorMock, U as UseAiInlineOptions, y as generateAutoReplies, z as getMockMentionOptions, A as getRoomPermissions, B as typingIndicator, D as useAiInline, E as useChat } from './inline-ai-CcYfjXIS.js';
|
|
30
|
+
export { A as AiAction, a as AiChatMessage, b as AiChatSidebar, c as AiChatSidebarProps } from './ai-chat-sidebar-DnEOUzSL.js';
|
|
30
31
|
export { Notification, NotificationBell, NotificationBellProps, NotificationItem, NotificationItemProps, NotificationList, NotificationListProps, NotificationMetadata, NotificationPreferenceChannel, NotificationPreferences, NotificationPriority, NotificationType, OrganifyNotifications, OrganifyNotificationsProps, PresenceAvatarStack, PresenceAvatarStackProps, PresenceIndicator, PresenceIndicatorProps, PresenceStatus, PresenceUser, UserPresence, useNotifications, usePresence } from './components/notifications/index.js';
|
|
32
|
+
export { AiAdminLog, AiAdminLogsResponse, AiAdminStatsResponse, AiAdminUserStat, AiAdminUsersResponse, AiChatResponse, AiClient, AiClientConfig, AiCommandResponse, AiResetResponse, AiSuggestResponse, AiUsageResponse, UseAiChatOptions, UseAiChatResult, UseAiCommandOptions, UseAiCommandResult, UseAiSuggestOptions, UseAiSuggestResult, UseAiUsageResult, createAiClient, useAiChat, useAiCommand, useAiSuggest, useAiUsage } from './ai/index.js';
|
|
31
33
|
|
|
32
34
|
/**
|
|
33
35
|
* Merge Tailwind CSS classes with clsx — the standard shadcn pattern.
|
|
@@ -98,7 +100,7 @@ declare const Toggle: React.ForwardRefExoticComponent<ToggleProps & React.RefAtt
|
|
|
98
100
|
* Theme-aware: uses CSS variables for theme switching.
|
|
99
101
|
*/
|
|
100
102
|
declare const badgeVariants: (props?: ({
|
|
101
|
-
variant?: "default" | "error" | "
|
|
103
|
+
variant?: "default" | "error" | "in-flow" | "primary" | "success" | "warning" | "info" | "deep-work" | "high-energy" | "cream-default" | "cream-primary" | null | undefined;
|
|
102
104
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
103
105
|
interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
104
106
|
/** Animated pulse dot */
|
|
@@ -513,7 +515,7 @@ declare function Logo({ size, variant, animated, className, ...props }: LogoProp
|
|
|
513
515
|
* From Brand Assets & Icons HTML.
|
|
514
516
|
*/
|
|
515
517
|
declare const geometricIconVariants: (props?: ({
|
|
516
|
-
variant?: "default" | "outline" | "error" | "cream" | "
|
|
518
|
+
variant?: "default" | "outline" | "error" | "cream" | "filled" | "success" | "warning" | null | undefined;
|
|
517
519
|
size?: "sm" | "default" | "lg" | "xl" | null | undefined;
|
|
518
520
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
519
521
|
interface GeometricIconProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof geometricIconVariants> {
|
|
@@ -604,7 +606,7 @@ declare function StepConnector({ status, variant, }: {
|
|
|
604
606
|
* From Brand Assets & Icons HTML.
|
|
605
607
|
*/
|
|
606
608
|
declare const statusPillVariants: (props?: ({
|
|
607
|
-
variant?: "default" | "error" | "cream" | "
|
|
609
|
+
variant?: "default" | "error" | "cream" | "in-flow" | "primary" | "success" | "warning" | "info" | "deep-work" | "high-energy" | "resting" | "disconnected" | null | undefined;
|
|
608
610
|
size?: "sm" | "default" | "lg" | null | undefined;
|
|
609
611
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
610
612
|
interface StatusPillProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof statusPillVariants> {
|
|
@@ -843,14 +845,39 @@ interface TaskCardProps$1 extends Omit<React.HTMLAttributes<HTMLDivElement>, 'on
|
|
|
843
845
|
onUpdate?: (taskId: string, updates: Partial<TaskDetailData>) => Promise<void>;
|
|
844
846
|
onAddLabel?: (taskId: string) => void;
|
|
845
847
|
onRemoveLabel?: (taskId: string, labelId: string) => void;
|
|
848
|
+
onToggleLabel?: (taskId: string, label: {
|
|
849
|
+
id: string;
|
|
850
|
+
name: string;
|
|
851
|
+
color: string;
|
|
852
|
+
}) => void;
|
|
853
|
+
onCreateLabel?: (name: string, color: string) => Promise<{
|
|
854
|
+
id: string;
|
|
855
|
+
name: string;
|
|
856
|
+
color: string;
|
|
857
|
+
}>;
|
|
858
|
+
availableLabels?: Array<{
|
|
859
|
+
id: string;
|
|
860
|
+
name: string;
|
|
861
|
+
color: string;
|
|
862
|
+
}>;
|
|
846
863
|
onAddAssignee?: (taskId: string) => void;
|
|
847
864
|
onRemoveAssignee?: (taskId: string, assigneeId: string) => void;
|
|
865
|
+
onToggleAssignee?: (taskId: string, assignee: {
|
|
866
|
+
id: string;
|
|
867
|
+
name: string;
|
|
868
|
+
avatarUrl?: string;
|
|
869
|
+
}) => void;
|
|
870
|
+
availableUsers?: Array<{
|
|
871
|
+
id: string;
|
|
872
|
+
name: string;
|
|
873
|
+
avatarUrl?: string;
|
|
874
|
+
}>;
|
|
848
875
|
onAddSubtask?: (taskId: string, title: string) => Promise<void>;
|
|
849
876
|
onToggleSubtask?: (taskId: string, subtaskId: string, completed: boolean) => Promise<void>;
|
|
850
877
|
onDeleteSubtask?: (taskId: string, subtaskId: string) => Promise<void>;
|
|
851
878
|
onUpdateSubtask?: (taskId: string, subtaskId: string, title: string) => Promise<void>;
|
|
852
879
|
}
|
|
853
|
-
declare function TaskCard$1({ task, onTaskClick, isDragging, isSelected, compact, enableDetailSheet, showDragHandle, onUpdate, onAddLabel, onRemoveLabel, onAddAssignee, onRemoveAssignee, onAddSubtask, onToggleSubtask, onDeleteSubtask, onUpdateSubtask, className, ...props }: TaskCardProps$1): react_jsx_runtime.JSX.Element;
|
|
880
|
+
declare function TaskCard$1({ task, onTaskClick, isDragging, isSelected, compact, enableDetailSheet, showDragHandle, onUpdate, onAddLabel, onRemoveLabel, onToggleLabel, onCreateLabel, availableLabels, onAddAssignee, onRemoveAssignee, onToggleAssignee, availableUsers, onAddSubtask, onToggleSubtask, onDeleteSubtask, onUpdateSubtask, className, ...props }: TaskCardProps$1): react_jsx_runtime.JSX.Element;
|
|
854
881
|
declare namespace TaskCard$1 {
|
|
855
882
|
var displayName: string;
|
|
856
883
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { Popover, PopoverTrigger, PopoverContent } from './chunk-SAYB3NN2.js';
|
|
2
|
+
export { NotificationBell, NotificationItem, NotificationList, OrganifyNotifications, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PresenceAvatarStack, PresenceIndicator, useNotifications, usePresence } from './chunk-SAYB3NN2.js';
|
|
3
|
+
export { createAiClient, useAiChat, useAiCommand, useAiSuggest, useAiUsage } from './chunk-P2ORBJBL.js';
|
|
1
4
|
export { I18nProvider, createTranslator, useI18n } from './chunk-FQA33MF4.js';
|
|
2
5
|
export { ThemeProvider, useTheme } from './chunk-RFOKENE3.js';
|
|
3
|
-
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerDescription, Separator, ResponsiveDialog, Label, Input, Textarea, Button, Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-
|
|
4
|
-
export { AiChatSidebar, Alert, Button, ChatMessages, ChatSidebar, CreateRoomDialog, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, Input, Label, MOCK_PROJECTS, MOCK_USERS, OrgLoader, OrgLoaderInline, OrganifyChat, ResponsiveDialog, RoomManagementPanel, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, TypingIndicatorMock, alertVariants, buttonVariants, generateAutoReplies, getMockMentionOptions, getRoomPermissions, inputVariants, orgLoaderVariants, typingIndicator, useChat } from './chunk-
|
|
5
|
-
import { Popover, PopoverTrigger, PopoverContent } from './chunk-A2H2TBSV.js';
|
|
6
|
-
export { NotificationBell, NotificationItem, NotificationList, OrganifyNotifications, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PresenceAvatarStack, PresenceIndicator, useNotifications, usePresence } from './chunk-A2H2TBSV.js';
|
|
6
|
+
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerDescription, Separator, ResponsiveDialog, Label, Input, Textarea, Button, Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from './chunk-F7LW2OMM.js';
|
|
7
|
+
export { AiChatSidebar, Alert, Button, ChatMessages, ChatSidebar, CommandBar, CreateRoomDialog, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, InlineAiButton, Input, Label, MOCK_PROJECTS, MOCK_USERS, OrgLoader, OrgLoaderInline, OrganifyChat, ResponsiveDialog, RoomManagementPanel, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, TypingIndicatorMock, alertVariants, buttonVariants, generateAutoReplies, getMockMentionOptions, getRoomPermissions, inputVariants, orgLoaderVariants, typingIndicator, useAiInline, useChat } from './chunk-F7LW2OMM.js';
|
|
7
8
|
import { cn, Avatar, AvatarImage, AvatarFallback, TooltipProvider, Tooltip, TooltipTrigger, TooltipContent, Skeleton, useOrganify, useOrganifyGql, ScrollArea, useOrganifyUser, useOrganifyApi, Badge, useOrganifyWorkspace, useOrganifyNavigation, useOrganifyProject } from './chunk-VHQZS77G.js';
|
|
8
9
|
export { Avatar, AvatarFallback, AvatarImage, Badge, OrganifyContext, OrganifyProvider, ScrollArea, ScrollBar, Skeleton, SkeletonCard, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, avatarVariants, badgeVariants, cn, useOrganify, useOrganifyApi, useOrganifyGql, useOrganifyNavigation, useOrganifyProject, useOrganifyRest, useOrganifyUser, useOrganifyWorkspace } from './chunk-VHQZS77G.js';
|
|
9
10
|
import { OrgDiamond, OrgPlus, OrgComment, OrgEdit, OrgTrash, OrgCheckCircle, OrgAttachment, OrgCalendar, OrgMail, OrgBoard, OrgSprint, OrgRocket, OrgWarning, OrgFlag, OrgShield, OrgZap, OrgStar } from './chunk-MZKEDV5W.js';
|
|
@@ -4139,7 +4140,7 @@ function SheetOverlay({
|
|
|
4139
4140
|
{
|
|
4140
4141
|
"data-slot": "sheet-overlay",
|
|
4141
4142
|
className: cn(
|
|
4142
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-
|
|
4143
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-theme-subtle-20 backdrop-blur-sm",
|
|
4143
4144
|
className
|
|
4144
4145
|
),
|
|
4145
4146
|
...props
|
|
@@ -4158,9 +4159,13 @@ function SheetContent({
|
|
|
4158
4159
|
SheetPrimitive.Content,
|
|
4159
4160
|
{
|
|
4160
4161
|
"data-slot": "sheet-content",
|
|
4162
|
+
style: {
|
|
4163
|
+
background: "var(--org-bg-elevated, #110E22)",
|
|
4164
|
+
color: "var(--org-text, #F0ECF9)",
|
|
4165
|
+
borderColor: "var(--org-glass-border, rgba(167,139,250,0.15))"
|
|
4166
|
+
},
|
|
4161
4167
|
className: cn(
|
|
4162
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-xl
|
|
4163
|
-
"[background:var(--org-bg-elevated,#110E22)] [color:var(--org-text,#F0ECF9)] [border-color:var(--org-glass-border,rgba(167,139,250,0.15))]",
|
|
4168
|
+
"data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-xl transition ease-[cubic-bezier(0.25,1,0.5,1)] data-[state=closed]:duration-300 data-[state=open]:duration-500",
|
|
4164
4169
|
side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l-2 sm:max-w-sm",
|
|
4165
4170
|
side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r-2 sm:max-w-sm",
|
|
4166
4171
|
side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b-2",
|
|
@@ -5675,7 +5680,7 @@ function TaskDetailContent({
|
|
|
5675
5680
|
await onUpdate(task.id, { [field]: value });
|
|
5676
5681
|
}
|
|
5677
5682
|
};
|
|
5678
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-6 py-4 space-y-6", children: [
|
|
5683
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-6 py-4 space-y-6 text-theme", children: [
|
|
5679
5684
|
task.number && /* @__PURE__ */ jsx("div", { className: "flex justify-end -mt-2", children: /* @__PURE__ */ jsxs(Badge, { className: "bg-theme-subtle border border-theme-subtle text-theme-muted font-mono", children: [
|
|
5680
5685
|
"#",
|
|
5681
5686
|
task.number
|
|
@@ -5857,7 +5862,7 @@ function TaskDetailContent({
|
|
|
5857
5862
|
] });
|
|
5858
5863
|
}
|
|
5859
5864
|
function TaskDetailSkeleton2() {
|
|
5860
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-6 py-4 space-y-6 animate-pulse", children: [
|
|
5865
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto px-6 py-4 space-y-6 animate-pulse text-theme", children: [
|
|
5861
5866
|
/* @__PURE__ */ jsx(Skeleton, { className: "h-8 w-3/4" }),
|
|
5862
5867
|
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4", children: [
|
|
5863
5868
|
/* @__PURE__ */ jsx(Skeleton, { className: "h-10 w-full" }),
|
|
@@ -5937,9 +5942,13 @@ function TaskDetailSheet({
|
|
|
5937
5942
|
side: "right",
|
|
5938
5943
|
className: cn(
|
|
5939
5944
|
"w-full sm:max-w-lg lg:max-w-xl",
|
|
5940
|
-
"border-l border-theme-subtle
|
|
5945
|
+
"border-l border-theme-subtle",
|
|
5941
5946
|
"flex flex-col p-0"
|
|
5942
5947
|
),
|
|
5948
|
+
style: {
|
|
5949
|
+
background: "var(--org-bg-elevated, #110E22)",
|
|
5950
|
+
color: "var(--org-text, #F0ECF9)"
|
|
5951
|
+
},
|
|
5943
5952
|
children: [
|
|
5944
5953
|
/* @__PURE__ */ jsx(SheetHeader, { className: "px-6 py-4 border-b border-theme-subtle", children: /* @__PURE__ */ jsx(SheetTitle, { className: "text-theme", children: task?.number ? `Task #${task.number}` : "Detalhes da Tarefa" }) }),
|
|
5945
5954
|
content
|
|
@@ -5952,9 +5961,13 @@ function TaskDetailSheet({
|
|
|
5952
5961
|
{
|
|
5953
5962
|
className: cn(
|
|
5954
5963
|
"h-[100dvh] max-h-[100dvh]",
|
|
5955
|
-
"border-none
|
|
5964
|
+
"border-none rounded-none",
|
|
5956
5965
|
"flex flex-col"
|
|
5957
5966
|
),
|
|
5967
|
+
style: {
|
|
5968
|
+
background: "var(--org-bg-elevated, #110E22)",
|
|
5969
|
+
color: "var(--org-text, #F0ECF9)"
|
|
5970
|
+
},
|
|
5958
5971
|
children: [
|
|
5959
5972
|
/* @__PURE__ */ jsx(DrawerHeader, { className: "px-4 py-3 border-b border-theme-subtle flex-shrink-0", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
5960
5973
|
/* @__PURE__ */ jsx(DrawerTitle, { className: "text-theme", children: task?.number ? `Task #${task.number}` : "Detalhes" }),
|
|
@@ -6024,8 +6037,13 @@ function TaskCard({
|
|
|
6024
6037
|
onUpdate,
|
|
6025
6038
|
onAddLabel,
|
|
6026
6039
|
onRemoveLabel,
|
|
6040
|
+
onToggleLabel,
|
|
6041
|
+
onCreateLabel,
|
|
6042
|
+
availableLabels,
|
|
6027
6043
|
onAddAssignee,
|
|
6028
6044
|
onRemoveAssignee,
|
|
6045
|
+
onToggleAssignee,
|
|
6046
|
+
availableUsers,
|
|
6029
6047
|
onAddSubtask,
|
|
6030
6048
|
onToggleSubtask,
|
|
6031
6049
|
onDeleteSubtask,
|
|
@@ -6076,9 +6094,9 @@ function TaskCard({
|
|
|
6076
6094
|
className: cn(
|
|
6077
6095
|
// Glass geometric style
|
|
6078
6096
|
"group relative flex flex-col gap-2 p-3 cursor-pointer",
|
|
6079
|
-
"bg-
|
|
6097
|
+
"bg-theme-subtle-10 backdrop-blur-md border border-theme-subtle",
|
|
6080
6098
|
"transition-all duration-[400ms] ease-[cubic-bezier(0.25,1,0.5,1)] rounded-xl",
|
|
6081
|
-
"hover:border-
|
|
6099
|
+
"hover:border-theme-medium",
|
|
6082
6100
|
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50",
|
|
6083
6101
|
// State modifiers
|
|
6084
6102
|
isDragging && "opacity-50 scale-95",
|
|
@@ -6215,8 +6233,13 @@ function TaskCard({
|
|
|
6215
6233
|
onUpdate,
|
|
6216
6234
|
onAddLabel,
|
|
6217
6235
|
onRemoveLabel,
|
|
6236
|
+
onToggleLabel,
|
|
6237
|
+
onCreateLabel,
|
|
6238
|
+
availableLabels,
|
|
6218
6239
|
onAddAssignee,
|
|
6219
6240
|
onRemoveAssignee,
|
|
6241
|
+
onToggleAssignee,
|
|
6242
|
+
availableUsers,
|
|
6220
6243
|
onAddSubtask,
|
|
6221
6244
|
onToggleSubtask,
|
|
6222
6245
|
onDeleteSubtask,
|