@layers-app/shared 0.0.45 → 0.1.1

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,297 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useTranslation } from "react-i18next";
3
+ import { Flex, Text, ActionIcon, Divider, Box, Avatar, Skeleton } from "@mantine/core";
4
+ import "react";
5
+ import { IconCheck, IconBug, IconSquareRotated, IconPlus, IconCalendarEvent, IconEqual } from "@tabler/icons-react";
6
+ import "react-router-dom";
7
+ import { randomId } from "@mantine/hooks";
8
+ import "@tanstack/react-query";
9
+ import "query-string";
10
+ import "@mantine/form";
11
+ import "@mantine/dropzone";
12
+ import "@mantine/notifications";
13
+ import "lodash-es";
14
+ import { u as useOnboardingState, S as StatusBadge } from "./index-DpUvUOm1.js";
15
+ import "react-dom";
16
+ import "draggable-ui";
17
+ import "@mantine/modals";
18
+ import "i18next";
19
+ import "framer-motion";
20
+ import "@mantine/dates";
21
+ const column = "_column_10zam_1";
22
+ const card = "_card_10zam_6";
23
+ const styles = {
24
+ column,
25
+ card
26
+ };
27
+ const KanbanLayout = () => {
28
+ const { tasksList, statusesList } = useOnboardingState();
29
+ const today = /* @__PURE__ */ new Date();
30
+ const getPlusDays = (prop) => {
31
+ const plusThreeDays = new Date(today);
32
+ plusThreeDays.setDate(plusThreeDays.getDate() + (3 + prop));
33
+ return plusThreeDays.toDateString();
34
+ };
35
+ const { t } = useTranslation("onboarding");
36
+ const defaultTypes = [
37
+ {
38
+ id: randomId(),
39
+ color: "blue",
40
+ icon: IconCheck,
41
+ name: t("selectCategory.options.task"),
42
+ type: "task",
43
+ order: 1
44
+ },
45
+ {
46
+ id: randomId(),
47
+ color: "orange",
48
+ icon: IconBug,
49
+ name: t("selectCategory.options.bug"),
50
+ type: "bug",
51
+ order: 2
52
+ },
53
+ {
54
+ id: randomId(),
55
+ color: "grape",
56
+ icon: IconSquareRotated,
57
+ name: t("selectCategory.options.milestone"),
58
+ type: "milestone",
59
+ order: 3
60
+ }
61
+ ];
62
+ const getCurrentType = (type) => {
63
+ const current = defaultTypes.find((t2) => t2.type === type);
64
+ if (!current) return null;
65
+ return /* @__PURE__ */ jsx(ActionIcon, { size: 16, variant: "filled", color: current.color, children: /* @__PURE__ */ jsx(current.icon, {}) });
66
+ };
67
+ return /* @__PURE__ */ jsxs(Flex, { gap: 13, align: "start", w: "100%", children: [
68
+ /* @__PURE__ */ jsxs(
69
+ Flex,
70
+ {
71
+ gap: 11,
72
+ p: 7,
73
+ direction: "column",
74
+ w: 340,
75
+ className: styles.column,
76
+ children: [
77
+ /* @__PURE__ */ jsxs(Flex, { w: "100%", justify: "space-between", children: [
78
+ /* @__PURE__ */ jsxs(Flex, { gap: 14, align: "center", children: [
79
+ /* @__PURE__ */ jsx(StatusBadge, { color: "#228BE6", title: statusesList[0] }),
80
+ /* @__PURE__ */ jsxs(Text, { c: "#868E96", fz: 14, children: [
81
+ "(",
82
+ t("defineStatuses.tasks"),
83
+ ": ",
84
+ tasksList.length,
85
+ ")"
86
+ ] })
87
+ ] }),
88
+ /* @__PURE__ */ jsx(ActionIcon, { variant: "subtle", size: 18, children: /* @__PURE__ */ jsx(IconPlus, {}) })
89
+ ] }),
90
+ /* @__PURE__ */ jsx(Divider, { w: "100%" }),
91
+ tasksList.map((task, idx) => /* @__PURE__ */ jsxs(
92
+ Flex,
93
+ {
94
+ gap: 0,
95
+ direction: "column",
96
+ align: "start",
97
+ justify: "space-between",
98
+ w: "100%",
99
+ h: 105,
100
+ className: styles.card,
101
+ px: 14,
102
+ py: 9,
103
+ children: [
104
+ /* @__PURE__ */ jsxs(Box, { children: [
105
+ /* @__PURE__ */ jsx(Text, { fz: 18, fw: 400, children: task.title }),
106
+ /* @__PURE__ */ jsxs(Flex, { align: "center", children: [
107
+ /* @__PURE__ */ jsx(IconCalendarEvent, { color: "#495057", size: 13 }),
108
+ /* @__PURE__ */ jsx(Text, { fz: 16, c: "#495057", children: getPlusDays(idx) })
109
+ ] })
110
+ ] }),
111
+ /* @__PURE__ */ jsxs(Flex, { justify: "space-between", w: "100%", children: [
112
+ /* @__PURE__ */ jsxs(Flex, { children: [
113
+ getCurrentType(task.type),
114
+ /* @__PURE__ */ jsxs(Text, { fz: 13, children: [
115
+ "DEMO-",
116
+ idx + 1
117
+ ] })
118
+ ] }),
119
+ /* @__PURE__ */ jsxs(Flex, { children: [
120
+ /* @__PURE__ */ jsx(IconEqual, { color: "#F59F00", size: 16 }),
121
+ /* @__PURE__ */ jsx(
122
+ Avatar,
123
+ {
124
+ variant: "filled",
125
+ color: "#228BE6",
126
+ radius: "xl",
127
+ size: 24
128
+ }
129
+ )
130
+ ] })
131
+ ] })
132
+ ]
133
+ },
134
+ task.id
135
+ ))
136
+ ]
137
+ }
138
+ ),
139
+ /* @__PURE__ */ jsxs(
140
+ Flex,
141
+ {
142
+ gap: 11,
143
+ p: 7,
144
+ direction: "column",
145
+ w: 340,
146
+ className: styles.column,
147
+ children: [
148
+ /* @__PURE__ */ jsxs(Flex, { w: "100%", justify: "space-between", children: [
149
+ /* @__PURE__ */ jsxs(Flex, { gap: 14, align: "center", children: [
150
+ /* @__PURE__ */ jsx(StatusBadge, { color: "#12B886", title: statusesList[1] }),
151
+ /* @__PURE__ */ jsxs(Text, { c: "#868E96", fz: 14, children: [
152
+ "(",
153
+ t("defineStatuses.tasks"),
154
+ ": 2)"
155
+ ] })
156
+ ] }),
157
+ /* @__PURE__ */ jsx(ActionIcon, { variant: "subtle", size: 18, children: /* @__PURE__ */ jsx(IconPlus, {}) })
158
+ ] }),
159
+ /* @__PURE__ */ jsx(Divider, { w: "100%" }),
160
+ Array(2).fill(0).map((_, idx) => /* @__PURE__ */ jsxs(
161
+ Flex,
162
+ {
163
+ gap: 0,
164
+ direction: "column",
165
+ align: "start",
166
+ justify: "space-between",
167
+ w: "100%",
168
+ h: 105,
169
+ className: styles.card,
170
+ px: 14,
171
+ py: 9,
172
+ children: [
173
+ /* @__PURE__ */ jsxs(Box, { children: [
174
+ /* @__PURE__ */ jsx(
175
+ Skeleton,
176
+ {
177
+ animate: false,
178
+ mb: 15,
179
+ w: idx === 0 ? 128 : 172,
180
+ h: 18
181
+ }
182
+ ),
183
+ /* @__PURE__ */ jsxs(Flex, { align: "center", children: [
184
+ /* @__PURE__ */ jsx(IconCalendarEvent, { color: "#495057", size: 13 }),
185
+ /* @__PURE__ */ jsx(Skeleton, { animate: false, w: idx === 0 ? 52 : 63, h: 12 })
186
+ ] })
187
+ ] }),
188
+ /* @__PURE__ */ jsxs(Flex, { justify: "space-between", w: "100%", children: [
189
+ /* @__PURE__ */ jsxs(Flex, { children: [
190
+ /* @__PURE__ */ jsx(ActionIcon, { size: 16, variant: "filled", color: "#ADB5BD", children: /* @__PURE__ */ jsx(IconCheck, {}) }),
191
+ /* @__PURE__ */ jsxs(Text, { c: "#ADB5BD", fz: 13, children: [
192
+ "DEMO-",
193
+ idx + 4
194
+ ] })
195
+ ] }),
196
+ /* @__PURE__ */ jsxs(Flex, { children: [
197
+ /* @__PURE__ */ jsx(IconEqual, { color: "#F59F00", size: 16 }),
198
+ /* @__PURE__ */ jsx(
199
+ Avatar,
200
+ {
201
+ variant: "filled",
202
+ color: "#228BE6",
203
+ radius: "xl",
204
+ size: 24
205
+ }
206
+ )
207
+ ] })
208
+ ] })
209
+ ]
210
+ },
211
+ idx
212
+ ))
213
+ ]
214
+ }
215
+ ),
216
+ /* @__PURE__ */ jsxs(
217
+ Flex,
218
+ {
219
+ gap: 11,
220
+ p: 7,
221
+ direction: "column",
222
+ w: 340,
223
+ className: styles.column,
224
+ children: [
225
+ /* @__PURE__ */ jsxs(Flex, { w: "100%", justify: "space-between", children: [
226
+ /* @__PURE__ */ jsxs(Flex, { gap: 14, align: "center", children: [
227
+ /* @__PURE__ */ jsx(StatusBadge, { color: "#FA5252", title: statusesList[2] }),
228
+ /* @__PURE__ */ jsxs(Text, { c: "#868E96", fz: 14, children: [
229
+ "(",
230
+ t("defineStatuses.tasks"),
231
+ ": 2)"
232
+ ] })
233
+ ] }),
234
+ /* @__PURE__ */ jsx(ActionIcon, { variant: "subtle", size: 18, children: /* @__PURE__ */ jsx(IconPlus, {}) })
235
+ ] }),
236
+ /* @__PURE__ */ jsx(Divider, { w: "100%" }),
237
+ Array(2).fill(0).map((_, idx) => /* @__PURE__ */ jsxs(
238
+ Flex,
239
+ {
240
+ gap: 0,
241
+ direction: "column",
242
+ align: "start",
243
+ justify: "space-between",
244
+ w: "100%",
245
+ h: 105,
246
+ className: styles.card,
247
+ px: 14,
248
+ py: 9,
249
+ children: [
250
+ /* @__PURE__ */ jsxs(Box, { children: [
251
+ /* @__PURE__ */ jsx(
252
+ Skeleton,
253
+ {
254
+ animate: false,
255
+ mb: 15,
256
+ w: idx === 0 ? 266 : 150,
257
+ h: 18
258
+ }
259
+ ),
260
+ /* @__PURE__ */ jsxs(Flex, { align: "center", children: [
261
+ /* @__PURE__ */ jsx(IconCalendarEvent, { color: "#495057", size: 13 }),
262
+ /* @__PURE__ */ jsx(Skeleton, { animate: false, w: idx === 0 ? 72 : 46, h: 12 })
263
+ ] })
264
+ ] }),
265
+ /* @__PURE__ */ jsxs(Flex, { justify: "space-between", w: "100%", children: [
266
+ /* @__PURE__ */ jsxs(Flex, { children: [
267
+ /* @__PURE__ */ jsx(ActionIcon, { size: 16, variant: "filled", color: "#ADB5BD", children: /* @__PURE__ */ jsx(IconCheck, {}) }),
268
+ /* @__PURE__ */ jsxs(Text, { c: "#ADB5BD", fz: 13, children: [
269
+ "DEMO-",
270
+ idx + 6
271
+ ] })
272
+ ] }),
273
+ /* @__PURE__ */ jsxs(Flex, { children: [
274
+ /* @__PURE__ */ jsx(IconEqual, { color: "#F59F00", size: 16 }),
275
+ /* @__PURE__ */ jsx(
276
+ Avatar,
277
+ {
278
+ variant: "filled",
279
+ color: "#228BE6",
280
+ radius: "xl",
281
+ size: 24
282
+ }
283
+ )
284
+ ] })
285
+ ] })
286
+ ]
287
+ },
288
+ idx
289
+ ))
290
+ ]
291
+ }
292
+ )
293
+ ] });
294
+ };
295
+ export {
296
+ KanbanLayout as default
297
+ };
@@ -8,10 +8,15 @@ export type ProjectIconProps = {
8
8
  fallbackColorById?: string;
9
9
  initials?: boolean;
10
10
  } & Omit<AvatarProps, 'color' | 'name'>;
11
+ export declare enum IconType {
12
+ OUTLINED = "o",
13
+ FILLED = "f"
14
+ }
11
15
  type IconData = {
12
16
  icon: string;
13
17
  color: string;
14
18
  emoji: string;
19
+ type: IconType;
15
20
  };
16
21
  export declare namespace IconEntity {
17
22
  const parse: (value?: string | null) => IconData | null;