@open-feishu-card/schema 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/common/behaviors-context.d.ts +2 -0
  2. package/dist/common/behaviors-context.d.ts.map +1 -1
  3. package/dist/index.cjs +3075 -0
  4. package/dist/index.js +2966 -16
  5. package/package.json +7 -4
  6. package/dist/card.js +0 -41
  7. package/dist/card.js.map +0 -1
  8. package/dist/common/behavior.js +0 -39
  9. package/dist/common/behavior.js.map +0 -1
  10. package/dist/common/behaviors-context.js +0 -88
  11. package/dist/common/behaviors-context.js.map +0 -1
  12. package/dist/common/confirm.js +0 -12
  13. package/dist/common/confirm.js.map +0 -1
  14. package/dist/common/enums.js +0 -131
  15. package/dist/common/enums.js.map +0 -1
  16. package/dist/common/fallback.js +0 -22
  17. package/dist/common/fallback.js.map +0 -1
  18. package/dist/common/icon-tokens.js +0 -1163
  19. package/dist/common/icon-tokens.js.map +0 -1
  20. package/dist/common/icon.js +0 -49
  21. package/dist/common/icon.js.map +0 -1
  22. package/dist/common/index.js +0 -9
  23. package/dist/common/index.js.map +0 -1
  24. package/dist/common/text.js +0 -80
  25. package/dist/common/text.js.map +0 -1
  26. package/dist/common/url.js +0 -30
  27. package/dist/common/url.js.map +0 -1
  28. package/dist/config.js +0 -123
  29. package/dist/config.js.map +0 -1
  30. package/dist/containers/index.js +0 -205
  31. package/dist/containers/index.js.map +0 -1
  32. package/dist/content/index.js +0 -426
  33. package/dist/content/index.js.map +0 -1
  34. package/dist/element-ref.js +0 -17
  35. package/dist/element-ref.js.map +0 -1
  36. package/dist/element.js +0 -46
  37. package/dist/element.js.map +0 -1
  38. package/dist/header.js +0 -27
  39. package/dist/header.js.map +0 -1
  40. package/dist/index.js.map +0 -1
  41. package/dist/interactive/index.js +0 -533
  42. package/dist/interactive/index.js.map +0 -1
  43. package/dist/markdown/builders.js +0 -140
  44. package/dist/markdown/builders.js.map +0 -1
  45. package/dist/markdown/code-language.js +0 -79
  46. package/dist/markdown/code-language.js.map +0 -1
  47. package/dist/markdown/component.js +0 -38
  48. package/dist/markdown/component.js.map +0 -1
  49. package/dist/markdown/emoji-tokens.js +0 -193
  50. package/dist/markdown/emoji-tokens.js.map +0 -1
  51. package/dist/markdown/enums.js +0 -49
  52. package/dist/markdown/enums.js.map +0 -1
  53. package/dist/markdown/escape.js +0 -42
  54. package/dist/markdown/escape.js.map +0 -1
  55. package/dist/markdown/index.js +0 -16
  56. package/dist/markdown/index.js.map +0 -1
  57. package/dist/markdown/tags.js +0 -238
  58. package/dist/markdown/tags.js.map +0 -1
  59. package/dist/markdown/text-size.js +0 -58
  60. package/dist/markdown/text-size.js.map +0 -1
package/package.json CHANGED
@@ -1,14 +1,16 @@
1
1
  {
2
2
  "name": "@open-feishu-card/schema",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "飞书卡片 JSON Schema 2.0 的 Zod 规范定义与类型导出",
5
5
  "type": "module",
6
- "main": "./dist/index.js",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
7
8
  "types": "./dist/index.d.ts",
8
9
  "exports": {
9
10
  ".": {
10
11
  "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
12
14
  }
13
15
  },
14
16
  "files": [
@@ -18,6 +20,7 @@
18
20
  "zod": "^4.0.0"
19
21
  },
20
22
  "devDependencies": {
23
+ "tsup": "^8.3.5",
21
24
  "typescript": "^7.0.2"
22
25
  },
23
26
  "license": "MIT",
@@ -30,7 +33,7 @@
30
33
  "directory": "packages/schema"
31
34
  },
32
35
  "scripts": {
33
- "build": "tsc -p tsconfig.json",
36
+ "build": "tsup && tsc -p tsconfig.json --emitDeclarationOnly",
34
37
  "typecheck": "tsc --noEmit -p tsconfig.json",
35
38
  "test": "echo no tests"
36
39
  }
package/dist/card.js DELETED
@@ -1,41 +0,0 @@
1
- import { z } from 'zod';
2
- import { refineBehaviorsByFormContext } from './common/behaviors-context.js';
3
- import { CardLinkSchema } from './common/url.js';
4
- import { BodySchema, ConfigSchema } from './config.js';
5
- import { HeaderSchema } from './header.js';
6
- // 确保 ElementSchema 完成注册(供 Body / 容器 lazy 引用)
7
- import './element.js';
8
- const FeishuCardObjectSchema = z
9
- .object({
10
- schema: z
11
- .literal('2.0')
12
- .optional()
13
- .describe('卡片 JSON 结构版本。使用 2.0 能力时必须显式声明为 "2.0";省略时平台按 1.0 处理'),
14
- config: ConfigSchema.optional().describe('全局行为配置;JSON 2.0 下 update_multi 只能为 true 或不写'),
15
- card_link: CardLinkSchema.optional().describe('卡片整体点击跳转链接'),
16
- header: HeaderSchema.optional().describe('标题区;主题色集中在 header.template、图标、小标签、关键数值与按钮'),
17
- body: BodySchema.optional().describe('正文区'),
18
- })
19
- .describe('飞书卡片 JSON 2.0 根结构。生成时须 schema:"2.0";不要臆造 image_key / open_id;人员展示与 @ 通知语义勿混用');
20
- /**
21
- * 飞书卡片 JSON 2.0 根 Schema。
22
- *
23
- * - 需显式声明 `schema: "2.0"` 才能使用 2.0 能力
24
- * - 空对象 `{}` 在开放平台语义上合法(空白卡片),本 Schema 同样允许
25
- * - behaviors:表单外交互组件必填;进入 form 后可省略(与官方表单示例一致)
26
- *
27
- * @see https://open.feishu.cn/document/feishu-cards/card-json-v2-structure
28
- */
29
- export const FeishuCardSchema = FeishuCardObjectSchema.superRefine(refineBehaviorsByFormContext);
30
- /**
31
- * 强制要求 schema 为 2.0 的变体(推荐业务侧使用)。
32
- */
33
- export const FeishuCardV2Schema = FeishuCardObjectSchema.required({
34
- schema: true,
35
- })
36
- .extend({
37
- schema: z.literal('2.0').describe('卡片 JSON 结构版本,固定为 "2.0"'),
38
- })
39
- .superRefine(refineBehaviorsByFormContext)
40
- .describe('飞书卡片 JSON 2.0(强制 schema = "2.0")。工具 generate_feishu_card 的参数应使用此完整卡片对象');
41
- //# sourceMappingURL=card.js.map
package/dist/card.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"card.js","sourceRoot":"","sources":["../src/card.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,6CAA6C;AAC7C,OAAO,cAAc,CAAC;AAEtB,MAAM,sBAAsB,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,MAAM,EAAE,CAAC;SACN,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,EAAE;SACV,QAAQ,CACP,oDAAoD,CACrD;IACH,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACtC,6CAA6C,CAC9C;IACD,SAAS,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC3D,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACtC,2CAA2C,CAC5C;IACD,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;CAC5C,CAAC;KACD,QAAQ,CACP,8EAA8E,CAC/E,CAAC;AAEJ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,WAAW,CAChE,4BAA4B,CAC7B,CAAC;AAIF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,QAAQ,CAAC;IAChE,MAAM,EAAE,IAAI;CACb,CAAC;KACC,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;CAC5D,CAAC;KACD,WAAW,CAAC,4BAA4B,CAAC;KACzC,QAAQ,CACP,wEAAwE,CACzE,CAAC"}
@@ -1,39 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * 打开链接交互。
4
- * @see https://open.feishu.cn/document/feishu-cards/configuring-card-interactions
5
- */
6
- export const OpenUrlBehaviorSchema = z
7
- .object({
8
- type: z.literal('open_url').describe('交互类型,固定为 open_url'),
9
- default_url: z
10
- .string()
11
- .describe('兜底跳转地址;无真实链接时可用示例 https://open.feishu.cn'),
12
- android_url: z.string().optional().describe('Android 端跳转地址'),
13
- ios_url: z.string().optional().describe('iOS 端跳转地址'),
14
- pc_url: z.string().optional().describe('PC 端跳转地址'),
15
- })
16
- .describe('打开链接交互(type = open_url)');
17
- /**
18
- * 回传交互(请求回调)。
19
- * value 需为 object;开放平台 SDK 仅支持 object。
20
- */
21
- export const CallbackBehaviorSchema = z
22
- .object({
23
- type: z.literal('callback').describe('交互类型,固定为 callback'),
24
- value: z
25
- .record(z.string(), z.unknown())
26
- .describe('回传给服务端的自定义数据对象;用简洁业务字段即可'),
27
- })
28
- .describe('请求回调交互(type = callback)');
29
- /**
30
- * 组件交互行为。使用 type 作为判别字段。
31
- */
32
- export const BehaviorSchema = z
33
- .discriminatedUnion('type', [OpenUrlBehaviorSchema, CallbackBehaviorSchema])
34
- .describe('组件交互行为:open_url(打开链接)或 callback(回传回调),没有别的可能');
35
- /** behaviors 数组 */
36
- export const BehaviorsSchema = z
37
- .array(BehaviorSchema)
38
- .describe('组件交互行为列表;可同时配置跳转与回调');
39
- //# sourceMappingURL=behavior.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"behavior.js","sourceRoot":"","sources":["../../src/common/behavior.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACzD,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,CACP,0CAA0C,CAC3C;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;IAC5D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACpD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;CACnD,CAAC;KACD,QAAQ,CAAC,yBAAyB,CAAC,CAAC;AAIvC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACzD,KAAK,EAAE,CAAC;SACL,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,CAAC,0BAA0B,CAAC;CACxC,CAAC;KACD,QAAQ,CAAC,yBAAyB,CAAC,CAAC;AAIvC;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,kBAAkB,CAAC,MAAM,EAAE,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAAC;KAC3E,QAAQ,CAAC,8CAA8C,CAAC,CAAC;AAI5D,mBAAmB;AACnB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,KAAK,CAAC,cAAc,CAAC;KACrB,QAAQ,CAAC,qBAAqB,CAAC,CAAC"}
@@ -1,88 +0,0 @@
1
- /**
2
- * 交互组件 `behaviors` 的官方语义:
3
- * - 组件属性表对 button / select_* / date_picker 等标为必填;
4
- * - 表单容器示例中,进入 form 后交互推迟到 submit,这些组件可不写 behaviors。
5
- *
6
- * 因此:不在 form 内 → 必填;在 form 内(含 form 里的 column_set 等嵌套)→ 可选。
7
- *
8
- * @see https://open.feishu.cn/document/feishu-cards/card-json-v2-components/containers/form-container
9
- * @see https://open.feishu.cn/document/feishu-cards/configuring-card-interactions
10
- */
11
- /** 表单外必须配置 behaviors 的组件 tag(属性表标「是」) */
12
- export const BEHAVIORS_REQUIRED_OUTSIDE_FORM = new Set([
13
- 'button',
14
- 'select_static',
15
- 'multi_select_static',
16
- 'select_person',
17
- 'multi_select_person',
18
- 'date_picker',
19
- 'picker_time',
20
- 'picker_datetime',
21
- 'select_img',
22
- 'interactive_container',
23
- ]);
24
- function isRecord(v) {
25
- return typeof v === 'object' && v !== null && !Array.isArray(v);
26
- }
27
- function hasBehaviorsArray(el) {
28
- return Array.isArray(el.behaviors);
29
- }
30
- /**
31
- * 遍历卡片树,按是否位于 form 内校验 behaviors。
32
- * 供 FeishuCardSchema.superRefine 使用。
33
- */
34
- export function refineBehaviorsByFormContext(card, ctx) {
35
- if (!isRecord(card))
36
- return;
37
- const body = card.body;
38
- if (!isRecord(body))
39
- return;
40
- const elements = body.elements;
41
- if (!Array.isArray(elements))
42
- return;
43
- walkElements(elements, ['body', 'elements'], false, ctx);
44
- }
45
- function walkElements(elements, path, inForm, ctx) {
46
- for (let i = 0; i < elements.length; i++) {
47
- walkNode(elements[i], [...path, i], inForm, ctx);
48
- }
49
- }
50
- function walkNode(node, path, inForm, ctx) {
51
- if (!isRecord(node))
52
- return;
53
- const tag = node.tag;
54
- if (typeof tag !== 'string')
55
- return;
56
- if (tag === 'form') {
57
- if (Array.isArray(node.elements)) {
58
- walkElements(node.elements, [...path, 'elements'], true, ctx);
59
- }
60
- return;
61
- }
62
- if (BEHAVIORS_REQUIRED_OUTSIDE_FORM.has(tag) &&
63
- !inForm &&
64
- !hasBehaviorsArray(node)) {
65
- ctx.addIssue({
66
- code: 'custom',
67
- path: [...path, 'behaviors'],
68
- message: `组件 "${tag}" 在表单外必须配置 behaviors 数组(open_url / callback);进入 form 后可省略(交互随 submit 提交)`,
69
- });
70
- }
71
- if (tag === 'column_set' && Array.isArray(node.columns)) {
72
- for (let c = 0; c < node.columns.length; c++) {
73
- const col = node.columns[c];
74
- if (!isRecord(col))
75
- continue;
76
- if (Array.isArray(col.elements)) {
77
- walkElements(col.elements, [...path, 'columns', c, 'elements'], inForm, ctx);
78
- }
79
- }
80
- }
81
- if ((tag === 'interactive_container' ||
82
- tag === 'collapsible_panel' ||
83
- tag === 'column') &&
84
- Array.isArray(node.elements)) {
85
- walkElements(node.elements, [...path, 'elements'], inForm, ctx);
86
- }
87
- }
88
- //# sourceMappingURL=behaviors-context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"behaviors-context.js","sourceRoot":"","sources":["../../src/common/behaviors-context.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { z } from 'zod';
2
- import { PlainTextObjectSchema } from './text.js';
3
- /**
4
- * 二次确认弹窗配置。
5
- */
6
- export const ConfirmSchema = z
7
- .object({
8
- title: PlainTextObjectSchema.describe('二次确认弹窗标题'),
9
- text: PlainTextObjectSchema.describe('二次确认弹窗正文'),
10
- })
11
- .describe('二次确认弹窗配置');
12
- //# sourceMappingURL=confirm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/common/confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KAC3B,MAAM,CAAC;IACN,KAAK,EAAE,qBAAqB,CAAC,QAAQ,CAAC,UAAU,CAAC;IACjD,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC,UAAU,CAAC;CACjD,CAAC;KACD,QAAQ,CAAC,UAAU,CAAC,CAAC"}
@@ -1,131 +0,0 @@
1
- import { z } from 'zod';
2
- /**
3
- * 卡片内组件/元素的唯一标识。
4
- * 仅允许字母、数字、下划线,必须以字母开头,不超过 20 字符。
5
- */
6
- export const ElementIdSchema = z
7
- .string()
8
- .regex(/^[A-Za-z][A-Za-z0-9_]{0,19}$/, {
9
- error: 'element_id 必须以字母开头,仅含字母/数字/下划线,且不超过 20 字符',
10
- })
11
- .describe('操作组件/元素的唯一标识。卡片内全局唯一;仅允许字母、数字、下划线,必须以字母开头,不超过 20 字符');
12
- /** 外边距/内边距字符串,如 `"10px"` / `"4px 0"` / `"4px 0 4px 0"` */
13
- export const SpacingValueSchema = z
14
- .string()
15
- .describe('边距值。支持单值(如 10px)、双值(如 4px 0)或四值(上右下左);单位一般为 px');
16
- /** 间距枚举或自定义 px 值 */
17
- export const SpacingTokenSchema = z
18
- .union([
19
- z.literal('small').describe('小间距,4px'),
20
- z.literal('medium').describe('中等间距,8px'),
21
- z.literal('large').describe('大间距,12px'),
22
- z.literal('extra_large').describe('超大间距,16px'),
23
- z.string().describe('自定义间距,取值范围通常为 [0,99]px'),
24
- ])
25
- .describe('组件间距:small / medium / large / extra_large,或自定义 px');
26
- /** 水平对齐 */
27
- export const HorizontalAlignSchema = z
28
- .enum(['left', 'center', 'right'])
29
- .describe('水平对齐方式:left / center / right');
30
- /** 垂直对齐 */
31
- export const VerticalAlignSchema = z
32
- .enum(['top', 'center', 'bottom'])
33
- .describe('垂直对齐方式:top / center / bottom');
34
- /** 容器内组件排列方向 */
35
- export const DirectionSchema = z
36
- .enum(['vertical', 'horizontal'])
37
- .describe('子组件排列方向:vertical(垂直)/ horizontal(水平)');
38
- /**
39
- * 颜色值:官方枚举名、自定义 style.color key,或 rgba 语法。
40
- */
41
- export const ColorSchema = z
42
- .string()
43
- .describe('颜色值。可为官方颜色枚举、config.style.color 自定义 key,或 rgba(...) 语法');
44
- /** 标题主题色 template */
45
- export const HeaderTemplateSchema = z
46
- .enum([
47
- 'blue',
48
- 'wathet',
49
- 'turquoise',
50
- 'green',
51
- 'yellow',
52
- 'orange',
53
- 'red',
54
- 'carmine',
55
- 'violet',
56
- 'purple',
57
- 'indigo',
58
- 'grey',
59
- 'default',
60
- ])
61
- .describe('标题主题色 template,默认 default');
62
- /** 文本标签颜色 */
63
- export const TextTagColorSchema = z
64
- .enum([
65
- 'neutral',
66
- 'blue',
67
- 'turquoise',
68
- 'lime',
69
- 'orange',
70
- 'violet',
71
- 'indigo',
72
- 'wathet',
73
- 'green',
74
- 'yellow',
75
- 'red',
76
- 'purple',
77
- 'carmine',
78
- ])
79
- .describe('标题后缀标签颜色,默认 blue');
80
- /**
81
- * 字号:官方枚举、10px–40px,或 config.style.text_size 自定义 key。
82
- * 详细定义见 markdown/text-size(此处保持同语义,避免 common ↔ markdown 循环依赖)。
83
- */
84
- export const TextSizeSchema = z
85
- .union([
86
- z.enum([
87
- 'heading-0',
88
- 'heading-1',
89
- 'heading-2',
90
- 'heading-3',
91
- 'heading-4',
92
- 'heading',
93
- 'normal',
94
- 'notation',
95
- 'xxxx-large',
96
- 'xxx-large',
97
- 'xx-large',
98
- 'x-large',
99
- 'large',
100
- 'medium',
101
- 'small',
102
- 'x-small',
103
- ]),
104
- z.string().regex(/^(1[0-9]|2[0-9]|3[0-9]|40)px$/, {
105
- error: '像素字号须为 10px–40px,例如 "14px"、"28px"',
106
- }),
107
- z
108
- .string()
109
- .min(1)
110
- .refine((value) => !/^\d+px$/.test(value), {
111
- message: '像素字号请使用 10px–40px;其它 px 值不合法',
112
- }),
113
- ])
114
- .describe('文本大小:官方枚举、10px–40px 像素值,或 config.style.text_size 自定义 key');
115
- /** 交互控件常见宽度:default / fill / 自定义 px */
116
- export const InteractiveWidthSchema = z
117
- .string()
118
- .describe('交互控件宽度:default / fill,或自定义如 120px(通常 ≥100px)。并排按钮满宽均分用 fill(配套列 width=weighted);内容自适应则省略本字段(配套列 width=auto)');
119
- /** 下拉选择边框类型 */
120
- export const SelectBorderTypeSchema = z
121
- .enum(['default', 'text'])
122
- .describe('下拉选择边框样式:default(带边框)/ text(无边框)');
123
- /** 多语言字符串映射 */
124
- export const I18nStringMapSchema = z
125
- .record(z.string(), z.string())
126
- .describe('多语言文案映射,key 为语种(如 zh_cn、en_us),value 为对应文案');
127
- /** 卡片宽度模式 */
128
- export const WidthModeSchema = z
129
- .enum(['default', 'compact', 'fill'])
130
- .describe('卡片宽度模式:default(约 600px 上限)/ compact(400px)/ fill(撑满聊天窗口)');
131
- //# sourceMappingURL=enums.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/common/enums.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { z } from 'zod';
2
- import { PlainTextObjectSchema } from './text.js';
3
- /**
4
- * 音视频组件降级配置。
5
- * - `"drop"`:丢弃组件
6
- * - 对象:自定义降级文案
7
- * - 省略:使用系统默认降级文案
8
- */
9
- export const FallbackSchema = z
10
- .union([
11
- z.literal('drop').describe('客户端不支持时丢弃该组件'),
12
- z
13
- .object({
14
- tag: z
15
- .literal('fallback_text')
16
- .describe('降级类型,固定为 fallback_text'),
17
- text: PlainTextObjectSchema.describe('自定义降级文案'),
18
- })
19
- .describe('自定义降级文案对象'),
20
- ])
21
- .describe('音视频降级配置:drop 丢弃组件,或 fallback_text 自定义文案;省略则用系统默认文案');
22
- //# sourceMappingURL=fallback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../src/common/fallback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,KAAK,CAAC;IACL,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC1C,CAAC;SACE,MAAM,CAAC;QACN,GAAG,EAAE,CAAC;aACH,OAAO,CAAC,eAAe,CAAC;aACxB,QAAQ,CAAC,wBAAwB,CAAC;QACrC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC;KAChD,CAAC;SACD,QAAQ,CAAC,WAAW,CAAC;CACzB,CAAC;KACD,QAAQ,CACP,oDAAoD,CACrD,CAAC"}