@26lights/orcha 0.42.33 → 0.42.35

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 (29) hide show
  1. package/dist/locales/en/translation.json +14 -1
  2. package/dist/orcha.cjs.js +48 -2
  3. package/dist/orcha.css +1 -1
  4. package/dist/orcha.es.js +9914 -7144
  5. package/dist/orcha.umd.js +49 -3
  6. package/dist/src/components/ActivityChecklistTab.vue.d.ts +59 -0
  7. package/dist/src/components/ActivityCommentsTab.vue.d.ts +55 -0
  8. package/dist/src/components/ActivityDescriptionTab.vue.d.ts +39 -0
  9. package/dist/src/components/ActivityMetadataSidebar.vue.d.ts +89 -0
  10. package/dist/src/components/AoActivityDetails.vue.d.ts +21 -15
  11. package/dist/src/components/AoActivityDetailsComments.vue.d.ts +4 -0
  12. package/dist/src/components/AoCardFeed.vue.d.ts +9 -1
  13. package/dist/src/components/AoCardProjectItemMilestone.vue.d.ts +13 -1
  14. package/dist/src/components/AoCardProjectItemPhase.vue.d.ts +13 -1
  15. package/dist/src/components/AoComment.vue.d.ts +8 -0
  16. package/dist/src/components/AoCondensedCardProjectItemPhase.vue.d.ts +13 -1
  17. package/dist/src/components/AoListKanban.vue.d.ts +4 -1
  18. package/dist/src/components/AoModal.vue.d.ts +3 -3
  19. package/dist/src/components/AoMultiselect.vue.d.ts +2 -18
  20. package/dist/src/components/AoProjectPhase.vue.d.ts +13 -1
  21. package/dist/src/components/AoProjectPhases.vue.d.ts +13 -1
  22. package/dist/src/helpers.d.ts +32 -2
  23. package/dist/src/main.d.ts +2 -0
  24. package/dist/src/types/index.d.ts +17 -0
  25. package/dist/src/views/AoFeed.vue.d.ts +20 -11
  26. package/dist/src/views/AoProjectOverviewActivityDetails.vue.d.ts +9 -3
  27. package/dist/src/views/AoProjectOverviewMilestoneDetails.vue.d.ts +9 -1
  28. package/dist/src/views/AoProjectOverviewProject.vue.d.ts +9 -3
  29. package/package.json +5 -2
@@ -1,4 +1,4 @@
1
- import { type ActivityStatus, type AddMilestonePayload, type AddPhasePayload, type Phase, type UpdateMilestonePayload, type UpdatePhasePayload, type User } from '../types';
1
+ import { type ActivityStatus, type AddMilestonePayload, type AddPhasePayload, type Phase, type UpdateMilestonePayload, type UpdatePhasePayload, type User, type TimeTracking } from '../types';
2
2
  declare const _default: import("vue").DefineComponent<{
3
3
  phases: {
4
4
  type: import("vue").PropType<Phase[]>;
@@ -18,6 +18,12 @@ declare const _default: import("vue").DefineComponent<{
18
18
  readonly: {
19
19
  type: import("vue").PropType<boolean>;
20
20
  };
21
+ timeTrackingData: {
22
+ type: import("vue").PropType<Record<string, TimeTracking>>;
23
+ };
24
+ estimationUnit: {
25
+ type: import("vue").PropType<string>;
26
+ };
21
27
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
22
28
  addMilestone: (payload: AddMilestonePayload) => void;
23
29
  updateMilestone: (payload: UpdateMilestonePayload) => void;
@@ -54,6 +60,12 @@ declare const _default: import("vue").DefineComponent<{
54
60
  readonly: {
55
61
  type: import("vue").PropType<boolean>;
56
62
  };
63
+ timeTrackingData: {
64
+ type: import("vue").PropType<Record<string, TimeTracking>>;
65
+ };
66
+ estimationUnit: {
67
+ type: import("vue").PropType<string>;
68
+ };
57
69
  }>> & {
58
70
  onAddMilestone?: ((payload: AddMilestonePayload) => any) | undefined;
59
71
  onUpdateMilestone?: ((payload: UpdateMilestonePayload) => any) | undefined;
@@ -1,5 +1,19 @@
1
- import { type Activity, type ActivityStatus, type Milestone, MilestoneStatus, Ordered, type Phase, User } from './types';
2
- import { DraggableChangeEvent } from './types/utils';
1
+ import { type Activity, type ActivityStatus, type Milestone, type MilestoneStatus, type Ordered, type Phase, type User, type Id } from './types';
2
+ import { type DraggableChangeEvent } from './types/utils';
3
+ import { type Ref } from 'vue';
4
+ /**
5
+ * Formats minutes into a human-readable time format
6
+ * @param minutes - Time in minutes
7
+ * @param unit - string ('hours' or 'days')
8
+ * @returns Formatted string like "30m", "1h 15m", "4h", "1d 2h", etc.
9
+ */
10
+ export declare function formatTimeSpent(minutes: number, unit?: string): string;
11
+ /**
12
+ * Gets the unit suffix for display ('h' for hours, 'd' for days)
13
+ * @param unit - string ('hours' or 'days')
14
+ * @returns Unit abbreviation
15
+ */
16
+ export declare function getUnitSuffix(unit?: string): string;
3
17
  export declare function sumPhaseActivitiesAmount(milestones: Milestone[]): number;
4
18
  export declare function sumTemplateMilestonesAmount(phases: Phase[]): number;
5
19
  export declare function sumTemplateActivitiesAmount(phases: Phase[]): number;
@@ -14,3 +28,19 @@ export declare function milestoneWithStatus(milestone: Milestone, closedStatus:
14
28
  };
15
29
  export declare const getUserName: (user: User | undefined | null) => string;
16
30
  export declare function lightenColor(color: string, alpha?: number): string;
31
+ export declare function useMentions(textareaRef: Ref<HTMLTextAreaElement | null | undefined>, messageModel: Ref<string>, allUsers: Ref<User[]>): {
32
+ showMentionList: Ref<boolean>;
33
+ mentionListPosition: Ref<{
34
+ top: number;
35
+ left: number;
36
+ }>;
37
+ filteredUsers: import("vue").ComputedRef<{
38
+ id: string;
39
+ name: string;
40
+ }[]>;
41
+ mentionQuery: Ref<string>;
42
+ handleInput: (event: Event) => void;
43
+ handleKeydown: (event: KeyboardEvent) => void;
44
+ selectUserMention: (name: string) => void;
45
+ getMentionedUserIds: (message: string) => Id[];
46
+ };
@@ -9,5 +9,7 @@ export { default as AoInputField } from './components/AoInputField.vue';
9
9
  export { default as AoCheckboxField } from './components/AoCheckboxField.vue';
10
10
  export { default as AoMultiselect } from './components/AoMultiselect.vue';
11
11
  export { default as AoAvatar } from './components/AoAvatar.vue';
12
+ export { default as AoColorPicker } from './components/AoColorPicker.vue';
13
+ export { default as AoTabBar } from './components/AoTabBar.vue';
12
14
  export { default as AoCardFeed } from './components/AoCardFeed.vue';
13
15
  export { default as AoProjectPhases } from './components/AoProjectPhases.vue';
@@ -273,6 +273,13 @@ export interface AddSubtaskPayload {
273
273
  activityId: Id;
274
274
  name: string;
275
275
  }
276
+ export interface StartTimerPayload {
277
+ activityId: Id;
278
+ activityName: string;
279
+ project?: string;
280
+ projectId?: string;
281
+ activitySlug?: string;
282
+ }
276
283
  export interface UpdateActivityPayload {
277
284
  id: Id;
278
285
  name?: string;
@@ -363,7 +370,12 @@ export type Project = {
363
370
  name?: string;
364
371
  phases?: Phase[];
365
372
  architectureImage?: Image;
373
+ estimationUnit: EstimationUnit;
366
374
  };
375
+ export declare enum EstimationUnit {
376
+ HOURS = "hours",
377
+ DAYS = "days"
378
+ }
367
379
  export type Image = {
368
380
  url: string;
369
381
  name: string;
@@ -445,10 +457,12 @@ export type AddCommentPayload = {
445
457
  activityId: Id;
446
458
  authorId: Id;
447
459
  message: string;
460
+ mentionedUserIds: Id[];
448
461
  };
449
462
  export type UpdateCommentPayload = {
450
463
  id: Id;
451
464
  message: string;
465
+ mentionedUserIds: Id[];
452
466
  };
453
467
  export type RemoveCommentPayload = {
454
468
  id: Id;
@@ -462,3 +476,6 @@ export type SaveTemplatePayload = {
462
476
  rank: Id;
463
477
  phaseIds: Id[];
464
478
  };
479
+ export type TimeTracking = {
480
+ timeSpent: number;
481
+ };
@@ -1,4 +1,5 @@
1
- import { type Activity, ActivityStatus, type ActivityType, type AddActivityFeedPayload, type AddCommentPayload, type AddFilesPayload, type AddSubtaskPayload, type ChangeFeedActivitiesPayload, type FeedFilters, type Project, type RemoveCommentPayload, type RemoveFilePayload, type Subtask, type UpdateActivityPayload, type UpdateCommentPayload, type UpdateSubtaskFieldPayload, type User } from '../types';
1
+ import type { TimeTracking } from '../types';
2
+ import { type Activity, type ActivityStatus, type ActivityType, type AddActivityFeedPayload, type AddCommentPayload, type AddFilesPayload, type AddSubtaskPayload, type ChangeFeedActivitiesPayload, type FeedFilters, type Project, type RemoveCommentPayload, type RemoveFilePayload, type StartTimerPayload, type Subtask, type UpdateActivityPayload, type UpdateCommentPayload, type UpdateSubtaskFieldPayload, type User } from '../types';
2
3
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
3
4
  filters: {
4
5
  type: import("vue").PropType<FeedFilters>;
@@ -31,17 +32,20 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
31
32
  type: import("vue").PropType<boolean>;
32
33
  required: true;
33
34
  };
35
+ statuses: {
36
+ type: import("vue").PropType<ActivityStatus[]>;
37
+ required: true;
38
+ };
34
39
  activityTypes: {
35
40
  type: import("vue").PropType<ActivityType[]>;
36
41
  };
42
+ timeTrackingData: {
43
+ type: import("vue").PropType<Record<string, TimeTracking>>;
44
+ };
37
45
  isTaskCheckable: {
38
46
  type: import("vue").PropType<(task: Subtask) => boolean>;
39
47
  default: undefined;
40
48
  };
41
- statuses: {
42
- type: import("vue").PropType<ActivityStatus[]>;
43
- required: true;
44
- };
45
49
  attachmentEnabled: {
46
50
  type: import("vue").PropType<boolean>;
47
51
  required: true;
@@ -95,6 +99,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
95
99
  updateComment: (payload: UpdateCommentPayload) => void;
96
100
  removeComment: (payload: RemoveCommentPayload) => void;
97
101
  toast: (message: string, type: "success" | "error") => void;
102
+ startTimer: (payload: StartTimerPayload) => void;
98
103
  }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
99
104
  filters: {
100
105
  type: import("vue").PropType<FeedFilters>;
@@ -127,17 +132,20 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
127
132
  type: import("vue").PropType<boolean>;
128
133
  required: true;
129
134
  };
135
+ statuses: {
136
+ type: import("vue").PropType<ActivityStatus[]>;
137
+ required: true;
138
+ };
130
139
  activityTypes: {
131
140
  type: import("vue").PropType<ActivityType[]>;
132
141
  };
142
+ timeTrackingData: {
143
+ type: import("vue").PropType<Record<string, TimeTracking>>;
144
+ };
133
145
  isTaskCheckable: {
134
146
  type: import("vue").PropType<(task: Subtask) => boolean>;
135
147
  default: undefined;
136
148
  };
137
- statuses: {
138
- type: import("vue").PropType<ActivityStatus[]>;
139
- required: true;
140
- };
141
149
  attachmentEnabled: {
142
150
  type: import("vue").PropType<boolean>;
143
151
  required: true;
@@ -164,6 +172,7 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
164
172
  required: true;
165
173
  };
166
174
  }>> & {
175
+ onStartTimer?: ((payload: StartTimerPayload) => any) | undefined;
167
176
  onSelectActivity?: ((activityId: string | null, activitySlug: string | null) => any) | undefined;
168
177
  onArchiveActivity?: ((payload: {
169
178
  id: string;
@@ -171,16 +180,16 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
171
180
  onUnarchiveActivity?: ((payload: {
172
181
  id: string;
173
182
  }) => any) | undefined;
183
+ onRemoveFile?: ((payload: RemoveFilePayload) => any) | undefined;
184
+ onAddFiles?: ((payload: AddFilesPayload) => any) | undefined;
174
185
  onUpdateComment?: ((payload: UpdateCommentPayload) => any) | undefined;
175
186
  onRemoveComment?: ((payload: RemoveCommentPayload) => any) | undefined;
176
187
  onDeleteSubtask?: ((payload: {
177
188
  id: string;
178
189
  }) => any) | undefined;
179
- onRemoveFile?: ((payload: RemoveFilePayload) => any) | undefined;
180
190
  "onUpdate:activity"?: ((payload: UpdateActivityPayload) => any) | undefined;
181
191
  onAddSubtask?: ((payload: AddSubtaskPayload) => any) | undefined;
182
192
  onUpdateSubtask?: ((payload: UpdateSubtaskFieldPayload) => any) | undefined;
183
- onAddFiles?: ((payload: AddFilesPayload) => any) | undefined;
184
193
  onAddComment?: ((payload: AddCommentPayload) => any) | undefined;
185
194
  onToast?: ((message: string, type: "success" | "error") => any) | undefined;
186
195
  onAddActivity?: ((payload: AddActivityFeedPayload) => any) | undefined;
@@ -1,4 +1,4 @@
1
- import { type Activity, type UpdateActivityPayload, type AddSubtaskPayload, type AddCommentPayload, type UpdateCommentPayload, type RemoveCommentPayload, type Subtask, type ActivityStatus, type Phase, type User, type ActivityType, type UpdateSubtaskFieldPayload, type AddFilesPayload, type RemoveFilePayload, type Project } from '../types';
1
+ import { type Activity, type UpdateActivityPayload, type AddSubtaskPayload, type AddCommentPayload, type UpdateCommentPayload, type RemoveCommentPayload, type Subtask, type ActivityStatus, type Phase, type User, type ActivityType, type UpdateSubtaskFieldPayload, type AddFilesPayload, type RemoveFilePayload, type Project, type TimeTracking } from '../types';
2
2
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
3
3
  phaseId: {
4
4
  type: import("vue").PropType<string>;
@@ -50,6 +50,9 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
50
50
  type: import("vue").PropType<boolean>;
51
51
  required: true;
52
52
  };
53
+ timeTrackingData: {
54
+ type: import("vue").PropType<Record<string, TimeTracking>>;
55
+ };
53
56
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
54
57
  'update:activity': (payload: UpdateActivityPayload) => void;
55
58
  addSubtask: (payload: AddSubtaskPayload) => void;
@@ -113,17 +116,20 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
113
116
  type: import("vue").PropType<boolean>;
114
117
  required: true;
115
118
  };
119
+ timeTrackingData: {
120
+ type: import("vue").PropType<Record<string, TimeTracking>>;
121
+ };
116
122
  }>> & {
123
+ onRemoveFile?: ((payload: RemoveFilePayload) => any) | undefined;
124
+ onAddFiles?: ((payload: AddFilesPayload) => any) | undefined;
117
125
  onUpdateComment?: ((payload: UpdateCommentPayload) => any) | undefined;
118
126
  onRemoveComment?: ((payload: RemoveCommentPayload) => any) | undefined;
119
127
  onDeleteSubtask?: ((payload: {
120
128
  id: string;
121
129
  }) => any) | undefined;
122
- onRemoveFile?: ((payload: RemoveFilePayload) => any) | undefined;
123
130
  "onUpdate:activity"?: ((payload: UpdateActivityPayload) => any) | undefined;
124
131
  onAddSubtask?: ((payload: AddSubtaskPayload) => any) | undefined;
125
132
  onUpdateSubtask?: ((payload: UpdateSubtaskFieldPayload) => any) | undefined;
126
- onAddFiles?: ((payload: AddFilesPayload) => any) | undefined;
127
133
  onAddComment?: ((payload: AddCommentPayload) => any) | undefined;
128
134
  }, {}, {}>, {
129
135
  default?(_: {
@@ -1,4 +1,4 @@
1
- import { type ActivityStatus, type AddActivityPayload, type Phase, type UpdateActivityPayload, type UpdateMilestonePayload, type User } from '../types';
1
+ import { type ActivityStatus, type AddActivityPayload, type Phase, type StartTimerPayload, type UpdateActivityPayload, type UpdateMilestonePayload, type User, type TimeTracking } from '../types';
2
2
  declare const _default: import("vue").DefineComponent<{
3
3
  milestoneId: {
4
4
  type: import("vue").PropType<string>;
@@ -26,6 +26,9 @@ declare const _default: import("vue").DefineComponent<{
26
26
  type: import("vue").PropType<ActivityStatus>;
27
27
  required: true;
28
28
  };
29
+ timeTrackingData: {
30
+ type: import("vue").PropType<Record<string, TimeTracking>>;
31
+ };
29
32
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
30
33
  close: (e: Event) => void;
31
34
  addActivity: (args_0: AddActivityPayload) => void;
@@ -37,6 +40,7 @@ declare const _default: import("vue").DefineComponent<{
37
40
  unarchiveActivity: (payload: {
38
41
  id: string;
39
42
  }) => void;
43
+ startTimer: (payload: StartTimerPayload) => void;
40
44
  }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
41
45
  milestoneId: {
42
46
  type: import("vue").PropType<string>;
@@ -64,9 +68,13 @@ declare const _default: import("vue").DefineComponent<{
64
68
  type: import("vue").PropType<ActivityStatus>;
65
69
  required: true;
66
70
  };
71
+ timeTrackingData: {
72
+ type: import("vue").PropType<Record<string, TimeTracking>>;
73
+ };
67
74
  }>> & {
68
75
  onClose?: ((e: Event) => any) | undefined;
69
76
  onUpdateActivity?: ((args_0: UpdateActivityPayload) => any) | undefined;
77
+ onStartTimer?: ((payload: StartTimerPayload) => any) | undefined;
70
78
  onArchiveActivity?: ((payload: {
71
79
  id: string;
72
80
  }) => any) | undefined;
@@ -1,4 +1,4 @@
1
- import { type Project, type User, type AddActivityPayload, type UpdateActivityPayload, type AddSubtaskPayload, type AddFilesPayload, type RemoveFilePayload, type AddCommentPayload, type UpdateCommentPayload, type RemoveCommentPayload, type AddPhasePayload, type AddMilestonePayload, type Phase, type ApplyTemplatePayload, type UpdatePhasePayload, type UpdateMilestonePayload, type Subtask, type ActivityStatus, type UpdateSubtaskFieldPayload, type Activity, type ActivityType, type SaveTemplatePayload } from '../types';
1
+ import { type Project, type User, type AddActivityPayload, type UpdateActivityPayload, type AddSubtaskPayload, type AddFilesPayload, type RemoveFilePayload, type AddCommentPayload, type UpdateCommentPayload, type RemoveCommentPayload, type AddPhasePayload, type AddMilestonePayload, type Phase, type ApplyTemplatePayload, type UpdatePhasePayload, type UpdateMilestonePayload, type Subtask, type ActivityStatus, type UpdateSubtaskFieldPayload, type Activity, type ActivityType, type SaveTemplatePayload, type TimeTracking } from '../types';
2
2
  declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
3
3
  project: {
4
4
  type: import("vue").PropType<Project>;
@@ -50,6 +50,9 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
50
50
  type: import("vue").PropType<boolean>;
51
51
  required: true;
52
52
  };
53
+ timeTrackingData: {
54
+ type: import("vue").PropType<Record<string, TimeTracking>>;
55
+ };
53
56
  }, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
54
57
  addPhase: (payload: AddPhasePayload) => void;
55
58
  updatePhase: (payload: UpdatePhasePayload) => void;
@@ -142,6 +145,9 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
142
145
  type: import("vue").PropType<boolean>;
143
146
  required: true;
144
147
  };
148
+ timeTrackingData: {
149
+ type: import("vue").PropType<Record<string, TimeTracking>>;
150
+ };
145
151
  }>> & {
146
152
  onArchiveActivity?: ((payload: {
147
153
  id: string;
@@ -149,16 +155,16 @@ declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<{
149
155
  onUnarchiveActivity?: ((payload: {
150
156
  id: string;
151
157
  }) => any) | undefined;
158
+ onRemoveFile?: ((payload: RemoveFilePayload) => any) | undefined;
159
+ onAddFiles?: ((payload: AddFilesPayload) => any) | undefined;
152
160
  onUpdateComment?: ((payload: UpdateCommentPayload) => any) | undefined;
153
161
  onRemoveComment?: ((payload: RemoveCommentPayload) => any) | undefined;
154
162
  onDeleteSubtask?: ((payload: {
155
163
  id: string;
156
164
  }) => any) | undefined;
157
- onRemoveFile?: ((payload: RemoveFilePayload) => any) | undefined;
158
165
  "onUpdate:activity"?: ((payload: UpdateActivityPayload) => any) | undefined;
159
166
  onAddSubtask?: ((payload: AddSubtaskPayload) => any) | undefined;
160
167
  onUpdateSubtask?: ((payload: UpdateSubtaskFieldPayload) => any) | undefined;
161
- onAddFiles?: ((payload: AddFilesPayload) => any) | undefined;
162
168
  onAddComment?: ((payload: AddCommentPayload) => any) | undefined;
163
169
  onAddMilestone?: ((payload: AddMilestonePayload) => any) | undefined;
164
170
  onUpdateMilestone?: ((payload: UpdateMilestonePayload) => any) | undefined;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "type": "module",
5
5
  "license": "CC-BY-NC-ND-4.0",
6
6
  "author": "26lights <dev@26lights.com> (https://www.26lights.com)",
7
- "version": "0.42.33",
7
+ "version": "0.42.35",
8
8
  "workspaces": [
9
9
  "packages/*"
10
10
  ],
@@ -28,21 +28,24 @@
28
28
  "vuedraggable": "~4.1.0"
29
29
  },
30
30
  "dependencies": {
31
- "@26lights/orcha": "^0.42.33",
31
+ "@26lights/orcha": "^2.0.3",
32
32
  "@floating-ui/dom": "^1.5.3",
33
33
  "@vueform/multiselect": "^2.6.6",
34
34
  "@vueuse/core": "^10.8.0",
35
35
  "date-fns": "^2.30.0",
36
+ "dompurify": "^3.0.6",
36
37
  "i18next": "^23.2.8",
37
38
  "i18next-http-backend": "^2.2.1",
38
39
  "i18next-vue": "^2.2.1",
39
40
  "lexorank": "^1.0.5",
41
+ "marked": "^9.1.0",
40
42
  "vue-color-kit": "^1.0.6"
41
43
  },
42
44
  "devDependencies": {
43
45
  "@histoire/plugin-vue": "^0.17.1",
44
46
  "@rushstack/eslint-patch": "^1.3.3",
45
47
  "@tsconfig/node18": "^2.0.1",
48
+ "@types/dompurify": "^3.0.4",
46
49
  "@types/eslint": "^8.44.2",
47
50
  "@types/jsdom": "^21.1.1",
48
51
  "@types/node": "^18.16.17",