inquirer-form 0.2.0 → 0.3.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.
@@ -0,0 +1,473 @@
1
+ # inquirer-form
2
+
3
+ [English](./README.md) | 简体中文
4
+
5
+ 一个基于 Vue 3 的可视化表单设计器和运行时库,专为 [Inquirer.js](https://github.com/SBoudrias/Inquirer.js/) 打造,实现 Web 表单与命令行交互的完美统一。
6
+
7
+ ## ✨ 特性
8
+
9
+ - 🎨 **可视化设计器** - 拖拽式表单设计,所见即所得
10
+ - 🔄 **多端统一** - 一套 Schema 同时驱动 Web 表单和 CLI 交互
11
+ - 🚀 **开箱即用** - 内置 9 种 Inquirer 专属控件
12
+ - 🎯 **类型安全** - 完整的 TypeScript 类型定义
13
+ - 🌍 **国际化** - 内置中英文支持
14
+ - 🔌 **灵活扩展** - 支持自定义控件和主题
15
+ - 📦 **轻量级** - 基于 agilebuilder-form 构建
16
+
17
+ ## 📦 安装
18
+
19
+ ```bash
20
+ npm install inquirer-form
21
+ ```
22
+
23
+ ### 必需依赖
24
+
25
+ 本包需要 `agilebuilder-form` 作为核心依赖:
26
+
27
+ ```bash
28
+ npm install agilebuilder-form
29
+ ```
30
+
31
+ > **注意**:`vue-i18n` 已内置在本包中,无需单独安装。
32
+
33
+ ### Peer Dependencies
34
+
35
+ 确保安装以下对等依赖:
36
+
37
+ ```bash
38
+ npm install vue@^3.5.0 element-plus@^2.11.7 vuedraggable@^4.1.0
39
+ ```
40
+
41
+ ### 导入样式
42
+
43
+ 别忘了在应用中导入所需的 CSS 文件:
44
+
45
+ ```typescript
46
+ // 导入 inquirer-form 样式
47
+ import 'inquirer-form/style.css'
48
+
49
+ // 导入 agilebuilder-form 样式
50
+ import 'agilebuilder-form/dist/style.css'
51
+
52
+ // 导入 Element Plus 样式
53
+ import 'element-plus/dist/index.css'
54
+ ```
55
+
56
+ ## 🎯 使用场景
57
+
58
+ ### CLI 工具开发
59
+ - 项目脚手架的配置向导
60
+ - 命令行工具的参数收集
61
+ - 批量操作的确认流程
62
+
63
+ ### Web 应用表单
64
+ - 管理后台的配置表单
65
+ - 用户注册和设置页面
66
+ - 数据录入和编辑界面
67
+
68
+ ### 多端统一场景
69
+ - DevOps 工具(CLI 操作 + Web 管理)
70
+ - 配置管理系统(命令行配置 + Web 可视化)
71
+ - 自动化脚本(CLI 执行 + Web 监控)
72
+
73
+ ## 🚀 快速开始
74
+
75
+ ### 1. 安装插件(可选)
76
+
77
+ 如果使用默认导出,i18n 将自动安装:
78
+
79
+ ```typescript
80
+ import InquirerForm from 'inquirer-form'
81
+ import { createApp } from 'vue'
82
+
83
+ const app = createApp(App)
84
+ app.use(InquirerForm) // 自动安装 i18n 并注册组件
85
+ ```
86
+
87
+ 或手动注册控件:
88
+
89
+ ```typescript
90
+ import { registerInquirerControls } from 'inquirer-form'
91
+
92
+ // 注册所有 Inquirer 控件
93
+ registerInquirerControls()
94
+ ```
95
+
96
+ ### 2. 导入样式
97
+
98
+ ```typescript
99
+ // main.ts 或 App.vue
100
+ import 'inquirer-form/style.css'
101
+ import 'agilebuilder-form/dist/style.css'
102
+ import 'element-plus/dist/index.css'
103
+ ```
104
+
105
+ ### 3. 使用设计器
106
+
107
+ ```vue
108
+ <script setup lang="ts">
109
+ import { InquirerFormDesigner, createInquirerSampleControls } from 'inquirer-form'
110
+ import { SchemaEngine } from 'agilebuilder-form'
111
+
112
+ const engine = new SchemaEngine()
113
+
114
+ // 可选:加载示例表单
115
+ engine.getSchema().controls = createInquirerSampleControls((key) => key)
116
+ </script>
117
+
118
+ <template>
119
+ <InquirerFormDesigner :engine="engine" />
120
+ </template>
121
+ ```
122
+
123
+ ### 4. Web 端运行时
124
+
125
+ ```vue
126
+ <script setup lang="ts">
127
+ import { ref } from 'vue'
128
+ import { InquirerFormRuntime } from 'inquirer-form'
129
+ import type { FormData, FormSchema } from 'agilebuilder-form'
130
+
131
+ const formData = ref<FormData>({})
132
+ const schema: FormSchema = {
133
+ controls: [
134
+ // 从设计器获取或手动定义
135
+ ]
136
+ }
137
+ </script>
138
+
139
+ <template>
140
+ <InquirerFormRuntime v-model="formData" :schema="schema" />
141
+ </template>
142
+ ```
143
+
144
+ ### 5. 转换为 Inquirer
145
+
146
+ ```typescript
147
+ import inquirer from 'inquirer'
148
+ import { schemaToInquirer } from 'inquirer-form'
149
+ import type { FormSchema } from 'agilebuilder-form'
150
+
151
+ const schema: FormSchema = {
152
+ // 从设计器或 API 获取
153
+ }
154
+
155
+ // 转换为 Inquirer 问题集
156
+ const questions = schemaToInquirer(schema)
157
+
158
+ // 在命令行中使用
159
+ const answers = await inquirer.prompt(questions)
160
+ console.log(answers)
161
+ ```
162
+
163
+ ### 6. 体验 Playground
164
+
165
+ ```bash
166
+ git clone <repository-url>
167
+ cd inquirer-form
168
+ npm install
169
+ npm run dev
170
+ ```
171
+
172
+ 访问浏览器查看集成了设计器、Web 预览和 Inquirer 导出的完整演示。
173
+
174
+ ## 📚 API 文档
175
+
176
+ ### 组件
177
+
178
+ #### InquirerFormDesigner
179
+
180
+ 可视化表单设计器组件。
181
+
182
+ **Props:**
183
+ - `engine?: SchemaEngine` - Schema 引擎实例(可选,默认创建新实例)
184
+ - `seedSample?: boolean` - 是否加载示例表单(默认 `false`)
185
+ - `autoRegisterControls?: boolean` - 是否自动注册控件(默认 `true`)
186
+
187
+ **示例:**
188
+ ```vue
189
+ <InquirerFormDesigner
190
+ :engine="engine"
191
+ :seedSample="true"
192
+ :autoRegisterControls="true"
193
+ />
194
+ ```
195
+
196
+ #### InquirerFormRuntime
197
+
198
+ Web 端表单运行时组件。
199
+
200
+ **Props:**
201
+ - `schema: FormSchema` - 表单 Schema(必需)
202
+ - `modelValue: FormData` - 表单数据(v-model)
203
+
204
+ **Events:**
205
+ - `update:modelValue` - 表单数据更新事件
206
+
207
+ **示例:**
208
+ ```vue
209
+ <InquirerFormRuntime v-model="formData" :schema="schema" />
210
+ ```
211
+
212
+ #### InquirerFormPlayground
213
+
214
+ 完整的 Playground 组件,包含设计器、运行时和导出功能。
215
+
216
+ **示例:**
217
+ ```vue
218
+ <InquirerFormPlayground />
219
+ ```
220
+
221
+ ### 函数
222
+
223
+ #### registerInquirerControls()
224
+
225
+ 注册所有内置的 Inquirer 控件到全局注册表。
226
+
227
+ ```typescript
228
+ import { registerInquirerControls } from 'inquirer-form'
229
+
230
+ registerInquirerControls()
231
+ ```
232
+
233
+ #### schemaToInquirer(schema, options?)
234
+
235
+ 将表单 Schema 转换为 Inquirer 问题集。
236
+
237
+ **参数:**
238
+ - `schema: FormSchema` - 表单 Schema
239
+ - `options?: TransformOptions` - 转换选项
240
+ - `includeDisabled?: boolean` - 是否包含禁用的字段(默认 `false`)
241
+
242
+ **返回:**
243
+ - `InquirerQuestion[]` - Inquirer 问题数组
244
+
245
+ **示例:**
246
+ ```typescript
247
+ import { schemaToInquirer } from 'inquirer-form'
248
+
249
+ const questions = schemaToInquirer(schema, {
250
+ includeDisabled: false
251
+ })
252
+ ```
253
+
254
+ #### createInquirerSampleControls(t)
255
+
256
+ 创建示例表单控件。
257
+
258
+ **参数:**
259
+ - `t: (key: string) => string` - 国际化翻译函数
260
+
261
+ **返回:**
262
+ - `SchemaNode[]` - Schema 节点数组
263
+
264
+ **示例:**
265
+ ```typescript
266
+ import { createInquirerSampleControls } from 'inquirer-form'
267
+
268
+ const controls = createInquirerSampleControls((key) => key)
269
+ engine.getSchema().controls = controls
270
+ ```
271
+
272
+ ### 类型
273
+
274
+ #### InquirerPromptType
275
+
276
+ 支持的 Inquirer 提示类型。
277
+
278
+ ```typescript
279
+ type InquirerPromptType =
280
+ | 'input' // 文本输入
281
+ | 'number' // 数字输入
282
+ | 'confirm' // 确认(是/否)
283
+ | 'list' // 单选列表
284
+ | 'rawlist' // 原始列表
285
+ | 'expand' // 展开选择
286
+ | 'checkbox' // 多选框
287
+ | 'password' // 密码输入
288
+ | 'editor' // 编辑器
289
+ ```
290
+
291
+ #### InquirerQuestion
292
+
293
+ Inquirer 问题对象接口。
294
+
295
+ ```typescript
296
+ interface InquirerQuestion {
297
+ type: InquirerPromptType
298
+ name: string
299
+ message: string
300
+ default?: any
301
+ prefix?: string
302
+ suffix?: string
303
+ pageSize?: number
304
+ loop?: boolean
305
+ mask?: string | boolean
306
+ choices?: InquirerChoice[]
307
+ whenExpression?: string
308
+ validateExpression?: string
309
+ filterExpression?: string
310
+ transformerExpression?: string
311
+ metadata?: Record<string, any>
312
+ }
313
+ ```
314
+
315
+ #### InquirerChoice
316
+
317
+ 选择项接口(用于 list、checkbox 等)。
318
+
319
+ ```typescript
320
+ interface InquirerChoice {
321
+ name: string // 显示文本
322
+ value: string // 实际值
323
+ short?: string // 简短描述
324
+ }
325
+ ```
326
+
327
+ ## 🎨 内置控件
328
+
329
+ | 控件类型 | 说明 | Inquirer 类型 |
330
+ |---------|------|--------------|
331
+ | Input | 文本输入框 | `input` |
332
+ | Password | 密码输入框 | `password` |
333
+ | Number | 数字输入框 | `number` |
334
+ | Confirm | 确认框 | `confirm` |
335
+ | List | 单选列表 | `list` |
336
+ | RawList | 原始列表 | `rawlist` |
337
+ | Expand | 展开选择 | `expand` |
338
+ | Checkbox | 多选框 | `checkbox` |
339
+ | Editor | 多行编辑器 | `editor` |
340
+
341
+ ## 🔧 高级用法
342
+
343
+ ### 自定义控件
344
+
345
+ ```typescript
346
+ import { registry } from 'agilebuilder-form'
347
+ import type { ControlMeta } from 'agilebuilder-form'
348
+
349
+ const customControl: ControlMeta = {
350
+ type: 'custom-input',
351
+ label: '自定义输入',
352
+ component: CustomInputComponent,
353
+ initialSchema: () => ({
354
+ id: generateId(),
355
+ type: 'custom-input',
356
+ field: '',
357
+ props: {}
358
+ })
359
+ }
360
+
361
+ // 注册自定义控件
362
+ registry.register(customControl)
363
+ ```
364
+
365
+ ### 表达式支持
366
+
367
+ Schema 支持多种表达式字段,用于动态控制:
368
+
369
+ ```typescript
370
+ {
371
+ type: 'input',
372
+ field: 'email',
373
+ props: {
374
+ message: '请输入邮箱',
375
+ // 条件显示
376
+ whenExpression: "return answers.needEmail === true",
377
+ // 验证
378
+ validateExpression: "return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(input) || '请输入有效的邮箱'",
379
+ // 过滤
380
+ filterExpression: "return input.trim().toLowerCase()",
381
+ // 转换显示
382
+ transformerExpression: "return input.replace(/@.*/, '@***')"
383
+ }
384
+ }
385
+ ```
386
+
387
+ ### 与 Inquirer.js 集成
388
+
389
+ 完整的 CLI 集成示例:
390
+
391
+ ```typescript
392
+ import inquirer from 'inquirer'
393
+ import { schemaToInquirer } from 'inquirer-form'
394
+ import type { FormSchema } from 'agilebuilder-form'
395
+
396
+ // 从文件或 API 加载 Schema
397
+ const schema: FormSchema = require('./form-schema.json')
398
+
399
+ // 转换为 Inquirer 问题
400
+ const questions = schemaToInquirer(schema)
401
+
402
+ // 处理表达式(将字符串转换为函数)
403
+ const processedQuestions = questions.map(q => ({
404
+ ...q,
405
+ when: q.whenExpression
406
+ ? new Function('answers', q.whenExpression)
407
+ : undefined,
408
+ validate: q.validateExpression
409
+ ? new Function('input', 'answers', q.validateExpression)
410
+ : undefined,
411
+ filter: q.filterExpression
412
+ ? new Function('input', 'answers', q.filterExpression)
413
+ : undefined,
414
+ transformer: q.transformerExpression
415
+ ? new Function('input', 'answers', 'flags', q.transformerExpression)
416
+ : undefined
417
+ }))
418
+
419
+ // 执行询问
420
+ const answers = await inquirer.prompt(processedQuestions)
421
+ console.log('用户输入:', answers)
422
+ ```
423
+
424
+ ## 📝 开发
425
+
426
+ ### 脚本命令
427
+
428
+ | 命令 | 说明 |
429
+ |------|------|
430
+ | `npm run dev` | 启动开发服务器(Playground) |
431
+ | `npm run build` | 构建生产版本 |
432
+ | `npm run type-check` | TypeScript 类型检查 |
433
+ | `npm run test:unit` | 运行单元测试 |
434
+ | `npm run docs:dev` | 启动文档开发服务器 |
435
+ | `npm run docs:build` | 构建文档 |
436
+
437
+ ### 构建产物
438
+
439
+ 运行 `npm run build` 后,将生成以下文件:
440
+
441
+ ```
442
+ dist/
443
+ ├── inquirer-form.es.js # ES Module
444
+ ├── inquirer-form.umd.js # UMD Module
445
+ ├── inquirer-form.css # 样式文件
446
+ └── index.d.ts # TypeScript 类型声明
447
+ ```
448
+
449
+ ### 发布到 npm
450
+
451
+ 1. 确保已登录 npm 账号
452
+ 2. 更新版本号:`npm version patch|minor|major`
453
+ 3. 构建:`npm run build`
454
+ 4. 发布:`npm publish --access public`
455
+
456
+ ## 🔗 相关项目
457
+
458
+ - [agilebuilder-form](https://github.com/yjkjdev/agilebuilder-form) - 底层表单引擎
459
+ - [Inquirer.js](https://github.com/SBoudrias/Inquirer.js/) - 命令行交互库
460
+ - [Element Plus](https://element-plus.org/) - UI 组件库
461
+ - [Vue 3](https://vuejs.org/) - 渐进式 JavaScript 框架
462
+
463
+ ## 📄 许可证
464
+
465
+ [MIT](./LICENSE)
466
+
467
+ ## 🤝 贡献
468
+
469
+ 欢迎提交 Issue 和 Pull Request!
470
+
471
+ ## 📮 联系方式
472
+
473
+ 如有问题或建议,请通过 GitHub Issues 联系我们。
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ import { ControlMeta } from 'agilebuilder-form';
5
5
  import { DefineComponent } from 'vue';
6
6
  import { FormData as FormData_2 } from 'agilebuilder-form';
7
7
  import { FormSchema } from 'agilebuilder-form';
8
+ import { I18n } from 'vue-i18n';
8
9
  import { PublicProps } from 'vue';
9
10
  import { SchemaEngine } from 'agilebuilder-form';
10
11
  import { SchemaNode } from 'agilebuilder-form';
@@ -20,7 +21,11 @@ declare type __VLS_Props_2 = {
20
21
  modelValue?: FormData_2;
21
22
  };
22
23
 
23
- export declare function createInquirerSampleControls(): SchemaNode[];
24
+ /**
25
+ * 创建示例表单控件
26
+ * @param t 可选的翻译函数,如果不提供则使用内置的 i18n
27
+ */
28
+ export declare function createInquirerSampleControls(t?: (key: string) => string): SchemaNode[];
24
29
 
25
30
  declare const _default: {
26
31
  install(app: App): void;
@@ -43,6 +48,10 @@ seedSample: boolean;
43
48
  autoRegisterControls: boolean;
44
49
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
45
50
 
51
+ export declare const inquirerFormI18n: I18n;
52
+
53
+ export declare const inquirerFormI18nPlugin: I18n<{}, {}, {}, string, boolean>;
54
+
46
55
  export declare const InquirerFormPlayground: DefineComponent< {}, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, HTMLDivElement>;
47
56
 
48
57
  export declare const InquirerFormRuntime: DefineComponent<__VLS_Props_2, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
@@ -1 +1 @@
1
- @charset "UTF-8";.inquirer-designer-card[data-v-5aa173c3]{display:flex;flex-direction:column;gap:8px}.card-header[data-v-5aa173c3]{display:flex;align-items:center;gap:8px}.type-badge[data-v-5aa173c3]{padding:2px 6px;border-radius:2px;font-size:12px;font-weight:600;text-transform:uppercase;background-color:#0f6cbd1f;background-color:color-mix(in srgb,var(--ag-primary-color, #0f6cbd) 12%,transparent);color:#0f6cbd;color:var(--ag-primary-color, #0f6cbd)}.message[data-v-5aa173c3]{font-size:14px;font-weight:600;color:#0f1d32;color:var(--ag-text-primary, #0f1d32)}.description[data-v-5aa173c3]{margin:0;font-size:12px;line-height:1.4;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.options-preview[data-v-5aa173c3]{margin:0;padding-left:16px;font-size:12px;color:#2e3a4e}.options-preview li[data-v-5aa173c3]{list-style:disc}.options-preview .more[data-v-5aa173c3]{list-style:none;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.inquirer-input[data-v-b9ac497e]{display:flex;flex-direction:column;gap:4px}.transformer-preview[data-v-b9ac497e]{margin:0;font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.base-input-config[data-v-bd4a89f6]{display:flex;flex-direction:column}.textarea-setting[data-v-2c386165]{margin-bottom:12px}.textarea-setting label[data-v-2c386165]{display:block;margin-bottom:4px;font-size:12px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.textarea-setting .hint[data-v-2c386165]{margin:4px 0 0;font-size:12px;line-height:1.4;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.expression-editor[data-v-91ba45bb]{margin-bottom:16px;display:flex;flex-direction:column;gap:8px}.expression-editor__label[data-v-91ba45bb]{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.info-icon[data-v-91ba45bb]{width:14px;height:14px;cursor:pointer;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.code-input[data-v-91ba45bb] textarea{font-family:JetBrains Mono,Fira Code,Menlo,Consolas,monospace;font-size:12px}.example-toggle[data-v-91ba45bb]{border:none;background:transparent;font-size:12px;cursor:pointer;color:var(--ag-primary-color, #0f6cbd);padding:0}.expression-editor__examples[data-v-91ba45bb]{border-radius:4px;border:1px dashed #dcdfe6;padding:8px 12px;background-color:#fff;display:flex;flex-direction:column;gap:4px}.examples-title[data-v-91ba45bb]{margin:0;font-size:12px;font-weight:600;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.examples-list[data-v-91ba45bb]{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:4px}.examples-list code[data-v-91ba45bb]{font-family:JetBrains Mono,Fira Code,Menlo,Consolas,monospace;background-color:#f3f4f6;padding:1px 4px;border-radius:2px;font-size:12px}.fade-enter-active[data-v-91ba45bb],.fade-leave-active[data-v-91ba45bb]{transition:opacity .2s ease}.fade-enter-from[data-v-91ba45bb],.fade-leave-to[data-v-91ba45bb]{opacity:0}.inline-settings[data-v-c4882c52]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.inquirer-password[data-v-0cb418f2]{display:flex;flex-direction:column;gap:4px}.mask-hint[data-v-0cb418f2]{margin:0;font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.number-runtime[data-v-ade0684b]{display:flex;align-items:center;gap:8px}.number-runtime__input[data-v-ade0684b]{flex:1}.affix[data-v-ade0684b]{font-size:13px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.number-setting[data-v-4fb22ad3]{margin-bottom:12px}.number-setting label[data-v-4fb22ad3]{display:block;margin-bottom:4px;font-size:12px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.confirm-runtime[data-v-f41e6b08]{display:flex;align-items:center;gap:12px}.state[data-v-f41e6b08]{font-size:13px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.affix[data-v-f41e6b08]{font-size:13px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.inquirer-list[data-v-ad8b9ebc]{display:flex;flex-direction:column;gap:4px}.select-runtime[data-v-ad8b9ebc]{width:100%}.affix[data-v-ad8b9ebc]{font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.list-hint[data-v-ad8b9ebc]{margin:0;font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.checkbox-wrapper[data-v-86b287ae]{display:flex;flex-direction:column;gap:4px}.checkbox-runtime[data-v-86b287ae]{display:flex;flex-direction:column;gap:6px}.affix[data-v-86b287ae]{font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.multi-default[data-v-c571b549]{margin-bottom:12px}.multi-default label[data-v-c571b549]{display:block;margin-bottom:4px;font-size:12px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.editor-runtime[data-v-bd13db5a]{display:flex;flex-direction:column;gap:4px}.affix[data-v-bd13db5a]{font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.transformer-preview[data-v-bd13db5a]{margin:0;font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.node-description[data-v-762f3565]{margin:8px 0 0;font-size:12px;line-height:1.4;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.node-error[data-v-762f3565]{margin:4px 0 0;font-size:12px;color:#ff6b6b}.inquirer-web-runtime[data-v-2ef727bc]{padding:24px}.form-header[data-v-2ef727bc]{margin-bottom:32px;padding-bottom:16px;border-bottom:1px solid transparent;border-bottom-color:#d8e0ef;border-bottom-color:var(--ag-border-light, #d8e0ef)}.form-title[data-v-2ef727bc]{margin:0 0 8px;font-size:24px;font-weight:600;color:#0f1d32;color:var(--ag-text-primary, #0f1d32)}.form-description[data-v-2ef727bc]{margin:0;font-size:14px;line-height:1.5;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.form-content[data-v-2ef727bc]{padding:16px 24px 0 0}.runtime-empty[data-v-2ef727bc]{padding:40px;text-align:center;color:#5a6578;color:var(--ag-text-tertiary, #5a6578);font-size:14px}.inquirer-demo[data-v-cdc491b8]{width:100%;max-width:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:16px;min-height:calc(100vh - var(--vp-nav-height, 64px));background:#f5f7fb;padding:16px}.inquirer-demo[data-v-cdc491b8]>*{margin:0 auto;width:100%}.callout-panel[data-v-cdc491b8],.demo-workspace[data-v-cdc491b8]{border-radius:8px;background:#fff;border:1px solid rgba(15,23,42,.08);box-shadow:0 8px 24px #0f172a14}.callout-panel[data-v-cdc491b8]{padding:16px;display:flex;flex-direction:column;gap:16px}.callout-header[data-v-cdc491b8]{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}.callout-header h1[data-v-cdc491b8]{margin:0 0 8px}.callout-header p[data-v-cdc491b8]{margin:0;font-size:14px;line-height:1.6;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.callout-actions[data-v-cdc491b8]{display:flex;flex-wrap:wrap;gap:8px}.callout-actions button[data-v-cdc491b8]{padding:10px 16px;border-radius:8px;border:1px solid rgba(15,23,42,.08);background:#fff;cursor:pointer;font-weight:600;transition:transform .2s,box-shadow .2s}.callout-actions button[data-v-cdc491b8]:hover{transform:translateY(-1px);box-shadow:0 10px 20px #0f172a14}.callout-controls header[data-v-cdc491b8]{font-size:13px;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.callout-controls ul[data-v-cdc491b8]{list-style:none;display:flex;flex-direction:column;gap:8px;padding:0;margin:0}.callout-controls li[data-v-cdc491b8]{display:flex;justify-content:space-between;padding:10px 14px;border-radius:8px;background:#f5f7fb;border:1px solid rgba(15,23,42,.05)}.callout-controls .type[data-v-cdc491b8]{font-weight:600}.callout-controls .meta[data-v-cdc491b8]{font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.demo-workspace[data-v-cdc491b8]{padding:16px;display:flex;flex-direction:column;gap:16px;flex:1;min-height:0}.workspace-tabs[data-v-cdc491b8]{display:flex;flex-wrap:wrap;gap:8px;background:#fff;border-radius:8px;border:1px solid rgba(15,23,42,.08)}.tab-item[data-v-cdc491b8]{flex:1 1 200px;border:none;border-radius:8px;background:transparent;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;padding:12px;text-align:left;transition:background .2s,box-shadow .2s}.tab-item span[data-v-cdc491b8]{font-weight:600;font-size:15px}.tab-item small[data-v-cdc491b8]{font-size:12px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.tab-item.active[data-v-cdc491b8]{background:#edf2ff;box-shadow:inset 0 0 0 1px #4f46e559}.workspace-panel[data-v-cdc491b8]{border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #0f172a0d;min-height:0}.designer-panel[data-v-cdc491b8]{flex:1;display:flex;min-height:0}.designer-panel[data-v-cdc491b8] .designer-shell{flex:1;min-height:0;height:100%}.panel-header[data-v-cdc491b8]{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px;flex-wrap:wrap}.panel-header h2[data-v-cdc491b8]{margin:0}.panel-header small[data-v-cdc491b8]{font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.panel-header .btn-copy[data-v-cdc491b8]{margin-left:auto;padding:6px 14px;border-radius:8px;border:none;cursor:pointer;color:#fff;font-weight:600;background-color:#0f6cbd;background-color:var(--ag-primary-color, #0f6cbd)}.runtime-json[data-v-cdc491b8]{margin-top:16px}.runtime-json header[data-v-cdc491b8]{font-size:13px;font-weight:600;margin-bottom:8px}.runtime-json pre[data-v-cdc491b8]{margin:0;padding:12px;border-radius:4px;background:#f5f7fb;color:#0f1d32;max-height:240px;overflow:auto}.json-viewer[data-v-cdc491b8]{margin:0;padding:12px;border-radius:4px;background:#f5f7fb;color:#0f1d32;max-height:360px;overflow:auto;border:1px solid rgba(15,23,42,.06)}.code-snippet[data-v-cdc491b8]{margin-top:16px}.code-snippet header[data-v-cdc491b8]{font-size:13px;font-weight:600;margin-bottom:8px}.code-snippet pre[data-v-cdc491b8]{margin:0;padding:12px;border-radius:4px;background:#111827;color:#caf0f8;font-size:13px;overflow:auto}@media(max-width:960px){.inquirer-demo[data-v-cdc491b8]{padding:16px}.workspace-tabs[data-v-cdc491b8]{flex-direction:column}.tab-item[data-v-cdc491b8]{width:100%}}
1
+ @charset "UTF-8";.inquirer-designer-card[data-v-b29b6f1e]{display:flex;flex-direction:column;gap:8px}.card-header[data-v-b29b6f1e]{display:flex;align-items:center;gap:8px}.type-badge[data-v-b29b6f1e]{padding:2px 6px;border-radius:2px;font-size:12px;font-weight:600;text-transform:uppercase;background-color:#0f6cbd1f;background-color:color-mix(in srgb,var(--ag-primary-color, #0f6cbd) 12%,transparent);color:#0f6cbd;color:var(--ag-primary-color, #0f6cbd)}.message[data-v-b29b6f1e]{font-size:14px;font-weight:600;color:#0f1d32;color:var(--ag-text-primary, #0f1d32)}.description[data-v-b29b6f1e]{margin:0;font-size:12px;line-height:1.4;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.options-preview[data-v-b29b6f1e]{margin:0;padding-left:16px;font-size:12px;color:#2e3a4e}.options-preview li[data-v-b29b6f1e]{list-style:disc}.options-preview .more[data-v-b29b6f1e]{list-style:none;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.inquirer-input[data-v-c4eebc18]{display:flex;flex-direction:column;gap:4px}.transformer-preview[data-v-c4eebc18]{margin:0;font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.base-input-config[data-v-be4e1176]{display:flex;flex-direction:column}.textarea-setting[data-v-9093816f]{margin-bottom:12px}.textarea-setting label[data-v-9093816f]{display:block;margin-bottom:4px;font-size:12px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.textarea-setting .hint[data-v-9093816f]{margin:4px 0 0;font-size:12px;line-height:1.4;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.expression-editor[data-v-7b2a61b5]{margin-bottom:16px;display:flex;flex-direction:column;gap:8px}.expression-editor__label[data-v-7b2a61b5]{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.info-icon[data-v-7b2a61b5]{width:14px;height:14px;cursor:pointer;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.code-input[data-v-7b2a61b5] textarea{font-family:JetBrains Mono,Fira Code,Menlo,Consolas,monospace;font-size:12px}.example-toggle[data-v-7b2a61b5]{border:none;background:transparent;font-size:12px;cursor:pointer;color:var(--ag-primary-color, #0f6cbd);padding:0}.expression-editor__examples[data-v-7b2a61b5]{border-radius:4px;border:1px dashed #dcdfe6;padding:8px 12px;background-color:#fff;display:flex;flex-direction:column;gap:4px}.examples-title[data-v-7b2a61b5]{margin:0;font-size:12px;font-weight:600;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.examples-list[data-v-7b2a61b5]{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:4px}.examples-list code[data-v-7b2a61b5]{font-family:JetBrains Mono,Fira Code,Menlo,Consolas,monospace;background-color:#f3f4f6;padding:1px 4px;border-radius:2px;font-size:12px}.fade-enter-active[data-v-7b2a61b5],.fade-leave-active[data-v-7b2a61b5]{transition:opacity .2s ease}.fade-enter-from[data-v-7b2a61b5],.fade-leave-to[data-v-7b2a61b5]{opacity:0}.inline-settings[data-v-43dc3bfd]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.inquirer-password[data-v-027f448e]{display:flex;flex-direction:column;gap:4px}.mask-hint[data-v-027f448e]{margin:0;font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.number-runtime[data-v-41430bc7]{display:flex;align-items:center;gap:8px}.number-runtime__input[data-v-41430bc7]{flex:1}.affix[data-v-41430bc7]{font-size:13px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.number-setting[data-v-9db53040]{margin-bottom:12px}.number-setting label[data-v-9db53040]{display:block;margin-bottom:4px;font-size:12px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.confirm-runtime[data-v-220e5de9]{display:flex;align-items:center;gap:12px}.state[data-v-220e5de9]{font-size:13px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.affix[data-v-220e5de9]{font-size:13px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.inquirer-list[data-v-ed3b4861]{display:flex;flex-direction:column;gap:4px}.select-runtime[data-v-ed3b4861]{width:100%}.affix[data-v-ed3b4861]{font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.list-hint[data-v-ed3b4861]{margin:0;font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.checkbox-wrapper[data-v-5def473d]{display:flex;flex-direction:column;gap:4px}.checkbox-runtime[data-v-5def473d]{display:flex;flex-direction:column;gap:6px}.affix[data-v-5def473d]{font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.multi-default[data-v-fa680fd2]{margin-bottom:12px}.multi-default label[data-v-fa680fd2]{display:block;margin-bottom:4px;font-size:12px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.editor-runtime[data-v-768e57da]{display:flex;flex-direction:column;gap:4px}.affix[data-v-768e57da]{font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.transformer-preview[data-v-768e57da]{margin:0;font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.node-description[data-v-5d5107df]{margin:8px 0 0;font-size:12px;line-height:1.4;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.node-error[data-v-5d5107df]{margin:4px 0 0;font-size:12px;color:#ff6b6b}.inquirer-web-runtime[data-v-6fa4aa68]{padding:24px}.form-header[data-v-6fa4aa68]{margin-bottom:32px;padding-bottom:16px;border-bottom:1px solid transparent;border-bottom-color:#d8e0ef;border-bottom-color:var(--ag-border-light, #d8e0ef)}.form-title[data-v-6fa4aa68]{margin:0 0 8px;font-size:24px;font-weight:600;color:#0f1d32;color:var(--ag-text-primary, #0f1d32)}.form-description[data-v-6fa4aa68]{margin:0;font-size:14px;line-height:1.5;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.form-content[data-v-6fa4aa68]{padding:16px 24px 0 0}.runtime-empty[data-v-6fa4aa68]{padding:40px;text-align:center;color:#5a6578;color:var(--ag-text-tertiary, #5a6578);font-size:14px}.inquirer-demo[data-v-5dae1a4e]{width:100%;max-width:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:24px;min-height:calc(100vh - var(--vp-nav-height, 64px));background:color-mix(in srgb,#fff 65%,var(--ag-bg-primary, #eef2f8));padding:24px}.inquirer-demo[data-v-5dae1a4e]>*{margin:0 auto;width:100%}.callout-panel[data-v-5dae1a4e],.demo-workspace[data-v-5dae1a4e]{border-radius:24px;background:#fff;border:1px solid color-mix(in srgb,var(--ag-border-color, #b7c2d7) 30%,transparent);box-shadow:0 24px 70px #0f172a0d}.callout-panel[data-v-5dae1a4e]{padding:24px;display:flex;flex-direction:column;gap:16px}.callout-header[data-v-5dae1a4e]{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}.callout-title[data-v-5dae1a4e]{display:flex;align-items:center;gap:12px}.title-icon[data-v-5dae1a4e]{width:48px;height:48px;border-radius:16px;background:color-mix(in srgb,var(--ag-primary-color, #0f6cbd) 12%,#f2f5fb);color:var(--ag-primary-color, #0f6cbd);display:inline-flex;align-items:center;justify-content:center;font-size:22px}.callout-header h1[data-v-5dae1a4e]{margin:0 0 4px;font-size:24px}.callout-header p[data-v-5dae1a4e]{margin:0;font-size:14px;line-height:1.6;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.callout-actions[data-v-5dae1a4e]{display:flex;flex-wrap:wrap;gap:8px}.callout-actions button[data-v-5dae1a4e]{padding:10px 18px;border-radius:999px;border:1px solid color-mix(in srgb,var(--ag-border-color, #b7c2d7) 35%,transparent);background:color-mix(in srgb,var(--ag-bg-secondary, #f9fbfd) 80%,#fff);cursor:pointer;font-weight:500;font-size:14px;color:var(--ag-text-primary, #0f1d32);display:inline-flex;align-items:center;gap:4px;transition:background .2s,transform .2s,box-shadow .2s,border-color .2s}.callout-actions button[data-v-5dae1a4e]:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--ag-primary-color, #0f6cbd) 40%,transparent);background:#fff;box-shadow:0 12px 24px #0f172a14}.callout-controls header[data-v-5dae1a4e]{font-size:13px;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.callout-controls ul[data-v-5dae1a4e]{list-style:none;display:flex;flex-direction:column;gap:8px;padding:0;margin:0}.callout-controls li[data-v-5dae1a4e]{display:flex;justify-content:space-between;padding:10px 14px;border-radius:8px;background:#f5f7fb;border:1px solid rgba(15,23,42,.05)}.callout-controls .type[data-v-5dae1a4e]{font-weight:600}.callout-controls .meta[data-v-5dae1a4e]{font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.demo-workspace[data-v-5dae1a4e]{padding:24px;display:flex;flex-direction:column;gap:24px;flex:1;min-height:0}.workspace-tabs[data-v-5dae1a4e]{display:flex;flex-wrap:wrap;gap:4px;padding:4px;background:color-mix(in srgb,var(--ag-bg-secondary, #f9fbfd) 85%,#fff);border-radius:18px;border:1px solid color-mix(in srgb,var(--ag-border-light, #d8e0ef) 80%,transparent)}.tab-item[data-v-5dae1a4e]{flex:1 1 200px;border:none;border-radius:14px;background:transparent;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;padding:12px 16px;text-align:left;transition:background .2s,box-shadow .2s,color .2s}.tab-item span[data-v-5dae1a4e]{font-weight:600;font-size:15px}.tab-item small[data-v-5dae1a4e]{font-size:12px;color:#2e3a4e;color:var(--ag-text-secondary, #2e3a4e)}.tab-item.active[data-v-5dae1a4e]{background:#eef2f8;background:var(--ag-bg-primary, #eef2f8);box-shadow:0 10px 30px #0f172a14;color:#0f1d32;color:var(--ag-text-primary, #0f1d32)}.workspace-panel[data-v-5dae1a4e]{border-radius:20px;background:#fff;border:1px solid color-mix(in srgb,var(--ag-border-color, #b7c2d7) 25%,transparent);box-shadow:0 16px 46px #0f172a0f;min-height:0}.designer-panel[data-v-5dae1a4e]{flex:1;display:flex;min-height:0}.designer-panel[data-v-5dae1a4e] .designer-shell{flex:1;min-height:0;height:100%}.panel-header[data-v-5dae1a4e]{display:flex;align-items:center;gap:12px;margin:16px;flex-wrap:wrap}.panel-header h2[data-v-5dae1a4e]{margin:0}.panel-header small[data-v-5dae1a4e]{font-size:12px;color:#5a6578;color:var(--ag-text-tertiary, #5a6578)}.panel-header .btn-copy[data-v-5dae1a4e]{margin-left:auto;padding:6px 18px;border-radius:999px;border:1px solid color-mix(in srgb,var(--ag-primary-color, #0f6cbd) 35%,transparent);background:transparent;cursor:pointer;color:var(--ag-primary-color, #0f6cbd);font-weight:600;transition:background .2s,color .2s,border-color .2s}.panel-header .btn-copy[data-v-5dae1a4e]:hover{background:color-mix(in srgb,var(--ag-primary-color, #0f6cbd) 10%,#fff);border-color:color-mix(in srgb,var(--ag-primary-color, #0f6cbd) 50%,transparent)}.runtime-json[data-v-5dae1a4e]{margin-top:16px}.runtime-json header[data-v-5dae1a4e]{font-size:13px;font-weight:600;margin-bottom:8px}.runtime-json pre[data-v-5dae1a4e]{margin:0;padding:12px;border-radius:14px;background:color-mix(in srgb,var(--ag-bg-secondary, #f9fbfd) 85%,#fff);color:var(--ag-text-primary, #0f1d32);border:1px solid color-mix(in srgb,var(--ag-border-light, #d8e0ef) 80%,transparent);max-height:240px;overflow:auto}.json-viewer[data-v-5dae1a4e]{margin:0;padding:12px;border-radius:14px;background:color-mix(in srgb,var(--ag-bg-secondary, #f9fbfd) 85%,#fff);color:var(--ag-text-primary, #0f1d32);max-height:360px;overflow:auto;border:1px solid color-mix(in srgb,var(--ag-border-light, #d8e0ef) 80%,transparent)}.code-snippet[data-v-5dae1a4e]{margin-top:16px}.code-snippet header[data-v-5dae1a4e]{font-size:13px;font-weight:600;margin-bottom:8px}.code-snippet pre[data-v-5dae1a4e]{margin:0;padding:12px;border-radius:14px;background:#111827;color:#caf0f8;font-size:13px;overflow:auto}@media(max-width:960px){.inquirer-demo[data-v-5dae1a4e]{padding:16px}.workspace-tabs[data-v-5dae1a4e]{flex-direction:column}.tab-item[data-v-5dae1a4e]{width:100%}}