nuxt-ui-tools 1.12.0 → 1.13.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 (321) hide show
  1. package/README.md +11 -5
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +46 -0
  4. package/dist/runtime/dashboard/components/dashboard-stat.d.vue.ts +1 -1
  5. package/dist/runtime/dashboard/components/dashboard-stat.vue.d.ts +1 -1
  6. package/dist/runtime/file-preview/components/shell/file-preview-stage.d.vue.ts +2 -2
  7. package/dist/runtime/file-preview/components/shell/file-preview-stage.vue.d.ts +2 -2
  8. package/dist/runtime/i18n/locales/en.js +251 -130
  9. package/dist/runtime/i18n/locales/fr.js +251 -130
  10. package/dist/runtime/i18n/types.d.ts +241 -119
  11. package/dist/runtime/shared/types/remote-options.d.ts +11 -0
  12. package/dist/runtime/shared/utils/define-remote-options.js +6 -0
  13. package/dist/runtime/shared/utils/file.d.ts +1 -1
  14. package/dist/runtime/spreadsheet/components/{steps/review/spreadsheet-review-overflow-alert.d.vue.ts → internal/spreadsheet-import-cell-editor.d.vue.ts} +8 -5
  15. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-cell-editor.vue +73 -0
  16. package/dist/runtime/spreadsheet/components/{steps/review/spreadsheet-review-overflow-alert.vue.d.ts → internal/spreadsheet-import-cell-editor.vue.d.ts} +8 -5
  17. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.d.vue.ts +17 -0
  18. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.vue +98 -0
  19. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-column-row.vue.d.ts +17 -0
  20. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.d.vue.ts +17 -0
  21. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.vue +20 -0
  22. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-heading.vue.d.ts +17 -0
  23. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.d.vue.ts +10 -0
  24. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.vue +34 -0
  25. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-status-badge.vue.d.ts +10 -0
  26. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.d.vue.ts +13 -0
  27. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.vue +113 -0
  28. package/dist/runtime/spreadsheet/components/internal/spreadsheet-import-value-row.vue.d.ts +13 -0
  29. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.d.vue.ts +35 -0
  30. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.vue +154 -0
  31. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-column-mapping.vue.d.ts +35 -0
  32. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.d.vue.ts +23 -0
  33. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.vue +83 -0
  34. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-dropzone.vue.d.ts +23 -0
  35. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.d.vue.ts +19 -0
  36. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.vue +45 -0
  37. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-expected-columns.vue.d.ts +19 -0
  38. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-object-preview-table.d.vue.ts → parts/spreadsheet-import-export-button.d.vue.ts} +3 -2
  39. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-export-button.vue +34 -0
  40. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-file-bar.vue.d.ts → parts/spreadsheet-import-export-button.vue.d.ts} +3 -4
  41. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.d.vue.ts +17 -0
  42. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.vue +49 -0
  43. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-file-card.vue.d.ts +17 -0
  44. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.d.vue.ts +18 -0
  45. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.vue +101 -0
  46. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-progress.vue.d.ts +18 -0
  47. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.d.vue.ts +22 -0
  48. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.vue +276 -0
  49. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-row-inspector.vue.d.ts +22 -0
  50. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.d.vue.ts +11 -0
  51. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.vue +164 -0
  52. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-source-settings.vue.d.ts +11 -0
  53. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-value-preview.d.vue.ts → parts/spreadsheet-import-stat.d.vue.ts} +7 -4
  54. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stat.vue +30 -0
  55. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-value-preview.vue.d.ts → parts/spreadsheet-import-stat.vue.d.ts} +7 -4
  56. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.d.vue.ts +26 -0
  57. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.vue +55 -0
  58. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-stats.vue.d.ts +26 -0
  59. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-object-preview-table.vue.d.ts → parts/spreadsheet-import-submit-button.d.vue.ts} +3 -2
  60. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-submit-button.vue +27 -0
  61. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-submit-button.vue.d.ts +8 -0
  62. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.d.vue.ts +16 -0
  63. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.vue +51 -0
  64. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-summary.vue.d.ts +16 -0
  65. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-file-bar.d.vue.ts → parts/spreadsheet-import-table-toolbar.d.vue.ts} +2 -4
  66. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table-toolbar.vue +217 -0
  67. package/dist/runtime/spreadsheet/components/{shared/spreadsheet-raw-preview-table.d.vue.ts → parts/spreadsheet-import-table-toolbar.vue.d.ts} +2 -2
  68. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.d.vue.ts +33 -0
  69. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.vue +302 -0
  70. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-table.vue.d.ts +33 -0
  71. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-sidebar.d.vue.ts → parts/spreadsheet-import-template-button.d.vue.ts} +5 -4
  72. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-template-button.vue +31 -0
  73. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-sidebar.vue.d.ts → parts/spreadsheet-import-template-button.vue.d.ts} +5 -4
  74. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.d.vue.ts +27 -0
  75. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.vue +162 -0
  76. package/dist/runtime/spreadsheet/components/parts/spreadsheet-import-value-mapping.vue.d.ts +27 -0
  77. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.d.vue.ts +24 -0
  78. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.vue +23 -0
  79. package/dist/runtime/spreadsheet/components/spreadsheet-import-root.vue.d.ts +24 -0
  80. package/dist/runtime/spreadsheet/components/spreadsheet-import.d.vue.ts +21 -6
  81. package/dist/runtime/spreadsheet/components/spreadsheet-import.vue +46 -262
  82. package/dist/runtime/spreadsheet/components/spreadsheet-import.vue.d.ts +21 -6
  83. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-header.d.vue.ts → steps/spreadsheet-import-step-nav.d.vue.ts} +6 -2
  84. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step-nav.vue +116 -0
  85. package/dist/runtime/spreadsheet/components/{layout/spreadsheet-import-header.vue.d.ts → steps/spreadsheet-import-step-nav.vue.d.ts} +6 -2
  86. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.d.vue.ts +26 -0
  87. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.vue +106 -0
  88. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-step.vue.d.ts +26 -0
  89. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.d.vue.ts +15 -0
  90. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.vue +131 -0
  91. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-stepper.vue.d.ts +15 -0
  92. package/dist/runtime/spreadsheet/composables/index.d.ts +2 -0
  93. package/dist/runtime/spreadsheet/composables/index.js +2 -0
  94. package/dist/runtime/spreadsheet/composables/use-spreadsheet-answers.d.ts +8 -0
  95. package/dist/runtime/spreadsheet/composables/use-spreadsheet-answers.js +19 -0
  96. package/dist/runtime/spreadsheet/composables/use-spreadsheet-columns.d.ts +23 -0
  97. package/dist/runtime/spreadsheet/composables/use-spreadsheet-columns.js +75 -0
  98. package/dist/runtime/spreadsheet/composables/use-spreadsheet-context.d.ts +8 -45
  99. package/dist/runtime/spreadsheet/composables/use-spreadsheet-context.js +28 -32
  100. package/dist/runtime/spreadsheet/composables/use-spreadsheet-edits.d.ts +11 -0
  101. package/dist/runtime/spreadsheet/composables/use-spreadsheet-edits.js +25 -0
  102. package/dist/runtime/spreadsheet/composables/use-spreadsheet-fields.d.ts +16 -0
  103. package/dist/runtime/spreadsheet/composables/use-spreadsheet-fields.js +20 -0
  104. package/dist/runtime/spreadsheet/composables/use-spreadsheet-file.d.ts +14 -0
  105. package/dist/runtime/spreadsheet/composables/use-spreadsheet-file.js +44 -0
  106. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import-context.d.ts +12 -0
  107. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import-context.js +22 -0
  108. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import.d.ts +18 -7
  109. package/dist/runtime/spreadsheet/composables/use-spreadsheet-import.js +340 -109
  110. package/dist/runtime/spreadsheet/composables/use-spreadsheet-layout.d.ts +36 -0
  111. package/dist/runtime/spreadsheet/composables/use-spreadsheet-layout.js +95 -0
  112. package/dist/runtime/spreadsheet/composables/use-spreadsheet-options.d.ts +24 -0
  113. package/dist/runtime/spreadsheet/composables/use-spreadsheet-options.js +159 -0
  114. package/dist/runtime/spreadsheet/composables/use-spreadsheet-queries.d.ts +14 -0
  115. package/dist/runtime/spreadsheet/composables/use-spreadsheet-queries.js +11 -0
  116. package/dist/runtime/spreadsheet/composables/use-spreadsheet-review.d.ts +37 -169
  117. package/dist/runtime/spreadsheet/composables/use-spreadsheet-review.js +148 -408
  118. package/dist/runtime/spreadsheet/composables/use-spreadsheet-rows.d.ts +48 -26
  119. package/dist/runtime/spreadsheet/composables/use-spreadsheet-rows.js +334 -21
  120. package/dist/runtime/spreadsheet/composables/use-spreadsheet-steps.d.ts +33 -0
  121. package/dist/runtime/spreadsheet/composables/use-spreadsheet-steps.js +126 -0
  122. package/dist/runtime/spreadsheet/composables/use-spreadsheet-submit.d.ts +37 -0
  123. package/dist/runtime/spreadsheet/composables/use-spreadsheet-submit.js +136 -0
  124. package/dist/runtime/spreadsheet/composables/use-spreadsheet-values.d.ts +27 -0
  125. package/dist/runtime/spreadsheet/composables/use-spreadsheet-values.js +121 -0
  126. package/dist/runtime/spreadsheet/index.d.ts +0 -1
  127. package/dist/runtime/spreadsheet/index.js +0 -1
  128. package/dist/runtime/spreadsheet/schema/builder.d.ts +8 -0
  129. package/dist/runtime/spreadsheet/schema/builder.js +31 -0
  130. package/dist/runtime/spreadsheet/schema/index.d.ts +24 -32
  131. package/dist/runtime/spreadsheet/schema/index.js +4 -21
  132. package/dist/runtime/spreadsheet/types/columns.d.ts +252 -273
  133. package/dist/runtime/spreadsheet/types/fields.d.ts +64 -0
  134. package/dist/runtime/spreadsheet/types/importer.d.ts +308 -0
  135. package/dist/runtime/spreadsheet/types/index.d.ts +6 -10
  136. package/dist/runtime/spreadsheet/types/options.d.ts +47 -9
  137. package/dist/runtime/spreadsheet/types/rows.d.ts +57 -48
  138. package/dist/runtime/spreadsheet/types/schema.d.ts +162 -76
  139. package/dist/runtime/spreadsheet/types/shared.d.ts +19 -21
  140. package/dist/runtime/spreadsheet/types/source.d.ts +39 -15
  141. package/dist/runtime/spreadsheet/types/steps.d.ts +76 -0
  142. package/dist/runtime/spreadsheet/types/validation.d.ts +49 -69
  143. package/dist/runtime/spreadsheet/types/values.d.ts +77 -0
  144. package/dist/runtime/spreadsheet/utils/download.d.ts +2 -0
  145. package/dist/runtime/spreadsheet/utils/download.js +8 -0
  146. package/dist/runtime/spreadsheet/utils/export.d.ts +26 -0
  147. package/dist/runtime/spreadsheet/utils/export.js +50 -0
  148. package/dist/runtime/spreadsheet/utils/fields.d.ts +26 -0
  149. package/dist/runtime/spreadsheet/utils/fields.js +169 -0
  150. package/dist/runtime/spreadsheet/utils/guards.d.ts +18 -0
  151. package/dist/runtime/spreadsheet/utils/guards.js +27 -0
  152. package/dist/runtime/spreadsheet/utils/headers.d.ts +15 -0
  153. package/dist/runtime/spreadsheet/utils/headers.js +36 -0
  154. package/dist/runtime/spreadsheet/utils/identity.d.ts +24 -0
  155. package/dist/runtime/spreadsheet/utils/identity.js +57 -0
  156. package/dist/runtime/spreadsheet/utils/index.d.ts +15 -6
  157. package/dist/runtime/spreadsheet/utils/index.js +15 -6
  158. package/dist/runtime/spreadsheet/utils/layout.d.ts +12 -0
  159. package/dist/runtime/spreadsheet/utils/layout.js +37 -0
  160. package/dist/runtime/spreadsheet/utils/options.d.ts +31 -10
  161. package/dist/runtime/spreadsheet/utils/options.js +58 -30
  162. package/dist/runtime/spreadsheet/utils/parse.d.ts +6 -0
  163. package/dist/runtime/spreadsheet/utils/parse.js +147 -0
  164. package/dist/runtime/spreadsheet/utils/paths.d.ts +4 -0
  165. package/dist/runtime/spreadsheet/utils/paths.js +29 -0
  166. package/dist/runtime/spreadsheet/utils/rows.d.ts +69 -0
  167. package/dist/runtime/spreadsheet/utils/rows.js +168 -0
  168. package/dist/runtime/spreadsheet/utils/rules.d.ts +4 -0
  169. package/dist/runtime/spreadsheet/utils/rules.js +95 -0
  170. package/dist/runtime/spreadsheet/utils/suggestions.d.ts +20 -0
  171. package/dist/runtime/spreadsheet/utils/suggestions.js +43 -0
  172. package/dist/runtime/spreadsheet/utils/text.d.ts +9 -0
  173. package/dist/runtime/spreadsheet/utils/text.js +11 -0
  174. package/dist/runtime/spreadsheet/utils/workbook.d.ts +13 -0
  175. package/dist/runtime/spreadsheet/utils/workbook.js +121 -0
  176. package/dist/runtime/table/components/filters/tags/boolean-filter-tag.d.vue.ts +2 -2
  177. package/dist/runtime/table/components/filters/tags/boolean-filter-tag.vue.d.ts +2 -2
  178. package/dist/runtime/table/components/filters/tags/date-filter-tag.d.vue.ts +2 -2
  179. package/dist/runtime/table/components/filters/tags/date-filter-tag.vue.d.ts +2 -2
  180. package/dist/runtime/table/components/filters/tags/number-filter-tag.d.vue.ts +2 -2
  181. package/dist/runtime/table/components/filters/tags/number-filter-tag.vue.d.ts +2 -2
  182. package/dist/runtime/table/components/filters/tags/option-filter-tag.d.vue.ts +2 -2
  183. package/dist/runtime/table/components/filters/tags/option-filter-tag.vue.d.ts +2 -2
  184. package/dist/runtime/table/components/filters/tags/text-filter-tag.d.vue.ts +2 -2
  185. package/dist/runtime/table/components/filters/tags/text-filter-tag.vue.d.ts +2 -2
  186. package/dist/runtime/table/components/table/table-cell-ellipsis.d.ts +1 -1
  187. package/dist/runtime/table/utils/data-list-ui.d.ts +1 -1
  188. package/package.json +18 -3
  189. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-file-bar.vue +0 -31
  190. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.d.vue.ts +0 -24
  191. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.vue +0 -69
  192. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-footer.vue.d.ts +0 -24
  193. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-header.vue +0 -36
  194. package/dist/runtime/spreadsheet/components/layout/spreadsheet-import-sidebar.vue +0 -63
  195. package/dist/runtime/spreadsheet/components/shared/spreadsheet-object-preview-table.vue +0 -67
  196. package/dist/runtime/spreadsheet/components/shared/spreadsheet-raw-preview-table.vue +0 -41
  197. package/dist/runtime/spreadsheet/components/shared/spreadsheet-raw-preview-table.vue.d.ts +0 -7
  198. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.d.vue.ts +0 -10
  199. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.vue +0 -25
  200. package/dist/runtime/spreadsheet/components/shared/spreadsheet-summary-stats.vue.d.ts +0 -10
  201. package/dist/runtime/spreadsheet/components/shared/spreadsheet-value-preview.vue +0 -201
  202. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.d.vue.ts +0 -11
  203. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.vue +0 -38
  204. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-summary.vue.d.ts +0 -11
  205. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.d.vue.ts +0 -45
  206. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.vue +0 -219
  207. package/dist/runtime/spreadsheet/components/steps/matching/spreadsheet-matching-table.vue.d.ts +0 -45
  208. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.d.vue.ts +0 -51
  209. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.vue +0 -166
  210. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-accordion.vue.d.ts +0 -51
  211. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.d.vue.ts +0 -11
  212. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.vue +0 -26
  213. package/dist/runtime/spreadsheet/components/steps/references/spreadsheet-references-summary.vue.d.ts +0 -11
  214. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.d.vue.ts +0 -41
  215. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.vue +0 -392
  216. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-inspection.vue.d.ts +0 -41
  217. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-overflow-alert.vue +0 -43
  218. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.d.vue.ts +0 -15
  219. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.vue +0 -40
  220. package/dist/runtime/spreadsheet/components/steps/review/spreadsheet-review-stats.vue.d.ts +0 -15
  221. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.d.vue.ts +0 -7
  222. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.vue +0 -137
  223. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-matching-step.vue.d.ts +0 -7
  224. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.d.vue.ts +0 -7
  225. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.vue +0 -222
  226. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-references-step.vue.d.ts +0 -7
  227. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.d.vue.ts +0 -7
  228. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.vue +0 -191
  229. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-review-step.vue.d.ts +0 -7
  230. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.d.vue.ts +0 -7
  231. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.vue +0 -62
  232. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-structure-step.vue.d.ts +0 -7
  233. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.d.vue.ts +0 -8
  234. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.vue +0 -81
  235. package/dist/runtime/spreadsheet/components/steps/spreadsheet-import-upload-step.vue.d.ts +0 -8
  236. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.d.vue.ts +0 -15
  237. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.vue +0 -95
  238. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-preview-table.vue.d.ts +0 -15
  239. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.d.vue.ts +0 -15
  240. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.vue +0 -56
  241. package/dist/runtime/spreadsheet/components/steps/structure/spreadsheet-structure-sheet-list.vue.d.ts +0 -15
  242. package/dist/runtime/spreadsheet/components/types.d.ts +0 -41
  243. package/dist/runtime/spreadsheet/composables/use-spreadsheet-column-matching.d.ts +0 -18
  244. package/dist/runtime/spreadsheet/composables/use-spreadsheet-column-matching.js +0 -62
  245. package/dist/runtime/spreadsheet/composables/use-spreadsheet-internals.d.ts +0 -629
  246. package/dist/runtime/spreadsheet/composables/use-spreadsheet-internals.js +0 -68
  247. package/dist/runtime/spreadsheet/composables/use-spreadsheet-references.d.ts +0 -1
  248. package/dist/runtime/spreadsheet/composables/use-spreadsheet-references.js +0 -3
  249. package/dist/runtime/spreadsheet/composables/use-spreadsheet-resolutions.d.ts +0 -40
  250. package/dist/runtime/spreadsheet/composables/use-spreadsheet-resolutions.js +0 -97
  251. package/dist/runtime/spreadsheet/composables/use-spreadsheet-row-state.d.ts +0 -24
  252. package/dist/runtime/spreadsheet/composables/use-spreadsheet-row-state.js +0 -74
  253. package/dist/runtime/spreadsheet/composables/use-spreadsheet-source.d.ts +0 -27
  254. package/dist/runtime/spreadsheet/composables/use-spreadsheet-source.js +0 -109
  255. package/dist/runtime/spreadsheet/composables/use-spreadsheet-view.d.ts +0 -15
  256. package/dist/runtime/spreadsheet/composables/use-spreadsheet-view.js +0 -109
  257. package/dist/runtime/spreadsheet/schema/normalize.d.ts +0 -73
  258. package/dist/runtime/spreadsheet/schema/normalize.js +0 -136
  259. package/dist/runtime/spreadsheet/types/context.d.ts +0 -9
  260. package/dist/runtime/spreadsheet/types/import.d.ts +0 -55
  261. package/dist/runtime/spreadsheet/types/inference.d.ts +0 -83
  262. package/dist/runtime/spreadsheet/types/normalized.d.ts +0 -50
  263. package/dist/runtime/spreadsheet/types/normalized.js +0 -0
  264. package/dist/runtime/spreadsheet/types/pipeline.d.ts +0 -7
  265. package/dist/runtime/spreadsheet/types/pipeline.js +0 -0
  266. package/dist/runtime/spreadsheet/types/reference-session.d.ts +0 -43
  267. package/dist/runtime/spreadsheet/types/reference-session.js +0 -0
  268. package/dist/runtime/spreadsheet/types/references.d.ts +0 -32
  269. package/dist/runtime/spreadsheet/types/references.js +0 -0
  270. package/dist/runtime/spreadsheet/types/resolution.d.ts +0 -43
  271. package/dist/runtime/spreadsheet/types/resolution.js +0 -0
  272. package/dist/runtime/spreadsheet/utils/builders/core.d.ts +0 -17
  273. package/dist/runtime/spreadsheet/utils/builders/core.js +0 -262
  274. package/dist/runtime/spreadsheet/utils/builders/index.d.ts +0 -1
  275. package/dist/runtime/spreadsheet/utils/builders/index.js +0 -1
  276. package/dist/runtime/spreadsheet/utils/context.d.ts +0 -20
  277. package/dist/runtime/spreadsheet/utils/context.js +0 -25
  278. package/dist/runtime/spreadsheet/utils/display.d.ts +0 -6
  279. package/dist/runtime/spreadsheet/utils/display.js +0 -26
  280. package/dist/runtime/spreadsheet/utils/object.d.ts +0 -9
  281. package/dist/runtime/spreadsheet/utils/object.js +0 -78
  282. package/dist/runtime/spreadsheet/utils/references/candidates.d.ts +0 -6
  283. package/dist/runtime/spreadsheet/utils/references/candidates.js +0 -28
  284. package/dist/runtime/spreadsheet/utils/references/core.d.ts +0 -3
  285. package/dist/runtime/spreadsheet/utils/references/core.js +0 -3
  286. package/dist/runtime/spreadsheet/utils/references/guards.d.ts +0 -4
  287. package/dist/runtime/spreadsheet/utils/references/guards.js +0 -28
  288. package/dist/runtime/spreadsheet/utils/references/index.d.ts +0 -1
  289. package/dist/runtime/spreadsheet/utils/references/index.js +0 -1
  290. package/dist/runtime/spreadsheet/utils/references/resolutions.d.ts +0 -17
  291. package/dist/runtime/spreadsheet/utils/references/resolutions.js +0 -172
  292. package/dist/runtime/spreadsheet/utils/references/shared.d.ts +0 -3
  293. package/dist/runtime/spreadsheet/utils/references/shared.js +0 -26
  294. package/dist/runtime/spreadsheet/utils/references/sources.d.ts +0 -9
  295. package/dist/runtime/spreadsheet/utils/references/sources.js +0 -38
  296. package/dist/runtime/spreadsheet/utils/rows/core.d.ts +0 -4
  297. package/dist/runtime/spreadsheet/utils/rows/core.js +0 -4
  298. package/dist/runtime/spreadsheet/utils/rows/headers.d.ts +0 -2
  299. package/dist/runtime/spreadsheet/utils/rows/headers.js +0 -9
  300. package/dist/runtime/spreadsheet/utils/rows/index.d.ts +0 -1
  301. package/dist/runtime/spreadsheet/utils/rows/index.js +0 -1
  302. package/dist/runtime/spreadsheet/utils/rows/matching.d.ts +0 -5
  303. package/dist/runtime/spreadsheet/utils/rows/matching.js +0 -209
  304. package/dist/runtime/spreadsheet/utils/rows/parsing.d.ts +0 -7
  305. package/dist/runtime/spreadsheet/utils/rows/parsing.js +0 -209
  306. package/dist/runtime/spreadsheet/utils/rows/shared.d.ts +0 -17
  307. package/dist/runtime/spreadsheet/utils/rows/shared.js +0 -309
  308. package/dist/runtime/spreadsheet/utils/rows/summary.d.ts +0 -2
  309. package/dist/runtime/spreadsheet/utils/rows/summary.js +0 -10
  310. package/dist/runtime/spreadsheet/utils/source/core.d.ts +0 -9
  311. package/dist/runtime/spreadsheet/utils/source/core.js +0 -65
  312. package/dist/runtime/spreadsheet/utils/source/index.d.ts +0 -1
  313. package/dist/runtime/spreadsheet/utils/source/index.js +0 -1
  314. package/dist/runtime/spreadsheet/utils/validation/core.d.ts +0 -16
  315. package/dist/runtime/spreadsheet/utils/validation/core.js +0 -211
  316. package/dist/runtime/spreadsheet/utils/validation/index.d.ts +0 -1
  317. package/dist/runtime/spreadsheet/utils/validation/index.js +0 -1
  318. /package/dist/runtime/spreadsheet/{components/types.js → types/fields.js} +0 -0
  319. /package/dist/runtime/spreadsheet/types/{context.js → importer.js} +0 -0
  320. /package/dist/runtime/spreadsheet/types/{import.js → steps.js} +0 -0
  321. /package/dist/runtime/spreadsheet/types/{inference.js → values.js} +0 -0
@@ -0,0 +1,45 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ import { useUiToolsLocale } from "#ui-tools/i18n";
4
+ import { useSpreadsheetImporter } from "../../composables/use-spreadsheet-import-context";
5
+ const props = defineProps({
6
+ importer: { type: Object, required: false }
7
+ });
8
+ defineSlots();
9
+ const importer = useSpreadsheetImporter(() => props.importer);
10
+ const { t } = useUiToolsLocale();
11
+ const fields = computed(() => importer.value.columns.fields.filter((field) => !field.from));
12
+ const hasDynamic = computed(() => fields.value.some((field) => field.group?.dynamic));
13
+ </script>
14
+
15
+ <template>
16
+ <div v-if="fields.length" data-spreadsheet-expected-columns class="grid gap-2.5">
17
+ <div class="flex items-center gap-2">
18
+ <span class="text-[11px] font-semibold tracking-[0.08em] text-dimmed uppercase">
19
+ {{ t("spreadsheet.file.expected") }}
20
+ </span>
21
+ <span class="text-xs text-dimmed tabular-nums"
22
+ >· {{ t("spreadsheet.file.expectedCount", { count: fields.length }) }}</span
23
+ >
24
+ <span class="ms-auto"><slot name="actions" /></span>
25
+ </div>
26
+ <ul class="flex flex-wrap gap-1.5">
27
+ <li v-for="field in fields" :key="field.path" :title="field.description || field.label">
28
+ <slot name="column" :field="field">
29
+ <span
30
+ class="inline-flex h-6 items-center gap-1 rounded-md px-2 text-[12px] font-medium whitespace-nowrap"
31
+ :class="
32
+ field.group?.dynamic ? 'bg-primary/10 text-primary' : field.required ? 'bg-elevated text-toned ring-1 ring-default ring-inset' : 'text-muted ring-1 ring-default ring-inset'
33
+ "
34
+ >
35
+ {{ field.name }}
36
+ <span v-if="!field.required && !field.group?.dynamic" class="font-normal text-dimmed">
37
+ · {{ t("spreadsheet.file.optional") }}
38
+ </span>
39
+ </span>
40
+ </slot>
41
+ </li>
42
+ </ul>
43
+ <p v-if="hasDynamic" class="text-xs text-dimmed">{{ t("spreadsheet.file.fromContext") }}</p>
44
+ </div>
45
+ </template>
@@ -0,0 +1,19 @@
1
+ import type { SpreadsheetFieldState, SpreadsheetImporter } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ };
5
+ type __VLS_Slots = {
6
+ column?: (props: {
7
+ field: SpreadsheetFieldState;
8
+ }) => unknown;
9
+ actions?: () => unknown;
10
+ };
11
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
12
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
@@ -1,6 +1,7 @@
1
- import type { SpreadsheetRecord } from '../../types/index.js';
1
+ import type { SpreadsheetImporter } from '../../types/index.js';
2
2
  type __VLS_Props = {
3
- rows: readonly SpreadsheetRecord[];
3
+ importer?: SpreadsheetImporter;
4
+ label?: string;
4
5
  };
5
6
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
6
7
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,34 @@
1
+ <script setup>
2
+ import UButton from "@nuxt/ui/components/Button.vue";
3
+ import { computed } from "vue";
4
+ import { useUiToolsLocale } from "#ui-tools/i18n";
5
+ import { useSpreadsheetImporter } from "../../composables/use-spreadsheet-import-context";
6
+ import { downloadSpreadsheetBlob } from "../../utils";
7
+ const props = defineProps({
8
+ importer: { type: Object, required: false },
9
+ label: { type: String, required: false }
10
+ });
11
+ const importer = useSpreadsheetImporter(() => props.importer);
12
+ const { t } = useUiToolsLocale();
13
+ const count = computed(() => importer.value.rows.invalid.length);
14
+ function download() {
15
+ const base = importer.value.file.name.replace(/\.[^.]+$/u, "") || importer.value.schema.key;
16
+ downloadSpreadsheetBlob(
17
+ importer.value.rows.exportInvalid(),
18
+ `${base}-${t("spreadsheet.review.export").toLowerCase().replaceAll(" ", "-")}.xlsx`
19
+ );
20
+ }
21
+ </script>
22
+
23
+ <template>
24
+ <UButton
25
+ v-if="count"
26
+ data-spreadsheet-export
27
+ color="neutral"
28
+ variant="outline"
29
+ size="sm"
30
+ icon="i-lucide-download"
31
+ :label="label ?? `${t('spreadsheet.review.export')} \xB7 ${count}`"
32
+ @click="download"
33
+ />
34
+ </template>
@@ -1,8 +1,7 @@
1
+ import type { SpreadsheetImporter } from '../../types/index.js';
1
2
  type __VLS_Props = {
2
- fileName?: string;
3
- totalSheets: number;
4
- rowCount: number;
5
- hasWorkbook: boolean;
3
+ importer?: SpreadsheetImporter;
4
+ label?: string;
6
5
  };
7
6
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
8
7
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,17 @@
1
+ import type { SpreadsheetImporter } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ actions?: (props: typeof __VLS_1) => any;
8
+ };
9
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,49 @@
1
+ <script setup>
2
+ import UButton from "@nuxt/ui/components/Button.vue";
3
+ import { computed } from "vue";
4
+ import { useUiToolsLocale } from "#ui-tools/i18n";
5
+ import { useSpreadsheetImporter } from "../../composables/use-spreadsheet-import-context";
6
+ const props = defineProps({
7
+ importer: { type: Object, required: false }
8
+ });
9
+ const importer = useSpreadsheetImporter(() => props.importer);
10
+ const { t } = useUiToolsLocale();
11
+ const extension = computed(
12
+ () => importer.value.file.name.split(".").pop()?.toUpperCase().slice(0, 4) || "XLSX"
13
+ );
14
+ const summary = computed(
15
+ () => t("spreadsheet.file.summary", {
16
+ rows: importer.value.rows.all.length.toLocaleString(),
17
+ sheets: importer.value.file.sheets.length
18
+ })
19
+ );
20
+ </script>
21
+
22
+ <template>
23
+ <div
24
+ v-if="importer.file.loaded"
25
+ data-spreadsheet-file-card
26
+ class="flex items-center gap-3.5 rounded-xl border border-default bg-default px-4 py-3"
27
+ >
28
+ <span
29
+ class="grid h-11 w-9.5 shrink-0 place-items-center rounded-md bg-success/10 text-[10px] font-bold tracking-wide text-success"
30
+ >
31
+ {{ extension }}
32
+ </span>
33
+ <div class="grid min-w-0">
34
+ <span class="truncate font-medium text-highlighted">{{ importer.file.name }}</span>
35
+ <span class="text-sm text-muted tabular-nums">{{ summary }}</span>
36
+ </div>
37
+ <div class="ms-auto flex shrink-0 items-center gap-2">
38
+ <slot name="actions" />
39
+ <UButton
40
+ color="neutral"
41
+ variant="outline"
42
+ size="sm"
43
+ icon="i-lucide-refresh-cw"
44
+ :label="t('spreadsheet.file.replace')"
45
+ @click="importer.file.clear()"
46
+ />
47
+ </div>
48
+ </div>
49
+ </template>
@@ -0,0 +1,17 @@
1
+ import type { SpreadsheetImporter } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ actions?: (props: typeof __VLS_1) => any;
8
+ };
9
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
10
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,18 @@
1
+ import type { SpreadsheetImporter } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ };
5
+ type __VLS_Slots = {
6
+ done?: (props: {
7
+ imported: number;
8
+ }) => unknown;
9
+ };
10
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,101 @@
1
+ <script setup>
2
+ import UButton from "@nuxt/ui/components/Button.vue";
3
+ import UIcon from "@nuxt/ui/components/Icon.vue";
4
+ import UProgress from "@nuxt/ui/components/Progress.vue";
5
+ import { computed } from "vue";
6
+ import { useUiToolsLocale } from "#ui-tools/i18n";
7
+ import {
8
+ useSpreadsheetImporter,
9
+ useSpreadsheetStepsContext
10
+ } from "../../composables/use-spreadsheet-import-context";
11
+ const props = defineProps({
12
+ importer: { type: Object, required: false }
13
+ });
14
+ defineSlots();
15
+ const importer = useSpreadsheetImporter(() => props.importer);
16
+ const steps = useSpreadsheetStepsContext();
17
+ const { t } = useUiToolsLocale();
18
+ const submit = computed(() => importer.value.submit);
19
+ const percent = computed(
20
+ () => submit.value.progress.total ? Math.round(submit.value.progress.done / submit.value.progress.total * 100) : 0
21
+ );
22
+ function retry() {
23
+ void importer.value.submit.retryRejected();
24
+ }
25
+ function tryAgain() {
26
+ void importer.value.submit.run();
27
+ }
28
+ function review() {
29
+ importer.value.review.setTab("invalid");
30
+ steps.value?.goTo("review");
31
+ }
32
+ </script>
33
+
34
+ <template>
35
+ <div
36
+ v-if="submit.status !== 'idle'"
37
+ data-spreadsheet-progress
38
+ class="grid justify-items-center gap-3.5 py-6 text-center"
39
+ >
40
+ <template v-if="submit.status === 'running'">
41
+ <div class="text-4xl font-light tracking-tight text-highlighted tabular-nums">
42
+ {{
43
+ t("spreadsheet.progress.count", {
44
+ done: submit.progress.done,
45
+ total: submit.progress.total
46
+ })
47
+ }}
48
+ </div>
49
+ <UProgress :model-value="percent" class="w-full max-w-md" />
50
+ <p class="text-muted">{{ t("spreadsheet.progress.running") }}</p>
51
+ </template>
52
+ <template v-else-if="submit.status === 'done'">
53
+ <span class="grid size-12 place-items-center rounded-full bg-success/10 text-success">
54
+ <UIcon name="i-lucide-check" class="size-6" />
55
+ </span>
56
+ <h3 class="text-xl font-semibold text-highlighted">
57
+ {{ t("spreadsheet.progress.done", { count: submit.imported.toLocaleString() }) }}
58
+ </h3>
59
+ <p v-if="!submit.rejected.length" class="text-muted">
60
+ {{ t("spreadsheet.progress.doneHint") }}
61
+ </p>
62
+ <div
63
+ v-else
64
+ class="grid max-w-md gap-2 rounded-xl border border-error/30 bg-error/4 px-4 py-3 text-start"
65
+ >
66
+ <b class="text-sm font-semibold text-error">{{
67
+ t("spreadsheet.progress.rejected", { count: submit.rejected.length })
68
+ }}</b>
69
+ <p class="text-sm text-muted">{{ t("spreadsheet.progress.rejectedHint") }}</p>
70
+ <div class="flex flex-wrap gap-2">
71
+ <UButton
72
+ size="sm"
73
+ color="neutral"
74
+ variant="outline"
75
+ :label="t('spreadsheet.progress.retry')"
76
+ @click="retry"
77
+ />
78
+ <UButton
79
+ v-if="steps"
80
+ size="sm"
81
+ color="neutral"
82
+ variant="ghost"
83
+ :label="t('spreadsheet.progress.review')"
84
+ @click="review"
85
+ />
86
+ </div>
87
+ </div>
88
+ <slot name="done" :imported="submit.imported" />
89
+ </template>
90
+ <template v-else>
91
+ <span class="grid size-12 place-items-center rounded-full bg-error/10 text-error">
92
+ <UIcon name="i-lucide-circle-x" class="size-6" />
93
+ </span>
94
+ <h3 class="text-lg font-semibold text-highlighted">{{ t("spreadsheet.progress.error") }}</h3>
95
+ <p v-if="submit.error instanceof Error" class="max-w-md text-sm text-muted">
96
+ {{ submit.error.message }}
97
+ </p>
98
+ <UButton :label="t('spreadsheet.progress.tryAgain')" @click="tryAgain" />
99
+ </template>
100
+ </div>
101
+ </template>
@@ -0,0 +1,18 @@
1
+ import type { SpreadsheetImporter } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ };
5
+ type __VLS_Slots = {
6
+ done?: (props: {
7
+ imported: number;
8
+ }) => unknown;
9
+ };
10
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,22 @@
1
+ import type { SpreadsheetImporter, SpreadsheetRowIssue } from '../../types/index.js';
2
+ type __VLS_Props = {
3
+ importer?: SpreadsheetImporter;
4
+ height?: string;
5
+ };
6
+ type __VLS_Slots = {
7
+ issue?: (props: {
8
+ issue: SpreadsheetRowIssue;
9
+ }) => unknown;
10
+ };
11
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
12
+ height: string;
13
+ importer: SpreadsheetImporter;
14
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
15
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
16
+ declare const _default: typeof __VLS_export;
17
+ export default _default;
18
+ type __VLS_WithSlots<T, S> = T & {
19
+ new (): {
20
+ $slots: S;
21
+ };
22
+ };
@@ -0,0 +1,276 @@
1
+ <script setup>
2
+ import UButton from "@nuxt/ui/components/Button.vue";
3
+ import UIcon from "@nuxt/ui/components/Icon.vue";
4
+ import { computed, shallowRef } from "vue";
5
+ import { useUiToolsLocale } from "#ui-tools/i18n";
6
+ import {
7
+ useSpreadsheetImporter,
8
+ useSpreadsheetStepsContext
9
+ } from "../../composables/use-spreadsheet-import-context";
10
+ import SpreadsheetImportCellEditor from "../internal/spreadsheet-import-cell-editor.vue";
11
+ import SpreadsheetImportStatusBadge from "../internal/spreadsheet-import-status-badge.vue";
12
+ const LEVELS = ["info", "warning", "error"];
13
+ const props = defineProps({
14
+ importer: { type: Object, required: false, default: void 0 },
15
+ height: { type: String, required: false, default: "30rem" }
16
+ });
17
+ defineSlots();
18
+ const importer = useSpreadsheetImporter(() => props.importer);
19
+ const steps = useSpreadsheetStepsContext();
20
+ const { t } = useUiToolsLocale();
21
+ const editing = shallowRef(null);
22
+ const row = computed(() => importer.value.review.inspected);
23
+ const fields = computed(() => importer.value.columns.fields);
24
+ const labels = computed(() => new Map(fields.value.map((field) => [field.path, field.label])));
25
+ const issues = computed(
26
+ () => [...row.value?.issues ?? []].filter((issue) => issue.code !== "value.skipped").sort((left, right) => LEVELS.indexOf(right.level) - LEVELS.indexOf(left.level))
27
+ );
28
+ const counts = computed(
29
+ () => new Map(importer.value.review.issueTypes.map((type) => [type.id, type.rowCount]))
30
+ );
31
+ const position = computed(() => importer.value.review.position);
32
+ function choicesOf(path) {
33
+ const field = fields.value.find((entry) => entry.path === path);
34
+ return field?.kind === "select" && row.value ? importer.value.rows.cell(row.value.index, path).choices.map((option) => option.label) : void 0;
35
+ }
36
+ function commit(path, text) {
37
+ const current = row.value;
38
+ if (current && text !== importer.value.rows.cell(current.index, path).text)
39
+ importer.value.rows.edit(current.index, path, text);
40
+ editing.value = null;
41
+ }
42
+ function revert(path) {
43
+ if (row.value) importer.value.rows.revert(row.value.index, path);
44
+ }
45
+ function filterIssue(issue) {
46
+ importer.value.review.setIssue(`${issue.field}|${issue.code}`);
47
+ }
48
+ function toggleDiscard() {
49
+ const current = row.value;
50
+ if (!current) return;
51
+ if (current.discardReason === "manual") importer.value.rows.restore([current.index]);
52
+ else importer.value.rows.discard([current.index]);
53
+ }
54
+ function openValues() {
55
+ steps.value?.goTo("values");
56
+ }
57
+ </script>
58
+
59
+ <template>
60
+ <aside
61
+ v-if="row"
62
+ data-spreadsheet-inspector
63
+ class="flex min-w-0 flex-col bg-default"
64
+ :style="{ height }"
65
+ :aria-label="t('spreadsheet.inspector.title', { row: row.rowNumber })"
66
+ >
67
+ <div class="flex items-center gap-2.5 border-b border-default px-4 py-3">
68
+ <b class="text-[15px] font-semibold text-highlighted tabular-nums">{{
69
+ t("spreadsheet.inspector.title", { row: row.rowNumber })
70
+ }}</b>
71
+ <SpreadsheetImportStatusBadge :status="row.status" full />
72
+ <span
73
+ v-if="row.mode === 'update' && !row.discardReason"
74
+ class="inline-flex h-5 items-center gap-1 rounded-md bg-info/10 px-1.5 text-[11.5px] font-semibold text-info"
75
+ >
76
+ <UIcon name="i-lucide-refresh-cw" class="size-3" />{{ t("spreadsheet.table.modeUpdate") }}
77
+ </span>
78
+ <UButton
79
+ class="ms-auto"
80
+ size="sm"
81
+ color="neutral"
82
+ variant="ghost"
83
+ square
84
+ icon="i-lucide-x"
85
+ :aria-label="t('spreadsheet.inspector.close')"
86
+ @click="importer.review.inspect(null)"
87
+ />
88
+ </div>
89
+ <div
90
+ class="flex items-center justify-between gap-2 border-b border-default px-4 py-2 text-[12.5px] text-muted"
91
+ >
92
+ <UButton
93
+ size="xs"
94
+ color="neutral"
95
+ variant="outline"
96
+ square
97
+ icon="i-lucide-chevron-left"
98
+ :disabled="position.current <= 1"
99
+ :aria-label="t('spreadsheet.inspector.previous')"
100
+ @click="importer.review.previous()"
101
+ />
102
+ <span class="tabular-nums">
103
+ {{
104
+ position.current ? t("spreadsheet.inspector.position", {
105
+ current: position.current,
106
+ total: position.total
107
+ }) : t("spreadsheet.inspector.positionNone", { total: position.total })
108
+ }}
109
+ </span>
110
+ <UButton
111
+ size="xs"
112
+ color="neutral"
113
+ variant="outline"
114
+ square
115
+ icon="i-lucide-chevron-right"
116
+ :disabled="position.current >= position.total"
117
+ :aria-label="t('spreadsheet.inspector.next')"
118
+ @click="importer.review.next()"
119
+ />
120
+ </div>
121
+
122
+ <div class="grid flex-1 content-start gap-4 overflow-auto px-4 pt-3.5 pb-4">
123
+ <p
124
+ v-if="row.discardReason"
125
+ class="flex items-center gap-2 rounded-lg bg-elevated px-3 py-2 text-[13px] text-muted"
126
+ >
127
+ <UIcon name="i-lucide-ban" class="size-4 shrink-0" />{{
128
+ t(`spreadsheet.table.reasons.${row.discardReason}`)
129
+ }}
130
+ </p>
131
+ <section class="grid gap-2">
132
+ <h5 class="text-[11px] font-semibold tracking-[0.08em] text-dimmed uppercase">
133
+ {{ t("spreadsheet.inspector.issues") }}
134
+ </h5>
135
+ <template v-if="issues.length">
136
+ <div
137
+ v-for="(issue, index) in issues"
138
+ :key="`${issue.field}-${issue.code}-${index}`"
139
+ class="grid gap-1.5 rounded-lg border px-3 py-2.5"
140
+ :class="
141
+ issue.level === 'error' ? 'border-error/30 bg-error/4' : issue.level === 'warning' ? 'border-warning/30 bg-warning/4' : 'border-default'
142
+ "
143
+ >
144
+ <slot name="issue" :issue="issue">
145
+ <div class="flex items-start gap-2">
146
+ <UIcon
147
+ :name="issue.level === 'error' ? 'i-lucide-circle-x' : 'i-lucide-triangle-alert'"
148
+ class="mt-0.5 size-4 shrink-0"
149
+ :class="issue.level === 'error' ? 'text-error' : 'text-warning'"
150
+ />
151
+ <div class="grid min-w-0 gap-0.5">
152
+ <span v-if="issue.field" class="text-xs font-semibold text-toned">{{
153
+ labels.get(issue.field) ?? issue.field
154
+ }}</span>
155
+ <span class="text-[13px] text-highlighted">{{ issue.message }}</span>
156
+ </div>
157
+ </div>
158
+ <div class="flex flex-wrap gap-x-3 ps-6">
159
+ <UButton
160
+ v-if="steps && issue.code === 'value.unknown'"
161
+ variant="link"
162
+ size="xs"
163
+ class="px-0"
164
+ :label="t('spreadsheet.inspector.answerIt')"
165
+ @click="openValues"
166
+ />
167
+ <UButton
168
+ v-if="issue.field && (counts.get(`${issue.field}|${issue.code}`) ?? 0) > 1"
169
+ variant="link"
170
+ color="neutral"
171
+ size="xs"
172
+ class="px-0"
173
+ :label="
174
+ t('spreadsheet.inspector.allRows', {
175
+ count: counts.get(`${issue.field}|${issue.code}`) ?? 0
176
+ })
177
+ "
178
+ @click="filterIssue(issue)"
179
+ />
180
+ </div>
181
+ </slot>
182
+ </div>
183
+ </template>
184
+ <p v-else class="flex items-center gap-2 text-[13px] text-success">
185
+ <UIcon name="i-lucide-circle-check" class="size-4" />{{
186
+ t("spreadsheet.inspector.noIssue")
187
+ }}
188
+ </p>
189
+ </section>
190
+
191
+ <section class="grid gap-2">
192
+ <h5 class="text-[11px] font-semibold tracking-[0.08em] text-dimmed uppercase">
193
+ {{ t("spreadsheet.inspector.values") }}
194
+ </h5>
195
+ <dl class="divide-y divide-default overflow-hidden rounded-lg border border-default">
196
+ <div
197
+ v-for="field in fields"
198
+ :key="field.path"
199
+ class="grid gap-0.5 px-3 py-2"
200
+ :class="row.fieldIssues[field.path]?.level === 'error' ? 'bg-error/4' : ''"
201
+ >
202
+ <dt class="text-xs text-muted">{{ field.label }}</dt>
203
+ <dd class="min-w-0">
204
+ <div
205
+ v-if="editing === field.path"
206
+ class="h-8 overflow-hidden rounded-md ring-2 ring-primary ring-inset"
207
+ >
208
+ <SpreadsheetImportCellEditor
209
+ :text="importer.rows.cell(row.index, field.path).text"
210
+ :choices="choicesOf(field.path)"
211
+ @commit="(text) => commit(field.path, text)"
212
+ @cancel="editing = null"
213
+ />
214
+ </div>
215
+ <button
216
+ v-else
217
+ type="button"
218
+ class="w-full truncate rounded px-1 py-0.5 text-start text-[13px] text-highlighted hover:bg-elevated"
219
+ :class="{
220
+ 'italic text-dimmed': !importer.rows.cell(row.index, field.path).display
221
+ }"
222
+ :disabled="Boolean(row.discardReason)"
223
+ @click="editing = field.path"
224
+ >
225
+ {{
226
+ importer.rows.cell(row.index, field.path).display || t("spreadsheet.table.emptyCell")
227
+ }}
228
+ </button>
229
+ <p
230
+ v-if="importer.rows.cell(row.index, field.path).edited"
231
+ class="flex items-center gap-1 px-1 text-[11.5px] text-dimmed"
232
+ >
233
+ {{
234
+ t("spreadsheet.table.edited", {
235
+ value: importer.rows.cell(row.index, field.path).original || t("spreadsheet.table.emptyCell")
236
+ })
237
+ }}
238
+ <UButton
239
+ variant="link"
240
+ size="xs"
241
+ class="px-0"
242
+ :label="t('spreadsheet.inspector.revert')"
243
+ @click="revert(field.path)"
244
+ />
245
+ </p>
246
+ <p
247
+ v-else-if="importer.rows.cell(row.index, field.path).stored !== null"
248
+ class="px-1 text-[11.5px] text-info"
249
+ >
250
+ {{
251
+ t("spreadsheet.table.stored", {
252
+ value: importer.rows.cell(row.index, field.path).stored ?? ""
253
+ })
254
+ }}
255
+ </p>
256
+ </dd>
257
+ </div>
258
+ </dl>
259
+ </section>
260
+ </div>
261
+ <div class="border-t border-default px-4 py-2.5">
262
+ <UButton
263
+ v-if="!row.discardReason || row.discardReason === 'manual'"
264
+ size="sm"
265
+ color="neutral"
266
+ variant="outline"
267
+ block
268
+ :icon="row.discardReason ? 'i-lucide-rotate-ccw' : 'i-lucide-ban'"
269
+ :label="
270
+ row.discardReason ? t('spreadsheet.inspector.restore') : t('spreadsheet.inspector.discard')
271
+ "
272
+ @click="toggleDiscard"
273
+ />
274
+ </div>
275
+ </aside>
276
+ </template>