@designbasekorea/ui-wc 0.5.5 → 0.6.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.
- package/dist/esm/components/animation-background/layers.js +1 -1
- package/dist/esm/components/db-ai-chat-list.d.ts +43 -0
- package/dist/esm/components/db-ai-chat-list.js +1 -0
- package/dist/esm/components/db-ai-chat.d.ts +159 -0
- package/dist/esm/components/db-ai-chat.js +1 -0
- package/dist/esm/components/db-animation-background.js +1 -1
- package/dist/esm/components/db-chat-composer.d.ts +134 -0
- package/dist/esm/components/db-chat-composer.js +1 -0
- package/dist/esm/components/db-chat-list.d.ts +47 -0
- package/dist/esm/components/db-chat-list.js +1 -0
- package/dist/esm/components/db-chat-message.d.ts +39 -0
- package/dist/esm/components/db-chat-message.js +1 -0
- package/dist/esm/components/db-chat-orb.d.ts +99 -0
- package/dist/esm/components/db-chat-orb.js +1 -0
- package/dist/esm/components/db-chat-room.d.ts +71 -0
- package/dist/esm/components/db-chat-room.js +1 -0
- package/dist/esm/components/db-chat-suggestions.d.ts +44 -0
- package/dist/esm/components/db-chat-suggestions.js +1 -0
- package/dist/esm/components/db-chat-typing.d.ts +22 -0
- package/dist/esm/components/db-chat-typing.js +1 -0
- package/dist/esm/components/db-chat-welcome.d.ts +32 -0
- package/dist/esm/components/db-chat-welcome.js +1 -0
- package/dist/esm/components/db-chat-widget.d.ts +146 -0
- package/dist/esm/components/db-chat-widget.js +1 -0
- package/dist/esm/components/db-chip.js +1 -1
- package/dist/esm/components/db-download-progress.d.ts +89 -0
- package/dist/esm/components/db-download-progress.js +1 -0
- package/dist/esm/components/db-email-verify.d.ts +62 -0
- package/dist/esm/components/db-email-verify.js +1 -0
- package/dist/esm/components/db-icons.d.ts +3 -0
- package/dist/esm/components/db-icons.js +1 -1
- package/dist/esm/components/db-logo-svg.js +1 -1
- package/dist/esm/components/db-logo.js +1 -1
- package/dist/esm/components/db-otp-input.d.ts +53 -0
- package/dist/esm/components/db-otp-input.js +1 -0
- package/dist/esm/components/db-phone-verify.d.ts +61 -0
- package/dist/esm/components/db-phone-verify.js +1 -0
- package/dist/esm/components/db-testimonial.d.ts +2 -0
- package/dist/esm/components/db-testimonial.js +1 -1
- package/dist/esm/components/db-two-factor.d.ts +60 -0
- package/dist/esm/components/db-two-factor.js +1 -0
- package/dist/esm/components/highlight-code.js +1 -1
- package/dist/esm/index.d.ts +16 -0
- package/dist/esm/index.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1091 -2
- package/dist/index.esm.js +1 -1
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.d.ts +1620 -54
- package/dist/react/index.esm.js +1 -1
- package/package.json +1 -1
- /package/dist/chunks/{lottie-2637aa0f.js → lottie-0e23d630.js} +0 -0
- /package/dist/esm/node_modules/{prismjs → .pnpm/prismjs@1.30.0/node_modules/prismjs}/components/prism-bash.js +0 -0
- /package/dist/esm/node_modules/{prismjs → .pnpm/prismjs@1.30.0/node_modules/prismjs}/components/prism-clike.js +0 -0
- /package/dist/esm/node_modules/{prismjs → .pnpm/prismjs@1.30.0/node_modules/prismjs}/components/prism-css.js +0 -0
- /package/dist/esm/node_modules/{prismjs → .pnpm/prismjs@1.30.0/node_modules/prismjs}/components/prism-javascript.js +0 -0
- /package/dist/esm/node_modules/{prismjs → .pnpm/prismjs@1.30.0/node_modules/prismjs}/components/prism-json.js +0 -0
- /package/dist/esm/node_modules/{prismjs → .pnpm/prismjs@1.30.0/node_modules/prismjs}/components/prism-jsx.js +0 -0
- /package/dist/esm/node_modules/{prismjs → .pnpm/prismjs@1.30.0/node_modules/prismjs}/components/prism-markup.js +0 -0
- /package/dist/esm/node_modules/{prismjs → .pnpm/prismjs@1.30.0/node_modules/prismjs}/components/prism-scss.js +0 -0
- /package/dist/esm/node_modules/{prismjs → .pnpm/prismjs@1.30.0/node_modules/prismjs}/components/prism-tsx.js +0 -0
- /package/dist/esm/node_modules/{prismjs → .pnpm/prismjs@1.30.0/node_modules/prismjs}/components/prism-typescript.js +0 -0
package/dist/react/index.d.ts
CHANGED
|
@@ -3287,6 +3287,8 @@ declare class DbTestimonial extends HTMLElement {
|
|
|
3287
3287
|
private built;
|
|
3288
3288
|
private innerEl?;
|
|
3289
3289
|
private quoteEl?;
|
|
3290
|
+
private backgroundEl?;
|
|
3291
|
+
private logoEl?;
|
|
3290
3292
|
private footerEl?;
|
|
3291
3293
|
private extraEl?;
|
|
3292
3294
|
private avatarWrapEl?;
|
|
@@ -4029,37 +4031,1124 @@ declare class DbCursorFollower extends HTMLElement {
|
|
|
4029
4031
|
private isScoped;
|
|
4030
4032
|
static get observedAttributes(): string[];
|
|
4031
4033
|
connectedCallback(): void;
|
|
4032
|
-
disconnectedCallback(): void;
|
|
4034
|
+
disconnectedCallback(): void;
|
|
4035
|
+
attributeChangedCallback(): void;
|
|
4036
|
+
private setupDesktopGate;
|
|
4037
|
+
private updateScope;
|
|
4038
|
+
private isInScope;
|
|
4039
|
+
private mountLayer;
|
|
4040
|
+
private teardownLayer;
|
|
4041
|
+
private teardown;
|
|
4042
|
+
}
|
|
4043
|
+
declare global {
|
|
4044
|
+
interface HTMLElementTagNameMap {
|
|
4045
|
+
'db-cursor-follower': DbCursorFollower;
|
|
4046
|
+
}
|
|
4047
|
+
}
|
|
4048
|
+
|
|
4049
|
+
declare class DbLottie extends HTMLElement {
|
|
4050
|
+
private container?;
|
|
4051
|
+
private animation?;
|
|
4052
|
+
private loadToken;
|
|
4053
|
+
static get observedAttributes(): string[];
|
|
4054
|
+
connectedCallback(): void;
|
|
4055
|
+
disconnectedCallback(): void;
|
|
4056
|
+
attributeChangedCallback(): void;
|
|
4057
|
+
private getBool;
|
|
4058
|
+
private getSizeStyle;
|
|
4059
|
+
private destroyAnimation;
|
|
4060
|
+
private renderAnimation;
|
|
4061
|
+
}
|
|
4062
|
+
declare global {
|
|
4063
|
+
interface HTMLElementTagNameMap {
|
|
4064
|
+
'db-lottie': DbLottie;
|
|
4065
|
+
}
|
|
4066
|
+
}
|
|
4067
|
+
|
|
4068
|
+
declare const STATUSES: readonly ["downloading", "paused", "error", "complete"];
|
|
4069
|
+
type DownloadStatus = (typeof STATUSES)[number];
|
|
4070
|
+
declare const POSITIONS$1: readonly ["bottom-right", "bottom-left", "bottom-center", "top-right", "top-left", "top-center"];
|
|
4071
|
+
type DownloadPosition = (typeof POSITIONS$1)[number];
|
|
4072
|
+
/**
|
|
4073
|
+
* 우측 하단(기본)에 떠 있는 다운로드 진행률 위젯.
|
|
4074
|
+
*
|
|
4075
|
+
* 진행 바는 `<db-progressbar>`, 액션 버튼은 `<db-button>` 을 그대로 재사용합니다.
|
|
4076
|
+
* 같은 위치에 여러 개가 뜨면 `stack-mode`에 따라 위로 쌓이거나(deck) 세로로 쌓입니다.
|
|
4077
|
+
*
|
|
4078
|
+
* @example
|
|
4079
|
+
* const dl = document.createElement('db-download-progress');
|
|
4080
|
+
* dl.setAttribute('file-name', 'ui-kit-icons.figma');
|
|
4081
|
+
* dl.setAttribute('value', '43');
|
|
4082
|
+
* dl.setAttribute('auto-remove', '');
|
|
4083
|
+
* document.body.appendChild(dl);
|
|
4084
|
+
* dl.setProgress(80);
|
|
4085
|
+
* dl.setStatus('complete');
|
|
4086
|
+
*/
|
|
4087
|
+
declare class DbDownloadProgress extends HTMLElement {
|
|
4088
|
+
static get observedAttributes(): string[];
|
|
4089
|
+
private built;
|
|
4090
|
+
private renderedStatus;
|
|
4091
|
+
private closeTimerId;
|
|
4092
|
+
private resizeObserver;
|
|
4093
|
+
private registeredPosition;
|
|
4094
|
+
closed: boolean;
|
|
4095
|
+
private iconEl;
|
|
4096
|
+
private labelEl;
|
|
4097
|
+
private fileEl;
|
|
4098
|
+
private subtitleEl;
|
|
4099
|
+
private inlinePercentEl;
|
|
4100
|
+
private percentEl;
|
|
4101
|
+
private remainingEl;
|
|
4102
|
+
private metaDotEl;
|
|
4103
|
+
private toggleBtn;
|
|
4104
|
+
private closeBtn;
|
|
4105
|
+
private actionsEl;
|
|
4106
|
+
private mainRow;
|
|
4107
|
+
private bodyBar;
|
|
4108
|
+
private edgeBar;
|
|
4109
|
+
get value(): number;
|
|
4110
|
+
set value(v: number);
|
|
4111
|
+
get max(): number;
|
|
4112
|
+
set max(v: number);
|
|
4113
|
+
get status(): DownloadStatus;
|
|
4114
|
+
set status(v: DownloadStatus);
|
|
4115
|
+
get fileName(): string;
|
|
4116
|
+
set fileName(v: string);
|
|
4117
|
+
get position(): DownloadPosition;
|
|
4118
|
+
set position(v: DownloadPosition);
|
|
4119
|
+
get minimized(): boolean;
|
|
4120
|
+
set minimized(v: boolean);
|
|
4121
|
+
/** `stack` = 세로로 위로 쌓기(기본), `deck` = 스케일·z-index 카드 덱 */
|
|
4122
|
+
get stackMode(): 'stack' | 'deck';
|
|
4123
|
+
set stackMode(v: 'stack' | 'deck');
|
|
4124
|
+
connectedCallback(): void;
|
|
4125
|
+
disconnectedCallback(): void;
|
|
4126
|
+
attributeChangedCallback(name: string): void;
|
|
4127
|
+
private registerStack;
|
|
4128
|
+
private unregisterStack;
|
|
4129
|
+
private build;
|
|
4130
|
+
private sync;
|
|
4131
|
+
private renderActions;
|
|
4132
|
+
private handleMainClick;
|
|
4133
|
+
private handleToggleClick;
|
|
4134
|
+
private handleCloseClick;
|
|
4135
|
+
minimize(): void;
|
|
4136
|
+
expand(): void;
|
|
4137
|
+
toggle(): void;
|
|
4138
|
+
setProgress(value: number): void;
|
|
4139
|
+
setStatus(status: DownloadStatus): void;
|
|
4140
|
+
/**
|
|
4141
|
+
* 닫기(슬라이드 아웃).
|
|
4142
|
+
* React 등 호스트가 DOM을 소유할 때는 `auto-remove` 없이 `db-close`만 받고 언마운트하세요.
|
|
4143
|
+
* body에 직접 append한 경우 `auto-remove`를 주면 DOM에서 제거됩니다.
|
|
4144
|
+
*/
|
|
4145
|
+
close(): void;
|
|
4146
|
+
}
|
|
4147
|
+
declare global {
|
|
4148
|
+
interface HTMLElementTagNameMap {
|
|
4149
|
+
'db-download-progress': DbDownloadProgress;
|
|
4150
|
+
}
|
|
4151
|
+
}
|
|
4152
|
+
|
|
4153
|
+
/**
|
|
4154
|
+
* ui-wc — db-otp-input (수동 작성, 자동 동기화 대상 아님)
|
|
4155
|
+
*
|
|
4156
|
+
* 분할 자릿수 OTP/PIN 입력. 붙여넣기·화살표·백스페이스를 지원합니다.
|
|
4157
|
+
*/
|
|
4158
|
+
declare const SIZES$4: readonly ["s", "m", "l"];
|
|
4159
|
+
type OtpSize = (typeof SIZES$4)[number];
|
|
4160
|
+
declare class DbOtpInput extends HTMLElement {
|
|
4161
|
+
static formAssociated: boolean;
|
|
4162
|
+
static get observedAttributes(): string[];
|
|
4163
|
+
private internals;
|
|
4164
|
+
private built;
|
|
4165
|
+
private digits;
|
|
4166
|
+
private errorEl?;
|
|
4167
|
+
private suppressSync;
|
|
4168
|
+
private initialValue;
|
|
4169
|
+
private lastCompleteValue;
|
|
4170
|
+
get length(): number;
|
|
4171
|
+
set length(v: number);
|
|
4172
|
+
get value(): string;
|
|
4173
|
+
set value(v: string);
|
|
4174
|
+
get size(): OtpSize;
|
|
4175
|
+
set size(v: OtpSize);
|
|
4176
|
+
get disabled(): boolean;
|
|
4177
|
+
set disabled(v: boolean);
|
|
4178
|
+
get readOnly(): boolean;
|
|
4179
|
+
set readOnly(v: boolean);
|
|
4180
|
+
connectedCallback(): void;
|
|
4181
|
+
attributeChangedCallback(name: string): void;
|
|
4182
|
+
focus(): void;
|
|
4183
|
+
clear(): void;
|
|
4184
|
+
formResetCallback(): void;
|
|
4185
|
+
formDisabledCallback(disabled: boolean): void;
|
|
4186
|
+
private build;
|
|
4187
|
+
private sync;
|
|
4188
|
+
private emit;
|
|
4189
|
+
private setValueAttribute;
|
|
4190
|
+
private syncFormValue;
|
|
4191
|
+
private focusFirstEmpty;
|
|
4192
|
+
private focusAt;
|
|
4193
|
+
private applyValue;
|
|
4194
|
+
private onDigitFocus;
|
|
4195
|
+
private onDigitInput;
|
|
4196
|
+
private onDigitKeydown;
|
|
4197
|
+
private onPaste;
|
|
4198
|
+
}
|
|
4199
|
+
declare global {
|
|
4200
|
+
interface HTMLElementTagNameMap {
|
|
4201
|
+
'db-otp-input': DbOtpInput;
|
|
4202
|
+
}
|
|
4203
|
+
}
|
|
4204
|
+
|
|
4205
|
+
/**
|
|
4206
|
+
* ui-wc — db-phone-verify (수동 작성, 자동 동기화 대상 아님)
|
|
4207
|
+
*
|
|
4208
|
+
* 한국형 휴대폰 본인인증: 통신사 → 번호 → 인증번호 발송 → OTP + 타이머/재전송.
|
|
4209
|
+
*/
|
|
4210
|
+
|
|
4211
|
+
declare const SIZES$3: readonly ["s", "m", "l"];
|
|
4212
|
+
type Size$2 = (typeof SIZES$3)[number];
|
|
4213
|
+
declare class DbPhoneVerify extends HTMLElement {
|
|
4214
|
+
static get observedAttributes(): string[];
|
|
4215
|
+
private built;
|
|
4216
|
+
private timerId;
|
|
4217
|
+
private remaining;
|
|
4218
|
+
private carrierSelect;
|
|
4219
|
+
private phoneInput;
|
|
4220
|
+
private sendBtn;
|
|
4221
|
+
private otpInput;
|
|
4222
|
+
private timerEl;
|
|
4223
|
+
private resendBtn;
|
|
4224
|
+
private verifyBtn;
|
|
4225
|
+
private codeBlock;
|
|
4226
|
+
private errorEl;
|
|
4227
|
+
get size(): Size$2;
|
|
4228
|
+
get step(): 'phone' | 'code' | 'verified';
|
|
4229
|
+
set step(v: 'phone' | 'code' | 'verified');
|
|
4230
|
+
get phone(): string;
|
|
4231
|
+
set phone(v: string);
|
|
4232
|
+
get carrier(): string;
|
|
4233
|
+
set carrier(v: string);
|
|
4234
|
+
get code(): string;
|
|
4235
|
+
set code(v: string);
|
|
4236
|
+
get countdown(): number;
|
|
4237
|
+
connectedCallback(): void;
|
|
4238
|
+
disconnectedCallback(): void;
|
|
4239
|
+
attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
|
|
4240
|
+
/** 인증번호 발송 단계로 전환하고 타이머를 시작합니다. */
|
|
4241
|
+
startCodeStep(): void;
|
|
4242
|
+
/** 수동 제어 모드에서 재전송 성공 후 카운트다운을 다시 시작합니다. */
|
|
4243
|
+
restartCountdown(): void;
|
|
4244
|
+
/** 인증 완료 상태로 전환합니다. */
|
|
4245
|
+
markVerified(): void;
|
|
4246
|
+
private clearTimer;
|
|
4247
|
+
private startTimer;
|
|
4248
|
+
private renderTimer;
|
|
4249
|
+
private build;
|
|
4250
|
+
private sync;
|
|
4251
|
+
private isPhoneValid;
|
|
4252
|
+
private requestVerify;
|
|
4253
|
+
}
|
|
4254
|
+
declare global {
|
|
4255
|
+
interface HTMLElementTagNameMap {
|
|
4256
|
+
'db-phone-verify': DbPhoneVerify;
|
|
4257
|
+
}
|
|
4258
|
+
}
|
|
4259
|
+
|
|
4260
|
+
/**
|
|
4261
|
+
* ui-wc — db-email-verify (수동 작성, 자동 동기화 대상 아님)
|
|
4262
|
+
*
|
|
4263
|
+
* 이메일 인증: code(OTP) 모드 / confirm(메일함 확인) 모드.
|
|
4264
|
+
*/
|
|
4265
|
+
|
|
4266
|
+
declare const SIZES$2: readonly ["s", "m", "l"];
|
|
4267
|
+
type Size$1 = (typeof SIZES$2)[number];
|
|
4268
|
+
declare class DbEmailVerify extends HTMLElement {
|
|
4269
|
+
static get observedAttributes(): string[];
|
|
4270
|
+
private built;
|
|
4271
|
+
private timerId;
|
|
4272
|
+
private remaining;
|
|
4273
|
+
private emailInput;
|
|
4274
|
+
private sendBtn;
|
|
4275
|
+
private otpInput;
|
|
4276
|
+
private timerEl;
|
|
4277
|
+
private resendBtn;
|
|
4278
|
+
private verifyBtn;
|
|
4279
|
+
private confirmBtn;
|
|
4280
|
+
private codeBlock;
|
|
4281
|
+
private confirmBlock;
|
|
4282
|
+
private verifiedBlock;
|
|
4283
|
+
private emailRow;
|
|
4284
|
+
private errorEl;
|
|
4285
|
+
private closeBtn?;
|
|
4286
|
+
get mode(): 'code' | 'confirm';
|
|
4287
|
+
set mode(v: 'code' | 'confirm');
|
|
4288
|
+
get size(): Size$1;
|
|
4289
|
+
get step(): 'email' | 'code' | 'sent' | 'verified';
|
|
4290
|
+
set step(v: 'email' | 'code' | 'sent' | 'verified');
|
|
4291
|
+
get email(): string;
|
|
4292
|
+
set email(v: string);
|
|
4293
|
+
get countdown(): number;
|
|
4294
|
+
connectedCallback(): void;
|
|
4295
|
+
disconnectedCallback(): void;
|
|
4296
|
+
attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
|
|
4297
|
+
startCodeStep(): void;
|
|
4298
|
+
/** 수동 제어 모드에서 재전송 성공 후 카운트다운을 다시 시작합니다. */
|
|
4299
|
+
restartCountdown(): void;
|
|
4300
|
+
markSent(): void;
|
|
4301
|
+
markVerified(): void;
|
|
4302
|
+
private clearTimer;
|
|
4303
|
+
private startTimer;
|
|
4304
|
+
private renderTimer;
|
|
4305
|
+
private build;
|
|
4306
|
+
private sync;
|
|
4307
|
+
private isEmailValid;
|
|
4308
|
+
private requestVerify;
|
|
4309
|
+
private setEmphasizedText;
|
|
4310
|
+
}
|
|
4311
|
+
declare global {
|
|
4312
|
+
interface HTMLElementTagNameMap {
|
|
4313
|
+
'db-email-verify': DbEmailVerify;
|
|
4314
|
+
}
|
|
4315
|
+
}
|
|
4316
|
+
|
|
4317
|
+
/**
|
|
4318
|
+
* ui-wc — db-two-factor (수동 작성, 자동 동기화 대상 아님)
|
|
4319
|
+
*
|
|
4320
|
+
* 2단계 인증(2FA): 인증앱 / SMS / 이메일 방식 + OTP.
|
|
4321
|
+
*/
|
|
4322
|
+
|
|
4323
|
+
declare const METHODS: readonly [{
|
|
4324
|
+
readonly value: "app";
|
|
4325
|
+
readonly label: "인증 앱";
|
|
4326
|
+
}, {
|
|
4327
|
+
readonly value: "sms";
|
|
4328
|
+
readonly label: "SMS";
|
|
4329
|
+
}, {
|
|
4330
|
+
readonly value: "email";
|
|
4331
|
+
readonly label: "이메일";
|
|
4332
|
+
}];
|
|
4333
|
+
declare const SIZES$1: readonly ["s", "m", "l"];
|
|
4334
|
+
type Size = (typeof SIZES$1)[number];
|
|
4335
|
+
type Method = (typeof METHODS)[number]['value'];
|
|
4336
|
+
declare class DbTwoFactor extends HTMLElement {
|
|
4337
|
+
static get observedAttributes(): string[];
|
|
4338
|
+
private built;
|
|
4339
|
+
private timerId;
|
|
4340
|
+
private remaining;
|
|
4341
|
+
private segment;
|
|
4342
|
+
private otpInput;
|
|
4343
|
+
private hintEl;
|
|
4344
|
+
private timerEl;
|
|
4345
|
+
private resendBtn;
|
|
4346
|
+
private verifyBtn;
|
|
4347
|
+
private backupBtn;
|
|
4348
|
+
private errorEl;
|
|
4349
|
+
private channelActions;
|
|
4350
|
+
get method(): Method;
|
|
4351
|
+
set method(v: Method);
|
|
4352
|
+
get size(): Size;
|
|
4353
|
+
get countdown(): number;
|
|
4354
|
+
connectedCallback(): void;
|
|
4355
|
+
disconnectedCallback(): void;
|
|
4356
|
+
attributeChangedCallback(name: string, oldValue: string | null, newValue: string | null): void;
|
|
4357
|
+
/** 수동 제어 모드에서 코드 발송 성공 후 카운트다운을 시작합니다. */
|
|
4358
|
+
restartCountdown(): void;
|
|
4359
|
+
private clearTimer;
|
|
4360
|
+
private startTimer;
|
|
4361
|
+
private renderTimer;
|
|
4362
|
+
private build;
|
|
4363
|
+
private sync;
|
|
4364
|
+
private requestVerify;
|
|
4365
|
+
}
|
|
4366
|
+
declare global {
|
|
4367
|
+
interface HTMLElementTagNameMap {
|
|
4368
|
+
'db-two-factor': DbTwoFactor;
|
|
4369
|
+
}
|
|
4370
|
+
}
|
|
4371
|
+
|
|
4372
|
+
declare const SIZES: readonly ["xs", "s", "m", "l", "xl"];
|
|
4373
|
+
declare const VARIANTS: readonly ["aurora", "ocean", "emerald", "violet", "mono"];
|
|
4374
|
+
declare const STATES: readonly ["idle", "thinking", "listening"];
|
|
4375
|
+
declare const THEMES: readonly ["auto", "light", "dark"];
|
|
4376
|
+
type OrbSize = (typeof SIZES)[number];
|
|
4377
|
+
type OrbVariant = (typeof VARIANTS)[number];
|
|
4378
|
+
type OrbState = (typeof STATES)[number];
|
|
4379
|
+
type OrbTheme = (typeof THEMES)[number];
|
|
4380
|
+
/**
|
|
4381
|
+
* AI 어시스턴트를 상징하는 캔버스 기반 애니메이션 오브(구체).
|
|
4382
|
+
* 광택 있는 3D 구체 위에 유체처럼 흐르는 내부 광원 + 프레넬 림 라이트 + 스페큘러 하이라이트로
|
|
4383
|
+
* 고품질 오브를 렌더링합니다. `state` 에 따라 모양(진폭·난류)·색(밝기)·인터랙션(리플)이 바뀌며,
|
|
4384
|
+
* 포인터를 올리면 하이라이트와 내부 광원이 살짝 따라옵니다. 순수 장식이라 `aria-hidden` 입니다.
|
|
4385
|
+
*
|
|
4386
|
+
* @example
|
|
4387
|
+
* <db-chat-orb variant="aurora" state="thinking"></db-chat-orb>
|
|
4388
|
+
*
|
|
4389
|
+
* @example
|
|
4390
|
+
* const orb = document.querySelector('db-chat-orb');
|
|
4391
|
+
* orb.state = 'listening';
|
|
4392
|
+
* orb.minScale = 0.86;
|
|
4393
|
+
* orb.maxScale = 1.2;
|
|
4394
|
+
* orb.audioStream = await navigator.mediaDevices.getUserMedia({ audio: true });
|
|
4395
|
+
*/
|
|
4396
|
+
declare class DbChatOrb extends HTMLElement {
|
|
4397
|
+
static get observedAttributes(): string[];
|
|
4398
|
+
private canvas;
|
|
4399
|
+
private ctx;
|
|
4400
|
+
private dpr;
|
|
4401
|
+
private cssW;
|
|
4402
|
+
private cssH;
|
|
4403
|
+
private t0;
|
|
4404
|
+
private lastFrame;
|
|
4405
|
+
private resizeObs;
|
|
4406
|
+
private io;
|
|
4407
|
+
private themeObserver;
|
|
4408
|
+
private themeMedia;
|
|
4409
|
+
private visible;
|
|
4410
|
+
private hover;
|
|
4411
|
+
private ripples;
|
|
4412
|
+
private lastAutoRipple;
|
|
4413
|
+
private lastVoiceRipple;
|
|
4414
|
+
private previousVoiceLevel;
|
|
4415
|
+
private displayedVoiceLevel;
|
|
4416
|
+
private inputStream;
|
|
4417
|
+
private audioContext;
|
|
4418
|
+
private audioSource;
|
|
4419
|
+
private analyser;
|
|
4420
|
+
private analyserData;
|
|
4421
|
+
get size(): OrbSize;
|
|
4422
|
+
set size(v: OrbSize);
|
|
4423
|
+
get variant(): OrbVariant;
|
|
4424
|
+
set variant(v: OrbVariant);
|
|
4425
|
+
get state(): OrbState;
|
|
4426
|
+
set state(v: OrbState);
|
|
4427
|
+
get theme(): OrbTheme;
|
|
4428
|
+
set theme(v: OrbTheme);
|
|
4429
|
+
/** 외부 오디오 분석기가 전달하는 정규화 음성 레벨(0–1). */
|
|
4430
|
+
get voiceLevel(): number;
|
|
4431
|
+
set voiceLevel(v: number);
|
|
4432
|
+
/** listening 무음 구간의 최소 구체 배율. */
|
|
4433
|
+
get minScale(): number;
|
|
4434
|
+
set minScale(v: number);
|
|
4435
|
+
/** listening 최대 음량 구간의 최대 구체 배율. */
|
|
4436
|
+
get maxScale(): number;
|
|
4437
|
+
set maxScale(v: number);
|
|
4438
|
+
/**
|
|
4439
|
+
* 실제 마이크/통화 MediaStream. 내부 AnalyserNode로 RMS를 계산하며 오디오를 재생하거나
|
|
4440
|
+
* 전달받은 트랙을 stop()하지 않습니다. null을 할당하면 분석만 해제합니다.
|
|
4441
|
+
*/
|
|
4442
|
+
get audioStream(): MediaStream | null;
|
|
4443
|
+
set audioStream(stream: MediaStream | null);
|
|
4444
|
+
connectedCallback(): void;
|
|
4445
|
+
disconnectedCallback(): void;
|
|
4446
|
+
attributeChangedCallback(name: string): void;
|
|
4447
|
+
private setVisible;
|
|
4448
|
+
private syncClasses;
|
|
4449
|
+
private build;
|
|
4450
|
+
private onPointerMove;
|
|
4451
|
+
private onPointerLeave;
|
|
4452
|
+
private onPointerDown;
|
|
4453
|
+
private addRipple;
|
|
4454
|
+
private observeTheme;
|
|
4455
|
+
private onThemeChange;
|
|
4456
|
+
private isDarkContext;
|
|
4457
|
+
private startAudioAnalysis;
|
|
4458
|
+
private stopAudioAnalysis;
|
|
4459
|
+
private sampleVoiceLevel;
|
|
4460
|
+
private resize;
|
|
4461
|
+
/** 공유 틱커가 호출 — 한 프레임 렌더 */
|
|
4462
|
+
frame(now: number): void;
|
|
4463
|
+
}
|
|
4464
|
+
declare global {
|
|
4465
|
+
interface HTMLElementTagNameMap {
|
|
4466
|
+
'db-chat-orb': DbChatOrb;
|
|
4467
|
+
}
|
|
4468
|
+
}
|
|
4469
|
+
|
|
4470
|
+
/**
|
|
4471
|
+
* 채팅 시작 전 화면의 히어로 블록.
|
|
4472
|
+
* 오브(또는 로고 이미지) + 인사말 + 타이틀 + 서브타이틀을 렌더링합니다.
|
|
4473
|
+
* 타이틀의 `highlight` 부분은 그라디언트로 강조됩니다.
|
|
4474
|
+
*
|
|
4475
|
+
* 컴포저(`db-chat-composer`)와 추천(`db-chat-suggestions`)은 형제 요소로 배치합니다.
|
|
4476
|
+
*
|
|
4477
|
+
* @example
|
|
4478
|
+
* <db-chat-welcome
|
|
4479
|
+
* greeting="안녕하세요"
|
|
4480
|
+
* title="오늘은 무엇을 도와드릴까요?"
|
|
4481
|
+
* highlight="도와드릴까요"
|
|
4482
|
+
* orb-variant="aurora">
|
|
4483
|
+
* </db-chat-welcome>
|
|
4484
|
+
*/
|
|
4485
|
+
declare class DbChatWelcome extends HTMLElement {
|
|
4486
|
+
static get observedAttributes(): string[];
|
|
4487
|
+
connectedCallback(): void;
|
|
4488
|
+
attributeChangedCallback(): void;
|
|
4489
|
+
private render;
|
|
4490
|
+
/** 타이틀에서 highlight 구간만 그라디언트 span 으로 감싼다. */
|
|
4491
|
+
private appendTitle;
|
|
4492
|
+
}
|
|
4493
|
+
declare global {
|
|
4494
|
+
interface HTMLElementTagNameMap {
|
|
4495
|
+
'db-chat-welcome': DbChatWelcome;
|
|
4496
|
+
}
|
|
4497
|
+
}
|
|
4498
|
+
|
|
4499
|
+
type DbIconName = 'arrow-bar-left' | 'arrow-bar-right' | 'award' | 'apple' | 'play-store' | 'arrow-right' | 'star' | 'star-filled' | 'star-half' | 'trending-up' | 'cart' | 'bell-active' | 'caret-down-filled' | 'caret-updown-filled' | 'chevron-down' | 'chevron-up' | 'chevron-left' | 'chevron-right' | 'calendar' | 'camera' | 'clock' | 'bulb' | 'circle-checked' | 'cloud-close' | 'close' | 'done' | 'documentation' | 'doughnut-chart' | 'download' | 'error-filled' | 'edit' | 'eyedropper' | 'file-new' | 'folder-open' | 'gallery' | 'globe' | 'hide' | 'info-filled' | 'lock' | 'mail' | 'microphone' | 'minus' | 'moon' | 'more-vertical' | 'paperclip' | 'pause' | 'play' | 'plus' | 'copy' | 'code' | 'write' | 'upload' | 'video' | 'volume-up' | 'mute-filled' | 'package' | 'delivery-filled' | 'repeat' | 'settings' | 'refresh' | 'expand' | 'shrink' | 'grip-vertical' | 'grip-horizontal' | 'search' | 'send' | 'share-alt' | 'show' | 'sparkle' | 'stop' | 'sun' | 'thumb-down' | 'thumb-up' | 'trash' | 'user' | 'warning-filled';
|
|
4500
|
+
|
|
4501
|
+
interface DbChatTool {
|
|
4502
|
+
/** 고유 id (이벤트 detail 로 전달) */
|
|
4503
|
+
id: string;
|
|
4504
|
+
/** 표시 라벨 */
|
|
4505
|
+
label: string;
|
|
4506
|
+
/** 시작 아이콘 (DbIconName) */
|
|
4507
|
+
icon?: DbIconName;
|
|
4508
|
+
/** 활성 여부 */
|
|
4509
|
+
active?: boolean;
|
|
4510
|
+
}
|
|
4511
|
+
interface DbChatAttachOption {
|
|
4512
|
+
/** 고유 id (예: 'image', 'file', 'camera') */
|
|
4513
|
+
id: string;
|
|
4514
|
+
/** 표시 라벨 */
|
|
4515
|
+
label: string;
|
|
4516
|
+
/** 메뉴 아이콘 (DbIconName) */
|
|
4517
|
+
icon?: DbIconName;
|
|
4518
|
+
/** 파일 선택 시 accept 값. 지정하면 파일 선택창을 엽니다. 없으면 db-attach 이벤트만 발행 */
|
|
4519
|
+
accept?: string;
|
|
4520
|
+
/** 카메라/캡처 (모바일). 'user' | 'environment' */
|
|
4521
|
+
capture?: 'user' | 'environment';
|
|
4522
|
+
/** 다중 선택 허용 */
|
|
4523
|
+
multiple?: boolean;
|
|
4524
|
+
/** 보조 설명 (선택) */
|
|
4525
|
+
description?: string;
|
|
4526
|
+
}
|
|
4527
|
+
interface DbChatAttachment {
|
|
4528
|
+
id: string;
|
|
4529
|
+
name: string;
|
|
4530
|
+
/** 바이트 크기 */
|
|
4531
|
+
size: number;
|
|
4532
|
+
/** MIME 타입 */
|
|
4533
|
+
mime: string;
|
|
4534
|
+
/** 표시 종류 (아이콘 결정) */
|
|
4535
|
+
kind: 'image' | 'video' | 'file';
|
|
4536
|
+
/** 원본 File (파일 선택 시) */
|
|
4537
|
+
file?: File;
|
|
4538
|
+
/** 이미지 미리보기 objectURL */
|
|
4539
|
+
preview?: string;
|
|
4540
|
+
}
|
|
4541
|
+
/**
|
|
4542
|
+
* AI 채팅 입력 컴포저. 채팅 시작 전/중 모두에서 사용합니다.
|
|
4543
|
+
* 자동 높이 textarea + 툴바(첨부·툴 토글·음성·전송)로 구성되며,
|
|
4544
|
+
* 전송 버튼은 `db-button`, 툴 토글·첨부 미리보기는 `db-chip` 을 재사용합니다.
|
|
4545
|
+
*
|
|
4546
|
+
* - 툴 토글: `db-chip` 의 `default`↔`primary` variant 로 선택 상태를 표현합니다.
|
|
4547
|
+
* - 첨부: 첨부 버튼을 누르면 드롭다운이 열려 이미지·동영상·파일·카메라 등
|
|
4548
|
+
* 여러 종류를 선택할 수 있고, 고른 파일은 삭제 가능한 칩으로 미리보기됩니다.
|
|
4549
|
+
* - 전송 중(`streaming`)에는 전송 버튼이 정지 버튼으로 바뀝니다.
|
|
4550
|
+
*
|
|
4551
|
+
* @example
|
|
4552
|
+
* const c = document.querySelector('db-chat-composer');
|
|
4553
|
+
* c.tools = [{ id:'reason', label:'추론', icon:'bulb' }];
|
|
4554
|
+
* c.addEventListener('db-send', (e) => console.log(e.detail.value, e.detail.attachments));
|
|
4555
|
+
*/
|
|
4556
|
+
declare class DbChatComposer extends HTMLElement {
|
|
4557
|
+
static get observedAttributes(): string[];
|
|
4558
|
+
private built;
|
|
4559
|
+
private _tools;
|
|
4560
|
+
private _attachOptions;
|
|
4561
|
+
private _attachments;
|
|
4562
|
+
private attachMenuOpen;
|
|
4563
|
+
private field;
|
|
4564
|
+
private attachmentsEl;
|
|
4565
|
+
private toolsEl;
|
|
4566
|
+
private attachWrap;
|
|
4567
|
+
private attachBtn;
|
|
4568
|
+
private attachMenu;
|
|
4569
|
+
private fileInput;
|
|
4570
|
+
private micBtn;
|
|
4571
|
+
private sendBtn;
|
|
4572
|
+
get value(): string;
|
|
4573
|
+
set value(v: string);
|
|
4574
|
+
get streaming(): boolean;
|
|
4575
|
+
set streaming(v: boolean);
|
|
4576
|
+
get disabled(): boolean;
|
|
4577
|
+
set disabled(v: boolean);
|
|
4578
|
+
/** 툴 토글 목록 (JSON 프로퍼티) */
|
|
4579
|
+
get tools(): DbChatTool[];
|
|
4580
|
+
set tools(list: DbChatTool[]);
|
|
4581
|
+
/** 첨부 드롭다운 옵션 목록 */
|
|
4582
|
+
get attachOptions(): DbChatAttachOption[];
|
|
4583
|
+
set attachOptions(list: DbChatAttachOption[]);
|
|
4584
|
+
/** 현재 첨부 목록 (읽기 전용 복사본) */
|
|
4585
|
+
get attachments(): DbChatAttachment[];
|
|
4586
|
+
connectedCallback(): void;
|
|
4587
|
+
disconnectedCallback(): void;
|
|
4588
|
+
attributeChangedCallback(name: string): void;
|
|
4589
|
+
private build;
|
|
4590
|
+
private makeIconButton;
|
|
4591
|
+
private sync;
|
|
4592
|
+
private renderTools;
|
|
4593
|
+
private renderAttachMenu;
|
|
4594
|
+
private renderAttachments;
|
|
4595
|
+
private renderSendButton;
|
|
4596
|
+
private syncSendState;
|
|
4597
|
+
private autoGrow;
|
|
4598
|
+
private handleAttachClick;
|
|
4599
|
+
private openAttachMenu;
|
|
4600
|
+
private closeAttachMenu;
|
|
4601
|
+
private handleOutsideClick;
|
|
4602
|
+
private chooseAttachOption;
|
|
4603
|
+
private handleFilePicked;
|
|
4604
|
+
private addFile;
|
|
4605
|
+
private attachmentMeta;
|
|
4606
|
+
private handleInput;
|
|
4607
|
+
private handleKeyDown;
|
|
4608
|
+
private handleSendClick;
|
|
4609
|
+
private submit;
|
|
4610
|
+
/** 입력 필드를 비웁니다. */
|
|
4611
|
+
clear(): void;
|
|
4612
|
+
/** 첨부를 하나 제거합니다. */
|
|
4613
|
+
removeAttachment(id: string): void;
|
|
4614
|
+
/** 모든 첨부를 제거합니다. */
|
|
4615
|
+
clearAttachments(): void;
|
|
4616
|
+
/** 프로그램적으로 첨부를 추가합니다(파일 또는 메타). */
|
|
4617
|
+
addAttachment(input: File | Omit<DbChatAttachment, 'id' | 'kind'>): void;
|
|
4618
|
+
/** 입력 필드에 포커스합니다. */
|
|
4619
|
+
focusInput(): void;
|
|
4620
|
+
/** 전송 중(정지 버튼) 상태를 설정합니다. */
|
|
4621
|
+
setStreaming(streaming: boolean): void;
|
|
4622
|
+
}
|
|
4623
|
+
declare global {
|
|
4624
|
+
interface HTMLElementTagNameMap {
|
|
4625
|
+
'db-chat-composer': DbChatComposer;
|
|
4626
|
+
}
|
|
4627
|
+
}
|
|
4628
|
+
|
|
4629
|
+
interface DbChatSuggestion {
|
|
4630
|
+
/** 고유 id */
|
|
4631
|
+
id?: string;
|
|
4632
|
+
/** 제목 (카드/칩 라벨) */
|
|
4633
|
+
title: string;
|
|
4634
|
+
/** 설명 (카드 레이아웃에서만 표시) */
|
|
4635
|
+
description?: string;
|
|
4636
|
+
/** 아이콘 (DbIconName) */
|
|
4637
|
+
icon?: DbIconName;
|
|
4638
|
+
/** 선택 시 전달될 값 (기본값: title) */
|
|
4639
|
+
value?: string;
|
|
4640
|
+
}
|
|
4641
|
+
/**
|
|
4642
|
+
* 채팅 시작 화면의 추천 프롬프트 목록.
|
|
4643
|
+
* `layout="card"` 는 아이콘·제목·설명이 있는 카드 그리드,
|
|
4644
|
+
* `layout="chip"` 은 클릭 가능한 칩(db-chip 재사용) 행으로 렌더링합니다.
|
|
4645
|
+
*
|
|
4646
|
+
* @example
|
|
4647
|
+
* const s = document.querySelector('db-chat-suggestions');
|
|
4648
|
+
* s.items = [{ title:'Write Copy', description:'...', icon:'edit' }];
|
|
4649
|
+
* s.addEventListener('db-select', (e) => console.log(e.detail.value));
|
|
4650
|
+
*/
|
|
4651
|
+
declare class DbChatSuggestions extends HTMLElement {
|
|
4652
|
+
static get observedAttributes(): string[];
|
|
4653
|
+
private _items;
|
|
4654
|
+
get items(): DbChatSuggestion[];
|
|
4655
|
+
set items(list: DbChatSuggestion[]);
|
|
4656
|
+
get layout(): string;
|
|
4657
|
+
connectedCallback(): void;
|
|
4658
|
+
attributeChangedCallback(): void;
|
|
4659
|
+
private select;
|
|
4660
|
+
private render;
|
|
4661
|
+
}
|
|
4662
|
+
declare global {
|
|
4663
|
+
interface HTMLElementTagNameMap {
|
|
4664
|
+
'db-chat-suggestions': DbChatSuggestions;
|
|
4665
|
+
}
|
|
4666
|
+
}
|
|
4667
|
+
|
|
4668
|
+
declare const ROLES: readonly ["user", "assistant", "system"];
|
|
4669
|
+
type Role = (typeof ROLES)[number];
|
|
4670
|
+
/**
|
|
4671
|
+
* 채팅 메시지 한 줄. 본문은 라이트 DOM 자식으로 전달하며 컴포넌트가 감쌉니다.
|
|
4672
|
+
* 아바타는 `db-avatar` 를 재사용합니다.
|
|
4673
|
+
*
|
|
4674
|
+
* @example
|
|
4675
|
+
* <db-chat-message role="assistant" name="Orion" actions="copy,regenerate,like,dislike">
|
|
4676
|
+
* 안녕하세요! 무엇을 도와드릴까요?
|
|
4677
|
+
* </db-chat-message>
|
|
4678
|
+
*/
|
|
4679
|
+
declare class DbChatMessage extends HTMLElement {
|
|
4680
|
+
static get observedAttributes(): string[];
|
|
4681
|
+
private built;
|
|
4682
|
+
private contentEl;
|
|
4683
|
+
private avatarWrap;
|
|
4684
|
+
private headerEl;
|
|
4685
|
+
private nameEl;
|
|
4686
|
+
private timeEl;
|
|
4687
|
+
private actionsEl;
|
|
4688
|
+
get role(): Role;
|
|
4689
|
+
set role(v: Role);
|
|
4690
|
+
connectedCallback(): void;
|
|
4691
|
+
attributeChangedCallback(name: string): void;
|
|
4692
|
+
private build;
|
|
4693
|
+
private sync;
|
|
4694
|
+
private renderAvatar;
|
|
4695
|
+
private renderActions;
|
|
4696
|
+
private handleAction;
|
|
4697
|
+
}
|
|
4698
|
+
declare global {
|
|
4699
|
+
interface HTMLElementTagNameMap {
|
|
4700
|
+
'db-chat-message': DbChatMessage;
|
|
4701
|
+
}
|
|
4702
|
+
}
|
|
4703
|
+
|
|
4704
|
+
/**
|
|
4705
|
+
* AI 응답 대기(생성 중) 표시. 3점 바운스 인디케이터.
|
|
4706
|
+
* 아바타는 `db-avatar` 를 재사용합니다.
|
|
4707
|
+
*
|
|
4708
|
+
* @example
|
|
4709
|
+
* <db-chat-typing name="Orion" label="생각 중…"></db-chat-typing>
|
|
4710
|
+
*/
|
|
4711
|
+
declare class DbChatTyping extends HTMLElement {
|
|
4712
|
+
static get observedAttributes(): string[];
|
|
4713
|
+
connectedCallback(): void;
|
|
4714
|
+
attributeChangedCallback(): void;
|
|
4715
|
+
private render;
|
|
4716
|
+
}
|
|
4717
|
+
declare global {
|
|
4718
|
+
interface HTMLElementTagNameMap {
|
|
4719
|
+
'db-chat-typing': DbChatTyping;
|
|
4720
|
+
}
|
|
4721
|
+
}
|
|
4722
|
+
|
|
4723
|
+
declare const VIEWS: readonly ["home", "messages", "conversation", "help"];
|
|
4724
|
+
type ChatView = (typeof VIEWS)[number];
|
|
4725
|
+
declare const POSITIONS: readonly ["bottom-right", "bottom-left"];
|
|
4726
|
+
type ChatPosition = (typeof POSITIONS)[number];
|
|
4727
|
+
interface DbChatWidgetMessage {
|
|
4728
|
+
id?: string;
|
|
4729
|
+
/** `assistant`(상담원/봇) 또는 `user` */
|
|
4730
|
+
role?: 'assistant' | 'user';
|
|
4731
|
+
text: string;
|
|
4732
|
+
name?: string;
|
|
4733
|
+
time?: string;
|
|
4734
|
+
avatarSrc?: string;
|
|
4735
|
+
avatarInitials?: string;
|
|
4736
|
+
/** 말풍선 액션 (예: 'copy,like,dislike') — db-chat-message 로 전달 */
|
|
4737
|
+
actions?: string;
|
|
4738
|
+
}
|
|
4739
|
+
interface DbChatWidgetConversation {
|
|
4740
|
+
id?: string;
|
|
4741
|
+
name: string;
|
|
4742
|
+
avatarSrc?: string;
|
|
4743
|
+
avatarInitials?: string;
|
|
4744
|
+
preview?: string;
|
|
4745
|
+
time?: string;
|
|
4746
|
+
unread?: number;
|
|
4747
|
+
online?: boolean;
|
|
4748
|
+
}
|
|
4749
|
+
/**
|
|
4750
|
+
* FAB 로 열고 닫는 우측 하단 채팅 상담 위젯(껍데기).
|
|
4751
|
+
*
|
|
4752
|
+
* 홈·메시지·대화·도움말 4개 화면을 하단 탭으로 전환하며, 본문은 AI 채팅 프리미티브
|
|
4753
|
+
* (`db-chat-welcome` · `db-chat-message` · `db-chat-typing` · `db-chat-composer`
|
|
4754
|
+
* · `db-chat-suggestions` · `db-chat-orb`)를 조합해 구성합니다. 실제 백엔드 연동
|
|
4755
|
+
* 없이 UI 골격만 제공하고, 상호작용은 이벤트로 위임합니다.
|
|
4756
|
+
*
|
|
4757
|
+
* @fires db-open - 패널 열림
|
|
4758
|
+
* @fires db-close - 패널 닫힘
|
|
4759
|
+
* @fires db-toggle - FAB 토글 (detail: { open })
|
|
4760
|
+
* @fires db-view-change - 화면 전환 (detail: { view })
|
|
4761
|
+
* @fires db-send - 메시지 전송 (detail: { text })
|
|
4762
|
+
* @fires db-menu-select - 홈 메뉴 선택 (detail: { id, value })
|
|
4763
|
+
* @fires db-quick-reply - 빠른 답변 선택 (detail: { id, value })
|
|
4764
|
+
* @fires db-article-select - 도움말 문서 선택 (detail: { id, title })
|
|
4765
|
+
* @fires db-conversation-select - 대화 목록 선택 (detail: { id })
|
|
4766
|
+
* @fires db-message-action - 말풍선 액션 (detail: { action, text })
|
|
4767
|
+
*
|
|
4768
|
+
* @example
|
|
4769
|
+
* const chat = document.createElement('db-chat-widget');
|
|
4770
|
+
* chat.setAttribute('agent-name', '디지털 상담원');
|
|
4771
|
+
* chat.setAttribute('unread', '2');
|
|
4772
|
+
* document.body.appendChild(chat);
|
|
4773
|
+
* chat.addEventListener('db-send', (e) => {
|
|
4774
|
+
* chat.setTyping(true);
|
|
4775
|
+
* setTimeout(() => {
|
|
4776
|
+
* chat.setTyping(false);
|
|
4777
|
+
* chat.addMessage({ role: 'assistant', text: '확인했어요!' });
|
|
4778
|
+
* }, 900);
|
|
4779
|
+
* });
|
|
4780
|
+
*/
|
|
4781
|
+
declare class DbChatWidget extends HTMLElement {
|
|
4782
|
+
static get observedAttributes(): string[];
|
|
4783
|
+
private built;
|
|
4784
|
+
private typing;
|
|
4785
|
+
private _messages;
|
|
4786
|
+
private _conversations;
|
|
4787
|
+
private _menuItems;
|
|
4788
|
+
private _quickReplies;
|
|
4789
|
+
private _articles;
|
|
4790
|
+
private launcher;
|
|
4791
|
+
private launcherBadge;
|
|
4792
|
+
private panel;
|
|
4793
|
+
private headerEl;
|
|
4794
|
+
private bodyEl;
|
|
4795
|
+
private footerEl;
|
|
4796
|
+
private navEl;
|
|
4797
|
+
private composer;
|
|
4798
|
+
private threadEl;
|
|
4799
|
+
get open(): boolean;
|
|
4800
|
+
set open(v: boolean);
|
|
4801
|
+
get view(): ChatView;
|
|
4802
|
+
set view(v: ChatView);
|
|
4803
|
+
get position(): ChatPosition;
|
|
4804
|
+
set position(v: ChatPosition);
|
|
4805
|
+
get unread(): number;
|
|
4806
|
+
set unread(v: number);
|
|
4807
|
+
set messages(v: DbChatWidgetMessage[]);
|
|
4808
|
+
get messages(): DbChatWidgetMessage[];
|
|
4809
|
+
set conversations(v: DbChatWidgetConversation[]);
|
|
4810
|
+
get conversations(): DbChatWidgetConversation[];
|
|
4811
|
+
set menuItems(v: DbChatSuggestion[]);
|
|
4812
|
+
get menuItems(): DbChatSuggestion[];
|
|
4813
|
+
set quickReplies(v: DbChatSuggestion[]);
|
|
4814
|
+
get quickReplies(): DbChatSuggestion[];
|
|
4815
|
+
set articles(v: DbChatSuggestion[]);
|
|
4816
|
+
get articles(): DbChatSuggestion[];
|
|
4817
|
+
connectedCallback(): void;
|
|
4818
|
+
attributeChangedCallback(name: string, oldVal: string | null, newVal: string | null): void;
|
|
4819
|
+
private hydrateFromAttributes;
|
|
4820
|
+
private build;
|
|
4821
|
+
private sync;
|
|
4822
|
+
private syncOpenState;
|
|
4823
|
+
private renderBadge;
|
|
4824
|
+
private renderHeader;
|
|
4825
|
+
private iconButton;
|
|
4826
|
+
private renderBody;
|
|
4827
|
+
private renderHome;
|
|
4828
|
+
private renderMessages;
|
|
4829
|
+
private renderConversation;
|
|
4830
|
+
private renderHelp;
|
|
4831
|
+
private buildMessage;
|
|
4832
|
+
private buildTyping;
|
|
4833
|
+
private buildEmpty;
|
|
4834
|
+
private renderFooter;
|
|
4835
|
+
private renderNav;
|
|
4836
|
+
private scrollThreadToEnd;
|
|
4837
|
+
private nowLabel;
|
|
4838
|
+
private dispatch;
|
|
4839
|
+
openWidget(): void;
|
|
4840
|
+
close(): void;
|
|
4841
|
+
toggle(): void;
|
|
4842
|
+
setView(view: ChatView): void;
|
|
4843
|
+
/** 스레드에 메시지를 추가하고 대화 화면으로 전환/렌더 */
|
|
4844
|
+
addMessage(msg: DbChatWidgetMessage): void;
|
|
4845
|
+
/** 챗봇 입력중(...) 표시 토글 */
|
|
4846
|
+
setTyping(on: boolean): void;
|
|
4847
|
+
/** 전송 중(정지 버튼) 상태 — 컴포저에 위임 */
|
|
4848
|
+
setStreaming(on: boolean): void;
|
|
4849
|
+
/** 스레드 전체 교체 */
|
|
4850
|
+
setMessages(messages: DbChatWidgetMessage[]): void;
|
|
4851
|
+
}
|
|
4852
|
+
declare global {
|
|
4853
|
+
interface HTMLElementTagNameMap {
|
|
4854
|
+
'db-chat-widget': DbChatWidget;
|
|
4855
|
+
}
|
|
4856
|
+
}
|
|
4857
|
+
|
|
4858
|
+
interface DbArtifactOptions {
|
|
4859
|
+
/** 패널 헤더 제목 */
|
|
4860
|
+
title?: string;
|
|
4861
|
+
/** 헤더 부제(선택) */
|
|
4862
|
+
subtitle?: string;
|
|
4863
|
+
/** 본문 HTML (setArtifactContent 로 요소를 직접 넣을 수도 있음) */
|
|
4864
|
+
html?: string;
|
|
4865
|
+
/** 인라인 카드와 동기화할 id (toggle 용) */
|
|
4866
|
+
id?: string;
|
|
4867
|
+
}
|
|
4868
|
+
/** 채팅 스레드 안에 노출되는 결과물(아티팩트) 카드 */
|
|
4869
|
+
interface DbChatArtifactRef {
|
|
4870
|
+
id?: string;
|
|
4871
|
+
title: string;
|
|
4872
|
+
subtitle?: string;
|
|
4873
|
+
icon?: string;
|
|
4874
|
+
html?: string;
|
|
4875
|
+
}
|
|
4876
|
+
interface DbChatMessageData {
|
|
4877
|
+
id?: string;
|
|
4878
|
+
role?: 'user' | 'assistant' | 'system';
|
|
4879
|
+
/** 평문 본문 */
|
|
4880
|
+
text?: string;
|
|
4881
|
+
/** HTML 본문 (text 대신) */
|
|
4882
|
+
html?: string;
|
|
4883
|
+
name?: string;
|
|
4884
|
+
time?: string;
|
|
4885
|
+
avatarSrc?: string;
|
|
4886
|
+
avatarInitials?: string;
|
|
4887
|
+
/** 말풍선 액션 (예: 'copy,regenerate,like,dislike') */
|
|
4888
|
+
actions?: string;
|
|
4889
|
+
status?: 'sending' | 'error';
|
|
4890
|
+
variant?: 'bubble' | 'plain';
|
|
4891
|
+
/** 스레드 인라인 결과물 카드 — 클릭 시 우측 아티팩트 패널 토글 */
|
|
4892
|
+
artifact?: DbChatArtifactRef;
|
|
4893
|
+
}
|
|
4894
|
+
/**
|
|
4895
|
+
* 전체 대화형 AI 채팅 화면. 시작 전(빈 상태)과 대화 중을 하나로 통합한 최상위 컴포넌트로,
|
|
4896
|
+
* 채팅 프리미티브(`db-chat-welcome` · `db-chat-suggestions` · `db-chat-message`
|
|
4897
|
+
* · `db-chat-typing` · `db-chat-composer`)를 조합합니다.
|
|
4898
|
+
*
|
|
4899
|
+
* - 메시지가 없으면 히어로(인사말 + 추천)를 중앙에 보여주고,
|
|
4900
|
+
* - 메시지가 생기면 스크롤 스레드로 전환하며, 컴포저는 항상 하단에 고정됩니다.
|
|
4901
|
+
*
|
|
4902
|
+
* @fires db-send - 전송 (detail: { value, attachments })
|
|
4903
|
+
* @fires db-stop - 생성 중지
|
|
4904
|
+
* @fires db-tool-toggle - 툴 토글 (detail: { id, active })
|
|
4905
|
+
* @fires db-attach - 첨부 종류 선택 (detail: { type })
|
|
4906
|
+
* @fires db-attach-files - 파일 선택 (detail: { type, files })
|
|
4907
|
+
* @fires db-voice - 음성 입력
|
|
4908
|
+
* @fires db-suggestion-select - 추천 선택 (detail: { id, title, value })
|
|
4909
|
+
* @fires db-message-action - 말풍선 액션 (detail: { action, text })
|
|
4910
|
+
*
|
|
4911
|
+
* @example
|
|
4912
|
+
* const chat = document.querySelector('db-chat');
|
|
4913
|
+
* chat.suggestions = [{ title:'카피 작성', icon:'edit' }];
|
|
4914
|
+
* chat.tools = [{ id:'reason', label:'Reasoning', icon:'bulb' }];
|
|
4915
|
+
* chat.addEventListener('db-send', (e) => {
|
|
4916
|
+
* chat.addMessage({ role:'user', text: e.detail.value });
|
|
4917
|
+
* chat.setTyping(true);
|
|
4918
|
+
* });
|
|
4919
|
+
*/
|
|
4920
|
+
declare class DbAiChat extends HTMLElement {
|
|
4921
|
+
static get observedAttributes(): string[];
|
|
4922
|
+
private built;
|
|
4923
|
+
private typing;
|
|
4924
|
+
private _messages;
|
|
4925
|
+
private _suggestions;
|
|
4926
|
+
private _tools;
|
|
4927
|
+
private _attachOptions;
|
|
4928
|
+
private mainEl;
|
|
4929
|
+
private scrollEl;
|
|
4930
|
+
private dockEl;
|
|
4931
|
+
private composer;
|
|
4932
|
+
private threadEl;
|
|
4933
|
+
private artifactEl;
|
|
4934
|
+
private artifactTitleEl;
|
|
4935
|
+
private artifactSubtitleEl;
|
|
4936
|
+
private artifactBodyEl;
|
|
4937
|
+
private activeArtifactId;
|
|
4938
|
+
private artifactSeq;
|
|
4939
|
+
set messages(v: DbChatMessageData[]);
|
|
4940
|
+
get messages(): DbChatMessageData[];
|
|
4941
|
+
set suggestions(v: DbChatSuggestion[]);
|
|
4942
|
+
get suggestions(): DbChatSuggestion[];
|
|
4943
|
+
set tools(v: DbChatTool[]);
|
|
4944
|
+
get tools(): DbChatTool[];
|
|
4945
|
+
set attachOptions(v: DbChatAttachOption[]);
|
|
4946
|
+
get attachOptions(): DbChatAttachOption[];
|
|
4947
|
+
connectedCallback(): void;
|
|
4948
|
+
attributeChangedCallback(name: string): void;
|
|
4949
|
+
private build;
|
|
4950
|
+
private buildArtifact;
|
|
4951
|
+
private sync;
|
|
4952
|
+
private syncArtifact;
|
|
4953
|
+
private syncComposerToggles;
|
|
4954
|
+
private renderContent;
|
|
4955
|
+
private renderHero;
|
|
4956
|
+
private renderThread;
|
|
4957
|
+
private buildMessage;
|
|
4958
|
+
private ensureArtifactId;
|
|
4959
|
+
private buildArtifactCard;
|
|
4960
|
+
private syncArtifactCardStates;
|
|
4961
|
+
private toggleArtifactFromCard;
|
|
4962
|
+
private buildTyping;
|
|
4963
|
+
private renderDock;
|
|
4964
|
+
private onSend;
|
|
4965
|
+
private onSuggestionSelect;
|
|
4966
|
+
private relay;
|
|
4967
|
+
private scrollToEnd;
|
|
4968
|
+
/** 메시지를 추가하고 스레드로 전환/스크롤. 추가된 메시지 id 반환 */
|
|
4969
|
+
addMessage(msg: DbChatMessageData): string;
|
|
4970
|
+
/** 특정 메시지 본문/속성 갱신 */
|
|
4971
|
+
updateMessage(id: string, patch: Partial<DbChatMessageData>): void;
|
|
4972
|
+
/** 스트리밍용: 마지막(또는 지정) 메시지 본문에 청크 이어붙이기 */
|
|
4973
|
+
appendToMessage(id: string, chunk: string): void;
|
|
4974
|
+
/** 전체 메시지 교체 */
|
|
4975
|
+
setMessages(list: DbChatMessageData[]): void;
|
|
4976
|
+
/** 대화를 비우고 히어로(빈 상태)로 복귀 */
|
|
4977
|
+
clear(): void;
|
|
4978
|
+
/** 생각 중(…) 표시 토글 */
|
|
4979
|
+
setTyping(on: boolean): void;
|
|
4980
|
+
/** 전송 중(정지 버튼) 상태 — 컴포저에 위임 */
|
|
4981
|
+
setStreaming(on: boolean): void;
|
|
4982
|
+
/** 입력창 포커스 */
|
|
4983
|
+
focusInput(): void;
|
|
4984
|
+
/** 컴포저 인스턴스 접근 */
|
|
4985
|
+
getComposer(): DbChatComposer;
|
|
4986
|
+
get artifactOpen(): boolean;
|
|
4987
|
+
set artifactOpen(v: boolean);
|
|
4988
|
+
/**
|
|
4989
|
+
* 우측 아티팩트 패널을 엽니다(내용 지정 시 함께 세팅).
|
|
4990
|
+
* 열리면 채팅 본문이 좌측으로 밀립니다.
|
|
4991
|
+
* `id` 를 넘기면 스레드 인라인 카드 활성 상태가 동기화됩니다.
|
|
4992
|
+
*/
|
|
4993
|
+
openArtifact(opts?: DbArtifactOptions): void;
|
|
4994
|
+
/** 아티팩트 패널을 닫습니다. */
|
|
4995
|
+
closeArtifact(): void;
|
|
4996
|
+
/** 아티팩트 열림/닫힘 토글. */
|
|
4997
|
+
toggleArtifact(): void;
|
|
4998
|
+
/** 아티팩트 본문 요소(커스텀 콘텐츠를 직접 마운트할 때). */
|
|
4999
|
+
getArtifactBody(): HTMLElement;
|
|
5000
|
+
/** 아티팩트 본문을 요소로 교체합니다. */
|
|
5001
|
+
setArtifactContent(node: Node): void;
|
|
5002
|
+
}
|
|
5003
|
+
declare global {
|
|
5004
|
+
interface HTMLElementTagNameMap {
|
|
5005
|
+
'db-ai-chat': DbAiChat;
|
|
5006
|
+
}
|
|
5007
|
+
}
|
|
5008
|
+
|
|
5009
|
+
interface DbAiChatItem {
|
|
5010
|
+
id: string;
|
|
5011
|
+
/** 대화 제목 */
|
|
5012
|
+
title: string;
|
|
5013
|
+
/** 그룹 라벨 (예: '오늘', '어제', '지난 7일'). 없으면 '최근 항목' */
|
|
5014
|
+
group?: string;
|
|
5015
|
+
/** 행 아이콘(선택) */
|
|
5016
|
+
icon?: DbIconName;
|
|
5017
|
+
}
|
|
5018
|
+
/**
|
|
5019
|
+
* AI 대화 이력 목록. 상단 '새 대화' 버튼 + 그룹별 최근 대화 리스트로 구성됩니다.
|
|
5020
|
+
* (사람 간 대화 목록은 `db-chat-list` 를 사용하세요.)
|
|
5021
|
+
*
|
|
5022
|
+
* @fires db-new - 새 대화 시작
|
|
5023
|
+
* @fires db-select - 대화 선택 (detail: { id, title })
|
|
5024
|
+
*
|
|
5025
|
+
* @example
|
|
5026
|
+
* const list = document.querySelector('db-ai-chat-list');
|
|
5027
|
+
* list.items = [{ id:'1', title:'다운로드 진행바 컴포넌트', group:'오늘' }];
|
|
5028
|
+
* list.addEventListener('db-new', () => {});
|
|
5029
|
+
* list.addEventListener('db-select', (e) => console.log(e.detail.id));
|
|
5030
|
+
*/
|
|
5031
|
+
declare class DbAiChatList extends HTMLElement {
|
|
5032
|
+
static get observedAttributes(): string[];
|
|
5033
|
+
private _items;
|
|
5034
|
+
get items(): DbAiChatItem[];
|
|
5035
|
+
set items(v: DbAiChatItem[]);
|
|
5036
|
+
get selectedId(): string;
|
|
5037
|
+
set selectedId(v: string);
|
|
5038
|
+
connectedCallback(): void;
|
|
5039
|
+
attributeChangedCallback(): void;
|
|
5040
|
+
private render;
|
|
5041
|
+
}
|
|
5042
|
+
declare global {
|
|
5043
|
+
interface HTMLElementTagNameMap {
|
|
5044
|
+
'db-ai-chat-list': DbAiChatList;
|
|
5045
|
+
}
|
|
5046
|
+
}
|
|
5047
|
+
|
|
5048
|
+
interface DbChatListItem {
|
|
5049
|
+
id: string;
|
|
5050
|
+
/** 상대(대화방) 이름 */
|
|
5051
|
+
name: string;
|
|
5052
|
+
avatarSrc?: string;
|
|
5053
|
+
avatarInitials?: string;
|
|
5054
|
+
/** 마지막 메시지 미리보기 */
|
|
5055
|
+
preview?: string;
|
|
5056
|
+
/** 시간 라벨 (예: '방금', '어제') */
|
|
5057
|
+
time?: string;
|
|
5058
|
+
/** 안 읽은 수 */
|
|
5059
|
+
unread?: number;
|
|
5060
|
+
/** 온라인 표시 */
|
|
5061
|
+
online?: boolean;
|
|
5062
|
+
}
|
|
5063
|
+
/**
|
|
5064
|
+
* 사람 간 대화(메신저) 목록. 아바타 + 이름 + 미리보기 + 시간 + 안읽음 배지의 행 리스트로,
|
|
5065
|
+
* 아바타는 `db-avatar` 를 재사용합니다. AI 대화 이력은 `db-ai-chat-list` 를 쓰세요.
|
|
5066
|
+
*
|
|
5067
|
+
* @fires db-select - 대화 선택 (detail: { id })
|
|
5068
|
+
*
|
|
5069
|
+
* @example
|
|
5070
|
+
* const list = document.querySelector('db-chat-list');
|
|
5071
|
+
* list.items = [{ id:'1', name:'디지털 상담원', preview:'무엇을 도와드릴까요?', time:'방금', unread:1, online:true }];
|
|
5072
|
+
* list.addEventListener('db-select', (e) => console.log(e.detail.id));
|
|
5073
|
+
*/
|
|
5074
|
+
declare class DbChatList extends HTMLElement {
|
|
5075
|
+
static get observedAttributes(): string[];
|
|
5076
|
+
private _items;
|
|
5077
|
+
get items(): DbChatListItem[];
|
|
5078
|
+
set items(v: DbChatListItem[]);
|
|
5079
|
+
get selectedId(): string;
|
|
5080
|
+
set selectedId(v: string);
|
|
5081
|
+
connectedCallback(): void;
|
|
4033
5082
|
attributeChangedCallback(): void;
|
|
4034
|
-
private
|
|
4035
|
-
private updateScope;
|
|
4036
|
-
private isInScope;
|
|
4037
|
-
private mountLayer;
|
|
4038
|
-
private teardownLayer;
|
|
4039
|
-
private teardown;
|
|
5083
|
+
private render;
|
|
4040
5084
|
}
|
|
4041
5085
|
declare global {
|
|
4042
5086
|
interface HTMLElementTagNameMap {
|
|
4043
|
-
'db-
|
|
5087
|
+
'db-chat-list': DbChatList;
|
|
4044
5088
|
}
|
|
4045
5089
|
}
|
|
4046
5090
|
|
|
4047
|
-
|
|
4048
|
-
|
|
4049
|
-
|
|
4050
|
-
|
|
5091
|
+
interface DbChatRoomMessage {
|
|
5092
|
+
id?: string;
|
|
5093
|
+
/** 내가 보낸 메시지면 true(우측 정렬). 아니면 상대(좌측) */
|
|
5094
|
+
mine?: boolean;
|
|
5095
|
+
text?: string;
|
|
5096
|
+
html?: string;
|
|
5097
|
+
time?: string;
|
|
5098
|
+
/** 상대 이름(그룹 채팅에서 유용) */
|
|
5099
|
+
name?: string;
|
|
5100
|
+
avatarSrc?: string;
|
|
5101
|
+
avatarInitials?: string;
|
|
5102
|
+
}
|
|
5103
|
+
/**
|
|
5104
|
+
* 사람 간 1:1/그룹 대화 화면. 상단 헤더(상대 정보) + 메시지 스레드 + 하단 컴포저.
|
|
5105
|
+
* 메시지·아바타·입력창은 `db-chat-message` · `db-avatar` · `db-chat-composer` 를 재사용합니다.
|
|
5106
|
+
* AI 대화 화면은 `db-ai-chat` 을 쓰세요.
|
|
5107
|
+
*
|
|
5108
|
+
* @fires db-send - 전송 (detail: { value, attachments })
|
|
5109
|
+
* @fires db-back - 뒤로가기
|
|
5110
|
+
*
|
|
5111
|
+
* @example
|
|
5112
|
+
* const room = document.querySelector('db-chat-room');
|
|
5113
|
+
* room.setAttribute('peer-name', '디지털 상담원');
|
|
5114
|
+
* room.messages = [{ mine:false, text:'무엇을 도와드릴까요?', time:'오후 2:31' }];
|
|
5115
|
+
* room.addEventListener('db-send', (e) => room.addMessage({ mine:true, text:e.detail.value }));
|
|
5116
|
+
*/
|
|
5117
|
+
declare class DbChatRoom extends HTMLElement {
|
|
4051
5118
|
static get observedAttributes(): string[];
|
|
5119
|
+
private built;
|
|
5120
|
+
private typing;
|
|
5121
|
+
private _messages;
|
|
5122
|
+
private headerEl;
|
|
5123
|
+
private scrollEl;
|
|
5124
|
+
private threadEl;
|
|
5125
|
+
private dockEl;
|
|
5126
|
+
private composer;
|
|
5127
|
+
set messages(v: DbChatRoomMessage[]);
|
|
5128
|
+
get messages(): DbChatRoomMessage[];
|
|
4052
5129
|
connectedCallback(): void;
|
|
4053
|
-
disconnectedCallback(): void;
|
|
4054
5130
|
attributeChangedCallback(): void;
|
|
4055
|
-
private
|
|
4056
|
-
private
|
|
4057
|
-
private
|
|
4058
|
-
private
|
|
5131
|
+
private build;
|
|
5132
|
+
private sync;
|
|
5133
|
+
private renderHeader;
|
|
5134
|
+
private renderThread;
|
|
5135
|
+
private buildMessage;
|
|
5136
|
+
private buildTyping;
|
|
5137
|
+
private scrollToEnd;
|
|
5138
|
+
/** 메시지 추가. 추가된 id 반환 */
|
|
5139
|
+
addMessage(msg: DbChatRoomMessage): string;
|
|
5140
|
+
/** 전체 메시지 교체 */
|
|
5141
|
+
setMessages(list: DbChatRoomMessage[]): void;
|
|
5142
|
+
/** 상대 입력중(…) 표시 토글 */
|
|
5143
|
+
setTyping(on: boolean): void;
|
|
5144
|
+
/** 입력창 포커스 */
|
|
5145
|
+
focusInput(): void;
|
|
5146
|
+
/** 컴포저 인스턴스 접근 */
|
|
5147
|
+
getComposer(): DbChatComposer;
|
|
4059
5148
|
}
|
|
4060
5149
|
declare global {
|
|
4061
5150
|
interface HTMLElementTagNameMap {
|
|
4062
|
-
'db-
|
|
5151
|
+
'db-chat-room': DbChatRoom;
|
|
4063
5152
|
}
|
|
4064
5153
|
}
|
|
4065
5154
|
|
|
@@ -4199,18 +5288,18 @@ declare function ModalHeader({ className, children, ...props }: PartProps): reac
|
|
|
4199
5288
|
onFocusCapture?: react.FocusEventHandler<HTMLDivElement> | undefined;
|
|
4200
5289
|
onBlur?: react.FocusEventHandler<HTMLDivElement> | undefined;
|
|
4201
5290
|
onBlurCapture?: react.FocusEventHandler<HTMLDivElement> | undefined;
|
|
4202
|
-
onChange?: react.
|
|
4203
|
-
onChangeCapture?: react.
|
|
5291
|
+
onChange?: react.ChangeEventHandler<HTMLDivElement, Element> | undefined;
|
|
5292
|
+
onChangeCapture?: react.ChangeEventHandler<HTMLDivElement, Element> | undefined;
|
|
4204
5293
|
onBeforeInput?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
4205
|
-
onBeforeInputCapture?: react.
|
|
4206
|
-
onInput?: react.
|
|
4207
|
-
onInputCapture?: react.
|
|
4208
|
-
onReset?: react.
|
|
4209
|
-
onResetCapture?: react.
|
|
4210
|
-
onSubmit?: react.
|
|
4211
|
-
onSubmitCapture?: react.
|
|
4212
|
-
onInvalid?: react.
|
|
4213
|
-
onInvalidCapture?: react.
|
|
5294
|
+
onBeforeInputCapture?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
5295
|
+
onInput?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
5296
|
+
onInputCapture?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
5297
|
+
onReset?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
5298
|
+
onResetCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
5299
|
+
onSubmit?: react.SubmitEventHandler<HTMLDivElement> | undefined;
|
|
5300
|
+
onSubmitCapture?: react.SubmitEventHandler<HTMLDivElement> | undefined;
|
|
5301
|
+
onInvalid?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
5302
|
+
onInvalidCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
4214
5303
|
onLoad?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
4215
5304
|
onLoadCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
4216
5305
|
onError?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
@@ -4481,18 +5570,18 @@ declare function ModalBody({ className, children, ...props }: PartProps): react.
|
|
|
4481
5570
|
onFocusCapture?: react.FocusEventHandler<HTMLDivElement> | undefined;
|
|
4482
5571
|
onBlur?: react.FocusEventHandler<HTMLDivElement> | undefined;
|
|
4483
5572
|
onBlurCapture?: react.FocusEventHandler<HTMLDivElement> | undefined;
|
|
4484
|
-
onChange?: react.
|
|
4485
|
-
onChangeCapture?: react.
|
|
5573
|
+
onChange?: react.ChangeEventHandler<HTMLDivElement, Element> | undefined;
|
|
5574
|
+
onChangeCapture?: react.ChangeEventHandler<HTMLDivElement, Element> | undefined;
|
|
4486
5575
|
onBeforeInput?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
4487
|
-
onBeforeInputCapture?: react.
|
|
4488
|
-
onInput?: react.
|
|
4489
|
-
onInputCapture?: react.
|
|
4490
|
-
onReset?: react.
|
|
4491
|
-
onResetCapture?: react.
|
|
4492
|
-
onSubmit?: react.
|
|
4493
|
-
onSubmitCapture?: react.
|
|
4494
|
-
onInvalid?: react.
|
|
4495
|
-
onInvalidCapture?: react.
|
|
5576
|
+
onBeforeInputCapture?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
5577
|
+
onInput?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
5578
|
+
onInputCapture?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
5579
|
+
onReset?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
5580
|
+
onResetCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
5581
|
+
onSubmit?: react.SubmitEventHandler<HTMLDivElement> | undefined;
|
|
5582
|
+
onSubmitCapture?: react.SubmitEventHandler<HTMLDivElement> | undefined;
|
|
5583
|
+
onInvalid?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
5584
|
+
onInvalidCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
4496
5585
|
onLoad?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
4497
5586
|
onLoadCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
4498
5587
|
onError?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
@@ -4763,18 +5852,18 @@ declare function ModalFooter({ className, children, ...props }: PartProps): reac
|
|
|
4763
5852
|
onFocusCapture?: react.FocusEventHandler<HTMLDivElement> | undefined;
|
|
4764
5853
|
onBlur?: react.FocusEventHandler<HTMLDivElement> | undefined;
|
|
4765
5854
|
onBlurCapture?: react.FocusEventHandler<HTMLDivElement> | undefined;
|
|
4766
|
-
onChange?: react.
|
|
4767
|
-
onChangeCapture?: react.
|
|
5855
|
+
onChange?: react.ChangeEventHandler<HTMLDivElement, Element> | undefined;
|
|
5856
|
+
onChangeCapture?: react.ChangeEventHandler<HTMLDivElement, Element> | undefined;
|
|
4768
5857
|
onBeforeInput?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
4769
|
-
onBeforeInputCapture?: react.
|
|
4770
|
-
onInput?: react.
|
|
4771
|
-
onInputCapture?: react.
|
|
4772
|
-
onReset?: react.
|
|
4773
|
-
onResetCapture?: react.
|
|
4774
|
-
onSubmit?: react.
|
|
4775
|
-
onSubmitCapture?: react.
|
|
4776
|
-
onInvalid?: react.
|
|
4777
|
-
onInvalidCapture?: react.
|
|
5858
|
+
onBeforeInputCapture?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
5859
|
+
onInput?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
5860
|
+
onInputCapture?: react.InputEventHandler<HTMLDivElement> | undefined;
|
|
5861
|
+
onReset?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
5862
|
+
onResetCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
5863
|
+
onSubmit?: react.SubmitEventHandler<HTMLDivElement> | undefined;
|
|
5864
|
+
onSubmitCapture?: react.SubmitEventHandler<HTMLDivElement> | undefined;
|
|
5865
|
+
onInvalid?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
5866
|
+
onInvalidCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
4778
5867
|
onLoad?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
4779
5868
|
onLoadCapture?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
4780
5869
|
onError?: react.ReactEventHandler<HTMLDivElement> | undefined;
|
|
@@ -4954,6 +6043,183 @@ type InputProps = WebComponentProps & {
|
|
|
4954
6043
|
value: string;
|
|
4955
6044
|
}>;
|
|
4956
6045
|
};
|
|
6046
|
+
type OtpInputProps = WebComponentProps & {
|
|
6047
|
+
length?: number;
|
|
6048
|
+
value?: string;
|
|
6049
|
+
size?: 's' | 'm' | 'l';
|
|
6050
|
+
disabled?: boolean;
|
|
6051
|
+
readonly?: boolean;
|
|
6052
|
+
readOnly?: boolean;
|
|
6053
|
+
required?: boolean;
|
|
6054
|
+
error?: boolean;
|
|
6055
|
+
errorMessage?: string;
|
|
6056
|
+
label?: string;
|
|
6057
|
+
autoFocus?: boolean;
|
|
6058
|
+
masked?: boolean;
|
|
6059
|
+
name?: string;
|
|
6060
|
+
onChange?: DbEventHandler<{
|
|
6061
|
+
value: string;
|
|
6062
|
+
}>;
|
|
6063
|
+
onInput?: DbEventHandler<{
|
|
6064
|
+
value: string;
|
|
6065
|
+
}>;
|
|
6066
|
+
onComplete?: DbEventHandler<{
|
|
6067
|
+
value: string;
|
|
6068
|
+
}>;
|
|
6069
|
+
onDbChange?: DbEventHandler<{
|
|
6070
|
+
value: string;
|
|
6071
|
+
}>;
|
|
6072
|
+
onDbInput?: DbEventHandler<{
|
|
6073
|
+
value: string;
|
|
6074
|
+
}>;
|
|
6075
|
+
onDbComplete?: DbEventHandler<{
|
|
6076
|
+
value: string;
|
|
6077
|
+
}>;
|
|
6078
|
+
};
|
|
6079
|
+
type PhoneVerifyProps = WebComponentProps & {
|
|
6080
|
+
carrier?: string;
|
|
6081
|
+
phone?: string;
|
|
6082
|
+
code?: string;
|
|
6083
|
+
step?: 'phone' | 'code' | 'verified';
|
|
6084
|
+
size?: 's' | 'm' | 'l';
|
|
6085
|
+
disabled?: boolean;
|
|
6086
|
+
error?: boolean;
|
|
6087
|
+
errorMessage?: string;
|
|
6088
|
+
carrierOptions?: string;
|
|
6089
|
+
countdown?: number;
|
|
6090
|
+
title?: string;
|
|
6091
|
+
description?: string;
|
|
6092
|
+
sendLabel?: string;
|
|
6093
|
+
resendLabel?: string;
|
|
6094
|
+
verifyLabel?: string;
|
|
6095
|
+
codeLength?: number;
|
|
6096
|
+
manual?: boolean;
|
|
6097
|
+
sending?: boolean;
|
|
6098
|
+
verifying?: boolean;
|
|
6099
|
+
autoSubmit?: boolean;
|
|
6100
|
+
onCarrierChange?: DbEventHandler<{
|
|
6101
|
+
carrier: string;
|
|
6102
|
+
}>;
|
|
6103
|
+
onPhoneChange?: DbEventHandler<{
|
|
6104
|
+
phone: string;
|
|
6105
|
+
formatted: string;
|
|
6106
|
+
}>;
|
|
6107
|
+
onSendCode?: DbEventHandler<{
|
|
6108
|
+
carrier: string;
|
|
6109
|
+
phone: string;
|
|
6110
|
+
}>;
|
|
6111
|
+
onResend?: DbEventHandler<{
|
|
6112
|
+
carrier: string;
|
|
6113
|
+
phone: string;
|
|
6114
|
+
}>;
|
|
6115
|
+
onCodeChange?: DbEventHandler<{
|
|
6116
|
+
code: string;
|
|
6117
|
+
}>;
|
|
6118
|
+
onCodeComplete?: DbEventHandler<{
|
|
6119
|
+
code: string;
|
|
6120
|
+
carrier: string;
|
|
6121
|
+
phone: string;
|
|
6122
|
+
}>;
|
|
6123
|
+
onVerify?: DbEventHandler<{
|
|
6124
|
+
carrier: string;
|
|
6125
|
+
phone: string;
|
|
6126
|
+
code: string;
|
|
6127
|
+
}>;
|
|
6128
|
+
onCountdownComplete?: DbEventHandler;
|
|
6129
|
+
};
|
|
6130
|
+
type EmailVerifyProps = WebComponentProps & {
|
|
6131
|
+
mode?: 'code' | 'confirm';
|
|
6132
|
+
email?: string;
|
|
6133
|
+
code?: string;
|
|
6134
|
+
step?: 'email' | 'code' | 'sent' | 'verified';
|
|
6135
|
+
size?: 's' | 'm' | 'l';
|
|
6136
|
+
disabled?: boolean;
|
|
6137
|
+
error?: boolean;
|
|
6138
|
+
errorMessage?: string;
|
|
6139
|
+
countdown?: number;
|
|
6140
|
+
title?: string;
|
|
6141
|
+
description?: string;
|
|
6142
|
+
sendLabel?: string;
|
|
6143
|
+
resendLabel?: string;
|
|
6144
|
+
verifyLabel?: string;
|
|
6145
|
+
confirmLabel?: string;
|
|
6146
|
+
codeLength?: number;
|
|
6147
|
+
closable?: boolean;
|
|
6148
|
+
manual?: boolean;
|
|
6149
|
+
sending?: boolean;
|
|
6150
|
+
verifying?: boolean;
|
|
6151
|
+
autoSubmit?: boolean;
|
|
6152
|
+
onEmailChange?: DbEventHandler<{
|
|
6153
|
+
email: string;
|
|
6154
|
+
}>;
|
|
6155
|
+
onSendCode?: DbEventHandler<{
|
|
6156
|
+
email: string;
|
|
6157
|
+
mode: string;
|
|
6158
|
+
}>;
|
|
6159
|
+
onResend?: DbEventHandler<{
|
|
6160
|
+
email: string;
|
|
6161
|
+
}>;
|
|
6162
|
+
onCodeChange?: DbEventHandler<{
|
|
6163
|
+
code: string;
|
|
6164
|
+
}>;
|
|
6165
|
+
onCodeComplete?: DbEventHandler<{
|
|
6166
|
+
code: string;
|
|
6167
|
+
email: string;
|
|
6168
|
+
}>;
|
|
6169
|
+
onVerify?: DbEventHandler<{
|
|
6170
|
+
email: string;
|
|
6171
|
+
code: string;
|
|
6172
|
+
}>;
|
|
6173
|
+
onConfirm?: DbEventHandler<{
|
|
6174
|
+
email: string;
|
|
6175
|
+
}>;
|
|
6176
|
+
onClose?: DbEventHandler;
|
|
6177
|
+
onCountdownComplete?: DbEventHandler;
|
|
6178
|
+
};
|
|
6179
|
+
type TwoFactorProps = WebComponentProps & {
|
|
6180
|
+
method?: 'app' | 'sms' | 'email';
|
|
6181
|
+
code?: string;
|
|
6182
|
+
size?: 's' | 'm' | 'l';
|
|
6183
|
+
disabled?: boolean;
|
|
6184
|
+
error?: boolean;
|
|
6185
|
+
errorMessage?: string;
|
|
6186
|
+
title?: string;
|
|
6187
|
+
description?: string;
|
|
6188
|
+
verifyLabel?: string;
|
|
6189
|
+
codeLength?: number;
|
|
6190
|
+
showBackup?: boolean;
|
|
6191
|
+
countdown?: number;
|
|
6192
|
+
destination?: string;
|
|
6193
|
+
resendLabel?: string;
|
|
6194
|
+
manual?: boolean;
|
|
6195
|
+
sending?: boolean;
|
|
6196
|
+
verifying?: boolean;
|
|
6197
|
+
autoSubmit?: boolean;
|
|
6198
|
+
onMethodChange?: DbEventHandler<{
|
|
6199
|
+
method: string;
|
|
6200
|
+
}>;
|
|
6201
|
+
onSendCode?: DbEventHandler<{
|
|
6202
|
+
method: string;
|
|
6203
|
+
destination: string;
|
|
6204
|
+
}>;
|
|
6205
|
+
onResend?: DbEventHandler<{
|
|
6206
|
+
method: string;
|
|
6207
|
+
destination: string;
|
|
6208
|
+
}>;
|
|
6209
|
+
onCodeChange?: DbEventHandler<{
|
|
6210
|
+
code: string;
|
|
6211
|
+
}>;
|
|
6212
|
+
onCodeComplete?: DbEventHandler<{
|
|
6213
|
+
code: string;
|
|
6214
|
+
method: string;
|
|
6215
|
+
}>;
|
|
6216
|
+
onVerify?: DbEventHandler<{
|
|
6217
|
+
method: string;
|
|
6218
|
+
code: string;
|
|
6219
|
+
}>;
|
|
6220
|
+
onBackupRequest?: DbEventHandler;
|
|
6221
|
+
onCountdownComplete?: DbEventHandler;
|
|
6222
|
+
};
|
|
4957
6223
|
type TextareaProps = WebComponentProps & {
|
|
4958
6224
|
onChange?: DbEventHandler<{
|
|
4959
6225
|
value: string;
|
|
@@ -5799,6 +7065,44 @@ type ProgressProps = WebComponentProps & {
|
|
|
5799
7065
|
gradient?: boolean;
|
|
5800
7066
|
glow?: boolean;
|
|
5801
7067
|
};
|
|
7068
|
+
type DownloadProgressProps = WebComponentProps & {
|
|
7069
|
+
fileName?: string;
|
|
7070
|
+
value?: number;
|
|
7071
|
+
max?: number;
|
|
7072
|
+
status?: 'downloading' | 'paused' | 'error' | 'complete';
|
|
7073
|
+
position?: 'bottom-right' | 'bottom-left' | 'bottom-center' | 'top-right' | 'top-left' | 'top-center';
|
|
7074
|
+
minimized?: boolean;
|
|
7075
|
+
label?: string;
|
|
7076
|
+
description?: string;
|
|
7077
|
+
remaining?: string;
|
|
7078
|
+
sizeLabel?: string;
|
|
7079
|
+
errorText?: string;
|
|
7080
|
+
closable?: boolean;
|
|
7081
|
+
/** 세로 스택(기본) 또는 스케일 덱 */
|
|
7082
|
+
stackMode?: 'stack' | 'deck';
|
|
7083
|
+
/** 스택 참여 제외 (인라인 프리뷰 등) */
|
|
7084
|
+
noStack?: boolean;
|
|
7085
|
+
/** true면 닫힌 뒤 DOM에서 제거 (body append 용). React 제어 시 생략 */
|
|
7086
|
+
autoRemove?: boolean;
|
|
7087
|
+
onCancel?: DbEventHandler;
|
|
7088
|
+
onResume?: DbEventHandler;
|
|
7089
|
+
onRetry?: DbEventHandler;
|
|
7090
|
+
onOpen?: DbEventHandler;
|
|
7091
|
+
onDismiss?: DbEventHandler;
|
|
7092
|
+
onClose?: DbEventHandler;
|
|
7093
|
+
onComplete?: DbEventHandler;
|
|
7094
|
+
onMinimize?: DbEventHandler;
|
|
7095
|
+
onExpand?: DbEventHandler;
|
|
7096
|
+
onDbCancel?: DbEventHandler;
|
|
7097
|
+
onDbResume?: DbEventHandler;
|
|
7098
|
+
onDbRetry?: DbEventHandler;
|
|
7099
|
+
onDbOpen?: DbEventHandler;
|
|
7100
|
+
onDbDismiss?: DbEventHandler;
|
|
7101
|
+
onDbClose?: DbEventHandler;
|
|
7102
|
+
onDbComplete?: DbEventHandler;
|
|
7103
|
+
onDbMinimize?: DbEventHandler;
|
|
7104
|
+
onDbExpand?: DbEventHandler;
|
|
7105
|
+
};
|
|
5802
7106
|
type SkeletonProps = WebComponentProps & {
|
|
5803
7107
|
variant?: 'text' | 'circular' | 'rectangular' | 'rounded';
|
|
5804
7108
|
size?: 'xs' | 's' | 'm' | 'l' | 'xl';
|
|
@@ -7233,7 +8537,12 @@ type TestimonialProps = WebComponentProps & {
|
|
|
7233
8537
|
avatarInitials?: string;
|
|
7234
8538
|
rating?: number;
|
|
7235
8539
|
maxRating?: number;
|
|
7236
|
-
variant?: 'list' | 'card';
|
|
8540
|
+
variant?: 'list' | 'card' | 'logo' | 'image' | 'text';
|
|
8541
|
+
logo?: string;
|
|
8542
|
+
logoAlt?: string;
|
|
8543
|
+
image?: string;
|
|
8544
|
+
imageAlt?: string;
|
|
8545
|
+
tone?: 'violet' | 'lime' | 'ink' | 'sand';
|
|
7237
8546
|
align?: 'left' | 'center';
|
|
7238
8547
|
};
|
|
7239
8548
|
type SectionHeroButton = {
|
|
@@ -7767,6 +9076,10 @@ declare const Grid: react.ForwardRefExoticComponent<Omit<WebComponentProps, "ref
|
|
|
7767
9076
|
declare const GridItem: react.ForwardRefExoticComponent<Omit<WebComponentProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7768
9077
|
declare const Indicator: react.ForwardRefExoticComponent<Omit<IndicatorProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7769
9078
|
declare const Input: react.ForwardRefExoticComponent<Omit<InputProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9079
|
+
declare const OtpInput: react.ForwardRefExoticComponent<Omit<OtpInputProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9080
|
+
declare const PhoneVerify: react.ForwardRefExoticComponent<Omit<PhoneVerifyProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9081
|
+
declare const EmailVerify: react.ForwardRefExoticComponent<Omit<EmailVerifyProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9082
|
+
declare const TwoFactor: react.ForwardRefExoticComponent<Omit<TwoFactorProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7770
9083
|
declare const Label: react.ForwardRefExoticComponent<Omit<LabelProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7771
9084
|
declare const Logo: react.ForwardRefExoticComponent<Omit<LogoProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7772
9085
|
declare const List: react.ForwardRefExoticComponent<Omit<ListProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
@@ -7777,6 +9090,259 @@ declare const Popover: react.ForwardRefExoticComponent<Omit<PopoverProps, "ref">
|
|
|
7777
9090
|
declare const Progress: react.ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7778
9091
|
declare const ProgressStep: react.ForwardRefExoticComponent<Omit<ProgressStepProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7779
9092
|
declare const Progressbar: react.ForwardRefExoticComponent<Omit<WebComponentProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9093
|
+
declare const DownloadProgress: react.ForwardRefExoticComponent<Omit<DownloadProgressProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9094
|
+
type ChatOrbProps = WebComponentProps & {
|
|
9095
|
+
size?: 'xs' | 's' | 'm' | 'l' | 'xl';
|
|
9096
|
+
variant?: 'aurora' | 'ocean' | 'emerald' | 'violet' | 'mono';
|
|
9097
|
+
state?: 'idle' | 'thinking' | 'listening';
|
|
9098
|
+
theme?: 'auto' | 'light' | 'dark';
|
|
9099
|
+
/** 정규화된 음성 크기. listening 상태에서 0–1 범위로 전달합니다. */
|
|
9100
|
+
voiceLevel?: number;
|
|
9101
|
+
/** voiceLevel=0일 때의 구체 배율. 기본값 0.88. */
|
|
9102
|
+
minScale?: number;
|
|
9103
|
+
/** voiceLevel=1일 때의 구체 배율. 기본값 1.18. */
|
|
9104
|
+
maxScale?: number;
|
|
9105
|
+
/** 실제 마이크/통화 스트림. 컴포넌트가 분석만 하며 트랙은 중지하지 않습니다. */
|
|
9106
|
+
audioStream?: MediaStream | null;
|
|
9107
|
+
};
|
|
9108
|
+
type ChatWelcomeProps = WebComponentProps & {
|
|
9109
|
+
greeting?: string;
|
|
9110
|
+
title?: string;
|
|
9111
|
+
highlight?: string;
|
|
9112
|
+
subtitle?: string;
|
|
9113
|
+
align?: 'center' | 'left';
|
|
9114
|
+
orbVariant?: string;
|
|
9115
|
+
orbState?: string;
|
|
9116
|
+
orbSize?: string;
|
|
9117
|
+
hideOrb?: boolean;
|
|
9118
|
+
avatarSrc?: string;
|
|
9119
|
+
};
|
|
9120
|
+
type ChatComposerProps = WebComponentProps & {
|
|
9121
|
+
placeholder?: string;
|
|
9122
|
+
value?: string;
|
|
9123
|
+
disabled?: boolean;
|
|
9124
|
+
streaming?: boolean;
|
|
9125
|
+
voice?: boolean;
|
|
9126
|
+
attach?: boolean;
|
|
9127
|
+
maxLength?: number;
|
|
9128
|
+
sendLabel?: string;
|
|
9129
|
+
tools?: DbChatTool[];
|
|
9130
|
+
onSend?: DbEventHandler<{
|
|
9131
|
+
value: string;
|
|
9132
|
+
}>;
|
|
9133
|
+
onInput?: DbEventHandler<{
|
|
9134
|
+
value: string;
|
|
9135
|
+
}>;
|
|
9136
|
+
onStop?: DbEventHandler;
|
|
9137
|
+
onAttach?: DbEventHandler;
|
|
9138
|
+
onVoice?: DbEventHandler;
|
|
9139
|
+
onToolToggle?: DbEventHandler<{
|
|
9140
|
+
id: string;
|
|
9141
|
+
active: boolean;
|
|
9142
|
+
}>;
|
|
9143
|
+
onDbSend?: DbEventHandler<{
|
|
9144
|
+
value: string;
|
|
9145
|
+
}>;
|
|
9146
|
+
};
|
|
9147
|
+
type ChatSuggestionsProps = WebComponentProps & {
|
|
9148
|
+
items?: DbChatSuggestion[];
|
|
9149
|
+
layout?: 'card' | 'chip';
|
|
9150
|
+
columns?: number;
|
|
9151
|
+
onSelect?: DbEventHandler<{
|
|
9152
|
+
id: string;
|
|
9153
|
+
title: string;
|
|
9154
|
+
value: string;
|
|
9155
|
+
}>;
|
|
9156
|
+
onDbSelect?: DbEventHandler<{
|
|
9157
|
+
id: string;
|
|
9158
|
+
title: string;
|
|
9159
|
+
value: string;
|
|
9160
|
+
}>;
|
|
9161
|
+
};
|
|
9162
|
+
type ChatMessageProps = WebComponentProps & {
|
|
9163
|
+
role?: 'user' | 'assistant' | 'system';
|
|
9164
|
+
name?: string;
|
|
9165
|
+
avatarSrc?: string;
|
|
9166
|
+
avatarInitials?: string;
|
|
9167
|
+
timestamp?: string;
|
|
9168
|
+
status?: string;
|
|
9169
|
+
actions?: string;
|
|
9170
|
+
variant?: string;
|
|
9171
|
+
onAction?: DbEventHandler<{
|
|
9172
|
+
action: string;
|
|
9173
|
+
text: string;
|
|
9174
|
+
}>;
|
|
9175
|
+
onDbAction?: DbEventHandler<{
|
|
9176
|
+
action: string;
|
|
9177
|
+
text: string;
|
|
9178
|
+
}>;
|
|
9179
|
+
};
|
|
9180
|
+
type ChatTypingProps = WebComponentProps & {
|
|
9181
|
+
name?: string;
|
|
9182
|
+
avatarSrc?: string;
|
|
9183
|
+
avatarInitials?: string;
|
|
9184
|
+
label?: string;
|
|
9185
|
+
};
|
|
9186
|
+
type ChatWidgetProps = WebComponentProps & {
|
|
9187
|
+
open?: boolean;
|
|
9188
|
+
view?: 'home' | 'messages' | 'conversation' | 'help';
|
|
9189
|
+
position?: 'bottom-right' | 'bottom-left';
|
|
9190
|
+
agentName?: string;
|
|
9191
|
+
agentAvatar?: string;
|
|
9192
|
+
agentStatus?: string;
|
|
9193
|
+
greeting?: string;
|
|
9194
|
+
title?: string;
|
|
9195
|
+
subtitle?: string;
|
|
9196
|
+
placeholder?: string;
|
|
9197
|
+
unread?: number;
|
|
9198
|
+
accent?: string;
|
|
9199
|
+
orbVariant?: 'aurora' | 'ocean' | 'emerald' | 'violet' | 'mono';
|
|
9200
|
+
launcherLabel?: string;
|
|
9201
|
+
searchEnabled?: boolean;
|
|
9202
|
+
messages?: DbChatWidgetMessage[];
|
|
9203
|
+
conversations?: DbChatWidgetConversation[];
|
|
9204
|
+
menuItems?: DbChatSuggestion[];
|
|
9205
|
+
quickReplies?: DbChatSuggestion[];
|
|
9206
|
+
articles?: DbChatSuggestion[];
|
|
9207
|
+
onOpen?: DbEventHandler;
|
|
9208
|
+
onClose?: DbEventHandler;
|
|
9209
|
+
onToggle?: DbEventHandler<{
|
|
9210
|
+
open: boolean;
|
|
9211
|
+
}>;
|
|
9212
|
+
onViewChange?: DbEventHandler<{
|
|
9213
|
+
view: string;
|
|
9214
|
+
}>;
|
|
9215
|
+
onSend?: DbEventHandler<{
|
|
9216
|
+
text: string;
|
|
9217
|
+
}>;
|
|
9218
|
+
onMenuSelect?: DbEventHandler<{
|
|
9219
|
+
id: string;
|
|
9220
|
+
value: string;
|
|
9221
|
+
}>;
|
|
9222
|
+
onQuickReply?: DbEventHandler<{
|
|
9223
|
+
id: string;
|
|
9224
|
+
value: string;
|
|
9225
|
+
}>;
|
|
9226
|
+
onArticleSelect?: DbEventHandler<{
|
|
9227
|
+
id: string;
|
|
9228
|
+
title: string;
|
|
9229
|
+
}>;
|
|
9230
|
+
onConversationSelect?: DbEventHandler<{
|
|
9231
|
+
id: string;
|
|
9232
|
+
}>;
|
|
9233
|
+
onMessageAction?: DbEventHandler<{
|
|
9234
|
+
action: string;
|
|
9235
|
+
text: string;
|
|
9236
|
+
}>;
|
|
9237
|
+
};
|
|
9238
|
+
declare const ChatOrb: react.ForwardRefExoticComponent<Omit<ChatOrbProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9239
|
+
declare const ChatWelcome: react.ForwardRefExoticComponent<Omit<ChatWelcomeProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9240
|
+
declare const ChatComposer: react.ForwardRefExoticComponent<Omit<ChatComposerProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9241
|
+
declare const ChatSuggestions: react.ForwardRefExoticComponent<Omit<ChatSuggestionsProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9242
|
+
declare const ChatMessage: react.ForwardRefExoticComponent<Omit<ChatMessageProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9243
|
+
declare const ChatTyping: react.ForwardRefExoticComponent<Omit<ChatTypingProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9244
|
+
declare const ChatWidget: react.ForwardRefExoticComponent<Omit<ChatWidgetProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9245
|
+
type AiChatProps = WebComponentProps & {
|
|
9246
|
+
greeting?: string;
|
|
9247
|
+
title?: string;
|
|
9248
|
+
highlight?: string;
|
|
9249
|
+
subtitle?: string;
|
|
9250
|
+
placeholder?: string;
|
|
9251
|
+
orbVariant?: string;
|
|
9252
|
+
suggestionsLayout?: string;
|
|
9253
|
+
suggestionsColumns?: number;
|
|
9254
|
+
disclaimer?: string;
|
|
9255
|
+
voice?: boolean;
|
|
9256
|
+
attach?: boolean;
|
|
9257
|
+
maxWidth?: string;
|
|
9258
|
+
artifactOpen?: boolean;
|
|
9259
|
+
artifactTitle?: string;
|
|
9260
|
+
suggestions?: DbChatSuggestion[];
|
|
9261
|
+
tools?: DbChatTool[];
|
|
9262
|
+
onSend?: DbEventHandler<{
|
|
9263
|
+
value: string;
|
|
9264
|
+
}>;
|
|
9265
|
+
onStop?: DbEventHandler;
|
|
9266
|
+
onToolToggle?: DbEventHandler<{
|
|
9267
|
+
id: string;
|
|
9268
|
+
active: boolean;
|
|
9269
|
+
}>;
|
|
9270
|
+
onAttach?: DbEventHandler;
|
|
9271
|
+
onVoice?: DbEventHandler;
|
|
9272
|
+
onSuggestionSelect?: DbEventHandler<{
|
|
9273
|
+
id: string;
|
|
9274
|
+
title: string;
|
|
9275
|
+
value: string;
|
|
9276
|
+
}>;
|
|
9277
|
+
onMessageAction?: DbEventHandler<{
|
|
9278
|
+
action: string;
|
|
9279
|
+
text: string;
|
|
9280
|
+
}>;
|
|
9281
|
+
onArtifactOpen?: DbEventHandler<{
|
|
9282
|
+
id: string | null;
|
|
9283
|
+
}>;
|
|
9284
|
+
onArtifactClose?: DbEventHandler<{
|
|
9285
|
+
id: null;
|
|
9286
|
+
}>;
|
|
9287
|
+
};
|
|
9288
|
+
type AiChatListProps = WebComponentProps & {
|
|
9289
|
+
selectedId?: string;
|
|
9290
|
+
newLabel?: string;
|
|
9291
|
+
titleLabel?: string;
|
|
9292
|
+
items?: Array<{
|
|
9293
|
+
id: string;
|
|
9294
|
+
title: string;
|
|
9295
|
+
group?: string;
|
|
9296
|
+
icon?: string;
|
|
9297
|
+
}>;
|
|
9298
|
+
onNew?: DbEventHandler;
|
|
9299
|
+
onSelect?: DbEventHandler<{
|
|
9300
|
+
id: string;
|
|
9301
|
+
title: string;
|
|
9302
|
+
}>;
|
|
9303
|
+
};
|
|
9304
|
+
type ChatListProps = WebComponentProps & {
|
|
9305
|
+
selectedId?: string;
|
|
9306
|
+
items?: Array<{
|
|
9307
|
+
id: string;
|
|
9308
|
+
name: string;
|
|
9309
|
+
avatarSrc?: string;
|
|
9310
|
+
avatarInitials?: string;
|
|
9311
|
+
preview?: string;
|
|
9312
|
+
time?: string;
|
|
9313
|
+
unread?: number;
|
|
9314
|
+
online?: boolean;
|
|
9315
|
+
}>;
|
|
9316
|
+
onSelect?: DbEventHandler<{
|
|
9317
|
+
id: string;
|
|
9318
|
+
}>;
|
|
9319
|
+
};
|
|
9320
|
+
type ChatRoomProps = WebComponentProps & {
|
|
9321
|
+
name?: string;
|
|
9322
|
+
status?: string;
|
|
9323
|
+
avatarSrc?: string;
|
|
9324
|
+
avatarInitials?: string;
|
|
9325
|
+
placeholder?: string;
|
|
9326
|
+
online?: boolean;
|
|
9327
|
+
messages?: Array<{
|
|
9328
|
+
id?: string;
|
|
9329
|
+
mine?: boolean;
|
|
9330
|
+
text?: string;
|
|
9331
|
+
html?: string;
|
|
9332
|
+
time?: string;
|
|
9333
|
+
name?: string;
|
|
9334
|
+
avatarSrc?: string;
|
|
9335
|
+
avatarInitials?: string;
|
|
9336
|
+
}>;
|
|
9337
|
+
onSend?: DbEventHandler<{
|
|
9338
|
+
value: string;
|
|
9339
|
+
}>;
|
|
9340
|
+
onBack?: DbEventHandler;
|
|
9341
|
+
};
|
|
9342
|
+
declare const AiChat: react.ForwardRefExoticComponent<Omit<AiChatProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9343
|
+
declare const AiChatList: react.ForwardRefExoticComponent<Omit<AiChatListProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9344
|
+
declare const ChatList: react.ForwardRefExoticComponent<Omit<ChatListProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
9345
|
+
declare const ChatRoom: react.ForwardRefExoticComponent<Omit<ChatRoomProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7780
9346
|
declare const Radio: react.ForwardRefExoticComponent<Omit<RadioProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7781
9347
|
declare const RangeSlider: react.ForwardRefExoticComponent<Omit<RangeSliderProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7782
9348
|
declare const SearchBar: react.ForwardRefExoticComponent<Omit<SearchBarProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
@@ -7882,5 +9448,5 @@ declare const DatePicker: react.ForwardRefExoticComponent<Omit<DatePickerProps,
|
|
|
7882
9448
|
declare const TimePicker: react.ForwardRefExoticComponent<Omit<TimePickerProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7883
9449
|
declare const Calendar: react.ForwardRefExoticComponent<Omit<CalendarProps, "ref"> & react.RefAttributes<HTMLElement>>;
|
|
7884
9450
|
|
|
7885
|
-
export { Accordion, AdBanner, Alert, AnimationBackground, AnimationText, AppBadge, AudioPlayer, Avatar, Backdrop, Badge, Banner, BottomNavigation, BottomSheet, Breadcrumbs, Button, Calendar, Card, Carousel, Checkbox, Chip, CodeBlock, ColorPicker, Confirm, Container, ContextMenu, Countdown, CursorFollower, DatePicker, Divider, Drawer, Dropdown, Dropzone, EmptyState, FileUploader, FloatingActionButton, Footer, Form, Gantt, Gradient, Grid, GridBackground, GridItem, Image, ImageList, ImagePlaceholder, Indicator, Input, Kanban, Label, Lightbox, List, Logo, Lottie, MarkdownEditor, Marquee, Masonry, MenuItem, Modal, ModalBody, ModalFooter, ModalHeader, Navbar, OnboardingModal, PageHeader, Pagination, Popover, Progress, ProgressStep, Progressbar, Radio, RandomGradient, RangeSlider, Rating, Reorder, ResizablePanels, ScrollArea, SearchBar, Section, SectionAppDownload, SectionContact, SectionCta, SectionFaq, SectionFeature, SectionFeatureGrid, SectionHero, SectionLogoCloud, SectionPricing, SectionStats, SectionTestimonials, SegmentControl, Select, Share, Sidebar, Skeleton, Spinner, SplitView, Stack, Stat, Stepper, Table, Tabs, Testimonial, Textarea, TimePicker, Timeline, Toast, Toggle, Toolbar, Tooltip, TopBanner, Tutorial, VideoPlayer, YouTubePlayer, useContextMenu };
|
|
7886
|
-
export type { AccordionItemConfig, AccordionProps, AdBannerProps, AlertAction, AlertProps, AnimationBackgroundProps, AnimationTextProps, AppBadgeProps, AudioPlayerProps, AvatarProps, BackdropProps, BadgeProps, BannerAction, BannerProps, BottomNavigationItem, BottomNavigationProps, BottomSheetProps, BreadcrumbItemConfig, BreadcrumbMenuItemConfig, BreadcrumbsProps, ButtonProps, CalendarEvent, CalendarProps, CardProps, CarouselItem, CarouselProps, ChipProps, CodeBlockItem, CodeBlockProps, ColorPickerProps, ConfirmProps, ContextMenuItemConfig, ContextMenuProps, CountdownProps, CursorFollowerProps, DatePickerProps, DbEventHandler, DividerProps, DrawerProps, DropdownItemConfig, DropdownProps, DropzoneProps, EmptyStateProps, FileUploaderProps, FloatingActionButtonProps, FooterCompanyInfo, FooterFamilySite, FooterLink, FooterLinkColumn, FooterProps, FooterSocialLink, FormFieldData, FormProps, GanttAssignee, GanttGroup, GanttItem, GanttProps, GanttRow, GradientColor, GradientProps, GradientScheme, GradientTone, GridBackgroundProps, ImageListItem, ImageListProps, ImagePlaceholderProps, ImageProps, IndicatorProps, InputProps, KanbanAssignee, KanbanCard, KanbanColumn, KanbanProps, KanbanTag, LabelProps, LightboxImage, LightboxProps, ListItemConfig, ListProps, LogoProps, LottieProps, MarkdownEditorProps, MarqueeImageItem, MarqueeProps, MasonryItem, MasonryProps, MenuItemChildConfig, MenuItemProps, ModalProps, ModalSegmentItem, ModalTabItem, NavbarItem, NavbarProps, NavbarUserProfile, OnboardingModalProps, OnboardingStep, PageHeaderProps, PageHeaderTabItem, PaginationProps, PopoverProps, ProgressProps, ProgressStepItem, ProgressStepProps, RadioProps, RandomGradientProps, RangeSliderProps, RatingProps, ReorderItem, ReorderProps, ResizablePanelsProps, ScrollAreaProps, SearchBarProps, SectionAppDownloadProps, SectionAppDownloadStore, SectionBlockBadge, SectionContactAction, SectionContactProps, SectionCtaButton, SectionCtaProps, SectionFaqItem, SectionFaqProps, SectionFeatureAction, SectionFeatureBadge, SectionFeatureGridItem, SectionFeatureGridProps, SectionFeatureProps, SectionHeroButton, SectionHeroProps, SectionLogoCloudItem, SectionLogoCloudProps, SectionPricingCta, SectionPricingPlan, SectionPricingProps, SectionProps, SectionStatItem, SectionStatsProps, SectionTestimonialItem, SectionTestimonialsProps, SegmentControlProps, SelectProps, SelectionProps, SharePlatform, ShareProps, SidebarItem, SidebarProject, SidebarPromoBanner, SidebarProps, SidebarSection, SidebarUserProfile, SkeletonProps, SpinnerProps, SplitViewProps, StatChange, StatProps, StepperProps, TabItemConfig, TableColumn, TableProps, TabsProps, TestimonialProps, TextareaProps, TimePickerProps, TimelineItem, TimelineProps, ToastProps, ToggleProps, TooltipProps, TopBannerProps, TutorialProps, TutorialStep, UseContextMenuReturn, VideoPlayerProps, WebComponentProps, YouTubePlayerProps };
|
|
9451
|
+
export { Accordion, AdBanner, AiChat, AiChatList, Alert, AnimationBackground, AnimationText, AppBadge, AudioPlayer, Avatar, Backdrop, Badge, Banner, BottomNavigation, BottomSheet, Breadcrumbs, Button, Calendar, Card, Carousel, ChatComposer, ChatList, ChatMessage, ChatOrb, ChatRoom, ChatSuggestions, ChatTyping, ChatWelcome, ChatWidget, Checkbox, Chip, CodeBlock, ColorPicker, Confirm, Container, ContextMenu, Countdown, CursorFollower, DatePicker, Divider, DownloadProgress, Drawer, Dropdown, Dropzone, EmailVerify, EmptyState, FileUploader, FloatingActionButton, Footer, Form, Gantt, Gradient, Grid, GridBackground, GridItem, Image, ImageList, ImagePlaceholder, Indicator, Input, Kanban, Label, Lightbox, List, Logo, Lottie, MarkdownEditor, Marquee, Masonry, MenuItem, Modal, ModalBody, ModalFooter, ModalHeader, Navbar, OnboardingModal, OtpInput, PageHeader, Pagination, PhoneVerify, Popover, Progress, ProgressStep, Progressbar, Radio, RandomGradient, RangeSlider, Rating, Reorder, ResizablePanels, ScrollArea, SearchBar, Section, SectionAppDownload, SectionContact, SectionCta, SectionFaq, SectionFeature, SectionFeatureGrid, SectionHero, SectionLogoCloud, SectionPricing, SectionStats, SectionTestimonials, SegmentControl, Select, Share, Sidebar, Skeleton, Spinner, SplitView, Stack, Stat, Stepper, Table, Tabs, Testimonial, Textarea, TimePicker, Timeline, Toast, Toggle, Toolbar, Tooltip, TopBanner, Tutorial, TwoFactor, VideoPlayer, YouTubePlayer, useContextMenu };
|
|
9452
|
+
export type { AccordionItemConfig, AccordionProps, AdBannerProps, AiChatListProps, AiChatProps, AlertAction, AlertProps, AnimationBackgroundProps, AnimationTextProps, AppBadgeProps, AudioPlayerProps, AvatarProps, BackdropProps, BadgeProps, BannerAction, BannerProps, BottomNavigationItem, BottomNavigationProps, BottomSheetProps, BreadcrumbItemConfig, BreadcrumbMenuItemConfig, BreadcrumbsProps, ButtonProps, CalendarEvent, CalendarProps, CardProps, CarouselItem, CarouselProps, ChatComposerProps, ChatListProps, ChatMessageProps, ChatOrbProps, ChatRoomProps, ChatSuggestionsProps, ChatTypingProps, ChatWelcomeProps, ChatWidgetProps, ChipProps, CodeBlockItem, CodeBlockProps, ColorPickerProps, ConfirmProps, ContextMenuItemConfig, ContextMenuProps, CountdownProps, CursorFollowerProps, DatePickerProps, DbChatSuggestion, DbChatTool, DbChatWidgetConversation, DbChatWidgetMessage, DbEventHandler, DividerProps, DownloadProgressProps, DrawerProps, DropdownItemConfig, DropdownProps, DropzoneProps, EmailVerifyProps, EmptyStateProps, FileUploaderProps, FloatingActionButtonProps, FooterCompanyInfo, FooterFamilySite, FooterLink, FooterLinkColumn, FooterProps, FooterSocialLink, FormFieldData, FormProps, GanttAssignee, GanttGroup, GanttItem, GanttProps, GanttRow, GradientColor, GradientProps, GradientScheme, GradientTone, GridBackgroundProps, ImageListItem, ImageListProps, ImagePlaceholderProps, ImageProps, IndicatorProps, InputProps, KanbanAssignee, KanbanCard, KanbanColumn, KanbanProps, KanbanTag, LabelProps, LightboxImage, LightboxProps, ListItemConfig, ListProps, LogoProps, LottieProps, MarkdownEditorProps, MarqueeImageItem, MarqueeProps, MasonryItem, MasonryProps, MenuItemChildConfig, MenuItemProps, ModalProps, ModalSegmentItem, ModalTabItem, NavbarItem, NavbarProps, NavbarUserProfile, OnboardingModalProps, OnboardingStep, OtpInputProps, PageHeaderProps, PageHeaderTabItem, PaginationProps, PhoneVerifyProps, PopoverProps, ProgressProps, ProgressStepItem, ProgressStepProps, RadioProps, RandomGradientProps, RangeSliderProps, RatingProps, ReorderItem, ReorderProps, ResizablePanelsProps, ScrollAreaProps, SearchBarProps, SectionAppDownloadProps, SectionAppDownloadStore, SectionBlockBadge, SectionContactAction, SectionContactProps, SectionCtaButton, SectionCtaProps, SectionFaqItem, SectionFaqProps, SectionFeatureAction, SectionFeatureBadge, SectionFeatureGridItem, SectionFeatureGridProps, SectionFeatureProps, SectionHeroButton, SectionHeroProps, SectionLogoCloudItem, SectionLogoCloudProps, SectionPricingCta, SectionPricingPlan, SectionPricingProps, SectionProps, SectionStatItem, SectionStatsProps, SectionTestimonialItem, SectionTestimonialsProps, SegmentControlProps, SelectProps, SelectionProps, SharePlatform, ShareProps, SidebarItem, SidebarProject, SidebarPromoBanner, SidebarProps, SidebarSection, SidebarUserProfile, SkeletonProps, SpinnerProps, SplitViewProps, StatChange, StatProps, StepperProps, TabItemConfig, TableColumn, TableProps, TabsProps, TestimonialProps, TextareaProps, TimePickerProps, TimelineItem, TimelineProps, ToastProps, ToggleProps, TooltipProps, TopBannerProps, TutorialProps, TutorialStep, TwoFactorProps, UseContextMenuReturn, VideoPlayerProps, WebComponentProps, YouTubePlayerProps };
|