scrum-skills 0.2.5 → 0.2.6

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 (78) hide show
  1. package/.agents/skills/scrum-planning/references/schema.md +84 -1
  2. package/.agents/skills/scrum-report/SKILL.md +1 -0
  3. package/.agents/skills/scrum-tdd/SKILL.md +45 -0
  4. package/README.md +20 -1
  5. package/assets/board/200.html +1 -1
  6. package/assets/board/404.html +1 -1
  7. package/assets/board/_nuxt/{RJtjdZeG.js → 13F3FZJq.js} +1 -1
  8. package/assets/board/_nuxt/{DsNkyZPc.js → 4G46xON2.js} +1 -1
  9. package/assets/board/_nuxt/{Dzd1U0TD.js → 7DnHvJyr.js} +1 -1
  10. package/assets/board/_nuxt/{z9IMa9Iy.js → B8d-LQbt.js} +3 -3
  11. package/assets/board/_nuxt/{BkjUg7GC.js → BGRxZnwm.js} +1 -1
  12. package/assets/board/_nuxt/{Y5b2rXjB.js → BMRYIH0I.js} +1 -1
  13. package/assets/board/_nuxt/Bk5o5EMW.js +1 -0
  14. package/assets/board/_nuxt/{DNMF9lr0.js → BsNk4K6P.js} +1 -1
  15. package/assets/board/_nuxt/BtzBJuQU.js +1 -0
  16. package/assets/board/_nuxt/{DwcwzwSx.js → BvwhGSdZ.js} +1 -1
  17. package/assets/board/_nuxt/{d-5IhxZm.js → C4MZsmn0.js} +1 -1
  18. package/assets/board/_nuxt/{oIa7syc0.js → C7AVymkF.js} +1 -1
  19. package/assets/board/_nuxt/{DG3IySrP.js → C7wdFLdw.js} +1 -1
  20. package/assets/board/_nuxt/{CUnX_QKi.js → C8xxmt66.js} +1 -1
  21. package/assets/board/_nuxt/{CD0uJuyA.js → CB66hjP7.js} +1 -1
  22. package/assets/board/_nuxt/{D8Bpf7sE.js → CNCQ_RRC.js} +1 -1
  23. package/assets/board/_nuxt/CSF_x8S0.js +1 -0
  24. package/assets/board/_nuxt/CcCIS_4Q.js +1 -0
  25. package/assets/board/_nuxt/{9qnowzZi.js → CnWxhsmi.js} +1 -1
  26. package/assets/board/_nuxt/{DmKZi-Wo.js → Cp9-r9Yz.js} +1 -1
  27. package/assets/board/_nuxt/{Co0ISufR.js → CqT7Crsj.js} +49 -49
  28. package/assets/board/_nuxt/{DFuirznt.js → CqhzGRpQ.js} +1 -1
  29. package/assets/board/_nuxt/{CdvimHoq.js → CurAl_-I.js} +1 -1
  30. package/assets/board/_nuxt/{CjRYYbsC.js → D2zrOcWn.js} +1 -1
  31. package/assets/board/_nuxt/{CHZ_IHOa.js → DCRsKQUZ.js} +1 -1
  32. package/assets/board/_nuxt/{CBhhj6QT.js → DDF25zwT.js} +1 -1
  33. package/assets/board/_nuxt/DIAPFfZA.js +2 -0
  34. package/assets/board/_nuxt/{Bu400pfa.js → DMZvQhvU.js} +1 -1
  35. package/assets/board/_nuxt/{-8mcJ5uq.js → DNJ5OliG.js} +1 -1
  36. package/assets/board/_nuxt/{CvFE1CeN.js → DPeEWyPC.js} +1 -1
  37. package/assets/board/_nuxt/DZXukN7r.js +6 -0
  38. package/assets/board/_nuxt/{CyAQx5wv.js → D_dkfQp-.js} +1 -1
  39. package/assets/board/_nuxt/{BSov4ehT.js → Dp5MbiLe.js} +1 -1
  40. package/assets/board/_nuxt/{DDA06Sqv.js → FxbXzpZ6.js} +1 -1
  41. package/assets/board/_nuxt/{DaqxYsbV.js → HUproyl7.js} +1 -1
  42. package/assets/board/_nuxt/{C9MiPNdJ.js → J9NS0_M_.js} +1 -1
  43. package/assets/board/_nuxt/builds/latest.json +1 -1
  44. package/assets/board/_nuxt/builds/meta/ceebd758-b616-48d8-872b-0de05659de19.json +1 -0
  45. package/assets/board/_nuxt/burndown.Do6IbM6o.css +1 -0
  46. package/assets/board/_nuxt/{KhBLkIKl.js → dI2CahwK.js} +1 -1
  47. package/assets/board/_nuxt/{entry.CTKz4ouw.css → entry.DUA8YVRM.css} +1 -1
  48. package/assets/board/_nuxt/epics.Dmessplu.css +1 -0
  49. package/assets/board/_nuxt/gantt.Dmp00GUo.css +1 -0
  50. package/assets/board/_nuxt/last-change.CaSxA-Z0.css +1 -0
  51. package/assets/board/_nuxt/milestones.U0xKCsEo.css +1 -0
  52. package/assets/board/_nuxt/pages.Dbj2IVk8.css +1 -0
  53. package/assets/board/_nuxt/{BuuAjxsV.js → rV_oonhV.js} +1 -1
  54. package/assets/board/_nuxt/x-PrcVk4.js +1 -0
  55. package/assets/board/burndown/index.html +1 -1
  56. package/assets/board/epics/index.html +1 -1
  57. package/assets/board/gantt/index.html +1 -1
  58. package/assets/board/index.html +1 -1
  59. package/assets/board/last-change/index.html +1 -0
  60. package/assets/board/milestones/index.html +1 -1
  61. package/bin/scrum-skills.mjs +4 -1
  62. package/package.json +1 -1
  63. package/templates/AGENTS.md +15 -2
  64. package/tools/last-change.mjs +326 -0
  65. package/tools/projects.mjs +20 -1
  66. package/tools/validate.mjs +124 -0
  67. package/assets/board/_nuxt/DhhR1iR4.js +0 -1
  68. package/assets/board/_nuxt/HrhQecsY.js +0 -6
  69. package/assets/board/_nuxt/builds/meta/a2ba436a-230e-43f9-884e-0a5d37f5ba22.json +0 -1
  70. package/assets/board/_nuxt/burndown.BCLMmigw.css +0 -1
  71. package/assets/board/_nuxt/epics.B4-eK1Py.css +0 -1
  72. package/assets/board/_nuxt/gRdnZpJw.js +0 -1
  73. package/assets/board/_nuxt/gantt.DATOqoZf.css +0 -1
  74. package/assets/board/_nuxt/l05SqxhY.js +0 -1
  75. package/assets/board/_nuxt/milestones.z-UuT44X.css +0 -1
  76. package/assets/board/_nuxt/pages.YYGvroeE.css +0 -1
  77. package/assets/board/_nuxt/qDn8FnYE.js +0 -1
  78. package/assets/board/_nuxt/uGmbQYdY.js +0 -1
@@ -1,12 +1,13 @@
1
1
  # 敏捷数据 Schema(v3 · 三文件结构)
2
2
 
3
- `agile/` 下**只有三个文件**,全部 UTF-8 JSON、2 空格缩进、末尾换行。
3
+ `agile/` 下**三个常驻数据文件 + 一个可选的交付说明**,全部 UTF-8 JSON、2 空格缩进、末尾换行。
4
4
 
5
5
  | 文件 | 装什么 |
6
6
  |---|---|
7
7
  | `agile/backlog.json` | 史诗 epics(含量化目标 keyResults)+ 用户故事 stories(内联 tasks) |
8
8
  | `agile/sprints.json` | 迭代 sprints + 里程碑 milestones(MVP 节点是里程碑的一种) |
9
9
  | `agile/journal.json` | TDD 实施日志 journals(一个 task 一条,内联 entries) |
10
+ | `agile/last-change.json` | 最近一次交付的汇报(可选;已提交才覆盖,未提交则合并,见第 4 节) |
10
11
 
11
12
  > 三个文件都必须带 `"schemaVersion": 3`。v2 及更早的散文件结构不再兼容,校验器发现 `agile/backlog/epics/`、`agile/backlog/stories/`、`agile/sprints/`、`agile/journal/` 里还有 JSON 会直接报错。
12
13
 
@@ -151,6 +152,88 @@
151
152
  }
152
153
  ```
153
154
 
155
+ ## 4. last-change.json(最后更新 / 交付说明)
156
+
157
+ `agile/last-change.json` 是**可选**文件:还没交付过东西时不存在,校验器不报错。看板 `/last-change` 页读的就是它。
158
+
159
+ ### 写之前先查 git:已提交才覆盖,未提交就合并
160
+
161
+ 只留最近一次交付的前提是**上一次已经进了版本库**。文件如果还有没提交的改动,直接覆盖就把那次记录冲掉了,所以写入策略分两种:
162
+
163
+ | 文件在 git 里的状态 | 写法 | 结果 |
164
+ |---|---|---|
165
+ | 已提交、工作区干净 | 整份覆盖 | 文件里只有本次交付 |
166
+ | 有未提交改动 / 已暂存未提交 / 未跟踪 / 不是 git 仓库 | 合并 | 本次结果并进旧记录,旧的一条不丢 |
167
+
168
+ 用工具判断并写入,不要手写覆盖:
169
+
170
+ ```bash
171
+ node tools/last-change.mjs check # 退出码 0 = 可覆盖,2 = 必须先合并
172
+ node tools/last-change.mjs write <记录.json> # 按状态自动覆盖或合并,写后校验,失败回滚
173
+ node tools/last-change.mjs write <记录.json> --replace # 确认旧记录不要了才强制覆盖
174
+ ```
175
+
176
+ 合并的取舍(`write` 自动完成,手动合并也要照这个来):
177
+
178
+ - `changes` 按 `kind:id`、`scenarios` 按 `id`(没有就按 `title`)去重:**新的覆盖旧的**,没被提到的旧条目原样保留,顺序按「旧的在前、新增的追加」;
179
+ - `extras` 按 `title`、`verification` 按 `what`、`preparation` 按 `step` 去重,规则同上;
180
+ - `notes` / `open` 字符串去重后拼接;`access.urls` 按 `url`、`access.accounts` 按 `username` 合并;
181
+ - `title` / `at` / `summary` 取本次的(缺了才沿用旧的);
182
+ - 合并后自动带上 `"merged": true` 与 `"mergedFrom"`(被并进来的那几次交付),看板据此标「合并记录」。
183
+
184
+ ```json
185
+ {
186
+ "schemaVersion": 3,
187
+ "lastChange": {
188
+ "title": "登录接口收尾",
189
+ "at": "2026-10-27 14:35:12",
190
+ "summary": "一句话说清这次交付做成了什么",
191
+ "changes": [
192
+ {
193
+ "kind": "story",
194
+ "id": "S-001",
195
+ "title": "邮箱密码登录",
196
+ "action": "added | updated | removed",
197
+ "from": "in-progress",
198
+ "to": "review",
199
+ "note": "变更内容:补了两条验收、状态推进到评审",
200
+ "files": ["agile/backlog.json", "src/auth/login.ts"]
201
+ }
202
+ ],
203
+ "extras": [{ "title": "顺手把校验错误信息改成中文", "detail": "为什么做、做到什么程度", "files": ["tools/validate.mjs"] }],
204
+ "verification": [{ "what": "pnpm test", "result": "pass | fail | partial | skipped", "detail": "32 passed" }],
205
+ "access": {
206
+ "urls": [{ "label": "看板", "url": "http://localhost:4173", "note": "先起 serve" }],
207
+ "accounts": [{ "role": "管理员", "username": "admin@example.com", "password": "Passw0rd!", "note": "仅本地环境" }]
208
+ },
209
+ "preparation": [{ "step": "装依赖", "command": "pnpm install", "note": "Node ≥ 18" }],
210
+ "scenarios": [
211
+ {
212
+ "id": "TC-01",
213
+ "title": "正确密码能登录",
214
+ "storyIds": ["S-001"],
215
+ "steps": ["打开 /login", "填表提交"],
216
+ "expect": "跳转首页并下发会话 cookie",
217
+ "acceptance": "对应验收第 1 条"
218
+ }
219
+ ],
220
+ "merged": true,
221
+ "mergedFrom": [{ "title": "上一次还没提交的交付", "at": "2026-10-26 18:02:41" }],
222
+ "notes": ["使用说明、口径解释"],
223
+ "open": ["还没做的、已知限制"]
224
+ }
225
+ }
226
+ ```
227
+
228
+ 字段说明:
229
+
230
+ - **`title` / `at` 必填**:`at` 是本次交付时间,**写到秒**:`YYYY-MM-DD HH:mm:ss`(ISO 的 `T` 分隔也认)。只写 `YYYY-MM-DD` 仍然合法,但校验器会给 WARN、看板上也只能看到「哪天」,看不出「几点几分交付的」。`node tools/last-change.mjs write` 发现缺 `at` 会自动补当前时间。
231
+ - **`merged` / `mergedFrom` 由工具写,不要手填**:只有「并进未提交旧记录」时才出现,`mergedFrom` 每条要有 `title`(`at` 可选)。`merged: true` 却没有 `mergedFrom` 会被校验器提醒。
232
+ - **`changes[]`**:故事与任务的变更清单,看板表格一行一条。`kind` 只认 `story` / `task`,`id` 必须是 backlg 里真实存在的 id;`action` 是 `added`(新增)/ `updated`(状态或内容变更)/ `removed`(删除);状态变更填 `from` → `to`,`files` 是这次动过的文件。
233
+ - **其余分区都可选**,没有就省略,**不许为了填满而编**:项目没有账号体系就不写 `accounts`,没有前端入口就不写 `urls`。
234
+ - `verification[].result` 与 `scenarios[].expect` 是「验收不是口号」的凭据:场景必须写清步骤与验收标准,验证结果只认 `pass/fail/partial/skipped`。
235
+ - 校验器会查:`schemaVersion`、`at` 格式、`kind`/`action`/`result` 枚举、`changes[].id` 是否真实存在、`scenarios[].steps` 与 `expect` 是否齐备、`access.urls[].url` 是否为 `http(s)` 完整地址。缺 `title`、`what`、`expect`、`step` 报错;缺 `changes[].title`、场景 id、url label 只给 WARN。
236
+
154
237
  ## 状态机(校验器强制)
155
238
 
156
239
  - story: `draft → ready → in-progress → review → done`;不做了直接进 `cancelled`(已取消)终态(可回退,不可跳级;`done` 与 `cancelled` 都是终态)
@@ -25,6 +25,7 @@ server 读取 `agile/` 三文件(backlog / sprints / journal),每次请求
25
25
  渲染由 Nuxt 静态产物(`assets/board/`)负责,`tools/serve.mjs` 只提供 `/api/agile` 与静态托管,没有任何手写 HTML。
26
26
 
27
27
  - `/` 看板:六列(草稿 / 就绪 / 进行中 / 评审 / 完成 / 已取消),可按史诗、里程碑筛选,可按优先级 / WSJF / 点数重排;卡片显示 id、类型(功能·缺陷·技术债·调研)、优先级、阻塞标记、范围变更标记、点数与 WSJF、task 进度、MVP 标记
28
+ - `/last-change` 最后更新:渲染 `agile/last-change.json` —— 变更清单(故事 / 任务 · 新增还是状态变更 · 涉及文件)、额外做的事、验证结果、调试入口与账号密码、测试前准备、逐条测试场景(步骤 + 验收标准)、说明与遗留;「查看历史」从 git 里列出该文件的每次提交,选中某版整页只读展示,顶部页签可在最新/各历史版本间切换;文件不存在时给空状态并说明谁来写
28
29
  - `/gantt` 甘特图:按迭代分带;浅色条是 `story.schedule` 计划区间,实心条是 journal 推出的真实执行区间;菱形是里程碑(MVP 琥珀色),红色虚线是今天;行内标出依赖数量与阻塞,图下列出依赖链与阻塞清单
29
30
  - `/milestones` 里程碑 / MVP 节点:按 kind 分组(mvp / release / checkpoint),显示达成口径、挂的故事、进度与剩余天数
30
31
  - `/burndown` 燃尽图:可选任意迭代;实线来自每个 task 最后一条 pass 的日期,虚线是理想线,逐日格子给出实际/理想剩余
@@ -44,6 +44,49 @@ description: 以 red-green-refactor TDD 循环驱动任务实施,并把每一
44
44
  3. task 状态 → `done`,`files` 补齐本次触碰的文件
45
45
  4. story 的所有 task 都 done → 提醒用户进入 review(scrum-sprint skill)
46
46
 
47
+ ## 交工汇报(每做完一项功能必做)
48
+
49
+ task 推到 `done` 之后、向用户回话之前,两件事缺一不可。
50
+
51
+ ### 1. 写 `agile/last-change.json`:先看 git,再决定覆盖还是合并
52
+
53
+ **写之前必须先判断这个文件提交了没有**——上一次交付很可能还没 commit,直接覆盖就把它冲掉了:
54
+
55
+ ```bash
56
+ node tools/last-change.mjs check # 退出码 0 = 可整份覆盖,2 = 必须合并
57
+ ```
58
+
59
+ 用工具写最省事(它自己判状态、合并、写后校验、失败回滚):
60
+
61
+ ```bash
62
+ node tools/last-change.mjs write <本次记录.json> # 已提交 → 覆盖;未提交 → 并入旧记录
63
+ ```
64
+
65
+ - **已提交**(工作区干净)→ 上一次交付已在版本库里,整份覆盖,文件里只有本次交付;
66
+ - **未提交 / 未跟踪 / 不是 git 仓库** → 把本次结果并进旧记录:`changes`·`extras`·`verification`·`preparation`·`scenarios` 按 key 去重(新的覆盖旧的、旧的顺序保留),`notes`·`open` 去重合并,`access` 按 url / 账号合并,并自动打上 `merged` + `mergedFrom` 说明并了哪几次;
67
+ - 千万**不要**为了省事手动 `writeFileSync` 覆盖:那一步绕过 git 判断,丢的是别人还没提交的记录;
68
+ - `at` 要**写到时分秒**(`YYYY-MM-DD HH:mm:ss`,本机时间)——「最近一次交付」在页面顶部标的就是它。`write` 发现缺 `at` 会自动补当前时间,但手写记录时得自己填;只写日期会吃一条 WARN,页面上也只显示到天。
69
+
70
+ 不用工具时也得照这个顺序:`check` → 需要合并就先读旧文件再合并 → 写完跑 `node tools/validate.mjs`。
71
+
72
+ 七个分区按需写(结构见 planning skill 的 `references/schema.md` 第 4 节),当前项目没有的那项直接省略,不许编:
73
+
74
+ | 分区 | 写什么 |
75
+ |---|---|
76
+ | `changes` | 本次涉及的故事与任务:新增还是状态变更(`action` + `from`/`to`)、变更内容、涉及文件 |
77
+ | `extras` | 计划外顺手做的事(修掉的小 bug、补的文档、重构) |
78
+ | `verification` | 验证了哪些项、结果(`pass`/`fail`/`partial`/`skipped`)、依据 |
79
+ | `access` | 调试访问地址(`urls`)与账号密码(`accounts`);没有账号体系就不写 accounts |
80
+ | `preparation` | 用户自己跑起来之前要做的准备(装依赖、起服务、灌数据),带命令 |
81
+ | `scenarios` | 一条测试场景一段:`steps` 是测试步骤,`expect` 是验收标准 |
82
+ | `notes` / `open` | 使用说明与遗留问题 |
83
+
84
+ 写完整份跑 `node tools/validate.mjs`:校验器会查 id 是否真实存在、枚举是否合法、场景有没有验收标准、调试地址是不是完整 http(s) 地址。
85
+
86
+ ### 2. 按同一顺序回话给用户
87
+
88
+ 变更表(故事/任务 · 新增还是状态变更 · 改了什么 · 涉及文件)→ 额外做的事 → 验证结果 → 账号密码与访问地址 → 测试前准备 → 逐条测试场景(步骤 + 验收标准)→ 说明。**缺哪项就不提那节,但不许只说「做完了」**,也不许用「应该没问题」代替验证记录。最后告诉用户:起 `node tools/serve.mjs` 后到 `/last-change` 页能看到同一份内容。
89
+
47
90
  ## 排障纪律(源自 superpowers 的 systematic-debugging)
48
91
 
49
92
  测试意外失败、行为不符预期、bug 排查时:
@@ -66,3 +109,5 @@ description: 以 red-green-refactor TDD 循环驱动任务实施,并把每一
66
109
  - 不许为让测试通过而删除/跳过/弱化测试;确需改测试时在 journal 的 note 里说明理由
67
110
  - 一次只做一个 task 的一个阶段,禁止批量推进多个 task 状态
68
111
  - 交工前没做真实验证不许把 task 置 `done`(跑不起入口的须在 journal 里写明验证边界)
112
+ - 没写 `agile/last-change.json` 不算交付完成:交付说明和代码一样是交付物
113
+ - 写它之前没查 git 状态(该合并却整份覆盖)同样算违规:会把上一次还没提交的记录冲掉
package/README.md CHANGED
@@ -61,6 +61,7 @@ npx scrum-skills serve # → http://localhost:4173
61
61
  | `agile/backlog.json` | 史诗 `epics`(含量化目标 `keyResults`)+ 故事 `stories`(内联 `tasks`) |
62
62
  | `agile/sprints.json` | 迭代 `sprints` + 里程碑 `milestones`(MVP 节点 = `kind: "mvp"`) |
63
63
  | `agile/journal.json` | 每个任务一条 TDD 日志 `journals`(内联 `entries`) |
64
+ | `agile/last-change.json` | 最近一次交付的汇报(可选;已提交才覆盖,未提交则合并):变更清单 / 额外工作 / 验证 / 入口与账号 / 测试前准备 / 测试场景 / 说明 |
64
65
 
65
66
  ```jsonc
66
67
  // 一条故事(节选)
@@ -97,12 +98,15 @@ npx scrum-skills serve # → http://localhost:4173
97
98
  | 页面 | 内容 |
98
99
  |---|---|
99
100
  | `/` 看板 | 六列(草稿/就绪/进行中/评审/完成/已取消),按史诗/里程碑筛选,按优先级或 WSJF 重排;卡片带类型、阻塞、范围变更标记 |
101
+ | `/last-change` 最后更新 | 渲染 `agile/last-change.json`:故事/任务变更清单、额外做的事、验证结果、调试入口与账号、测试前准备、逐条测试场景、说明与遗留;点「查看历史」按 git 提交翻看任一版本(只读,顶部页签可在最新/历史间切换);没有该文件时给空状态 |
100
102
  | `/epics` 史诗与目标 | 每个史诗的关键结果(KR)进度、故事完成度、阻塞与缺陷统计 |
101
103
  | `/gantt` 甘特图 | 迭代分带,浅色条=计划、实心条=journal 推出的实际执行区间,菱形=里程碑,依赖与阻塞清单 |
102
104
  | `/milestones` 里程碑 / MVP | 按 kind 分组,显示达成口径、挂的故事、剩余天数 |
103
105
  | `/burndown` 燃尽图 | 实线=真实剩余,虚线=理想线,竖线标出**哪一天插了需求**(范围变更) |
104
106
  | `/story/:id` 追溯链 | 验收标准 → 任务 → 每条 red/green/refactor 记录,含测试命令与产出文件 |
105
107
 
108
+ > **并排指标卡的配色顺序固定为 绿 → 蓝 → 紫 → 黑,卡片更多才往后用黄、红**。顺序只在 `apps/board/app/composables/model.ts` 的 `CARD_TONES` 里定义一次,页面写 `:class="cardToneClass(i)"`、光斑写 `:tone="cardTone(i)"`;黑卡是深底,文字要翻白。新增页面照着取色,别另起一套。
109
+
106
110
  ## 内置 AI 助手
107
111
 
108
112
  看板右下角有个悬浮按钮,点开是右侧抽屉——不用离开看板就能让模型查/改当前项目的敏捷数据。
@@ -139,6 +143,21 @@ npx scrum-skills serve # → http://localhost:4173
139
143
 
140
144
  > 纯静态托管(只放 `assets/board`)时没有 `/api/ai/*`,此时对话不可用;`pnpm serve` 才带这套能力。
141
145
 
146
+ ## 交付说明:先查 git,再决定覆盖还是合并
147
+
148
+ `agile/last-change.json` 只留最近一次交付,但「最近一次」的前提是**上一次已经进了版本库**。所以写入前先看这个文件在 git 里的状态:
149
+
150
+ - **已提交、工作区干净** → 上一次已入库,整份覆盖,文件里只有本次交付;
151
+ - **有未提交改动 / 已暂存未提交 / 未跟踪 / 不是 git 仓库** → 把本次结果**合并**进旧记录,旧的一条不丢(`changes` / `extras` / `verification` / `preparation` / `scenarios` 按 key 去重、新覆盖旧;`notes` / `open` 去重拼接;`access` 按地址与账号合并),并打上 `merged` + `mergedFrom`。
152
+
153
+ ```bash
154
+ node tools/last-change.mjs check # 退出码 0 = 可覆盖,2 = 必须先合并
155
+ node tools/last-change.mjs write 记录.json # 按状态自动覆盖或合并,写后校验,不过就回滚
156
+ node tools/last-change.mjs write 记录.json --replace # 确认旧记录不要了才强制覆盖
157
+ ```
158
+
159
+ 看板 `/last-change`(侧栏「最后更新」)页面上方就写着这条规则,并显示该文件当前是「已提交」还是「未提交改动」;合并过的记录会标出「合并记录 · N 次交付」。
160
+
142
161
  ## 校验器管什么
143
162
 
144
163
  `validate` 是这套体系的地基,**错误**会让它退出码非 0:
@@ -164,7 +183,7 @@ AGILE_DIR=/别的项目 pnpm dev # 看别的项目的数据
164
183
 
165
184
  pnpm build # 构建看板静态产物 → assets/board
166
185
  pnpm validate # 只校验数据
167
- pnpm test # 回归测试(校验器 / 看板皮肤与泳道 / 卡片操作 / 项目目录 / AI 服务与面板,106 个用例)
186
+ pnpm test # 回归测试(校验器 / 看板皮肤与配色 / 布局回归 / 卡片操作 / 项目目录 / 最后更新页与历史版本 / 交付说明写入策略 / AI 服务与面板,159 个用例)
168
187
  pnpm serve # 起看板(读目标目录的 agile/,同时提供 /api/ai)
169
188
  ```
170
189
 
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>敏捷看板</title><script type="importmap">{"imports":{"#entry":"/_nuxt/Co0ISufR.js"}}</script><link rel="stylesheet" href="/_nuxt/entry.CTKz4ouw.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Co0ISufR.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/u88eXCXy.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DZo3dYLJ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/51OWHj8c.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CsyY7ot8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Baq-Hrpf.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DSaWoFHS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/oXSDGTSr.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BuBpFHLu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DsF2J4jZ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BJW3UkS7.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/HrhQecsY.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DLkAKotw.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Vo4wMbnS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CuJUHLl8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CK9_veoz.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bb3Limos.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DDA06Sqv.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B43-KCi6.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BuOKDFiJ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D3YCAmfu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B_SlFcWp.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bi9Axj3V.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CjRYYbsC.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D8Bpf7sE.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DNMF9lr0.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ChJuu-Ky.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C9StZL3D.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BPTrRhcw.js"><script type="module" src="/_nuxt/Co0ISufR.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/_nuxt/z9IMa9Iy.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DHihWhf5.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-404.BFmXOnCT.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CoPhTDCT.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-500.BZ-DdjQ6.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/3G_ZLrk2.js"></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"a2ba436a-230e-43f9-884e-0a5d37f5ba22",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1793080428202,false]</script></body></html>
1
+ <!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>敏捷看板</title><script type="importmap">{"imports":{"#entry":"/_nuxt/CqT7Crsj.js"}}</script><link rel="stylesheet" href="/_nuxt/entry.DUA8YVRM.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CqT7Crsj.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/u88eXCXy.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DZo3dYLJ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/51OWHj8c.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CsyY7ot8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Baq-Hrpf.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DSaWoFHS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/oXSDGTSr.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BuBpFHLu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DsF2J4jZ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BJW3UkS7.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DZXukN7r.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DLkAKotw.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Vo4wMbnS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CuJUHLl8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CK9_veoz.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bb3Limos.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FxbXzpZ6.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B43-KCi6.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BuOKDFiJ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D3YCAmfu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B_SlFcWp.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bi9Axj3V.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D2zrOcWn.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CNCQ_RRC.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BsNk4K6P.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ChJuu-Ky.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C9StZL3D.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BPTrRhcw.js"><script type="module" src="/_nuxt/CqT7Crsj.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/_nuxt/B8d-LQbt.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DHihWhf5.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-404.BFmXOnCT.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CoPhTDCT.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-500.BZ-DdjQ6.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/3G_ZLrk2.js"></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"ceebd758-b616-48d8-872b-0de05659de19",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1793099665693,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>敏捷看板</title><script type="importmap">{"imports":{"#entry":"/_nuxt/Co0ISufR.js"}}</script><link rel="stylesheet" href="/_nuxt/entry.CTKz4ouw.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Co0ISufR.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/u88eXCXy.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DZo3dYLJ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/51OWHj8c.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CsyY7ot8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Baq-Hrpf.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DSaWoFHS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/oXSDGTSr.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BuBpFHLu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DsF2J4jZ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BJW3UkS7.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/HrhQecsY.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DLkAKotw.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Vo4wMbnS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CuJUHLl8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CK9_veoz.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bb3Limos.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DDA06Sqv.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B43-KCi6.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BuOKDFiJ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D3YCAmfu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B_SlFcWp.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bi9Axj3V.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CjRYYbsC.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D8Bpf7sE.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DNMF9lr0.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ChJuu-Ky.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C9StZL3D.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BPTrRhcw.js"><script type="module" src="/_nuxt/Co0ISufR.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/_nuxt/z9IMa9Iy.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DHihWhf5.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-404.BFmXOnCT.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CoPhTDCT.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-500.BZ-DdjQ6.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/3G_ZLrk2.js"></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"a2ba436a-230e-43f9-884e-0a5d37f5ba22",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1793080428202,false]</script></body></html>
1
+ <!DOCTYPE html><html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>敏捷看板</title><script type="importmap">{"imports":{"#entry":"/_nuxt/CqT7Crsj.js"}}</script><link rel="stylesheet" href="/_nuxt/entry.DUA8YVRM.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CqT7Crsj.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DK3Fl9T5.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/u88eXCXy.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DZo3dYLJ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/51OWHj8c.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CsyY7ot8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Baq-Hrpf.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DSaWoFHS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/oXSDGTSr.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BuBpFHLu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DsF2J4jZ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BJW3UkS7.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DZXukN7r.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DLkAKotw.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Vo4wMbnS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CuJUHLl8.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CK9_veoz.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bb3Limos.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/FxbXzpZ6.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B43-KCi6.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BuOKDFiJ.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D3YCAmfu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B_SlFcWp.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bi9Axj3V.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D2zrOcWn.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CNCQ_RRC.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BsNk4K6P.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/ChJuu-Ky.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C9StZL3D.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BPTrRhcw.js"><script type="module" src="/_nuxt/CqT7Crsj.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/_nuxt/B8d-LQbt.js"><link rel="prefetch" as="script" crossorigin href="/_nuxt/DHihWhf5.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-404.BFmXOnCT.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/CoPhTDCT.js"><link rel="prefetch" as="style" crossorigin href="/_nuxt/error-500.BZ-DdjQ6.css"><link rel="prefetch" as="script" crossorigin href="/_nuxt/3G_ZLrk2.js"></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/",buildId:"ceebd758-b616-48d8-872b-0de05659de19",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1793099665693,false]</script></body></html>
@@ -1 +1 @@
1
- import{s as e}from"./u88eXCXy.js";import{D as t,On as n,Zn as r,_ as i,b as a,g as o,mt as s,xt as c}from"./DZo3dYLJ.js";import{r as l}from"./oXSDGTSr.js";import{n as u,t as d}from"./Baq-Hrpf.js";import{t as f}from"./CjRYYbsC.js";var p={slots:{base:[`relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:rounded-sm [&>a]:outline-primary/25 [&>a]:focus-visible:outline-3 [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold`,`[&>a>code]:transition-colors`],leading:[`absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated group-hover:text-primary group-focus:text-primary rounded-md hidden lg:flex text-muted`,`transition`],leadingIcon:`size-4 shrink-0`,link:`group lg:after:absolute lg:after:inset-y-0 lg:after:-inset-s-2 lg:after:w-2`}},m=[`id`],h=[`href`],g={__name:`ProseH3`,props:{id:{type:String,required:!1},anchor:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(g){let _=u(`prose.h3`,g),v=l(),{headings:y}=e().public?.mdc||{},b=o(()=>d({extend:p,...v.ui?.prose?.h3||{}})()),x=o(()=>_.id&&(_.anchor??(typeof y?.anchorLinks==`boolean`?y.anchorLinks:y?.anchorLinks?.h3)??!1));return(e,o)=>(s(),a(`h3`,{id:n(_).id,class:r(b.value.base({class:[n(_).ui?.base,n(_).class]}))},[n(_).id&&x.value?(s(),a(`a`,{key:0,href:`#${n(_).id}`,class:r(b.value.link({class:n(_).ui?.link}))},[i(`span`,{class:r(b.value.leading({class:n(_).ui?.leading}))},[t(f,{name:n(v).ui.icons.hash,class:r(b.value.leadingIcon({class:n(_).ui?.leadingIcon}))},null,8,[`name`,`class`])],2),c(e.$slots,`default`)],10,h)):c(e.$slots,`default`,{},void 0,void 0,1)],10,m))}};export{g as default};
1
+ import{s as e}from"./u88eXCXy.js";import{D as t,On as n,Zn as r,_ as i,b as a,g as o,mt as s,xt as c}from"./DZo3dYLJ.js";import{r as l}from"./oXSDGTSr.js";import{n as u,t as d}from"./Baq-Hrpf.js";import{t as f}from"./D2zrOcWn.js";var p={slots:{base:[`relative text-xl text-highlighted font-bold mt-8 mb-3 scroll-mt-[calc(32px+45px+var(--ui-header-height))] lg:scroll-mt-[calc(32px+var(--ui-header-height))] [&>a]:rounded-sm [&>a]:outline-primary/25 [&>a]:focus-visible:outline-3 [&>a>code]:border-dashed hover:[&>a>code]:border-primary hover:[&>a>code]:text-primary [&>a>code]:text-lg/6 [&>a>code]:font-bold`,`[&>a>code]:transition-colors`],leading:[`absolute -ms-8 top-0.5 opacity-0 group-hover:opacity-100 group-focus:opacity-100 p-1 bg-elevated group-hover:text-primary group-focus:text-primary rounded-md hidden lg:flex text-muted`,`transition`],leadingIcon:`size-4 shrink-0`,link:`group lg:after:absolute lg:after:inset-y-0 lg:after:-inset-s-2 lg:after:w-2`}},m=[`id`],h=[`href`],g={__name:`ProseH3`,props:{id:{type:String,required:!1},anchor:{type:Boolean,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(g){let _=u(`prose.h3`,g),v=l(),{headings:y}=e().public?.mdc||{},b=o(()=>d({extend:p,...v.ui?.prose?.h3||{}})()),x=o(()=>_.id&&(_.anchor??(typeof y?.anchorLinks==`boolean`?y.anchorLinks:y?.anchorLinks?.h3)??!1));return(e,o)=>(s(),a(`h3`,{id:n(_).id,class:r(b.value.base({class:[n(_).ui?.base,n(_).class]}))},[n(_).id&&x.value?(s(),a(`a`,{key:0,href:`#${n(_).id}`,class:r(b.value.link({class:n(_).ui?.link}))},[i(`span`,{class:r(b.value.leading({class:n(_).ui?.leading}))},[t(f,{name:n(v).ui.icons.hash,class:r(b.value.leadingIcon({class:n(_).ui?.leadingIcon}))},null,8,[`name`,`class`])],2),c(e.$slots,`default`)],10,h)):c(e.$slots,`default`,{},void 0,void 0,1)],10,m))}};export{g as default};
@@ -1 +1 @@
1
- import{On as e,Zn as t,_ as n,b as r,et as i,g as a,mt as o,qt as s,v as c,y as l}from"./DZo3dYLJ.js";import{r as u}from"./oXSDGTSr.js";import{n as d,t as f}from"./Baq-Hrpf.js";import{t as p}from"./CjRYYbsC.js";import{t as m}from"./ChJuu-Ky.js";import{t as h}from"./CQTvWh4i.js";var g={slots:{base:[`group relative block px-4 py-3 rounded-md text-sm/6 my-5 last:mb-0 [&_code]:text-xs/5 [&_code]:bg-default [&_pre]:bg-default [&>div]:my-2.5 [&_ul]:my-2.5 [&_ol]:my-2.5 *:last:mb-0! [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:my-0`,`transition-colors`],icon:[`size-4 shrink-0 align-sub me-2 inline-block`,`transition-colors`],externalIcon:[`size-4 align-top absolute end-2 top-2 pointer-events-none`,`transition-colors`]},variants:{color:{primary:{base:`border border-primary/25 bg-primary/10 text-primary-600 dark:text-primary-300 [&_a]:text-primary [&_a]:hover:border-primary [&_a]:focus-visible:border-transparent [&_a]:outline-primary/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-primary-600 dark:[&_code]:text-primary-300 [&_code]:border-primary/25 [&_a]:[&>code]:outline-primary/25 [&_a]:hover:[&>code]:border-primary [&_a]:hover:[&>code]:text-primary [&_a]:focus-visible:[&>code]:border-primary [&_a]:focus-visible:[&>code]:text-primary [&>ul]:marker:text-primary/50`,icon:`text-primary`,externalIcon:`text-primary-600 dark:text-primary-300`},secondary:{base:`border border-secondary/25 bg-secondary/10 text-secondary-600 dark:text-secondary-300 [&_a]:text-secondary [&_a]:hover:border-secondary [&_a]:focus-visible:border-transparent [&_a]:outline-secondary/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-secondary-600 dark:[&_code]:text-secondary-300 [&_code]:border-secondary/25 [&_a]:[&>code]:outline-secondary/25 [&_a]:hover:[&>code]:border-secondary [&_a]:hover:[&>code]:text-secondary [&_a]:focus-visible:[&>code]:border-secondary [&_a]:focus-visible:[&>code]:text-secondary [&>ul]:marker:text-secondary/50`,icon:`text-secondary`,externalIcon:`text-secondary-600 dark:text-secondary-300`},success:{base:`border border-success/25 bg-success/10 text-success-600 dark:text-success-300 [&_a]:text-success [&_a]:hover:border-success [&_a]:focus-visible:border-transparent [&_a]:outline-success/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-success-600 dark:[&_code]:text-success-300 [&_code]:border-success/25 [&_a]:[&>code]:outline-success/25 [&_a]:hover:[&>code]:border-success [&_a]:hover:[&>code]:text-success [&_a]:focus-visible:[&>code]:border-success [&_a]:focus-visible:[&>code]:text-success [&>ul]:marker:text-success/50`,icon:`text-success`,externalIcon:`text-success-600 dark:text-success-300`},info:{base:`border border-info/25 bg-info/10 text-info-600 dark:text-info-300 [&_a]:text-info [&_a]:hover:border-info [&_a]:focus-visible:border-transparent [&_a]:outline-info/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-info-600 dark:[&_code]:text-info-300 [&_code]:border-info/25 [&_a]:[&>code]:outline-info/25 [&_a]:hover:[&>code]:border-info [&_a]:hover:[&>code]:text-info [&_a]:focus-visible:[&>code]:border-info [&_a]:focus-visible:[&>code]:text-info [&>ul]:marker:text-info/50`,icon:`text-info`,externalIcon:`text-info-600 dark:text-info-300`},warning:{base:`border border-warning/25 bg-warning/10 text-warning-600 dark:text-warning-300 [&_a]:text-warning [&_a]:hover:border-warning [&_a]:focus-visible:border-transparent [&_a]:outline-warning/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-warning-600 dark:[&_code]:text-warning-300 [&_code]:border-warning/25 [&_a]:[&>code]:outline-warning/25 [&_a]:hover:[&>code]:border-warning [&_a]:hover:[&>code]:text-warning [&_a]:focus-visible:[&>code]:border-warning [&_a]:focus-visible:[&>code]:text-warning [&>ul]:marker:text-warning/50`,icon:`text-warning`,externalIcon:`text-warning-600 dark:text-warning-300`},error:{base:`border border-error/25 bg-error/10 text-error-600 dark:text-error-300 [&_a]:text-error [&_a]:hover:border-error [&_a]:focus-visible:border-transparent [&_a]:outline-error/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-error-600 dark:[&_code]:text-error-300 [&_code]:border-error/25 [&_a]:[&>code]:outline-error/25 [&_a]:hover:[&>code]:border-error [&_a]:hover:[&>code]:text-error [&_a]:focus-visible:[&>code]:border-error [&_a]:focus-visible:[&>code]:text-error [&>ul]:marker:text-error/50`,icon:`text-error`,externalIcon:`text-error-600 dark:text-error-300`},neutral:{base:`border border-muted bg-muted text-default`,icon:`text-highlighted`,externalIcon:`text-dimmed`}},to:{true:`border-dashed`}},compoundVariants:[{color:`primary`,to:!0,class:{base:`hover:border-primary outline-primary/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-primary`,externalIcon:`group-hover:text-primary`}},{color:`secondary`,to:!0,class:{base:`hover:border-secondary outline-secondary/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-secondary`,externalIcon:`group-hover:text-secondary`}},{color:`success`,to:!0,class:{base:`hover:border-success outline-success/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-success`,externalIcon:`group-hover:text-success`}},{color:`info`,to:!0,class:{base:`hover:border-info outline-info/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-info`,externalIcon:`group-hover:text-info`}},{color:`warning`,to:!0,class:{base:`hover:border-warning outline-warning/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-warning`,externalIcon:`group-hover:text-warning`}},{color:`error`,to:!0,class:{base:`hover:border-error outline-error/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-error`,externalIcon:`group-hover:text-error`}},{color:`neutral`,to:!0,class:{base:`hover:border-inverted outline-inverted/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-inverted`,externalIcon:`group-hover:text-highlighted`}}],defaultVariants:{color:`neutral`}},_=Object.assign({inheritAttrs:!1},{__name:`ProseCallout`,props:{to:{type:null,required:!1},target:{type:[String,Object,null],required:!1},icon:{type:null,required:!1},color:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(_){let v=d(`prose.callout`,_),y=u(),b=a(()=>f({extend:g,...y.ui?.prose?.callout||{}})({color:v.color,to:!!v.to})),x=a(()=>v.target||(v.to&&typeof v.to==`string`&&v.to.startsWith(`http`)?`_blank`:void 0));return(a,u)=>(o(),r(`div`,i(e(v).to?{}:a.$attrs,{class:b.value.base({class:[e(v).ui?.base,e(v).class]})}),[e(v).to?(o(),c(m,i({key:0},{to:e(v).to,target:x.value,...a.$attrs},{class:`focus:outline-none`,raw:``}),{default:s(()=>[...u[0]||=[n(`span`,{class:`absolute inset-0`,"aria-hidden":`true`},null,-1)]]),_:1},16)):l(``,!0),e(v).icon?(o(),c(p,{key:1,name:e(v).icon,class:t(b.value.icon({class:e(v).ui?.icon}))},null,8,[`name`,`class`])):l(``,!0),e(v).to&&x.value===`_blank`?(o(),c(p,{key:2,name:e(y).ui.icons.external,class:t(b.value.externalIcon({class:e(v).ui?.externalIcon}))},null,8,[`name`,`class`])):l(``,!0),h(a.$slots,`default`,{mdcUnwrap:`p`})],16))}});export{_ as default};
1
+ import{On as e,Zn as t,_ as n,b as r,et as i,g as a,mt as o,qt as s,v as c,y as l}from"./DZo3dYLJ.js";import{r as u}from"./oXSDGTSr.js";import{n as d,t as f}from"./Baq-Hrpf.js";import{t as p}from"./D2zrOcWn.js";import{t as m}from"./ChJuu-Ky.js";import{t as h}from"./CQTvWh4i.js";var g={slots:{base:[`group relative block px-4 py-3 rounded-md text-sm/6 my-5 last:mb-0 [&_code]:text-xs/5 [&_code]:bg-default [&_pre]:bg-default [&>div]:my-2.5 [&_ul]:my-2.5 [&_ol]:my-2.5 *:last:mb-0! [&_ul]:ps-4.5 [&_ol]:ps-4.5 [&_li]:my-0`,`transition-colors`],icon:[`size-4 shrink-0 align-sub me-2 inline-block`,`transition-colors`],externalIcon:[`size-4 align-top absolute end-2 top-2 pointer-events-none`,`transition-colors`]},variants:{color:{primary:{base:`border border-primary/25 bg-primary/10 text-primary-600 dark:text-primary-300 [&_a]:text-primary [&_a]:hover:border-primary [&_a]:focus-visible:border-transparent [&_a]:outline-primary/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-primary-600 dark:[&_code]:text-primary-300 [&_code]:border-primary/25 [&_a]:[&>code]:outline-primary/25 [&_a]:hover:[&>code]:border-primary [&_a]:hover:[&>code]:text-primary [&_a]:focus-visible:[&>code]:border-primary [&_a]:focus-visible:[&>code]:text-primary [&>ul]:marker:text-primary/50`,icon:`text-primary`,externalIcon:`text-primary-600 dark:text-primary-300`},secondary:{base:`border border-secondary/25 bg-secondary/10 text-secondary-600 dark:text-secondary-300 [&_a]:text-secondary [&_a]:hover:border-secondary [&_a]:focus-visible:border-transparent [&_a]:outline-secondary/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-secondary-600 dark:[&_code]:text-secondary-300 [&_code]:border-secondary/25 [&_a]:[&>code]:outline-secondary/25 [&_a]:hover:[&>code]:border-secondary [&_a]:hover:[&>code]:text-secondary [&_a]:focus-visible:[&>code]:border-secondary [&_a]:focus-visible:[&>code]:text-secondary [&>ul]:marker:text-secondary/50`,icon:`text-secondary`,externalIcon:`text-secondary-600 dark:text-secondary-300`},success:{base:`border border-success/25 bg-success/10 text-success-600 dark:text-success-300 [&_a]:text-success [&_a]:hover:border-success [&_a]:focus-visible:border-transparent [&_a]:outline-success/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-success-600 dark:[&_code]:text-success-300 [&_code]:border-success/25 [&_a]:[&>code]:outline-success/25 [&_a]:hover:[&>code]:border-success [&_a]:hover:[&>code]:text-success [&_a]:focus-visible:[&>code]:border-success [&_a]:focus-visible:[&>code]:text-success [&>ul]:marker:text-success/50`,icon:`text-success`,externalIcon:`text-success-600 dark:text-success-300`},info:{base:`border border-info/25 bg-info/10 text-info-600 dark:text-info-300 [&_a]:text-info [&_a]:hover:border-info [&_a]:focus-visible:border-transparent [&_a]:outline-info/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-info-600 dark:[&_code]:text-info-300 [&_code]:border-info/25 [&_a]:[&>code]:outline-info/25 [&_a]:hover:[&>code]:border-info [&_a]:hover:[&>code]:text-info [&_a]:focus-visible:[&>code]:border-info [&_a]:focus-visible:[&>code]:text-info [&>ul]:marker:text-info/50`,icon:`text-info`,externalIcon:`text-info-600 dark:text-info-300`},warning:{base:`border border-warning/25 bg-warning/10 text-warning-600 dark:text-warning-300 [&_a]:text-warning [&_a]:hover:border-warning [&_a]:focus-visible:border-transparent [&_a]:outline-warning/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-warning-600 dark:[&_code]:text-warning-300 [&_code]:border-warning/25 [&_a]:[&>code]:outline-warning/25 [&_a]:hover:[&>code]:border-warning [&_a]:hover:[&>code]:text-warning [&_a]:focus-visible:[&>code]:border-warning [&_a]:focus-visible:[&>code]:text-warning [&>ul]:marker:text-warning/50`,icon:`text-warning`,externalIcon:`text-warning-600 dark:text-warning-300`},error:{base:`border border-error/25 bg-error/10 text-error-600 dark:text-error-300 [&_a]:text-error [&_a]:hover:border-error [&_a]:focus-visible:border-transparent [&_a]:outline-error/25 [&_a]:focus-visible:outline-3 [&_a]:focus-visible:has-[>code]:outline-0 [&_code]:text-error-600 dark:[&_code]:text-error-300 [&_code]:border-error/25 [&_a]:[&>code]:outline-error/25 [&_a]:hover:[&>code]:border-error [&_a]:hover:[&>code]:text-error [&_a]:focus-visible:[&>code]:border-error [&_a]:focus-visible:[&>code]:text-error [&>ul]:marker:text-error/50`,icon:`text-error`,externalIcon:`text-error-600 dark:text-error-300`},neutral:{base:`border border-muted bg-muted text-default`,icon:`text-highlighted`,externalIcon:`text-dimmed`}},to:{true:`border-dashed`}},compoundVariants:[{color:`primary`,to:!0,class:{base:`hover:border-primary outline-primary/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-primary`,externalIcon:`group-hover:text-primary`}},{color:`secondary`,to:!0,class:{base:`hover:border-secondary outline-secondary/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-secondary`,externalIcon:`group-hover:text-secondary`}},{color:`success`,to:!0,class:{base:`hover:border-success outline-success/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-success`,externalIcon:`group-hover:text-success`}},{color:`info`,to:!0,class:{base:`hover:border-info outline-info/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-info`,externalIcon:`group-hover:text-info`}},{color:`warning`,to:!0,class:{base:`hover:border-warning outline-warning/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-warning`,externalIcon:`group-hover:text-warning`}},{color:`error`,to:!0,class:{base:`hover:border-error outline-error/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-error`,externalIcon:`group-hover:text-error`}},{color:`neutral`,to:!0,class:{base:`hover:border-inverted outline-inverted/25 has-[>a:focus-visible]:outline-3 has-[>a:focus-visible]:border-inverted`,externalIcon:`group-hover:text-highlighted`}}],defaultVariants:{color:`neutral`}},_=Object.assign({inheritAttrs:!1},{__name:`ProseCallout`,props:{to:{type:null,required:!1},target:{type:[String,Object,null],required:!1},icon:{type:null,required:!1},color:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(_){let v=d(`prose.callout`,_),y=u(),b=a(()=>f({extend:g,...y.ui?.prose?.callout||{}})({color:v.color,to:!!v.to})),x=a(()=>v.target||(v.to&&typeof v.to==`string`&&v.to.startsWith(`http`)?`_blank`:void 0));return(a,u)=>(o(),r(`div`,i(e(v).to?{}:a.$attrs,{class:b.value.base({class:[e(v).ui?.base,e(v).class]})}),[e(v).to?(o(),c(m,i({key:0},{to:e(v).to,target:x.value,...a.$attrs},{class:`focus:outline-none`,raw:``}),{default:s(()=>[...u[0]||=[n(`span`,{class:`absolute inset-0`,"aria-hidden":`true`},null,-1)]]),_:1},16)):l(``,!0),e(v).icon?(o(),c(p,{key:1,name:e(v).icon,class:t(b.value.icon({class:e(v).ui?.icon}))},null,8,[`name`,`class`])):l(``,!0),e(v).to&&x.value===`_blank`?(o(),c(p,{key:2,name:e(y).ui.icons.external,class:t(b.value.externalIcon({class:e(v).ui?.externalIcon}))},null,8,[`name`,`class`])):l(``,!0),h(a.$slots,`default`,{mdcUnwrap:`p`})],16))}});export{_ as default};
@@ -1 +1 @@
1
- import{D as e,On as t,Rt as n,Zn as r,_ as i,b as a,et as o,g as s,mt as c,tr as l,v as u,xt as d,y as f}from"./DZo3dYLJ.js";import{r as p}from"./oXSDGTSr.js";import{n as m,t as h}from"./Baq-Hrpf.js";import{a as g}from"./Vo4wMbnS.js";import{t as _}from"./DNMF9lr0.js";import{c as v}from"#entry";import y from"./DmKZi-Wo.js";var b={slots:{root:`relative my-5 group`,header:`flex items-center gap-1.5 border border-muted bg-default border-b-0 relative rounded-t-md px-4 py-3`,filename:`text-default text-sm/6`,icon:`size-4 shrink-0`,copy:`absolute top-[11px] end-[11px] lg:opacity-0 lg:group-hover:opacity-100 lg:focus-visible:opacity-100 transition`,base:`group font-mono text-sm/6 border border-muted bg-muted rounded-md px-4 py-3 whitespace-pre-wrap wrap-break-word overflow-x-auto outline-primary/25 focus-visible:outline-3 focus-visible:border-primary **:[.line]:block **:[.line.highlight]:-mx-4 **:[.line.highlight]:px-4 **:[.line.highlight]:bg-accented/50!`},variants:{filename:{true:{root:`[&>pre]:rounded-t-none [&>pre]:my-0 my-5`}}}},x={__name:`ProsePre`,props:{icon:{type:null,required:!1},code:{type:String,required:!1},language:{type:String,required:!1},filename:{type:String,required:!1},highlights:{type:Array,required:!1},hideHeader:{type:Boolean,required:!1},meta:{type:String,required:!1},copy:{type:[Boolean,Object],required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(x){let S=m(`prose.pre`,x),{t:C}=v(),{copy:w,copied:T}=g(),E=p(),D=n(`baseRef`),O=s(()=>h({extend:b,...E.ui?.prose?.pre||{}})());function k(){let e=S.code??D.value?.textContent??``;w(e)}return(n,s)=>(c(),a(`div`,{class:r(O.value.root({class:[t(S).ui?.root],filename:!!t(S).filename}))},[t(S).filename&&!t(S).hideHeader?(c(),a(`div`,{key:0,class:r(O.value.header({class:t(S).ui?.header}))},[e(y,{icon:t(S).icon,filename:t(S).filename,class:r(O.value.icon({class:t(S).ui?.icon}))},null,8,[`icon`,`filename`,`class`]),i(`span`,{class:r(O.value.filename({class:t(S).ui?.filename}))},l(t(S).filename),3)],2)):f(``,!0),t(S).copy?(c(),u(_,o({key:1,icon:t(T)?t(E).ui.icons.copyCheck:t(E).ui.icons.copy,color:`neutral`,variant:`outline`,size:`sm`,"aria-label":t(C)(`prose.pre.copy`)},typeof t(S).copy==`object`?t(S).copy:{},{class:O.value.copy({class:t(S).ui?.copy}),onClick:k}),null,16,[`icon`,`aria-label`,`class`])):f(``,!0),i(`pre`,o({ref_key:`baseRef`,ref:D,class:O.value.base({class:[t(S).ui?.base,t(S).class]})},n.$attrs),[d(n.$slots,`default`)],16)],2))}};export{x as default};
1
+ import{D as e,On as t,Rt as n,Zn as r,_ as i,b as a,et as o,g as s,mt as c,tr as l,v as u,xt as d,y as f}from"./DZo3dYLJ.js";import{r as p}from"./oXSDGTSr.js";import{n as m,t as h}from"./Baq-Hrpf.js";import{a as g}from"./Vo4wMbnS.js";import{t as _}from"./BsNk4K6P.js";import{u as v}from"#entry";import y from"./Cp9-r9Yz.js";var b={slots:{root:`relative my-5 group`,header:`flex items-center gap-1.5 border border-muted bg-default border-b-0 relative rounded-t-md px-4 py-3`,filename:`text-default text-sm/6`,icon:`size-4 shrink-0`,copy:`absolute top-[11px] end-[11px] lg:opacity-0 lg:group-hover:opacity-100 lg:focus-visible:opacity-100 transition`,base:`group font-mono text-sm/6 border border-muted bg-muted rounded-md px-4 py-3 whitespace-pre-wrap wrap-break-word overflow-x-auto outline-primary/25 focus-visible:outline-3 focus-visible:border-primary **:[.line]:block **:[.line.highlight]:-mx-4 **:[.line.highlight]:px-4 **:[.line.highlight]:bg-accented/50!`},variants:{filename:{true:{root:`[&>pre]:rounded-t-none [&>pre]:my-0 my-5`}}}},x={__name:`ProsePre`,props:{icon:{type:null,required:!1},code:{type:String,required:!1},language:{type:String,required:!1},filename:{type:String,required:!1},highlights:{type:Array,required:!1},hideHeader:{type:Boolean,required:!1},meta:{type:String,required:!1},copy:{type:[Boolean,Object],required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1}},setup(x){let S=m(`prose.pre`,x),{t:C}=v(),{copy:w,copied:T}=g(),E=p(),D=n(`baseRef`),O=s(()=>h({extend:b,...E.ui?.prose?.pre||{}})());function k(){let e=S.code??D.value?.textContent??``;w(e)}return(n,s)=>(c(),a(`div`,{class:r(O.value.root({class:[t(S).ui?.root],filename:!!t(S).filename}))},[t(S).filename&&!t(S).hideHeader?(c(),a(`div`,{key:0,class:r(O.value.header({class:t(S).ui?.header}))},[e(y,{icon:t(S).icon,filename:t(S).filename,class:r(O.value.icon({class:t(S).ui?.icon}))},null,8,[`icon`,`filename`,`class`]),i(`span`,{class:r(O.value.filename({class:t(S).ui?.filename}))},l(t(S).filename),3)],2)):f(``,!0),t(S).copy?(c(),u(_,o({key:1,icon:t(T)?t(E).ui.icons.copyCheck:t(E).ui.icons.copy,color:`neutral`,variant:`outline`,size:`sm`,"aria-label":t(C)(`prose.pre.copy`)},typeof t(S).copy==`object`?t(S).copy:{},{class:O.value.copy({class:t(S).ui?.copy}),onClick:k}),null,16,[`icon`,`aria-label`,`class`])):f(``,!0),i(`pre`,o({ref_key:`baseRef`,ref:D,class:O.value.base({class:[t(S).ui?.base,t(S).class]})},n.$attrs),[d(n.$slots,`default`)],16)],2))}};export{x as default};
@@ -1,13 +1,13 @@
1
- import{$n as e,D as t,E as n,Ht as r,Lt as i,On as a,Rt as o,Ut as s,Zn as c,_ as l,b as u,bt as d,ct as f,er as p,et as m,ft as h,g,gn as _,k as v,mt as y,o as b,pn as x,qt as S,tr as C,tt as w,u as T,v as E,vn as D,wn as O,wt as k,xn as A,xt as j,y as M}from"./DZo3dYLJ.js";import{w as N}from"./51OWHj8c.js";import{r as P}from"./oXSDGTSr.js";import{h as F,n as I,t as L}from"./Baq-Hrpf.js";import{r as ee,t as R}from"./DLkAKotw.js";import{t as z}from"./DHihWhf5.js";import{S as B,m as V,s as te}from"./CuJUHLl8.js";import{d as ne,f as re,p as H,r as ie}from"./Vo4wMbnS.js";import{t as U}from"./CK9_veoz.js";import{t as W}from"./BuOKDFiJ.js";import{t as G}from"./D3YCAmfu.js";import{t as K}from"./C9StZL3D.js";import{t as q}from"./Bi9Axj3V.js";import{t as J}from"./CjRYYbsC.js";import{n as Y}from"./D8Bpf7sE.js";import{t as X}from"./DNMF9lr0.js";import{_ as ae,c as Z,g as Q,h as oe,m as se,p as ce,v as le}from"#entry";var $=100,[ue,de]=F(`ProgressRoot`),fe=e=>typeof e==`number`;function pe(e,t){return z(e)||fe(e)&&!Number.isNaN(e)&&e<=t&&e>=0?e:(console.error(`Invalid prop \`value\` of value \`${e}\` supplied to \`ProgressRoot\`. The \`value\` prop must be:
1
+ import{$n as e,D as t,E as n,Ht as r,Lt as i,On as a,Rt as o,Ut as s,Zn as c,_ as l,b as u,bt as d,ct as f,er as p,et as m,ft as h,g,gn as _,k as v,mt as y,o as b,pn as x,qt as S,tr as C,tt as w,u as T,v as E,vn as D,wn as O,wt as k,xn as A,xt as j,y as M}from"./DZo3dYLJ.js";import{w as N}from"./51OWHj8c.js";import{r as P}from"./oXSDGTSr.js";import{h as F,n as I,t as L}from"./Baq-Hrpf.js";import{r as ee,t as R}from"./DLkAKotw.js";import{t as z}from"./DHihWhf5.js";import{S as B,m as V,s as te}from"./CuJUHLl8.js";import{d as ne,f as re,p as H,r as ie}from"./Vo4wMbnS.js";import{t as U}from"./CK9_veoz.js";import{t as W}from"./BuOKDFiJ.js";import{t as G}from"./D3YCAmfu.js";import{t as K}from"./C9StZL3D.js";import{t as q}from"./Bi9Axj3V.js";import{t as J}from"./D2zrOcWn.js";import{n as Y}from"./CNCQ_RRC.js";import{t as X}from"./BsNk4K6P.js";import{_ as ae,b as oe,g as se,h as ce,u as Z,v as Q,y as le}from"#entry";var $=100,[ue,de]=F(`ProgressRoot`),fe=e=>typeof e==`number`;function pe(e,t){return z(e)||fe(e)&&!Number.isNaN(e)&&e<=t&&e>=0?e:(console.error(`Invalid prop \`value\` of value \`${e}\` supplied to \`ProgressRoot\`. The \`value\` prop must be:
2
2
  - a positive number
3
3
  - less than the value passed to \`max\` (or ${$} if no \`max\` prop is set)
4
4
  - \`null\` or \`undefined\` if the progress is indeterminate.
5
5
 
6
- Defaulting to \`null\`.`),null)}function me(e){return fe(e)&&!Number.isNaN(e)&&e>0?e:(console.error(`Invalid prop \`max\` of value \`${e}\` supplied to \`ProgressRoot\`. Only numbers greater than 0 are valid max values. Defaulting to \`${$}\`.`),$)}var he=v({__name:`ProgressRoot`,props:{modelValue:{type:[Number,null],required:!1},max:{type:Number,required:!1,default:$},getValueLabel:{type:Function,required:!1,default:(e,t)=>fe(e)?`${Math.round(e/t*$)}%`:void 0},getValueText:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`,`update:max`],setup(e,{emit:t}){let n=e,i=t;G();let o=H(n,`modelValue`,i,{passive:n.modelValue===void 0}),s=H(n,`max`,i,{passive:n.max===void 0});r(()=>o.value,async e=>{let t=pe(e,n.max);t!==e&&(await w(),o.value=t)},{immediate:!0}),r(()=>n.max,e=>{let t=me(n.max);t!==e&&(s.value=t)},{immediate:!0});let c=g(()=>z(o.value)?`indeterminate`:o.value===s.value?`complete`:`loading`);return de({modelValue:o,max:s,progressState:c}),(t,n)=>(y(),E(a(U),{"as-child":e.asChild,as:e.as,"aria-valuemax":a(s),"aria-valuemin":0,"aria-valuenow":fe(a(o))?a(o):void 0,"aria-valuetext":e.getValueText?.(a(o),a(s)),"aria-label":e.getValueLabel(a(o),a(s)),role:`progressbar`,"data-state":c.value,"data-value":a(o)??void 0,"data-max":a(s)},{default:S(()=>[j(t.$slots,`default`,{modelValue:a(o)})]),_:3},8,[`as-child`,`as`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`,`aria-label`,`data-state`,`data-value`,`data-max`]))}}),ge=v({__name:`ProgressIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=ue();return G(),(e,r)=>(y(),E(a(U),m(t,{"data-state":a(n).progressState.value,"data-value":a(n).modelValue?.value??void 0,"data-max":a(n).max.value}),{default:S(()=>[j(e.$slots,`default`)]),_:3},16,[`data-state`,`data-value`,`data-max`]))}}),_e=v({__name:`ToastAnnounceExclude`,props:{altText:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){return(t,n)=>(y(),E(a(U),{as:e.as,"as-child":e.asChild,"data-reka-toast-announce-exclude":``,"data-reka-toast-announce-alt":e.altText||void 0},{default:S(()=>[j(t.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-reka-toast-announce-alt`]))}}),ve=v({__name:`ToastAnnounce`,setup(e){let t=le(),r=B(1e3),i=D(!1),o=0,s=0;return te&&(o=requestAnimationFrame(()=>{s=requestAnimationFrame(()=>{i.value=!0})}),x(()=>{cancelAnimationFrame(o),cancelAnimationFrame(s)})),(e,o)=>a(r)||i.value?(y(),E(a(q),{key:0,feature:`fully-hidden`},{default:S(()=>[n(C(a(t).label.value)+` `,1),j(e.$slots,`default`)]),_:3})):M(`v-if`,!0)}}),[ye,be]=F(`ToastPositioner`),[xe,Se]=F(`ToastRoot`),Ce=v({inheritAttrs:!1,__name:`ToastRootImpl`,props:{type:{type:String,required:!1},open:{type:Boolean,required:!1,default:!1},duration:{type:Number,required:!1},toast:{type:Object,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`li`}},emits:[`close`,`escapeKeyDown`,`pause`,`resume`,`swipeStart`,`swipeMove`,`swipeCancel`,`swipeEnd`],setup(e,{emit:i}){let o=e,c=i,{forwardRef:l,currentElement:p}=G(),{CollectionItem:v}=R(),x=le(),w=D(null),k=D(null),P=g(()=>typeof o.duration==`number`?o.duration:x.duration.value),F=D(0),I=D(P.value),L=D(0),z=D(P.value),B=ne(()=>{let e=Date.now()-F.value;z.value=Math.max(I.value-e,0)},{fpsLimit:60});function V(e){e<=0||e===1/0||te&&(window.clearTimeout(L.value),F.value=Date.now(),L.value=window.setTimeout(H,e))}function H(e){let t=e?.pointerType===``;p.value?.contains(ee())&&t&&x.viewport.value?.focus(),t&&(x.isClosePausedRef.value=!1),c(`close`)}let W=ye(null),K=A(null);r([p,()=>o.toast?.updateKey],([e])=>{K.value=e?oe(e):null},{flush:`post`,immediate:!0});let q=_({seq:0,height:0,open:o.open}),J=g(()=>x.getToastStack(q));function Y(){let e=p.value;if(!e)return;let t=e.style.height;e.style.height=`auto`,q.height=e.offsetHeight,e.style.height=t}if(re(p,Y),r(()=>o.toast?.updateKey,Y,{flush:`post`}),r(()=>o.open,(e,t)=>{q.open=e,e&&!t&&x.reopenToast(q)}),o.type&&![`foreground`,`background`].includes(o.type))throw Error("Invalid prop `type` supplied to `Toast`. Expected `foreground | background`.");s(e=>{let t=x.viewport.value;if(t){let n=()=>{V(I.value),B.resume(),c(`resume`)},r=()=>{let e=Date.now()-F.value;I.value-=e,window.clearTimeout(L.value),B.pause(),c(`pause`)};t.addEventListener(ce,r),t.addEventListener(se,n),e(()=>{t.removeEventListener(ce,r),t.removeEventListener(se,n)})}});let X=g(()=>o.toast?x.toastStore.getRestartKey(o.toast.id):0);r([()=>o.open,P,X],()=>{I.value=P.value,o.open&&!x.isClosePausedRef.value&&V(P.value)},{immediate:!0}),ie(`Escape`,e=>{c(`escapeKeyDown`,e),e.defaultPrevented||(x.isFocusedToastEscapeKeyDownRef.value=!0,H())});let Z;return f(()=>{x.onToastAdd(),Z=x.registerToast(q),Y()}),h(()=>{x.onToastRemove(),Z?.()}),Se({onClose:H,toast:O(o,`toast`)}),(r,i)=>(y(),u(b,null,[K.value?(y(),E(ve,{key:e.toast?.updateKey??0,role:`alert`,"aria-live":e.type===`foreground`?`assertive`:`polite`},{default:S(()=>[M(`
6
+ Defaulting to \`null\`.`),null)}function me(e){return fe(e)&&!Number.isNaN(e)&&e>0?e:(console.error(`Invalid prop \`max\` of value \`${e}\` supplied to \`ProgressRoot\`. Only numbers greater than 0 are valid max values. Defaulting to \`${$}\`.`),$)}var he=v({__name:`ProgressRoot`,props:{modelValue:{type:[Number,null],required:!1},max:{type:Number,required:!1,default:$},getValueLabel:{type:Function,required:!1,default:(e,t)=>fe(e)?`${Math.round(e/t*$)}%`:void 0},getValueText:{type:Function,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},emits:[`update:modelValue`,`update:max`],setup(e,{emit:t}){let n=e,i=t;G();let o=H(n,`modelValue`,i,{passive:n.modelValue===void 0}),s=H(n,`max`,i,{passive:n.max===void 0});r(()=>o.value,async e=>{let t=pe(e,n.max);t!==e&&(await w(),o.value=t)},{immediate:!0}),r(()=>n.max,e=>{let t=me(n.max);t!==e&&(s.value=t)},{immediate:!0});let c=g(()=>z(o.value)?`indeterminate`:o.value===s.value?`complete`:`loading`);return de({modelValue:o,max:s,progressState:c}),(t,n)=>(y(),E(a(U),{"as-child":e.asChild,as:e.as,"aria-valuemax":a(s),"aria-valuemin":0,"aria-valuenow":fe(a(o))?a(o):void 0,"aria-valuetext":e.getValueText?.(a(o),a(s)),"aria-label":e.getValueLabel(a(o),a(s)),role:`progressbar`,"data-state":c.value,"data-value":a(o)??void 0,"data-max":a(s)},{default:S(()=>[j(t.$slots,`default`,{modelValue:a(o)})]),_:3},8,[`as-child`,`as`,`aria-valuemax`,`aria-valuenow`,`aria-valuetext`,`aria-label`,`data-state`,`data-value`,`data-max`]))}}),ge=v({__name:`ProgressIndicator`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){let t=e,n=ue();return G(),(e,r)=>(y(),E(a(U),m(t,{"data-state":a(n).progressState.value,"data-value":a(n).modelValue?.value??void 0,"data-max":a(n).max.value}),{default:S(()=>[j(e.$slots,`default`)]),_:3},16,[`data-state`,`data-value`,`data-max`]))}}),_e=v({__name:`ToastAnnounceExclude`,props:{altText:{type:String,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(e){return(t,n)=>(y(),E(a(U),{as:e.as,"as-child":e.asChild,"data-reka-toast-announce-exclude":``,"data-reka-toast-announce-alt":e.altText||void 0},{default:S(()=>[j(t.$slots,`default`)]),_:3},8,[`as`,`as-child`,`data-reka-toast-announce-alt`]))}}),ve=v({__name:`ToastAnnounce`,setup(e){let t=oe(),r=B(1e3),i=D(!1),o=0,s=0;return te&&(o=requestAnimationFrame(()=>{s=requestAnimationFrame(()=>{i.value=!0})}),x(()=>{cancelAnimationFrame(o),cancelAnimationFrame(s)})),(e,o)=>a(r)||i.value?(y(),E(a(q),{key:0,feature:`fully-hidden`},{default:S(()=>[n(C(a(t).label.value)+` `,1),j(e.$slots,`default`)]),_:3})):M(`v-if`,!0)}}),[ye,be]=F(`ToastPositioner`),[xe,Se]=F(`ToastRoot`),Ce=v({inheritAttrs:!1,__name:`ToastRootImpl`,props:{type:{type:String,required:!1},open:{type:Boolean,required:!1,default:!1},duration:{type:Number,required:!1},toast:{type:Object,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`li`}},emits:[`close`,`escapeKeyDown`,`pause`,`resume`,`swipeStart`,`swipeMove`,`swipeCancel`,`swipeEnd`],setup(e,{emit:i}){let o=e,c=i,{forwardRef:l,currentElement:p}=G(),{CollectionItem:v}=R(),x=oe(),w=D(null),k=D(null),P=g(()=>typeof o.duration==`number`?o.duration:x.duration.value),F=D(0),I=D(P.value),L=D(0),z=D(P.value),B=ne(()=>{let e=Date.now()-F.value;z.value=Math.max(I.value-e,0)},{fpsLimit:60});function V(e){e<=0||e===1/0||te&&(window.clearTimeout(L.value),F.value=Date.now(),L.value=window.setTimeout(H,e))}function H(e){let t=e?.pointerType===``;p.value?.contains(ee())&&t&&x.viewport.value?.focus(),t&&(x.isClosePausedRef.value=!1),c(`close`)}let W=ye(null),K=A(null);r([p,()=>o.toast?.updateKey],([e])=>{K.value=e?ae(e):null},{flush:`post`,immediate:!0});let q=_({seq:0,height:0,open:o.open}),J=g(()=>x.getToastStack(q));function Y(){let e=p.value;if(!e)return;let t=e.style.height;e.style.height=`auto`,q.height=e.offsetHeight,e.style.height=t}if(re(p,Y),r(()=>o.toast?.updateKey,Y,{flush:`post`}),r(()=>o.open,(e,t)=>{q.open=e,e&&!t&&x.reopenToast(q)}),o.type&&![`foreground`,`background`].includes(o.type))throw Error("Invalid prop `type` supplied to `Toast`. Expected `foreground | background`.");s(e=>{let t=x.viewport.value;if(t){let n=()=>{V(I.value),B.resume(),c(`resume`)},r=()=>{let e=Date.now()-F.value;I.value-=e,window.clearTimeout(L.value),B.pause(),c(`pause`)};t.addEventListener(ce,r),t.addEventListener(se,n),e(()=>{t.removeEventListener(ce,r),t.removeEventListener(se,n)})}});let X=g(()=>o.toast?x.toastStore.getRestartKey(o.toast.id):0);r([()=>o.open,P,X],()=>{I.value=P.value,o.open&&!x.isClosePausedRef.value&&V(P.value)},{immediate:!0}),ie(`Escape`,e=>{c(`escapeKeyDown`,e),e.defaultPrevented||(x.isFocusedToastEscapeKeyDownRef.value=!0,H())});let Z;return f(()=>{x.onToastAdd(),Z=x.registerToast(q),Y()}),h(()=>{x.onToastRemove(),Z?.()}),Se({onClose:H,toast:O(o,`toast`)}),(r,i)=>(y(),u(b,null,[K.value?(y(),E(ve,{key:e.toast?.updateKey??0,role:`alert`,"aria-live":e.type===`foreground`?`assertive`:`polite`},{default:S(()=>[M(`
7
7
  Render each chunk as its own text node so screen readers get the
8
8
  natural pause break between nodes (see comment in utils.ts).
9
9
  Interpolating the array directly with \`{{ announceTextContent }}\`
10
10
  would route through Vue's \`toDisplayString\`, which JSON-stringifies
11
11
  arrays — the live region would then announce literal \`[\`, quotes
12
12
  and commas instead of the toast title and description.
13
- `),(y(!0),u(b,null,d(K.value,(e,t)=>(y(),u(b,{key:t},[n(C(e),1)],64))),128))]),_:1},8,[`aria-live`])):M(`v-if`,!0),a(x).viewport.value||a(W)?(y(),E(T,{key:1,to:a(x).viewport.value??`body`,disabled:!!a(W)},[t(a(v),null,{default:S(()=>[t(a(U),m({ref:a(l),tabindex:`0`},r.$attrs,{as:e.as,"as-child":e.asChild,"data-state":e.open?`open`:`closed`,"data-swipe-direction":a(x).swipeDirection.value,"data-status":e.toast?.status,"data-expanded":a(x).expanded.value?``:void 0,"data-limited":J.value.limited?``:void 0,inert:J.value.limited||void 0,style:{...a(x).disableSwipe.value?void 0:{userSelect:`none`,touchAction:`none`},"--reka-toast-index":J.value.index,"--reka-toast-offset-y":`${J.value.offsetY}px`,"--reka-toast-height":q.height?`${q.height}px`:void 0},onPointerdown:i[0]||=N(e=>{a(x).disableSwipe.value||(w.value={x:e.clientX,y:e.clientY})},[`left`]),onPointermove:i[1]||=e=>{if(a(x).disableSwipe.value||!w.value)return;let t=e.clientX-w.value.x,n=e.clientY-w.value.y,r=!!k.value,i=[`left`,`right`].includes(a(x).swipeDirection.value),o=[`left`,`up`].includes(a(x).swipeDirection.value)?Math.min:Math.max,s=i?o(0,t):0,l=i?0:o(0,n),u=e.pointerType===`touch`?10:2,d={x:s,y:l},f={originalEvent:e,delta:d};r?(k.value=d,a(Q)(a(`toast.swipeMove`),e=>c(`swipeMove`,e),f)):a(ae)(d,a(x).swipeDirection.value,u)?(k.value=d,a(Q)(a(`toast.swipeStart`),e=>c(`swipeStart`,e),f),e.target.setPointerCapture(e.pointerId)):(Math.abs(t)>u||Math.abs(n)>u)&&(w.value=null)},onPointerup:i[2]||=e=>{if(a(x).disableSwipe.value)return;let t=k.value,n=e.target;if(n.hasPointerCapture(e.pointerId)&&n.releasePointerCapture(e.pointerId),k.value=null,w.value=null,t){let n=e.currentTarget,r={originalEvent:e,delta:t};a(ae)(t,a(x).swipeDirection.value,a(x).swipeThreshold.value)?a(Q)(a(`toast.swipeEnd`),e=>c(`swipeEnd`,e),r):a(Q)(a(`toast.swipeCancel`),e=>c(`swipeCancel`,e),r),n?.addEventListener(`click`,e=>e.preventDefault(),{once:!0})}}}),{default:S(()=>[j(r.$slots,`default`,{remaining:z.value,duration:P.value})]),_:3},16,[`as`,`as-child`,`data-state`,`data-swipe-direction`,`data-status`,`data-expanded`,`data-limited`,`inert`,`style`])]),_:3})],8,[`to`,`disabled`])):M(`v-if`,!0)],64))}}),we=v({__name:`ToastAction`,props:{altText:{type:String,required:!1},closeOnClick:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let r=e,o=xe(),{forwardRef:s}=G(),c=i(),l=g(()=>o.toast.value?.actionProps),u=g(()=>!!c.default||!o.toast.value||!!l.value),d=g(()=>r.altText??l.value?.altText);if(u.value&&!d.value)throw Error("Missing prop `altText` expected on `ToastAction`");function f(e){l.value?.onClick?.(e),(l.value?.closeOnClick??r.closeOnClick)&&o.onClose(e)}return(r,i)=>u.value&&d.value?(y(),E(_e,{key:0,"alt-text":d.value,"as-child":``},{default:S(()=>[t(a(U),{ref:a(s),as:e.as,"as-child":e.asChild,type:e.as===`button`?`button`:void 0,onClick:f},{default:S(()=>[j(r.$slots,`default`,{},()=>[n(C(l.value?.label),1)])]),_:3},8,[`as`,`as-child`,`type`])]),_:3},8,[`alt-text`])):M(`v-if`,!0)}}),Te=v({__name:`ToastClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let n=e,r=xe(),{forwardRef:i}=G();return(o,s)=>(y(),E(_e,{"as-child":``},{default:S(()=>[t(a(U),m(n,{ref:a(i),type:e.as===`button`?`button`:void 0,onClick:a(r).onClose}),{default:S(()=>[j(o.$slots,`default`)]),_:3},16,[`type`,`onClick`])]),_:3}))}}),Ee=v({__name:`ToastDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let r=t;G();let i=xe(null);return(t,o)=>t.$slots.default||!a(i)?.toast.value||a(i).toast.value.description?(y(),E(a(U),e(m({key:0},r)),{default:S(()=>[j(t.$slots,`default`,{},()=>[n(C(a(i)?.toast.value?.description),1)])]),_:3},16)):M(`v-if`,!0)}}),De=v({__name:`ToastRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!0},forceMount:{type:Boolean,required:!1},type:{type:String,required:!1,default:`foreground`},open:{type:Boolean,required:!1,default:void 0},duration:{type:Number,required:!1},toast:{type:Object,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`li`}},emits:[`escapeKeyDown`,`pause`,`resume`,`swipeStart`,`swipeMove`,`swipeCancel`,`swipeEnd`,`update:open`],setup(e,{emit:n}){let i=e,o=n,{forwardRef:s}=G(),c=H(i,`open`,o,{defaultValue:i.defaultOpen,passive:i.open===void 0}),l=le(),u=g(()=>i.toast?i.toast.open:c.value),d=g(()=>i.toast?.type??i.type),f=g(()=>i.toast?.status===`loading`?1/0:i.toast?.duration??i.duration);function p(){i.toast?(l.toastStore.close(i.toast.id),o(`update:open`,!1)):c.value=!1}let h=D(!1);return r([()=>i.toast,h],([e,t])=>{e&&!e.open&&!t&&l.toastStore.remove(e.id)},{immediate:!0}),(n,r)=>(y(),E(a(K),{present:e.forceMount||u.value},{default:S(()=>[t(Ce,m({ref:a(s),open:u.value,type:d.value,as:e.as,"as-child":e.asChild,duration:f.value,toast:e.toast},n.$attrs,{onVnodeMounted:r[0]||=e=>h.value=!0,onVnodeUnmounted:r[1]||=e=>h.value=!1,onClose:p,onPause:r[2]||=e=>o(`pause`),onResume:r[3]||=e=>o(`resume`),onEscapeKeyDown:r[4]||=e=>o(`escapeKeyDown`,e),onSwipeStart:r[5]||=e=>{o(`swipeStart`,e),e.defaultPrevented||e.currentTarget.setAttribute(`data-swipe`,`start`)},onSwipeMove:r[6]||=e=>{if(o(`swipeMove`,e),!e.defaultPrevented){let{x:t,y:n}=e.detail.delta,r=e.currentTarget;r.setAttribute(`data-swipe`,`move`),r.style.setProperty(`--reka-toast-swipe-move-x`,`${t}px`),r.style.setProperty(`--reka-toast-swipe-move-y`,`${n}px`)}},onSwipeCancel:r[7]||=e=>{if(o(`swipeCancel`,e),!e.defaultPrevented){let t=e.currentTarget;t.setAttribute(`data-swipe`,`cancel`),t.style.removeProperty(`--reka-toast-swipe-move-x`),t.style.removeProperty(`--reka-toast-swipe-move-y`),t.style.removeProperty(`--reka-toast-swipe-end-x`),t.style.removeProperty(`--reka-toast-swipe-end-y`)}},onSwipeEnd:r[8]||=e=>{if(o(`swipeEnd`,e),!e.defaultPrevented){let{x:t,y:n}=e.detail.delta,r=e.currentTarget;r.setAttribute(`data-swipe`,`end`),r.style.removeProperty(`--reka-toast-swipe-move-x`),r.style.removeProperty(`--reka-toast-swipe-move-y`),r.style.setProperty(`--reka-toast-swipe-end-x`,`${t}px`),r.style.setProperty(`--reka-toast-swipe-end-y`,`${n}px`),p()}}}),{default:S(({remaining:e,duration:t})=>[j(n.$slots,`default`,{remaining:e,duration:t,open:u.value})]),_:3},16,[`open`,`type`,`as`,`as-child`,`duration`,`toast`])]),_:3},8,[`present`]))}}),Oe=v({__name:`ToastTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let r=t;G();let i=xe(null);return(t,o)=>t.$slots.default||!a(i)?.toast.value||a(i).toast.value.title?(y(),E(a(U),e(m({key:0},r)),{default:S(()=>[j(t.$slots,`default`,{},()=>[n(C(a(i)?.toast.value?.title),1)])]),_:3},16)):M(`v-if`,!0)}}),ke={slots:{root:`gap-2`,base:`relative overflow-hidden rounded-full bg-accented`,indicator:`rounded-full size-full transition-transform duration-200 ease-out motion-reduce:transition-none motion-reduce:data-[state=indeterminate]:animate-pulse`,status:`flex text-dimmed duration-200 ease-out motion-reduce:transition-none`,steps:`grid items-end`,step:`truncate text-end row-start-1 col-start-1 transition-opacity ease-out`},variants:{animation:{carousel:``,"carousel-inverse":``,swing:``,elastic:``},color:{primary:{indicator:`bg-primary`,steps:`text-primary`},secondary:{indicator:`bg-secondary`,steps:`text-secondary`},success:{indicator:`bg-success`,steps:`text-success`},info:{indicator:`bg-info`,steps:`text-info`},warning:{indicator:`bg-warning`,steps:`text-warning`},error:{indicator:`bg-error`,steps:`text-error`},neutral:{indicator:`bg-inverted`,steps:`text-highlighted`}},size:{"2xs":{status:`text-xs`,steps:`text-xs`},xs:{status:`text-xs`,steps:`text-xs`},sm:{status:`text-sm`,steps:`text-sm`},md:{status:`text-sm`,steps:`text-sm`},lg:{status:`text-sm`,steps:`text-sm`},xl:{status:`text-base`,steps:`text-base`},"2xl":{status:`text-base`,steps:`text-base`}},step:{active:{step:`opacity-100`},first:{step:`opacity-100 text-muted`},other:{step:`opacity-0`},last:{step:``}},orientation:{horizontal:{root:`w-full flex flex-col`,base:`w-full`,status:`flex-row items-center justify-end w-(--percent) min-w-fit transition-[width]`},vertical:{root:`h-full flex flex-row-reverse`,base:`h-full`,status:`flex-col justify-end h-(--percent) min-h-fit transition-[height]`}},inverted:{true:{status:`self-end`}}},compoundVariants:[{inverted:!0,orientation:`horizontal`,class:{step:`text-start`,status:`flex-row-reverse`}},{inverted:!0,orientation:`vertical`,class:{steps:`items-start`,status:`flex-col-reverse`}},{orientation:`horizontal`,size:`2xs`,class:`h-px`},{orientation:`horizontal`,size:`xs`,class:`h-0.5`},{orientation:`horizontal`,size:`sm`,class:`h-1`},{orientation:`horizontal`,size:`md`,class:`h-2`},{orientation:`horizontal`,size:`lg`,class:`h-3`},{orientation:`horizontal`,size:`xl`,class:`h-4`},{orientation:`horizontal`,size:`2xl`,class:`h-5`},{orientation:`vertical`,size:`2xs`,class:`w-px`},{orientation:`vertical`,size:`xs`,class:`w-0.5`},{orientation:`vertical`,size:`sm`,class:`w-1`},{orientation:`vertical`,size:`md`,class:`w-2`},{orientation:`vertical`,size:`lg`,class:`w-3`},{orientation:`vertical`,size:`xl`,class:`w-4`},{orientation:`vertical`,size:`2xl`,class:`w-5`},{orientation:`horizontal`,animation:`carousel`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[carousel_2s_linear_infinite] motion-safe:data-[state=indeterminate]:rtl:animate-[carousel-rtl_2s_linear_infinite]`}},{orientation:`vertical`,animation:`carousel`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[carousel-vertical_2s_linear_infinite]`}},{orientation:`horizontal`,animation:`carousel-inverse`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[carousel-inverse_2s_linear_infinite] motion-safe:data-[state=indeterminate]:rtl:animate-[carousel-inverse-rtl_2s_linear_infinite]`}},{orientation:`vertical`,animation:`carousel-inverse`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[carousel-inverse-vertical_2s_linear_infinite]`}},{orientation:`horizontal`,animation:`swing`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[swing_2s_var(--ease-in-out)_infinite]`}},{orientation:`vertical`,animation:`swing`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[swing-vertical_2s_var(--ease-in-out)_infinite]`}},{orientation:`horizontal`,animation:`elastic`,class:{indicator:`relative motion-safe:data-[state=indeterminate]:animate-[elastic_2s_var(--ease-in-out)_infinite]`}},{orientation:`vertical`,animation:`elastic`,class:{indicator:`relative motion-safe:data-[state=indeterminate]:animate-[elastic-vertical_2s_var(--ease-in-out)_infinite]`}}],defaultVariants:{animation:`carousel`,color:`primary`,size:`md`}},Ae={__name:`UProgress`,props:{as:{type:null,required:!1},max:{type:[Number,Array],required:!1},status:{type:Boolean,required:!1},inverted:{type:Boolean,required:!1,default:!1},size:{type:null,required:!1},color:{type:null,required:!1},orientation:{type:null,required:!1,default:`horizontal`},animation:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},getValueLabel:{type:Function,required:!1},getValueText:{type:Function,required:!1},modelValue:{type:[Number,null],required:!1,default:null}},emits:[`update:modelValue`,`update:max`],setup(e,{emit:r}){let o=e,s=r,l=i(),f=I(`progress`,o),{dir:h}=Z(),_=P(),v=W(V(f,`getValueLabel`,`getValueText`,`modelValue`),s),x=g(()=>v.value.modelValue===null),w=g(()=>Array.isArray(f.max)),T=g(()=>{if(!x.value&&f.max)return Array.isArray(f.max)?f.max.length-1:Number(f.max)}),D=g(()=>{if(!x.value)switch(!0){case v.value.modelValue<0:return 0;case v.value.modelValue>(T.value??100):return 100;default:return Math.round(v.value.modelValue/(T.value??100)*100)}}),O=g(()=>{if(D.value!==void 0)return f.orientation===`vertical`?{transform:`translateY(${f.inverted?``:`-`}${100-D.value}%)`}:h.value===`rtl`?{transform:`translateX(${f.inverted?`-`:``}${100-D.value}%)`}:{transform:`translateX(${f.inverted?``:`-`}${100-D.value}%)`}}),k=g(()=>({"--percent":`${Math.max(D.value??0,0)}%`}));function A(e){return e===Number(f.modelValue)}function N(e){return e===0}function F(e){return e===T.value}function ee(e){return e=Number(e),A(e)&&!N(e)?`active`:N(e)&&A(e)?`first`:F(e)&&A(e)?`last`:`other`}let R=g(()=>L({extend:ke,..._.ui?.progress||{}})({animation:f.animation,size:f.size,color:f.color,orientation:f.orientation,inverted:f.inverted})),z=g(()=>Object.keys({...ke.variants?.color,..._.ui?.progress?.variants?.color})),B=g(()=>f.color&&!z.value.includes(f.color)?f.color:void 0);return(e,r)=>(y(),E(a(U),{as:a(f).as,"data-orientation":a(f).orientation,"data-slot":`root`,class:c(R.value.root({class:[a(f).ui?.root,a(f).class]}))},{default:S(()=>[!x.value&&(a(f).status||l.status)?(y(),u(`div`,{key:0,"data-slot":`status`,class:c(R.value.status({class:a(f).ui?.status})),style:p(k.value)},[j(e.$slots,`status`,{percent:D.value},()=>[n(C(D.value)+`% `,1)])],6)):M(``,!0),t(a(he),m(a(v),{max:T.value,"data-slot":`base`,class:R.value.base({class:a(f).ui?.base}),style:{transform:`translateZ(0)`}}),{default:S(()=>[t(a(ge),{"data-slot":`indicator`,class:c(R.value.indicator({class:a(f).ui?.indicator})),style:p([O.value,B.value?{backgroundColor:B.value}:void 0])},null,8,[`class`,`style`])]),_:1},16,[`max`,`class`]),w.value?(y(),u(`div`,{key:1,"data-slot":`steps`,class:c(R.value.steps({class:a(f).ui?.steps})),style:p(B.value?{color:B.value}:void 0)},[(y(!0),u(b,null,d(a(f).max,(t,r)=>(y(),u(`div`,{key:r,"data-slot":`step`,class:c(R.value.step({class:a(f).ui?.step,step:ee(r)}))},[j(e.$slots,`step-${r}`,{step:t},()=>[n(C(t),1)])],2))),128))],6)):M(``,!0)]),_:3},8,[`as`,`data-orientation`,`class`]))}},je={slots:{root:`relative group overflow-hidden bg-default shadow-lg rounded-lg ring ring-default p-4 flex gap-2.5`,wrapper:`w-0 flex-1 flex flex-col`,title:`text-sm font-medium text-highlighted`,description:`text-sm text-muted`,icon:`shrink-0 size-5`,avatar:`shrink-0`,avatarSize:`2xl`,actions:`flex gap-1.5 shrink-0`,progress:`absolute inset-x-0 bottom-0`,close:`p-0`},variants:{color:{primary:{root:`outline-primary/25 focus-visible:outline-3 focus-visible:ring-primary`,icon:`text-primary`},secondary:{root:`outline-secondary/25 focus-visible:outline-3 focus-visible:ring-secondary`,icon:`text-secondary`},success:{root:`outline-success/25 focus-visible:outline-3 focus-visible:ring-success`,icon:`text-success`},info:{root:`outline-info/25 focus-visible:outline-3 focus-visible:ring-info`,icon:`text-info`},warning:{root:`outline-warning/25 focus-visible:outline-3 focus-visible:ring-warning`,icon:`text-warning`},error:{root:`outline-error/25 focus-visible:outline-3 focus-visible:ring-error`,icon:`text-error`},neutral:{root:`outline-inverted/25 focus-visible:outline-3 focus-visible:ring-inverted`,icon:`text-highlighted`}},orientation:{horizontal:{root:`items-center`,actions:`items-center`},vertical:{root:`items-start`,actions:`items-start mt-2.5`}},title:{true:{description:`mt-1`}}},defaultVariants:{color:`primary`}},Me={__name:`UToast`,props:{as:{type:null,required:!1},title:{type:[String,Object,Function],required:!1},description:{type:[String,Object,Function],required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},color:{type:null,required:!1},orientation:{type:null,required:!1,default:`vertical`},close:{type:[Boolean,Object],required:!1,default:!0},closeIcon:{type:null,required:!1},actions:{type:Array,required:!1},duration:{type:Number,required:!1},progress:{type:[Boolean,Object],required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},type:{type:String,required:!1}},emits:[`escapeKeyDown`,`pause`,`resume`,`swipeStart`,`swipeMove`,`swipeCancel`,`swipeEnd`,`update:open`],setup(e,{expose:r,emit:s}){let p=e,h=s,_=i(),v=I(`toast`,p),{t:x}=Z(),w=P(),T=W(V(v,`as`,`defaultOpen`,`open`,`duration`,`type`),h),O=g(()=>L({extend:je,...w.ui?.toast||{}})({color:v.color,orientation:v.orientation,title:!!v.title||!!_.title})),A=o(`rootRef`),F=D(0);return f(()=>{A.value?.$el?.getBoundingClientRect&&(F.value=A.value.$el.getBoundingClientRect().height)}),r({height:F}),(e,r)=>(y(),E(a(De),m({ref_key:`rootRef`,ref:A},a(T),{"data-orientation":a(v).orientation,"data-slot":`root`,class:O.value.root({class:[a(v).ui?.root,a(v).class]}),style:{"--height":F.value}}),{default:S(({remaining:i,duration:o,open:s})=>[j(e.$slots,`leading`,{ui:O.value},()=>[a(v).avatar?(y(),E(Y,m({key:0,size:a(v).ui?.avatarSize||O.value.avatarSize()},a(v).avatar,{"data-slot":`avatar`,class:O.value.avatar({class:a(v).ui?.avatar})}),null,16,[`size`,`class`])):a(v).icon?(y(),E(J,{key:1,name:a(v).icon,"data-slot":`icon`,class:c(O.value.icon({class:a(v).ui?.icon}))},null,8,[`name`,`class`])):M(``,!0)]),l(`div`,{"data-slot":`wrapper`,class:c(O.value.wrapper({class:a(v).ui?.wrapper}))},[a(v).title||_.title?(y(),E(a(Oe),{key:0,"data-slot":`title`,class:c(O.value.title({class:a(v).ui?.title}))},{default:S(()=>[j(e.$slots,`title`,{},()=>[typeof a(v).title==`function`?(y(),E(k(a(v).title()),{key:0})):typeof a(v).title==`object`?(y(),E(k(a(v).title),{key:1})):(y(),u(b,{key:2},[n(C(a(v).title),1)],64))])]),_:3},8,[`class`])):M(``,!0),a(v).description||_.description?(y(),E(a(Ee),{key:1,"data-slot":`description`,class:c(O.value.description({class:a(v).ui?.description}))},{default:S(()=>[j(e.$slots,`description`,{},()=>[typeof a(v).description==`function`?(y(),E(k(a(v).description()),{key:0})):typeof a(v).description==`object`?(y(),E(k(a(v).description),{key:1})):(y(),u(b,{key:2},[n(C(a(v).description),1)],64))])]),_:3},8,[`class`])):M(``,!0),a(v).orientation===`vertical`&&(a(v).actions?.length||_.actions)?(y(),u(`div`,{key:2,"data-slot":`actions`,class:c(O.value.actions({class:a(v).ui?.actions}))},[j(e.$slots,`actions`,{},()=>[(y(!0),u(b,null,d(a(v).actions,({closeOnClick:e,...n},i)=>(y(),E(a(we),{key:i,"alt-text":n.label||`Action`,"close-on-click":e,"as-child":``,onClick:r[0]||=N(()=>{},[`stop`])},{default:S(()=>[t(X,m({size:`xs`,color:a(v).color},{ref_for:!0},n),null,16,[`color`])]),_:2},1032,[`alt-text`,`close-on-click`]))),128))])],2)):M(``,!0)],2),a(v).orientation===`horizontal`&&(a(v).actions?.length||_.actions)||a(v).close?(y(),u(`div`,{key:0,"data-slot":`actions`,class:c(O.value.actions({class:a(v).ui?.actions,orientation:`horizontal`}))},[a(v).orientation===`horizontal`&&(a(v).actions?.length||_.actions)?j(e.$slots,`actions`,{},()=>[(y(!0),u(b,null,d(a(v).actions,({closeOnClick:e,...n},i)=>(y(),E(a(we),{key:i,"alt-text":n.label||`Action`,"close-on-click":e,"as-child":``,onClick:r[1]||=N(()=>{},[`stop`])},{default:S(()=>[t(X,m({size:`xs`,color:a(v).color},{ref_for:!0},n),null,16,[`color`])]),_:2},1032,[`alt-text`,`close-on-click`]))),128))],void 0,0):M(``,!0),a(v).close||_.close?(y(),E(a(Te),{key:1,"as-child":``},{default:S(()=>[j(e.$slots,`close`,{ui:O.value},()=>[a(v).close?(y(),E(X,m({key:0,icon:a(v).closeIcon||a(w).ui.icons.close,color:`neutral`,variant:`link`,"aria-label":a(x)(`toast.close`)},typeof a(v).close==`object`?a(v).close:{},{"data-slot":`close`,class:O.value.close({class:a(v).ui?.close}),onClick:r[2]||=N(()=>{},[`stop`])}),null,16,[`icon`,`aria-label`,`class`])):M(``,!0)])]),_:3})):M(``,!0)],2)):M(``,!0),a(v).progress&&s&&i>0&&o?(y(),E(Ae,m({key:1,"model-value":i/o*100,color:a(v).color},typeof a(v).progress==`object`?a(v).progress:{},{size:`sm`,"data-slot":`progress`,class:O.value.progress({class:a(v).ui?.progress})}),null,16,[`model-value`,`color`,`class`])):M(``,!0)]),_:3},16,[`data-orientation`,`class`,`style`]))}};export{Me as default};
13
+ `),(y(!0),u(b,null,d(K.value,(e,t)=>(y(),u(b,{key:t},[n(C(e),1)],64))),128))]),_:1},8,[`aria-live`])):M(`v-if`,!0),a(x).viewport.value||a(W)?(y(),E(T,{key:1,to:a(x).viewport.value??`body`,disabled:!!a(W)},[t(a(v),null,{default:S(()=>[t(a(U),m({ref:a(l),tabindex:`0`},r.$attrs,{as:e.as,"as-child":e.asChild,"data-state":e.open?`open`:`closed`,"data-swipe-direction":a(x).swipeDirection.value,"data-status":e.toast?.status,"data-expanded":a(x).expanded.value?``:void 0,"data-limited":J.value.limited?``:void 0,inert:J.value.limited||void 0,style:{...a(x).disableSwipe.value?void 0:{userSelect:`none`,touchAction:`none`},"--reka-toast-index":J.value.index,"--reka-toast-offset-y":`${J.value.offsetY}px`,"--reka-toast-height":q.height?`${q.height}px`:void 0},onPointerdown:i[0]||=N(e=>{a(x).disableSwipe.value||(w.value={x:e.clientX,y:e.clientY})},[`left`]),onPointermove:i[1]||=e=>{if(a(x).disableSwipe.value||!w.value)return;let t=e.clientX-w.value.x,n=e.clientY-w.value.y,r=!!k.value,i=[`left`,`right`].includes(a(x).swipeDirection.value),o=[`left`,`up`].includes(a(x).swipeDirection.value)?Math.min:Math.max,s=i?o(0,t):0,l=i?0:o(0,n),u=e.pointerType===`touch`?10:2,d={x:s,y:l},f={originalEvent:e,delta:d};r?(k.value=d,a(Q)(a(`toast.swipeMove`),e=>c(`swipeMove`,e),f)):a(le)(d,a(x).swipeDirection.value,u)?(k.value=d,a(Q)(a(`toast.swipeStart`),e=>c(`swipeStart`,e),f),e.target.setPointerCapture(e.pointerId)):(Math.abs(t)>u||Math.abs(n)>u)&&(w.value=null)},onPointerup:i[2]||=e=>{if(a(x).disableSwipe.value)return;let t=k.value,n=e.target;if(n.hasPointerCapture(e.pointerId)&&n.releasePointerCapture(e.pointerId),k.value=null,w.value=null,t){let n=e.currentTarget,r={originalEvent:e,delta:t};a(le)(t,a(x).swipeDirection.value,a(x).swipeThreshold.value)?a(Q)(a(`toast.swipeEnd`),e=>c(`swipeEnd`,e),r):a(Q)(a(`toast.swipeCancel`),e=>c(`swipeCancel`,e),r),n?.addEventListener(`click`,e=>e.preventDefault(),{once:!0})}}}),{default:S(()=>[j(r.$slots,`default`,{remaining:z.value,duration:P.value})]),_:3},16,[`as`,`as-child`,`data-state`,`data-swipe-direction`,`data-status`,`data-expanded`,`data-limited`,`inert`,`style`])]),_:3})],8,[`to`,`disabled`])):M(`v-if`,!0)],64))}}),we=v({__name:`ToastAction`,props:{altText:{type:String,required:!1},closeOnClick:{type:Boolean,required:!1,default:!0},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let r=e,o=xe(),{forwardRef:s}=G(),c=i(),l=g(()=>o.toast.value?.actionProps),u=g(()=>!!c.default||!o.toast.value||!!l.value),d=g(()=>r.altText??l.value?.altText);if(u.value&&!d.value)throw Error("Missing prop `altText` expected on `ToastAction`");function f(e){l.value?.onClick?.(e),(l.value?.closeOnClick??r.closeOnClick)&&o.onClose(e)}return(r,i)=>u.value&&d.value?(y(),E(_e,{key:0,"alt-text":d.value,"as-child":``},{default:S(()=>[t(a(U),{ref:a(s),as:e.as,"as-child":e.asChild,type:e.as===`button`?`button`:void 0,onClick:f},{default:S(()=>[j(r.$slots,`default`,{},()=>[n(C(l.value?.label),1)])]),_:3},8,[`as`,`as-child`,`type`])]),_:3},8,[`alt-text`])):M(`v-if`,!0)}}),Te=v({__name:`ToastClose`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`button`}},setup(e){let n=e,r=xe(),{forwardRef:i}=G();return(o,s)=>(y(),E(_e,{"as-child":``},{default:S(()=>[t(a(U),m(n,{ref:a(i),type:e.as===`button`?`button`:void 0,onClick:a(r).onClose}),{default:S(()=>[j(o.$slots,`default`)]),_:3},16,[`type`,`onClick`])]),_:3}))}}),Ee=v({__name:`ToastDescription`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let r=t;G();let i=xe(null);return(t,o)=>t.$slots.default||!a(i)?.toast.value||a(i).toast.value.description?(y(),E(a(U),e(m({key:0},r)),{default:S(()=>[j(t.$slots,`default`,{},()=>[n(C(a(i)?.toast.value?.description),1)])]),_:3},16)):M(`v-if`,!0)}}),De=v({__name:`ToastRoot`,props:{defaultOpen:{type:Boolean,required:!1,default:!0},forceMount:{type:Boolean,required:!1},type:{type:String,required:!1,default:`foreground`},open:{type:Boolean,required:!1,default:void 0},duration:{type:Number,required:!1},toast:{type:Object,required:!1},asChild:{type:Boolean,required:!1},as:{type:null,required:!1,default:`li`}},emits:[`escapeKeyDown`,`pause`,`resume`,`swipeStart`,`swipeMove`,`swipeCancel`,`swipeEnd`,`update:open`],setup(e,{emit:n}){let i=e,o=n,{forwardRef:s}=G(),c=H(i,`open`,o,{defaultValue:i.defaultOpen,passive:i.open===void 0}),l=oe(),u=g(()=>i.toast?i.toast.open:c.value),d=g(()=>i.toast?.type??i.type),f=g(()=>i.toast?.status===`loading`?1/0:i.toast?.duration??i.duration);function p(){i.toast?(l.toastStore.close(i.toast.id),o(`update:open`,!1)):c.value=!1}let h=D(!1);return r([()=>i.toast,h],([e,t])=>{e&&!e.open&&!t&&l.toastStore.remove(e.id)},{immediate:!0}),(n,r)=>(y(),E(a(K),{present:e.forceMount||u.value},{default:S(()=>[t(Ce,m({ref:a(s),open:u.value,type:d.value,as:e.as,"as-child":e.asChild,duration:f.value,toast:e.toast},n.$attrs,{onVnodeMounted:r[0]||=e=>h.value=!0,onVnodeUnmounted:r[1]||=e=>h.value=!1,onClose:p,onPause:r[2]||=e=>o(`pause`),onResume:r[3]||=e=>o(`resume`),onEscapeKeyDown:r[4]||=e=>o(`escapeKeyDown`,e),onSwipeStart:r[5]||=e=>{o(`swipeStart`,e),e.defaultPrevented||e.currentTarget.setAttribute(`data-swipe`,`start`)},onSwipeMove:r[6]||=e=>{if(o(`swipeMove`,e),!e.defaultPrevented){let{x:t,y:n}=e.detail.delta,r=e.currentTarget;r.setAttribute(`data-swipe`,`move`),r.style.setProperty(`--reka-toast-swipe-move-x`,`${t}px`),r.style.setProperty(`--reka-toast-swipe-move-y`,`${n}px`)}},onSwipeCancel:r[7]||=e=>{if(o(`swipeCancel`,e),!e.defaultPrevented){let t=e.currentTarget;t.setAttribute(`data-swipe`,`cancel`),t.style.removeProperty(`--reka-toast-swipe-move-x`),t.style.removeProperty(`--reka-toast-swipe-move-y`),t.style.removeProperty(`--reka-toast-swipe-end-x`),t.style.removeProperty(`--reka-toast-swipe-end-y`)}},onSwipeEnd:r[8]||=e=>{if(o(`swipeEnd`,e),!e.defaultPrevented){let{x:t,y:n}=e.detail.delta,r=e.currentTarget;r.setAttribute(`data-swipe`,`end`),r.style.removeProperty(`--reka-toast-swipe-move-x`),r.style.removeProperty(`--reka-toast-swipe-move-y`),r.style.setProperty(`--reka-toast-swipe-end-x`,`${t}px`),r.style.setProperty(`--reka-toast-swipe-end-y`,`${n}px`),p()}}}),{default:S(({remaining:e,duration:t})=>[j(n.$slots,`default`,{remaining:e,duration:t,open:u.value})]),_:3},16,[`open`,`type`,`as`,`as-child`,`duration`,`toast`])]),_:3},8,[`present`]))}}),Oe=v({__name:`ToastTitle`,props:{asChild:{type:Boolean,required:!1},as:{type:null,required:!1}},setup(t){let r=t;G();let i=xe(null);return(t,o)=>t.$slots.default||!a(i)?.toast.value||a(i).toast.value.title?(y(),E(a(U),e(m({key:0},r)),{default:S(()=>[j(t.$slots,`default`,{},()=>[n(C(a(i)?.toast.value?.title),1)])]),_:3},16)):M(`v-if`,!0)}}),ke={slots:{root:`gap-2`,base:`relative overflow-hidden rounded-full bg-accented`,indicator:`rounded-full size-full transition-transform duration-200 ease-out motion-reduce:transition-none motion-reduce:data-[state=indeterminate]:animate-pulse`,status:`flex text-dimmed duration-200 ease-out motion-reduce:transition-none`,steps:`grid items-end`,step:`truncate text-end row-start-1 col-start-1 transition-opacity ease-out`},variants:{animation:{carousel:``,"carousel-inverse":``,swing:``,elastic:``},color:{primary:{indicator:`bg-primary`,steps:`text-primary`},secondary:{indicator:`bg-secondary`,steps:`text-secondary`},success:{indicator:`bg-success`,steps:`text-success`},info:{indicator:`bg-info`,steps:`text-info`},warning:{indicator:`bg-warning`,steps:`text-warning`},error:{indicator:`bg-error`,steps:`text-error`},neutral:{indicator:`bg-inverted`,steps:`text-highlighted`}},size:{"2xs":{status:`text-xs`,steps:`text-xs`},xs:{status:`text-xs`,steps:`text-xs`},sm:{status:`text-sm`,steps:`text-sm`},md:{status:`text-sm`,steps:`text-sm`},lg:{status:`text-sm`,steps:`text-sm`},xl:{status:`text-base`,steps:`text-base`},"2xl":{status:`text-base`,steps:`text-base`}},step:{active:{step:`opacity-100`},first:{step:`opacity-100 text-muted`},other:{step:`opacity-0`},last:{step:``}},orientation:{horizontal:{root:`w-full flex flex-col`,base:`w-full`,status:`flex-row items-center justify-end w-(--percent) min-w-fit transition-[width]`},vertical:{root:`h-full flex flex-row-reverse`,base:`h-full`,status:`flex-col justify-end h-(--percent) min-h-fit transition-[height]`}},inverted:{true:{status:`self-end`}}},compoundVariants:[{inverted:!0,orientation:`horizontal`,class:{step:`text-start`,status:`flex-row-reverse`}},{inverted:!0,orientation:`vertical`,class:{steps:`items-start`,status:`flex-col-reverse`}},{orientation:`horizontal`,size:`2xs`,class:`h-px`},{orientation:`horizontal`,size:`xs`,class:`h-0.5`},{orientation:`horizontal`,size:`sm`,class:`h-1`},{orientation:`horizontal`,size:`md`,class:`h-2`},{orientation:`horizontal`,size:`lg`,class:`h-3`},{orientation:`horizontal`,size:`xl`,class:`h-4`},{orientation:`horizontal`,size:`2xl`,class:`h-5`},{orientation:`vertical`,size:`2xs`,class:`w-px`},{orientation:`vertical`,size:`xs`,class:`w-0.5`},{orientation:`vertical`,size:`sm`,class:`w-1`},{orientation:`vertical`,size:`md`,class:`w-2`},{orientation:`vertical`,size:`lg`,class:`w-3`},{orientation:`vertical`,size:`xl`,class:`w-4`},{orientation:`vertical`,size:`2xl`,class:`w-5`},{orientation:`horizontal`,animation:`carousel`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[carousel_2s_linear_infinite] motion-safe:data-[state=indeterminate]:rtl:animate-[carousel-rtl_2s_linear_infinite]`}},{orientation:`vertical`,animation:`carousel`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[carousel-vertical_2s_linear_infinite]`}},{orientation:`horizontal`,animation:`carousel-inverse`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[carousel-inverse_2s_linear_infinite] motion-safe:data-[state=indeterminate]:rtl:animate-[carousel-inverse-rtl_2s_linear_infinite]`}},{orientation:`vertical`,animation:`carousel-inverse`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[carousel-inverse-vertical_2s_linear_infinite]`}},{orientation:`horizontal`,animation:`swing`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[swing_2s_var(--ease-in-out)_infinite]`}},{orientation:`vertical`,animation:`swing`,class:{indicator:`motion-safe:data-[state=indeterminate]:animate-[swing-vertical_2s_var(--ease-in-out)_infinite]`}},{orientation:`horizontal`,animation:`elastic`,class:{indicator:`relative motion-safe:data-[state=indeterminate]:animate-[elastic_2s_var(--ease-in-out)_infinite]`}},{orientation:`vertical`,animation:`elastic`,class:{indicator:`relative motion-safe:data-[state=indeterminate]:animate-[elastic-vertical_2s_var(--ease-in-out)_infinite]`}}],defaultVariants:{animation:`carousel`,color:`primary`,size:`md`}},Ae={__name:`UProgress`,props:{as:{type:null,required:!1},max:{type:[Number,Array],required:!1},status:{type:Boolean,required:!1},inverted:{type:Boolean,required:!1,default:!1},size:{type:null,required:!1},color:{type:null,required:!1},orientation:{type:null,required:!1,default:`horizontal`},animation:{type:null,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1},getValueLabel:{type:Function,required:!1},getValueText:{type:Function,required:!1},modelValue:{type:[Number,null],required:!1,default:null}},emits:[`update:modelValue`,`update:max`],setup(e,{emit:r}){let o=e,s=r,l=i(),f=I(`progress`,o),{dir:h}=Z(),_=P(),v=W(V(f,`getValueLabel`,`getValueText`,`modelValue`),s),x=g(()=>v.value.modelValue===null),w=g(()=>Array.isArray(f.max)),T=g(()=>{if(!x.value&&f.max)return Array.isArray(f.max)?f.max.length-1:Number(f.max)}),D=g(()=>{if(!x.value)switch(!0){case v.value.modelValue<0:return 0;case v.value.modelValue>(T.value??100):return 100;default:return Math.round(v.value.modelValue/(T.value??100)*100)}}),O=g(()=>{if(D.value!==void 0)return f.orientation===`vertical`?{transform:`translateY(${f.inverted?``:`-`}${100-D.value}%)`}:h.value===`rtl`?{transform:`translateX(${f.inverted?`-`:``}${100-D.value}%)`}:{transform:`translateX(${f.inverted?``:`-`}${100-D.value}%)`}}),k=g(()=>({"--percent":`${Math.max(D.value??0,0)}%`}));function A(e){return e===Number(f.modelValue)}function N(e){return e===0}function F(e){return e===T.value}function ee(e){return e=Number(e),A(e)&&!N(e)?`active`:N(e)&&A(e)?`first`:F(e)&&A(e)?`last`:`other`}let R=g(()=>L({extend:ke,..._.ui?.progress||{}})({animation:f.animation,size:f.size,color:f.color,orientation:f.orientation,inverted:f.inverted})),z=g(()=>Object.keys({...ke.variants?.color,..._.ui?.progress?.variants?.color})),B=g(()=>f.color&&!z.value.includes(f.color)?f.color:void 0);return(e,r)=>(y(),E(a(U),{as:a(f).as,"data-orientation":a(f).orientation,"data-slot":`root`,class:c(R.value.root({class:[a(f).ui?.root,a(f).class]}))},{default:S(()=>[!x.value&&(a(f).status||l.status)?(y(),u(`div`,{key:0,"data-slot":`status`,class:c(R.value.status({class:a(f).ui?.status})),style:p(k.value)},[j(e.$slots,`status`,{percent:D.value},()=>[n(C(D.value)+`% `,1)])],6)):M(``,!0),t(a(he),m(a(v),{max:T.value,"data-slot":`base`,class:R.value.base({class:a(f).ui?.base}),style:{transform:`translateZ(0)`}}),{default:S(()=>[t(a(ge),{"data-slot":`indicator`,class:c(R.value.indicator({class:a(f).ui?.indicator})),style:p([O.value,B.value?{backgroundColor:B.value}:void 0])},null,8,[`class`,`style`])]),_:1},16,[`max`,`class`]),w.value?(y(),u(`div`,{key:1,"data-slot":`steps`,class:c(R.value.steps({class:a(f).ui?.steps})),style:p(B.value?{color:B.value}:void 0)},[(y(!0),u(b,null,d(a(f).max,(t,r)=>(y(),u(`div`,{key:r,"data-slot":`step`,class:c(R.value.step({class:a(f).ui?.step,step:ee(r)}))},[j(e.$slots,`step-${r}`,{step:t},()=>[n(C(t),1)])],2))),128))],6)):M(``,!0)]),_:3},8,[`as`,`data-orientation`,`class`]))}},je={slots:{root:`relative group overflow-hidden bg-default shadow-lg rounded-lg ring ring-default p-4 flex gap-2.5`,wrapper:`w-0 flex-1 flex flex-col`,title:`text-sm font-medium text-highlighted`,description:`text-sm text-muted`,icon:`shrink-0 size-5`,avatar:`shrink-0`,avatarSize:`2xl`,actions:`flex gap-1.5 shrink-0`,progress:`absolute inset-x-0 bottom-0`,close:`p-0`},variants:{color:{primary:{root:`outline-primary/25 focus-visible:outline-3 focus-visible:ring-primary`,icon:`text-primary`},secondary:{root:`outline-secondary/25 focus-visible:outline-3 focus-visible:ring-secondary`,icon:`text-secondary`},success:{root:`outline-success/25 focus-visible:outline-3 focus-visible:ring-success`,icon:`text-success`},info:{root:`outline-info/25 focus-visible:outline-3 focus-visible:ring-info`,icon:`text-info`},warning:{root:`outline-warning/25 focus-visible:outline-3 focus-visible:ring-warning`,icon:`text-warning`},error:{root:`outline-error/25 focus-visible:outline-3 focus-visible:ring-error`,icon:`text-error`},neutral:{root:`outline-inverted/25 focus-visible:outline-3 focus-visible:ring-inverted`,icon:`text-highlighted`}},orientation:{horizontal:{root:`items-center`,actions:`items-center`},vertical:{root:`items-start`,actions:`items-start mt-2.5`}},title:{true:{description:`mt-1`}}},defaultVariants:{color:`primary`}},Me={__name:`UToast`,props:{as:{type:null,required:!1},title:{type:[String,Object,Function],required:!1},description:{type:[String,Object,Function],required:!1},icon:{type:null,required:!1},avatar:{type:Object,required:!1},color:{type:null,required:!1},orientation:{type:null,required:!1,default:`vertical`},close:{type:[Boolean,Object],required:!1,default:!0},closeIcon:{type:null,required:!1},actions:{type:Array,required:!1},duration:{type:Number,required:!1},progress:{type:[Boolean,Object],required:!1,default:!0},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultOpen:{type:Boolean,required:!1},open:{type:Boolean,required:!1},type:{type:String,required:!1}},emits:[`escapeKeyDown`,`pause`,`resume`,`swipeStart`,`swipeMove`,`swipeCancel`,`swipeEnd`,`update:open`],setup(e,{expose:r,emit:s}){let p=e,h=s,_=i(),v=I(`toast`,p),{t:x}=Z(),w=P(),T=W(V(v,`as`,`defaultOpen`,`open`,`duration`,`type`),h),O=g(()=>L({extend:je,...w.ui?.toast||{}})({color:v.color,orientation:v.orientation,title:!!v.title||!!_.title})),A=o(`rootRef`),F=D(0);return f(()=>{A.value?.$el?.getBoundingClientRect&&(F.value=A.value.$el.getBoundingClientRect().height)}),r({height:F}),(e,r)=>(y(),E(a(De),m({ref_key:`rootRef`,ref:A},a(T),{"data-orientation":a(v).orientation,"data-slot":`root`,class:O.value.root({class:[a(v).ui?.root,a(v).class]}),style:{"--height":F.value}}),{default:S(({remaining:i,duration:o,open:s})=>[j(e.$slots,`leading`,{ui:O.value},()=>[a(v).avatar?(y(),E(Y,m({key:0,size:a(v).ui?.avatarSize||O.value.avatarSize()},a(v).avatar,{"data-slot":`avatar`,class:O.value.avatar({class:a(v).ui?.avatar})}),null,16,[`size`,`class`])):a(v).icon?(y(),E(J,{key:1,name:a(v).icon,"data-slot":`icon`,class:c(O.value.icon({class:a(v).ui?.icon}))},null,8,[`name`,`class`])):M(``,!0)]),l(`div`,{"data-slot":`wrapper`,class:c(O.value.wrapper({class:a(v).ui?.wrapper}))},[a(v).title||_.title?(y(),E(a(Oe),{key:0,"data-slot":`title`,class:c(O.value.title({class:a(v).ui?.title}))},{default:S(()=>[j(e.$slots,`title`,{},()=>[typeof a(v).title==`function`?(y(),E(k(a(v).title()),{key:0})):typeof a(v).title==`object`?(y(),E(k(a(v).title),{key:1})):(y(),u(b,{key:2},[n(C(a(v).title),1)],64))])]),_:3},8,[`class`])):M(``,!0),a(v).description||_.description?(y(),E(a(Ee),{key:1,"data-slot":`description`,class:c(O.value.description({class:a(v).ui?.description}))},{default:S(()=>[j(e.$slots,`description`,{},()=>[typeof a(v).description==`function`?(y(),E(k(a(v).description()),{key:0})):typeof a(v).description==`object`?(y(),E(k(a(v).description),{key:1})):(y(),u(b,{key:2},[n(C(a(v).description),1)],64))])]),_:3},8,[`class`])):M(``,!0),a(v).orientation===`vertical`&&(a(v).actions?.length||_.actions)?(y(),u(`div`,{key:2,"data-slot":`actions`,class:c(O.value.actions({class:a(v).ui?.actions}))},[j(e.$slots,`actions`,{},()=>[(y(!0),u(b,null,d(a(v).actions,({closeOnClick:e,...n},i)=>(y(),E(a(we),{key:i,"alt-text":n.label||`Action`,"close-on-click":e,"as-child":``,onClick:r[0]||=N(()=>{},[`stop`])},{default:S(()=>[t(X,m({size:`xs`,color:a(v).color},{ref_for:!0},n),null,16,[`color`])]),_:2},1032,[`alt-text`,`close-on-click`]))),128))])],2)):M(``,!0)],2),a(v).orientation===`horizontal`&&(a(v).actions?.length||_.actions)||a(v).close?(y(),u(`div`,{key:0,"data-slot":`actions`,class:c(O.value.actions({class:a(v).ui?.actions,orientation:`horizontal`}))},[a(v).orientation===`horizontal`&&(a(v).actions?.length||_.actions)?j(e.$slots,`actions`,{},()=>[(y(!0),u(b,null,d(a(v).actions,({closeOnClick:e,...n},i)=>(y(),E(a(we),{key:i,"alt-text":n.label||`Action`,"close-on-click":e,"as-child":``,onClick:r[1]||=N(()=>{},[`stop`])},{default:S(()=>[t(X,m({size:`xs`,color:a(v).color},{ref_for:!0},n),null,16,[`color`])]),_:2},1032,[`alt-text`,`close-on-click`]))),128))],void 0,0):M(``,!0),a(v).close||_.close?(y(),E(a(Te),{key:1,"as-child":``},{default:S(()=>[j(e.$slots,`close`,{ui:O.value},()=>[a(v).close?(y(),E(X,m({key:0,icon:a(v).closeIcon||a(w).ui.icons.close,color:`neutral`,variant:`link`,"aria-label":a(x)(`toast.close`)},typeof a(v).close==`object`?a(v).close:{},{"data-slot":`close`,class:O.value.close({class:a(v).ui?.close}),onClick:r[2]||=N(()=>{},[`stop`])}),null,16,[`icon`,`aria-label`,`class`])):M(``,!0)])]),_:3})):M(``,!0)],2)):M(``,!0),a(v).progress&&s&&i>0&&o?(y(),E(Ae,m({key:1,"model-value":i/o*100,color:a(v).color},typeof a(v).progress==`object`?a(v).progress:{},{size:`sm`,"data-slot":`progress`,class:O.value.progress({class:a(v).ui?.progress})}),null,16,[`model-value`,`color`,`class`])):M(``,!0)]),_:3},16,[`data-orientation`,`class`,`style`]))}};export{Me as default};
@@ -1 +1 @@
1
- import{$ as e,D as t,E as n,Ft as r,Ht as i,Lt as a,On as o,Zn as s,at as c,b as l,bt as u,ct as d,et as f,g as p,mt as m,o as h,qt as g,tr as _,v,vn as y,wt as b,xt as x,y as S}from"./DZo3dYLJ.js";import{r as C}from"./oXSDGTSr.js";import{i as w,m as T,n as E,t as D}from"./Baq-Hrpf.js";import{m as O}from"./CuJUHLl8.js";import{t as k}from"./BuOKDFiJ.js";import{a as A,i as j,n as M,r as N,t as P}from"./oIa7syc0.js";import{t as F}from"./CjRYYbsC.js";import{n as I}from"./D8Bpf7sE.js";import{o as L}from"#entry";import{t as R}from"./BSov4ehT.js";var z={slots:{root:`flex items-center gap-2`,list:`relative flex p-1 group`,indicator:`absolute transition-[translate,width] duration-200 ease-out motion-reduce:transition-none`,trigger:[`group relative inline-flex items-center min-w-0 data-[state=inactive]:text-muted hover:data-[state=inactive]:not-disabled:text-default font-medium rounded-md disabled:cursor-not-allowed disabled:opacity-75`,`transition-colors`],leadingIcon:`shrink-0`,leadingAvatar:`shrink-0`,leadingAvatarSize:``,label:`truncate`,trailingBadge:`shrink-0`,trailingBadgeSize:`sm`,content:`w-full rounded-md focus-visible:outline-3`},variants:{color:{primary:{content:`outline-primary/25`},secondary:{content:`outline-secondary/25`},success:{content:`outline-success/25`},info:{content:`outline-info/25`},warning:{content:`outline-warning/25`},error:{content:`outline-error/25`},neutral:{content:`outline-inverted/25`}},variant:{pill:{list:`bg-elevated rounded-lg`,trigger:[`grow`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:content-[''] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:absolute in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:inset-0 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:rounded-md in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:shadow-xs in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:-z-10 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:isolate`],indicator:`rounded-md shadow-xs`},link:{list:`border-default`,indicator:`rounded-full`,trigger:`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:content-[''] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:absolute in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:rounded-full`}},orientation:{horizontal:{root:`flex-col`,list:`w-full`,indicator:`left-0 w-(--reka-tabs-indicator-size) translate-x-(--reka-tabs-indicator-position)`,trigger:`justify-center`},vertical:{list:`flex-col`,indicator:`top-0 h-(--reka-tabs-indicator-size) translate-y-(--reka-tabs-indicator-position)`}},size:{xs:{trigger:`px-2 py-1 text-xs gap-1`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`},sm:{trigger:`px-2.5 py-1.5 text-xs gap-1.5`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`},md:{trigger:`px-3 py-1.5 text-sm gap-1.5`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`},lg:{trigger:`px-3 py-2 text-sm gap-2`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`},xl:{trigger:`px-3 py-2 text-base gap-2`,leadingIcon:`size-6`,leadingAvatarSize:`xs`}}},compoundVariants:[{orientation:`horizontal`,variant:`pill`,class:{indicator:`inset-y-1`}},{orientation:`horizontal`,variant:`link`,class:{list:`border-b -mb-px`,indicator:`-bottom-px h-px`,trigger:`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:inset-x-0 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:-bottom-[calc(var(--spacing)+1px)] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:h-px`}},{orientation:`vertical`,variant:`pill`,class:{indicator:`inset-x-1`,list:`items-center`,trigger:`w-full justify-center`}},{orientation:`vertical`,variant:`link`,class:{list:`border-s -ms-px`,indicator:`-start-px w-px`,trigger:`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:inset-y-0 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:-start-[calc(var(--spacing)+1px)] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:w-px`}},{color:`primary`,variant:`pill`,class:{indicator:`bg-primary`,trigger:[`data-[state=active]:text-inverted outline-primary/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-primary`]}},{color:`secondary`,variant:`pill`,class:{indicator:`bg-secondary`,trigger:[`data-[state=active]:text-inverted outline-secondary/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-secondary`]}},{color:`success`,variant:`pill`,class:{indicator:`bg-success`,trigger:[`data-[state=active]:text-inverted outline-success/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-success`]}},{color:`info`,variant:`pill`,class:{indicator:`bg-info`,trigger:[`data-[state=active]:text-inverted outline-info/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-info`]}},{color:`warning`,variant:`pill`,class:{indicator:`bg-warning`,trigger:[`data-[state=active]:text-inverted outline-warning/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-warning`]}},{color:`error`,variant:`pill`,class:{indicator:`bg-error`,trigger:[`data-[state=active]:text-inverted outline-error/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-error`]}},{color:`neutral`,variant:`pill`,class:{indicator:`bg-inverted`,trigger:[`data-[state=active]:text-inverted outline-inverted/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-inverted`]}},{color:`primary`,variant:`link`,class:{indicator:`bg-primary`,trigger:[`data-[state=active]:text-primary outline-primary/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-primary`]}},{color:`secondary`,variant:`link`,class:{indicator:`bg-secondary`,trigger:[`data-[state=active]:text-secondary outline-secondary/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-secondary`]}},{color:`success`,variant:`link`,class:{indicator:`bg-success`,trigger:[`data-[state=active]:text-success outline-success/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-success`]}},{color:`info`,variant:`link`,class:{indicator:`bg-info`,trigger:[`data-[state=active]:text-info outline-info/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-info`]}},{color:`warning`,variant:`link`,class:{indicator:`bg-warning`,trigger:[`data-[state=active]:text-warning outline-warning/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-warning`]}},{color:`error`,variant:`link`,class:{indicator:`bg-error`,trigger:[`data-[state=active]:text-error outline-error/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-error`]}},{color:`neutral`,variant:`link`,class:{indicator:`bg-inverted`,trigger:[`data-[state=active]:text-highlighted outline-inverted/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-inverted`]}}],defaultVariants:{color:`primary`,variant:`pill`,size:`md`}},B={__name:`UTabs`,props:{as:{type:null,required:!1},items:{type:Array,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},orientation:{type:null,required:!1,default:`horizontal`},content:{type:Boolean,required:!1,default:!0},valueKey:{type:null,required:!1,default:`value`},labelKey:{type:null,required:!1,default:`label`},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultValue:{type:[String,Number],required:!1,default:`0`},modelValue:{type:[String,Number],required:!1},activationMode:{type:String,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0}},emits:[`update:modelValue`],setup(e,{expose:r,emit:i}){let c=e,d=i,b=a(),T=E(`tabs`,c),L=C(),B=k(O(T,`as`,`unmountOnHide`),d),V=p(()=>D({extend:z,...L.ui?.tabs||{}})({color:T.color,variant:T.variant,size:T.size,orientation:T.orientation})),H=y([]);function U(e,t){H.value[e]=t}return r({triggersRef:H}),(e,r)=>(m(),v(o(A),f(o(B),{"model-value":o(T).modelValue,"default-value":o(T).defaultValue,orientation:o(T).orientation,"activation-mode":o(T).activationMode,"data-slot":`root`,class:V.value.root({class:[o(T).ui?.root,o(T).class]})}),{default:g(()=>[t(o(M),{"data-slot":`list`,class:s(V.value.list({class:o(T).ui?.list}))},{default:g(()=>[t(o(N),{"data-slot":`indicator`,class:s(V.value.indicator({class:o(T).ui?.indicator}))},null,8,[`class`]),x(e.$slots,`list-leading`),(m(!0),l(h,null,u(o(T).items,(t,r)=>(m(),v(o(P),{key:o(w)(t,o(T).valueKey)??r,ref_for:!0,ref:e=>U(r,e),value:o(w)(t,o(T).valueKey)??String(r),disabled:t.disabled,"data-slot":`trigger`,class:s(V.value.trigger({class:[o(T).ui?.trigger,t.ui?.trigger]}))},{default:g(()=>[x(e.$slots,`leading`,{item:t,index:r,ui:V.value},()=>[t.icon?(m(),v(F,{key:0,name:t.icon,"data-slot":`leadingIcon`,class:s(V.value.leadingIcon({class:[o(T).ui?.leadingIcon,t.ui?.leadingIcon]}))},null,8,[`name`,`class`])):t.avatar?(m(),v(I,f({key:1,size:t.ui?.leadingAvatarSize||o(T).ui?.leadingAvatarSize||V.value.leadingAvatarSize()},{ref_for:!0},t.avatar,{"data-slot":`leadingAvatar`,class:V.value.leadingAvatar({class:[o(T).ui?.leadingAvatar,t.ui?.leadingAvatar]})}),null,16,[`size`,`class`])):S(``,!0)]),o(w)(t,o(T).labelKey)||b.default?(m(),l(`span`,{key:0,"data-slot":`label`,class:s(V.value.label({class:[o(T).ui?.label,t.ui?.label]}))},[x(e.$slots,`default`,{item:t,index:r},()=>[n(_(o(w)(t,o(T).labelKey)),1)])],2)):S(``,!0),x(e.$slots,`trailing`,{item:t,index:r,ui:V.value},()=>[t.badge||t.badge===0?(m(),v(R,f({key:0,color:`neutral`,variant:`outline`,size:t.ui?.trailingBadgeSize||o(T).ui?.trailingBadgeSize||V.value.trailingBadgeSize()},{ref_for:!0},typeof t.badge==`string`||typeof t.badge==`number`?{label:t.badge}:t.badge,{"data-slot":`trailingBadge`,class:V.value.trailingBadge({class:[o(T).ui?.trailingBadge,t.ui?.trailingBadge]})}),null,16,[`size`,`class`])):S(``,!0)])]),_:2},1032,[`value`,`disabled`,`class`]))),128)),x(e.$slots,`list-trailing`)]),_:3},8,[`class`]),o(T).content?(m(!0),l(h,{key:0},u(o(T).items,(t,r)=>(m(),v(o(j),{key:o(w)(t,o(T).valueKey)??r,value:o(w)(t,o(T).valueKey)??String(r),"data-slot":`content`,class:s(V.value.content({class:[o(T).ui?.content,t.ui?.content,t.class]}))},{default:g(()=>[x(e.$slots,t.slot||`content`,{item:t,index:r,ui:V.value},()=>[n(_(t.content),1)])]),_:2},1032,[`value`,`class`]))),128)):S(``,!0)]),_:3},16,[`model-value`,`default-value`,`orientation`,`activation-mode`,`class`]))}},V={slots:{root:`my-5 gap-4`}},H={__name:`ProseTabs`,props:e({defaultValue:{type:String,required:!1,default:`0`},sync:{type:String,required:!1},hash:{type:String,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},{modelValue:{type:String},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=a(),l=E(`prose.tabs`,t),u=r(e,`modelValue`),f=C(),h=p(()=>D({extend:V,...f.ui?.prose?.tabs||{}})),_=y(1),x=p(()=>(_.value,n.default?.()?.flatMap(S).filter(Boolean)||[]));function S(e,t){return typeof e.type==`symbol`?e.children?.map(S):{index:t,label:e.props?.label||`${t}`,description:e.props?.description,icon:e.props?.icon,component:e}}d(()=>{if(l.sync){let e=`tabs-${l.sync}`,t=L(e,()=>localStorage.getItem(e));i(t,()=>{t.value&&(u.value=t.value)},{immediate:!0}),i(u,()=>{u.value&&(t.value=u.value,localStorage.setItem(e,u.value))})}});async function w(){if(l.hash){let e=l.hash.startsWith(`#`)?l.hash:`#${l.hash}`;setTimeout(()=>{document.querySelector(e)?.scrollIntoView()},200)}}return c(()=>_.value++),(e,t)=>(m(),v(B,{modelValue:u.value,"onUpdate:modelValue":[t[0]||=e=>u.value=e,w],color:`primary`,variant:`link`,items:x.value,class:s(o(l).class),"unmount-on-hide":!1,ui:o(T)(h.value(),o(l).ui)},{content:g(({item:e})=>[(m(),v(b(e.component)))]),_:1},8,[`modelValue`,`items`,`class`,`ui`]))}};export{H as default};
1
+ import{$ as e,D as t,E as n,Ft as r,Ht as i,Lt as a,On as o,Zn as s,at as c,b as l,bt as u,ct as d,et as f,g as p,mt as m,o as h,qt as g,tr as _,v,vn as y,wt as b,xt as x,y as S}from"./DZo3dYLJ.js";import{r as C}from"./oXSDGTSr.js";import{i as w,m as T,n as E,t as D}from"./Baq-Hrpf.js";import{m as O}from"./CuJUHLl8.js";import{t as k}from"./BuOKDFiJ.js";import{a as A,i as j,n as M,r as N,t as P}from"./C7AVymkF.js";import{t as F}from"./D2zrOcWn.js";import{n as I}from"./CNCQ_RRC.js";import{c as L}from"#entry";import{t as R}from"./Dp5MbiLe.js";var z={slots:{root:`flex items-center gap-2`,list:`relative flex p-1 group`,indicator:`absolute transition-[translate,width] duration-200 ease-out motion-reduce:transition-none`,trigger:[`group relative inline-flex items-center min-w-0 data-[state=inactive]:text-muted hover:data-[state=inactive]:not-disabled:text-default font-medium rounded-md disabled:cursor-not-allowed disabled:opacity-75`,`transition-colors`],leadingIcon:`shrink-0`,leadingAvatar:`shrink-0`,leadingAvatarSize:``,label:`truncate`,trailingBadge:`shrink-0`,trailingBadgeSize:`sm`,content:`w-full rounded-md focus-visible:outline-3`},variants:{color:{primary:{content:`outline-primary/25`},secondary:{content:`outline-secondary/25`},success:{content:`outline-success/25`},info:{content:`outline-info/25`},warning:{content:`outline-warning/25`},error:{content:`outline-error/25`},neutral:{content:`outline-inverted/25`}},variant:{pill:{list:`bg-elevated rounded-lg`,trigger:[`grow`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:content-[''] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:absolute in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:inset-0 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:rounded-md in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:shadow-xs in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:-z-10 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:isolate`],indicator:`rounded-md shadow-xs`},link:{list:`border-default`,indicator:`rounded-full`,trigger:`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:content-[''] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:absolute in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:rounded-full`}},orientation:{horizontal:{root:`flex-col`,list:`w-full`,indicator:`left-0 w-(--reka-tabs-indicator-size) translate-x-(--reka-tabs-indicator-position)`,trigger:`justify-center`},vertical:{list:`flex-col`,indicator:`top-0 h-(--reka-tabs-indicator-size) translate-y-(--reka-tabs-indicator-position)`}},size:{xs:{trigger:`px-2 py-1 text-xs gap-1`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`},sm:{trigger:`px-2.5 py-1.5 text-xs gap-1.5`,leadingIcon:`size-4`,leadingAvatarSize:`3xs`},md:{trigger:`px-3 py-1.5 text-sm gap-1.5`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`},lg:{trigger:`px-3 py-2 text-sm gap-2`,leadingIcon:`size-5`,leadingAvatarSize:`2xs`},xl:{trigger:`px-3 py-2 text-base gap-2`,leadingIcon:`size-6`,leadingAvatarSize:`xs`}}},compoundVariants:[{orientation:`horizontal`,variant:`pill`,class:{indicator:`inset-y-1`}},{orientation:`horizontal`,variant:`link`,class:{list:`border-b -mb-px`,indicator:`-bottom-px h-px`,trigger:`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:inset-x-0 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:-bottom-[calc(var(--spacing)+1px)] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:h-px`}},{orientation:`vertical`,variant:`pill`,class:{indicator:`inset-x-1`,list:`items-center`,trigger:`w-full justify-center`}},{orientation:`vertical`,variant:`link`,class:{list:`border-s -ms-px`,indicator:`-start-px w-px`,trigger:`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:inset-y-0 in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:-start-[calc(var(--spacing)+1px)] in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:w-px`}},{color:`primary`,variant:`pill`,class:{indicator:`bg-primary`,trigger:[`data-[state=active]:text-inverted outline-primary/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-primary`]}},{color:`secondary`,variant:`pill`,class:{indicator:`bg-secondary`,trigger:[`data-[state=active]:text-inverted outline-secondary/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-secondary`]}},{color:`success`,variant:`pill`,class:{indicator:`bg-success`,trigger:[`data-[state=active]:text-inverted outline-success/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-success`]}},{color:`info`,variant:`pill`,class:{indicator:`bg-info`,trigger:[`data-[state=active]:text-inverted outline-info/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-info`]}},{color:`warning`,variant:`pill`,class:{indicator:`bg-warning`,trigger:[`data-[state=active]:text-inverted outline-warning/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-warning`]}},{color:`error`,variant:`pill`,class:{indicator:`bg-error`,trigger:[`data-[state=active]:text-inverted outline-error/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-error`]}},{color:`neutral`,variant:`pill`,class:{indicator:`bg-inverted`,trigger:[`data-[state=active]:text-inverted outline-inverted/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:before:bg-inverted`]}},{color:`primary`,variant:`link`,class:{indicator:`bg-primary`,trigger:[`data-[state=active]:text-primary outline-primary/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-primary`]}},{color:`secondary`,variant:`link`,class:{indicator:`bg-secondary`,trigger:[`data-[state=active]:text-secondary outline-secondary/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-secondary`]}},{color:`success`,variant:`link`,class:{indicator:`bg-success`,trigger:[`data-[state=active]:text-success outline-success/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-success`]}},{color:`info`,variant:`link`,class:{indicator:`bg-info`,trigger:[`data-[state=active]:text-info outline-info/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-info`]}},{color:`warning`,variant:`link`,class:{indicator:`bg-warning`,trigger:[`data-[state=active]:text-warning outline-warning/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-warning`]}},{color:`error`,variant:`link`,class:{indicator:`bg-error`,trigger:[`data-[state=active]:text-error outline-error/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-error`]}},{color:`neutral`,variant:`link`,class:{indicator:`bg-inverted`,trigger:[`data-[state=active]:text-highlighted outline-inverted/25 focus-visible:outline-3`,`in-[[data-slot=list]:not(:has([data-slot=indicator]))]:data-[state=active]:after:bg-inverted`]}}],defaultVariants:{color:`primary`,variant:`pill`,size:`md`}},B={__name:`UTabs`,props:{as:{type:null,required:!1},items:{type:Array,required:!1},color:{type:null,required:!1},variant:{type:null,required:!1},size:{type:null,required:!1},orientation:{type:null,required:!1,default:`horizontal`},content:{type:Boolean,required:!1,default:!0},valueKey:{type:null,required:!1,default:`value`},labelKey:{type:null,required:!1,default:`label`},class:{type:null,required:!1},ui:{type:Object,required:!1},defaultValue:{type:[String,Number],required:!1,default:`0`},modelValue:{type:[String,Number],required:!1},activationMode:{type:String,required:!1},unmountOnHide:{type:Boolean,required:!1,default:!0}},emits:[`update:modelValue`],setup(e,{expose:r,emit:i}){let c=e,d=i,b=a(),T=E(`tabs`,c),L=C(),B=k(O(T,`as`,`unmountOnHide`),d),V=p(()=>D({extend:z,...L.ui?.tabs||{}})({color:T.color,variant:T.variant,size:T.size,orientation:T.orientation})),H=y([]);function U(e,t){H.value[e]=t}return r({triggersRef:H}),(e,r)=>(m(),v(o(A),f(o(B),{"model-value":o(T).modelValue,"default-value":o(T).defaultValue,orientation:o(T).orientation,"activation-mode":o(T).activationMode,"data-slot":`root`,class:V.value.root({class:[o(T).ui?.root,o(T).class]})}),{default:g(()=>[t(o(M),{"data-slot":`list`,class:s(V.value.list({class:o(T).ui?.list}))},{default:g(()=>[t(o(N),{"data-slot":`indicator`,class:s(V.value.indicator({class:o(T).ui?.indicator}))},null,8,[`class`]),x(e.$slots,`list-leading`),(m(!0),l(h,null,u(o(T).items,(t,r)=>(m(),v(o(P),{key:o(w)(t,o(T).valueKey)??r,ref_for:!0,ref:e=>U(r,e),value:o(w)(t,o(T).valueKey)??String(r),disabled:t.disabled,"data-slot":`trigger`,class:s(V.value.trigger({class:[o(T).ui?.trigger,t.ui?.trigger]}))},{default:g(()=>[x(e.$slots,`leading`,{item:t,index:r,ui:V.value},()=>[t.icon?(m(),v(F,{key:0,name:t.icon,"data-slot":`leadingIcon`,class:s(V.value.leadingIcon({class:[o(T).ui?.leadingIcon,t.ui?.leadingIcon]}))},null,8,[`name`,`class`])):t.avatar?(m(),v(I,f({key:1,size:t.ui?.leadingAvatarSize||o(T).ui?.leadingAvatarSize||V.value.leadingAvatarSize()},{ref_for:!0},t.avatar,{"data-slot":`leadingAvatar`,class:V.value.leadingAvatar({class:[o(T).ui?.leadingAvatar,t.ui?.leadingAvatar]})}),null,16,[`size`,`class`])):S(``,!0)]),o(w)(t,o(T).labelKey)||b.default?(m(),l(`span`,{key:0,"data-slot":`label`,class:s(V.value.label({class:[o(T).ui?.label,t.ui?.label]}))},[x(e.$slots,`default`,{item:t,index:r},()=>[n(_(o(w)(t,o(T).labelKey)),1)])],2)):S(``,!0),x(e.$slots,`trailing`,{item:t,index:r,ui:V.value},()=>[t.badge||t.badge===0?(m(),v(R,f({key:0,color:`neutral`,variant:`outline`,size:t.ui?.trailingBadgeSize||o(T).ui?.trailingBadgeSize||V.value.trailingBadgeSize()},{ref_for:!0},typeof t.badge==`string`||typeof t.badge==`number`?{label:t.badge}:t.badge,{"data-slot":`trailingBadge`,class:V.value.trailingBadge({class:[o(T).ui?.trailingBadge,t.ui?.trailingBadge]})}),null,16,[`size`,`class`])):S(``,!0)])]),_:2},1032,[`value`,`disabled`,`class`]))),128)),x(e.$slots,`list-trailing`)]),_:3},8,[`class`]),o(T).content?(m(!0),l(h,{key:0},u(o(T).items,(t,r)=>(m(),v(o(j),{key:o(w)(t,o(T).valueKey)??r,value:o(w)(t,o(T).valueKey)??String(r),"data-slot":`content`,class:s(V.value.content({class:[o(T).ui?.content,t.ui?.content,t.class]}))},{default:g(()=>[x(e.$slots,t.slot||`content`,{item:t,index:r,ui:V.value},()=>[n(_(t.content),1)])]),_:2},1032,[`value`,`class`]))),128)):S(``,!0)]),_:3},16,[`model-value`,`default-value`,`orientation`,`activation-mode`,`class`]))}},V={slots:{root:`my-5 gap-4`}},H={__name:`ProseTabs`,props:e({defaultValue:{type:String,required:!1,default:`0`},sync:{type:String,required:!1},hash:{type:String,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},{modelValue:{type:String},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=a(),l=E(`prose.tabs`,t),u=r(e,`modelValue`),f=C(),h=p(()=>D({extend:V,...f.ui?.prose?.tabs||{}})),_=y(1),x=p(()=>(_.value,n.default?.()?.flatMap(S).filter(Boolean)||[]));function S(e,t){return typeof e.type==`symbol`?e.children?.map(S):{index:t,label:e.props?.label||`${t}`,description:e.props?.description,icon:e.props?.icon,component:e}}d(()=>{if(l.sync){let e=`tabs-${l.sync}`,t=L(e,()=>localStorage.getItem(e));i(t,()=>{t.value&&(u.value=t.value)},{immediate:!0}),i(u,()=>{u.value&&(t.value=u.value,localStorage.setItem(e,u.value))})}});async function w(){if(l.hash){let e=l.hash.startsWith(`#`)?l.hash:`#${l.hash}`;setTimeout(()=>{document.querySelector(e)?.scrollIntoView()},200)}}return c(()=>_.value++),(e,t)=>(m(),v(B,{modelValue:u.value,"onUpdate:modelValue":[t[0]||=e=>u.value=e,w],color:`primary`,variant:`link`,items:x.value,class:s(o(l).class),"unmount-on-hide":!1,ui:o(T)(h.value(),o(l).ui)},{content:g(({item:e})=>[(m(),v(b(e.component)))]),_:1},8,[`modelValue`,`items`,`class`,`ui`]))}};export{H as default};
@@ -1 +1 @@
1
- import{$ as e,D as t,Ft as n,On as r,Zn as i,_ as a,b as o,g as s,mt as c,xt as l}from"./DZo3dYLJ.js";import{r as u}from"./oXSDGTSr.js";import{n as d,t as f}from"./Baq-Hrpf.js";import{t as p}from"./DNMF9lr0.js";import{c as m}from"#entry";var h={slots:{root:`relative my-5 bg-muted [&>div]:my-0 [&_pre]:max-h-[80vh] [&_pre]:pb-12`,footer:`h-16 absolute inset-x-px bottom-px rounded-b-md flex items-center justify-center`,trigger:`group`,triggerIcon:`group-data-[state=open]:rotate-180`},variants:{open:{true:{root:`rounded-md`},false:{root:`max-h-[200px] overflow-hidden rounded-b-md [&_pre]:overflow-hidden`,footer:`inset-x-0 bottom-0 border border-t-0 border-muted bg-linear-to-t from-muted`}}}},g={__name:`ProseCodeCollapse`,props:e({icon:{type:null,required:!1},name:{type:String,required:!1},openText:{type:String,required:!1},closeText:{type:String,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:[`update:open`],setup(e){let g=d(`prose.codeCollapse`,e),_=n(e,`open`,{type:Boolean,default:!1}),{t:v}=m(),y=u(),b=s(()=>f({extend:h,...y.ui?.prose?.codeCollapse||{}})({open:_.value}));return(e,n)=>(c(),o(`div`,{class:i(b.value.root({class:[r(g).ui?.root,r(g).class]}))},[l(e.$slots,`default`),a(`div`,{class:i(b.value.footer({class:r(g).ui?.footer}))},[t(p,{icon:r(g).icon||r(y).ui.icons.chevronDown,color:`neutral`,variant:`outline`,"data-state":_.value?`open`:`closed`,label:`${_.value?r(g).closeText||r(v)(`prose.codeCollapse.closeText`):r(g).openText||r(v)(`prose.codeCollapse.openText`)} ${r(g).name||r(v)(`prose.codeCollapse.name`)}`,class:i(b.value.trigger({class:r(g).ui?.trigger})),ui:{leadingIcon:b.value.triggerIcon({class:r(g).ui?.triggerIcon})},onClick:n[0]||=e=>_.value=!_.value},null,8,[`icon`,`data-state`,`label`,`class`,`ui`])],2)],2))}};export{g as default};
1
+ import{$ as e,D as t,Ft as n,On as r,Zn as i,_ as a,b as o,g as s,mt as c,xt as l}from"./DZo3dYLJ.js";import{r as u}from"./oXSDGTSr.js";import{n as d,t as f}from"./Baq-Hrpf.js";import{t as p}from"./BsNk4K6P.js";import{u as m}from"#entry";var h={slots:{root:`relative my-5 bg-muted [&>div]:my-0 [&_pre]:max-h-[80vh] [&_pre]:pb-12`,footer:`h-16 absolute inset-x-px bottom-px rounded-b-md flex items-center justify-center`,trigger:`group`,triggerIcon:`group-data-[state=open]:rotate-180`},variants:{open:{true:{root:`rounded-md`},false:{root:`max-h-[200px] overflow-hidden rounded-b-md [&_pre]:overflow-hidden`,footer:`inset-x-0 bottom-0 border border-t-0 border-muted bg-linear-to-t from-muted`}}}},g={__name:`ProseCodeCollapse`,props:e({icon:{type:null,required:!1},name:{type:String,required:!1},openText:{type:String,required:!1},closeText:{type:String,required:!1},class:{type:null,required:!1},ui:{type:Object,required:!1}},{open:{type:Boolean,default:!1},openModifiers:{}}),emits:[`update:open`],setup(e){let g=d(`prose.codeCollapse`,e),_=n(e,`open`,{type:Boolean,default:!1}),{t:v}=m(),y=u(),b=s(()=>f({extend:h,...y.ui?.prose?.codeCollapse||{}})({open:_.value}));return(e,n)=>(c(),o(`div`,{class:i(b.value.root({class:[r(g).ui?.root,r(g).class]}))},[l(e.$slots,`default`),a(`div`,{class:i(b.value.footer({class:r(g).ui?.footer}))},[t(p,{icon:r(g).icon||r(y).ui.icons.chevronDown,color:`neutral`,variant:`outline`,"data-state":_.value?`open`:`closed`,label:`${_.value?r(g).closeText||r(v)(`prose.codeCollapse.closeText`):r(g).openText||r(v)(`prose.codeCollapse.openText`)} ${r(g).name||r(v)(`prose.codeCollapse.name`)}`,class:i(b.value.trigger({class:r(g).ui?.trigger})),ui:{leadingIcon:b.value.triggerIcon({class:r(g).ui?.triggerIcon})},onClick:n[0]||=e=>_.value=!_.value},null,8,[`icon`,`data-state`,`label`,`class`,`ui`])],2)],2))}};export{g as default};
@@ -0,0 +1 @@
1
+ import{D as e,E as t,On as n,T as r,Zn as i,_ as a,b as o,bt as s,er as c,g as l,k as u,mt as d,o as f,qt as ee,tr as p,v as te,y as m}from"./DZo3dYLJ.js";import{t as h}from"./BJW3UkS7.js";import{t as ne}from"./D2zrOcWn.js";import{a as g,i as _,o as v,r as re,s as y}from"#entry";var b={class:`kpis`},x={class:`v`},ie={class:`v`},ae={class:`v`},oe={class:`v`},se={class:`v`},S={class:`card tl-wrap`},C={class:`card-hd tl-hd`},w={class:`h2`},T={class:`timeline`},E={key:0,class:`tl-today`},D={class:`tl-item`},O={class:`when`},k={class:`when-date mono`},A={class:`when-year`},j={class:`axis`},M={class:`node-top`},N={class:`tag tag-ghost`},P={key:0,class:`tag tag-neutral mono`},F={class:`node-title`},I={class:`criteria`},L={class:`nums`},R={class:`dim`},z={class:`mpct`},B={class:`mss`},ce={class:`st-id mono`},V={class:`st-title`},H={class:`st-state dim`},U={class:`st-pts dim`},W={key:0,class:`tl-today`},G=_(u({__name:`milestones`,setup(u){let{milestones:_,milestoneProgress:G,now:K,md:le,MS_LABEL:ue,MS_COLOR:de,KIND_LABEL:fe,KIND_ICON:pe,STATE_DOT:me,STATE_LABEL:he,diffDays:q}=y(),J=l(()=>[..._.value].sort((e,t)=>e.due<t.due?-1:+(e.due>t.due))),Y=e=>q(K,e),X=e=>{let t=G(e);return t.total?Math.round(t.done/t.total*100):0},Z=e=>e===`mvp`?`mint`:e===`release`?`lilac`:`ink`,ge=e=>({reached:`ok`,"at-risk":`risk`,planned:`plan`,missed:`miss`})[e]??`plan`,_e=[`日`,`一`,`二`,`三`,`四`,`五`,`六`],ve=e=>`周${_e[new Date(`${e}T00:00:00Z`).getUTCDay()]}`,ye=e=>{let t=Y(e);return t>0?`还剩 ${t} 天`:t===0?`今天到期`:`已过 ${-t} 天`},Q=l(()=>{let e=J.value.findIndex(e=>e.due>=K);return e<0?J.value.length:e}),$=l(()=>({mvp:_.value.filter(e=>e.kind===`mvp`).length,release:_.value.filter(e=>e.kind===`release`).length,checkpoint:_.value.filter(e=>e.kind===`checkpoint`).length,risk:_.value.filter(e=>e.status===`at-risk`||e.status===`missed`).length,reached:_.value.filter(e=>e.status===`reached`).length}));return(l,u)=>{let y=re,K=ne,q=h;return d(),o(`div`,null,[a(`div`,b,[a(`div`,{class:i([`kpi`,(`cardToneClass`in l?l.cardToneClass:n(v))(0)])},[e(y,{tone:(`cardTone`in l?l.cardTone:n(g))(0),size:`sm`},null,8,[`tone`]),u[1]||=a(`p`,{class:`k`},`MVP 节点`,-1),a(`p`,x,[t(p(n($).mvp),1),u[0]||=a(`small`,null,`个`,-1)])],2),a(`div`,{class:i([`kpi`,(`cardToneClass`in l?l.cardToneClass:n(v))(1)])},[e(y,{tone:(`cardTone`in l?l.cardTone:n(g))(1),size:`sm`},null,8,[`tone`]),u[3]||=a(`p`,{class:`k`},`发布节点`,-1),a(`p`,ie,[t(p(n($).release),1),u[2]||=a(`small`,null,`个`,-1)])],2),a(`div`,{class:i([`kpi`,(`cardToneClass`in l?l.cardToneClass:n(v))(2)])},[e(y,{tone:(`cardTone`in l?l.cardTone:n(g))(2),size:`sm`},null,8,[`tone`]),u[5]||=a(`p`,{class:`k`},`检查点`,-1),a(`p`,ae,[t(p(n($).checkpoint),1),u[4]||=a(`small`,null,`个`,-1)])],2),a(`div`,{class:i([`kpi`,(`cardToneClass`in l?l.cardToneClass:n(v))(3)])},[e(y,{tone:(`cardTone`in l?l.cardTone:n(g))(3),size:`sm`},null,8,[`tone`]),u[6]||=a(`p`,{class:`k`},`已达成`,-1),a(`p`,oe,[t(p(n($).reached),1),a(`small`,null,`/ `+p(n(_).length),1)])],2),a(`div`,{class:i([`kpi`,(`cardToneClass`in l?l.cardToneClass:n(v))(4)])},[e(y,{tone:(`cardTone`in l?l.cardTone:n(g))(4),size:`sm`},null,8,[`tone`]),u[8]||=a(`p`,{class:`k`},`有风险 / 错过`,-1),a(`p`,se,[t(p(n($).risk),1),u[7]||=a(`small`,null,`个`,-1)])],2)]),a(`div`,S,[a(`div`,C,[a(`h2`,w,[e(K,{name:`i-lucide-git-commit-vertical`,class:`size-3.5`}),u[9]||=t(`时间线`,-1)]),u[10]||=r(`<span class="dim tip" data-v-fcd79590>按到期日从早到晚 · 节点达成口径是「挂的故事全部完成」</span><div class="legend" data-v-fcd79590><span class="lg" data-v-fcd79590><i class="sw mint" data-v-fcd79590></i>MVP</span><span class="lg" data-v-fcd79590><i class="sw lilac" data-v-fcd79590></i>发布</span><span class="lg" data-v-fcd79590><i class="sw white" data-v-fcd79590></i>检查点</span><i class="sep" data-v-fcd79590></i><span class="lg" data-v-fcd79590><i class="dot ok" data-v-fcd79590></i>已达成</span><span class="lg" data-v-fcd79590><i class="dot risk" data-v-fcd79590></i>有风险</span><span class="lg" data-v-fcd79590><i class="dot plan" data-v-fcd79590></i>计划中</span></div>`,2)]),a(`div`,T,[(d(!0),o(f,null,s(n(J),(r,l)=>(d(),o(f,{key:r.id},[l===n(Q)?(d(),o(`div`,E,[...u[11]||=[a(`span`,{class:`today-when`},`今天`,-1),a(`span`,{class:`today-axis`},[a(`i`)],-1),a(`span`,{class:`today-line`},null,-1)]])):m(``,!0),a(`article`,D,[a(`div`,O,[a(`p`,k,p(n(le)(r.due)),1),a(`p`,A,p(ve(r.due)),1)]),a(`div`,j,[a(`span`,{class:i([`dot-lg`,ge(r.status)])},[r.status===`reached`?(d(),te(K,{key:0,name:`i-lucide-check`,class:`size-2.5`})):m(``,!0)],2)]),a(`div`,{class:i([`node`,`node-${Z(r.kind)}`])},[e(y,{tone:Z(r.kind),size:`xl`,min:3,max:5},null,8,[`tone`]),a(`div`,M,[a(`span`,N,p(r.id),1),a(`span`,{class:i([`tag`,`tag-${n(de)[r.status]}`])},p(n(ue)[r.status]),3),a(`span`,{class:i([`tag`,r.kind===`mvp`?`tag-mint`:r.kind===`release`?`tag-primary`:`tag-neutral`])},[e(K,{name:n(pe)[r.kind],class:`size-3`},null,8,[`name`]),t(p(n(fe)[r.kind]),1)],2),r.sprintId?(d(),o(`span`,P,p(r.sprintId),1)):m(``,!0),a(`span`,{class:i([`days`,{over:Y(r.due)<0,soon:Y(r.due)>=0&&Y(r.due)<=7}])},p(ye(r.due)),3)]),a(`h3`,F,p(r.title),1),a(`p`,I,p(r.criteria),1),a(`div`,L,[a(`span`,null,[a(`b`,null,p(n(G)(r).done)+`/`+p(n(G)(r).total),1),u[12]||=t(` 个故事`,-1)]),n(G)(r).cancelled?(d(),o(f,{key:0},[u[13]||=a(`span`,{class:`dim`},`·`,-1),a(`span`,R,p(n(G)(r).cancelled)+` 个已取消`,1)],64)):m(``,!0),u[14]||=a(`span`,{class:`dim`},`·`,-1),a(`span`,null,p(n(G)(r).points)+` 点`,1),a(`span`,z,p(X(r))+`%`,1)]),a(`div`,{class:i([`bar`,r.kind===`checkpoint`?``:Z(r.kind)])},[a(`i`,{style:c({width:X(r)+`%`})},null,4)],2),a(`ul`,B,[(d(!0),o(f,null,s(n(G)(r).list,t=>(d(),o(`li`,{key:t.id},[e(q,{to:`/story/${t.id}`,class:`srow`},{default:ee(()=>[a(`i`,{class:`sdot`,style:c({background:n(me)[t.status]})},null,4),a(`span`,ce,p(t.id),1),a(`span`,V,p(t.title),1),a(`span`,H,p(n(he)[t.status]),1),a(`span`,U,p(t.points),1)]),_:2},1032,[`to`])]))),128))])],2)])],64))),128)),n(Q)===n(J).length?(d(),o(`div`,W,[...u[15]||=[a(`span`,{class:`today-when`},`今天`,-1),a(`span`,{class:`today-axis`},[a(`i`)],-1),a(`span`,{class:`today-line`},null,-1)]])):m(``,!0)])])])}}}),[[`__scopeId`,`data-v-fcd79590`]]);export{G as default};