@antscorp/antsomi-ui 1.3.5-beta.813 → 1.3.5-beta.814

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.
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import type { PayloadInfo } from '@antscorp/antsomi-ui/es/types';
3
2
  export type TDisplayFormat = 'number' | 'percentage' | 'currency' | 'datetime';
4
3
  type DisplayFormatProps = {
@@ -15,10 +15,10 @@ import '@yaireo/tagify/dist/tagify.css';
15
15
  // Styled
16
16
  import { TagTextArea, TagifyWrapper, WrapperPlaceHolder } from './styled';
17
17
  // Utils
18
- import { parseTagStringToTagify, convertInputStringToOriginal, emojiManufacturer, getEmojiTag, isPersonalizeTagType, generateTagContent, unescapeString, } from './utils';
18
+ import { parseTagStringToTagify, convertInputStringToOriginal, emojiManufacturer, getEmojiTag, isPersonalizeTagType, generateTagContent, unescapeString, isValidTagType, } from './utils';
19
19
  import { acceptablePatternChecking, detectURLRegex, getCachedRegex, getPersonalizeTagInfo, patternHandlers, } from './patternHandlers';
20
20
  // Constants
21
- import { DETECT_LINK, EMOJI, PERSONALIZE_PTN, SHORT_LINK, SHORT_LINK_PTN, defaultCssVariables, tagifyDefaultProps, } from './constants';
21
+ import { DETECT_LINK, EMOJI, PERSONALIZE_PTN, PROMOTION_CODE, SHORT_LINK, SHORT_LINK_PTN, defaultCssVariables, tagifyDefaultProps, } from './constants';
22
22
  const TagifyInput = forwardRef((props, ref) => {
23
23
  // Props
24
24
  const { initialValue, escapeHTML, status, readonly, readonlyTag, disabled, maxLength, maxHeight, minWidth, placeholder, acceptableTagPattern, mapAttributes, maxPersonalizeTags, name, children, cssTagifyVariables, onTagClick, onChange, } = props;
@@ -89,7 +89,7 @@ const TagifyInput = forwardRef((props, ref) => {
89
89
  const convertedValue = convertInputStringToOriginal(inputValue);
90
90
  onChange(convertedValue);
91
91
  // NOTE: place to refactor if not need to add space after the tag
92
- const spaceEle = tagifyRef.current.insertAfterTag(newTagEle, '\u00A0'); // <- adds space after the tag
92
+ const spaceEle = tagifyRef.current.insertAfterTag(newTagEle, ' '); // <- adds space after the tag
93
93
  tagifyRef.current.placeCaretAfterNode(spaceEle);
94
94
  }
95
95
  }
@@ -107,7 +107,7 @@ const TagifyInput = forwardRef((props, ref) => {
107
107
  const currentTagData = tagifyRef.current.getSetTagData(currentTagEle);
108
108
  const currentTagValue = currentTagData?.value;
109
109
  const newTagValue = newTag.value;
110
- const spaceEle = tagifyRef.current.insertAfterTag(currentTagEle, '\u00A0'); // <- adds space after the tag to keep valid caret positioning
110
+ const spaceEle = tagifyRef.current.insertAfterTag(currentTagEle, ' '); // <- adds space after the tag to keep valid caret positioning
111
111
  tagifyRef.current.replaceTag(currentTagEle, newTag);
112
112
  // Only update data if value is changed
113
113
  if (currentTagValue !== newTagValue) {
@@ -127,11 +127,13 @@ const TagifyInput = forwardRef((props, ref) => {
127
127
  event.stopPropagation();
128
128
  event.preventDefault();
129
129
  if (event.detail && onTagClick) {
130
- const { tagify, tag } = event.detail;
131
- const readonlyTag = tag.getAttribute('readonly');
130
+ const { tagify, tag, data } = event.detail;
131
+ const { type } = data;
132
+ const isValidType = isValidTagType(type);
133
+ const readonlyTag = tag.getAttribute('readonly-tag');
132
134
  const { readonly } = tagify.settings;
133
135
  // Prevent to click on tag if readonly
134
- if (readonly || (readonlyTag && readonlyTag === 'true'))
136
+ if (readonly || (readonlyTag && readonlyTag === 'true') || !isValidType)
135
137
  return;
136
138
  onTagClick(event.detail);
137
139
  }
@@ -216,14 +218,23 @@ const TagifyInput = forwardRef((props, ref) => {
216
218
  while ((match = regex.exec(value)) !== null) {
217
219
  const [, personalizeContent] = match;
218
220
  const [tagCode] = personalizeContent.split('||');
219
- const { label: tagLabel } = getPersonalizeTagInfo(tagCode, attributes);
221
+ const { label: tagLabel, isValid, message, type, } = getPersonalizeTagInfo(tagCode, attributes);
222
+ const isPromotionCode = type === PROMOTION_CODE;
220
223
  const tagTextNode = tagifyRef.current?.getTagTextNode(tagElement);
224
+ /*
225
+ * Just only update to the correct text of the tag
226
+ * NOTE: Do not actually affect raw data
227
+ */
221
228
  if (tagTextNode) {
222
- /*
223
- * Just only update to the correct text of the tag
224
- * NOTE: Do not actually affect raw data
225
- */
226
- tagTextNode.textContent = tagLabel;
229
+ if (isPromotionCode && !isValid && message) {
230
+ // Disabled click event to avoid click event handler conflict
231
+ tagElement.setAttribute('readonly-tag', 'true');
232
+ tagTextNode.textContent = `${tagLabel} ⚠️`;
233
+ tagTextNode.setAttribute('title', message);
234
+ }
235
+ else {
236
+ tagTextNode.textContent = tagLabel;
237
+ }
227
238
  }
228
239
  }
229
240
  }
@@ -445,15 +456,15 @@ const TagifyInput = forwardRef((props, ref) => {
445
456
  tagElementList.forEach((tagElement) => {
446
457
  const tagType = _.get(tagElement, '__tagifyTagData.type', '');
447
458
  const isPersonalizeTag = isPersonalizeTagType(tagType);
459
+ // Only support readonly for personalize tag
448
460
  if (!isPersonalizeTag)
449
461
  return;
462
+ // Caution: Don't use readonly attribute -> readonly attribute Tagify library managed
450
463
  if (readonlyTag) {
451
- tagElement.setAttribute('readonly', readonlyTag.toString());
464
+ tagElement.setAttribute('readonly-tag', readonlyTag.toString());
452
465
  }
453
466
  else {
454
- // Need to remove readonly attribute
455
- // -> because can not to remove a tag if has readonly attribute exists in tag
456
- tagElement.removeAttribute('readonly');
467
+ tagElement.removeAttribute('readonly-tag');
457
468
  }
458
469
  });
459
470
  }
@@ -2,6 +2,8 @@ import type { AcceptablePattern, MapAttributesProps, PatterTagName, PatternHandl
2
2
  interface TagInfo {
3
3
  label: string;
4
4
  type: string;
5
+ isValid: boolean;
6
+ message?: string;
5
7
  }
6
8
  /**
7
9
  * Retrieves a cached regular expression or compiles and caches it if not found.
@@ -1,11 +1,13 @@
1
1
  /* eslint-disable no-cond-assign */
2
2
  /* eslint-disable no-console */
3
+ // Libraries
4
+ import { has } from 'lodash';
3
5
  // Utils
4
6
  import { errorWrapper } from './errorWrapper';
5
7
  import { isViberEmoji } from './iconsViber';
6
8
  import { random } from '@antscorp/antsomi-ui/es/utils';
7
9
  // Constants
8
- import { CONTENT_SOURCE_GROUP, EMOJI, EMOJI_COLLECTIONS, LINE_EMOJI_PTN, PERSONALIZE_PTN, PREFIX_PATTERN_LINE_MESSAGE, SHORT_LINK, SHORT_LINK_GENERAL_PTN, SHORT_LINK_INDIVIDUAL_PTN, SHORT_LINK_PTN, SHORT_LINK_TYPE, VIBER_EMOJI_PTN, } from './constants';
10
+ import { CONTENT_SOURCE_GROUP, EMOJI, EMOJI_COLLECTIONS, LINE_EMOJI_PTN, PERSONALIZE_PTN, PREFIX_PATTERN_LINE_MESSAGE, PROMOTION_CODE, SHORT_LINK, SHORT_LINK_GENERAL_PTN, SHORT_LINK_INDIVIDUAL_PTN, SHORT_LINK_PTN, SHORT_LINK_TYPE, VIBER_EMOJI_PTN, } from './constants';
9
11
  /*
10
12
  * Usage to cache compiled regular expressions:
11
13
  * const regex = getCachedRegex(pattern, flags);
@@ -36,7 +38,7 @@ export function acceptablePatternChecking(pattern, acceptablePattern) {
36
38
  }
37
39
  // Helper function to validate URL formats
38
40
  export function validateURL(txt) {
39
- const regexUrl = getCachedRegex("^(https?:\\/\\/)?(([A-Za-z]{3,9}:)?(\\/\\/)?)([A-Za-z0-9\\-._~%]+@)?([A-Za-z0-9\\-._~%]+)(:[0-9]+)?(\\/[A-Za-z0-9\\-._~%!$&'()*+,;=:@]+)*(\\?[A-Za-z0-9\\-._~%!$&'()*+,;=:@/?]*)?(#[A-Za-z0-9\\-._~%!$&'()*+,;=:@/?]*)?$", '', 'checkingURL');
41
+ const regexUrl = getCachedRegex('^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?([\\?&]([^&=]+=[^&=]+)(&([^&=]+=[^&=]+))*)?$', '', 'checkingURL');
40
42
  return regexUrl.test(txt);
41
43
  }
42
44
  /**
@@ -87,19 +89,40 @@ export const getPersonalizeTagInfo = (originalTag, mapAttributes) => {
87
89
  const isCsGroup = type === CONTENT_SOURCE_GROUP;
88
90
  if (!mapAttributes || (!mapAttributes[type] && !isCsGroup)) {
89
91
  // return fallback if no mapping
90
- return { type, label: attributeName || type };
92
+ return { type, label: attributeName || type, isValid: false };
91
93
  }
94
+ // Get label based on mapping
92
95
  const label = isCsGroup
93
96
  ? getContentSourceLabel(attributeName, subAttributeName, mapAttributes)
94
97
  : getLabelAttribute(type, attributeName, subAttributeName, mapAttributes);
98
+ // Check additional case for each tag type
99
+ let [isValid, message] = [true, ''];
100
+ switch (type) {
101
+ case PROMOTION_CODE: {
102
+ // Check if the code is exist in the map
103
+ if (mapAttributes[type] && attributeName) {
104
+ const isExistPromotionPool = has(mapAttributes[type], attributeName);
105
+ if (!isExistPromotionPool) {
106
+ isValid = false;
107
+ message = 'This pool does not exist anymore';
108
+ }
109
+ }
110
+ break;
111
+ }
112
+ default: {
113
+ break;
114
+ }
115
+ }
95
116
  return {
96
117
  type,
118
+ message,
119
+ isValid,
97
120
  label: label || type,
98
121
  };
99
122
  }
100
123
  catch (error) {
101
124
  console.error('Error in getTagLabel', error);
102
- return { label: originalTag, type: originalTag };
125
+ return { label: originalTag, type: originalTag, isValid: false };
103
126
  }
104
127
  };
105
128
  const createTagPattern = (tagInfo) => `[[${JSON.stringify(tagInfo)}]]`;
@@ -67,7 +67,7 @@ export const TagifyWrapper = styled.div `
67
67
  }
68
68
 
69
69
  &__tag {
70
- &[readonly='true'] {
70
+ &[readonly-tag='true'] {
71
71
  cursor: not-allowed;
72
72
  }
73
73
 
@@ -12,8 +12,13 @@ export interface TagifyInputProps {
12
12
  /**
13
13
  * Initial value for the Tagify input field.
14
14
  * Only used when the component is first rendered.
15
+ *
16
+ * @default ''
15
17
  */
16
18
  initialValue: string;
19
+ /**
20
+ * Defines whether the input should escape HTML characters.
21
+ */
17
22
  escapeHTML?: boolean;
18
23
  /**
19
24
  * Optional mapping configuration for custom attributes associated with tags.
@@ -23,6 +28,8 @@ export interface TagifyInputProps {
23
28
  /**
24
29
  * Optional name attribute for the Tagify input field, useful for integration with forms.
25
30
  * Helps link the input with form submissions and data management.
31
+ *
32
+ * @default 'tagifyInput'
26
33
  */
27
34
  name?: string;
28
35
  /**
@@ -30,22 +37,52 @@ export interface TagifyInputProps {
30
37
  * Useful for applying custom styling or theming to the Tagify input.
31
38
  */
32
39
  classNames?: ClassNameSettings;
40
+ /**
41
+ * Defines the placeholder text shown when the input is empty.
42
+ *
43
+ * @default undefined
44
+ */
33
45
  placeholder?: TagifySettings['placeholder'];
46
+ /**
47
+ * Defines whether the input is readonly.
48
+ */
34
49
  readonly?: TagifySettings['readonly'];
50
+ /**
51
+ * Defines whether the input tags is read only not whole input.
52
+ */
35
53
  readonlyTag?: boolean;
54
+ /**
55
+ * Defines whether the input is disabled.
56
+ */
36
57
  disabled?: boolean;
58
+ /**
59
+ * Defines the maximum length of the input value.
60
+ */
37
61
  maxLength?: number;
38
62
  /**
39
63
  * Specifies the maximum number of tags that can be added to the input.
40
64
  * Helps enforce constraints by limiting the number of tags a user can input.
41
65
  */
42
66
  maxPersonalizeTags?: TagifySettings['maxTags'];
67
+ /**
68
+ * Defines the maximum height of the input.
69
+ *
70
+ * @default 266
71
+ */
43
72
  maxHeight?: number;
73
+ /**
74
+ * Defines the minimum width of the input.
75
+ */
44
76
  minWidth?: CSSProperties['minWidth'];
77
+ /**
78
+ * Defines the status of the input, used for styling and validation.
79
+ */
45
80
  status?: StatusType;
46
81
  /**
47
82
  * Defines acceptable patterns or validation rules for tags.
48
83
  * Ensures only tags matching specified patterns can be added, enforcing content rules.
84
+ *
85
+ * @default DEFAULT_ACCEPT_TAGS
49
86
  */
50
87
  acceptableTagPattern: Array<AcceptablePattern>;
51
88
  /**
@@ -65,6 +102,8 @@ export interface TagifyInputProps {
65
102
  /**
66
103
  * Event handler triggered when the input value changes.
67
104
  * Receives the updated input value as a string, allowing for controlled component updates.
105
+ *
106
+ * @default () => {}
68
107
  */
69
108
  onChange: (inputValue: string) => void;
70
109
  }
@@ -66,3 +66,10 @@ export declare const generateTagContent: (params: {
66
66
  * unescapeString('Hello &quot;world&quot; with&nbsp;spaces');
67
67
  */
68
68
  export declare const unescapeString: (str: string) => string;
69
+ /**
70
+ * Checks if the string is a valid tag type.
71
+ * @param str
72
+ *
73
+ * @return boolean
74
+ */
75
+ export declare const isValidTagType: (str: string) => boolean;
@@ -517,3 +517,10 @@ export const unescapeString = (str) => str.replace(/&quot;|&nbsp;|nbsp;/gm, (mat
517
517
  return match;
518
518
  }
519
519
  });
520
+ /**
521
+ * Checks if the string is a valid tag type.
522
+ * @param str
523
+ *
524
+ * @return boolean
525
+ */
526
+ export const isValidTagType = (str) => Object.values(TAG_TYPE).includes(str);
@@ -3,5 +3,4 @@
3
3
  * Asynchronously loads the component for TemplateListing
4
4
  *
5
5
  */
6
- /// <reference types="react" />
7
6
  export declare const TemplateListing: (props: import("./types").TemplateListingProps<{}>) => JSX.Element;
@@ -233,7 +233,7 @@
233
233
  "_BOX_TITL_REMOVE_EVENT_ATTRIBUTE": "イベント属性の削除",
234
234
  "_BOX_TITL_REMOVE_FIELD": "フィールドの削除",
235
235
  "_BOX_TITL_REMOVE_GROUP": "グループの削除",
236
- "_BOX_TITL_REMOVE_IMAGE": "画像を削除する",
236
+ "_BOX_TITL_REMOVE_IMAGE": "画像を削除",
237
237
  "_BOX_TITL_REMOVE_MODEL": "モデルの削除",
238
238
  "_BOX_TITL_REPLACE_FILTER": "フィルターセットを交換する",
239
239
  "_BOX_TITL_SAVE_FILTER": "フィルターセットに名前を付けます",
@@ -2288,7 +2288,7 @@
2288
2288
  "_CHANNEL_DES_WEB_NOTI": "リアルタイムのメッセージを送信して Web サイト訪問者を引きつけ、タイムリーなインタラクションとコンバージョンを促進します",
2289
2289
  "_CHANNEL_DES_APP_NOTI": "即時通知をモバイル アプリのみに送信し、即時のエンゲージメントとインタラクションを促進します",
2290
2290
  "_CHANNEL_DES_EMAIL": "パーソナライズされたメッセージをユーザーの受信箱に直接配信し、ターゲットを絞ったコンテンツでのエンゲージメントとコンバージョンを促進します。",
2291
- "_CHANNEL_DES_SMS": "直接的かつ即時のコミュニケーションを提供し、ユーザーのモバイル デバイスに到達して即時のエンゲージメントとインタラクションを実現します。",
2291
+ "_CHANNEL_DES_SMS": "直接的かつ即時的なコミュニケーションを提供し、ユーザーのモバイルデバイスに到達して即時のエンゲージメントとインタラクションを実現します。",
2292
2292
  "_CHANNEL_DES_SMART_INB": "プッシュ通知のコンテンツを一元管理して管理とエンゲージメントを合理化",
2293
2293
  "_CHANNEL_DES_FB_MESS": "直接的な会話型のコミュニケーションを提供し、使い慣れたソーシャル メディア プラットフォームでユーザーを惹きつけます",
2294
2294
  "_CHANNEL_DES_VIBER": "ダイレクト メッセージング機能を提供し、安全で使い慣れたソーシャル メディア プラットフォームでユーザーを魅了します。",
@@ -2400,7 +2400,7 @@
2400
2400
  "_WEBPER_TEMP_OBJ_INLINE_5": "ソーシャルプルーフディスプレイ",
2401
2401
  "_WEBPER_TEMP_OBJ_INLINE_6": "教育コンテンツ",
2402
2402
  "_WEBPER_TEMP_OBJ_SLIDEIN_1": "リードマグネット",
2403
- "_WEBPER_TEMP_OBJ_SLIDEIN_2": "終了の意図",
2403
+ "_WEBPER_TEMP_OBJ_SLIDEIN_2": "終了意図",
2404
2404
  "_WEBPER_TEMP_OBJ_SLIDEIN_3": "コンテンツティーザー",
2405
2405
  "_WEBPER_TEMP_OBJ_SLIDEIN_4": "アンケートと投票",
2406
2406
  "_WEBPER_TEMP_OBJ_SLIDEIN_5": "ソーシャルプルーフディスプレイ",
@@ -2445,15 +2445,15 @@
2445
2445
  "_OBJ_DES_APP_NOTI_4": "ユーザーの興味や好みに合わせた関連性の高い有益な通知を送信することで、ユーザーの関心を維持し、さらに戻ってくるようにします。",
2446
2446
  "_OBJ_DES_APP_NOTI_5": "アカウント、トランザクション更新などの関連情報をユーザーのブラウザに直接配信します。",
2447
2447
  "_OBJ_DES_EMAIL_1": "魅力的なコンテンツと電子メールの行動喚起 (CTA) でユーザーを Web サイトに誘導します",
2448
- "_OBJ_DES_EMAIL_2": "貴重なコンテンツやインセンティブを提供してサインアップや問い合わせを促進することで見込み顧客を獲得します。",
2449
- "_OBJ_DES_EMAIL_3": "ターゲットを絞ったコンテンツと自動化された電子メール シーケンスを使用して、セールス ファネルを通じてリードを誘導します。",
2448
+ "_OBJ_DES_EMAIL_2": "貴重なコンテンツとインセンティブを提供してサインアップや問い合わせを促進することで見込み顧客を獲得します。",
2449
+ "_OBJ_DES_EMAIL_3": "ターゲットを絞ったコンテンツと自動化された電子メール シーケンスを使用して、セールスファネルを通じてリードを誘導します。",
2450
2450
  "_OBJ_DES_EMAIL_4": "関連するアップデート、オファー、限定コンテンツで顧客の関心とロイヤルティを維持します",
2451
2451
  "_OBJ_DES_EMAIL_5": "製品やサービスを紹介して売上とコンバージョンを促進する",
2452
2452
  "_OBJ_DES_EMAIL_6": "一貫性があり、有益で魅力的なコンテンツを通じてブランド アイデンティティと価値を強化する",
2453
2453
  "_OBJ_DES_SMS_1": "時間制限のある更新、プロモーション、アラートでユーザーに即座に連絡します",
2454
2454
  "_OBJ_DES_SMS_2": "ターゲットを絞ったプロモーションやオファーをブロードキャストして、エンゲージメントと販売を促進します",
2455
2455
  "_OBJ_DES_SMS_3": "情報の再発行や登録確認など、迅速かつ便利なサポートを提供します",
2456
- "_OBJ_DES_SMS_4": "予定や予約のリマインダーや確認を送信してノーショーを減らします",
2456
+ "_OBJ_DES_SMS_4": "予定や予約のリマインダーと確認を送信してノーショーを減らします",
2457
2457
  "_OBJ_DES_SMS_5": "注文確認、出荷通知、アカウント更新をリアルタイムで提供します",
2458
2458
  "_OBJ_DES_SMART_INB_1": "通知を集約し、ユーザーがメッセージを 1 か所で簡単に表示および管理できるようにします。",
2459
2459
  "_OBJ_DES_SMART_INB_2": "プラットフォーム間で通知にアクセスし、操作するためのシームレスで直感的なインターフェイスを提供します。",
@@ -2461,12 +2461,12 @@
2461
2461
  "_OBJ_DES_SMART_INB_4": "Web プッシュやアプリ プッシュなどのさまざまなチャネルからの通知を統合し、ユーザーとの一貫性のある一貫したコミュニケーションを確保します。",
2462
2462
  "_OBJ_DES_FB_MESS_1": "ターゲットを絞ったプロモーションやオファーをブロードキャストして、エンゲージメントと販売を促進します",
2463
2463
  "_OBJ_DES_FB_MESS_2": "鮮やかなメッセージ テンプレートを使用してタイムリーで関連性のある更新を提供します",
2464
- "_OBJ_DES_FB_MESS_3": "タイムリーかつ効率的な顧客サポートを提供し、メッセンジャー内で直接問い合わせに対応し、問題を解決します。",
2465
- "_OBJ_DES_FB_MESS_4": "予定や予約のリマインダーや確認を送信してノーショーを減らします",
2464
+ "_OBJ_DES_FB_MESS_3": "タイムリーで効率的な顧客サポートを提供し、メッセンジャー内で直接問い合わせに対応し、問題を解決します。",
2465
+ "_OBJ_DES_FB_MESS_4": "予定や予約のリマインダーと確認を送信してノーショーを減らします",
2466
2466
  "_OBJ_DES_FB_MESS_5": "アンケートやインタラクティブなテンプレートを通じて、ユーザーから貴重な洞察とフィードバックを直接収集します",
2467
2467
  "_OBJ_DES_VIBER_1": "ターゲットを絞ったプロモーションやオファーをブロードキャストして、エンゲージメントと販売を促進します",
2468
2468
  "_OBJ_DES_VIBER_2": "鮮やかなメッセージ テンプレートを使用してタイムリーで関連性のある更新を提供します",
2469
- "_OBJ_DES_VIBER_3": "予定や予約のリマインダーや確認を送信してノーショーを減らします",
2469
+ "_OBJ_DES_VIBER_3": "予定や予約のリマインダーと確認を送信してノーショーを減らします",
2470
2470
  "_OBJ_DES_VIBER_4": "注文確認、配送の最新情報、または予約のリマインダーを送信する",
2471
2471
  "_OBJ_DES_VIBER_5": "アンケートやインタラクティブなテンプレートを通じて、ユーザーから貴重な洞察とフィードバックを直接収集します",
2472
2472
  "_OBJ_DES_ZALO_1": "ターゲットを絞ったプロモーションやオファーをブロードキャストして、エンゲージメントと販売を促進します",
@@ -2477,17 +2477,17 @@
2477
2477
  "_OBJ_DES_WHATSAPP_1": "ターゲットを絞ったプロモーションやオファーをブロードキャストして、エンゲージメントと販売を促進します",
2478
2478
  "_OBJ_DES_WHATSAPP_2": "鮮やかなメッセージ テンプレートを使用してタイムリーで関連性のある更新を提供します",
2479
2479
  "_OBJ_DES_WHATSAPP_3": "インタラクティブな要素を使用してセールスファネルを通じてリードと見込み顧客を育成する",
2480
- "_OBJ_DES_WHATSAPP_4": "予定や予約のリマインダーや確認を送信してノーショーを減らします",
2480
+ "_OBJ_DES_WHATSAPP_4": "予定や予約のリマインダーと確認を送信してノーショーを減らします",
2481
2481
  "_OBJ_DES_WHATSAPP_5": "重要なお知らせ、アップデート、ニュースをユーザーと共有して最新情報を入手します。",
2482
2482
  "_OBJ_DES_TELEGRAM_1": "ターゲットを絞ったプロモーションやオファーをブロードキャストして、エンゲージメントと販売を促進します",
2483
2483
  "_OBJ_DES_TELEGRAM_2": "鮮やかなメッセージ テンプレートを使用してタイムリーで関連性のある更新を提供します",
2484
- "_OBJ_DES_TELEGRAM_3": "インタラクティブなテンプレート要素を使用して販売目標到達プロセスをガイドし、リードと見込み客を育成します。",
2485
- "_OBJ_DES_TELEGRAM_4": "予定や予約のリマインダーや確認を送信してノーショーを減らします",
2484
+ "_OBJ_DES_TELEGRAM_3": "インタラクティブなテンプレート要素を使用してセールスファネルを誘導し、リードと見込み顧客を育成します。",
2485
+ "_OBJ_DES_TELEGRAM_4": "予定や予約のリマインダーと確認を送信してノーショーを減らします",
2486
2486
  "_OBJ_DES_TELEGRAM_5": "重要なお知らせ、アップデート、ニュースをユーザーと共有して最新情報を入手します。",
2487
2487
  "_OBJ_DES_LINE_1": "ターゲットを絞ったプロモーションやオファーをブロードキャストして、エンゲージメントと販売を促進します",
2488
2488
  "_OBJ_DES_LINE_2": "Line のリッチ メニューを利用して、メッセージ内のインタラクティブなオプションとナビゲーションをユーザーに提供します",
2489
- "_OBJ_DES_LINE_3": "インタラクティブなテンプレート要素を使用して販売目標到達プロセスをガイドし、リードと見込み客を育成します。",
2490
- "_OBJ_DES_LINE_4": "予定や予約のリマインダーや確認を送信してノーショーを減らします",
2489
+ "_OBJ_DES_LINE_3": "インタラクティブなテンプレート要素を使用してセールスファネルを誘導し、リードと見込み顧客を育成します。",
2490
+ "_OBJ_DES_LINE_4": "予定や予約のリマインダーと確認を送信してノーショーを減らします",
2491
2491
  "_OBJ_DES_LINE_5": "重要なお知らせ、アップデート、ニュースをユーザーと共有して最新情報を入手します。",
2492
2492
  "_OBJ_DES_FILE_TRANSFER_1": "さまざまなシステム間での大規模なデータセットの共有を自動化し、より迅速かつ正確なデータ処理を実現します。",
2493
2493
  "_OBJ_DES_FILE_TRANSFER_2": "マーケティング資料やキャンペーン資産をチームメンバーや外部関係者に簡単に配布し、より良いコラボレーションとコミュニケーションを促進します。",
@@ -2502,17 +2502,17 @@
2502
2502
  "_WEBPER_TEMP_OBJ_DES_POP_3": "追加購入を促すために補完的な製品やアップグレードを提案する",
2503
2503
  "_WEBPER_TEMP_OBJ_DES_POP_4": "躊躇する訪問者をさらに滞在させ、さらに探索したくなる魅力的なオファーで出口をチャンスに変えます。",
2504
2504
  "_WEBPER_TEMP_OBJ_DES_POP_5": "重要なニュースやイベントを視聴者に直接ブロードキャストして最新情報を提供します",
2505
- "_WEBPER_TEMP_OBJ_DES_POP_6": "Cookie の使用についてユーザーの同意を得ることで、視聴者の安心感とプライバシー規制の遵守を確保します。",
2505
+ "_WEBPER_TEMP_OBJ_DES_POP_6": "Cookie の使用についてユーザーの同意を得ることで、視聴者の安心とプライバシー規制の遵守を確保します。",
2506
2506
  "_WEBPER_TEMP_OBJ_DES_POP_7": "CDP 365 からのデータを利用して、パーソナライズされた製品の推奨事項を表示し、各訪問者の興味や過去のやり取りに合わせて調整できます。",
2507
2507
  "_WEBPER_TEMP_OBJ_DES_POP_8": "ターゲットを絞ったオファー、インセンティブ、またはリマインダーを使用して、躊躇している買い物客に購入を完了させるよう促します。",
2508
2508
  "_WEBPER_TEMP_OBJ_DES_POP_9": "ソーシャル メディア プラットフォームでコミュニティを拡大し、ブランドの存在感を高めます",
2509
2509
  "_WEBPER_TEMP_OBJ_DES_POP_10": "参加者と興奮を促進する注目を集めるイベント プロモーションで成功への舞台を整えます。",
2510
- "_WEBPER_TEMP_OBJ_DES_POP_11": "魅力的な運ゲーやインタラクティブなコンテンツで興奮を呼び起こし、エンゲージメントを高め、ユーザーを何度もリピートさせ続ける",
2510
+ "_WEBPER_TEMP_OBJ_DES_POP_11": "魅力的な運ゲーやインタラクティブなコンテンツで興奮を呼び起こし、エンゲージメントを高め、ユーザーを何度もリピートさせます。",
2511
2511
  "_WEBPER_TEMP_OBJ_DES_POP_12": "新規ユーザーを支援し、提供された回答に基づいてパーソナライズされた推奨事項を提供します",
2512
2512
  "_WEBPER_TEMP_OBJ_DES_POP_13": "直接リンクまたは QR コードを介してモバイル アプリをダウンロードしてスキャンするようユーザーに奨励します。",
2513
- "_WEBPER_TEMP_OBJ_DES_FLOAT_1": "リード獲得フォームを含めて、訪問者にニュースレター、プロモーション、その他のマーケティング資料への登録を促します。",
2513
+ "_WEBPER_TEMP_OBJ_DES_FLOAT_1": "リード獲得フォームを含めて、訪問者にニュースレター、プロモーション、またはその他のマーケティング資料への登録を促します。",
2514
2514
  "_WEBPER_TEMP_OBJ_DES_FLOAT_2": "カウントダウンタイマー付きの特別セールや限定プロモーションで視聴者の目を引き、さらに探索するよう促します。",
2515
- "_WEBPER_TEMP_OBJ_DES_FLOAT_3": "訪問者がスクロールしても表示され続けるバナーを使用して、重要なニュースが確実に注目されるようにし、最新情報を前面と中央に保ちます。",
2515
+ "_WEBPER_TEMP_OBJ_DES_FLOAT_3": "訪問者がスクロールしても表示され続けるバナーを使用して、重要なニュースを確実に目に留まり、更新情報を前面と中央に保ちます。",
2516
2516
  "_WEBPER_TEMP_OBJ_DES_FLOAT_4": "あなたのブランドに対するフレンドリーな意見を確立するために、初めて Web サイトを閲覧する訪問者を歓迎します。",
2517
2517
  "_WEBPER_TEMP_OBJ_DES_FLOAT_5": "ソーシャル メディア プラットフォームでコミュニティを拡大することで、ブランドの存在感を高めます。",
2518
2518
  "_WEBPER_TEMP_OBJ_DES_FLOAT_6": "ブランドロゴを目立つように表示することでアイデンティティを強化し、ブランド認知度を向上させます",
@@ -2537,7 +2537,7 @@
2537
2537
  "_WEBPER_TEMP_OBJ_DES_SLIDEIN_6": "期間限定のオファー、カウントダウンタイマー、またはフラッシュセール通知を提示することで、緊迫感を醸成し、即時行動を促します。",
2538
2538
  "_WEBPER_TEMP_OBJ_DES_SLIDEIN_7": "ターゲットを絞ったオファー、インセンティブ、またはリマインダーを使用して、躊躇している買い物客に購入を完了させるよう促します。",
2539
2539
  "_WEBPER_TEMP_OBJ_DES_SLIDEIN_8": "顧客からの問い合わせの必要性を減らし、ショッピング体験の全体的な満足度を向上させるために、顧客が遭遇する可能性のある一般的な懸念事項や問題のトラブルシューティングに対処する",
2540
- "_WEBPER_TEMP_OBJ_DES_SLIDEIN_9": "登録や出欠確認のオプションを提供して、ウェビナー、ワークショップ、イベントにユーザーを招待し、参加とエンゲージメントを促進します。",
2540
+ "_WEBPER_TEMP_OBJ_DES_SLIDEIN_9": "登録や出欠確認のオプションを提供して、ウェビナー、ワークショップ、イベントに参加するようユーザーを招待し、参加とエンゲージメントを促進します。",
2541
2541
  "_LINE_MESS_OBJ_DES_1": "各ユーザーの好み、行動、過去のやり取りに基づいてメッセージをカスタマイズする",
2542
2542
  "_LINE_MESS_OBJ_DES_2": "画像、ビデオ、ステッカーなどのマルチメディア コンテンツでメッセージを充実させます",
2543
2543
  "_LINE_MESS_OBJ_DES_3": "ユーザーの参加を促すために、クリック可能なボタンなどのインタラクティブな要素を組み込む",
@@ -2545,20 +2545,20 @@
2545
2545
  "_LINE_MESS_OBJ_DES_5": "プロモーション キャンペーンの開始、新製品の発表、限定割引の提供、売上の促進",
2546
2546
  "_LINE_MESS_OBJ_DES_6": "メッセージ テンプレートのインタラクティブな要素を通じて、応答性の高いカスタマー サポートを提供します",
2547
2547
  "_LINE_MESS_OBJ_DES_7": "組み込みのメッセージ テンプレートを使用して回答を求め、アンケートからユーザー情報を収集します",
2548
- "_LINE_RM_DEFAULT_OBJ_DES_1": "よくある質問、連絡先情報、ライブ チャット サポートなどのカスタマー サポート オプションへの素早いアクセスを提供することで、新規フォロワーをサポートします。",
2548
+ "_LINE_RM_DEFAULT_OBJ_DES_1": "よくある質問、連絡先情報、ライブ チャット サポートなどのカスタマー サポート オプションへの素早いアクセスを提供して、新規フォロワーを支援します。",
2549
2549
  "_LINE_RM_DEFAULT_OBJ_DES_2": "特別オファー、割引、プロモーションを強調表示する",
2550
2550
  "_LINE_RM_DEFAULT_OBJ_DES_3": "今後のイベント、ウェビナー、またはワークショップを宣伝する",
2551
2551
  "_LINE_RM_DEFAULT_OBJ_DES_4": "ユーザーを注目の記事、ビデオ、またはブログ投稿に誘導するオプションを提供します",
2552
2552
  "_LINE_RM_DEFAULT_OBJ_DES_5": "他のソーシャル メディア プラットフォームでコミュニティを拡大することで、ブランドの存在感を高めます。",
2553
- "_LINE_RM_DEFAULT_OBJ_DES_6": "メニューの選択に基づいて、さまざまなインタラクションを通じてユーザーをガイドします。\n\n たとえば、「カスタマー サポート」のメニュー項目を選択すると、「技術サポート」や「請求に関する問い合わせ」など、必要なサポートの種類を選択するオプションがユーザーに表示される場合があります。",
2553
+ "_LINE_RM_DEFAULT_OBJ_DES_6": "メニューの選択に基づいて、さまざまな操作を通じてユーザーをガイドします。\n\n たとえば、「カスタマー サポート」のメニュー項目を選択すると、「技術サポート」や「請求に関する問い合わせ」など、必要なサポートの種類を選択するオプションがユーザーに表示される場合があります。",
2554
2554
  "_LINE_RM_DEFAULT_OBJ_DES_7": "購読フォームや登録プロンプトを備えたLDPにユーザーを誘導して、ユーザー情報を取得します。",
2555
2555
  "_LINE_RM_SINGLE_OBJ_DES_1": "各ユーザーの好み、行動、Line チャネルとの過去のやり取りに基づいて、各ユーザーに表示されるメニュー オプションとコンテンツをカスタマイズします。",
2556
2556
  "_LINE_RM_SINGLE_OBJ_DES_2": "各ユーザーの興味、閲覧履歴、人口統計に合わせたパーソナライズされた推奨事項や提案を提供し、関連性とエンゲージメントを強化します。",
2557
- "_LINE_RM_SINGLE_OBJ_DES_3": "ロイヤルティ プログラム、特別オファー、パーソナライズされた報酬を提供して、リピート エンゲージメントを奨励し、長期的なロイヤルティを促進します。",
2557
+ "_LINE_RM_SINGLE_OBJ_DES_3": "ロイヤルティ プログラム、特別オファー、パーソナライズされた特典を提供して、リピート エンゲージメントを奨励し、長期的なロイヤルティを促進します。",
2558
2558
  "_LINE_RM_MULTI_OBJ_DES_1": "ユーザーがタブ間をシームレスに切り替えて、ブラウジング エクスペリエンスを中断することなくさまざまなコンテンツ領域、サービス、または機能を探索できるようにし、柔軟性とユーザー コントロールを強化します。",
2559
2559
  "_LINE_RM_MULTI_OBJ_DES_2": "各ユーザーの好み、行動、Line チャネルとの過去のやり取りに基づいて、各ユーザーに表示されるメニュー オプションとコンテンツをカスタマイズします。",
2560
2560
  "_LINE_RM_MULTI_OBJ_DES_3": "各ユーザーの興味、閲覧履歴、人口統計に合わせたパーソナライズされた推奨事項や提案を提供し、関連性とエンゲージメントを強化します。",
2561
- "_LINE_RM_MULTI_OBJ_DES_4": "ロイヤルティ プログラム、特別オファー、パーソナライズされた報酬を提供して、リピート エンゲージメントを奨励し、長期的なロイヤルティを促進します。",
2561
+ "_LINE_RM_MULTI_OBJ_DES_4": "ロイヤルティ プログラム、特別オファー、パーソナライズされた特典を提供して、リピート エンゲージメントを奨励し、長期的なロイヤルティを促進します。",
2562
2562
  "_CHANNEL_OBJ_CUSTOM_API_1": "自動化の強化",
2563
2563
  "_CHANNEL_OBJ_CUSTOM_API_2": "業務効率の向上",
2564
2564
  "_CHANNEL_OBJ_CUSTOM_API_3": "カスタム統合のサポート",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antscorp/antsomi-ui",
3
- "version": "1.3.5-beta.813",
3
+ "version": "1.3.5-beta.814",
4
4
  "description": "An enterprise-class UI design language and React UI library.",
5
5
  "sideEffects": [
6
6
  "dist/*",