@happyvertical/smrt-svelte 0.55.6 → 0.55.8

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 (318) hide show
  1. package/AGENTS.md +9 -31
  2. package/README.md +195 -5
  3. package/agents/browser-ai.md +47 -0
  4. package/agents/command-palette.md +85 -0
  5. package/agents/import-export.md +62 -0
  6. package/agents/overview-surfaces.md +255 -0
  7. package/agents/screens.md +57 -0
  8. package/agents/workspace.md +202 -5
  9. package/dist/browser-ai/adapters/stt/dictation-source.d.ts.map +1 -1
  10. package/dist/browser-ai/adapters/stt/dictation-source.js +8 -2
  11. package/dist/browser-ai/adapters/stt/factory.d.ts +6 -3
  12. package/dist/browser-ai/adapters/stt/factory.d.ts.map +1 -1
  13. package/dist/browser-ai/adapters/stt/factory.js +19 -9
  14. package/dist/browser-ai/adapters/stt/index.d.ts +3 -1
  15. package/dist/browser-ai/adapters/stt/index.d.ts.map +1 -1
  16. package/dist/browser-ai/adapters/stt/index.js +3 -1
  17. package/dist/browser-ai/adapters/stt/local-speech-model.d.ts +111 -0
  18. package/dist/browser-ai/adapters/stt/local-speech-model.d.ts.map +1 -0
  19. package/dist/browser-ai/adapters/stt/local-speech-model.js +377 -0
  20. package/dist/browser-ai/adapters/stt/local-speech.d.ts +82 -0
  21. package/dist/browser-ai/adapters/stt/local-speech.d.ts.map +1 -0
  22. package/dist/browser-ai/adapters/stt/local-speech.js +317 -0
  23. package/dist/browser-ai/adapters/stt/local-speech.worker.d.ts +2 -0
  24. package/dist/browser-ai/adapters/stt/local-speech.worker.d.ts.map +1 -0
  25. package/dist/browser-ai/adapters/stt/local-speech.worker.js +32 -0
  26. package/dist/browser-ai/adapters/stt/transformers-env.d.ts +8 -0
  27. package/dist/browser-ai/adapters/stt/transformers-env.d.ts.map +1 -0
  28. package/dist/browser-ai/adapters/stt/transformers-env.js +17 -0
  29. package/dist/browser-ai/adapters/stt/types.d.ts +54 -9
  30. package/dist/browser-ai/adapters/stt/types.d.ts.map +1 -1
  31. package/dist/browser-ai/adapters/tts/browser-synthesis.d.ts +5 -0
  32. package/dist/browser-ai/adapters/tts/browser-synthesis.d.ts.map +1 -1
  33. package/dist/browser-ai/adapters/tts/browser-synthesis.js +83 -55
  34. package/dist/browser-ai/capabilities/speech-probe.d.ts +29 -0
  35. package/dist/browser-ai/capabilities/speech-probe.d.ts.map +1 -0
  36. package/dist/browser-ai/capabilities/speech-probe.js +19 -0
  37. package/dist/browser-ai/core/errors.d.ts +9 -0
  38. package/dist/browser-ai/core/errors.d.ts.map +1 -1
  39. package/dist/browser-ai/core/errors.js +12 -0
  40. package/dist/browser-ai/index.d.ts +1 -0
  41. package/dist/browser-ai/index.d.ts.map +1 -1
  42. package/dist/browser-ai/index.js +1 -0
  43. package/dist/components/app/AppShell.svelte +587 -33
  44. package/dist/components/app/AppShell.svelte.d.ts +75 -4
  45. package/dist/components/app/AppShell.svelte.d.ts.map +1 -1
  46. package/dist/components/app/DockToggles.svelte +0 -1
  47. package/dist/components/app/dock-toggle.d.ts +7 -1
  48. package/dist/components/app/dock-toggle.d.ts.map +1 -1
  49. package/dist/components/app/index.d.ts +2 -1
  50. package/dist/components/app/index.d.ts.map +1 -1
  51. package/dist/components/app/slot-item.d.ts +21 -0
  52. package/dist/components/app/slot-item.d.ts.map +1 -0
  53. package/dist/components/app/slot-item.js +1 -0
  54. package/dist/components/command-palette/CommandPalette.svelte +75 -0
  55. package/dist/components/command-palette/CommandPalette.svelte.d.ts +22 -0
  56. package/dist/components/command-palette/CommandPalette.svelte.d.ts.map +1 -0
  57. package/dist/components/command-palette/CommandPaletteDialog.svelte +406 -0
  58. package/dist/components/command-palette/CommandPaletteDialog.svelte.d.ts +18 -0
  59. package/dist/components/command-palette/CommandPaletteDialog.svelte.d.ts.map +1 -0
  60. package/dist/components/command-palette/CommandPaletteTrigger.svelte +91 -0
  61. package/dist/components/command-palette/CommandPaletteTrigger.svelte.d.ts +17 -0
  62. package/dist/components/command-palette/CommandPaletteTrigger.svelte.d.ts.map +1 -0
  63. package/dist/components/command-palette/context.d.ts +18 -0
  64. package/dist/components/command-palette/context.d.ts.map +1 -0
  65. package/dist/components/command-palette/context.js +38 -0
  66. package/dist/components/command-palette/controller.svelte.d.ts +70 -0
  67. package/dist/components/command-palette/controller.svelte.d.ts.map +1 -0
  68. package/dist/components/command-palette/controller.svelte.js +379 -0
  69. package/dist/components/command-palette/hotkeys.d.ts +30 -0
  70. package/dist/components/command-palette/hotkeys.d.ts.map +1 -0
  71. package/dist/components/command-palette/hotkeys.js +161 -0
  72. package/dist/components/command-palette/index.d.ts +19 -0
  73. package/dist/components/command-palette/index.d.ts.map +1 -0
  74. package/dist/components/command-palette/index.js +17 -0
  75. package/dist/components/command-palette/match.d.ts +38 -0
  76. package/dist/components/command-palette/match.d.ts.map +1 -0
  77. package/dist/components/command-palette/match.js +172 -0
  78. package/dist/components/command-palette/providers.d.ts +159 -0
  79. package/dist/components/command-palette/providers.d.ts.map +1 -0
  80. package/dist/components/command-palette/providers.js +345 -0
  81. package/dist/components/command-palette/rank.d.ts +20 -0
  82. package/dist/components/command-palette/rank.d.ts.map +1 -0
  83. package/dist/components/command-palette/rank.js +74 -0
  84. package/dist/components/command-palette/types.d.ts +119 -0
  85. package/dist/components/command-palette/types.d.ts.map +1 -0
  86. package/dist/components/command-palette/types.js +10 -0
  87. package/dist/components/command-palette/use-provider.svelte.d.ts +14 -0
  88. package/dist/components/command-palette/use-provider.svelte.d.ts.map +1 -0
  89. package/dist/components/command-palette/use-provider.svelte.js +23 -0
  90. package/dist/components/forms/AddressInput.svelte +2 -15
  91. package/dist/components/forms/AddressInput.svelte.d.ts.map +1 -1
  92. package/dist/components/forms/DateRangeInput.svelte +2 -15
  93. package/dist/components/forms/DateRangeInput.svelte.d.ts.map +1 -1
  94. package/dist/components/forms/DateTimeInput.svelte +8 -15
  95. package/dist/components/forms/DateTimeInput.svelte.d.ts.map +1 -1
  96. package/dist/components/forms/MeasurementInput.svelte +2 -15
  97. package/dist/components/forms/MeasurementInput.svelte.d.ts.map +1 -1
  98. package/dist/components/forms/MoneyInput.svelte +8 -25
  99. package/dist/components/forms/MoneyInput.svelte.d.ts.map +1 -1
  100. package/dist/components/forms/NumberInput.svelte +7 -15
  101. package/dist/components/forms/NumberInput.svelte.d.ts.map +1 -1
  102. package/dist/components/forms/PhoneInput.svelte +7 -15
  103. package/dist/components/forms/PhoneInput.svelte.d.ts.map +1 -1
  104. package/dist/components/forms/SelectInput.svelte +34 -40
  105. package/dist/components/forms/SelectInput.svelte.d.ts.map +1 -1
  106. package/dist/components/forms/TextInput.svelte +20 -37
  107. package/dist/components/forms/TextInput.svelte.d.ts.map +1 -1
  108. package/dist/components/forms/TextareaInput.svelte +19 -35
  109. package/dist/components/forms/TextareaInput.svelte.d.ts.map +1 -1
  110. package/dist/components/import-export/ImportExport.svelte +678 -0
  111. package/dist/components/import-export/ImportExport.svelte.d.ts +5 -0
  112. package/dist/components/import-export/ImportExport.svelte.d.ts.map +1 -0
  113. package/dist/components/import-export/collection-adapter.d.ts +35 -0
  114. package/dist/components/import-export/collection-adapter.d.ts.map +1 -0
  115. package/dist/components/import-export/collection-adapter.js +42 -0
  116. package/dist/components/import-export/csv.d.ts +60 -0
  117. package/dist/components/import-export/csv.d.ts.map +1 -0
  118. package/dist/components/import-export/csv.js +192 -0
  119. package/dist/components/import-export/download.d.ts +4 -0
  120. package/dist/components/import-export/download.d.ts.map +1 -0
  121. package/dist/components/import-export/download.js +17 -0
  122. package/dist/components/import-export/export.d.ts +25 -0
  123. package/dist/components/import-export/export.d.ts.map +1 -0
  124. package/dist/components/import-export/export.js +68 -0
  125. package/dist/components/import-export/fields.d.ts +48 -0
  126. package/dist/components/import-export/fields.d.ts.map +1 -0
  127. package/dist/components/import-export/fields.js +103 -0
  128. package/dist/components/import-export/index.d.ts +12 -0
  129. package/dist/components/import-export/index.d.ts.map +1 -0
  130. package/dist/components/import-export/index.js +9 -0
  131. package/dist/components/import-export/mapping.d.ts +12 -0
  132. package/dist/components/import-export/mapping.d.ts.map +1 -0
  133. package/dist/components/import-export/mapping.js +38 -0
  134. package/dist/components/import-export/props.d.ts +34 -0
  135. package/dist/components/import-export/props.d.ts.map +1 -0
  136. package/dist/components/import-export/props.js +1 -0
  137. package/dist/components/import-export/report.d.ts +13 -0
  138. package/dist/components/import-export/report.d.ts.map +1 -0
  139. package/dist/components/import-export/report.js +50 -0
  140. package/dist/components/import-export/runner.d.ts +17 -0
  141. package/dist/components/import-export/runner.d.ts.map +1 -0
  142. package/dist/components/import-export/runner.js +39 -0
  143. package/dist/components/import-export/types.d.ts +100 -0
  144. package/dist/components/import-export/types.d.ts.map +1 -0
  145. package/dist/components/import-export/types.js +6 -0
  146. package/dist/components/import-export/validate.d.ts +39 -0
  147. package/dist/components/import-export/validate.d.ts.map +1 -0
  148. package/dist/components/import-export/validate.js +268 -0
  149. package/dist/components/overview/OverviewGrid.svelte +579 -0
  150. package/dist/components/overview/OverviewGrid.svelte.d.ts +5 -0
  151. package/dist/components/overview/OverviewGrid.svelte.d.ts.map +1 -0
  152. package/dist/components/overview/WidgetOptionsForm.svelte +193 -0
  153. package/dist/components/overview/WidgetOptionsForm.svelte.d.ts +5 -0
  154. package/dist/components/overview/WidgetOptionsForm.svelte.d.ts.map +1 -0
  155. package/dist/components/overview/controller.svelte.d.ts +92 -0
  156. package/dist/components/overview/controller.svelte.d.ts.map +1 -0
  157. package/dist/components/overview/controller.svelte.js +336 -0
  158. package/dist/components/overview/format.d.ts +13 -0
  159. package/dist/components/overview/format.d.ts.map +1 -0
  160. package/dist/components/overview/format.js +45 -0
  161. package/dist/components/overview/grid-types.d.ts +52 -0
  162. package/dist/components/overview/grid-types.d.ts.map +1 -0
  163. package/dist/components/overview/grid-types.js +1 -0
  164. package/dist/components/overview/index.d.ts +24 -0
  165. package/dist/components/overview/index.d.ts.map +1 -0
  166. package/dist/components/overview/index.js +22 -0
  167. package/dist/components/overview/load.d.ts +30 -0
  168. package/dist/components/overview/load.d.ts.map +1 -0
  169. package/dist/components/overview/load.js +92 -0
  170. package/dist/components/overview/markdown.d.ts +53 -0
  171. package/dist/components/overview/markdown.d.ts.map +1 -0
  172. package/dist/components/overview/markdown.js +203 -0
  173. package/dist/components/overview/model.d.ts +100 -0
  174. package/dist/components/overview/model.d.ts.map +1 -0
  175. package/dist/components/overview/model.js +460 -0
  176. package/dist/components/overview/recipe-widgets.d.ts +77 -0
  177. package/dist/components/overview/recipe-widgets.d.ts.map +1 -0
  178. package/dist/components/overview/recipe-widgets.js +151 -0
  179. package/dist/components/overview/registry.d.ts +45 -0
  180. package/dist/components/overview/registry.d.ts.map +1 -0
  181. package/dist/components/overview/registry.js +112 -0
  182. package/dist/components/overview/resize.d.ts +25 -0
  183. package/dist/components/overview/resize.d.ts.map +1 -0
  184. package/dist/components/overview/resize.js +41 -0
  185. package/dist/components/overview/schema.d.ts +34 -0
  186. package/dist/components/overview/schema.d.ts.map +1 -0
  187. package/dist/components/overview/schema.js +180 -0
  188. package/dist/components/overview/server.d.ts +14 -0
  189. package/dist/components/overview/server.d.ts.map +1 -0
  190. package/dist/components/overview/server.js +13 -0
  191. package/dist/components/overview/types.d.ts +235 -0
  192. package/dist/components/overview/types.d.ts.map +1 -0
  193. package/dist/components/overview/types.js +17 -0
  194. package/dist/components/overview/widgets/ChartWidget.svelte +111 -0
  195. package/dist/components/overview/widgets/ChartWidget.svelte.d.ts +6 -0
  196. package/dist/components/overview/widgets/ChartWidget.svelte.d.ts.map +1 -0
  197. package/dist/components/overview/widgets/MetricWidget.svelte +86 -0
  198. package/dist/components/overview/widgets/MetricWidget.svelte.d.ts +6 -0
  199. package/dist/components/overview/widgets/MetricWidget.svelte.d.ts.map +1 -0
  200. package/dist/components/overview/widgets/NoteWidget.svelte +61 -0
  201. package/dist/components/overview/widgets/NoteWidget.svelte.d.ts +5 -0
  202. package/dist/components/overview/widgets/NoteWidget.svelte.d.ts.map +1 -0
  203. package/dist/components/overview/widgets/RecordListWidget.svelte +91 -0
  204. package/dist/components/overview/widgets/RecordListWidget.svelte.d.ts +6 -0
  205. package/dist/components/overview/widgets/RecordListWidget.svelte.d.ts.map +1 -0
  206. package/dist/components/overview/widgets/ShortcutsWidget.svelte +80 -0
  207. package/dist/components/overview/widgets/ShortcutsWidget.svelte.d.ts +6 -0
  208. package/dist/components/overview/widgets/ShortcutsWidget.svelte.d.ts.map +1 -0
  209. package/dist/components/overview/widgets/core.d.ts +44 -0
  210. package/dist/components/overview/widgets/core.d.ts.map +1 -0
  211. package/dist/components/overview/widgets/core.js +222 -0
  212. package/dist/components/overview/widgets/data.d.ts +76 -0
  213. package/dist/components/overview/widgets/data.d.ts.map +1 -0
  214. package/dist/components/overview/widgets/data.js +40 -0
  215. package/dist/components/screens/DetailScreen.svelte +220 -0
  216. package/dist/components/screens/DetailScreen.svelte.d.ts +5 -0
  217. package/dist/components/screens/DetailScreen.svelte.d.ts.map +1 -0
  218. package/dist/components/screens/EditForm.svelte +313 -0
  219. package/dist/components/screens/EditForm.svelte.d.ts +5 -0
  220. package/dist/components/screens/EditForm.svelte.d.ts.map +1 -0
  221. package/dist/components/screens/ListScreen.svelte +191 -0
  222. package/dist/components/screens/ListScreen.svelte.d.ts +5 -0
  223. package/dist/components/screens/ListScreen.svelte.d.ts.map +1 -0
  224. package/dist/components/screens/RecipeScreens.svelte +237 -0
  225. package/dist/components/screens/RecipeScreens.svelte.d.ts +5 -0
  226. package/dist/components/screens/RecipeScreens.svelte.d.ts.map +1 -0
  227. package/dist/components/screens/fields.d.ts +54 -0
  228. package/dist/components/screens/fields.d.ts.map +1 -0
  229. package/dist/components/screens/fields.js +229 -0
  230. package/dist/components/screens/index.d.ts +8 -0
  231. package/dist/components/screens/index.d.ts.map +1 -0
  232. package/dist/components/screens/index.js +6 -0
  233. package/dist/components/screens/types.d.ts +215 -0
  234. package/dist/components/screens/types.d.ts.map +1 -0
  235. package/dist/components/screens/types.js +1 -0
  236. package/dist/components/screens/values.d.ts +62 -0
  237. package/dist/components/screens/values.d.ts.map +1 -0
  238. package/dist/components/screens/values.js +289 -0
  239. package/dist/components/sortable/Sortable.svelte +6 -33
  240. package/dist/components/sortable/Sortable.svelte.d.ts.map +1 -1
  241. package/dist/components/sortable/announce.d.ts +5 -0
  242. package/dist/components/sortable/announce.d.ts.map +1 -0
  243. package/dist/components/sortable/announce.js +33 -0
  244. package/dist/components/sortable/controller.svelte.d.ts +10 -0
  245. package/dist/components/sortable/controller.svelte.d.ts.map +1 -1
  246. package/dist/components/sortable/controller.svelte.js +29 -7
  247. package/dist/components/workspace/admin-shell/AdminShell.svelte +424 -58
  248. package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts +27 -2
  249. package/dist/components/workspace/admin-shell/AdminShell.svelte.d.ts.map +1 -1
  250. package/dist/components/workspace/admin-shell/ShellBrand.svelte +86 -0
  251. package/dist/components/workspace/admin-shell/ShellBrand.svelte.d.ts +18 -0
  252. package/dist/components/workspace/admin-shell/ShellBrand.svelte.d.ts.map +1 -0
  253. package/dist/components/workspace/admin-shell/ShellIconButton.svelte +77 -0
  254. package/dist/components/workspace/admin-shell/ShellIconButton.svelte.d.ts +26 -0
  255. package/dist/components/workspace/admin-shell/ShellIconButton.svelte.d.ts.map +1 -0
  256. package/dist/components/workspace/admin-shell/ShellLayoutEditor.svelte +88 -16
  257. package/dist/components/workspace/admin-shell/ShellLayoutEditor.svelte.d.ts.map +1 -1
  258. package/dist/components/workspace/admin-shell/ShellNavEditor.svelte +531 -0
  259. package/dist/components/workspace/admin-shell/ShellNavEditor.svelte.d.ts +26 -0
  260. package/dist/components/workspace/admin-shell/ShellNavEditor.svelte.d.ts.map +1 -0
  261. package/dist/components/workspace/admin-shell/ShellSectionIcon.svelte +57 -0
  262. package/dist/components/workspace/admin-shell/ShellSectionIcon.svelte.d.ts +22 -0
  263. package/dist/components/workspace/admin-shell/ShellSectionIcon.svelte.d.ts.map +1 -0
  264. package/dist/components/workspace/admin-shell/ShellSectionMenu.svelte +290 -0
  265. package/dist/components/workspace/admin-shell/ShellSectionMenu.svelte.d.ts +32 -0
  266. package/dist/components/workspace/admin-shell/ShellSectionMenu.svelte.d.ts.map +1 -0
  267. package/dist/components/workspace/admin-shell/TenantNav.svelte +67 -2
  268. package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts +8 -0
  269. package/dist/components/workspace/admin-shell/TenantNav.svelte.d.ts.map +1 -1
  270. package/dist/components/workspace/admin-shell/layout-controller.svelte.d.ts +67 -0
  271. package/dist/components/workspace/admin-shell/layout-controller.svelte.d.ts.map +1 -1
  272. package/dist/components/workspace/admin-shell/layout-controller.svelte.js +129 -1
  273. package/dist/components/workspace/admin-shell/layout.d.ts +122 -0
  274. package/dist/components/workspace/admin-shell/layout.d.ts.map +1 -1
  275. package/dist/components/workspace/admin-shell/layout.js +410 -10
  276. package/dist/components/workspace/admin-shell/settings.js +4 -4
  277. package/dist/components/workspace/admin-shell/shell-icons.d.ts +45 -0
  278. package/dist/components/workspace/admin-shell/shell-icons.d.ts.map +1 -0
  279. package/dist/components/workspace/admin-shell/shell-icons.js +66 -0
  280. package/dist/components/workspace/admin-shell/slot-labels.d.ts +33 -0
  281. package/dist/components/workspace/admin-shell/slot-labels.d.ts.map +1 -0
  282. package/dist/components/workspace/admin-shell/slot-labels.js +33 -0
  283. package/dist/components/workspace/admin-shell/slots.d.ts +50 -0
  284. package/dist/components/workspace/admin-shell/slots.d.ts.map +1 -0
  285. package/dist/components/workspace/admin-shell/slots.js +77 -0
  286. package/dist/components/workspace/admin-shell/state.svelte.d.ts +35 -0
  287. package/dist/components/workspace/admin-shell/state.svelte.d.ts.map +1 -1
  288. package/dist/components/workspace/admin-shell/state.svelte.js +111 -0
  289. package/dist/components/workspace/admin-shell/types.d.ts +101 -1
  290. package/dist/components/workspace/admin-shell/types.d.ts.map +1 -1
  291. package/dist/components/workspace/index.d.ts +9 -2
  292. package/dist/components/workspace/index.d.ts.map +1 -1
  293. package/dist/components/workspace/index.js +6 -0
  294. package/dist/components/workspace/manifest-nav.d.ts +20 -0
  295. package/dist/components/workspace/manifest-nav.d.ts.map +1 -1
  296. package/dist/components/workspace/manifest-nav.js +42 -13
  297. package/dist/i18n/server.d.ts +6 -0
  298. package/dist/i18n/server.d.ts.map +1 -1
  299. package/dist/i18n/server.js +6 -0
  300. package/dist/i18n/strings.import-export.d.ts +88 -0
  301. package/dist/i18n/strings.import-export.d.ts.map +1 -0
  302. package/dist/i18n/strings.import-export.js +88 -0
  303. package/dist/i18n/strings.overview.d.ts +100 -0
  304. package/dist/i18n/strings.overview.d.ts.map +1 -0
  305. package/dist/i18n/strings.overview.js +107 -0
  306. package/dist/i18n/strings.palette.d.ts +18 -0
  307. package/dist/i18n/strings.palette.d.ts.map +1 -0
  308. package/dist/i18n/strings.palette.js +18 -0
  309. package/dist/i18n/strings.screens.d.ts +31 -0
  310. package/dist/i18n/strings.screens.d.ts.map +1 -0
  311. package/dist/i18n/strings.screens.js +31 -0
  312. package/dist/i18n/strings.workspace.d.ts +49 -0
  313. package/dist/i18n/strings.workspace.d.ts.map +1 -1
  314. package/dist/i18n/strings.workspace.js +49 -0
  315. package/package.json +59 -19
  316. package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts +0 -51
  317. package/dist/browser-ai/adapters/stt/whisper-wasm.d.ts.map +0 -1
  318. package/dist/browser-ai/adapters/stt/whisper-wasm.js +0 -380
@@ -1,5 +1,6 @@
1
1
  import type { Component, Snippet } from 'svelte';
2
2
  import type { ShellLayout } from './layout.js';
3
+ import type { ShellRegion, ShellSlot } from './slots.js';
3
4
  export type PanelEdge = 'top' | 'left' | 'right' | 'bottom';
4
5
  export type ShellScope = 'app' | 'tenant' | 'focus' | 'system';
5
6
  export type PanelState = 'hidden' | 'collapsed' | 'expanded';
@@ -72,6 +73,13 @@ export interface ShellPanelConfig {
72
73
  * as usual. A hidden edge unmounts everything.
73
74
  */
74
75
  keepMounted?: boolean;
76
+ /**
77
+ * `false`: a side edge has no rail: no focus-tool buttons or edge toggle,
78
+ * open or closed, and no space while closed (nothing to tab to). A host
79
+ * opens and closes it from elsewhere, e.g. a dock toggle in the header.
80
+ * Edit mode still shows its region controls. Default `true`.
81
+ */
82
+ rail?: boolean;
75
83
  }
76
84
  /** Limits for a resizable side edge, in CSS pixels. */
77
85
  export interface ShellPanelResize {
@@ -124,6 +132,23 @@ export interface ShellNavGroup {
124
132
  */
125
133
  id?: string;
126
134
  heading: string;
135
+ /**
136
+ * `false` renders the items flat, without a visible heading; the group keeps
137
+ * an accessible name. Hosts suggest it; a user's layout can override it.
138
+ */
139
+ showTitle?: boolean;
140
+ /**
141
+ * The section's icon: a shell icon name (`SHELL_SECTION_ICONS`) or a name
142
+ * the host's `iconComponent` renders. Shown by `navMode: 'sections'`; the
143
+ * user can override it in the layout (`sections[id].icon`).
144
+ */
145
+ icon?: string;
146
+ /**
147
+ * Where the section's own page (overview) lives. `navMode: 'sections'`
148
+ * links the section here and treats it as current on this page; without it
149
+ * the first visible item's href is used.
150
+ */
151
+ href?: string;
127
152
  items: ShellNavItem[];
128
153
  }
129
154
  /**
@@ -152,6 +177,11 @@ export interface ShellNavItem {
152
177
  id?: string;
153
178
  href: string;
154
179
  label: string;
180
+ /**
181
+ * Set by `applyShellLayout` on an item the user renamed: the host's original
182
+ * label (`label` then holds the user's). Hosts do not set it.
183
+ */
184
+ defaultLabel?: string;
155
185
  icon?: string;
156
186
  description?: string;
157
187
  badge?: number | string | null;
@@ -273,11 +303,69 @@ export interface AdminShellPhoneOptions {
273
303
  /** Hide the `phoneTopBar` while scrolling down (default true). */
274
304
  hideOnScroll?: boolean;
275
305
  }
306
+ /**
307
+ * The in-place layout editing surface `AppShell` hands to `AdminShell`. While
308
+ * `active`, every slot of a visible region renders as a labelled drop zone
309
+ * (`zone` draws its content) and each region in `hiddenRegions` renders as a
310
+ * thin strip (`strip`).
311
+ */
312
+ export interface ShellLayoutEditSurface {
313
+ active: boolean;
314
+ /** The slot highlighted as the current drop target, if any. */
315
+ highlight?: ShellSlot | null;
316
+ /** Content of one slot's drop zone. */
317
+ zone: Snippet<[ShellSlot]>;
318
+ /** Regions the user hid, drawn as strips so they can be shown again. */
319
+ hiddenRegions?: readonly ShellRegion[];
320
+ /** Content of one hidden region's strip. */
321
+ strip?: Snippet<[ShellRegion]>;
322
+ /** Edit controls on a visible region (e.g. a hide button). */
323
+ regionControl?: Snippet<[ShellRegion]>;
324
+ }
325
+ /**
326
+ * What a host's `sectionActions` snippet receives for each navigation section
327
+ * while the layout is being edited: render icon buttons (e.g. an Options gear
328
+ * or Help) and they join the section's overlay icons and floating toolbar.
329
+ */
330
+ export interface ShellSectionActionsContext {
331
+ /** The section id (`ShellNavGroup.id ?? heading`, or `custom:...`). */
332
+ sectionId: string;
333
+ /** The section's current (possibly renamed) label. */
334
+ label: string;
335
+ /** A user-created section. */
336
+ custom: boolean;
337
+ /** Always `true` today; actions render only while the layout is edited. */
338
+ editing: boolean;
339
+ }
276
340
  export interface AdminShellProps {
277
341
  title?: string;
278
342
  /** Optional destination for the default brand and compact rail mark. */
279
343
  homeHref?: string;
280
- /** Show the built-in tenant edge collapse/expand control. */
344
+ /**
345
+ * Show the edge toggle buttons (and their hotkey hints) that open and close
346
+ * the drop-down edge panels: `true` for all four edges, or a per-edge map.
347
+ * Default `false`: no toggles, no hotkeys, and each region is laid out
348
+ * inline (its slots and content visible) instead of a collapsed bar that
349
+ * expands as a drop-down. Visibility then comes from the layout
350
+ * (`ShellLayout.panels`). Existing apps keep the old behaviour with `true`.
351
+ * A phone still gets the Menu opener and drawer for the left sidebar.
352
+ */
353
+ edgeToggles?: boolean | Partial<Record<PanelEdge, boolean>>;
354
+ /**
355
+ * Keyboard shortcuts (WASD, `?`). Default: active only for edges that have
356
+ * toggles. `true` enables them for every edge (the panels then behave as
357
+ * drop-downs without a button); `false` disables them.
358
+ */
359
+ hotkeys?: boolean;
360
+ /**
361
+ * The brand is rendered by the host as a slot item (`AppShell` supplies
362
+ * `item:brand` in `header.start`), so the top band does not draw its own.
363
+ */
364
+ brandInSlot?: boolean;
365
+ /**
366
+ * @deprecated Alias for `edgeToggles.left`: `true` shows the left edge's
367
+ * toggle, `false` hides it even when `edgeToggles` is on.
368
+ */
281
369
  showTenantToggle?: boolean;
282
370
  /** Optional brand logo URL. */
283
371
  logoSrc?: string;
@@ -309,4 +397,16 @@ export declare const ADMIN_SHELL_REGION_IDS: {
309
397
  readonly bottom: "smrt-admin-shell-bottom-panel";
310
398
  readonly main: "smrt-admin-shell-main";
311
399
  };
400
+ /** One row of the menu, as passed to the `meta` and `actions` snippets. */
401
+ export interface ShellSectionMenuEntry {
402
+ id: string;
403
+ href: string;
404
+ /** The displayed label (the user's rename, else the host's). */
405
+ label: string;
406
+ /** The host's label. */
407
+ defaultLabel: string;
408
+ icon?: string;
409
+ hidden: boolean;
410
+ item: ShellNavItem;
411
+ }
312
412
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/workspace/admin-shell/types.ts"],"names":[],"mappings":"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"}
@@ -20,24 +20,31 @@ export { default as HotkeyInput } from './admin-shell/HotkeyInput.svelte';
20
20
  export { formatHotkeyBinding, hotkeyMatchesEvent, isEditableTarget, isShortcutsEvent, type ShellHotkeyAction, shellActionFromKeyboardEvent, shouldIgnoreShellHotkey, } from './admin-shell/hotkeys.js';
21
21
  export * from './admin-shell/layout.js';
22
22
  export { SHELL_LAYOUT_CONTEXT, setShellLayout, tryUseShellLayout, useShellLayout, } from './admin-shell/layout-context.js';
23
- export { ShellLayoutController, type ShellLayoutControllerOptions, type ShellLayoutPanelView, } from './admin-shell/layout-controller.svelte.js';
23
+ export { ShellLayoutController, type ShellLayoutControllerOptions, type ShellLayoutPanelView, type ShellPlacementView, } from './admin-shell/layout-controller.svelte.js';
24
24
  export { type BottomBarMode, bottomBarMode, FORM_ACTION_BAR_SELECTOR, findShellNavTrail, keyboardLikelyOpen, normalizeShellPath, type PhoneBottomBarItem, type PhoneTopBarInput, type PhoneTopBarModel, phoneTopBarFor, ScrollChrome, type ScrollChromeOptions, type ScrollSample, type ShellCrumb, type ShellIcon, type ShellNavPathItem, type ShellPageTrail, type ShellPageTrailInput, shellNavItemMatches, shellPageTrailFor, viewportFor, } from './admin-shell/mobile-shell.js';
25
25
  export { installKeyboardWatcher, installScrollChrome, installShellViewport, watchFormActionBar, } from './admin-shell/mobile-shell-dom.js';
26
26
  export { default as PhoneBottomBar } from './admin-shell/PhoneBottomBar.svelte';
27
27
  export { default as PhoneTopBar } from './admin-shell/PhoneTopBar.svelte';
28
28
  export { default as ShellCorner } from './admin-shell/ShellCorner.svelte';
29
29
  export { default as ShellDockTool } from './admin-shell/ShellDockTool.svelte';
30
+ export { default as ShellIconButton } from './admin-shell/ShellIconButton.svelte';
30
31
  export { default as ShellLayoutEditor } from './admin-shell/ShellLayoutEditor.svelte';
32
+ export { default as ShellNavEditor } from './admin-shell/ShellNavEditor.svelte';
31
33
  export { default as ShellNavToggle } from './admin-shell/ShellNavToggle.svelte';
34
+ export { default as ShellSectionIcon } from './admin-shell/ShellSectionIcon.svelte';
35
+ export { default as ShellSectionMenu } from './admin-shell/ShellSectionMenu.svelte';
32
36
  export { default as ShellSettingsPanel } from './admin-shell/ShellSettingsPanel.svelte';
33
37
  export { default as ShellTitle } from './admin-shell/ShellTitle.svelte';
34
38
  export { default as ShortcutsOverlay } from './admin-shell/ShortcutsOverlay.svelte';
35
39
  export { default as SystemScopePanel } from './admin-shell/SystemScopePanel.svelte';
36
40
  export { default as SystemStatusChips } from './admin-shell/SystemStatusChips.svelte';
37
41
  export { clampPanelSize, DEFAULT_SHELL_KEYMAP, DEFAULT_SHELL_PANEL_RESIZE, LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, panelPersists, pruneShellSettingsDelta, resolveHotkey, resolveInitialPanelState, resolvePanelResize, resolveShellConfig, stripUnpersistedSettings, } from './admin-shell/settings.js';
42
+ export { isShellIconName, SHELL_DEFAULT_SECTION_ICON, SHELL_ICON_PATHS, SHELL_SECTION_ICONS, type ShellIconName, } from './admin-shell/shell-icons.js';
43
+ export type { ShellPlacementItem, ShellRegion, ShellSlot, } from './admin-shell/slots.js';
44
+ export { isShellSlot, resolveSlot, SHELL_DOCK_ITEM_PREFIX, SHELL_HOST_SLOT_ITEM_PREFIX, SHELL_SLOTS, shellDockItemId, shellHostSlotItemId, slotFallbackChain, slotRegion, } from './admin-shell/slots.js';
38
45
  export { ADMIN_SHELL_DESKTOP_QUERY, ADMIN_SHELL_PHONE_QUERY, createShellState, detectShellViewport, ShellState, type ShellStateOptions, } from './admin-shell/state.svelte.js';
39
46
  export { default as TenantNav } from './admin-shell/TenantNav.svelte';
40
- export type { ActivityStatus, AdminShellPhoneOptions, AdminShellProps, PanelEdge, PanelPresentation, PanelState, PhonePanelPresentation, ResolvedShellConfig, ShellActivity, ShellActivityBadge, ShellActivityEvent, ShellActivityFilter, ShellDockOpenOptions, ShellFocusTool, ShellFocusToolSubject, ShellHotkeyBinding, ShellNavGroup, ShellNavItem, ShellNavItemAction, ShellPanelConfig, ShellPanelDefaults, ShellPanelPersist, ShellPanelResize, ShellScope, ShellSettingsAdapter, ShellSettingsDelta, ShellStateSnapshot, ShellStatusChip, ShellStatusTone, ShellSystemItem, ShellSystemPanel, ShellViewport, VisiblePanelState, WorkspaceAccountTenant, } from './admin-shell/types.js';
47
+ export type { ActivityStatus, AdminShellPhoneOptions, AdminShellProps, PanelEdge, PanelPresentation, PanelState, PhonePanelPresentation, ResolvedShellConfig, ShellActivity, ShellActivityBadge, ShellActivityEvent, ShellActivityFilter, ShellDockOpenOptions, ShellFocusTool, ShellFocusToolSubject, ShellHotkeyBinding, ShellLayoutEditSurface, ShellNavGroup, ShellNavItem, ShellNavItemAction, ShellPanelConfig, ShellPanelDefaults, ShellPanelPersist, ShellPanelResize, ShellScope, ShellSectionActionsContext, ShellSectionMenuEntry, ShellSettingsAdapter, ShellSettingsDelta, ShellStateSnapshot, ShellStatusChip, ShellStatusTone, ShellSystemItem, ShellSystemPanel, ShellViewport, VisiblePanelState, WorkspaceAccountTenant, } from './admin-shell/types.js';
41
48
  export { ADMIN_SHELL_REGION_IDS, EDGE_SCOPES, PANEL_EDGES, SCOPE_EDGES, } from './admin-shell/types.js';
42
49
  export { default as WorkspaceAccountMenu } from './admin-shell/WorkspaceAccountMenu.svelte';
43
50
  export { type NavSection, type NavTreeFromManifestOptions, navTreeFromManifest as tenantNavFromManifest, pluralizeClassName, type SmrtManifestEntryLike, type SmrtManifestLike, } from './manifest-nav.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/index.ts"],"names":[],"mappings":"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"}
@@ -29,14 +29,20 @@ export { default as PhoneBottomBar } from './admin-shell/PhoneBottomBar.svelte';
29
29
  export { default as PhoneTopBar } from './admin-shell/PhoneTopBar.svelte';
30
30
  export { default as ShellCorner } from './admin-shell/ShellCorner.svelte';
31
31
  export { default as ShellDockTool } from './admin-shell/ShellDockTool.svelte';
32
+ export { default as ShellIconButton } from './admin-shell/ShellIconButton.svelte';
32
33
  export { default as ShellLayoutEditor } from './admin-shell/ShellLayoutEditor.svelte';
34
+ export { default as ShellNavEditor } from './admin-shell/ShellNavEditor.svelte';
33
35
  export { default as ShellNavToggle } from './admin-shell/ShellNavToggle.svelte';
36
+ export { default as ShellSectionIcon } from './admin-shell/ShellSectionIcon.svelte';
37
+ export { default as ShellSectionMenu } from './admin-shell/ShellSectionMenu.svelte';
34
38
  export { default as ShellSettingsPanel } from './admin-shell/ShellSettingsPanel.svelte';
35
39
  export { default as ShellTitle } from './admin-shell/ShellTitle.svelte';
36
40
  export { default as ShortcutsOverlay } from './admin-shell/ShortcutsOverlay.svelte';
37
41
  export { default as SystemScopePanel } from './admin-shell/SystemScopePanel.svelte';
38
42
  export { default as SystemStatusChips } from './admin-shell/SystemStatusChips.svelte';
39
43
  export { clampPanelSize, DEFAULT_SHELL_KEYMAP, DEFAULT_SHELL_PANEL_RESIZE, LocalStorageShellSettingsAdapter, mergeShellSettingsDelta, panelPersists, pruneShellSettingsDelta, resolveHotkey, resolveInitialPanelState, resolvePanelResize, resolveShellConfig, stripUnpersistedSettings, } from './admin-shell/settings.js';
44
+ export { isShellIconName, SHELL_DEFAULT_SECTION_ICON, SHELL_ICON_PATHS, SHELL_SECTION_ICONS, } from './admin-shell/shell-icons.js';
45
+ export { isShellSlot, resolveSlot, SHELL_DOCK_ITEM_PREFIX, SHELL_HOST_SLOT_ITEM_PREFIX, SHELL_SLOTS, shellDockItemId, shellHostSlotItemId, slotFallbackChain, slotRegion, } from './admin-shell/slots.js';
40
46
  export { ADMIN_SHELL_DESKTOP_QUERY, ADMIN_SHELL_PHONE_QUERY, createShellState, detectShellViewport, ShellState, } from './admin-shell/state.svelte.js';
41
47
  export { default as TenantNav } from './admin-shell/TenantNav.svelte';
42
48
  export { ADMIN_SHELL_REGION_IDS, EDGE_SCOPES, PANEL_EDGES, SCOPE_EDGES, } from './admin-shell/types.js';
@@ -137,6 +137,26 @@ export interface NavTreeFromManifestOptions {
137
137
  * `navTreeFromManifest` apply it.
138
138
  */
139
139
  export declare function pluralizeClassName(name: string): string;
140
+ /** A manifest entry that passed the navigation filters, with what it exposes. */
141
+ export interface NavigableManifestEntry<E extends SmrtManifestEntryLike = SmrtManifestEntryLike> {
142
+ entry: E;
143
+ /** Qualified name, or the synthesised `package:Class`. */
144
+ qualifier: string;
145
+ /** Whether the REST `create` route is generated. */
146
+ creatable: boolean;
147
+ }
148
+ /**
149
+ * The manifest entries admin navigation would list (the same filters as
150
+ * {@link navTreeFromManifest}: no collection classes, internal/test visibility,
151
+ * routeless `api`, or STI subtypes of a shared route), so other manifest-driven
152
+ * surfaces such as the command palette agree with the nav on what exists.
153
+ * Order is manifest order; sort for display.
154
+ */
155
+ export declare function navigableManifestEntries<E extends SmrtManifestEntryLike>(manifest: {
156
+ objects: Record<string, E>;
157
+ }, options?: {
158
+ permittedResources?: readonly string[];
159
+ }): NavigableManifestEntry<E>[];
140
160
  /**
141
161
  * Walk a SMRT manifest and emit the `NavSection[]` shape that
142
162
  * `<NavTree items={...}>` and `RoleConfig.sections` consume.
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-nav.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/manifest-nav.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH;;;;GAIG;AACH,KAAK,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEzD,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC;;;;OAIG;IACH,eAAe,CAAC,EAAE;QAChB,EAAE,CAAC,EAAE;YACH,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;QACF;;;;;WAKG;QACH,GAAG,CAAC,EACA,OAAO,GACP;YAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC;QACvE;;;WAGG;QACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;QAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAChD;AAWD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AAEjC,uDAAuD;AACvD,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAevD;AA6OD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,0BAA+B,GACvC,UAAU,EAAE,CAkEd"}
1
+ {"version":3,"file":"manifest-nav.d.ts","sourceRoot":"","sources":["../../../src/components/workspace/manifest-nav.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAQH;;;;GAIG;AACH,KAAK,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;AAEzD,mEAAmE;AACnE,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC;;;;OAIG;IACH,eAAe,CAAC,EAAE;QAChB,EAAE,CAAC,EAAE;YACH,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;SAChB,CAAC;QACF;;;;;WAKG;QACH,GAAG,CAAC,EACA,OAAO,GACP;YAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC;QACvE;;;WAGG;QACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;QAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,uCAAuC;AACvC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAChD;AAWD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AAEjC,uDAAuD;AACvD,MAAM,WAAW,0BAA0B;IACzC;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAevD;AAqPD,iFAAiF;AACjF,MAAM,WAAW,sBAAsB,CACrC,CAAC,SAAS,qBAAqB,GAAG,qBAAqB;IAEvD,KAAK,EAAE,CAAC,CAAC;IACT,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,OAAO,CAAC;CACpB;AAgBD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,qBAAqB,EACtE,QAAQ,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;CAAE,EACxC,OAAO,GAAE;IAAE,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GACvD,sBAAsB,CAAC,CAAC,CAAC,EAAE,CAc7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,0BAA+B,GACvC,UAAU,EAAE,CA4Dd"}
@@ -185,6 +185,13 @@ function entryIndexByClassName(manifest) {
185
185
  * - `{ exclude: [...] }` → all except listed routes
186
186
  */
187
187
  function hasListRoute(entry) {
188
+ return hasApiRoute(entry, 'list');
189
+ }
190
+ /**
191
+ * Whether an entry exposes the named REST route (`list`, `create`, ...), per
192
+ * the same `@smrt({ api })` shapes {@link hasListRoute} documents.
193
+ */
194
+ function hasApiRoute(entry, route) {
188
195
  const api = entry.decoratorConfig?.api;
189
196
  if (api === undefined || api === true)
190
197
  return true;
@@ -194,10 +201,10 @@ function hasListRoute(entry) {
194
201
  return true;
195
202
  const obj = api;
196
203
  if (Array.isArray(obj.include)) {
197
- return obj.include.includes('list');
204
+ return obj.include.includes(route);
198
205
  }
199
206
  if (Array.isArray(obj.exclude)) {
200
- return !obj.exclude.includes('list');
207
+ return !obj.exclude.includes(route);
201
208
  }
202
209
  return true;
203
210
  }
@@ -282,6 +289,38 @@ function expandPermittedThroughStiParents(permitted, manifest) {
282
289
  }
283
290
  return expanded;
284
291
  }
292
+ function* listNavigableManifestEntries(manifest, permitted) {
293
+ for (const entry of Object.values(manifest.objects)) {
294
+ if (looksLikeCollectionClass(entry))
295
+ continue;
296
+ if (!isPublicEntry(entry))
297
+ continue;
298
+ if (!hasListRoute(entry))
299
+ continue;
300
+ if (looksLikeStiSubtypeOfParentRoute(entry, manifest))
301
+ continue;
302
+ if (permitted && !permitted.has(entryQualifier(entry)))
303
+ continue;
304
+ yield entry;
305
+ }
306
+ }
307
+ /**
308
+ * The manifest entries admin navigation would list (the same filters as
309
+ * {@link navTreeFromManifest}: no collection classes, internal/test visibility,
310
+ * routeless `api`, or STI subtypes of a shared route), so other manifest-driven
311
+ * surfaces such as the command palette agree with the nav on what exists.
312
+ * Order is manifest order; sort for display.
313
+ */
314
+ export function navigableManifestEntries(manifest, options = {}) {
315
+ const permitted = options.permittedResources
316
+ ? expandPermittedThroughStiParents(new Set(options.permittedResources), manifest)
317
+ : undefined;
318
+ return [...listNavigableManifestEntries(manifest, permitted)].map((entry) => ({
319
+ entry: entry,
320
+ qualifier: entryQualifier(entry),
321
+ creatable: hasApiRoute(entry, 'create'),
322
+ }));
323
+ }
285
324
  /**
286
325
  * Walk a SMRT manifest and emit the `NavSection[]` shape that
287
326
  * `<NavTree items={...}>` and `RoleConfig.sections` consume.
@@ -360,18 +399,8 @@ export function navTreeFromManifest(manifest, options = {}) {
360
399
  // order, but we sort the final output anyway so callers don't have to
361
400
  // care about it.
362
401
  const sectionMap = new Map();
363
- for (const entry of Object.values(manifest.objects)) {
364
- if (looksLikeCollectionClass(entry))
365
- continue;
366
- if (!isPublicEntry(entry))
367
- continue;
368
- if (!hasListRoute(entry))
369
- continue;
370
- if (looksLikeStiSubtypeOfParentRoute(entry, manifest))
371
- continue;
402
+ for (const entry of listNavigableManifestEntries(manifest, permitted)) {
372
403
  const qualifier = entryQualifier(entry);
373
- if (permitted && !permitted.has(qualifier))
374
- continue;
375
404
  const ui = entry.decoratorConfig?.ui;
376
405
  const label = ui?.label ?? pluralizeClassName(entry.className);
377
406
  const slug = entry.collection ?? classNameToKebab(entry.className);
@@ -22,7 +22,13 @@ import './strings.forms.js';
22
22
  import './strings.board.js';
23
23
  import './strings.sortable.js';
24
24
  import './strings.audit.js';
25
+ import './strings.import-export.js';
25
26
  import './strings.workspace.js';
27
+ import './strings.screens.js';
28
+ import './strings.palette.js';
29
+ import './strings.overview.js';
30
+ import './strings.settings.js';
31
+ import './strings.browser-ai.js';
26
32
  import '../mcp-apps/strings.js';
27
33
  export interface BuildI18nSnapshotOptions {
28
34
  /** Target locale (BCP-47-ish, e.g. `fr-CA`). */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/i18n/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAGL,KAAK,4BAA4B,EAElC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AAMrC,OAAO,6BAA6B,CAAC;AACrC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,wBAAwB,CAAC;AAChC,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,wBAAwB;IACvC,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,4BAA4B,CAAC,UAAU,CAAC,CAAC;IACpD;;;OAGG;IACH,EAAE,CAAC,EAAE,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACxC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,YAAY,CAAC,CA4BvB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/i18n/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAGL,KAAK,4BAA4B,EAElC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AAMrC,OAAO,6BAA6B,CAAC;AACrC,OAAO,oBAAoB,CAAC;AAC5B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,4BAA4B,CAAC;AACpC,OAAO,wBAAwB,CAAC;AAChC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,sBAAsB,CAAC;AAC9B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,yBAAyB,CAAC;AACjC,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,wBAAwB;IACvC,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,4BAA4B,CAAC,UAAU,CAAC,CAAC;IACpD;;;OAGG;IACH,EAAE,CAAC,EAAE,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACxC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,YAAY,CAAC,CA4BvB"}
@@ -27,7 +27,13 @@ import './strings.forms.js';
27
27
  import './strings.board.js';
28
28
  import './strings.sortable.js';
29
29
  import './strings.audit.js';
30
+ import './strings.import-export.js';
30
31
  import './strings.workspace.js';
32
+ import './strings.screens.js';
33
+ import './strings.palette.js';
34
+ import './strings.overview.js';
35
+ import './strings.settings.js';
36
+ import './strings.browser-ai.js';
31
37
  import '../mcp-apps/strings.js';
32
38
  /**
33
39
  * Resolve a per-locale dictionary of message **templates** for the keys an app
@@ -0,0 +1,88 @@
1
+ export declare const M: {
2
+ readonly 'ui.importExport.label': "ui.importExport.label";
3
+ readonly 'ui.importExport.mode': "ui.importExport.mode";
4
+ readonly 'ui.importExport.tab.import': "ui.importExport.tab.import";
5
+ readonly 'ui.importExport.tab.export': "ui.importExport.tab.export";
6
+ readonly 'ui.importExport.import.file': "ui.importExport.import.file";
7
+ readonly 'ui.importExport.import.fileDescription': "ui.importExport.import.fileDescription";
8
+ readonly 'ui.importExport.import.reading': "ui.importExport.import.reading";
9
+ readonly 'ui.importExport.import.parsed': "ui.importExport.import.parsed";
10
+ readonly 'ui.importExport.import.tooLarge': "ui.importExport.import.tooLarge";
11
+ readonly 'ui.importExport.import.tooManyRows': "ui.importExport.import.tooManyRows";
12
+ readonly 'ui.importExport.import.unterminatedQuote': "ui.importExport.import.unterminatedQuote";
13
+ readonly 'ui.importExport.import.empty': "ui.importExport.import.empty";
14
+ readonly 'ui.importExport.import.readFailed': "ui.importExport.import.readFailed";
15
+ readonly 'ui.importExport.delimiter.comma': "ui.importExport.delimiter.comma";
16
+ readonly 'ui.importExport.delimiter.semicolon': "ui.importExport.delimiter.semicolon";
17
+ readonly 'ui.importExport.delimiter.tab': "ui.importExport.delimiter.tab";
18
+ readonly 'ui.importExport.delimiter.pipe': "ui.importExport.delimiter.pipe";
19
+ readonly 'ui.importExport.map.heading': "ui.importExport.map.heading";
20
+ readonly 'ui.importExport.map.help': "ui.importExport.map.help";
21
+ readonly 'ui.importExport.map.column': "ui.importExport.map.column";
22
+ readonly 'ui.importExport.map.sample': "ui.importExport.map.sample";
23
+ readonly 'ui.importExport.map.target': "ui.importExport.map.target";
24
+ readonly 'ui.importExport.map.ignore': "ui.importExport.map.ignore";
25
+ readonly 'ui.importExport.map.select': "ui.importExport.map.select";
26
+ readonly 'ui.importExport.map.required': "ui.importExport.map.required";
27
+ readonly 'ui.importExport.map.reset': "ui.importExport.map.reset";
28
+ readonly 'ui.importExport.check.heading': "ui.importExport.check.heading";
29
+ readonly 'ui.importExport.check.summary': "ui.importExport.check.summary";
30
+ readonly 'ui.importExport.check.noWrite': "ui.importExport.check.noWrite";
31
+ readonly 'ui.importExport.check.preview': "ui.importExport.check.preview";
32
+ readonly 'ui.importExport.check.problems': "ui.importExport.check.problems";
33
+ readonly 'ui.importExport.check.line': "ui.importExport.check.line";
34
+ readonly 'ui.importExport.check.column': "ui.importExport.check.column";
35
+ readonly 'ui.importExport.check.field': "ui.importExport.check.field";
36
+ readonly 'ui.importExport.check.value': "ui.importExport.check.value";
37
+ readonly 'ui.importExport.check.problem': "ui.importExport.check.problem";
38
+ readonly 'ui.importExport.check.truncated': "ui.importExport.check.truncated";
39
+ readonly 'ui.importExport.check.mappingFixed': "ui.importExport.check.mappingFixed";
40
+ readonly 'ui.importExport.check.nothing': "ui.importExport.check.nothing";
41
+ readonly 'ui.importExport.check.rowStatus.ok': "ui.importExport.check.rowStatus.ok";
42
+ readonly 'ui.importExport.check.rowStatus.bad': "ui.importExport.check.rowStatus.bad";
43
+ readonly 'ui.importExport.check.status': "ui.importExport.check.status";
44
+ readonly 'ui.importExport.run.import': "ui.importExport.run.import";
45
+ readonly 'ui.importExport.run.cancel': "ui.importExport.run.cancel";
46
+ readonly 'ui.importExport.run.progress': "ui.importExport.run.progress";
47
+ readonly 'ui.importExport.run.done': "ui.importExport.run.done";
48
+ readonly 'ui.importExport.run.failed': "ui.importExport.run.failed";
49
+ readonly 'ui.importExport.run.aborted': "ui.importExport.run.aborted";
50
+ readonly 'ui.importExport.run.report': "ui.importExport.run.report";
51
+ readonly 'ui.importExport.run.again': "ui.importExport.run.again";
52
+ readonly 'ui.importExport.export.heading': "ui.importExport.export.heading";
53
+ readonly 'ui.importExport.export.all': "ui.importExport.export.all";
54
+ readonly 'ui.importExport.export.none': "ui.importExport.export.none";
55
+ readonly 'ui.importExport.export.columns': "ui.importExport.export.columns";
56
+ readonly 'ui.importExport.export.format': "ui.importExport.export.format";
57
+ readonly 'ui.importExport.export.formatCsv': "ui.importExport.export.formatCsv";
58
+ readonly 'ui.importExport.export.formatTsv': "ui.importExport.export.formatTsv";
59
+ readonly 'ui.importExport.export.header': "ui.importExport.export.header";
60
+ readonly 'ui.importExport.export.headerStyle': "ui.importExport.export.headerStyle";
61
+ readonly 'ui.importExport.export.headerName': "ui.importExport.export.headerName";
62
+ readonly 'ui.importExport.export.headerLabel': "ui.importExport.export.headerLabel";
63
+ readonly 'ui.importExport.export.run': "ui.importExport.export.run";
64
+ readonly 'ui.importExport.export.loading': "ui.importExport.export.loading";
65
+ readonly 'ui.importExport.export.done': "ui.importExport.export.done";
66
+ readonly 'ui.importExport.export.failed': "ui.importExport.export.failed";
67
+ readonly 'ui.importExport.export.limit': "ui.importExport.export.limit";
68
+ readonly 'ui.importExport.export.noColumns': "ui.importExport.export.noColumns";
69
+ readonly 'ui.importExport.export.unavailable': "ui.importExport.export.unavailable";
70
+ readonly 'ui.importExport.import.unavailable': "ui.importExport.import.unavailable";
71
+ readonly 'ui.importExport.issue.required': "ui.importExport.issue.required";
72
+ readonly 'ui.importExport.issue.invalid-integer': "ui.importExport.issue.invalid-integer";
73
+ readonly 'ui.importExport.issue.out-of-range': "ui.importExport.issue.out-of-range";
74
+ readonly 'ui.importExport.issue.invalid-decimal': "ui.importExport.issue.invalid-decimal";
75
+ readonly 'ui.importExport.issue.invalid-boolean': "ui.importExport.issue.invalid-boolean";
76
+ readonly 'ui.importExport.issue.invalid-datetime': "ui.importExport.issue.invalid-datetime";
77
+ readonly 'ui.importExport.issue.invalid-json': "ui.importExport.issue.invalid-json";
78
+ readonly 'ui.importExport.issue.invalid-enum': "ui.importExport.issue.invalid-enum";
79
+ readonly 'ui.importExport.issue.invalid-email': "ui.importExport.issue.invalid-email";
80
+ readonly 'ui.importExport.issue.invalid-url': "ui.importExport.issue.invalid-url";
81
+ readonly 'ui.importExport.issue.invalid-reference': "ui.importExport.issue.invalid-reference";
82
+ readonly 'ui.importExport.issue.duplicate-value': "ui.importExport.issue.duplicate-value";
83
+ readonly 'ui.importExport.issue.duplicate-mapping': "ui.importExport.issue.duplicate-mapping";
84
+ readonly 'ui.importExport.issue.unmapped-required': "ui.importExport.issue.unmapped-required";
85
+ readonly 'ui.importExport.issue.extra-cells': "ui.importExport.issue.extra-cells";
86
+ readonly 'ui.importExport.issue.import-failed': "ui.importExport.issue.import-failed";
87
+ };
88
+ //# sourceMappingURL=strings.import-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.import-export.d.ts","sourceRoot":"","sources":["../../src/i18n/strings.import-export.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8GZ,CAAC"}
@@ -0,0 +1,88 @@
1
+ import { defineMessages } from '@happyvertical/smrt-ui/i18n';
2
+ export const M = defineMessages({
3
+ 'ui.importExport.label': 'Import and export',
4
+ 'ui.importExport.mode': 'Choose import or export',
5
+ 'ui.importExport.tab.import': 'Import',
6
+ 'ui.importExport.tab.export': 'Export',
7
+ 'ui.importExport.import.file': 'Spreadsheet file',
8
+ 'ui.importExport.import.fileDescription': 'Drop a CSV or TSV file here, or browse. Save a spreadsheet as CSV first.',
9
+ 'ui.importExport.import.reading': 'Reading {name}…',
10
+ 'ui.importExport.import.parsed': '{name}: {rows} rows, {columns} columns, {delimiter}-separated.',
11
+ 'ui.importExport.import.tooLarge': '{name} is {size} MB; the limit is {limit} MB.',
12
+ 'ui.importExport.import.tooManyRows': 'The file has more than {limit} rows. Split it and import in parts.',
13
+ 'ui.importExport.import.unterminatedQuote': 'A quoted cell starting on line {line} is never closed.',
14
+ 'ui.importExport.import.empty': 'The file is empty.',
15
+ 'ui.importExport.import.readFailed': 'The file could not be read.',
16
+ 'ui.importExport.delimiter.comma': 'comma',
17
+ 'ui.importExport.delimiter.semicolon': 'semicolon',
18
+ 'ui.importExport.delimiter.tab': 'tab',
19
+ 'ui.importExport.delimiter.pipe': 'pipe',
20
+ 'ui.importExport.map.heading': 'Map columns',
21
+ 'ui.importExport.map.help': 'Match each column in your file to a field. Columns set to “Do not import” are ignored.',
22
+ 'ui.importExport.map.column': 'File column',
23
+ 'ui.importExport.map.sample': 'First value',
24
+ 'ui.importExport.map.target': 'Field',
25
+ 'ui.importExport.map.ignore': 'Do not import',
26
+ 'ui.importExport.map.select': 'Field for column {column}',
27
+ 'ui.importExport.map.required': '{label} (required)',
28
+ 'ui.importExport.map.reset': 'Re-detect columns',
29
+ 'ui.importExport.check.heading': 'Check before importing',
30
+ 'ui.importExport.check.summary': '{valid} of {total} rows are ready; {invalid} have problems.',
31
+ 'ui.importExport.check.noWrite': 'Nothing is saved until you press Import.',
32
+ 'ui.importExport.check.preview': 'Preview of the first {count} rows',
33
+ 'ui.importExport.check.problems': 'Problems',
34
+ 'ui.importExport.check.line': 'Line',
35
+ 'ui.importExport.check.column': 'Column',
36
+ 'ui.importExport.check.field': 'Field',
37
+ 'ui.importExport.check.value': 'Value',
38
+ 'ui.importExport.check.problem': 'Problem',
39
+ 'ui.importExport.check.truncated': 'Only the first problems are listed; the error report has the same cap.',
40
+ 'ui.importExport.check.mappingFixed': 'Fix the column mapping above to continue.',
41
+ 'ui.importExport.check.nothing': 'No rows are ready to import.',
42
+ 'ui.importExport.check.rowStatus.ok': 'Ready',
43
+ 'ui.importExport.check.rowStatus.bad': 'Problem',
44
+ 'ui.importExport.check.status': 'Status',
45
+ 'ui.importExport.run.import': 'Import {count} rows',
46
+ 'ui.importExport.run.cancel': 'Stop import',
47
+ 'ui.importExport.run.progress': 'Imported {done} of {total}…',
48
+ 'ui.importExport.run.done': 'Imported {created} of {attempted} rows.',
49
+ 'ui.importExport.run.failed': '{count} rows were rejected by the server.',
50
+ 'ui.importExport.run.aborted': 'Stopped. {remaining} rows were not attempted.',
51
+ 'ui.importExport.run.report': 'Download error report',
52
+ 'ui.importExport.run.again': 'Import another file',
53
+ 'ui.importExport.export.heading': 'Choose columns',
54
+ 'ui.importExport.export.all': 'Select all',
55
+ 'ui.importExport.export.none': 'Clear',
56
+ 'ui.importExport.export.columns': 'Columns to export',
57
+ 'ui.importExport.export.format': 'Format',
58
+ 'ui.importExport.export.formatCsv': 'CSV (comma-separated)',
59
+ 'ui.importExport.export.formatTsv': 'TSV (tab-separated)',
60
+ 'ui.importExport.export.header': 'Include a header row',
61
+ 'ui.importExport.export.headerStyle': 'Header text',
62
+ 'ui.importExport.export.headerName': 'Field names (re-importable)',
63
+ 'ui.importExport.export.headerLabel': 'Readable labels',
64
+ 'ui.importExport.export.run': 'Export {count} columns',
65
+ 'ui.importExport.export.loading': 'Loading rows…',
66
+ 'ui.importExport.export.done': 'Exported {rows} rows and {columns} columns to {filename}.',
67
+ 'ui.importExport.export.failed': 'The export failed: {reason}',
68
+ 'ui.importExport.export.limit': 'The collection has more than {limit} rows; narrow it before exporting.',
69
+ 'ui.importExport.export.noColumns': 'Select at least one column.',
70
+ 'ui.importExport.export.unavailable': 'Export is not available here.',
71
+ 'ui.importExport.import.unavailable': 'Import is not available here.',
72
+ 'ui.importExport.issue.required': 'A value is required.',
73
+ 'ui.importExport.issue.invalid-integer': 'Expected a whole number.',
74
+ 'ui.importExport.issue.out-of-range': 'The number is outside the supported range.',
75
+ 'ui.importExport.issue.invalid-decimal': 'Expected a number.',
76
+ 'ui.importExport.issue.invalid-boolean': 'Expected true/false, yes/no or 1/0.',
77
+ 'ui.importExport.issue.invalid-datetime': 'Expected an ISO 8601 date or date-time (YYYY-MM-DD or YYYY-MM-DDThh:mm:ss).',
78
+ 'ui.importExport.issue.invalid-json': 'Expected valid JSON.',
79
+ 'ui.importExport.issue.invalid-enum': 'Not one of the allowed values.',
80
+ 'ui.importExport.issue.invalid-email': 'Expected an email address.',
81
+ 'ui.importExport.issue.invalid-url': 'Expected an http(s) URL.',
82
+ 'ui.importExport.issue.invalid-reference': 'Expected an id with no spaces.',
83
+ 'ui.importExport.issue.duplicate-value': 'This value repeats an earlier row.',
84
+ 'ui.importExport.issue.duplicate-mapping': 'More than one column maps to this field.',
85
+ 'ui.importExport.issue.unmapped-required': 'This required field has no column mapped.',
86
+ 'ui.importExport.issue.extra-cells': 'The row has more cells than the header.',
87
+ 'ui.importExport.issue.import-failed': 'The server rejected this row.',
88
+ });