@chaibuilder/sdk 0.1.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.
Files changed (80) hide show
  1. package/README.md +41 -0
  2. package/dist/AddBlocks-04c49399.js +258 -0
  3. package/dist/AddBlocks-c27c81fa.cjs +3 -0
  4. package/dist/BrandingOptions-055cf22a.js +157 -0
  5. package/dist/BrandingOptions-c25f6370.cjs +1 -0
  6. package/dist/CONTROLS-031e1de3.cjs +1 -0
  7. package/dist/CONTROLS-442caee5.js +6 -0
  8. package/dist/CanvasArea-97dfbb52.cjs +60 -0
  9. package/dist/CanvasArea-a7901131.js +1455 -0
  10. package/dist/Class-0801d193.cjs +1 -0
  11. package/dist/Class-e6b07b79.js +1138 -0
  12. package/dist/ImagesPanel-160aa664.cjs +1 -0
  13. package/dist/ImagesPanel-815d5e6f.js +27 -0
  14. package/dist/Layers-3aa6aae7.cjs +1 -0
  15. package/dist/Layers-6f1c162e.js +370 -0
  16. package/dist/MarkAsGlobalBlock-209ddfd5.js +73 -0
  17. package/dist/MarkAsGlobalBlock-536770e7.cjs +1 -0
  18. package/dist/Settings-2b1ff1a3.cjs +1 -0
  19. package/dist/Settings-b1afcefe.js +1845 -0
  20. package/dist/SidePanels-f48777bb.js +144 -0
  21. package/dist/SidePanels-f79dbace.cjs +1 -0
  22. package/dist/Topbar-64729901.js +105 -0
  23. package/dist/Topbar-bff765dc.cjs +1 -0
  24. package/dist/UnsplashImages-04fffeed.cjs +1 -0
  25. package/dist/UnsplashImages-315ce7a8.js +160 -0
  26. package/dist/UploadImages-43c16a2d.cjs +1 -0
  27. package/dist/UploadImages-f317eef0.js +107 -0
  28. package/dist/_commonjsHelpers-5a53b418.cjs +1 -0
  29. package/dist/_commonjsHelpers-d4512b9c.js +6 -0
  30. package/dist/accordion-0afd8143.cjs +1 -0
  31. package/dist/accordion-c0176dc5.js +42 -0
  32. package/dist/context-menu-e1c240ce.js +122 -0
  33. package/dist/context-menu-fec580f2.cjs +1 -0
  34. package/dist/core.cjs +1 -0
  35. package/dist/core.d.ts +353 -0
  36. package/dist/core.js +83 -0
  37. package/dist/dialog-170eaad9.cjs +1 -0
  38. package/dist/dialog-3d4e82ed.js +65 -0
  39. package/dist/dropdown-menu-a9b096f9.cjs +1 -0
  40. package/dist/dropdown-menu-d912a52e.js +223 -0
  41. package/dist/html-to-json-d8ac554d.cjs +1 -0
  42. package/dist/html-to-json-fecbbe16.js +178 -0
  43. package/dist/index-aea5c557.cjs +2 -0
  44. package/dist/index-cdd49c4c.js +2651 -0
  45. package/dist/jsx-runtime-5c3ac4f7.cjs +27 -0
  46. package/dist/jsx-runtime-944c88e2.js +631 -0
  47. package/dist/label-167415e5.cjs +1 -0
  48. package/dist/label-e770a087.js +10 -0
  49. package/dist/lib.cjs +1 -0
  50. package/dist/lib.d.ts +29 -0
  51. package/dist/lib.js +223 -0
  52. package/dist/link-43d13383.cjs +1 -0
  53. package/dist/link-8594fd8f.js +211 -0
  54. package/dist/popover-7cb9079b.cjs +1 -0
  55. package/dist/popover-f7addcf4.js +23 -0
  56. package/dist/render.cjs +2 -0
  57. package/dist/render.d.ts +49 -0
  58. package/dist/render.js +1171 -0
  59. package/dist/scroll-area-088530b9.cjs +1 -0
  60. package/dist/scroll-area-9f64a082.js +30 -0
  61. package/dist/select-0e32300c.cjs +1 -0
  62. package/dist/select-7fddd7c3.js +75 -0
  63. package/dist/separator-a597dba7.cjs +1 -0
  64. package/dist/separator-a80d065b.js +18 -0
  65. package/dist/style.css +6 -0
  66. package/dist/tabs-85caa1e8.js +46 -0
  67. package/dist/tabs-860e37aa.cjs +1 -0
  68. package/dist/textarea-0750bcd2.js +73 -0
  69. package/dist/textarea-a338ede6.cjs +1 -0
  70. package/dist/toggle-00c9d11e.js +30 -0
  71. package/dist/toggle-b90fed97.cjs +1 -0
  72. package/dist/ui.cjs +1 -0
  73. package/dist/ui.d.ts +471 -0
  74. package/dist/ui.js +442 -0
  75. package/dist/useBuilderProp-5e57d0c8.cjs +1 -0
  76. package/dist/useBuilderProp-81a14920.js +238 -0
  77. package/dist/utils-3c452dd0.cjs +1 -0
  78. package/dist/utils-ac68b2c8.js +6 -0
  79. package/dist/vite.svg +1 -0
  80. package/package.json +156 -0
@@ -0,0 +1,238 @@
1
+ import { j as r } from "./jsx-runtime-944c88e2.js";
2
+ import { Slot as j } from "@radix-ui/react-slot";
3
+ import { cva as x } from "class-variance-authority";
4
+ import * as i from "react";
5
+ import { c as n } from "./utils-ac68b2c8.js";
6
+ import * as c from "@radix-ui/react-tooltip";
7
+ import { Cross2Icon as R } from "@radix-ui/react-icons";
8
+ import * as a from "@radix-ui/react-toast";
9
+ import { atom as h, useAtomValue as O } from "jotai";
10
+ import { get as E } from "lodash";
11
+ const T = h(null);
12
+ T.debugLabel = "chaiBuilderPropsAtom";
13
+ const P = h(null);
14
+ P.debugLabel = "apiKeyAtom";
15
+ const D = x(
16
+ "inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",
17
+ {
18
+ variants: {
19
+ variant: {
20
+ default: "bg-primary text-primary-foreground shadow hover:bg-primary/90",
21
+ destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
22
+ outline: "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
23
+ secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
24
+ ghost: "hover:bg-accent hover:text-accent-foreground",
25
+ link: "text-primary underline-offset-4 hover:underline"
26
+ },
27
+ size: {
28
+ default: "h-9 px-4 py-2",
29
+ sm: "h-8 rounded-md px-3 text-xs",
30
+ lg: "h-10 rounded-md px-8",
31
+ icon: "h-9 w-9"
32
+ }
33
+ },
34
+ defaultVariants: {
35
+ variant: "default",
36
+ size: "default"
37
+ }
38
+ }
39
+ ), _ = i.forwardRef(
40
+ ({ className: t, variant: e, size: o, asChild: s = !1, ...d }, p) => {
41
+ const A = s ? j : "button";
42
+ return /* @__PURE__ */ r.jsx(A, { className: n(D({ variant: e, size: o, className: t })), ref: p, ...d });
43
+ }
44
+ );
45
+ _.displayName = "Button";
46
+ const J = c.Portal, W = c.Provider, Z = c.Root, $ = c.Trigger, V = i.forwardRef(({ className: t, sideOffset: e = 4, ...o }, s) => /* @__PURE__ */ r.jsx(
47
+ c.Content,
48
+ {
49
+ ref: s,
50
+ sideOffset: e,
51
+ className: n(
52
+ "z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
53
+ t
54
+ ),
55
+ ...o
56
+ }
57
+ ));
58
+ V.displayName = c.Content.displayName;
59
+ const I = 1, C = 1e6;
60
+ let f = 0;
61
+ function M() {
62
+ return f = (f + 1) % Number.MAX_VALUE, f.toString();
63
+ }
64
+ const v = /* @__PURE__ */ new Map(), g = (t) => {
65
+ if (v.has(t))
66
+ return;
67
+ const e = setTimeout(() => {
68
+ v.delete(t), u({
69
+ type: "REMOVE_TOAST",
70
+ toastId: t
71
+ });
72
+ }, C);
73
+ v.set(t, e);
74
+ }, z = (t, e) => {
75
+ switch (e.type) {
76
+ case "ADD_TOAST":
77
+ return {
78
+ ...t,
79
+ toasts: [e.toast, ...t.toasts].slice(0, I)
80
+ };
81
+ case "UPDATE_TOAST":
82
+ return {
83
+ ...t,
84
+ toasts: t.toasts.map((o) => o.id === e.toast.id ? { ...o, ...e.toast } : o)
85
+ };
86
+ case "DISMISS_TOAST": {
87
+ const { toastId: o } = e;
88
+ return o ? g(o) : t.toasts.forEach((s) => {
89
+ g(s.id);
90
+ }), {
91
+ ...t,
92
+ toasts: t.toasts.map(
93
+ (s) => s.id === o || o === void 0 ? {
94
+ ...s,
95
+ open: !1
96
+ } : s
97
+ )
98
+ };
99
+ }
100
+ case "REMOVE_TOAST":
101
+ return e.toastId === void 0 ? {
102
+ ...t,
103
+ toasts: []
104
+ } : {
105
+ ...t,
106
+ toasts: t.toasts.filter((o) => o.id !== e.toastId)
107
+ };
108
+ }
109
+ }, l = [];
110
+ let m = { toasts: [] };
111
+ function u(t) {
112
+ m = z(m, t), l.forEach((e) => {
113
+ e(m);
114
+ });
115
+ }
116
+ function B({ ...t }) {
117
+ const e = M(), o = (d) => u({
118
+ type: "UPDATE_TOAST",
119
+ toast: { ...d, id: e }
120
+ }), s = () => u({ type: "DISMISS_TOAST", toastId: e });
121
+ return u({
122
+ type: "ADD_TOAST",
123
+ toast: {
124
+ ...t,
125
+ id: e,
126
+ open: !0,
127
+ onOpenChange: (d) => {
128
+ d || s();
129
+ }
130
+ }
131
+ }), {
132
+ id: e,
133
+ dismiss: s,
134
+ update: o
135
+ };
136
+ }
137
+ function k() {
138
+ const [t, e] = i.useState(m);
139
+ return i.useEffect(() => (l.push(e), () => {
140
+ const o = l.indexOf(e);
141
+ o > -1 && l.splice(o, 1);
142
+ }), [t]), {
143
+ ...t,
144
+ toast: B,
145
+ dismiss: (o) => u({ type: "DISMISS_TOAST", toastId: o })
146
+ };
147
+ }
148
+ const L = a.Provider, b = i.forwardRef(({ className: t, ...e }, o) => /* @__PURE__ */ r.jsx(
149
+ a.Viewport,
150
+ {
151
+ ref: o,
152
+ className: n(
153
+ "fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",
154
+ t
155
+ ),
156
+ ...e
157
+ }
158
+ ));
159
+ b.displayName = a.Viewport.displayName;
160
+ const U = x(
161
+ "group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",
162
+ {
163
+ variants: {
164
+ variant: {
165
+ default: "border bg-background",
166
+ destructive: "destructive group border-destructive bg-destructive text-destructive-foreground"
167
+ }
168
+ },
169
+ defaultVariants: {
170
+ variant: "default"
171
+ }
172
+ }
173
+ ), y = i.forwardRef(({ className: t, variant: e, ...o }, s) => /* @__PURE__ */ r.jsx(a.Root, { ref: s, className: n(U({ variant: e }), t), ...o }));
174
+ y.displayName = a.Root.displayName;
175
+ const K = i.forwardRef(({ className: t, ...e }, o) => /* @__PURE__ */ r.jsx(
176
+ a.Action,
177
+ {
178
+ ref: o,
179
+ className: n(
180
+ "inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",
181
+ t
182
+ ),
183
+ ...e
184
+ }
185
+ ));
186
+ K.displayName = a.Action.displayName;
187
+ const w = i.forwardRef(({ className: t, ...e }, o) => /* @__PURE__ */ r.jsx(
188
+ a.Close,
189
+ {
190
+ ref: o,
191
+ className: n(
192
+ "absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",
193
+ t
194
+ ),
195
+ "toast-close": "",
196
+ ...e,
197
+ children: /* @__PURE__ */ r.jsx(R, { className: "h-4 w-4" })
198
+ }
199
+ ));
200
+ w.displayName = a.Close.displayName;
201
+ const N = i.forwardRef(({ className: t, ...e }, o) => /* @__PURE__ */ r.jsx(a.Title, { ref: o, className: n("text-sm font-semibold [&+div]:text-xs", t), ...e }));
202
+ N.displayName = a.Title.displayName;
203
+ const S = i.forwardRef(({ className: t, ...e }, o) => /* @__PURE__ */ r.jsx(a.Description, { ref: o, className: n("text-sm opacity-90", t), ...e }));
204
+ S.displayName = a.Description.displayName;
205
+ function tt() {
206
+ const { toasts: t } = k();
207
+ return /* @__PURE__ */ r.jsxs(L, { children: [
208
+ t.map(({ id: e, title: o, description: s, action: d, ...p }) => /* @__PURE__ */ r.jsxs(y, { ...p, children: [
209
+ /* @__PURE__ */ r.jsxs("div", { className: "grid gap-1", children: [
210
+ o && /* @__PURE__ */ r.jsx(N, { children: o }),
211
+ s && /* @__PURE__ */ r.jsx(S, { children: s })
212
+ ] }),
213
+ d,
214
+ /* @__PURE__ */ r.jsx(w, {})
215
+ ] }, e)),
216
+ /* @__PURE__ */ r.jsx(b, {})
217
+ ] });
218
+ }
219
+ const et = ({ className: t, ...e }) => /* @__PURE__ */ r.jsx("div", { className: n("animate-pulse rounded-md bg-primary/10", t), ...e }), ot = (t, e = void 0) => {
220
+ const o = O(T);
221
+ return E(o, t, e);
222
+ };
223
+ export {
224
+ _ as B,
225
+ et as S,
226
+ W as T,
227
+ tt as a,
228
+ D as b,
229
+ T as c,
230
+ Z as d,
231
+ $ as e,
232
+ V as f,
233
+ J as g,
234
+ k as h,
235
+ z as r,
236
+ B as t,
237
+ ot as u
238
+ };
@@ -0,0 +1 @@
1
+ "use strict";const c=require("clsx"),r=require("tailwind-merge"),s=(...e)=>r.twMerge(c.clsx(e));exports.cn=s;
@@ -0,0 +1,6 @@
1
+ import { clsx as r } from "clsx";
2
+ import { twMerge as t } from "tailwind-merge";
3
+ const e = (...o) => t(r(o));
4
+ export {
5
+ e as c
6
+ };
package/dist/vite.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
package/package.json ADDED
@@ -0,0 +1,156 @@
1
+ {
2
+ "name": "@chaibuilder/sdk",
3
+ "private": false,
4
+ "version": "0.1.0",
5
+ "type": "module",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "main": "dist/core.js",
10
+ "sideEffects": false,
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/core.js",
14
+ "require": "./dist/core.cjs",
15
+ "types": "./dist/core.d.ts"
16
+ },
17
+ "./render": {
18
+ "import": "./dist/render.js",
19
+ "require": "./dist/render.cjs",
20
+ "types": "./dist/render.d.ts"
21
+ },
22
+ "./ui": {
23
+ "import": "./dist/ui.js",
24
+ "require": "./dist/ui.cjs",
25
+ "types": "./dist/ui.d.ts"
26
+ },
27
+ "./lib": {
28
+ "import": "./dist/lib.js",
29
+ "require": "./dist/lib.cjs",
30
+ "types": "./dist/lib.d.ts"
31
+ },
32
+ "./styles": {
33
+ "import": "./dist/style.css",
34
+ "require": "./dist/style.css"
35
+ }
36
+ },
37
+ "scripts": {
38
+ "dev": "vite",
39
+ "build": "tsc && vite build",
40
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
41
+ "preview": "vite preview",
42
+ "test": "jest --colors",
43
+ "test:watch": "jest --watch --colors",
44
+ "test:coverage": "jest --coverage --colors",
45
+ "e2e": "playwright test",
46
+ "e2e:report": "playwright show-report",
47
+ "e2e:ui": "playwright test --ui",
48
+ "docs": "jsdoc -c jsdoc.conf.json"
49
+ },
50
+ "dependencies": {
51
+ "@analytics/google-analytics": "^1.0.7",
52
+ "@bobthered/tailwindcss-palette-generator": "3.1.1",
53
+ "@floating-ui/dom": "1.4.5",
54
+ "@floating-ui/react-dom": "2.0.1",
55
+ "@mhsdesign/jit-browser-tailwindcss": "0.3.0",
56
+ "@minoru/react-dnd-treeview": "3.4.4",
57
+ "@radix-ui/react-accordion": "^1.1.2",
58
+ "@radix-ui/react-alert-dialog": "^1.0.4",
59
+ "@radix-ui/react-context-menu": "^2.1.4",
60
+ "@radix-ui/react-dialog": "^1.0.4",
61
+ "@radix-ui/react-dropdown-menu": "^2.0.5",
62
+ "@radix-ui/react-hover-card": "^1.0.6",
63
+ "@radix-ui/react-icons": "^1.3.0",
64
+ "@radix-ui/react-label": "^2.0.2",
65
+ "@radix-ui/react-menubar": "^1.0.3",
66
+ "@radix-ui/react-navigation-menu": "^1.1.3",
67
+ "@radix-ui/react-popover": "^1.0.6",
68
+ "@radix-ui/react-scroll-area": "^1.0.4",
69
+ "@radix-ui/react-select": "^1.2.2",
70
+ "@radix-ui/react-separator": "^1.0.3",
71
+ "@radix-ui/react-slot": "^1.0.2",
72
+ "@radix-ui/react-switch": "^1.0.3",
73
+ "@radix-ui/react-tabs": "^1.0.4",
74
+ "@radix-ui/react-toast": "^1.1.4",
75
+ "@radix-ui/react-toggle": "^1.0.3",
76
+ "@radix-ui/react-tooltip": "^1.0.6",
77
+ "@react-hookz/web": "23.1.0",
78
+ "@rjsf/core": "5.11.2",
79
+ "@rjsf/utils": "5.11.2",
80
+ "@rjsf/validator-ajv8": "5.11.2",
81
+ "@tailwindcss/aspect-ratio": "0.4.2",
82
+ "@tailwindcss/forms": "^0.5.6",
83
+ "@tailwindcss/line-clamp": "^0.4.4",
84
+ "@tailwindcss/typography": "^0.5.10",
85
+ "analytics": "^0.8.9",
86
+ "chaibuilder-blocks": "0.1.2",
87
+ "class-variance-authority": "0.6.1",
88
+ "clsx": "1.2.1",
89
+ "cmdk": "0.2.0",
90
+ "date-fns": "^2.30.0",
91
+ "flagged": "2.0.9",
92
+ "flat-to-nested": "1.1.1",
93
+ "focus-trap-react": "^10.2.1",
94
+ "forgiving-xml-parser": "1.4.0",
95
+ "framer-motion": "^10.12.18",
96
+ "fuse.js": "6.6.2",
97
+ "gray-matter": "^4.0.3",
98
+ "himalaya": "^1.1.0",
99
+ "html-formatter": "0.1.9",
100
+ "i18next": "^23.2.8",
101
+ "jotai": "2.2.2",
102
+ "lodash": "4.17.21",
103
+ "lucide-react": "^0.244.0",
104
+ "nanoid": "^4.0.2",
105
+ "post-robot": "10.0.46",
106
+ "react": "^18.2.0",
107
+ "react-autosuggest": "10.1.0",
108
+ "react-colorful": "5.6.1",
109
+ "react-dnd": "16.0.1",
110
+ "react-dnd-html5-backend": "16.0.1",
111
+ "react-dom": "^18.2.0",
112
+ "react-hotkeys-hook": "4.4.1",
113
+ "react-i18next": "13.0.1",
114
+ "react-icons": "^4.10.1",
115
+ "react-icons-picker": "^1.0.9",
116
+ "react-quill": "^2.0.0",
117
+ "react-textarea-autosize": "^8.5.2",
118
+ "react-wrap-balancer": "^1.0.0",
119
+ "redux-undo": "1.1.0",
120
+ "tailwind-merge": "1.13.2",
121
+ "tailwindcss-animate": "1.0.6",
122
+ "tippy.js": "^6.3.7",
123
+ "unist-util-visit": "^4.1.2",
124
+ "unsplash-js": "^7.0.18"
125
+ },
126
+ "devDependencies": {
127
+ "@commitlint/cli": "17.7.1",
128
+ "@commitlint/config-conventional": "17.7.0",
129
+ "@playwright/test": "^1.39.0",
130
+ "@types/jest": "^29.5.7",
131
+ "@types/lodash": "^4.14.200",
132
+ "@types/node": "^20.8.10",
133
+ "@types/react": "^18.2.15",
134
+ "@types/react-dom": "^18.2.7",
135
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
136
+ "@typescript-eslint/parser": "^6.0.0",
137
+ "@vitejs/plugin-react-swc": "^3.3.2",
138
+ "autoprefixer": "^10.4.16",
139
+ "better-docs": "^2.7.2",
140
+ "eslint": "^8.45.0",
141
+ "eslint-plugin-react-hooks": "^4.6.0",
142
+ "eslint-plugin-react-refresh": "^0.4.3",
143
+ "jest": "^29.7.0",
144
+ "jest-environment-jsdom": "^29.7.0",
145
+ "jsdoc": "^4.0.2",
146
+ "postcss": "^8.4.31",
147
+ "prettier": "^3.0.3",
148
+ "prettier-plugin-tailwindcss": "^0.5.6",
149
+ "prop-types": "^15.8.1",
150
+ "tailwindcss": "^3.3.5",
151
+ "ts-jest": "^29.1.1",
152
+ "typescript": "^5.0.2",
153
+ "vite": "^4.4.5",
154
+ "vite-plugin-dts": "^3.6.3"
155
+ }
156
+ }