@designcrowd/library.brand-page 5.16.4-abtest-1 → 5.16.4-ast-mp

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 (62) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-DQc3IjpR.js → CreatedOnBrandCrowd-de-de-Cjd2U2Uw.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-CIgIJjzf.js → CreatedOnBrandCrowd-en-us-DSf7zRvI.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-C4JLISvP.js → CreatedOnBrandCrowd-es-es-tVy-tprQ.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-DPpWX0aJ.js → CreatedOnBrandCrowd-fr-ca-CTMLZtq_.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-DPpWX0aJ.js → CreatedOnBrandCrowd-fr-fr-CTMLZtq_.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-DmKD5o2o.js → CreatedOnBrandCrowd-pt-br-hEZJYcL5.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-DmKD5o2o.js → CreatedOnBrandCrowd-pt-pt-hEZJYcL5.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-DhALOqwz.js → CreatedOnDcom-de-de-C3hEpKmL.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-LmejZqTn.js → CreatedOnDcom-en-us-DHVV4p1R.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-D3ZH5JD5.js → CreatedOnDcom-es-es-BRKaAPji.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-BUOMh8kU.js → CreatedOnDcom-fr-ca-CvgGaH2s.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-CNc-56QW.js → CreatedOnDcom-fr-fr-Bw0zC8_o.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-BGvy2ON7.js → CreatedOnDcom-pt-br-BrCIqA45.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-FaVxQHpN.js → CreatedOnDcom-pt-pt-CV3hPJxr.js} +1 -1
  15. package/lib/src/brand-page/models/brand-page-context.model.d.ts +1 -0
  16. package/lib/src/brand-page/models/brand-page-context.model.js +1 -0
  17. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +1 -0
  18. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +17 -0
  19. package/lib/src/brand-page-maker/composables/useEventTracker.js +21 -0
  20. package/lib/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.js +12 -0
  21. package/lib/src/brand-page-maker/utils/mixpanel.util.d.ts +1 -0
  22. package/lib/src/brand-page-maker/utils/mixpanel.util.js +29 -0
  23. package/lib/src/clients/brand-page-client.d.ts +4 -0
  24. package/lib/src/css/library.brand-page-brandCrowd.min.css +22 -22
  25. package/lib/src/css/library.brand-page-brandPage.min.css +22 -22
  26. package/lib/src/css/library.brand-page-designCom.min.css +22 -22
  27. package/lib/src/css/library.brand-page-preview.min.css +22 -22
  28. package/lib/src/index.mjs +1 -1
  29. package/lib/src/{lib-CqA2Cr9V.js → lib-JpOB9SNs.js} +14343 -14260
  30. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +1 -0
  31. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +1 -0
  32. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.d.ts +1 -0
  33. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +4 -0
  34. package/lib/src/shared/content-settings/components/image-field/ImageField.mixin.js +3 -1
  35. package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.d.ts +1 -0
  36. package/lib/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.js +2 -0
  37. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.d.ts +1 -0
  38. package/lib/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.js +2 -0
  39. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +1 -0
  40. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +1 -0
  41. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +2 -0
  42. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.js +4 -0
  43. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +1 -0
  44. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +1 -0
  45. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +1 -0
  46. package/package.json +1 -1
  47. package/src/brand-page/models/brand-page-context.model.ts +3 -0
  48. package/src/brand-page-maker/composables/useEventTracker.ts +23 -0
  49. package/src/brand-page-maker/stores/brandpage-container/brand-page-container-store.ts +36 -0
  50. package/src/brand-page-maker/utils/mixpanel.util.ts +42 -0
  51. package/src/clients/brand-page-client.ts +4 -0
  52. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +4 -0
  53. package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.vue +1 -1
  54. package/src/shared/content-settings/components/generate-ai-button/GenerateAiButton.vue +13 -3
  55. package/src/shared/content-settings/components/generate-ai-modal/GenerateAiModal.vue +27 -5
  56. package/src/shared/content-settings/components/image-field/ImageField.mixin.ts +4 -1
  57. package/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.mixin.ts +2 -0
  58. package/src/shared/content-settings/components/testimonial-items-field/TestimonialItemsField.vue +1 -1
  59. package/src/shared/content-settings/components/text-items-field/TextItemsField.mixin.ts +2 -0
  60. package/src/shared/content-settings/components/text-items-field/TextItemsField.vue +1 -1
  61. package/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.ts +6 -0
  62. package/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.vue +1 -1
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as e, openBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CqA2Cr9V.js";
2
+ import { _ as t } from "./lib-JpOB9SNs.js";
3
3
  const i = {}, h = {
4
4
  width: "275",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as e, openBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CqA2Cr9V.js";
2
+ import { _ as t } from "./lib-JpOB9SNs.js";
3
3
  const i = {}, h = {
4
4
  width: "251",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as e, openBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CqA2Cr9V.js";
2
+ import { _ as t } from "./lib-JpOB9SNs.js";
3
3
  const i = {}, h = {
4
4
  width: "250",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as e, openBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CqA2Cr9V.js";
2
+ import { _ as t } from "./lib-JpOB9SNs.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as e, openBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CqA2Cr9V.js";
2
+ import { _ as t } from "./lib-JpOB9SNs.js";
3
3
  const i = {}, h = {
4
4
  width: "237",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as e, openBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CqA2Cr9V.js";
2
+ import { _ as t } from "./lib-JpOB9SNs.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as e, openBlock as l, createStaticVNode as a } from "vue";
2
- import { _ as t } from "./lib-CqA2Cr9V.js";
2
+ import { _ as t } from "./lib-JpOB9SNs.js";
3
3
  const i = {}, h = {
4
4
  width: "263",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as H, openBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-CqA2Cr9V.js";
2
+ import { _ as e } from "./lib-JpOB9SNs.js";
3
3
  const M = {}, Z = {
4
4
  width: "242",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as H, openBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-CqA2Cr9V.js";
2
+ import { _ as e } from "./lib-JpOB9SNs.js";
3
3
  const i = {}, M = {
4
4
  width: "231",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as H, openBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-CqA2Cr9V.js";
2
+ import { _ as e } from "./lib-JpOB9SNs.js";
3
3
  const M = {}, Z = {
4
4
  width: "230",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as H, openBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-CqA2Cr9V.js";
2
+ import { _ as e } from "./lib-JpOB9SNs.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as H, openBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as e } from "./lib-CqA2Cr9V.js";
2
+ import { _ as e } from "./lib-JpOB9SNs.js";
3
3
  const i = {}, l = {
4
4
  width: "216",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as H, openBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-CqA2Cr9V.js";
2
+ import { _ as M } from "./lib-JpOB9SNs.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -1,5 +1,5 @@
1
1
  import { createElementBlock as H, openBlock as V, createStaticVNode as t } from "vue";
2
- import { _ as M } from "./lib-CqA2Cr9V.js";
2
+ import { _ as M } from "./lib-JpOB9SNs.js";
3
3
  const Z = {}, e = {
4
4
  width: "232",
5
5
  height: "36",
@@ -36,6 +36,7 @@ export interface AbTestResult {
36
36
  }
37
37
  export interface AbTest {
38
38
  bp_3926_freemium_watermark?: AbTestResult;
39
+ bp_4092_rotating_upsells_at_publish?: AbTestResult;
39
40
  bp_4572_ai_text_generation_post_purchase?: AbTestResult;
40
41
  }
41
42
  export declare const MEDIA_SIZES: {
@@ -24,6 +24,7 @@ export const AB_TEST_FLAG = {
24
24
  };
25
25
  const AB_TEST_KEYS = {
26
26
  BP_3926_FREEMIUM_WATERMARK: 'bc-bp-3926-freemium-cta-in-website-editor',
27
+ BP_4092_ROTATING_UPSELLS_AT_PUBLISH: 'bc-bp-4092-rotating-upsells-at-website-publish',
27
28
  BP_4572_AI_TEXT_GENERATION_POST_PURCHASE: 'bc-bp-4572-ai-text-generation-post-purchase',
28
29
  };
29
30
  export const MEDIA_SIZES = {
@@ -1009,6 +1009,7 @@ declare const _default: import("vue").DefineComponent<{}, {
1009
1009
  sendAddContentContinuationEvent: (continuation: string) => void;
1010
1010
  sendUpsellOfferEvent: (upsellType: string) => void;
1011
1011
  sendUpsellOfferActionEvent: (upsellType: string, action: string) => void;
1012
+ sendGenerateTextContinuationEvent: (continuation: string) => void;
1012
1013
  };
1013
1014
  externalEditor: import("@tiptap/vue-3").Editor;
1014
1015
  styleSettingsStore: import("pinia").Store<"uiStyleSettings", import("../../../shared/style-settings/store").StyleSettingsState, {
@@ -42,6 +42,10 @@ export declare const EVENTS: {
42
42
  WEBSITE_MAKER_UPSELL_ACTION: string;
43
43
  WEBSITE_MAKER_SWITCH_LOGO: string;
44
44
  WEBSITE_MAKER_SWITCH_LOGO_MODAL: string;
45
+ WEBSITE_MAKER_AI_GENERATE_TEXT: string;
46
+ WEBSITE_MAKER_AI_REGENERATE_TEXT: string;
47
+ WEBSITE_MAKER_AI_SEND_PROMPT: string;
48
+ WEBSITE_MAKER_AI_COPY_RESPONSE: string;
45
49
  };
46
50
  export declare const SELECT_LOCATIONS: {
47
51
  MAKER_PREVIEW: string;
@@ -62,6 +66,14 @@ export declare const UPGRADE_CTA_LOCATIONS: {
62
66
  SLUG_CHANGE_MANAGE_PAGE: string;
63
67
  GOOGLE_ADSENSE: string;
64
68
  };
69
+ export declare const GENERATE_AI_TEXT_CTA_LOCATIONS: {
70
+ BANNER_DESCRIPTION: string;
71
+ BANNER_TITLE: string;
72
+ ABOUT_TITLE: string;
73
+ ABOUT_PARAGRAPH: string;
74
+ TEXT_ITEM: string;
75
+ TESTIMONIAL_ITEM: string;
76
+ };
65
77
  export declare const TRIGGER_TYPE: {
66
78
  AUTOMATIC: string;
67
79
  USER_TRIGGERED: string;
@@ -74,6 +86,10 @@ export declare const PUBLISH_MODAL_CONTINUATION_EVENTS: {
74
86
  COPY_LINK: string;
75
87
  VIEW_WEBSITE: string;
76
88
  };
89
+ export declare const GENERATE_TEXT_CONTINUATION_EVENTS: {
90
+ USE_TEXT: string;
91
+ EXIT: string;
92
+ };
77
93
  export declare const PUBLISH_OPTION_MODAL_CONTINUATION_EVENTS: {
78
94
  PREMIUM: string;
79
95
  EXIT: string;
@@ -104,5 +120,6 @@ declare const useEventTracker: () => {
104
120
  sendAddContentContinuationEvent: (continuation: string) => void;
105
121
  sendUpsellOfferEvent: (upsellType: string) => void;
106
122
  sendUpsellOfferActionEvent: (upsellType: string, action: string) => void;
123
+ sendGenerateTextContinuationEvent: (continuation: string) => void;
107
124
  };
108
125
  export { useEventTracker };
@@ -25,6 +25,10 @@ export const EVENTS = {
25
25
  WEBSITE_MAKER_UPSELL_ACTION: 'website_maker_upsell_action',
26
26
  WEBSITE_MAKER_SWITCH_LOGO: 'website_maker_switch_logo',
27
27
  WEBSITE_MAKER_SWITCH_LOGO_MODAL: 'website_maker_switch_logo_modal',
28
+ WEBSITE_MAKER_AI_GENERATE_TEXT: 'website_maker_ai_generate_text',
29
+ WEBSITE_MAKER_AI_REGENERATE_TEXT: 'website_maker_ai_regenerate_text',
30
+ WEBSITE_MAKER_AI_SEND_PROMPT: 'website_maker_send_prompt',
31
+ WEBSITE_MAKER_AI_COPY_RESPONSE: 'website_maker_copy_response',
28
32
  };
29
33
  export const SELECT_LOCATIONS = {
30
34
  MAKER_PREVIEW: 'maker_preview',
@@ -45,6 +49,14 @@ export const UPGRADE_CTA_LOCATIONS = {
45
49
  SLUG_CHANGE_MANAGE_PAGE: 'slug_change_manage_page',
46
50
  GOOGLE_ADSENSE: 'google_adsense',
47
51
  };
52
+ export const GENERATE_AI_TEXT_CTA_LOCATIONS = {
53
+ BANNER_DESCRIPTION: 'banner_description',
54
+ BANNER_TITLE: 'banner_title',
55
+ ABOUT_TITLE: 'about_title',
56
+ ABOUT_PARAGRAPH: 'about_paragraph',
57
+ TEXT_ITEM: 'text_item',
58
+ TESTIMONIAL_ITEM: 'testimonial_item',
59
+ };
48
60
  export const TRIGGER_TYPE = {
49
61
  AUTOMATIC: 'automatic',
50
62
  USER_TRIGGERED: 'user_triggered',
@@ -57,6 +69,10 @@ export const PUBLISH_MODAL_CONTINUATION_EVENTS = {
57
69
  COPY_LINK: 'copy_link',
58
70
  VIEW_WEBSITE: 'view_website',
59
71
  };
72
+ export const GENERATE_TEXT_CONTINUATION_EVENTS = {
73
+ USE_TEXT: 'use_text',
74
+ EXIT: 'exit',
75
+ };
60
76
  export const PUBLISH_OPTION_MODAL_CONTINUATION_EVENTS = {
61
77
  PREMIUM: 'premium',
62
78
  EXIT: 'exit',
@@ -212,6 +228,11 @@ const useEventTracker = () => {
212
228
  action,
213
229
  });
214
230
  },
231
+ sendGenerateTextContinuationEvent: (continuation) => {
232
+ _publishEvent(EVENTS.WEBSITE_MAKER_AI_GENERATE_TEXT, {
233
+ continuation,
234
+ });
235
+ },
215
236
  };
216
237
  };
217
238
  export { useEventTracker };
@@ -255,6 +255,10 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
255
255
  if (!response) {
256
256
  throw new Error('Failed to set brand page slug');
257
257
  }
258
+ if (response.websiteUpsellAbTestKey) {
259
+ this.abTests.bp_4092_rotating_upsells_at_publish = getValueType(response.websiteUpsellAbTestKey, response.websiteUpsellAbTestValue);
260
+ eventTracker.sendExperimentStartedEvent(response.websiteUpsellAbTestKey, response.websiteUpsellAbTestValue);
261
+ }
258
262
  if (response.status) {
259
263
  await this.setBrandPageStatus(response.status);
260
264
  }
@@ -353,6 +357,10 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
353
357
  if (!response) {
354
358
  throw new Error('Failed to set brand page slug');
355
359
  }
360
+ if (response.websiteUpsellAbTestKey) {
361
+ this.abTests.bp_4092_rotating_upsells_at_publish = getValueType(response.websiteUpsellAbTestKey, response.websiteUpsellAbTestValue);
362
+ eventTracker.sendExperimentStartedEvent(response.websiteUpsellAbTestKey, response.websiteUpsellAbTestValue);
363
+ }
356
364
  await brandPageClient.getBrandPageIsCustomDomainEnabledAsync(brandPageMakerStore.brandPageType, this.designDraftToken);
357
365
  const updatedIsCustomDomainEnabled = await brandPageClient.updateBrandPageIsCustomDomainEnabledAsync(brandPageMakerStore.brandPageType, this.designDraftToken, true);
358
366
  this.setBrandPageIsCustomDomainEnabled({
@@ -553,6 +561,10 @@ export const useBrandPageContainerStore = defineStore('brandPageContainer', {
553
561
  if (!response) {
554
562
  return false;
555
563
  }
564
+ if (response.websiteUpsellAbTestKey) {
565
+ this.abTests.bp_4092_rotating_upsells_at_publish = getValueType(response.websiteUpsellAbTestKey, response.websiteUpsellAbTestValue);
566
+ eventTracker.sendExperimentStartedEvent(response.websiteUpsellAbTestKey, response.websiteUpsellAbTestValue);
567
+ }
556
568
  if (this.brandPageStatus !== response.status) {
557
569
  await this.setBrandPageStatus(response.status);
558
570
  }
@@ -0,0 +1 @@
1
+ export declare const getCtaLocationFromFieldType: (fieldType: string, sectionType?: string) => string;
@@ -0,0 +1,29 @@
1
+ import { GENERATE_AI_TEXT_CTA_LOCATIONS } from '../composables/useEventTracker';
2
+ export const getCtaLocationFromFieldType = (fieldType, sectionType) => {
3
+ if (fieldType === 'text') {
4
+ return GENERATE_AI_TEXT_CTA_LOCATIONS.TEXT_ITEM;
5
+ }
6
+ if (fieldType === 'testimonials') {
7
+ return GENERATE_AI_TEXT_CTA_LOCATIONS.TESTIMONIAL_ITEM;
8
+ }
9
+ if (sectionType === 'banner-section') {
10
+ if (fieldType === 'description') {
11
+ return GENERATE_AI_TEXT_CTA_LOCATIONS.BANNER_DESCRIPTION;
12
+ }
13
+ if (fieldType === 'title') {
14
+ return GENERATE_AI_TEXT_CTA_LOCATIONS.BANNER_TITLE;
15
+ }
16
+ }
17
+ if (sectionType === 'about-section') {
18
+ if (fieldType === 'title') {
19
+ return GENERATE_AI_TEXT_CTA_LOCATIONS.ABOUT_TITLE;
20
+ }
21
+ if (fieldType === 'paragraph') {
22
+ return GENERATE_AI_TEXT_CTA_LOCATIONS.ABOUT_PARAGRAPH;
23
+ }
24
+ }
25
+ // Fallback: try to match directly with field type
26
+ // This handles cases where fieldType might already be in the correct format
27
+ const matchingLocation = Object.values(GENERATE_AI_TEXT_CTA_LOCATIONS).find((location) => location === fieldType);
28
+ return matchingLocation || fieldType;
29
+ };
@@ -5,12 +5,16 @@ export interface SaveBrandPageResponse {
5
5
  status: string;
6
6
  slug: string;
7
7
  canPublish: boolean;
8
+ websiteUpsellAbTestKey: string;
9
+ websiteUpsellAbTestValue: string;
8
10
  websiteUpsellModalViewModel: any;
9
11
  }
10
12
  export interface PublishBrandPageResponse {
11
13
  designDraftToken: string;
12
14
  status: string;
13
15
  slug: string;
16
+ websiteUpsellAbTestKey: string;
17
+ websiteUpsellAbTestValue: string;
14
18
  websiteUpsellModalViewModel: any;
15
19
  }
16
20
  export interface LogoTemplate {
@@ -8490,23 +8490,23 @@ input[type='number'][data-v-28a532b4] {
8490
8490
  }
8491
8491
  }
8492
8492
 
8493
- .c-modal-dcom[data-v-33680d77] {
8493
+ .c-modal-dcom[data-v-b47b9e26] {
8494
8494
  background-color: #eceefe;
8495
8495
  border: 1px solid #3247c5;
8496
8496
  }
8497
- .c-modal-bc[data-v-33680d77] {
8497
+ .c-modal-bc[data-v-b47b9e26] {
8498
8498
  background-color: #cceaf7;
8499
8499
  border: 1px solid #0097d7;
8500
8500
  }
8501
- .typing-cursor[data-v-33680d77] {
8501
+ .typing-cursor[data-v-b47b9e26] {
8502
8502
  display: inline-block;
8503
- -webkit-animation: blink-33680d77 1s step-end infinite;
8504
- animation: blink-33680d77 1s step-end infinite;
8503
+ -webkit-animation: blink-b47b9e26 1s step-end infinite;
8504
+ animation: blink-b47b9e26 1s step-end infinite;
8505
8505
  color: #3247c5;
8506
8506
  font-weight: bold;
8507
8507
  margin-left: 2px;
8508
8508
  }
8509
- .prompt-textarea[data-v-33680d77] {
8509
+ .prompt-textarea[data-v-b47b9e26] {
8510
8510
  line-height: 1.5;
8511
8511
  min-height: 4.5rem; /* Minimum 3 rows on mobile (1.5em * 3) */
8512
8512
  max-height: calc(7.5em + 1rem); /* Maximum 5 rows */
@@ -8517,49 +8517,49 @@ input[type='number'][data-v-28a532b4] {
8517
8517
 
8518
8518
  /* Desktop: smaller minimum height */
8519
8519
  @media (min-width: 640px) {
8520
- .prompt-textarea[data-v-33680d77] {
8520
+ .prompt-textarea[data-v-b47b9e26] {
8521
8521
  min-height: 2.5rem; /* Single line on desktop */
8522
8522
  }
8523
8523
  }
8524
- .prompt-textarea[data-v-33680d77]::-webkit-input-placeholder {
8524
+ .prompt-textarea[data-v-b47b9e26]::-webkit-input-placeholder {
8525
8525
  color: rgb(96 96 96 / 50%);
8526
8526
  }
8527
- .prompt-textarea[data-v-33680d77]::-moz-placeholder {
8527
+ .prompt-textarea[data-v-b47b9e26]::-moz-placeholder {
8528
8528
  color: rgb(96 96 96 / 50%);
8529
8529
  }
8530
- .prompt-textarea[data-v-33680d77]:-ms-input-placeholder {
8530
+ .prompt-textarea[data-v-b47b9e26]:-ms-input-placeholder {
8531
8531
  color: rgb(96 96 96 / 50%);
8532
8532
  }
8533
- .prompt-textarea[data-v-33680d77]::-ms-input-placeholder {
8533
+ .prompt-textarea[data-v-b47b9e26]::-ms-input-placeholder {
8534
8534
  color: rgb(96 96 96 / 50%);
8535
8535
  }
8536
- .prompt-textarea[data-v-33680d77]::placeholder {
8536
+ .prompt-textarea[data-v-b47b9e26]::placeholder {
8537
8537
  color: rgb(96 96 96 / 50%);
8538
8538
  }
8539
8539
 
8540
8540
  /* Ensure border is visible when scrollbar appears */
8541
- .prompt-textarea[data-v-33680d77]::-webkit-scrollbar {
8541
+ .prompt-textarea[data-v-b47b9e26]::-webkit-scrollbar {
8542
8542
  width: 8px;
8543
8543
  }
8544
- .prompt-textarea[data-v-33680d77]::-webkit-scrollbar-track {
8544
+ .prompt-textarea[data-v-b47b9e26]::-webkit-scrollbar-track {
8545
8545
  background: transparent;
8546
8546
  margin: 2px;
8547
8547
  }
8548
- .prompt-textarea[data-v-33680d77]::-webkit-scrollbar-thumb {
8548
+ .prompt-textarea[data-v-b47b9e26]::-webkit-scrollbar-thumb {
8549
8549
  background: rgb(96 96 96 / 30%);
8550
8550
  border-radius: 4px;
8551
8551
  }
8552
- .prompt-textarea[data-v-33680d77]::-webkit-scrollbar-thumb:hover {
8552
+ .prompt-textarea[data-v-b47b9e26]::-webkit-scrollbar-thumb:hover {
8553
8553
  background: rgb(96 96 96 / 50%);
8554
8554
  }
8555
- .text-grayscale[data-v-33680d77] {
8555
+ .text-grayscale[data-v-b47b9e26] {
8556
8556
  color: rgb(96 96 96 / 50%);
8557
8557
  }
8558
- .text-success[data-v-33680d77] {
8558
+ .text-success[data-v-b47b9e26] {
8559
8559
  --tw-text-opacity: 1;
8560
8560
  color: rgb(29 134 13 / var(--tw-text-opacity));
8561
8561
  }
8562
- @-webkit-keyframes blink-33680d77 {
8562
+ @-webkit-keyframes blink-b47b9e26 {
8563
8563
  0%,
8564
8564
  50% {
8565
8565
  opacity: 1;
@@ -8569,7 +8569,7 @@ input[type='number'][data-v-28a532b4] {
8569
8569
  opacity: 0;
8570
8570
  }
8571
8571
  }
8572
- @keyframes blink-33680d77 {
8572
+ @keyframes blink-b47b9e26 {
8573
8573
  0%,
8574
8574
  50% {
8575
8575
  opacity: 1;
@@ -8580,7 +8580,7 @@ input[type='number'][data-v-28a532b4] {
8580
8580
  }
8581
8581
  }
8582
8582
 
8583
- .testimonial-preview[data-v-a66d4bed] {
8583
+ .testimonial-preview[data-v-e9db8d8a] {
8584
8584
  overflow: hidden;
8585
8585
  text-overflow: ellipsis;
8586
8586
  max-height: 21px;
@@ -8592,7 +8592,7 @@ input[type='number'][data-v-28a532b4] {
8592
8592
  align-items: flex-start;
8593
8593
  }
8594
8594
 
8595
- .text-item-preview[data-v-7f11c2cf] {
8595
+ .text-item-preview[data-v-8e7c5c47] {
8596
8596
  overflow: hidden;
8597
8597
  text-overflow: ellipsis;
8598
8598
  max-height: 21px;
@@ -8805,23 +8805,23 @@ input[type='number'][data-v-28a532b4] {
8805
8805
  }
8806
8806
  }
8807
8807
 
8808
- .c-modal-dcom[data-v-33680d77] {
8808
+ .c-modal-dcom[data-v-b47b9e26] {
8809
8809
  background-color: #eceefe;
8810
8810
  border: 1px solid #3247c5;
8811
8811
  }
8812
- .c-modal-bc[data-v-33680d77] {
8812
+ .c-modal-bc[data-v-b47b9e26] {
8813
8813
  background-color: #cceaf7;
8814
8814
  border: 1px solid #0097d7;
8815
8815
  }
8816
- .typing-cursor[data-v-33680d77] {
8816
+ .typing-cursor[data-v-b47b9e26] {
8817
8817
  display: inline-block;
8818
- -webkit-animation: blink-33680d77 1s step-end infinite;
8819
- animation: blink-33680d77 1s step-end infinite;
8818
+ -webkit-animation: blink-b47b9e26 1s step-end infinite;
8819
+ animation: blink-b47b9e26 1s step-end infinite;
8820
8820
  color: #3247c5;
8821
8821
  font-weight: bold;
8822
8822
  margin-left: 2px;
8823
8823
  }
8824
- .prompt-textarea[data-v-33680d77] {
8824
+ .prompt-textarea[data-v-b47b9e26] {
8825
8825
  line-height: 1.5;
8826
8826
  min-height: 4.5rem; /* Minimum 3 rows on mobile (1.5em * 3) */
8827
8827
  max-height: calc(7.5em + 1rem); /* Maximum 5 rows */
@@ -8832,49 +8832,49 @@ input[type='number'][data-v-28a532b4] {
8832
8832
 
8833
8833
  /* Desktop: smaller minimum height */
8834
8834
  @media (min-width: 640px) {
8835
- .prompt-textarea[data-v-33680d77] {
8835
+ .prompt-textarea[data-v-b47b9e26] {
8836
8836
  min-height: 2.5rem; /* Single line on desktop */
8837
8837
  }
8838
8838
  }
8839
- .prompt-textarea[data-v-33680d77]::-webkit-input-placeholder {
8839
+ .prompt-textarea[data-v-b47b9e26]::-webkit-input-placeholder {
8840
8840
  color: rgb(96 96 96 / 50%);
8841
8841
  }
8842
- .prompt-textarea[data-v-33680d77]::-moz-placeholder {
8842
+ .prompt-textarea[data-v-b47b9e26]::-moz-placeholder {
8843
8843
  color: rgb(96 96 96 / 50%);
8844
8844
  }
8845
- .prompt-textarea[data-v-33680d77]:-ms-input-placeholder {
8845
+ .prompt-textarea[data-v-b47b9e26]:-ms-input-placeholder {
8846
8846
  color: rgb(96 96 96 / 50%);
8847
8847
  }
8848
- .prompt-textarea[data-v-33680d77]::-ms-input-placeholder {
8848
+ .prompt-textarea[data-v-b47b9e26]::-ms-input-placeholder {
8849
8849
  color: rgb(96 96 96 / 50%);
8850
8850
  }
8851
- .prompt-textarea[data-v-33680d77]::placeholder {
8851
+ .prompt-textarea[data-v-b47b9e26]::placeholder {
8852
8852
  color: rgb(96 96 96 / 50%);
8853
8853
  }
8854
8854
 
8855
8855
  /* Ensure border is visible when scrollbar appears */
8856
- .prompt-textarea[data-v-33680d77]::-webkit-scrollbar {
8856
+ .prompt-textarea[data-v-b47b9e26]::-webkit-scrollbar {
8857
8857
  width: 8px;
8858
8858
  }
8859
- .prompt-textarea[data-v-33680d77]::-webkit-scrollbar-track {
8859
+ .prompt-textarea[data-v-b47b9e26]::-webkit-scrollbar-track {
8860
8860
  background: transparent;
8861
8861
  margin: 2px;
8862
8862
  }
8863
- .prompt-textarea[data-v-33680d77]::-webkit-scrollbar-thumb {
8863
+ .prompt-textarea[data-v-b47b9e26]::-webkit-scrollbar-thumb {
8864
8864
  background: rgb(96 96 96 / 30%);
8865
8865
  border-radius: 4px;
8866
8866
  }
8867
- .prompt-textarea[data-v-33680d77]::-webkit-scrollbar-thumb:hover {
8867
+ .prompt-textarea[data-v-b47b9e26]::-webkit-scrollbar-thumb:hover {
8868
8868
  background: rgb(96 96 96 / 50%);
8869
8869
  }
8870
- .text-grayscale[data-v-33680d77] {
8870
+ .text-grayscale[data-v-b47b9e26] {
8871
8871
  color: rgb(96 96 96 / 50%);
8872
8872
  }
8873
- .text-success[data-v-33680d77] {
8873
+ .text-success[data-v-b47b9e26] {
8874
8874
  --tw-text-opacity: 1;
8875
8875
  color: rgb(29 134 13 / var(--tw-text-opacity));
8876
8876
  }
8877
- @-webkit-keyframes blink-33680d77 {
8877
+ @-webkit-keyframes blink-b47b9e26 {
8878
8878
  0%,
8879
8879
  50% {
8880
8880
  opacity: 1;
@@ -8884,7 +8884,7 @@ input[type='number'][data-v-28a532b4] {
8884
8884
  opacity: 0;
8885
8885
  }
8886
8886
  }
8887
- @keyframes blink-33680d77 {
8887
+ @keyframes blink-b47b9e26 {
8888
8888
  0%,
8889
8889
  50% {
8890
8890
  opacity: 1;
@@ -8895,7 +8895,7 @@ input[type='number'][data-v-28a532b4] {
8895
8895
  }
8896
8896
  }
8897
8897
 
8898
- .testimonial-preview[data-v-a66d4bed] {
8898
+ .testimonial-preview[data-v-e9db8d8a] {
8899
8899
  overflow: hidden;
8900
8900
  text-overflow: ellipsis;
8901
8901
  max-height: 21px;
@@ -8907,7 +8907,7 @@ input[type='number'][data-v-28a532b4] {
8907
8907
  align-items: flex-start;
8908
8908
  }
8909
8909
 
8910
- .text-item-preview[data-v-7f11c2cf] {
8910
+ .text-item-preview[data-v-8e7c5c47] {
8911
8911
  overflow: hidden;
8912
8912
  text-overflow: ellipsis;
8913
8913
  max-height: 21px;