@eifi1/ui-kit 0.15.4 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/README.md +20 -15
  2. package/dist/chart.d.ts +3 -4
  3. package/dist/components/alert-banner.js +1 -1
  4. package/dist/components/alert-banner.js.map +1 -1
  5. package/dist/components/amount-input.d.ts +13 -4
  6. package/dist/components/amount-input.js +166 -157
  7. package/dist/components/amount-input.js.map +1 -1
  8. package/dist/components/authed-image.d.ts +14 -3
  9. package/dist/components/authed-image.js +32 -23
  10. package/dist/components/authed-image.js.map +1 -1
  11. package/dist/components/button-group.d.ts +3 -4
  12. package/dist/components/calculator.d.ts +3 -4
  13. package/dist/components/checkbox.js +1 -1
  14. package/dist/components/checkbox.js.map +1 -1
  15. package/dist/components/choice-card.js +1 -1
  16. package/dist/components/choice-card.js.map +1 -1
  17. package/dist/components/copy-button.d.ts +3 -4
  18. package/dist/components/error-boundary.js +1 -1
  19. package/dist/components/error-boundary.js.map +1 -1
  20. package/dist/components/facing-pair.d.ts +3 -4
  21. package/dist/components/file-button.d.ts +3 -4
  22. package/dist/components/file-button.js +64 -31
  23. package/dist/components/file-button.js.map +1 -1
  24. package/dist/components/file-dropzone.d.ts +3 -4
  25. package/dist/components/file-dropzone.js +1 -1
  26. package/dist/components/file-dropzone.js.map +1 -1
  27. package/dist/components/form-actions.d.ts +4 -5
  28. package/dist/components/form-actions.js +18 -6
  29. package/dist/components/form-actions.js.map +1 -1
  30. package/dist/components/line-items.d.ts +53 -2
  31. package/dist/components/line-items.js +73 -7
  32. package/dist/components/line-items.js.map +1 -1
  33. package/dist/components/list.d.ts +99 -5
  34. package/dist/components/list.js +103 -38
  35. package/dist/components/list.js.map +1 -1
  36. package/dist/components/loading-state.d.ts +19 -3
  37. package/dist/components/loading-state.js +14 -3
  38. package/dist/components/loading-state.js.map +1 -1
  39. package/dist/components/money-field.d.ts +3 -4
  40. package/dist/components/number-field.d.ts +3 -4
  41. package/dist/components/number-input.d.ts +3 -4
  42. package/dist/components/number-input.js +4 -2
  43. package/dist/components/number-input.js.map +1 -1
  44. package/dist/components/numpad-sheet.d.ts +3 -4
  45. package/dist/components/passkeys-setting.d.ts +30 -10
  46. package/dist/components/passkeys-setting.js +19 -11
  47. package/dist/components/passkeys-setting.js.map +1 -1
  48. package/dist/components/progress-bar.d.ts +12 -3
  49. package/dist/components/progress-bar.js +21 -11
  50. package/dist/components/progress-bar.js.map +1 -1
  51. package/dist/components/series-chart.d.ts +3 -4
  52. package/dist/components/settings-fields.d.ts +3 -4
  53. package/dist/components/signed-amount.d.ts +28 -4
  54. package/dist/components/signed-amount.js +17 -8
  55. package/dist/components/signed-amount.js.map +1 -1
  56. package/dist/components/stat-tile.d.ts +31 -2
  57. package/dist/components/stat-tile.js +37 -6
  58. package/dist/components/stat-tile.js.map +1 -1
  59. package/dist/components/status-dot.d.ts +4 -1
  60. package/dist/components/status-dot.js +20 -1
  61. package/dist/components/status-dot.js.map +1 -1
  62. package/dist/components/swatch-picker.d.ts +3 -1
  63. package/dist/components/swatch-picker.js.map +1 -1
  64. package/dist/components/table.d.ts +18 -13
  65. package/dist/components/table.js +20 -5
  66. package/dist/components/table.js.map +1 -1
  67. package/dist/components/text-link.d.ts +3 -4
  68. package/dist/components/time-input.d.ts +3 -4
  69. package/dist/components/toggle-legend.d.ts +12 -1
  70. package/dist/components/toggle-legend.js +6 -2
  71. package/dist/components/toggle-legend.js.map +1 -1
  72. package/dist/components/ui.d.ts +3 -4
  73. package/dist/components/ui.js +156 -52
  74. package/dist/components/ui.js.map +1 -1
  75. package/dist/feedback/feedback-attachment.d.ts +2 -82
  76. package/dist/feedback/feedback-attachment.js +285 -55
  77. package/dist/feedback/feedback-attachment.js.map +1 -1
  78. package/dist/feedback/feedback-dialog.d.ts +2 -105
  79. package/dist/feedback/feedback-dialog.js +57 -25
  80. package/dist/feedback/feedback-dialog.js.map +1 -1
  81. package/dist/feedback/feedback-inbox.d.ts +1 -1
  82. package/dist/feedback/feedback-thread.d.ts +2 -2
  83. package/dist/feedback-attachment-WFiXJ8We.d.ts +302 -0
  84. package/dist/feedback.d.ts +1 -2
  85. package/dist/hooks/use-file-drop.d.ts +3 -4
  86. package/dist/i18n/defaults.d.ts +3 -4
  87. package/dist/i18n/kit-labels.d.ts +2 -3
  88. package/dist/i18n/locales/de-CH-informal.d.ts +3 -4
  89. package/dist/i18n/locales/de-CH.d.ts +3 -4
  90. package/dist/i18n/locales/de-informal.d.ts +3 -4
  91. package/dist/i18n/locales/de.d.ts +3 -4
  92. package/dist/i18n/locales/de.js +5 -1
  93. package/dist/i18n/locales/de.js.map +1 -1
  94. package/dist/i18n/locales/es.d.ts +3 -4
  95. package/dist/i18n/locales/es.js +5 -1
  96. package/dist/i18n/locales/es.js.map +1 -1
  97. package/dist/i18n/locales/fr.d.ts +3 -4
  98. package/dist/i18n/locales/fr.js +5 -1
  99. package/dist/i18n/locales/fr.js.map +1 -1
  100. package/dist/i18n/locales/hu.d.ts +3 -4
  101. package/dist/i18n/locales/hu.js +5 -1
  102. package/dist/i18n/locales/hu.js.map +1 -1
  103. package/dist/i18n/locales/it.d.ts +3 -4
  104. package/dist/i18n/locales/it.js +5 -1
  105. package/dist/i18n/locales/it.js.map +1 -1
  106. package/dist/i18n/locales/zh.d.ts +3 -4
  107. package/dist/i18n/locales/zh.js +5 -1
  108. package/dist/i18n/locales/zh.js.map +1 -1
  109. package/dist/index.d.ts +10 -11
  110. package/dist/{kit-labels-CnnBd-2N.d.ts → kit-labels-DE--LmCk.d.ts} +154 -14
  111. package/dist/lib/format.d.ts +18 -3
  112. package/dist/lib/format.js +2 -1
  113. package/dist/lib/format.js.map +1 -1
  114. package/dist/rhf/fields.d.ts +3 -4
  115. package/dist/rhf/form.d.ts +3 -4
  116. package/dist/rhf/line-items.js.map +1 -1
  117. package/dist/rhf.d.ts +3 -4
  118. package/dist/shell/app-shell.d.ts +3 -4
  119. package/dist/shell/top-bar-brand.d.ts +3 -4
  120. package/dist/shell.d.ts +3 -4
  121. package/dist/theme/palette-derive.d.ts +3 -0
  122. package/dist/theme/palette-derive.js +7 -0
  123. package/dist/theme/palette-derive.js.map +1 -1
  124. package/dist/wizard/stepper-nav.d.ts +3 -4
  125. package/dist/wizard.d.ts +3 -4
  126. package/package.json +4 -2
  127. package/src/components/alert-banner.tsx +1 -1
  128. package/src/components/amount-input.tsx +47 -16
  129. package/src/components/authed-image.tsx +20 -2
  130. package/src/components/checkbox.tsx +1 -1
  131. package/src/components/choice-card.tsx +1 -1
  132. package/src/components/error-boundary.tsx +1 -1
  133. package/src/components/file-button.tsx +77 -27
  134. package/src/components/file-dropzone.tsx +1 -1
  135. package/src/components/form-actions.tsx +86 -8
  136. package/src/components/line-items.tsx +131 -14
  137. package/src/components/list.tsx +240 -50
  138. package/src/components/loading-state.tsx +35 -4
  139. package/src/components/number-input.tsx +18 -2
  140. package/src/components/passkeys-setting.tsx +45 -18
  141. package/src/components/progress-bar.tsx +46 -21
  142. package/src/components/signed-amount.tsx +47 -8
  143. package/src/components/stat-tile.tsx +76 -6
  144. package/src/components/status-dot.tsx +31 -0
  145. package/src/components/swatch-picker.tsx +3 -1
  146. package/src/components/table.tsx +42 -15
  147. package/src/components/toggle-legend.tsx +21 -4
  148. package/src/components/ui.tsx +280 -70
  149. package/src/feedback/feedback-attachment.tsx +472 -96
  150. package/src/feedback/feedback-dialog.tsx +162 -50
  151. package/src/i18n/locales/de.ts +4 -0
  152. package/src/i18n/locales/es.ts +4 -0
  153. package/src/i18n/locales/fr.ts +4 -0
  154. package/src/i18n/locales/hu.ts +4 -0
  155. package/src/i18n/locales/it.ts +4 -0
  156. package/src/i18n/locales/zh.ts +4 -0
  157. package/src/lib/format.ts +24 -3
  158. package/src/rhf/line-items.tsx +6 -0
  159. package/src/theme/palette-derive.ts +10 -0
  160. package/tokens.css +9 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/i18n/locales/zh.ts"],"sourcesContent":["import { formatFileSize } from \"../kit-labels\";\nimport type { UiKitLabels } from \"../kit-labels\";\n\n/**\n * The kit's words in Chinese (Simplified): every namespace of {@link UiKitLabels}, for\n * `<UiKitProvider labels={UI_KIT_LABELS_ZH}>`.\n *\n * Self-contained on purpose — nothing but the kit's own `formatFileSize` — so it works\n * as a starting point to copy and adjust. Counts and sizes are formatted with\n * `zh-CN` digits; {@link uiKitLabelsZh} takes another number locale\n * (e.g. `\"de-CH\"` for 1’234) without touching the words.\n */\nexport function uiKitLabelsZh(numberLocale = \"zh-CN\"): UiKitLabels {\n const num = new Intl.NumberFormat(numberLocale);\n const n = (value: number) => num.format(value);\n\n return {\n feedbackAttachment: {\n attachmentAdd: \"附加图片\",\n attachmentCapture: \"截取屏幕\",\n attachmentPaste: \"……或从剪贴板粘贴截图。\",\n attachmentRemove: \"移除附件\",\n },\n feedbackDialog: {\n title: \"发送反馈\",\n category: \"类别\",\n subject: \"主题\",\n body: \"发生了什么?\",\n bodyOptional: \"发生了什么?(可选)\",\n attachment: \"截图\",\n submitHint: \"Ctrl/⌘ + Enter 发送\",\n cancel: \"取消\",\n save: \"发送\",\n },\n feedbackThread: {\n thread: \"评论\",\n empty: \"暂无评论\",\n loading: \"正在加载评论…\",\n you: \"我\",\n staff: \"工作人员\",\n attachments: \"附件\",\n },\n feedbackComposer: {\n field: \"撰写评论\",\n placeholder: \"撰写评论…\",\n send: \"发送\",\n sendHint: (modifier) => `${modifier} + Enter 发送`,\n sendHintEnter: \"Enter 发送,Shift + Enter 换行\",\n },\n accountSettings: {\n profile: {\n title: \"个人资料\",\n email: \"电子邮箱\",\n role: \"角色\",\n memberSince: \"注册时间\",\n displayName: \"显示名称\",\n save: \"保存\",\n },\n password: {\n title: \"修改密码\",\n current: \"当前密码\",\n next: \"新密码\",\n confirm: \"确认新密码\",\n submit: \"修改密码\",\n tooShort: \"新密码太短。\",\n mismatch: \"两次输入的密码不一致。\",\n },\n twoFactor: {\n status: \"双重验证\",\n enabledText: \"已开启\",\n disabledText: \"未开启\",\n enable: \"设置双重验证\",\n scanHint: \"请用身份验证器应用扫描此二维码,然后输入应用显示的验证码。\",\n codeLabel: \"验证码\",\n verify: \"验证并开启\",\n disableSection: \"关闭双重验证\",\n password: \"当前密码\",\n disable: \"关闭\",\n qrAlt: \"身份验证器应用的二维码\",\n secretHint: \"无法扫描?请改为在应用中输入此密钥:\",\n copySecret: \"复制密钥\",\n },\n passkeys: {\n title: \"通行密钥\",\n description: \"使用指纹、面容或设备 PIN 登录,无需密码。\",\n empty: \"暂无通行密钥\",\n loading: \"正在加载通行密钥…\",\n list: \"已注册的通行密钥\",\n nameLabel: \"名称(可选)\",\n namePlaceholder: \"例如:笔记本电脑、手机\",\n add: \"添加通行密钥\",\n adding: \"正在等待设备…\",\n rename: \"重命名\",\n renameItem: (name) => `重命名 ${name}`,\n renameField: (name) => `${name} 的新名称`,\n save: \"保存\",\n cancel: \"取消\",\n delete: \"删除\",\n deleteItem: (name) => `删除 ${name}`,\n deleteConfirm: (name) => `删除“${name}”?删除后将无法再用它登录。`,\n confirmDelete: \"删除通行密钥\",\n created: (date) => `添加于 ${date}`,\n lastUsed: (date) => `上次使用:${date}`,\n neverUsed: \"从未使用\",\n },\n },\n measuredGrid: {\n view: \"表格视图\",\n cellsView: \"单元格\",\n textView: \"文本\",\n addRow: \"添加行\",\n removeRow: (row) => `删除第 ${row} 行`,\n clear: \"清空表格\",\n pasteHint: \"可将电子表格中的一块数据粘贴到任意单元格\",\n cell: (column, row) => `${column},第 ${row} 行`,\n rowNumber: \"行\",\n rowActions: \"行操作\",\n keyboardHint:\n \"方向键在单元格之间移动。直接输入替换单元格内容,F2 编辑,Esc 撤销编辑。回车向下移动,并在末尾添加一行。\",\n lineError: (line) => `无法读取第 ${line} 行`,\n points: (count) => `${count} 个点`,\n problems: (count) => `${count} 个单元格不是数字`,\n },\n pageContents: { title: \"本页目录\" },\n common: {\n dismiss: \"关闭\",\n close: \"关闭\",\n clear: \"清除\",\n search: \"搜索\",\n done: \"完成\",\n cancel: \"取消\",\n save: \"保存\",\n back: \"上一步\",\n next: \"下一步\",\n remove: \"移除\",\n loading: \"加载中…\",\n noResults: \"无结果\",\n // Full-width colon, no space after it.\n fieldValue: (field, value) => `${field}:${value}`,\n opensInNewTab: \"在新标签页中打开\",\n },\n dataTable: {\n columns: \"列\",\n selectAllRows: \"全选所有行\",\n sortHint: \"点击排序 · 按住 Shift 点击可添加排序\",\n filter: \"筛选\",\n close: \"关闭\",\n selectRow: \"选择行\",\n autoSize: \"自动调整列宽\",\n loading: \"加载中…\",\n filters: \"筛选条件\",\n clearAll: \"全部清除\",\n done: \"完成\",\n pageSize: \"每页行数\",\n pageSizeAll: \"全部\",\n prevPage: \"上一页\",\n nextPage: \"下一页\",\n clearFilter: \"清除筛选\",\n filterPlaceholder: \"筛选…\",\n selectFilter: \"选择\",\n selectAll: \"全部\",\n selectNone: \"无\",\n dateFrom: \"从\",\n dateTo: \"至\",\n numberMin: \"最小值\",\n numberMax: \"最大值\",\n numberAbs: \"绝对值\",\n presets: {\n today: \"今天\",\n yesterday: \"昨天\",\n this_week: \"本周\",\n last_week: \"上周\",\n last_7_days: \"最近 7 天\",\n last_30_days: \"最近 30 天\",\n this_month: \"本月\",\n last_month: \"上月\",\n last_3_months: \"最近 3 个月\",\n ytd: \"今年至今\",\n last_year: \"去年\",\n },\n table: \"数据表格\",\n filterResults: (shown, total) => `显示 ${n(shown)} 行,共 ${n(total)} 行`,\n sortedAscending: (column) => `已按“${column}”升序排序`,\n sortedDescending: (column) => `已按“${column}”降序排序`,\n sortCleared: (column) => `已取消“${column}”的排序`,\n pageChanged: (page, totalPages) => `第 ${n(page)} 页,共 ${n(totalPages)} 页`,\n pageRange: (from, to, total) => `${n(from)}–${n(to)} / ${n(total)}`,\n rowCount: (total) => n(total),\n columnsCount: (visible, total) => `列(${n(visible)}/${n(total)})`,\n empty: \"暂无条目\",\n actions: \"操作\",\n edit: \"编辑\",\n delete: \"删除\",\n booleanTrue: \"是\",\n booleanFalse: \"否\",\n booleanUnset: \"未设置\",\n },\n miniCalendar: {\n previousMonth: \"上个月\",\n nextMonth: \"下个月\",\n // Already formatted in the provider's locale (\"2026年9月14日星期一\").\n day: (date) => date,\n chooseStart: \"请选择开始日期\",\n chooseEnd: \"请选择结束日期\",\n startSelected: (date) => `已选择 ${date} 为开始日期。请选择结束日期。`,\n rangeSelected: (from, to) => `已选择 ${from} 至 ${to}。如需重新选择,请先选择开始日期。`,\n },\n monthPicker: {\n previousYear: \"上一年\",\n nextYear: \"下一年\",\n panel: \"选择月份\",\n month: (monthYear) => monthYear,\n previousMonth: \"上个月\",\n nextMonth: \"下个月\",\n today: \"今天\",\n },\n calendarHeatmap: {\n grid: \"每日数值\",\n day: (date, value) => `${date}:${value}`,\n less: \"较少\",\n more: \"较多\",\n truncated: (count) =>\n `仅显示最近的日期;另有 ${n(count)} 天未显示。`,\n },\n datePicker: {\n apply: \"应用\",\n cancel: \"取消\",\n presets: \"快捷范围\",\n panel: \"选择日期\",\n rangePanel: \"选择日期范围\",\n clear: \"清除\",\n previousDay: \"前一天\",\n nextDay: \"后一天\",\n today: \"今天\",\n },\n popover: {\n panel: \"弹出框\",\n },\n combobox: {\n search: \"搜索\",\n noResults: \"无结果\",\n clear: \"清除\",\n loading: \"加载中…\",\n create: (query) => `创建“${query}”`,\n selectedCount: (count) => `已选 ${n(count)} 项`,\n loadError: \"无法加载结果\",\n resultCount: (count) => `${n(count)} 个结果`,\n minChars: (count) => `请至少输入 ${n(count)} 个字符`,\n },\n multiSelect: {\n search: \"搜索\",\n selectAll: \"全选\",\n clear: \"清除\",\n all: \"全部\",\n // The bare count, as in English: the trigger has always shown just the number.\n selectedCount: (count) => n(count),\n },\n calculator: {\n open: \"打开计算器\",\n panel: \"计算器\",\n calculation: \"算式\",\n backspace: \"退格\",\n clear: \"清除\",\n equals: \"等于\",\n done: \"完成\",\n plus: \"加\",\n minus: \"减\",\n times: \"乘\",\n divide: \"除以\",\n decimal: \"小数点\",\n },\n currency: {\n currency: \"货币\",\n search: \"搜索货币\",\n },\n chipInput: {\n added: (value) => `已添加“${value}”`,\n removed: (value) => `已移除“${value}”`,\n remove: \"移除\",\n atLimit: (max) => `已达上限(${n(max)} 项)`,\n duplicate: (value) => `“${value}”已在列表中`,\n },\n swatchPicker: {\n none: \"无颜色\",\n mixed: \"混合:所选项目的颜色各不相同\",\n },\n iconPicker: {\n none: \"无图标\",\n mixed: \"混合:所选项目的图标各不相同\",\n search: \"搜索图标\",\n noResults: \"没有匹配的图标\",\n resultCount: (count) => `${n(count)} 个图标`,\n },\n fieldSync: {\n synced: \"已保存\",\n edited: \"有未保存的更改\",\n pending: \"正在保存…\",\n error: \"保存失败\",\n retry: \"重试\",\n },\n passwordReveal: {\n show: \"显示密码\",\n hide: \"隐藏密码\",\n },\n dangerConfirm: {\n arm: \"删除…\",\n confirm: \"删除\",\n cancel: \"取消\",\n prompt: \"此操作无法撤销。\",\n password: \"密码\",\n phrase: (phrase) => `输入“${phrase}”以确认`,\n },\n tabs: {\n add: \"添加标签页\",\n // Quoted, so the spacing rule holds whether the tab's name is Han or Latin.\n remove: (tab) => `移除“${tab}”`,\n },\n appShell: {\n collapse: \"收起侧边栏\",\n expand: \"展开侧边栏\",\n toggleGroup: (groupLabel) => `${groupLabel}:页面`,\n },\n topBar: {\n theme: \"切换主题\",\n palette: \"外观预设\",\n language: \"语言\",\n switchRole: \"切换角色\",\n role: (value) => `角色:${value}`,\n },\n pickerSheet: {\n close: \"关闭\",\n },\n dialogFrame: {\n close: \"关闭\",\n },\n bulkActionBar: {\n selected: (count) => `已选择 ${n(count)} 项`,\n clear: \"清除选择\",\n cleared: \"已清除选择\",\n },\n swipeableRow: {\n actions: \"行操作\",\n },\n file: {\n // The kit's own `Intl` unit formatting, pinned to this locale.\n size: (bytes) => formatFileSize(bytes, numberLocale),\n },\n filePicker: {\n dropzone: \"文件上传\",\n browse: \"浏览\",\n empty: \"将文件拖放到此处\",\n emptyMultiple: \"将文件拖放到此处\",\n hint: (accept) => (accept ? `支持:${accept}` : \"任意文件类型\"),\n busy: \"正在上传…\",\n rejectedPick: (count) => (count === 1 ? \"未添加该文件\" : `${count} 个文件均未添加`),\n rejectedType: (name) => `“${name}”的文件类型不受支持`,\n rejectedTypeOnly: (accept) => `仅限 ${accept} 文件`,\n rejectedSize: (name, maxSize) => `“${name}”超过 ${maxSize}`,\n rejectedCount: (name, maxFiles) => `未添加“${name}”:最多 ${n(maxFiles)} 个文件`,\n rejectedInvalid: (name) => `“${name}”无法在此使用`,\n rejectedMany: (count) => `${n(count)} 个文件未添加`,\n selected: (count, firstName) =>\n count === 1 ? `已选择“${firstName}”` : `已选择 ${n(count)} 个文件`,\n remove: (name) => `移除“${name}”`,\n clearAll: \"移除所有文件\",\n removed: (name) => `已移除“${name}”`,\n cleared: \"已移除所有文件\",\n },\n wizard: {\n done: \"完成\",\n cancel: \"取消\",\n back: \"上一步\",\n next: \"下一步\",\n skip: \"跳过\",\n finish: \"完成\",\n submitting: \"正在创建…\",\n steps: \"步骤\",\n step: (current, total) => `第 ${n(current)} 步,共 ${n(total)} 步`,\n cancelTitle: \"放弃此表单?\",\n confirmCancel: \"已填写的内容将会丢失。\",\n cancelConfirmLabel: \"放弃\",\n cancelDismissLabel: \"继续编辑\",\n reviewTitle: \"确认信息\",\n edit: \"编辑\",\n missingRequired: \"请填写所有必填字段。\",\n genericError: \"发生错误\",\n },\n tour: {\n next: \"下一步\",\n back: \"上一步\",\n skip: \"跳过\",\n done: \"完成\",\n awaitClickHint: \"点击高亮的元素以继续\",\n step: (current, total) => `${n(current)} / ${n(total)}`,\n },\n commandPalette: {\n clear: \"清除搜索\",\n submit: \"搜索\",\n close: \"关闭\",\n placeholder: \"搜索…\",\n empty: \"无结果\",\n loading: \"搜索中…\",\n dialog: \"搜索\",\n error: \"搜索失败,请重试。\",\n },\n globalSearch: {\n trigger: \"搜索\",\n placeholder: \"搜索或跳转到…\",\n shortcut: (keys) => `搜索(${keys})`,\n suggestions: \"试试\",\n results: \"结果\",\n },\n sparkline: {\n rising: (first, last) => `从 ${first} 上升到 ${last}`,\n falling: (first, last) => `从 ${first} 下降到 ${last}`,\n flat: (value) => `保持在 ${value} 不变`,\n single: (value) => `仅一个值:${value}`,\n noData: \"无数据\",\n named: (name, summary) => `${name}:${summary}`,\n },\n statTile: {\n increase: (amount) => `上升 ${amount}`,\n decrease: (amount) => `下降 ${amount}`,\n unchanged: \"无变化\",\n better: (change) => `${change}(向好)`,\n worse: (change) => `${change}(变差)`,\n noValue: \"无数据\",\n loading: \"加载中…\",\n },\n signaturePad: {\n label: \"签名\",\n instructions: \"请使用鼠标、手指或触控笔在框内签名。\",\n typedFallbackHint: \"如果无法手写,可以改为输入姓名。\",\n empty: \"尚未签名\",\n signed: \"已签名\",\n undo: \"撤销上一笔\",\n clear: \"清除\",\n save: \"保存签名\",\n useTyped: \"改为输入姓名\",\n useDrawn: \"改为手写\",\n typedName: \"姓名\",\n cleared: \"签名已清除\",\n undone: \"已撤销上一笔\",\n viewEmpty: \"未签名\",\n viewDrawn: \"手写签名\",\n // Quoted, so the spacing rule holds whether the name is Han or Latin.\n viewTyped: (name) => `以输入的姓名“${name}”签名`,\n },\n passwordStrength: {\n tooShort: \"太短\",\n weak: \"弱\",\n fair: \"一般\",\n good: \"良好\",\n strong: \"强\",\n announcement: (level) => `密码强度:${level}`,\n // Unformatted, as in the English default.\n ruleLength: (minLength) => `至少 ${minLength} 个字符`,\n ruleCase: \"包含大写和小写字母\",\n ruleDigit: \"包含数字\",\n ruleSymbol: \"包含符号\",\n optional: (rule) => `${rule}(可选)`,\n met: \"已满足:\",\n notMet: \"未满足:\",\n tooLong: (maxBytes) => `最多 ${maxBytes} 个字符(带重音的字母和表情符号按多个字符计算)。`,\n },\n seriesChart: {\n resetZoom: \"重置缩放\",\n zoomHint:\n \"拖动以缩放:近似正方形的选区同时缩放两条坐标轴,细长的选区只缩放其所沿的那条轴。双击可重置。\",\n empty: \"无数据\",\n legend: \"数据系列\",\n points: \"图表数值\",\n },\n pieChart: {\n slices: \"图表扇区\",\n slice: (label, value, percent) => `${label}:${value}(${percent})`,\n total: \"合计\",\n empty: \"无数据\",\n legend: \"类别\",\n },\n confirmDialog: {\n confirm: \"确认\",\n cancel: \"取消\",\n },\n floatingPanel: {\n close: \"关闭\",\n badge: (count) => `${n(count)} 条新内容`,\n },\n copyButton: {\n copy: \"复制\",\n copied: \"已复制\",\n failed: \"复制失败\",\n copiedAnnouncement: \"已复制到剪贴板\",\n failedAnnouncement: \"无法复制到剪贴板\",\n },\n list: {\n unread: \"未读\",\n opensInNewTab: \"在新标签页中打开\",\n },\n breadcrumbs: {\n label: \"面包屑导航\",\n showAll: \"显示完整路径\",\n },\n toast: {\n close: \"关闭通知\",\n notifications: \"通知\",\n undo: \"撤销\",\n redo: \"重做\",\n },\n form: {\n save: \"保存\",\n cancel: \"取消\",\n },\n descriptionList: {\n empty: \"—\",\n },\n lineItems: {\n add: \"添加行\",\n remove: (row) => `删除第 ${row} 行`,\n confirmRemove: (row) => `删除第 ${row} 行?再次按下以确认`,\n row: (row) => `第 ${row} 行`,\n cell: (column, row) => `${column},第 ${row} 行`,\n totals: \"合计\",\n },\n progressBar: {\n unlimited: \"无限制\",\n overLimit: (amount) => `超出限额 ${amount}`,\n },\n signedAmount: {\n positive: (amount) => `正 ${amount}`,\n negative: (amount) => `负 ${amount}`,\n },\n errorBoundary: {\n title: \"出错了\",\n message: \"无法显示页面的这一部分。请重试或重新加载页面。\",\n retry: \"重试\",\n details: \"错误详情\",\n reload: \"重新加载\",\n updateTitle: \"有新版本可用\",\n updateMessage: \"自此页面加载以来,应用的部分内容已更新。请重新加载以获取新版本。\",\n offlineTitle: \"当前处于离线状态\",\n offlineMessage: \"没有网络连接,无法加载此页面。请恢复连接后重新加载页面。\",\n copyReport: \"复制错误报告\",\n reported: \"此错误已自动报告。\",\n reportedAs: (reference) => `报告编号:${reference}`,\n },\n authedImage: {\n loading: \"正在加载图片…\",\n loadError: \"无法加载图片\",\n failedImage: (alt) => `${alt}:无法加载图片`,\n },\n imageGrid: {\n list: \"图片\",\n item: (index, count) => `第 ${n(index)} 张,共 ${n(count)} 张`,\n actions: (name) => `${name}的操作`,\n },\n lightbox: {\n dialog: \"图片查看器\",\n close: \"关闭\",\n previous: \"上一张\",\n next: \"下一张\",\n counter: (index, count) => `${n(index)} / ${n(count)}`,\n position: (index, count) => `第 ${n(index)} 张,共 ${n(count)} 张`,\n download: \"下载\",\n zoom: \"缩放\",\n noPreview: \"此文件无法预览\",\n openInNewTab: \"在新标签页中打开\",\n },\n };\n}\n\nexport const UI_KIT_LABELS_ZH: UiKitLabels = uiKitLabelsZh();\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/i18n/locales/zh.ts"],"sourcesContent":["import { formatFileSize } from \"../kit-labels\";\nimport type { UiKitLabels } from \"../kit-labels\";\n\n/**\n * The kit's words in Chinese (Simplified): every namespace of {@link UiKitLabels}, for\n * `<UiKitProvider labels={UI_KIT_LABELS_ZH}>`.\n *\n * Self-contained on purpose — nothing but the kit's own `formatFileSize` — so it works\n * as a starting point to copy and adjust. Counts and sizes are formatted with\n * `zh-CN` digits; {@link uiKitLabelsZh} takes another number locale\n * (e.g. `\"de-CH\"` for 1’234) without touching the words.\n */\nexport function uiKitLabelsZh(numberLocale = \"zh-CN\"): UiKitLabels {\n const num = new Intl.NumberFormat(numberLocale);\n const n = (value: number) => num.format(value);\n\n return {\n feedbackAttachment: {\n attachmentAdd: \"附加图片\",\n attachmentCapture: \"截取屏幕\",\n attachmentPaste: \"……或从剪贴板粘贴截图。\",\n attachmentRemove: \"移除附件\",\n attachmentList: \"附件\",\n attachmentScreenshot: \"截图\",\n attachmentRemoveFile: (name) => `移除 ${name}`,\n attachmentLimit: (max) => `最多 ${n(max)} 个附件,请先移除一个再添加。`,\n },\n feedbackDialog: {\n title: \"发送反馈\",\n category: \"类别\",\n subject: \"主题\",\n body: \"发生了什么?\",\n bodyOptional: \"发生了什么?(可选)\",\n attachment: \"截图\",\n submitHint: \"Ctrl/⌘ + Enter 发送\",\n cancel: \"取消\",\n save: \"发送\",\n },\n feedbackThread: {\n thread: \"评论\",\n empty: \"暂无评论\",\n loading: \"正在加载评论…\",\n you: \"我\",\n staff: \"工作人员\",\n attachments: \"附件\",\n },\n feedbackComposer: {\n field: \"撰写评论\",\n placeholder: \"撰写评论…\",\n send: \"发送\",\n sendHint: (modifier) => `${modifier} + Enter 发送`,\n sendHintEnter: \"Enter 发送,Shift + Enter 换行\",\n },\n accountSettings: {\n profile: {\n title: \"个人资料\",\n email: \"电子邮箱\",\n role: \"角色\",\n memberSince: \"注册时间\",\n displayName: \"显示名称\",\n save: \"保存\",\n },\n password: {\n title: \"修改密码\",\n current: \"当前密码\",\n next: \"新密码\",\n confirm: \"确认新密码\",\n submit: \"修改密码\",\n tooShort: \"新密码太短。\",\n mismatch: \"两次输入的密码不一致。\",\n },\n twoFactor: {\n status: \"双重验证\",\n enabledText: \"已开启\",\n disabledText: \"未开启\",\n enable: \"设置双重验证\",\n scanHint: \"请用身份验证器应用扫描此二维码,然后输入应用显示的验证码。\",\n codeLabel: \"验证码\",\n verify: \"验证并开启\",\n disableSection: \"关闭双重验证\",\n password: \"当前密码\",\n disable: \"关闭\",\n qrAlt: \"身份验证器应用的二维码\",\n secretHint: \"无法扫描?请改为在应用中输入此密钥:\",\n copySecret: \"复制密钥\",\n },\n passkeys: {\n title: \"通行密钥\",\n description: \"使用指纹、面容或设备 PIN 登录,无需密码。\",\n empty: \"暂无通行密钥\",\n loading: \"正在加载通行密钥…\",\n list: \"已注册的通行密钥\",\n nameLabel: \"名称(可选)\",\n namePlaceholder: \"例如:笔记本电脑、手机\",\n add: \"添加通行密钥\",\n adding: \"正在等待设备…\",\n rename: \"重命名\",\n renameItem: (name) => `重命名 ${name}`,\n renameField: (name) => `${name} 的新名称`,\n save: \"保存\",\n cancel: \"取消\",\n delete: \"删除\",\n deleteItem: (name) => `删除 ${name}`,\n deleteConfirm: (name) => `删除“${name}”?删除后将无法再用它登录。`,\n confirmDelete: \"删除通行密钥\",\n created: (date) => `添加于 ${date}`,\n lastUsed: (date) => `上次使用:${date}`,\n neverUsed: \"从未使用\",\n },\n },\n measuredGrid: {\n view: \"表格视图\",\n cellsView: \"单元格\",\n textView: \"文本\",\n addRow: \"添加行\",\n removeRow: (row) => `删除第 ${row} 行`,\n clear: \"清空表格\",\n pasteHint: \"可将电子表格中的一块数据粘贴到任意单元格\",\n cell: (column, row) => `${column},第 ${row} 行`,\n rowNumber: \"行\",\n rowActions: \"行操作\",\n keyboardHint:\n \"方向键在单元格之间移动。直接输入替换单元格内容,F2 编辑,Esc 撤销编辑。回车向下移动,并在末尾添加一行。\",\n lineError: (line) => `无法读取第 ${line} 行`,\n points: (count) => `${count} 个点`,\n problems: (count) => `${count} 个单元格不是数字`,\n },\n pageContents: { title: \"本页目录\" },\n common: {\n dismiss: \"关闭\",\n close: \"关闭\",\n clear: \"清除\",\n search: \"搜索\",\n done: \"完成\",\n cancel: \"取消\",\n save: \"保存\",\n back: \"上一步\",\n next: \"下一步\",\n remove: \"移除\",\n loading: \"加载中…\",\n noResults: \"无结果\",\n // Full-width colon, no space after it.\n fieldValue: (field, value) => `${field}:${value}`,\n opensInNewTab: \"在新标签页中打开\",\n },\n dataTable: {\n columns: \"列\",\n selectAllRows: \"全选所有行\",\n sortHint: \"点击排序 · 按住 Shift 点击可添加排序\",\n filter: \"筛选\",\n close: \"关闭\",\n selectRow: \"选择行\",\n autoSize: \"自动调整列宽\",\n loading: \"加载中…\",\n filters: \"筛选条件\",\n clearAll: \"全部清除\",\n done: \"完成\",\n pageSize: \"每页行数\",\n pageSizeAll: \"全部\",\n prevPage: \"上一页\",\n nextPage: \"下一页\",\n clearFilter: \"清除筛选\",\n filterPlaceholder: \"筛选…\",\n selectFilter: \"选择\",\n selectAll: \"全部\",\n selectNone: \"无\",\n dateFrom: \"从\",\n dateTo: \"至\",\n numberMin: \"最小值\",\n numberMax: \"最大值\",\n numberAbs: \"绝对值\",\n presets: {\n today: \"今天\",\n yesterday: \"昨天\",\n this_week: \"本周\",\n last_week: \"上周\",\n last_7_days: \"最近 7 天\",\n last_30_days: \"最近 30 天\",\n this_month: \"本月\",\n last_month: \"上月\",\n last_3_months: \"最近 3 个月\",\n ytd: \"今年至今\",\n last_year: \"去年\",\n },\n table: \"数据表格\",\n filterResults: (shown, total) => `显示 ${n(shown)} 行,共 ${n(total)} 行`,\n sortedAscending: (column) => `已按“${column}”升序排序`,\n sortedDescending: (column) => `已按“${column}”降序排序`,\n sortCleared: (column) => `已取消“${column}”的排序`,\n pageChanged: (page, totalPages) => `第 ${n(page)} 页,共 ${n(totalPages)} 页`,\n pageRange: (from, to, total) => `${n(from)}–${n(to)} / ${n(total)}`,\n rowCount: (total) => n(total),\n columnsCount: (visible, total) => `列(${n(visible)}/${n(total)})`,\n empty: \"暂无条目\",\n actions: \"操作\",\n edit: \"编辑\",\n delete: \"删除\",\n booleanTrue: \"是\",\n booleanFalse: \"否\",\n booleanUnset: \"未设置\",\n },\n miniCalendar: {\n previousMonth: \"上个月\",\n nextMonth: \"下个月\",\n // Already formatted in the provider's locale (\"2026年9月14日星期一\").\n day: (date) => date,\n chooseStart: \"请选择开始日期\",\n chooseEnd: \"请选择结束日期\",\n startSelected: (date) => `已选择 ${date} 为开始日期。请选择结束日期。`,\n rangeSelected: (from, to) => `已选择 ${from} 至 ${to}。如需重新选择,请先选择开始日期。`,\n },\n monthPicker: {\n previousYear: \"上一年\",\n nextYear: \"下一年\",\n panel: \"选择月份\",\n month: (monthYear) => monthYear,\n previousMonth: \"上个月\",\n nextMonth: \"下个月\",\n today: \"今天\",\n },\n calendarHeatmap: {\n grid: \"每日数值\",\n day: (date, value) => `${date}:${value}`,\n less: \"较少\",\n more: \"较多\",\n truncated: (count) =>\n `仅显示最近的日期;另有 ${n(count)} 天未显示。`,\n },\n datePicker: {\n apply: \"应用\",\n cancel: \"取消\",\n presets: \"快捷范围\",\n panel: \"选择日期\",\n rangePanel: \"选择日期范围\",\n clear: \"清除\",\n previousDay: \"前一天\",\n nextDay: \"后一天\",\n today: \"今天\",\n },\n popover: {\n panel: \"弹出框\",\n },\n combobox: {\n search: \"搜索\",\n noResults: \"无结果\",\n clear: \"清除\",\n loading: \"加载中…\",\n create: (query) => `创建“${query}”`,\n selectedCount: (count) => `已选 ${n(count)} 项`,\n loadError: \"无法加载结果\",\n resultCount: (count) => `${n(count)} 个结果`,\n minChars: (count) => `请至少输入 ${n(count)} 个字符`,\n },\n multiSelect: {\n search: \"搜索\",\n selectAll: \"全选\",\n clear: \"清除\",\n all: \"全部\",\n // The bare count, as in English: the trigger has always shown just the number.\n selectedCount: (count) => n(count),\n },\n calculator: {\n open: \"打开计算器\",\n panel: \"计算器\",\n calculation: \"算式\",\n backspace: \"退格\",\n clear: \"清除\",\n equals: \"等于\",\n done: \"完成\",\n plus: \"加\",\n minus: \"减\",\n times: \"乘\",\n divide: \"除以\",\n decimal: \"小数点\",\n },\n currency: {\n currency: \"货币\",\n search: \"搜索货币\",\n },\n chipInput: {\n added: (value) => `已添加“${value}”`,\n removed: (value) => `已移除“${value}”`,\n remove: \"移除\",\n atLimit: (max) => `已达上限(${n(max)} 项)`,\n duplicate: (value) => `“${value}”已在列表中`,\n },\n swatchPicker: {\n none: \"无颜色\",\n mixed: \"混合:所选项目的颜色各不相同\",\n },\n iconPicker: {\n none: \"无图标\",\n mixed: \"混合:所选项目的图标各不相同\",\n search: \"搜索图标\",\n noResults: \"没有匹配的图标\",\n resultCount: (count) => `${n(count)} 个图标`,\n },\n fieldSync: {\n synced: \"已保存\",\n edited: \"有未保存的更改\",\n pending: \"正在保存…\",\n error: \"保存失败\",\n retry: \"重试\",\n },\n passwordReveal: {\n show: \"显示密码\",\n hide: \"隐藏密码\",\n },\n dangerConfirm: {\n arm: \"删除…\",\n confirm: \"删除\",\n cancel: \"取消\",\n prompt: \"此操作无法撤销。\",\n password: \"密码\",\n phrase: (phrase) => `输入“${phrase}”以确认`,\n },\n tabs: {\n add: \"添加标签页\",\n // Quoted, so the spacing rule holds whether the tab's name is Han or Latin.\n remove: (tab) => `移除“${tab}”`,\n },\n appShell: {\n collapse: \"收起侧边栏\",\n expand: \"展开侧边栏\",\n toggleGroup: (groupLabel) => `${groupLabel}:页面`,\n },\n topBar: {\n theme: \"切换主题\",\n palette: \"外观预设\",\n language: \"语言\",\n switchRole: \"切换角色\",\n role: (value) => `角色:${value}`,\n },\n pickerSheet: {\n close: \"关闭\",\n },\n dialogFrame: {\n close: \"关闭\",\n },\n bulkActionBar: {\n selected: (count) => `已选择 ${n(count)} 项`,\n clear: \"清除选择\",\n cleared: \"已清除选择\",\n },\n swipeableRow: {\n actions: \"行操作\",\n },\n file: {\n // The kit's own `Intl` unit formatting, pinned to this locale.\n size: (bytes) => formatFileSize(bytes, numberLocale),\n },\n filePicker: {\n dropzone: \"文件上传\",\n browse: \"浏览\",\n empty: \"将文件拖放到此处\",\n emptyMultiple: \"将文件拖放到此处\",\n hint: (accept) => (accept ? `支持:${accept}` : \"任意文件类型\"),\n busy: \"正在上传…\",\n rejectedPick: (count) => (count === 1 ? \"未添加该文件\" : `${count} 个文件均未添加`),\n rejectedType: (name) => `“${name}”的文件类型不受支持`,\n rejectedTypeOnly: (accept) => `仅限 ${accept} 文件`,\n rejectedSize: (name, maxSize) => `“${name}”超过 ${maxSize}`,\n rejectedCount: (name, maxFiles) => `未添加“${name}”:最多 ${n(maxFiles)} 个文件`,\n rejectedInvalid: (name) => `“${name}”无法在此使用`,\n rejectedMany: (count) => `${n(count)} 个文件未添加`,\n selected: (count, firstName) =>\n count === 1 ? `已选择“${firstName}”` : `已选择 ${n(count)} 个文件`,\n remove: (name) => `移除“${name}”`,\n clearAll: \"移除所有文件\",\n removed: (name) => `已移除“${name}”`,\n cleared: \"已移除所有文件\",\n },\n wizard: {\n done: \"完成\",\n cancel: \"取消\",\n back: \"上一步\",\n next: \"下一步\",\n skip: \"跳过\",\n finish: \"完成\",\n submitting: \"正在创建…\",\n steps: \"步骤\",\n step: (current, total) => `第 ${n(current)} 步,共 ${n(total)} 步`,\n cancelTitle: \"放弃此表单?\",\n confirmCancel: \"已填写的内容将会丢失。\",\n cancelConfirmLabel: \"放弃\",\n cancelDismissLabel: \"继续编辑\",\n reviewTitle: \"确认信息\",\n edit: \"编辑\",\n missingRequired: \"请填写所有必填字段。\",\n genericError: \"发生错误\",\n },\n tour: {\n next: \"下一步\",\n back: \"上一步\",\n skip: \"跳过\",\n done: \"完成\",\n awaitClickHint: \"点击高亮的元素以继续\",\n step: (current, total) => `${n(current)} / ${n(total)}`,\n },\n commandPalette: {\n clear: \"清除搜索\",\n submit: \"搜索\",\n close: \"关闭\",\n placeholder: \"搜索…\",\n empty: \"无结果\",\n loading: \"搜索中…\",\n dialog: \"搜索\",\n error: \"搜索失败,请重试。\",\n },\n globalSearch: {\n trigger: \"搜索\",\n placeholder: \"搜索或跳转到…\",\n shortcut: (keys) => `搜索(${keys})`,\n suggestions: \"试试\",\n results: \"结果\",\n },\n sparkline: {\n rising: (first, last) => `从 ${first} 上升到 ${last}`,\n falling: (first, last) => `从 ${first} 下降到 ${last}`,\n flat: (value) => `保持在 ${value} 不变`,\n single: (value) => `仅一个值:${value}`,\n noData: \"无数据\",\n named: (name, summary) => `${name}:${summary}`,\n },\n statTile: {\n increase: (amount) => `上升 ${amount}`,\n decrease: (amount) => `下降 ${amount}`,\n unchanged: \"无变化\",\n better: (change) => `${change}(向好)`,\n worse: (change) => `${change}(变差)`,\n noValue: \"无数据\",\n loading: \"加载中…\",\n },\n signaturePad: {\n label: \"签名\",\n instructions: \"请使用鼠标、手指或触控笔在框内签名。\",\n typedFallbackHint: \"如果无法手写,可以改为输入姓名。\",\n empty: \"尚未签名\",\n signed: \"已签名\",\n undo: \"撤销上一笔\",\n clear: \"清除\",\n save: \"保存签名\",\n useTyped: \"改为输入姓名\",\n useDrawn: \"改为手写\",\n typedName: \"姓名\",\n cleared: \"签名已清除\",\n undone: \"已撤销上一笔\",\n viewEmpty: \"未签名\",\n viewDrawn: \"手写签名\",\n // Quoted, so the spacing rule holds whether the name is Han or Latin.\n viewTyped: (name) => `以输入的姓名“${name}”签名`,\n },\n passwordStrength: {\n tooShort: \"太短\",\n weak: \"弱\",\n fair: \"一般\",\n good: \"良好\",\n strong: \"强\",\n announcement: (level) => `密码强度:${level}`,\n // Unformatted, as in the English default.\n ruleLength: (minLength) => `至少 ${minLength} 个字符`,\n ruleCase: \"包含大写和小写字母\",\n ruleDigit: \"包含数字\",\n ruleSymbol: \"包含符号\",\n optional: (rule) => `${rule}(可选)`,\n met: \"已满足:\",\n notMet: \"未满足:\",\n tooLong: (maxBytes) => `最多 ${maxBytes} 个字符(带重音的字母和表情符号按多个字符计算)。`,\n },\n seriesChart: {\n resetZoom: \"重置缩放\",\n zoomHint:\n \"拖动以缩放:近似正方形的选区同时缩放两条坐标轴,细长的选区只缩放其所沿的那条轴。双击可重置。\",\n empty: \"无数据\",\n legend: \"数据系列\",\n points: \"图表数值\",\n },\n pieChart: {\n slices: \"图表扇区\",\n slice: (label, value, percent) => `${label}:${value}(${percent})`,\n total: \"合计\",\n empty: \"无数据\",\n legend: \"类别\",\n },\n confirmDialog: {\n confirm: \"确认\",\n cancel: \"取消\",\n },\n floatingPanel: {\n close: \"关闭\",\n badge: (count) => `${n(count)} 条新内容`,\n },\n copyButton: {\n copy: \"复制\",\n copied: \"已复制\",\n failed: \"复制失败\",\n copiedAnnouncement: \"已复制到剪贴板\",\n failedAnnouncement: \"无法复制到剪贴板\",\n },\n list: {\n unread: \"未读\",\n opensInNewTab: \"在新标签页中打开\",\n },\n breadcrumbs: {\n label: \"面包屑导航\",\n showAll: \"显示完整路径\",\n },\n toast: {\n close: \"关闭通知\",\n notifications: \"通知\",\n undo: \"撤销\",\n redo: \"重做\",\n },\n form: {\n save: \"保存\",\n cancel: \"取消\",\n },\n descriptionList: {\n empty: \"—\",\n },\n lineItems: {\n add: \"添加行\",\n remove: (row) => `删除第 ${row} 行`,\n confirmRemove: (row) => `删除第 ${row} 行?再次按下以确认`,\n row: (row) => `第 ${row} 行`,\n cell: (column, row) => `${column},第 ${row} 行`,\n totals: \"合计\",\n },\n progressBar: {\n unlimited: \"无限制\",\n overLimit: (amount) => `超出限额 ${amount}`,\n },\n signedAmount: {\n positive: (amount) => `正 ${amount}`,\n negative: (amount) => `负 ${amount}`,\n },\n errorBoundary: {\n title: \"出错了\",\n message: \"无法显示页面的这一部分。请重试或重新加载页面。\",\n retry: \"重试\",\n details: \"错误详情\",\n reload: \"重新加载\",\n updateTitle: \"有新版本可用\",\n updateMessage: \"自此页面加载以来,应用的部分内容已更新。请重新加载以获取新版本。\",\n offlineTitle: \"当前处于离线状态\",\n offlineMessage: \"没有网络连接,无法加载此页面。请恢复连接后重新加载页面。\",\n copyReport: \"复制错误报告\",\n reported: \"此错误已自动报告。\",\n reportedAs: (reference) => `报告编号:${reference}`,\n },\n authedImage: {\n loading: \"正在加载图片…\",\n loadError: \"无法加载图片\",\n failedImage: (alt) => `${alt}:无法加载图片`,\n },\n imageGrid: {\n list: \"图片\",\n item: (index, count) => `第 ${n(index)} 张,共 ${n(count)} 张`,\n actions: (name) => `${name}的操作`,\n },\n lightbox: {\n dialog: \"图片查看器\",\n close: \"关闭\",\n previous: \"上一张\",\n next: \"下一张\",\n counter: (index, count) => `${n(index)} / ${n(count)}`,\n position: (index, count) => `第 ${n(index)} 张,共 ${n(count)} 张`,\n download: \"下载\",\n zoom: \"缩放\",\n noPreview: \"此文件无法预览\",\n openInNewTab: \"在新标签页中打开\",\n },\n };\n}\n\nexport const UI_KIT_LABELS_ZH: UiKitLabels = uiKitLabelsZh();\n"],"mappings":"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","names":[]}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { commitExpression, evaluateExpression, formatResult, isBareAmount, looksLikeExpression, sanitizeLive, splitLeadingSign } from './lib/calc.js';
2
2
  export { cn } from './lib/cn.js';
3
3
  export { logger, setStoreLog } from './lib/logger.js';
4
- export { DateInput, EMPTY_FORMATTED_VALUE, FormatDateOptions, FormatDateStyle, FormatDigits, FormatMoneyOptions, FormatNumberBaseOptions, FormatNumberOptions, FormatPercentOptions, FormatRelativeTimeOptions, KitFormat, currencyMinorDigits, formatDate, formatMoney, formatNumber, formatPercent, formatRelativeTime, roundToCurrency, toDate, useKitFormat } from './lib/format.js';
4
+ export { DateInput, EMPTY_FORMATTED_VALUE, FormatDateOptions, FormatDateStyle, FormatDigits, FormatMoneyOptions, FormatNumberBaseOptions, FormatNumberOptions, FormatPercentOptions, FormatRelativeTimeOptions, KitFormat, RoundToCurrencyOptions, currencyMinorDigits, formatDate, formatMoney, formatNumber, formatPercent, formatRelativeTime, roundToCurrency, toDate, useKitFormat } from './lib/format.js';
5
5
  export { readStored, writeStored } from './lib/safe-storage.js';
6
6
  export { useMediaQuery } from './hooks/use-media-query.js';
7
7
  export { useBodyScrollLock } from './hooks/use-body-scroll-lock.js';
@@ -25,7 +25,7 @@ export { AnchorRole, ChartRampReport, ContrastCheck, ContrastReport, DeriveOptio
25
25
  export { ALTERNATIVE_PRESETS, DEFAULT_PRESET, DERIVED_PRESETS, IMPRINT_PRESET, PALETTES, PalettePreset, TokenSet, applyTokenSet, presetById } from './theme/palette-presets.js';
26
26
  export { ThemeMode, ThemePreference, ThemeState, ThemeStore, applyPersistedTheme, createThemeStore } from './theme/theme-store.js';
27
27
  export { PaletteStore, applyPersistedPalette, createPaletteStore } from './theme/palette-store.js';
28
- export { A as AppShellLabels, B as Button, a as ButtonClassesOptions, b as ButtonLinkProps, c as ButtonProps, d as ButtonSize, e as ButtonTone, f as ButtonVariant, C as CalculatorLabels, g as Card, h as CardAction, i as CardActionProps, j as CardContent, k as CardContentProps, l as CardDescription, m as CardDescriptionProps, n as CardFooter, o as CardFooterProps, p as CardHeader, q as CardHeaderProps, r as CardProps, s as CardTitle, t as CardTitleProps, u as CardTone, v as ChartTooltipPlacement, w as ComboboxLabels, x as CommonLabels, y as CopyButton, z as CopyButtonLabels, D as CopyButtonProps, E as CurrencyLabels, F as DEFAULT_APP_SHELL_LABELS, G as DEFAULT_CALCULATOR_LABELS, H as DEFAULT_COMBOBOX_LABELS, I as DEFAULT_COMMON_LABELS, J as DEFAULT_COPY_BUTTON_LABELS, K as DEFAULT_CURRENCY_LABELS, L as DEFAULT_DATE_PICKER_LABELS, M as DEFAULT_FILE_LABELS, N as DEFAULT_FILE_PICKER_LABELS, O as DEFAULT_FORM_ACTIONS_LABELS, P as DEFAULT_MULTI_SELECT_LABELS, Q as DEFAULT_PASSWORD_REVEAL_LABELS, R as DEFAULT_PICKER_SHEET_LABELS, S as DEFAULT_SWIPEABLE_ROW_LABELS, T as DEFAULT_TABS_LABELS, U as DEFAULT_TOP_BAR_LABELS, V as DatePickerLabels, W as EmptyState, X as EmptyStateProps, Y as FIELD_BASE, Z as FIELD_DISPLAY, _ as FIELD_FLOATING_PAD, $ as FIELD_INVALID, a0 as FIELD_TRIGGER, a1 as FIELD_WRITABLE_LOOK, a2 as FLOATING_INPUT_CLASS, a3 as FLOATING_LABEL_CLASS, a4 as FLOATING_LABEL_STATIC, a5 as FieldChevron, a6 as FieldChevronProps, a7 as FieldHint, a8 as FieldHintProps, a9 as FieldLabel, aa as FieldLabelProps, ab as FileButton, ac as FileButtonProps, ad as FileLabels, ae as FilePickerLabels, af as FileRejection, ag as FileRejectionReason, ah as FileScreenOptions, ai as FloatingField, aj as FloatingFieldProps, ak as FormActions, al as FormActionsAlign, am as FormActionsDestructive, an as FormActionsLabels, ao as FormActionsPlacement, ap as FormActionsProps, aq as IconButton, ar as IconButtonGlyphSize, as as IconButtonLinkProps, at as IconButtonProps, au as IconButtonSize, av as IconButtonTone, aw as IconButtonToneColor, ax as IconButtonVariant, ay as Input, az as InputProps, aA as KitLinkComponent, aB as KitLinkProps, aC as Label, aD as LabelOverride, aE as LabelProps, aF as MultiSelectLabels, aG as PHONE_QUERY, aH as PasswordRevealLabels, aI as PickerSheetLabels, aJ as Select, aK as SelectProps, aL as Spinner, aM as SpinnerProps, aN as SwipeableRowLabels, aO as TabItem, aP as Tabs, aQ as TabsLabels, aR as TabsProps, aS as Textarea, aT as TextareaProps, aU as TopBarLabels, aV as UiKitLabelOverrides, aW as UiKitLabels, aX as UiKitProvider, aY as UiKitProviderProps, aZ as UseFilePickerOptions, a_ as UseFilePickerReturn, a$ as buttonClasses, b0 as formatFileSize, b1 as matchesAccept, b2 as missingKitLabels, b3 as resolvePasswordRevealLabels, b4 as useFilePicker, b5 as useKitChartTooltipPlacement, b6 as useKitFileLabels, b7 as useKitLabelOverrides, b8 as useKitLabels, b9 as useKitLink, ba as useKitLocale, bb as useKitWeekStart } from './kit-labels-CnnBd-2N.js';
28
+ export { A as AppShellLabels, B as Button, a as ButtonClassesOptions, b as ButtonLinkProps, c as ButtonProps, d as ButtonSize, e as ButtonTone, f as ButtonVariant, C as CalculatorLabels, g as Card, h as CardAction, i as CardActionProps, j as CardContent, k as CardContentProps, l as CardDescription, m as CardDescriptionProps, n as CardFooter, o as CardFooterProps, p as CardHeader, q as CardHeaderProps, r as CardProps, s as CardTitle, t as CardTitleLevel, u as CardTitleProps, v as CardTone, w as ChartTooltipPlacement, x as ComboboxLabels, y as CommonLabels, z as CopyButton, D as CopyButtonLabels, E as CopyButtonProps, F as CurrencyLabels, G as DEFAULT_APP_SHELL_LABELS, H as DEFAULT_CALCULATOR_LABELS, I as DEFAULT_COMBOBOX_LABELS, J as DEFAULT_COMMON_LABELS, K as DEFAULT_COPY_BUTTON_LABELS, L as DEFAULT_CURRENCY_LABELS, M as DEFAULT_DATE_PICKER_LABELS, N as DEFAULT_FILE_LABELS, O as DEFAULT_FILE_PICKER_LABELS, P as DEFAULT_FORM_ACTIONS_LABELS, Q as DEFAULT_MULTI_SELECT_LABELS, R as DEFAULT_PASSWORD_REVEAL_LABELS, S as DEFAULT_PICKER_SHEET_LABELS, T as DEFAULT_SWIPEABLE_ROW_LABELS, U as DEFAULT_TABS_LABELS, V as DEFAULT_TOP_BAR_LABELS, W as DatePickerLabels, X as EmptyState, Y as EmptyStateProps, Z as FIELD_BASE, _ as FIELD_DISPLAY, $ as FIELD_FLOATING_PAD, a0 as FIELD_INVALID, a1 as FIELD_TRIGGER, a2 as FIELD_WRITABLE_LOOK, a3 as FLOATING_INPUT_CLASS, a4 as FLOATING_LABEL_CLASS, a5 as FLOATING_LABEL_STATIC, a6 as FieldChevron, a7 as FieldChevronProps, a8 as FieldHint, a9 as FieldHintProps, aa as FieldLabel, ab as FieldLabelProps, ac as FileButton, ad as FileButtonProps, ae as FileLabels, af as FilePickerLabels, ag as FileRejection, ah as FileRejectionReason, ai as FileScreenOptions, aj as FloatingField, ak as FloatingFieldProps, al as FormActions, am as FormActionsAlign, an as FormActionsDestructive, ao as FormActionsLabels, ap as FormActionsPlacement, aq as FormActionsProps, ar as FormActionsStickyWithin, as as FormActionsSubmitProps, at as IconButton, au as IconButtonGlyphSize, av as IconButtonLinkProps, aw as IconButtonProps, ax as IconButtonSize, ay as IconButtonTone, az as IconButtonToneColor, aA as IconButtonVariant, aB as Input, aC as InputProps, aD as KitLinkComponent, aE as KitLinkProps, aF as Label, aG as LabelOverride, aH as LabelProps, aI as MultiSelectLabels, aJ as PHONE_QUERY, aK as PasswordRevealLabels, aL as PickerSheetLabels, aM as Select, aN as SelectProps, aO as Spinner, aP as SpinnerProps, aQ as SwipeableRowLabels, aR as TabItem, aS as Tabs, aT as TabsLabels, aU as TabsProps, aV as Textarea, aW as TextareaProps, aX as TopBarLabels, aY as UiKitLabelOverrides, aZ as UiKitLabels, a_ as UiKitProvider, a$ as UiKitProviderProps, b0 as UseFilePickerOptions, b1 as UseFilePickerReturn, b2 as buttonClasses, b3 as formatFileSize, b4 as matchesAccept, b5 as missingKitLabels, b6 as resolvePasswordRevealLabels, b7 as useFilePicker, b8 as useKitChartTooltipPlacement, b9 as useKitFileLabels, ba as useKitLabelOverrides, bb as useKitLabels, bc as useKitLink, bd as useKitLocale, be as useKitWeekStart } from './kit-labels-DE--LmCk.js';
29
29
  export { Field, FieldControlProps, FieldLabelVisibility, FieldProps, FieldRenderMeta } from './components/field.js';
30
30
  export { SearchField, SearchFieldProps } from './components/search-field.js';
31
31
  export { DropdownPanel, DropdownPanelProps, DropdownSearchHeader, DropdownSearchHeaderProps, useDropdown, useDropdownSearch } from './components/dropdown.js';
@@ -78,7 +78,7 @@ export { DEFAULT_SERIES_CHART_LABELS, SeriesChartLabels } from './components/ser
78
78
  export { PieChart, PieChartProps, PieChartSlice } from './components/pie-chart.js';
79
79
  export { DEFAULT_PIE_CHART_LABELS, PieChartLabels } from './components/pie-chart-labels.js';
80
80
  export { PasswordSetting, ProfileSetting, TwoFactorSetting, TwoFactorSetupData } from './components/account-settings.js';
81
- export { PasskeyItem, PasskeysSetting, PasskeysSettingProps } from './components/passkeys-setting.js';
81
+ export { PasskeyDataAttributes, PasskeyId, PasskeyItem, PasskeysSetting, PasskeysSettingProps } from './components/passkeys-setting.js';
82
82
  export { QrCode, QrCodeProps } from './components/qr-code.js';
83
83
  export { QrEncodeOptions, QrErrorCorrection, QrMatrix, encodeQr } from './lib/qr-encode.js';
84
84
  export { AlertBanner, AlertBannerProps, AlertSize, AlertTone, alertFrameClass, toneFrameClass } from './components/alert-banner.js';
@@ -97,11 +97,11 @@ export { DatePicker, DatePickerProps, DateRangeCommit, DateRangeDraftSummary, Da
97
97
  export { TreeItemState, TreeNode, TreeRow, TreeRowProps, TreeView, TreeViewProps } from './components/tree-view.js';
98
98
  export { ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartSeriesConfig, ChartTooltip, ChartTooltipContent, useChart } from './components/chart.js';
99
99
  export { DEFAULT_DESCRIPTION_LIST_LABELS, DescriptionItem, DescriptionItemProps, DescriptionList, DescriptionListColumns, DescriptionListDensity, DescriptionListLabels, DescriptionListLayout, DescriptionListProps } from './components/description-list.js';
100
- export { DEFAULT_LINE_ITEMS_LABELS, LineItemCellContext, LineItems, LineItemsColumn, LineItemsLabels, LineItemsProps } from './components/line-items.js';
100
+ export { DEFAULT_LINE_ITEMS_LABELS, LineItemCellContext, LineItems, LineItemsColumn, LineItemsFieldLabels, LineItemsLabels, LineItemsProps, LineItemsSummary, LineItemsSummaryTone } from './components/line-items.js';
101
101
  export { DEFAULT_PROGRESS_BAR_LABELS, ProgressBar, ProgressBarLabels, ProgressBarProps, ProgressBarSegment, ProgressBarSize, ProgressBarTone } from './components/progress-bar.js';
102
102
  export { Skeleton, SkeletonProps, SkeletonShape } from './components/skeleton.js';
103
- export { LoadingState, LoadingStateProps, LoadingStateSize } from './components/loading-state.js';
104
- export { DEFAULT_SIGNED_AMOUNT_LABELS, Delta, DeltaProps, GoodDirection, SignedAmount, SignedAmountLabels, SignedAmountProps, SignedAmountTone, TextTone, Tone, ToneProps, toneTextClass } from './components/signed-amount.js';
103
+ export { LoadingState, LoadingStateLabelVisibility, LoadingStateProps, LoadingStateSize } from './components/loading-state.js';
104
+ export { DEFAULT_SIGNED_AMOUNT_LABELS, Delta, DeltaProps, GoodDirection, SignedAmount, SignedAmountLabels, SignedAmountProps, SignedAmountTone, TextTone, Tone, ToneProps, VerdictPalette, toneTextClass } from './components/signed-amount.js';
105
105
  export { CrashReport, CrashReportResult, DEFAULT_ERROR_BOUNDARY_LABELS, ErrorBoundary, ErrorBoundaryDetails, ErrorBoundaryFallbackProps, ErrorBoundaryLabels, ErrorBoundaryProps, crashFingerprint, describeThrown, formatCrashReport, isChunkLoadError } from './components/error-boundary.js';
106
106
  export { AuthedImage, AuthedImageLabels, AuthedImageProps, DEFAULT_AUTHED_IMAGE_LABELS } from './components/authed-image.js';
107
107
  export { DEFAULT_IMAGE_GRID_LABELS, ImageGrid, ImageGridLabels, ImageGridProps, splitFileName } from './components/image-grid.js';
@@ -110,10 +110,10 @@ export { ButtonGroup, ButtonGroupLink, ButtonGroupLinkProps, ButtonGroupLinkRend
110
110
  export { NUMERIC_CELL_CLASS, Table, TableAlign, TableBody, TableBodyProps, TableCaption, TableCaptionProps, TableCell, TableCellProps, TableDensity, TableEmpty, TableEmptyProps, TableFoot, TableFootProps, TableHead, TableHeadProps, TableHeaderCell, TableHeaderCellProps, TableHeaderCellSize, TableHeaderCellWeight, TableLayout, TableProps, TableRow, TableRowProps, TableRowVariant, TableVAlign } from './components/table.js';
111
111
  export { Separator, SeparatorProps } from './components/separator.js';
112
112
  export { ScrollArea, ScrollAreaProps } from './components/scroll-area.js';
113
- export { DEFAULT_LIST_LABELS, List, ListDensity, ListItem, ListItemLinkProps, ListItemProps, ListLabels, ListProps, ListSeparator } from './components/list.js';
113
+ export { DEFAULT_LIST_LABELS, List, ListDensity, ListItem, ListItemLinkProps, ListItemProps, ListItemTrailingTone, ListLabels, ListProps, ListSeparator } from './components/list.js';
114
114
  export { MenuItem, MenuItemLinkProps, MenuItemProps, MenuItemTone } from './components/menu-item.js';
115
115
  export { CAPTION_CLASS, Caption, CaptionProps, SECTION_LABEL_CLASS, SectionLabel, SectionLabelProps, SectionLabelSize, SectionLabelVariant } from './components/text.js';
116
- export { StatusDot, StatusDotProps, StatusDotSize, StatusDotTone } from './components/status-dot.js';
116
+ export { StatusDot, StatusDotProps, StatusDotSize, StatusDotTone, statusDotColor } from './components/status-dot.js';
117
117
  export { PageHeader, PageHeaderActionsAlign, PageHeaderMobileLayout, PageHeaderProps, PageHeaderSize } from './components/page-header.js';
118
118
  export { BreadcrumbItem, BreadcrumbLinkProps, Breadcrumbs, BreadcrumbsLabels, BreadcrumbsProps, DEFAULT_BREADCRUMBS_LABELS } from './components/breadcrumbs.js';
119
119
  export { TextLink, TextLinkCurrent, TextLinkProps, TextLinkRenderProps, TextLinkTone, TextLinkUnderline } from './components/text-link.js';
@@ -132,8 +132,7 @@ export { RoleSwitcher, RoleSwitcherProps } from './shell/role-switcher.js';
132
132
  export { TopBarActionMenu, TopBarMenuEntry, TopBarMenuHeader } from './shell/topbar-action-menu.js';
133
133
  export { TopBarBrand, TopBarBrandProps } from './shell/top-bar-brand.js';
134
134
  export { AuthLayout, AuthLayoutProps } from './shell/auth-layout.js';
135
- export { DEFAULT_ATTACHMENT_ACCEPT, DEFAULT_FEEDBACK_ATTACHMENT_LABELS, DEFAULT_MAX_ATTACHMENT_BYTES, FeedbackAttachmentField, FeedbackAttachmentFieldLabels, pastedName } from './feedback/feedback-attachment.js';
136
- export { DEFAULT_FEEDBACK_DIALOG_LABELS, FeedbackAttachmentLabels, FeedbackCategoryOption, FeedbackDialog, FeedbackDialogLabels, FeedbackDialogTextLabels, FeedbackSubmission } from './feedback/feedback-dialog.js';
135
+ export { D as DEFAULT_ATTACHMENT_ACCEPT, a as DEFAULT_FEEDBACK_ATTACHMENT_LABELS, b as DEFAULT_FEEDBACK_DIALOG_LABELS, c as DEFAULT_MAX_ATTACHMENTS, d as DEFAULT_MAX_ATTACHMENT_BYTES, F as FeedbackAttachmentError, e as FeedbackAttachmentField, f as FeedbackAttachmentFieldLabels, g as FeedbackAttachmentFieldMultipleProps, h as FeedbackAttachmentFieldProps, i as FeedbackAttachmentFieldSingleProps, j as FeedbackAttachmentLabels, k as FeedbackCategoryOption, l as FeedbackDialog, m as FeedbackDialogLabels, n as FeedbackDialogMultipleProps, o as FeedbackDialogProps, p as FeedbackDialogSingleProps, q as FeedbackDialogTextLabels, r as FeedbackMultipleSubmission, s as FeedbackSubmission, t as pastedName } from './feedback-attachment-WFiXJ8We.js';
137
136
  export { FEEDBACK_CATEGORY_META, FEEDBACK_CATEGORY_ORDER, FEEDBACK_STATUS_META, FEEDBACK_STATUS_ORDER, FeedbackCategory, FeedbackCategoryBadge, FeedbackDetail, FeedbackDetailSection, FeedbackNoteAttachment, FeedbackNoteEditor, FeedbackProse, FeedbackStatus, FeedbackStatusBadge, FeedbackStatusTransitions, feedbackCategoryRank, nextFeedbackStatus, selectableFeedbackStatuses, visibleFeedbackStatuses } from './feedback/feedback-inbox.js';
138
137
  export { DEFAULT_FEEDBACK_COMPOSER_LABELS, DEFAULT_FEEDBACK_THREAD_LABELS, FeedbackComposer, FeedbackComposerAttachment, FeedbackComposerHandle, FeedbackComposerLabels, FeedbackComposerProps, FeedbackThread, FeedbackThreadAttachment, FeedbackThreadEvent, FeedbackThreadItem, FeedbackThreadLabels, FeedbackThreadMessage, FeedbackThreadProps } from './feedback/feedback-thread.js';
139
138
  export { DEFAULT_WIZARD_LABELS, FieldErrors, StepStatus, SummaryItem, SummarySection, UseWizardOptions, UseWizardReturn, ValidateResult, WizardLabels, WizardStepConfig, WizardUrlSync, resolveWizardLabels } from './wizard/types.js';
@@ -157,7 +156,7 @@ import 'clsx';
157
156
  import 'zustand';
158
157
  import 'react';
159
158
  import 'zustand/middleware';
159
+ import 'lucide-react';
160
160
  import './components/tile-radio.js';
161
161
  import './lib/direction.js';
162
162
  import 'recharts';
163
- import 'lucide-react';
@@ -24,8 +24,7 @@ import { SwatchPickerLabels } from './components/swatch-picker.js';
24
24
  import { IconPickerLabels } from './components/icon-picker.js';
25
25
  import { DialogFrameLabels } from './components/dialog-frame.js';
26
26
  import { MeasuredGridLabels } from './components/measured-grid.js';
27
- import { FeedbackAttachmentFieldLabels } from './feedback/feedback-attachment.js';
28
- import { FeedbackDialogTextLabels } from './feedback/feedback-dialog.js';
27
+ import { f as FeedbackAttachmentFieldLabels, q as FeedbackDialogTextLabels } from './feedback-attachment-WFiXJ8We.js';
29
28
  import { FeedbackThreadLabels, FeedbackComposerLabels } from './feedback/feedback-thread.js';
30
29
  import { AccountSettingsLabels } from './components/account-settings-labels.js';
31
30
  import { ConfirmDialogLabels } from './components/confirm-dialog.js';
@@ -34,6 +33,7 @@ import { BulkActionBarLabels } from './components/bulk-action-bar.js';
34
33
  import { ListLabels } from './components/list.js';
35
34
  import { BreadcrumbsLabels } from './components/breadcrumbs.js';
36
35
  import { ToastLabels } from './components/toast.js';
36
+ import { LucideIcon } from 'lucide-react';
37
37
  import { DescriptionListLabels } from './components/description-list.js';
38
38
  import { LineItemsLabels } from './components/line-items.js';
39
39
  import { ProgressBarLabels } from './components/progress-bar.js';
@@ -377,6 +377,36 @@ interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
377
377
  tooltipSide?: TooltipSide;
378
378
  /** Passed to the `label` tooltip's `portal`. Left out, Tooltip decides (see there). */
379
379
  tooltipPortal?: boolean;
380
+ /**
381
+ * Mount the `label` bubble only while it is up — {@link Tooltip}'s `lazy`. Default
382
+ * `true` since 0.16.0; `false` is the always-mounted in-place bubble of before.
383
+ *
384
+ * Why the label bubble can be lazy when Tooltip's default is not: this bubble
385
+ * describes nothing. It is wrapped round the button in a fragment precisely so that
386
+ * it is NOT the button's `aria-describedby` (it would repeat the button's own name),
387
+ * so there is no description for a lazy mount to take away — the name is the
388
+ * `aria-label` either way, read in browse mode and on focus alike. What the
389
+ * always-mounted bubble did do was sit in the DOM as a `role="tooltip"` node full of
390
+ * text: every IconButton in a row added one to `getAllByRole("tooltip")` and its label
391
+ * to the row's `textContent`, and two keksdose tests tripped over that (0.15.5 P6).
392
+ * The cost is the one {@link Tooltip}'s "Lazy in place" note names — a test that
393
+ * looked the bubble up without hovering now has to hover (or focus) first; pass
394
+ * `false` while it is migrated. A `disabledReason` bubble is unaffected: that one
395
+ * stays mounted as it was.
396
+ */
397
+ tooltipLazy?: boolean;
398
+ /**
399
+ * Busy — the action is in flight: the glyph is swapped for a spinner of the same
400
+ * size, the button is `aria-busy`, and clicks (and the Enter/Space and form
401
+ * submission they stand for) are swallowed, so a second press cannot start the
402
+ * action twice. {@link Button}'s `pending`, with the same contract: `aria-disabled`
403
+ * rather than `disabled`, so the button that was pressed keeps its focus. The name
404
+ * (`label` / `aria-label`) stays — `aria-busy` is what says it is working. A SWAP
405
+ * rather than Button's overlay: the box is square and fixed, so there is no width
406
+ * for the glyph to hold, and a spinner drawn over a glyph would be two marks in one
407
+ * 20px square.
408
+ */
409
+ pending?: boolean;
380
410
  /**
381
411
  * Why the action is not available — {@link Button}'s `disabledReason`, on the icon
382
412
  * button: keksdose's accounts page cannot hide an account with a balance or delete
@@ -423,7 +453,7 @@ interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
423
453
  * `disabledStyle` are a button's and are typed out: a link is not a toggle, and a link
424
454
  * that explains why it cannot be followed is a job for a disabled BUTTON.
425
455
  */
426
- interface IconButtonLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "type" | "href">, Pick<IconButtonProps, "variant" | "size" | "glyphSize" | "badge" | "stretch" | "shape" | "toneColor" | "tone" | "quiet" | "stopPropagation" | "label" | "tooltip" | "tooltipSide" | "tooltipPortal"> {
456
+ interface IconButtonLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "type" | "href">, Pick<IconButtonProps, "variant" | "size" | "glyphSize" | "badge" | "stretch" | "shape" | "toneColor" | "tone" | "quiet" | "stopPropagation" | "label" | "tooltip" | "tooltipSide" | "tooltipPortal" | "tooltipLazy"> {
427
457
  href: string;
428
458
  /** See {@link ButtonLinkProps.renderLink}. */
429
459
  renderLink?: KitLinkComponent;
@@ -441,6 +471,7 @@ interface IconButtonLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElemen
441
471
  pressed?: never;
442
472
  disabledReason?: never;
443
473
  disabledStyle?: never;
474
+ pending?: never;
444
475
  }
445
476
  /**
446
477
  * `toneColor`: one CSS colour, or one per theme.
@@ -468,7 +499,7 @@ declare const FIELD_BASE: string;
468
499
  * cannot make the later one win. */
469
500
  declare const FIELD_WRITABLE_LOOK = "[&[readonly]]:bg-[var(--bg-surface)] [&[readonly]]:text-[var(--text-primary)]";
470
501
  declare const FIELD_FLOATING_PAD = "pt-4 pb-1";
471
- declare const FIELD_INVALID = "border-[var(--danger-border)] ring-1 ring-[var(--danger-border)] focus:border-[var(--danger)] focus:ring-[var(--danger)]";
502
+ declare const FIELD_INVALID = "border-[var(--danger-border-strong)] ring-1 ring-[var(--danger-border-strong)] focus:border-[var(--danger)] focus:ring-[var(--danger)]";
472
503
  declare const FLOATING_INPUT_CLASS: string;
473
504
  /** The phone breakpoint the display treatment below keys off — the same one the
474
505
  * numpad sheet uses, kept in one place so the two can't drift apart. */
@@ -665,7 +696,9 @@ interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, "siz
665
696
  * TEXT (a string or a number) is a caption instead, and goes UNDER the field
666
697
  * like every other field's hint, attached through `aria-describedby`: the label
667
698
  * line is 11px of strip shared with the label, and a sentence placed there was
668
- * set in the value's type on top of both the label and the value. */
699
+ * set in the value's type on top of both the label and the value. On an
700
+ * UNLABELLED Select (no label line) a FieldHint sits at the field's end edge,
701
+ * outside the box. */
669
702
  hint?: ReactNode;
670
703
  /**
671
704
  * `"sm"`: a 28px, 12px-type select for a toolbar or a table header, where the
@@ -723,6 +756,13 @@ interface CardProps extends ComponentPropsWithoutRef<"div"> {
723
756
  * Left out, the default card keeps no padding (its CardHeader / CardContent own the
724
757
  * rhythm) and `inset` keeps its `p-3`; passing it sets theirs too. A caller's `p-*`
725
758
  * in `className` still wins.
759
+ *
760
+ * Whenever the card carries a padding — this prop, or the `inset` / `outline` one —
761
+ * CardHeader, CardContent and CardFooter drop their own `px-6` / `pt-6` / `pb-6`, so
762
+ * the card's padding is the only one. Before 0.16 they kept it regardless and a
763
+ * `padding="md"` card with parts was padded twice (40px a side); keksdose's settings
764
+ * cards zeroed all three parts by hand (`<CardHeader className="p-0">`). A padding set
765
+ * only through `className` cannot be seen from the parts: use the prop.
726
766
  */
727
767
  padding?: "none" | "sm" | "md";
728
768
  /**
@@ -736,21 +776,56 @@ interface CardProps extends ComponentPropsWithoutRef<"div"> {
736
776
  * selectors.
737
777
  */
738
778
  tone?: CardTone;
779
+ /**
780
+ * How loud the `tone` frame is. `"strong"`: a 2px border in the tone's strong
781
+ * colour — `--danger-border-strong` for `danger`, the tone's own text colour
782
+ * (`--warning`, `--info`, `--success`) for the others, which have no
783
+ * `-border-strong` token of their own. For the one tile on a page that guards
784
+ * something destructive or security-relevant: keksdose's password / delete-account
785
+ * tile (shared/components/password-danger-card.tsx) wrote `toneFrameClass(tone)` over
786
+ * the Card by hand for the 2px rule, and `p-[15px]` under it so the content did not
787
+ * move. Here the extra pixel comes off the padding the same way (`padding` or the
788
+ * variant's own), so a strong card's content sits exactly where a soft one's does.
789
+ *
790
+ * Default `"soft"`: the 1px `-border` it has always been. No effect without `tone`,
791
+ * nor on `inset`, which has no border to make louder (its tone is a fill).
792
+ */
793
+ toneStrength?: "soft" | "strong";
739
794
  }
740
795
  type CardTone = "warning" | "danger" | "info" | "success";
741
- declare function Card({ className, children, flush, variant, tone, padding, ...rest }: CardProps): react.JSX.Element;
796
+ declare function Card({ className, children, flush, variant, tone, toneStrength, padding, ...rest }: CardProps): react.JSX.Element;
742
797
  /** The sub-parts add nothing to a `<div>`'s props — they are the SAME element with a
743
- * `data-slot` and a padding rhythm — so each name is an alias rather than an empty
798
+ * `data-slot` and a padding rhythm — so most names are aliases rather than an empty
744
799
  * interface pretending to be more. They exist so a consumer's own wrapper can say
745
800
  * `CardHeaderProps` instead of `ComponentProps<typeof CardHeader>`. */
746
- type CardHeaderProps = ComponentPropsWithoutRef<"div">;
747
- type CardTitleProps = ComponentPropsWithoutRef<"div">;
801
+ interface CardHeaderProps extends ComponentPropsWithoutRef<"div"> {
802
+ /**
803
+ * Below the `sm` breakpoint, put the {@link CardAction} UNDER the title and
804
+ * description instead of beside them. For an action that is wider than an icon —
805
+ * a "Set up two-factor" button, a checkbox and a filter — which, kept in the
806
+ * top-end column on a 390px phone, squeezed the title into a ribbon two words wide
807
+ * (keksdose's settings cards). Off by default: an icon action (the wizard summary's
808
+ * pencil) is narrow enough to stay beside the title at every width.
809
+ */
810
+ stackAction?: boolean;
811
+ }
812
+ type CardTitleLevel = "div" | "h2" | "h3" | "h4";
813
+ interface CardTitleProps extends ComponentPropsWithoutRef<"div"> {
814
+ /**
815
+ * The element the title is: `"div"` (default) or a heading level. Five of keksdose's
816
+ * settings cards nested their own `<h2>` / `<h3>` INSIDE CardTitle to put the card in
817
+ * the page's outline — a heading in a div that looks like a heading. The heading
818
+ * takes the title's look unchanged (the reset leaves `h2`–`h4` at inherited size and
819
+ * weight), so only the outline changes.
820
+ */
821
+ as?: CardTitleLevel;
822
+ }
748
823
  type CardDescriptionProps = ComponentPropsWithoutRef<"div">;
749
824
  type CardActionProps = ComponentPropsWithoutRef<"div">;
750
825
  type CardContentProps = ComponentPropsWithoutRef<"div">;
751
826
  type CardFooterProps = ComponentPropsWithoutRef<"div">;
752
- declare function CardHeader({ className, ...props }: CardHeaderProps): react.JSX.Element;
753
- declare function CardTitle({ className, ...props }: CardTitleProps): react.JSX.Element;
827
+ declare function CardHeader({ className, stackAction, ...props }: CardHeaderProps): react.JSX.Element;
828
+ declare function CardTitle({ className, as: Tag, ...props }: CardTitleProps): react.JSX.Element;
754
829
  declare function CardDescription({ className, ...props }: CardDescriptionProps): react.JSX.Element;
755
830
  declare function CardAction({ className, ...props }: CardActionProps): react.JSX.Element;
756
831
  declare function CardContent({ className, ...props }: CardContentProps): react.JSX.Element;
@@ -1234,6 +1309,15 @@ interface FileButtonProps extends Omit<UseFilePickerOptions, "disabled">, Omit<B
1234
1309
  * Off by default: a button that silently takes drops is a surprise on a page that
1235
1310
  * has a real drop target elsewhere. */
1236
1311
  droppable?: boolean;
1312
+ /**
1313
+ * Show what was picked beside the button: the file's name, or "3 files selected"
1314
+ * (`filePicker.selected`) for several — a native `<input type="file">` says this,
1315
+ * and a bare button that takes a file and says nothing leaves the user to trust it.
1316
+ * The read-out is a polite live region and describes the button, so it is heard
1317
+ * when it changes and again on focus. It holds the last ACCEPTED pick: a refused
1318
+ * file leaves it as it was. Off by default, so the button's layout is unchanged.
1319
+ */
1320
+ showFileName?: boolean;
1237
1321
  }
1238
1322
  /**
1239
1323
  * {@link useFilePicker} behind a {@link Button}: `variant` and every other button prop
@@ -1331,6 +1415,22 @@ type FormActionsAlign = "start" | "center" | "end" | "between";
1331
1415
  * FullBleedDialog's `footer`), which already pads and rules it.
1332
1416
  */
1333
1417
  type FormActionsPlacement = "inline" | "sticky" | "dialog";
1418
+ /**
1419
+ * What a `sticky` row sticks to — see {@link FormActionsProps.stickyWithin}.
1420
+ * - `viewport` (default): the page's (or AppShell pane's) bottom edge, lifted onto
1421
+ * the phone's bottom nav by `--app-nav-h`.
1422
+ * - `container`: the bottom of whatever scroll container it is in — a dialog body, a
1423
+ * side pane, a panel with `overflow-y-auto` — at `bottom: 0`, with no nav offset.
1424
+ */
1425
+ type FormActionsStickyWithin = "viewport" | "container";
1426
+ /**
1427
+ * Extra attributes for the save button — an `id`, `data-*` hooks for tests or
1428
+ * analytics, an `aria-describedby`. The props FormActions drives itself (type, click,
1429
+ * disabled, variant, form, children, the busy state) are not among them.
1430
+ */
1431
+ type FormActionsSubmitProps = Omit<ButtonProps, "type" | "onClick" | "disabled" | "disabledReason" | "variant" | "form" | "children" | "aria-busy"> & {
1432
+ [key: `data-${string}`]: string | number | boolean | undefined;
1433
+ };
1334
1434
  /** The start-side action of {@link FormActionsProps.destructive}, as data. */
1335
1435
  interface FormActionsDestructive {
1336
1436
  label: ReactNode;
@@ -1354,10 +1454,21 @@ interface FormActionsProps extends Omit<ComponentPropsWithoutRef<"div">, "childr
1354
1454
  cancelLabel?: ReactNode;
1355
1455
  /** The save button's text while `pending` ("Saving…"). Default: `submitLabel`. */
1356
1456
  pendingLabel?: ReactNode;
1457
+ /**
1458
+ * A Lucide icon before the save button's text. While `pending` the spinner takes
1459
+ * ITS place rather than being added in front of it — an icon written into
1460
+ * `submitLabel` itself stays, so the button would show the spinner AND the glyph,
1461
+ * two statuses side by side (keksdose's crop Apply needed a `pendingLabel` copy of
1462
+ * its text only to drop the check mark).
1463
+ */
1464
+ submitIcon?: LucideIcon;
1465
+ /** Attributes passed through to the save button: `id`, `data-*`, `aria-*`, a
1466
+ * `className`. See {@link FormActionsSubmitProps}. */
1467
+ submitProps?: FormActionsSubmitProps;
1357
1468
  /**
1358
1469
  * The save is running: a spinner in the save button, `aria-busy` on it, and the
1359
1470
  * button disabled, so a second click cannot send the form twice. Cancel stays
1360
- * usable.
1471
+ * usable. The spinner goes in front of the text, or in place of {@link submitIcon}.
1361
1472
  */
1362
1473
  pending?: boolean;
1363
1474
  /** Disable save for a reason of the form's own (an unbalanced entry). */
@@ -1374,10 +1485,39 @@ interface FormActionsProps extends Omit<ComponentPropsWithoutRef<"div">, "childr
1374
1485
  * is `between`-aligned unless `align` says otherwise.
1375
1486
  */
1376
1487
  destructive?: ReactNode | FormActionsDestructive;
1488
+ /**
1489
+ * Something neutral at the START of the row — a caption ("Last saved 2 min ago",
1490
+ * "Drag the corners to crop"), a "View activity" link. After {@link destructive}
1491
+ * when both are given; like it, makes the row `between`-aligned unless `align` says
1492
+ * otherwise. `children` are for further ACTIONS, beside Cancel.
1493
+ */
1494
+ start?: ReactNode;
1377
1495
  /** Horizontal alignment. Default `end` (`between` with a `destructive` action). */
1378
1496
  align?: FormActionsAlign;
1379
1497
  /** See {@link FormActionsPlacement}. Default `inline`. */
1380
1498
  placement?: FormActionsPlacement;
1499
+ /**
1500
+ * With `placement="sticky"`: what the row sticks to. Default `viewport`.
1501
+ *
1502
+ * CSS sticky always sticks to the NEAREST scroll container, so the default row
1503
+ * already holds inside a scrolling pane — but it offsets itself by `--app-nav-h`,
1504
+ * which AppShell publishes on the document: inside a pane or a portalled dialog
1505
+ * body on a phone it then floats a nav's height above that container's bottom,
1506
+ * with the content scrolling through the gap. `container` drops that offset.
1507
+ *
1508
+ * What neither value can fix, because it is the layout, not the row:
1509
+ * - sticky moves only within its PARENT box. Inside a DataTable expansion row the
1510
+ * parent is the expansion cell, so the row pins to the table's own scroller
1511
+ * (`overflow-auto`, bounded by `maxBodyHeight`) and only while the cell spans
1512
+ * that scroller's bottom edge — not to the page.
1513
+ * - any `overflow` other than `visible`/`clip` between the row and the scroller
1514
+ * you mean (an `overflow-x-auto` wrapper, an `overflow-hidden` card) becomes the
1515
+ * scroll container; if THAT box does not scroll, the row never sticks.
1516
+ * - the offset is resolved against the scroller's content box, so a scroller with
1517
+ * bottom padding leaves that strip uncovered; give the row a negative `bottom`
1518
+ * through `style` and the same amount back as padding.
1519
+ */
1520
+ stickyWithin?: FormActionsStickyWithin;
1381
1521
  /** The `id` of the `<form>` the save button submits, when the row is rendered
1382
1522
  * outside it (a dialog's footer slot). */
1383
1523
  form?: string;
@@ -1399,7 +1539,7 @@ interface FormActionsProps extends Omit<ComponentPropsWithoutRef<"div">, "childr
1399
1539
  * The spinner is the kit's {@link Spinner}, drawn inside the button with `label={null}`
1400
1540
  * so the button's name stays its text; `aria-busy` is what says it is working.
1401
1541
  */
1402
- declare function FormActions({ onCancel, onSubmit, submitLabel, cancelLabel, pendingLabel, pending, submitDisabled, submitDisabledReason, submitVariant, destructive, align, placement, form, children, className, style, ...rest }: FormActionsProps): react.JSX.Element;
1542
+ declare function FormActions({ onCancel, onSubmit, submitLabel, cancelLabel, pendingLabel, submitIcon: SubmitIcon, submitProps, pending, submitDisabled, submitDisabledReason, submitVariant, destructive, start: startSlot, align, placement, stickyWithin, form, children, className, style, ...rest }: FormActionsProps): react.JSX.Element;
1403
1543
 
1404
1544
  /**
1405
1545
  * EVERY string the kit renders, as one typed tree — and an optional provider that
@@ -1756,4 +1896,4 @@ declare function useKitFileLabels(prop?: Partial<FileLabels>): FileLabels;
1756
1896
  */
1757
1897
  declare function missingKitLabels(labels: UiKitLabelOverrides | undefined, reference: UiKitLabels): string[];
1758
1898
 
1759
- export { FIELD_INVALID as $, type AppShellLabels as A, Button as B, type CalculatorLabels as C, type CopyButtonProps as D, type CurrencyLabels as E, DEFAULT_APP_SHELL_LABELS as F, DEFAULT_CALCULATOR_LABELS as G, DEFAULT_COMBOBOX_LABELS as H, DEFAULT_COMMON_LABELS as I, DEFAULT_COPY_BUTTON_LABELS as J, DEFAULT_CURRENCY_LABELS as K, DEFAULT_DATE_PICKER_LABELS as L, DEFAULT_FILE_LABELS as M, DEFAULT_FILE_PICKER_LABELS as N, DEFAULT_FORM_ACTIONS_LABELS as O, DEFAULT_MULTI_SELECT_LABELS as P, DEFAULT_PASSWORD_REVEAL_LABELS as Q, DEFAULT_PICKER_SHEET_LABELS as R, DEFAULT_SWIPEABLE_ROW_LABELS as S, DEFAULT_TABS_LABELS as T, DEFAULT_TOP_BAR_LABELS as U, type DatePickerLabels as V, EmptyState as W, type EmptyStateProps as X, FIELD_BASE as Y, FIELD_DISPLAY as Z, FIELD_FLOATING_PAD as _, type ButtonClassesOptions as a, buttonClasses as a$, FIELD_TRIGGER as a0, FIELD_WRITABLE_LOOK as a1, FLOATING_INPUT_CLASS as a2, FLOATING_LABEL_CLASS as a3, FLOATING_LABEL_STATIC as a4, FieldChevron as a5, type FieldChevronProps as a6, FieldHint as a7, type FieldHintProps as a8, FieldLabel as a9, type KitLinkComponent as aA, type KitLinkProps as aB, Label as aC, type LabelOverride as aD, type LabelProps as aE, type MultiSelectLabels as aF, PHONE_QUERY as aG, type PasswordRevealLabels as aH, type PickerSheetLabels as aI, Select as aJ, type SelectProps as aK, Spinner as aL, type SpinnerProps as aM, type SwipeableRowLabels as aN, type TabItem as aO, Tabs as aP, type TabsLabels as aQ, type TabsProps as aR, Textarea as aS, type TextareaProps as aT, type TopBarLabels as aU, type UiKitLabelOverrides as aV, type UiKitLabels as aW, UiKitProvider as aX, type UiKitProviderProps as aY, type UseFilePickerOptions as aZ, type UseFilePickerReturn as a_, type FieldLabelProps as aa, FileButton as ab, type FileButtonProps as ac, type FileLabels as ad, type FilePickerLabels as ae, type FileRejection as af, type FileRejectionReason as ag, type FileScreenOptions as ah, FloatingField as ai, type FloatingFieldProps as aj, FormActions as ak, type FormActionsAlign as al, type FormActionsDestructive as am, type FormActionsLabels as an, type FormActionsPlacement as ao, type FormActionsProps as ap, IconButton as aq, type IconButtonGlyphSize as ar, type IconButtonLinkProps as as, type IconButtonProps as at, type IconButtonSize as au, type IconButtonTone as av, type IconButtonToneColor as aw, type IconButtonVariant as ax, Input as ay, type InputProps as az, type ButtonLinkProps as b, formatFileSize as b0, matchesAccept as b1, missingKitLabels as b2, resolvePasswordRevealLabels as b3, useFilePicker as b4, useKitChartTooltipPlacement as b5, useKitFileLabels as b6, useKitLabelOverrides as b7, useKitLabels as b8, useKitLink as b9, useKitLocale as ba, useKitWeekStart as bb, type FilePickHandler as bc, formatAccept as bd, judgePick as be, screenFiles as bf, summariseRejections as bg, type ButtonProps as c, type ButtonSize as d, type ButtonTone as e, type ButtonVariant as f, Card as g, CardAction as h, type CardActionProps as i, CardContent as j, type CardContentProps as k, CardDescription as l, type CardDescriptionProps as m, CardFooter as n, type CardFooterProps as o, CardHeader as p, type CardHeaderProps as q, type CardProps as r, CardTitle as s, type CardTitleProps as t, type CardTone as u, type ChartTooltipPlacement as v, type ComboboxLabels as w, type CommonLabels as x, CopyButton as y, type CopyButtonLabels as z };
1899
+ export { FIELD_FLOATING_PAD as $, type AppShellLabels as A, Button as B, type CalculatorLabels as C, type CopyButtonLabels as D, type CopyButtonProps as E, type CurrencyLabels as F, DEFAULT_APP_SHELL_LABELS as G, DEFAULT_CALCULATOR_LABELS as H, DEFAULT_COMBOBOX_LABELS as I, DEFAULT_COMMON_LABELS as J, DEFAULT_COPY_BUTTON_LABELS as K, DEFAULT_CURRENCY_LABELS as L, DEFAULT_DATE_PICKER_LABELS as M, DEFAULT_FILE_LABELS as N, DEFAULT_FILE_PICKER_LABELS as O, DEFAULT_FORM_ACTIONS_LABELS as P, DEFAULT_MULTI_SELECT_LABELS as Q, DEFAULT_PASSWORD_REVEAL_LABELS as R, DEFAULT_PICKER_SHEET_LABELS as S, DEFAULT_SWIPEABLE_ROW_LABELS as T, DEFAULT_TABS_LABELS as U, DEFAULT_TOP_BAR_LABELS as V, type DatePickerLabels as W, EmptyState as X, type EmptyStateProps as Y, FIELD_BASE as Z, FIELD_DISPLAY as _, type ButtonClassesOptions as a, type UiKitProviderProps as a$, FIELD_INVALID as a0, FIELD_TRIGGER as a1, FIELD_WRITABLE_LOOK as a2, FLOATING_INPUT_CLASS as a3, FLOATING_LABEL_CLASS as a4, FLOATING_LABEL_STATIC as a5, FieldChevron as a6, type FieldChevronProps as a7, FieldHint as a8, type FieldHintProps as a9, type IconButtonVariant as aA, Input as aB, type InputProps as aC, type KitLinkComponent as aD, type KitLinkProps as aE, Label as aF, type LabelOverride as aG, type LabelProps as aH, type MultiSelectLabels as aI, PHONE_QUERY as aJ, type PasswordRevealLabels as aK, type PickerSheetLabels as aL, Select as aM, type SelectProps as aN, Spinner as aO, type SpinnerProps as aP, type SwipeableRowLabels as aQ, type TabItem as aR, Tabs as aS, type TabsLabels as aT, type TabsProps as aU, Textarea as aV, type TextareaProps as aW, type TopBarLabels as aX, type UiKitLabelOverrides as aY, type UiKitLabels as aZ, UiKitProvider as a_, FieldLabel as aa, type FieldLabelProps as ab, FileButton as ac, type FileButtonProps as ad, type FileLabels as ae, type FilePickerLabels as af, type FileRejection as ag, type FileRejectionReason as ah, type FileScreenOptions as ai, FloatingField as aj, type FloatingFieldProps as ak, FormActions as al, type FormActionsAlign as am, type FormActionsDestructive as an, type FormActionsLabels as ao, type FormActionsPlacement as ap, type FormActionsProps as aq, type FormActionsStickyWithin as ar, type FormActionsSubmitProps as as, IconButton as at, type IconButtonGlyphSize as au, type IconButtonLinkProps as av, type IconButtonProps as aw, type IconButtonSize as ax, type IconButtonTone as ay, type IconButtonToneColor as az, type ButtonLinkProps as b, type UseFilePickerOptions as b0, type UseFilePickerReturn as b1, buttonClasses as b2, formatFileSize as b3, matchesAccept as b4, missingKitLabels as b5, resolvePasswordRevealLabels as b6, useFilePicker as b7, useKitChartTooltipPlacement as b8, useKitFileLabels as b9, useKitLabelOverrides as ba, useKitLabels as bb, useKitLink as bc, useKitLocale as bd, useKitWeekStart as be, type FilePickHandler as bf, formatAccept as bg, judgePick as bh, screenFiles as bi, summariseRejections as bj, type ButtonProps as c, type ButtonSize as d, type ButtonTone as e, type ButtonVariant as f, Card as g, CardAction as h, type CardActionProps as i, CardContent as j, type CardContentProps as k, CardDescription as l, type CardDescriptionProps as m, CardFooter as n, type CardFooterProps as o, CardHeader as p, type CardHeaderProps as q, type CardProps as r, CardTitle as s, type CardTitleLevel as t, type CardTitleProps as u, type CardTone as v, type ChartTooltipPlacement as w, type ComboboxLabels as x, type CommonLabels as y, CopyButton as z };
@@ -164,13 +164,28 @@ declare function useKitFormat(locale?: string): KitFormat;
164
164
  * AmountInput settles a typed figure by, for a host that needs it outside the field.
165
165
  */
166
166
  declare function currencyMinorDigits(currency: string | null | undefined): number | undefined;
167
+ /** The options form of {@link roundToCurrency}'s third argument. */
168
+ interface RoundToCurrencyOptions {
169
+ /** Decimals to round to, whatever the currency — the plain `digits` argument. */
170
+ digits?: number;
171
+ /**
172
+ * Decimals for a currency `Intl` cannot resolve — no code yet (`null`, `""`), or a
173
+ * malformed one ("EURO", "€"). Left out, such a value comes back unchanged, as
174
+ * before. Note that `Intl` resolves ANY well-formed three-letter code, a made-up
175
+ * "XYZ" included (to 2), so this is the case of a missing or broken code, not of a
176
+ * rare currency.
177
+ */
178
+ fallbackDigits?: number;
179
+ }
167
180
  /**
168
181
  * `value` rounded to the currency's minor unit (or to `digits`), half away from zero,
169
182
  * in decimal arithmetic: 93.4213 CHF → 93.42, 1.005 EUR → 1.01 (`Math.round(1.005 *
170
183
  * 100)` is 100, since 1.005 is 1.00499… in binary). A non-finite value, or a currency
171
184
  * `Intl` does not know without `digits`, comes back unchanged (keksdose live #356: an
172
- * FX estimate set into an AmountInput showed four decimals).
185
+ * FX estimate set into an AmountInput showed four decimals) — unless the options form
186
+ * gives `fallbackDigits`: `roundToCurrency(v, code, { fallbackDigits: 2 })` rounds a
187
+ * figure whose currency is not chosen yet to cents rather than leaving 0.1 + 0.2 as is.
173
188
  */
174
- declare function roundToCurrency(value: number, currency: string | null | undefined, digits?: number): number;
189
+ declare function roundToCurrency(value: number, currency: string | null | undefined, digits?: number | RoundToCurrencyOptions): number;
175
190
 
176
- export { type DateInput, EMPTY_FORMATTED_VALUE, type FormatDateOptions, type FormatDateStyle, type FormatDigits, type FormatMoneyOptions, type FormatNumberBaseOptions, type FormatNumberOptions, type FormatPercentOptions, type FormatRelativeTimeOptions, type KitFormat, currencyMinorDigits, formatDate, formatMoney, formatNumber, formatPercent, formatRelativeTime, roundToCurrency, toDate, useKitFormat };
191
+ export { type DateInput, EMPTY_FORMATTED_VALUE, type FormatDateOptions, type FormatDateStyle, type FormatDigits, type FormatMoneyOptions, type FormatNumberBaseOptions, type FormatNumberOptions, type FormatPercentOptions, type FormatRelativeTimeOptions, type KitFormat, type RoundToCurrencyOptions, currencyMinorDigits, formatDate, formatMoney, formatNumber, formatPercent, formatRelativeTime, roundToCurrency, toDate, useKitFormat };
@@ -147,7 +147,8 @@ function currencyMinorDigits(currency) {
147
147
  }
148
148
  }
149
149
  function roundToCurrency(value, currency, digits) {
150
- const places = digits ?? currencyMinorDigits(currency);
150
+ const options = typeof digits === "object" && digits !== null ? digits : { digits };
151
+ const places = options.digits ?? currencyMinorDigits(currency) ?? options.fallbackDigits;
151
152
  if (places === void 0 || !Number.isFinite(value)) return value;
152
153
  const magnitude = Number(`${Math.round(Number(`${Math.abs(value)}e${places}`))}e-${places}`);
153
154
  return value < 0 ? -magnitude : magnitude;