aidol 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 (68) hide show
  1. package/README.md +72 -0
  2. package/dist/aidol-D1U55wfr.mjs +37 -0
  3. package/dist/aidol-D1U55wfr.mjs.map +1 -0
  4. package/dist/aidol-gZjlTwTe.js +2 -0
  5. package/dist/aidol-gZjlTwTe.js.map +1 -0
  6. package/dist/client.cjs +2 -0
  7. package/dist/client.cjs.map +1 -0
  8. package/dist/client.d.ts +26 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +817 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/components/ShareButton.d.ts +11 -0
  13. package/dist/components/ShareButton.d.ts.map +1 -0
  14. package/dist/components/aidol/CompanionGrid.d.ts +11 -0
  15. package/dist/components/aidol/CompanionGrid.d.ts.map +1 -0
  16. package/dist/components/aidol/GroupHeader.d.ts +11 -0
  17. package/dist/components/aidol/GroupHeader.d.ts.map +1 -0
  18. package/dist/components/aidol/index.d.ts +3 -0
  19. package/dist/components/aidol/index.d.ts.map +1 -0
  20. package/dist/components/companion/AddMemberButton.d.ts +10 -0
  21. package/dist/components/companion/AddMemberButton.d.ts.map +1 -0
  22. package/dist/components/companion/Card.d.ts +11 -0
  23. package/dist/components/companion/Card.d.ts.map +1 -0
  24. package/dist/components/companion/ImagePreview.d.ts +12 -0
  25. package/dist/components/companion/ImagePreview.d.ts.map +1 -0
  26. package/dist/components/companion/PromptInput.d.ts +12 -0
  27. package/dist/components/companion/PromptInput.d.ts.map +1 -0
  28. package/dist/components/companion/index.d.ts +5 -0
  29. package/dist/components/companion/index.d.ts.map +1 -0
  30. package/dist/components/creation/ConceptSelector.d.ts +16 -0
  31. package/dist/components/creation/ConceptSelector.d.ts.map +1 -0
  32. package/dist/components/creation/EmblemGenerator.d.ts +13 -0
  33. package/dist/components/creation/EmblemGenerator.d.ts.map +1 -0
  34. package/dist/components/creation/GroupCreation.d.ts +16 -0
  35. package/dist/components/creation/GroupCreation.d.ts.map +1 -0
  36. package/dist/components/creation/GroupNameInput.d.ts +12 -0
  37. package/dist/components/creation/GroupNameInput.d.ts.map +1 -0
  38. package/dist/components/creation/MemberNameInput.d.ts +12 -0
  39. package/dist/components/creation/MemberNameInput.d.ts.map +1 -0
  40. package/dist/components/creation/PersonalitySelector.d.ts +16 -0
  41. package/dist/components/creation/PersonalitySelector.d.ts.map +1 -0
  42. package/dist/components/creation/StepIndicator.d.ts +12 -0
  43. package/dist/components/creation/StepIndicator.d.ts.map +1 -0
  44. package/dist/components/creation/index.d.ts +8 -0
  45. package/dist/components/creation/index.d.ts.map +1 -0
  46. package/dist/components/index.d.ts +6 -0
  47. package/dist/components/index.d.ts.map +1 -0
  48. package/dist/components/landing/DemoSection.d.ts +5 -0
  49. package/dist/components/landing/DemoSection.d.ts.map +1 -0
  50. package/dist/components/landing/HeroSection.d.ts +9 -0
  51. package/dist/components/landing/HeroSection.d.ts.map +1 -0
  52. package/dist/components/landing/index.d.ts +3 -0
  53. package/dist/components/landing/index.d.ts.map +1 -0
  54. package/dist/i18n/translations.d.ts +689 -0
  55. package/dist/i18n/translations.d.ts.map +1 -0
  56. package/dist/index.cjs +2 -0
  57. package/dist/index.cjs.map +1 -0
  58. package/dist/index.d.ts +20 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +117 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/repositories/AIdolRepository.d.ts +35 -0
  63. package/dist/repositories/AIdolRepository.d.ts.map +1 -0
  64. package/dist/repositories/CompanionRepository.d.ts +34 -0
  65. package/dist/repositories/CompanionRepository.d.ts.map +1 -0
  66. package/dist/repositories/index.d.ts +3 -0
  67. package/dist/repositories/index.d.ts.map +1 -0
  68. package/package.json +123 -0
package/dist/client.js ADDED
@@ -0,0 +1,817 @@
1
+ "use client";
2
+ import { jsx as t, jsxs as o, Fragment as W } from "react/jsx-runtime";
3
+ import { useTranslation as b } from "react-i18next";
4
+ import z from "next/image";
5
+ import * as i from "react";
6
+ import { forwardRef as x, useState as S, useMemo as M, useCallback as Y } from "react";
7
+ import { validateFieldsNatively as H, toNestErrors as q } from "@hookform/resolvers";
8
+ import { appendErrors as J, useForm as Q, useFieldArray as X, Controller as ee } from "react-hook-form";
9
+ import { g as te } from "./aidol-D1U55wfr.mjs";
10
+ import { motion as g } from "framer-motion";
11
+ function ae({
12
+ title: e,
13
+ titleId: a,
14
+ ...n
15
+ }, r) {
16
+ return /* @__PURE__ */ i.createElement("svg", Object.assign({
17
+ xmlns: "http://www.w3.org/2000/svg",
18
+ fill: "none",
19
+ viewBox: "0 0 24 24",
20
+ strokeWidth: 1.5,
21
+ stroke: "currentColor",
22
+ "aria-hidden": "true",
23
+ "data-slot": "icon",
24
+ ref: r,
25
+ "aria-labelledby": a
26
+ }, n), e ? /* @__PURE__ */ i.createElement("title", {
27
+ id: a
28
+ }, e) : null, /* @__PURE__ */ i.createElement("path", {
29
+ strokeLinecap: "round",
30
+ strokeLinejoin: "round",
31
+ d: "m4.5 12.75 6 6 9-13.5"
32
+ }));
33
+ }
34
+ const re = i.forwardRef(ae);
35
+ function ne({
36
+ title: e,
37
+ titleId: a,
38
+ ...n
39
+ }, r) {
40
+ return /* @__PURE__ */ i.createElement("svg", Object.assign({
41
+ xmlns: "http://www.w3.org/2000/svg",
42
+ fill: "none",
43
+ viewBox: "0 0 24 24",
44
+ strokeWidth: 1.5,
45
+ stroke: "currentColor",
46
+ "aria-hidden": "true",
47
+ "data-slot": "icon",
48
+ ref: r,
49
+ "aria-labelledby": a
50
+ }, n), e ? /* @__PURE__ */ i.createElement("title", {
51
+ id: a
52
+ }, e) : null, /* @__PURE__ */ i.createElement("path", {
53
+ strokeLinecap: "round",
54
+ strokeLinejoin: "round",
55
+ d: "M12 4.5v15m7.5-7.5h-15"
56
+ }));
57
+ }
58
+ const le = i.forwardRef(ne);
59
+ function se({
60
+ title: e,
61
+ titleId: a,
62
+ ...n
63
+ }, r) {
64
+ return /* @__PURE__ */ i.createElement("svg", Object.assign({
65
+ xmlns: "http://www.w3.org/2000/svg",
66
+ fill: "none",
67
+ viewBox: "0 0 24 24",
68
+ strokeWidth: 1.5,
69
+ stroke: "currentColor",
70
+ "aria-hidden": "true",
71
+ "data-slot": "icon",
72
+ ref: r,
73
+ "aria-labelledby": a
74
+ }, n), e ? /* @__PURE__ */ i.createElement("title", {
75
+ id: a
76
+ }, e) : null, /* @__PURE__ */ i.createElement("path", {
77
+ strokeLinecap: "round",
78
+ strokeLinejoin: "round",
79
+ d: "M7.217 10.907a2.25 2.25 0 1 0 0 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186 9.566-5.314m-9.566 7.5 9.566 5.314m0 0a2.25 2.25 0 1 0 3.935 2.186 2.25 2.25 0 0 0-3.935-2.186Zm0-12.814a2.25 2.25 0 1 0 3.933-2.185 2.25 2.25 0 0 0-3.933 2.185Z"
80
+ }));
81
+ }
82
+ const oe = i.forwardRef(se);
83
+ function ie({
84
+ title: e,
85
+ titleId: a,
86
+ ...n
87
+ }, r) {
88
+ return /* @__PURE__ */ i.createElement("svg", Object.assign({
89
+ xmlns: "http://www.w3.org/2000/svg",
90
+ fill: "none",
91
+ viewBox: "0 0 24 24",
92
+ strokeWidth: 1.5,
93
+ stroke: "currentColor",
94
+ "aria-hidden": "true",
95
+ "data-slot": "icon",
96
+ ref: r,
97
+ "aria-labelledby": a
98
+ }, n), e ? /* @__PURE__ */ i.createElement("title", {
99
+ id: a
100
+ }, e) : null, /* @__PURE__ */ i.createElement("path", {
101
+ strokeLinecap: "round",
102
+ strokeLinejoin: "round",
103
+ d: "M18 18.72a9.094 9.094 0 0 0 3.741-.479 3 3 0 0 0-4.682-2.72m.94 3.198.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0 1 12 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 0 1 6 18.719m12 0a5.971 5.971 0 0 0-.941-3.197m0 0A5.995 5.995 0 0 0 12 12.75a5.995 5.995 0 0 0-5.058 2.772m0 0a3 3 0 0 0-4.681 2.72 8.986 8.986 0 0 0 3.74.477m.94-3.197a5.971 5.971 0 0 0-.94 3.197M15 6.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm6 3a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Zm-13.5 0a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Z"
104
+ }));
105
+ }
106
+ const ce = i.forwardRef(ie);
107
+ function de({
108
+ title: e,
109
+ titleId: a,
110
+ ...n
111
+ }, r) {
112
+ return /* @__PURE__ */ i.createElement("svg", Object.assign({
113
+ xmlns: "http://www.w3.org/2000/svg",
114
+ fill: "none",
115
+ viewBox: "0 0 24 24",
116
+ strokeWidth: 1.5,
117
+ stroke: "currentColor",
118
+ "aria-hidden": "true",
119
+ "data-slot": "icon",
120
+ ref: r,
121
+ "aria-labelledby": a
122
+ }, n), e ? /* @__PURE__ */ i.createElement("title", {
123
+ id: a
124
+ }, e) : null, /* @__PURE__ */ i.createElement("path", {
125
+ strokeLinecap: "round",
126
+ strokeLinejoin: "round",
127
+ d: "M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z"
128
+ }));
129
+ }
130
+ const me = i.forwardRef(de), ue = {
131
+ sm: "size-16",
132
+ md: "size-24",
133
+ lg: "size-32"
134
+ };
135
+ function I({ url: e, alt: a, size: n = "md" }) {
136
+ const r = ue[n];
137
+ return /* @__PURE__ */ t(
138
+ "div",
139
+ {
140
+ className: `relative overflow-hidden rounded-2xl bg-base-200 ${r}`,
141
+ children: e ? /* @__PURE__ */ t(z, { src: e, alt: a, fill: !0, className: "object-cover" }) : /* @__PURE__ */ t("div", { className: "flex size-full items-center justify-center bg-gradient-to-br from-primary/20 to-secondary/20", children: /* @__PURE__ */ t(me, { className: "size-1/2 text-base-content/50" }) })
142
+ }
143
+ );
144
+ }
145
+ function pe({ companion: e, onClick: a }) {
146
+ return /* @__PURE__ */ t(
147
+ "div",
148
+ {
149
+ onClick: a,
150
+ className: "card cursor-pointer bg-base-200 p-4 transition-shadow hover:shadow-lg",
151
+ role: a ? "button" : void 0,
152
+ tabIndex: a ? 0 : void 0,
153
+ onKeyDown: a ? (n) => {
154
+ (n.key === "Enter" || n.key === " ") && (n.preventDefault(), a());
155
+ } : void 0,
156
+ children: /* @__PURE__ */ o("div", { className: "flex items-center gap-4", children: [
157
+ /* @__PURE__ */ t(
158
+ I,
159
+ {
160
+ url: e.profilePictureUrl,
161
+ alt: e.name,
162
+ size: "md"
163
+ }
164
+ ),
165
+ /* @__PURE__ */ o("div", { className: "min-w-0 flex-1", children: [
166
+ /* @__PURE__ */ t("h3", { className: "truncate text-title-m font-semibold text-base-content", children: e.name }),
167
+ e.biography && /* @__PURE__ */ t("p", { className: "mt-1 line-clamp-2 text-body-s text-base-content/70", children: e.biography })
168
+ ] })
169
+ ] })
170
+ }
171
+ );
172
+ }
173
+ function Ue({
174
+ companions: e,
175
+ onCompanionClick: a
176
+ }) {
177
+ const { t: n } = b();
178
+ return /* @__PURE__ */ o("div", { className: "mt-8", children: [
179
+ /* @__PURE__ */ t("h2", { className: "mb-4 text-title-l font-semibold", children: n("aidol:aidol.members") }),
180
+ e && e.length > 0 ? /* @__PURE__ */ t("div", { className: "grid gap-4 sm:grid-cols-2", children: e.map((r) => /* @__PURE__ */ t(
181
+ pe,
182
+ {
183
+ companion: r,
184
+ onClick: () => a(r.id)
185
+ },
186
+ r.id
187
+ )) }) : /* @__PURE__ */ t("p", { className: "text-center text-base-content/50", children: n("aidol:aidol.noMembers") })
188
+ ] });
189
+ }
190
+ function $e({ aidol: e }) {
191
+ return /* @__PURE__ */ o("div", { className: "flex flex-col items-center gap-4 py-8 text-center", children: [
192
+ /* @__PURE__ */ t("div", { className: "relative size-32 overflow-hidden rounded-full bg-base-200", children: e.profileImageUrl ? /* @__PURE__ */ t(
193
+ z,
194
+ {
195
+ src: e.profileImageUrl,
196
+ alt: e.name,
197
+ fill: !0,
198
+ className: "object-cover"
199
+ }
200
+ ) : /* @__PURE__ */ t("div", { className: "flex size-full items-center justify-center bg-gradient-to-br from-primary/20 to-secondary/20", children: /* @__PURE__ */ t(ce, { className: "size-16 text-base-content/50" }) }) }),
201
+ /* @__PURE__ */ o("div", { children: [
202
+ /* @__PURE__ */ t("h1", { className: "text-display-s font-bold text-base-content", children: e.name }),
203
+ e.concept && /* @__PURE__ */ t("p", { className: "mt-2 text-body-l text-base-content/70", children: e.concept })
204
+ ] })
205
+ ] });
206
+ }
207
+ function be({ onClick: e, isLoading: a }) {
208
+ const { t: n } = b();
209
+ return /* @__PURE__ */ t(
210
+ "button",
211
+ {
212
+ onClick: e,
213
+ disabled: a,
214
+ className: "btn btn-neutral h-16 min-w-48 text-base font-medium text-neutral-content",
215
+ children: a ? /* @__PURE__ */ t("span", { className: "loading loading-spinner loading-sm" }) : /* @__PURE__ */ o(W, { children: [
216
+ /* @__PURE__ */ t(le, { className: "size-5" }),
217
+ n("aidol:companion.addMember")
218
+ ] })
219
+ }
220
+ );
221
+ }
222
+ const R = x(
223
+ ({ placeholder: e, maxLength: a = 500, charCount: n, ...r }, s) => {
224
+ const { t: c } = b();
225
+ return /* @__PURE__ */ o("div", { className: "w-full", children: [
226
+ /* @__PURE__ */ t(
227
+ "textarea",
228
+ {
229
+ ref: s,
230
+ placeholder: e ?? c("aidol:companion.promptPlaceholder"),
231
+ maxLength: a,
232
+ className: "textarea textarea-bordered h-32 w-full resize-none bg-base-100 text-base-content placeholder:text-base-content/50 focus:border-primary focus:outline-none",
233
+ ...r
234
+ }
235
+ ),
236
+ /* @__PURE__ */ o("div", { className: "mt-1 text-right text-label-s text-base-content/50", children: [
237
+ n ?? 0,
238
+ "/",
239
+ a
240
+ ] })
241
+ ] });
242
+ }
243
+ );
244
+ R.displayName = "PromptInput";
245
+ const U = x(({ options: e, ...a }, n) => {
246
+ const { t: r } = b();
247
+ return /* @__PURE__ */ o("div", { className: "form-control w-full", children: [
248
+ /* @__PURE__ */ t("label", { className: "label", children: /* @__PURE__ */ t("span", { className: "label-text text-base-content", children: r("aidol:creation.concept") }) }),
249
+ /* @__PURE__ */ o(
250
+ "select",
251
+ {
252
+ ref: n,
253
+ className: "select select-bordered w-full bg-base-100 text-base-content",
254
+ ...a,
255
+ children: [
256
+ /* @__PURE__ */ t("option", { value: "", children: r("aidol:creation.selectConcept") }),
257
+ e.map((s) => /* @__PURE__ */ t("option", { value: s.value, children: s.label }, s.value))
258
+ ]
259
+ }
260
+ )
261
+ ] });
262
+ });
263
+ U.displayName = "ConceptSelector";
264
+ function he({
265
+ onGenerate: e,
266
+ isGenerating: a,
267
+ disabled: n
268
+ }) {
269
+ const { t: r } = b(), [s, c] = S(""), l = () => {
270
+ s.trim() && e(s);
271
+ };
272
+ return /* @__PURE__ */ o("div", { className: "form-control w-full", children: [
273
+ /* @__PURE__ */ o("div", { className: "flex gap-2", children: [
274
+ /* @__PURE__ */ t(
275
+ "input",
276
+ {
277
+ type: "text",
278
+ value: s,
279
+ onChange: (d) => c(d.target.value),
280
+ onKeyDown: (d) => {
281
+ d.key === "Enter" && s.trim() && !a && !n && (d.preventDefault(), l());
282
+ },
283
+ placeholder: r("aidol:creation.emblemPromptPlaceholder"),
284
+ maxLength: 200,
285
+ className: "input input-bordered flex-1",
286
+ disabled: n || a,
287
+ "data-testid": "emblem-prompt-input"
288
+ }
289
+ ),
290
+ /* @__PURE__ */ t(
291
+ "button",
292
+ {
293
+ type: "button",
294
+ onClick: l,
295
+ disabled: n || a || !s.trim(),
296
+ className: "btn btn-secondary",
297
+ "data-testid": "emblem-generate-button",
298
+ children: a ? /* @__PURE__ */ t("span", { className: "loading loading-spinner loading-sm" }) : r("aidol:creation.generate")
299
+ }
300
+ )
301
+ ] }),
302
+ a && /* @__PURE__ */ t("div", { className: "mt-2", children: /* @__PURE__ */ t("progress", { className: "progress w-full" }) })
303
+ ] });
304
+ }
305
+ var fe = function(e, a) {
306
+ for (var n = {}; e.length; ) {
307
+ var r = e[0], s = r.code, c = r.message, l = r.path.join(".");
308
+ if (!n[l]) if ("unionErrors" in r) {
309
+ var m = r.unionErrors[0].errors[0];
310
+ n[l] = { message: m.message, type: m.code };
311
+ } else n[l] = { message: c, type: s };
312
+ if ("unionErrors" in r && r.unionErrors.forEach(function(w) {
313
+ return w.errors.forEach(function(v) {
314
+ return e.push(v);
315
+ });
316
+ }), a) {
317
+ var d = n[l].types, h = d && d[r.code];
318
+ n[l] = J(l, a, n, s, h ? [].concat(h, r.message) : r.message);
319
+ }
320
+ e.shift();
321
+ }
322
+ return n;
323
+ }, ge = function(e, a, n) {
324
+ return n === void 0 && (n = {}), function(r, s, c) {
325
+ try {
326
+ return Promise.resolve((function(l, m) {
327
+ try {
328
+ var d = Promise.resolve(e[n.mode === "sync" ? "parse" : "parseAsync"](r, a)).then(function(h) {
329
+ return c.shouldUseNativeValidation && H({}, c), { errors: {}, values: n.raw ? r : h };
330
+ });
331
+ } catch (h) {
332
+ return m(h);
333
+ }
334
+ return d && d.then ? d.then(void 0, m) : d;
335
+ })(0, function(l) {
336
+ if ((function(m) {
337
+ return Array.isArray(m?.errors);
338
+ })(l)) return { values: {}, errors: q(fe(l.errors, !c.shouldUseNativeValidation && c.criteriaMode === "all"), c) };
339
+ throw l;
340
+ }));
341
+ } catch (l) {
342
+ return Promise.reject(l);
343
+ }
344
+ };
345
+ };
346
+ function $(e) {
347
+ var a, n, r = "";
348
+ if (typeof e == "string" || typeof e == "number") r += e;
349
+ else if (typeof e == "object") if (Array.isArray(e)) {
350
+ var s = e.length;
351
+ for (a = 0; a < s; a++) e[a] && (n = $(e[a])) && (r && (r += " "), r += n);
352
+ } else for (n in e) e[n] && (r && (r += " "), r += n);
353
+ return r;
354
+ }
355
+ function y() {
356
+ for (var e, a, n = 0, r = "", s = arguments.length; n < s; n++) (e = arguments[n]) && (a = $(e)) && (r && (r += " "), r += a);
357
+ return r;
358
+ }
359
+ const O = x(
360
+ ({ error: e, ...a }, n) => {
361
+ const { t: r } = b();
362
+ return /* @__PURE__ */ o("div", { className: "form-control w-full", children: [
363
+ /* @__PURE__ */ t("label", { className: "label", children: /* @__PURE__ */ t("span", { className: "label-text text-base-content", children: r("aidol:creation.groupName") }) }),
364
+ /* @__PURE__ */ t(
365
+ "input",
366
+ {
367
+ ref: n,
368
+ type: "text",
369
+ placeholder: r("aidol:creation.groupNamePlaceholder"),
370
+ className: y(
371
+ "input input-bordered w-full bg-base-100 text-base-content placeholder:text-base-content/50",
372
+ e && "input-error"
373
+ ),
374
+ ...a
375
+ }
376
+ ),
377
+ e && /* @__PURE__ */ t("label", { className: "label", children: /* @__PURE__ */ t("span", { className: "label-text-alt text-error", children: e }) })
378
+ ] });
379
+ }
380
+ );
381
+ O.displayName = "GroupNameInput";
382
+ const Z = x(({ error: e, ...a }, n) => {
383
+ const { t: r } = b();
384
+ return /* @__PURE__ */ o("div", { className: "form-control w-full", children: [
385
+ /* @__PURE__ */ t("label", { className: "label", children: /* @__PURE__ */ t("span", { className: "label-text text-base-content", children: r("aidol:creation.memberName") }) }),
386
+ /* @__PURE__ */ t(
387
+ "input",
388
+ {
389
+ ref: n,
390
+ type: "text",
391
+ placeholder: r("aidol:creation.memberNamePlaceholder"),
392
+ className: y(
393
+ "input input-bordered w-full bg-base-100 text-base-content placeholder:text-base-content/50",
394
+ e && "input-error"
395
+ ),
396
+ ...a
397
+ }
398
+ ),
399
+ e && /* @__PURE__ */ t("label", { className: "label", children: /* @__PURE__ */ t("span", { className: "label-text-alt text-error", children: e }) })
400
+ ] });
401
+ });
402
+ Z.displayName = "MemberNameInput";
403
+ function ve({
404
+ value: e,
405
+ onChange: a,
406
+ options: n
407
+ }) {
408
+ const { t: r } = b();
409
+ return /* @__PURE__ */ o("div", { className: "form-control w-full", children: [
410
+ /* @__PURE__ */ t("label", { className: "label", children: /* @__PURE__ */ t("span", { className: "label-text text-base-content", children: r("aidol:creation.personality") }) }),
411
+ /* @__PURE__ */ t("div", { className: "space-y-2", children: n.map((s) => /* @__PURE__ */ o(
412
+ "label",
413
+ {
414
+ className: y(
415
+ "flex cursor-pointer items-start gap-3 rounded-lg border p-4 transition-colors",
416
+ e === s.value ? "border-primary bg-primary/10" : "border-base-300 hover:border-base-content/30"
417
+ ),
418
+ children: [
419
+ /* @__PURE__ */ t(
420
+ "input",
421
+ {
422
+ type: "radio",
423
+ name: "personality",
424
+ value: s.value,
425
+ checked: e === s.value,
426
+ onChange: (c) => a(c.target.value),
427
+ className: "radio-primary radio mt-0.5"
428
+ }
429
+ ),
430
+ /* @__PURE__ */ o("div", { children: [
431
+ /* @__PURE__ */ t("div", { className: "font-medium text-base-content", children: s.label }),
432
+ s.description && /* @__PURE__ */ t("div", { className: "mt-1 text-body-s text-base-content/70", children: s.description })
433
+ ] })
434
+ ]
435
+ },
436
+ s.value
437
+ )) })
438
+ ] });
439
+ }
440
+ function Ne({
441
+ currentStep: e,
442
+ totalSteps: a,
443
+ labels: n
444
+ }) {
445
+ return /* @__PURE__ */ t("ul", { className: "steps w-full", children: Array.from({ length: a }, (r, s) => {
446
+ const c = s + 1, l = c < e;
447
+ return /* @__PURE__ */ t(
448
+ "li",
449
+ {
450
+ className: y(
451
+ "step",
452
+ (l || c === e) && "step-primary"
453
+ ),
454
+ children: n?.[s] ?? ""
455
+ },
456
+ c
457
+ );
458
+ }) });
459
+ }
460
+ const xe = ["cute", "cool", "elegant", "powerful"], ye = ["cheerful", "cool", "tsundere", "gentle"];
461
+ function Oe({
462
+ onSubmit: e,
463
+ onComplete: a,
464
+ onGenerateImage: n,
465
+ isLoading: r,
466
+ isGeneratingImage: s,
467
+ isCompleted: c
468
+ }) {
469
+ const { t: l } = b(), [m, d] = S(c ? 3 : 1), h = M(
470
+ () => xe.map((u) => ({
471
+ value: u,
472
+ label: l(`aidol:creation.concepts.${u}`)
473
+ })),
474
+ [l]
475
+ ), w = M(
476
+ () => ye.map((u) => ({
477
+ value: u,
478
+ label: l(`aidol:creation.personalities.${u}.label`),
479
+ description: l(`aidol:creation.personalities.${u}.description`)
480
+ })),
481
+ [l]
482
+ ), {
483
+ register: v,
484
+ control: P,
485
+ handleSubmit: F,
486
+ trigger: L,
487
+ watch: j,
488
+ setValue: B,
489
+ formState: { errors: f }
490
+ } = Q({
491
+ resolver: ge(te),
492
+ defaultValues: {
493
+ groupName: "",
494
+ concept: "",
495
+ profileImageUrl: "",
496
+ members: [{ name: "", personality: "", systemPrompt: "" }]
497
+ }
498
+ }), C = j("profileImageUrl"), { fields: D, append: T } = X({
499
+ control: P,
500
+ name: "members"
501
+ }), A = j("members"), G = async (u) => {
502
+ const p = await n(u);
503
+ p && B("profileImageUrl", p);
504
+ }, V = async () => {
505
+ await L(["groupName", "profileImageUrl"]) && d(2);
506
+ }, _ = F(async (u) => {
507
+ const p = u.members.filter((N) => N.name.trim());
508
+ await e({ ...u, members: p }), d(3);
509
+ }), K = () => {
510
+ T({ name: "", personality: "", systemPrompt: "" });
511
+ };
512
+ return /* @__PURE__ */ t("main", { className: "flex min-h-dvh w-full flex-col items-center bg-base-100 px-6 py-20", children: /* @__PURE__ */ o("div", { className: "w-full max-w-lg", children: [
513
+ /* @__PURE__ */ t(
514
+ Ne,
515
+ {
516
+ currentStep: m,
517
+ totalSteps: 3,
518
+ labels: [
519
+ l("aidol:creation.step1"),
520
+ l("aidol:creation.step2"),
521
+ l("aidol:creation.step3")
522
+ ]
523
+ }
524
+ ),
525
+ /* @__PURE__ */ o("div", { className: "mt-8", children: [
526
+ m === 1 && /* @__PURE__ */ o("div", { className: "space-y-6", children: [
527
+ /* @__PURE__ */ t("h2", { className: "text-display-s font-bold", children: l("aidol:creation.step1Title") }),
528
+ /* @__PURE__ */ t(
529
+ O,
530
+ {
531
+ ...v("groupName"),
532
+ error: f.groupName?.message ? l(f.groupName.message, { ns: "aidol" }) : void 0
533
+ }
534
+ ),
535
+ /* @__PURE__ */ t(
536
+ U,
537
+ {
538
+ ...v("concept"),
539
+ options: h
540
+ }
541
+ ),
542
+ /* @__PURE__ */ o("div", { className: "form-control", children: [
543
+ /* @__PURE__ */ t("label", { className: "label", children: /* @__PURE__ */ t("span", { className: "label-text font-medium", children: l("aidol:creation.emblem") }) }),
544
+ /* @__PURE__ */ t(
545
+ he,
546
+ {
547
+ onGenerate: G,
548
+ isGenerating: s,
549
+ disabled: r
550
+ }
551
+ ),
552
+ C && /* @__PURE__ */ t("div", { className: "mt-2 flex justify-center", children: /* @__PURE__ */ t(
553
+ I,
554
+ {
555
+ url: C,
556
+ alt: l("aidol:creation.emblem"),
557
+ size: "lg"
558
+ }
559
+ ) }),
560
+ f.profileImageUrl?.message && /* @__PURE__ */ t("p", { className: "mt-1 text-sm text-error", children: l(f.profileImageUrl.message, { ns: "aidol" }) })
561
+ ] }),
562
+ /* @__PURE__ */ t(
563
+ "button",
564
+ {
565
+ type: "button",
566
+ onClick: V,
567
+ disabled: !C,
568
+ className: "btn btn-primary w-full",
569
+ children: l("aidol:creation.next")
570
+ }
571
+ )
572
+ ] }),
573
+ m === 2 && /* @__PURE__ */ o("form", { onSubmit: _, className: "space-y-6", children: [
574
+ /* @__PURE__ */ t("h2", { className: "text-display-s font-bold", children: l("aidol:creation.step2Title") }),
575
+ D.map((u, p) => /* @__PURE__ */ o(
576
+ "div",
577
+ {
578
+ className: "space-y-4 rounded-lg border border-base-300 p-4",
579
+ children: [
580
+ /* @__PURE__ */ o("div", { className: "flex items-center gap-4", children: [
581
+ /* @__PURE__ */ t(
582
+ I,
583
+ {
584
+ url: null,
585
+ alt: A[p]?.name ?? "",
586
+ size: "sm"
587
+ }
588
+ ),
589
+ /* @__PURE__ */ t("div", { className: "flex-1", children: /* @__PURE__ */ t(
590
+ Z,
591
+ {
592
+ ...v(`members.${p}.name`),
593
+ error: f.members?.[p]?.name?.message ? l(f.members?.[p]?.name?.message ?? "", {
594
+ ns: "aidol"
595
+ }) : void 0
596
+ }
597
+ ) })
598
+ ] }),
599
+ /* @__PURE__ */ t(
600
+ ee,
601
+ {
602
+ name: `members.${p}.personality`,
603
+ control: P,
604
+ render: ({ field: N }) => /* @__PURE__ */ t(
605
+ ve,
606
+ {
607
+ value: N.value ?? "",
608
+ onChange: N.onChange,
609
+ options: w
610
+ }
611
+ )
612
+ }
613
+ ),
614
+ /* @__PURE__ */ t(
615
+ R,
616
+ {
617
+ ...v(`members.${p}.systemPrompt`),
618
+ charCount: A[p]?.systemPrompt?.length ?? 0
619
+ }
620
+ )
621
+ ]
622
+ },
623
+ u.id
624
+ )),
625
+ /* @__PURE__ */ t(be, { onClick: K, isLoading: !1 }),
626
+ f.members?.root?.message && /* @__PURE__ */ t("p", { className: "text-center text-error", children: l(f.members.root.message, { ns: "aidol" }) }),
627
+ /* @__PURE__ */ o("div", { className: "flex gap-4", children: [
628
+ /* @__PURE__ */ t(
629
+ "button",
630
+ {
631
+ type: "button",
632
+ onClick: () => d(1),
633
+ className: "btn btn-ghost flex-1",
634
+ disabled: r,
635
+ children: l("aidol:creation.back")
636
+ }
637
+ ),
638
+ /* @__PURE__ */ t(
639
+ "button",
640
+ {
641
+ type: "submit",
642
+ className: "btn btn-primary flex-1",
643
+ disabled: r,
644
+ children: r ? /* @__PURE__ */ t("span", { className: "loading loading-spinner loading-sm" }) : l("aidol:creation.create")
645
+ }
646
+ )
647
+ ] })
648
+ ] }),
649
+ m === 3 && /* @__PURE__ */ o("div", { className: "space-y-6 text-center", children: [
650
+ /* @__PURE__ */ t("div", { className: "text-6xl", children: "🎉" }),
651
+ /* @__PURE__ */ t("h2", { className: "text-display-s font-bold", children: l("aidol:creation.completeTitle") }),
652
+ /* @__PURE__ */ t("p", { className: "text-body-l text-base-content/70", children: l("aidol:creation.completeDescription") }),
653
+ /* @__PURE__ */ t("button", { onClick: a, className: "btn btn-primary w-full", children: l("aidol:creation.viewProfile") })
654
+ ] })
655
+ ] })
656
+ ] }) });
657
+ }
658
+ function we({
659
+ title: e,
660
+ titleId: a,
661
+ ...n
662
+ }, r) {
663
+ return /* @__PURE__ */ i.createElement("svg", Object.assign({
664
+ xmlns: "http://www.w3.org/2000/svg",
665
+ viewBox: "0 0 24 24",
666
+ fill: "currentColor",
667
+ "aria-hidden": "true",
668
+ "data-slot": "icon",
669
+ ref: r,
670
+ "aria-labelledby": a
671
+ }, n), e ? /* @__PURE__ */ i.createElement("title", {
672
+ id: a
673
+ }, e) : null, /* @__PURE__ */ i.createElement("path", {
674
+ fillRule: "evenodd",
675
+ d: "M9 4.5a.75.75 0 0 1 .721.544l.813 2.846a3.75 3.75 0 0 0 2.576 2.576l2.846.813a.75.75 0 0 1 0 1.442l-2.846.813a3.75 3.75 0 0 0-2.576 2.576l-.813 2.846a.75.75 0 0 1-1.442 0l-.813-2.846a3.75 3.75 0 0 0-2.576-2.576l-2.846-.813a.75.75 0 0 1 0-1.442l2.846-.813A3.75 3.75 0 0 0 7.466 7.89l.813-2.846A.75.75 0 0 1 9 4.5ZM18 1.5a.75.75 0 0 1 .728.568l.258 1.036c.236.94.97 1.674 1.91 1.91l1.036.258a.75.75 0 0 1 0 1.456l-1.036.258c-.94.236-1.674.97-1.91 1.91l-.258 1.036a.75.75 0 0 1-1.456 0l-.258-1.036a2.625 2.625 0 0 0-1.91-1.91l-1.036-.258a.75.75 0 0 1 0-1.456l1.036-.258a2.625 2.625 0 0 0 1.91-1.91l.258-1.036A.75.75 0 0 1 18 1.5ZM16.5 15a.75.75 0 0 1 .712.513l.394 1.183c.15.447.5.799.948.948l1.183.395a.75.75 0 0 1 0 1.422l-1.183.395c-.447.15-.799.5-.948.948l-.395 1.183a.75.75 0 0 1-1.422 0l-.395-1.183a1.5 1.5 0 0 0-.948-.948l-1.183-.395a.75.75 0 0 1 0-1.422l1.183-.395c.447-.15.799-.5.948-.948l.395-1.183A.75.75 0 0 1 16.5 15Z",
676
+ clipRule: "evenodd"
677
+ }));
678
+ }
679
+ const Ce = i.forwardRef(we), E = {
680
+ initial: { y: 40, opacity: 0 },
681
+ animate: {
682
+ y: 0,
683
+ opacity: 1,
684
+ transition: {
685
+ duration: 0.8,
686
+ ease: "easeInOut"
687
+ }
688
+ }
689
+ }, Ee = {
690
+ animate: {
691
+ transition: {
692
+ staggerChildren: 0.2
693
+ }
694
+ }
695
+ };
696
+ function Ze() {
697
+ const { t: e } = b();
698
+ return /* @__PURE__ */ o(
699
+ g.section,
700
+ {
701
+ variants: Ee,
702
+ initial: "initial",
703
+ whileInView: "animate",
704
+ viewport: { once: !0, amount: 0.1 },
705
+ className: "container mx-auto px-6 py-20 text-center md:py-28",
706
+ children: [
707
+ /* @__PURE__ */ t(g.div, { variants: E, children: /* @__PURE__ */ t(Ce, { className: "mx-auto size-24 text-secondary drop-shadow-[0_0_16px_theme(colors.secondary)]" }) }),
708
+ /* @__PURE__ */ t(
709
+ g.h2,
710
+ {
711
+ variants: E,
712
+ className: "mt-4 text-display-s md:text-display-m",
713
+ children: e("aidol:landing.demo.title")
714
+ }
715
+ ),
716
+ /* @__PURE__ */ t(
717
+ g.p,
718
+ {
719
+ variants: E,
720
+ className: "mx-auto mt-4 max-w-lg text-body-l text-neutral-content",
721
+ children: e("aidol:landing.demo.description")
722
+ }
723
+ )
724
+ ]
725
+ }
726
+ );
727
+ }
728
+ const k = {
729
+ initial: { y: 40, opacity: 0 },
730
+ animate: {
731
+ y: 0,
732
+ opacity: 1,
733
+ transition: {
734
+ duration: 0.8,
735
+ ease: "easeInOut"
736
+ }
737
+ }
738
+ }, ke = {
739
+ animate: {
740
+ transition: {
741
+ staggerChildren: 0.2
742
+ }
743
+ }
744
+ };
745
+ function Fe({ onGetStarted: e }) {
746
+ const { t: a } = b();
747
+ return /* @__PURE__ */ t("div", { className: "hero min-h-screen bg-gradient-to-b from-base-200 to-primary pt-20", children: /* @__PURE__ */ o(
748
+ g.div,
749
+ {
750
+ variants: ke,
751
+ initial: "initial",
752
+ animate: "animate",
753
+ className: "hero-content flex-col gap-12 text-center text-base-content",
754
+ children: [
755
+ /* @__PURE__ */ o("div", { className: "max-w-3xl", children: [
756
+ /* @__PURE__ */ t(
757
+ g.h1,
758
+ {
759
+ variants: k,
760
+ className: "mb-4 text-display-m md:text-display-l",
761
+ children: a("aidol:landing.hero.title")
762
+ }
763
+ ),
764
+ /* @__PURE__ */ t(
765
+ g.p,
766
+ {
767
+ variants: k,
768
+ className: "mx-auto mt-6 max-w-xl text-body-l text-neutral-content",
769
+ children: a("aidol:landing.hero.description")
770
+ }
771
+ )
772
+ ] }),
773
+ /* @__PURE__ */ t(g.div, { variants: k, children: /* @__PURE__ */ t(
774
+ "button",
775
+ {
776
+ onClick: e,
777
+ className: "btn btn-primary font-semibold",
778
+ children: a("aidol:landing.hero.cta")
779
+ }
780
+ ) })
781
+ ]
782
+ }
783
+ ) });
784
+ }
785
+ function Le({ url: e, onShare: a }) {
786
+ const { t: n } = b(), [r, s] = S(!1), c = Y(async () => {
787
+ await navigator.clipboard.writeText(e), s(!0), a?.(), setTimeout(() => s(!1), 2e3);
788
+ }, [e, a]);
789
+ return /* @__PURE__ */ t(
790
+ "button",
791
+ {
792
+ onClick: c,
793
+ className: "btn btn-circle btn-ghost",
794
+ "aria-label": n("aidol:share"),
795
+ children: r ? /* @__PURE__ */ t(re, { className: "size-6 text-success" }) : /* @__PURE__ */ t(oe, { className: "size-6" })
796
+ }
797
+ );
798
+ }
799
+ export {
800
+ be as AddMemberButton,
801
+ pe as Card,
802
+ Ue as CompanionGrid,
803
+ U as ConceptSelector,
804
+ Ze as DemoSection,
805
+ he as EmblemGenerator,
806
+ Oe as GroupCreation,
807
+ $e as GroupHeader,
808
+ O as GroupNameInput,
809
+ Fe as HeroSection,
810
+ I as ImagePreview,
811
+ Z as MemberNameInput,
812
+ ve as PersonalitySelector,
813
+ R as PromptInput,
814
+ Le as ShareButton,
815
+ Ne as StepIndicator
816
+ };
817
+ //# sourceMappingURL=client.js.map