@spaceinvoices/react-ui 0.1.1

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 (352) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +340 -0
  3. package/cli/dist/index.js +922 -0
  4. package/package.json +87 -0
  5. package/registry.json +600 -0
  6. package/spaceinvoices.schema.json +47 -0
  7. package/src/app.tsx +25 -0
  8. package/src/common/autocomplete.tsx +135 -0
  9. package/src/components/activities/activity-timeline.tsx +160 -0
  10. package/src/components/activities/index.ts +1 -0
  11. package/src/components/activities/locales/de.ts +30 -0
  12. package/src/components/activities/locales/sl.ts +30 -0
  13. package/src/components/advance-invoices/advance-invoices.hooks.ts +75 -0
  14. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +702 -0
  15. package/src/components/advance-invoices/create/locales/de.ts +29 -0
  16. package/src/components/advance-invoices/create/locales/sl.ts +25 -0
  17. package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +74 -0
  18. package/src/components/advance-invoices/index.ts +5 -0
  19. package/src/components/advance-invoices/list/index.ts +3 -0
  20. package/src/components/advance-invoices/list/list-row-actions.tsx +119 -0
  21. package/src/components/advance-invoices/list/list-table.tsx +178 -0
  22. package/src/components/advance-invoices/list/locales/de.ts +32 -0
  23. package/src/components/advance-invoices/list/locales/sl.ts +32 -0
  24. package/src/components/advance-invoices/list/use-advance-invoice-download.ts +63 -0
  25. package/src/components/button-loader.tsx +11 -0
  26. package/src/components/combobox.tsx +96 -0
  27. package/src/components/company-registry/company-registry-autocomplete.tsx +151 -0
  28. package/src/components/company-registry/company-registry.hooks.ts +67 -0
  29. package/src/components/company-registry/index.ts +7 -0
  30. package/src/components/credit-notes/create/create-credit-note-form.tsx +332 -0
  31. package/src/components/credit-notes/create/index.ts +1 -0
  32. package/src/components/credit-notes/create/locales/de.ts +69 -0
  33. package/src/components/credit-notes/create/locales/sl.ts +67 -0
  34. package/src/components/credit-notes/credit-notes.hooks.ts +22 -0
  35. package/src/components/credit-notes/index.ts +10 -0
  36. package/src/components/credit-notes/list/index.ts +3 -0
  37. package/src/components/credit-notes/list/list-row-actions.tsx +116 -0
  38. package/src/components/credit-notes/list/list-table.tsx +183 -0
  39. package/src/components/credit-notes/list/locales/de.ts +33 -0
  40. package/src/components/credit-notes/list/locales/sl.ts +33 -0
  41. package/src/components/credit-notes/list/use-credit-note-download.ts +65 -0
  42. package/src/components/customers/create-customer-form/create-customer-form.tsx +134 -0
  43. package/src/components/customers/create-customer-form/locales/de.ts +20 -0
  44. package/src/components/customers/create-customer-form/locales/sl.ts +20 -0
  45. package/src/components/customers/customer-autocomplete.tsx +173 -0
  46. package/src/components/customers/customer-combobox.tsx +130 -0
  47. package/src/components/customers/customer-list-table/customer-list-row-actions.tsx +48 -0
  48. package/src/components/customers/customer-list-table/customer-list-table.tsx +124 -0
  49. package/src/components/customers/customer-list-table/index.ts +2 -0
  50. package/src/components/customers/customer-list-table/locales/de.ts +16 -0
  51. package/src/components/customers/customer-list-table/locales/sl.ts +16 -0
  52. package/src/components/customers/customers.hooks.test.ts +348 -0
  53. package/src/components/customers/customers.hooks.ts +57 -0
  54. package/src/components/customers/index.ts +5 -0
  55. package/src/components/dashboard/chart-empty-state.tsx +29 -0
  56. package/src/components/dashboard/collection-rate-card/collection-rate-card.tsx +80 -0
  57. package/src/components/dashboard/collection-rate-card/index.ts +4 -0
  58. package/src/components/dashboard/collection-rate-card/locales/sl.ts +3 -0
  59. package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +74 -0
  60. package/src/components/dashboard/index.ts +54 -0
  61. package/src/components/dashboard/invoice-status-chart/index.ts +4 -0
  62. package/src/components/dashboard/invoice-status-chart/invoice-status-chart.tsx +130 -0
  63. package/src/components/dashboard/invoice-status-chart/locales/sl.ts +9 -0
  64. package/src/components/dashboard/invoice-status-chart/use-invoice-status.ts +105 -0
  65. package/src/components/dashboard/loading-card.tsx +19 -0
  66. package/src/components/dashboard/payment-methods-chart/index.ts +4 -0
  67. package/src/components/dashboard/payment-methods-chart/locales/sl.ts +12 -0
  68. package/src/components/dashboard/payment-methods-chart/payment-methods-chart.tsx +152 -0
  69. package/src/components/dashboard/payment-methods-chart/use-payment-methods.ts +50 -0
  70. package/src/components/dashboard/payment-trend-chart/index.ts +4 -0
  71. package/src/components/dashboard/payment-trend-chart/locales/sl.ts +5 -0
  72. package/src/components/dashboard/payment-trend-chart/payment-trend-chart.tsx +137 -0
  73. package/src/components/dashboard/payment-trend-chart/use-payment-trend.ts +92 -0
  74. package/src/components/dashboard/revenue-card.tsx +49 -0
  75. package/src/components/dashboard/revenue-trend-chart/index.ts +4 -0
  76. package/src/components/dashboard/revenue-trend-chart/locales/sl.ts +5 -0
  77. package/src/components/dashboard/revenue-trend-chart/revenue-trend-chart.tsx +137 -0
  78. package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +93 -0
  79. package/src/components/dashboard/shared/index.ts +5 -0
  80. package/src/components/dashboard/shared/use-revenue-data.ts +160 -0
  81. package/src/components/dashboard/shared/use-stats-counts.ts +89 -0
  82. package/src/components/dashboard/shared/use-stats-query.ts +38 -0
  83. package/src/components/dashboard/stat-card.tsx +41 -0
  84. package/src/components/dashboard/tax-collected-card/index.ts +2 -0
  85. package/src/components/dashboard/tax-collected-card/tax-collected-card.tsx +77 -0
  86. package/src/components/dashboard/tax-collected-card/use-tax-collected.ts +145 -0
  87. package/src/components/dashboard/top-customers-chart/index.ts +4 -0
  88. package/src/components/dashboard/top-customers-chart/locales/sl.ts +5 -0
  89. package/src/components/dashboard/top-customers-chart/top-customers-chart.tsx +130 -0
  90. package/src/components/dashboard/top-customers-chart/use-top-customers.ts +72 -0
  91. package/src/components/documents/create/document-add-item-form.tsx +379 -0
  92. package/src/components/documents/create/document-add-item-tax-rate-field.tsx +120 -0
  93. package/src/components/documents/create/document-details-section.tsx +597 -0
  94. package/src/components/documents/create/document-items-section.tsx +133 -0
  95. package/src/components/documents/create/document-recipient-section.tsx +101 -0
  96. package/src/components/documents/create/form-types.ts +36 -0
  97. package/src/components/documents/create/index.ts +9 -0
  98. package/src/components/documents/create/live-preview.tsx +235 -0
  99. package/src/components/documents/create/mark-as-paid-section.tsx +82 -0
  100. package/src/components/documents/create/prepare-document-submission.test.ts +132 -0
  101. package/src/components/documents/create/prepare-document-submission.ts +187 -0
  102. package/src/components/documents/create/prepare-preview-data.test.ts +155 -0
  103. package/src/components/documents/create/prepare-preview-data.ts +16 -0
  104. package/src/components/documents/create/smart-code-insert-button.tsx +139 -0
  105. package/src/components/documents/create/use-document-customer-form.ts +161 -0
  106. package/src/components/documents/document-preview.tsx +13 -0
  107. package/src/components/documents/documents.hooks.ts +146 -0
  108. package/src/components/documents/index.ts +23 -0
  109. package/src/components/documents/shared/document-preview-display.tsx +172 -0
  110. package/src/components/documents/shared/index.ts +3 -0
  111. package/src/components/documents/shared/scaled-document-preview.tsx +70 -0
  112. package/src/components/documents/shared/use-a4-scaling.ts +62 -0
  113. package/src/components/documents/types.ts +61 -0
  114. package/src/components/documents/view/document-actions-bar.tsx +328 -0
  115. package/src/components/documents/view/document-details-card.tsx +179 -0
  116. package/src/components/documents/view/document-payments-list.tsx +256 -0
  117. package/src/components/documents/view/index.ts +4 -0
  118. package/src/components/documents/view/locales/de.ts +85 -0
  119. package/src/components/documents/view/locales/sl.ts +84 -0
  120. package/src/components/documents/view/use-document-download.ts +125 -0
  121. package/src/components/entities/create-entity-form.tsx +105 -0
  122. package/src/components/entities/entities.hooks.ts +50 -0
  123. package/src/components/entities/entity-settings-form/email-template-variables-info.tsx +103 -0
  124. package/src/components/entities/entity-settings-form/entity-settings-form.tsx +1326 -0
  125. package/src/components/entities/entity-settings-form/image-upload-with-crop.tsx +222 -0
  126. package/src/components/entities/entity-settings-form/index.ts +2 -0
  127. package/src/components/entities/entity-settings-form/input-with-preview.tsx +190 -0
  128. package/src/components/entities/entity-settings-form/locales/de.ts +192 -0
  129. package/src/components/entities/entity-settings-form/locales/sl.ts +188 -0
  130. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +410 -0
  131. package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +320 -0
  132. package/src/components/entities/furs-settings-form/index.ts +3 -0
  133. package/src/components/entities/furs-settings-form/locales/de.ts +233 -0
  134. package/src/components/entities/furs-settings-form/locales/en.ts +194 -0
  135. package/src/components/entities/furs-settings-form/locales/sl.ts +196 -0
  136. package/src/components/entities/furs-settings-form/sections/certificate-settings-section.tsx +242 -0
  137. package/src/components/entities/furs-settings-form/sections/enable-fiscalization-section.tsx +139 -0
  138. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +252 -0
  139. package/src/components/entities/furs-settings-form/sections/premises-management-section.tsx +370 -0
  140. package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +420 -0
  141. package/src/components/entities/keys.ts +2 -0
  142. package/src/components/entities/settings/branding-settings-form.tsx +274 -0
  143. package/src/components/entities/settings/company-settings-form.tsx +256 -0
  144. package/src/components/entities/settings/defaults-settings-form.tsx +501 -0
  145. package/src/components/entities/settings/email-settings-form.tsx +288 -0
  146. package/src/components/entities/settings/eslog-settings-form.tsx +113 -0
  147. package/src/components/entities/settings/index.ts +8 -0
  148. package/src/components/entities/settings/number-format-settings-form.tsx +244 -0
  149. package/src/components/entities/settings/pdf-template-selector/demo-invoice-data.ts +164 -0
  150. package/src/components/entities/settings/pdf-template-selector/index.ts +2 -0
  151. package/src/components/entities/settings/pdf-template-selector/locales/de.ts +18 -0
  152. package/src/components/entities/settings/pdf-template-selector/locales/sl.ts +18 -0
  153. package/src/components/entities/settings/pdf-template-selector/pdf-template-cards.tsx +49 -0
  154. package/src/components/entities/settings/settings-footer.tsx +16 -0
  155. package/src/components/entities/settings/tax-rules-settings-form.tsx +346 -0
  156. package/src/components/estimates/create/create-estimate-form.tsx +384 -0
  157. package/src/components/estimates/create/locales/de.ts +64 -0
  158. package/src/components/estimates/create/locales/sl.ts +63 -0
  159. package/src/components/estimates/create/prepare-estimate-submission.ts +39 -0
  160. package/src/components/estimates/create/use-estimate-customer-form.ts +5 -0
  161. package/src/components/estimates/estimates.hooks.ts +15 -0
  162. package/src/components/estimates/index.ts +6 -0
  163. package/src/components/estimates/list/index.ts +3 -0
  164. package/src/components/estimates/list/list-row-actions.tsx +103 -0
  165. package/src/components/estimates/list/list-table.tsx +171 -0
  166. package/src/components/estimates/list/locales/de.ts +26 -0
  167. package/src/components/estimates/list/locales/sl.ts +26 -0
  168. package/src/components/estimates/list/use-estimate-download.ts +63 -0
  169. package/src/components/export/document-export-form.tsx +288 -0
  170. package/src/components/export/index.ts +2 -0
  171. package/src/components/form/form-input.tsx +89 -0
  172. package/src/components/form/index.ts +1 -0
  173. package/src/components/invoices/create/create-invoice-form.tsx +852 -0
  174. package/src/components/invoices/create/eslog-validation.test.ts +242 -0
  175. package/src/components/invoices/create/eslog-validation.ts +208 -0
  176. package/src/components/invoices/create/locales/de.ts +118 -0
  177. package/src/components/invoices/create/locales/sl.ts +114 -0
  178. package/src/components/invoices/create/prepare-invoice-submission.test.ts +777 -0
  179. package/src/components/invoices/create/prepare-invoice-submission.ts +79 -0
  180. package/src/components/invoices/create/use-invoice-customer-form.ts +5 -0
  181. package/src/components/invoices/index.ts +9 -0
  182. package/src/components/invoices/invoices-furs.hooks.ts +28 -0
  183. package/src/components/invoices/invoices.hooks.ts +110 -0
  184. package/src/components/invoices/list/index.ts +3 -0
  185. package/src/components/invoices/list/list-row-actions.tsx +132 -0
  186. package/src/components/invoices/list/list-table.tsx +165 -0
  187. package/src/components/invoices/list/locales/de.ts +33 -0
  188. package/src/components/invoices/list/locales/sl.ts +33 -0
  189. package/src/components/invoices/list/use-invoice-download.ts +62 -0
  190. package/src/components/invoices/send-email-dialog/index.ts +1 -0
  191. package/src/components/invoices/send-email-dialog/locales/de.ts +18 -0
  192. package/src/components/invoices/send-email-dialog/locales/sl.ts +17 -0
  193. package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +289 -0
  194. package/src/components/invoices/send-email-dialog.tsx +2 -0
  195. package/src/components/invoices/shared/index.ts +2 -0
  196. package/src/components/invoices/shared/scaled-document-preview.tsx +32 -0
  197. package/src/components/invoices/shared/use-a4-scaling.tsx +39 -0
  198. package/src/components/invoices/view/eslog-info-display.tsx +160 -0
  199. package/src/components/invoices/view/furs-info-display.tsx +213 -0
  200. package/src/components/items/create-item-form/create-item-form.tsx +155 -0
  201. package/src/components/items/create-item-form/locales/de.ts +14 -0
  202. package/src/components/items/create-item-form/locales/en.ts +9 -0
  203. package/src/components/items/create-item-form/locales/sl.ts +14 -0
  204. package/src/components/items/item-combobox.tsx +147 -0
  205. package/src/components/items/item-list-table/item-list-header.tsx +33 -0
  206. package/src/components/items/item-list-table/item-list-row-actions.tsx +48 -0
  207. package/src/components/items/item-list-table/item-list-row.tsx +32 -0
  208. package/src/components/items/item-list-table/item-list-table.tsx +76 -0
  209. package/src/components/items/item-list-table/locales/de.ts +10 -0
  210. package/src/components/items/item-list-table/locales/en.ts +10 -0
  211. package/src/components/items/item-list-table/locales/sl.ts +10 -0
  212. package/src/components/items/items.hooks.ts +63 -0
  213. package/src/components/loading-spinner.tsx +24 -0
  214. package/src/components/payments/create-payment-form/create-payment-form.tsx +222 -0
  215. package/src/components/payments/create-payment-form/locales/de.ts +20 -0
  216. package/src/components/payments/create-payment-form/locales/sl.ts +20 -0
  217. package/src/components/payments/edit-payment-form/edit-payment-form.tsx +230 -0
  218. package/src/components/payments/edit-payment-form/index.ts +1 -0
  219. package/src/components/payments/edit-payment-form/locales/de.ts +20 -0
  220. package/src/components/payments/edit-payment-form/locales/sl.ts +20 -0
  221. package/src/components/payments/index.ts +4 -0
  222. package/src/components/payments/list/index.ts +2 -0
  223. package/src/components/payments/list/list-row-actions.tsx +98 -0
  224. package/src/components/payments/list/list-table.tsx +186 -0
  225. package/src/components/payments/list/locales/de.ts +19 -0
  226. package/src/components/payments/list/locales/sl.ts +19 -0
  227. package/src/components/payments/payments.hooks.ts +15 -0
  228. package/src/components/request-logs/index.ts +3 -0
  229. package/src/components/request-logs/request-log-detail.tsx +242 -0
  230. package/src/components/request-logs/request-log-list-table.tsx +266 -0
  231. package/src/components/request-logs/request-logs-page.tsx +10 -0
  232. package/src/components/table/README.md +410 -0
  233. package/src/components/table/data-table.tsx +251 -0
  234. package/src/components/table/date-cell.tsx +35 -0
  235. package/src/components/table/filter-bar.tsx +114 -0
  236. package/src/components/table/filter-panel.tsx +407 -0
  237. package/src/components/table/hooks/use-table-fetch.ts +17 -0
  238. package/src/components/table/hooks/use-table-query.ts +36 -0
  239. package/src/components/table/hooks/use-table-state.ts +293 -0
  240. package/src/components/table/index.ts +35 -0
  241. package/src/components/table/search-input.tsx +85 -0
  242. package/src/components/table/sortable-header.tsx +56 -0
  243. package/src/components/table/table-empty-state.tsx +40 -0
  244. package/src/components/table/table-no-results.tsx +41 -0
  245. package/src/components/table/table-pagination.tsx +42 -0
  246. package/src/components/table/table-skeleton.tsx +54 -0
  247. package/src/components/table/types.ts +136 -0
  248. package/src/components/tax-reports/index.ts +1 -0
  249. package/src/components/tax-reports/kir-export-form.tsx +172 -0
  250. package/src/components/taxes/create-tax-form/create-tax-form.tsx +112 -0
  251. package/src/components/taxes/create-tax-form/locales/de.ts +8 -0
  252. package/src/components/taxes/create-tax-form/locales/en.ts +7 -0
  253. package/src/components/taxes/create-tax-form/locales/sl.ts +8 -0
  254. package/src/components/taxes/tax-list-table/locales/de.ts +11 -0
  255. package/src/components/taxes/tax-list-table/locales/en.ts +10 -0
  256. package/src/components/taxes/tax-list-table/locales/sl.ts +11 -0
  257. package/src/components/taxes/tax-list-table/tax-list-header.tsx +29 -0
  258. package/src/components/taxes/tax-list-table/tax-list-row-actions.tsx +43 -0
  259. package/src/components/taxes/tax-list-table/tax-list-row.tsx +46 -0
  260. package/src/components/taxes/tax-list-table/tax-list-table.tsx +59 -0
  261. package/src/components/taxes/taxes.hooks.ts +35 -0
  262. package/src/components/ui/alert-dialog.tsx +61 -0
  263. package/src/components/ui/alert.tsx +72 -0
  264. package/src/components/ui/badge.tsx +48 -0
  265. package/src/components/ui/breadcrumb.tsx +132 -0
  266. package/src/components/ui/button.tsx +61 -0
  267. package/src/components/ui/calendar.tsx +213 -0
  268. package/src/components/ui/card.tsx +94 -0
  269. package/src/components/ui/chart.tsx +380 -0
  270. package/src/components/ui/checkbox.tsx +27 -0
  271. package/src/components/ui/collapsible.tsx +56 -0
  272. package/src/components/ui/command.tsx +187 -0
  273. package/src/components/ui/dialog.tsx +187 -0
  274. package/src/components/ui/drawer.tsx +123 -0
  275. package/src/components/ui/dropdown-menu.tsx +291 -0
  276. package/src/components/ui/form.tsx +166 -0
  277. package/src/components/ui/input-group.tsx +149 -0
  278. package/src/components/ui/input.tsx +20 -0
  279. package/src/components/ui/label.tsx +18 -0
  280. package/src/components/ui/loading-spinner.tsx +16 -0
  281. package/src/components/ui/popover.tsx +108 -0
  282. package/src/components/ui/radio-group.tsx +37 -0
  283. package/src/components/ui/select.tsx +200 -0
  284. package/src/components/ui/separator.tsx +23 -0
  285. package/src/components/ui/sheet.tsx +145 -0
  286. package/src/components/ui/sidebar.tsx +771 -0
  287. package/src/components/ui/skeleton.tsx +13 -0
  288. package/src/components/ui/sonner.tsx +60 -0
  289. package/src/components/ui/spinner.tsx +10 -0
  290. package/src/components/ui/sticky-form-footer.tsx +55 -0
  291. package/src/components/ui/switch.tsx +30 -0
  292. package/src/components/ui/table.tsx +101 -0
  293. package/src/components/ui/tabs.tsx +80 -0
  294. package/src/components/ui/textarea.tsx +18 -0
  295. package/src/components/ui/tooltip.tsx +89 -0
  296. package/src/components/wl-subscription/index.ts +2 -0
  297. package/src/components/wl-subscription/locked-feature.tsx +173 -0
  298. package/src/components/wl-subscription/upgrade-modal.tsx +209 -0
  299. package/src/frontend.tsx +28 -0
  300. package/src/generate-schemas.ts +265 -0
  301. package/src/generated/schemas/advanceinvoice.ts +177 -0
  302. package/src/generated/schemas/creditnote.ts +187 -0
  303. package/src/generated/schemas/customer.ts +29 -0
  304. package/src/generated/schemas/entity.ts +252 -0
  305. package/src/generated/schemas/estimate.ts +159 -0
  306. package/src/generated/schemas/furssettings.ts +25 -0
  307. package/src/generated/schemas/index.ts +24 -0
  308. package/src/generated/schemas/invoice.ts +167 -0
  309. package/src/generated/schemas/item.ts +38 -0
  310. package/src/generated/schemas/payment.ts +44 -0
  311. package/src/generated/schemas/previewadvanceinvoice_body.ts +354 -0
  312. package/src/generated/schemas/previewestimate_body.ts +309 -0
  313. package/src/generated/schemas/registerfursmovablepremise_body.ts +22 -0
  314. package/src/generated/schemas/registerfursrealestatepremise_body.ts +32 -0
  315. package/src/generated/schemas/renderdocument_body.ts +594 -0
  316. package/src/generated/schemas/sendemail_body.ts +26 -0
  317. package/src/generated/schemas/startpdfexport_body.ts +20 -0
  318. package/src/generated/schemas/tax.ts +48 -0
  319. package/src/generated/schemas/uploadfile_body.ts +23 -0
  320. package/src/generated/schemas/uploadfurscertificate_body.ts +20 -0
  321. package/src/generated/schemas/userfurssettings.ts +19 -0
  322. package/src/hooks/create-resource-hooks.test.ts +483 -0
  323. package/src/hooks/create-resource-hooks.ts +300 -0
  324. package/src/hooks/use-debounce.ts +12 -0
  325. package/src/hooks/use-duplicate-document.ts +185 -0
  326. package/src/hooks/use-media-query.tsx +19 -0
  327. package/src/hooks/use-mobile.ts +39 -0
  328. package/src/hooks/use-next-document-number.ts +57 -0
  329. package/src/hooks/use-resource-mutation.ts +118 -0
  330. package/src/hooks/use-vies-check.ts +130 -0
  331. package/src/index.css +11 -0
  332. package/src/index.html +13 -0
  333. package/src/index.tsx +12 -0
  334. package/src/lib/auth.ts +4 -0
  335. package/src/lib/browser-cookies.ts +70 -0
  336. package/src/lib/constants.ts +287 -0
  337. package/src/lib/cookies.ts +36 -0
  338. package/src/lib/schemas/advance-invoice.ts +43 -0
  339. package/src/lib/schemas/credit-note.ts +32 -0
  340. package/src/lib/schemas/estimate.ts +31 -0
  341. package/src/lib/schemas/index.ts +18 -0
  342. package/src/lib/schemas/invoice.ts +43 -0
  343. package/src/lib/schemas/shared.ts +79 -0
  344. package/src/lib/translation.ts +38 -0
  345. package/src/lib/utils.ts +6 -0
  346. package/src/providers/entities-context.tsx +41 -0
  347. package/src/providers/entities-provider.tsx +201 -0
  348. package/src/providers/form-footer-context.tsx +72 -0
  349. package/src/providers/sdk-provider.tsx +164 -0
  350. package/src/providers/white-label-provider.tsx +91 -0
  351. package/src/providers/wl-subscription-provider.tsx +277 -0
  352. package/src/utils/string-helpers.ts +111 -0
package/registry.json ADDED
@@ -0,0 +1,600 @@
1
+ {
2
+ "$schema": "./registry.schema.json",
3
+ "name": "@space-invoices/ui",
4
+ "description": "Copy-paste UI components for Space Invoices applications",
5
+ "baseUrl": "src",
6
+ "categories": {
7
+ "ui": {
8
+ "name": "UI Primitives",
9
+ "description": "Low-level UI components (Button, Input, Form, etc.)"
10
+ },
11
+ "form": {
12
+ "name": "Form Components",
13
+ "description": "Form utilities and wrappers"
14
+ },
15
+ "table": {
16
+ "name": "Table Components",
17
+ "description": "Data table and related utilities"
18
+ },
19
+ "feature": {
20
+ "name": "Feature Components",
21
+ "description": "Business logic components (invoices, customers, etc.)"
22
+ }
23
+ },
24
+ "utils": {
25
+ "translation": {
26
+ "name": "Translation",
27
+ "files": ["lib/translation.ts"],
28
+ "description": "i18n helper for component-level translations",
29
+ "npmDependencies": []
30
+ },
31
+ "hooks": {
32
+ "name": "Resource Hooks",
33
+ "files": ["hooks/create-resource-hooks.ts", "hooks/use-resource-mutation.ts"],
34
+ "dependencies": ["providers/sdk-provider"],
35
+ "description": "Factory for creating CRUD hooks with optimistic updates",
36
+ "npmDependencies": ["@tanstack/react-query"]
37
+ },
38
+ "string-helpers": {
39
+ "name": "String Helpers",
40
+ "files": ["utils/string-helpers.ts"],
41
+ "description": "String utility functions",
42
+ "npmDependencies": []
43
+ }
44
+ },
45
+ "providers": {
46
+ "sdk-provider": {
47
+ "name": "SDK Provider",
48
+ "files": ["providers/sdk-provider.tsx", "lib/auth.ts", "lib/browser-cookies.ts"],
49
+ "description": "Initializes and provides SDK context",
50
+ "npmDependencies": ["@spaceinvoices/js-sdk", "react-cookie"]
51
+ },
52
+ "entities-provider": {
53
+ "name": "Entities Provider",
54
+ "files": ["providers/entities-provider.tsx", "providers/entities-context.tsx"],
55
+ "dependencies": ["sdk-provider"],
56
+ "description": "Multi-tenant entity management",
57
+ "npmDependencies": ["@tanstack/react-query"]
58
+ }
59
+ },
60
+ "components": {
61
+ "ui/button": {
62
+ "name": "Button",
63
+ "category": "ui",
64
+ "files": ["components/ui/button.tsx"],
65
+ "dependencies": [],
66
+ "npmDependencies": ["@base-ui/react", "class-variance-authority", "clsx", "tailwind-merge"]
67
+ },
68
+ "ui/input": {
69
+ "name": "Input",
70
+ "category": "ui",
71
+ "files": ["components/ui/input.tsx"],
72
+ "dependencies": [],
73
+ "npmDependencies": ["@base-ui/react", "clsx", "tailwind-merge"]
74
+ },
75
+ "ui/form": {
76
+ "name": "Form",
77
+ "category": "ui",
78
+ "files": ["components/ui/form.tsx"],
79
+ "dependencies": ["ui/label"],
80
+ "npmDependencies": ["@radix-ui/react-label", "@radix-ui/react-slot", "react-hook-form", "clsx", "tailwind-merge"]
81
+ },
82
+ "ui/label": {
83
+ "name": "Label",
84
+ "category": "ui",
85
+ "files": ["components/ui/label.tsx"],
86
+ "dependencies": [],
87
+ "npmDependencies": ["clsx", "tailwind-merge"]
88
+ },
89
+ "ui/select": {
90
+ "name": "Select",
91
+ "category": "ui",
92
+ "files": ["components/ui/select.tsx"],
93
+ "dependencies": [],
94
+ "npmDependencies": ["@base-ui/react", "lucide-react", "clsx", "tailwind-merge"]
95
+ },
96
+ "ui/dialog": {
97
+ "name": "Dialog",
98
+ "category": "ui",
99
+ "files": ["components/ui/dialog.tsx"],
100
+ "dependencies": ["ui/button"],
101
+ "npmDependencies": ["@base-ui/react", "lucide-react", "clsx", "tailwind-merge"]
102
+ },
103
+ "ui/table": {
104
+ "name": "Table",
105
+ "category": "ui",
106
+ "files": ["components/ui/table.tsx"],
107
+ "dependencies": [],
108
+ "npmDependencies": ["clsx", "tailwind-merge"]
109
+ },
110
+ "ui/card": {
111
+ "name": "Card",
112
+ "category": "ui",
113
+ "files": ["components/ui/card.tsx"],
114
+ "dependencies": [],
115
+ "npmDependencies": ["clsx", "tailwind-merge"]
116
+ },
117
+ "ui/skeleton": {
118
+ "name": "Skeleton",
119
+ "category": "ui",
120
+ "files": ["components/ui/skeleton.tsx"],
121
+ "dependencies": [],
122
+ "npmDependencies": ["clsx", "tailwind-merge"]
123
+ },
124
+ "ui/badge": {
125
+ "name": "Badge",
126
+ "category": "ui",
127
+ "files": ["components/ui/badge.tsx"],
128
+ "dependencies": [],
129
+ "npmDependencies": ["class-variance-authority", "clsx", "tailwind-merge"]
130
+ },
131
+ "ui/dropdown-menu": {
132
+ "name": "Dropdown Menu",
133
+ "category": "ui",
134
+ "files": ["components/ui/dropdown-menu.tsx"],
135
+ "dependencies": [],
136
+ "npmDependencies": ["@base-ui/react", "lucide-react", "clsx", "tailwind-merge"]
137
+ },
138
+ "ui/popover": {
139
+ "name": "Popover",
140
+ "category": "ui",
141
+ "files": ["components/ui/popover.tsx"],
142
+ "dependencies": [],
143
+ "npmDependencies": ["@base-ui/react", "clsx", "tailwind-merge"]
144
+ },
145
+ "ui/command": {
146
+ "name": "Command",
147
+ "category": "ui",
148
+ "files": ["components/ui/command.tsx"],
149
+ "dependencies": ["ui/dialog", "ui/input-group"],
150
+ "npmDependencies": ["cmdk", "lucide-react", "clsx", "tailwind-merge"]
151
+ },
152
+ "ui/calendar": {
153
+ "name": "Calendar",
154
+ "category": "ui",
155
+ "files": ["components/ui/calendar.tsx"],
156
+ "dependencies": ["ui/button"],
157
+ "npmDependencies": ["react-day-picker", "lucide-react", "clsx", "tailwind-merge"]
158
+ },
159
+ "ui/textarea": {
160
+ "name": "Textarea",
161
+ "category": "ui",
162
+ "files": ["components/ui/textarea.tsx"],
163
+ "dependencies": [],
164
+ "npmDependencies": ["@base-ui/react", "clsx", "tailwind-merge"]
165
+ },
166
+ "ui/checkbox": {
167
+ "name": "Checkbox",
168
+ "category": "ui",
169
+ "files": ["components/ui/checkbox.tsx"],
170
+ "dependencies": [],
171
+ "npmDependencies": ["@base-ui/react", "lucide-react", "clsx", "tailwind-merge"]
172
+ },
173
+ "ui/switch": {
174
+ "name": "Switch",
175
+ "category": "ui",
176
+ "files": ["components/ui/switch.tsx"],
177
+ "dependencies": [],
178
+ "npmDependencies": ["@base-ui/react", "clsx", "tailwind-merge"]
179
+ },
180
+ "ui/tabs": {
181
+ "name": "Tabs",
182
+ "category": "ui",
183
+ "files": ["components/ui/tabs.tsx"],
184
+ "dependencies": [],
185
+ "npmDependencies": ["@base-ui/react", "class-variance-authority", "clsx", "tailwind-merge"]
186
+ },
187
+ "ui/tooltip": {
188
+ "name": "Tooltip",
189
+ "category": "ui",
190
+ "files": ["components/ui/tooltip.tsx"],
191
+ "dependencies": [],
192
+ "npmDependencies": ["@base-ui/react", "clsx", "tailwind-merge"]
193
+ },
194
+ "ui/alert": {
195
+ "name": "Alert",
196
+ "category": "ui",
197
+ "files": ["components/ui/alert.tsx"],
198
+ "dependencies": [],
199
+ "npmDependencies": ["class-variance-authority", "clsx", "tailwind-merge"]
200
+ },
201
+ "ui/radio-group": {
202
+ "name": "Radio Group",
203
+ "category": "ui",
204
+ "files": ["components/ui/radio-group.tsx"],
205
+ "dependencies": [],
206
+ "npmDependencies": ["@base-ui/react", "lucide-react", "clsx", "tailwind-merge"]
207
+ },
208
+ "ui/loading-spinner": {
209
+ "name": "Loading Spinner",
210
+ "category": "ui",
211
+ "files": ["components/ui/loading-spinner.tsx"],
212
+ "dependencies": [],
213
+ "npmDependencies": ["clsx", "tailwind-merge"]
214
+ },
215
+ "ui/input-group": {
216
+ "name": "Input Group",
217
+ "category": "ui",
218
+ "files": ["components/ui/input-group.tsx"],
219
+ "dependencies": ["ui/button", "ui/input", "ui/textarea"],
220
+ "npmDependencies": ["class-variance-authority", "clsx", "tailwind-merge"]
221
+ },
222
+ "ui/chart": {
223
+ "name": "Chart",
224
+ "category": "ui",
225
+ "files": ["components/ui/chart.tsx"],
226
+ "dependencies": [],
227
+ "npmDependencies": ["recharts", "clsx", "tailwind-merge"]
228
+ },
229
+ "form/form-input": {
230
+ "name": "Form Input",
231
+ "category": "form",
232
+ "files": ["components/form/form-input.tsx", "components/form/index.ts"],
233
+ "dependencies": ["ui/form", "ui/input"],
234
+ "npmDependencies": ["react-hook-form"]
235
+ },
236
+ "table/data-table": {
237
+ "name": "Data Table",
238
+ "category": "table",
239
+ "files": [
240
+ "components/table/data-table.tsx",
241
+ "components/table/search-input.tsx",
242
+ "components/table/table-skeleton.tsx",
243
+ "components/table/table-empty-state.tsx",
244
+ "components/table/table-no-results.tsx",
245
+ "components/table/table-pagination.tsx",
246
+ "components/table/sortable-header.tsx",
247
+ "components/table/date-cell.tsx",
248
+ "components/table/types.ts",
249
+ "components/table/hooks/use-table-fetch.ts",
250
+ "components/table/hooks/use-table-state.ts",
251
+ "components/table/index.ts"
252
+ ],
253
+ "dependencies": ["ui/table", "ui/skeleton", "ui/button", "ui/input"],
254
+ "utils": ["hooks"],
255
+ "npmDependencies": ["@tanstack/react-query", "lucide-react", "date-fns"]
256
+ },
257
+ "taxes/create-tax-form": {
258
+ "name": "Create Tax Form",
259
+ "category": "feature",
260
+ "files": [
261
+ "components/taxes/create-tax-form/create-tax-form.tsx",
262
+ "components/taxes/create-tax-form/locales/de.ts",
263
+ "components/taxes/create-tax-form/locales/sl.ts",
264
+ "components/taxes/create-tax-form/index.ts",
265
+ "components/taxes/taxes.hooks.ts"
266
+ ],
267
+ "dependencies": ["form/form-input", "ui/form"],
268
+ "providers": ["sdk-provider"],
269
+ "utils": ["translation", "hooks"],
270
+ "schemas": ["createTaxSchema"],
271
+ "npmDependencies": ["react-hook-form", "@hookform/resolvers", "zod", "@spaceinvoices/js-sdk"]
272
+ },
273
+ "taxes/tax-list-table": {
274
+ "name": "Tax List Table",
275
+ "category": "feature",
276
+ "files": [
277
+ "components/taxes/tax-list-table/tax-list-table.tsx",
278
+ "components/taxes/tax-list-table/tax-list-header.tsx",
279
+ "components/taxes/tax-list-table/tax-list-row.tsx",
280
+ "components/taxes/tax-list-table/tax-list-row-actions.tsx",
281
+ "components/taxes/tax-list-table/locales/de.ts",
282
+ "components/taxes/tax-list-table/locales/sl.ts",
283
+ "components/taxes/tax-list-table/index.ts",
284
+ "components/taxes/taxes.hooks.ts"
285
+ ],
286
+ "dependencies": ["table/data-table", "ui/dropdown-menu", "ui/button"],
287
+ "providers": ["sdk-provider"],
288
+ "utils": ["translation", "hooks"],
289
+ "npmDependencies": ["@tanstack/react-query", "lucide-react", "@spaceinvoices/js-sdk"]
290
+ },
291
+ "items/create-item-form": {
292
+ "name": "Create Item Form",
293
+ "category": "feature",
294
+ "files": [
295
+ "components/items/create-item-form/create-item-form.tsx",
296
+ "components/items/create-item-form/locales/de.ts",
297
+ "components/items/create-item-form/locales/sl.ts",
298
+ "components/items/create-item-form/index.ts",
299
+ "components/items/items.hooks.ts"
300
+ ],
301
+ "dependencies": ["form/form-input", "ui/form"],
302
+ "providers": ["sdk-provider"],
303
+ "utils": ["translation", "hooks"],
304
+ "schemas": ["createItemSchema"],
305
+ "npmDependencies": ["react-hook-form", "@hookform/resolvers", "zod", "@spaceinvoices/js-sdk"]
306
+ },
307
+ "items/item-list-table": {
308
+ "name": "Item List Table",
309
+ "category": "feature",
310
+ "files": [
311
+ "components/items/item-list-table/item-list-table.tsx",
312
+ "components/items/item-list-table/item-list-header.tsx",
313
+ "components/items/item-list-table/item-list-row.tsx",
314
+ "components/items/item-list-table/item-list-row-actions.tsx",
315
+ "components/items/item-list-table/locales/de.ts",
316
+ "components/items/item-list-table/locales/sl.ts",
317
+ "components/items/item-list-table/index.ts",
318
+ "components/items/items.hooks.ts"
319
+ ],
320
+ "dependencies": ["table/data-table", "ui/dropdown-menu", "ui/button"],
321
+ "providers": ["sdk-provider"],
322
+ "utils": ["translation", "hooks"],
323
+ "npmDependencies": ["@tanstack/react-query", "lucide-react", "@spaceinvoices/js-sdk"]
324
+ },
325
+ "payments/create-payment-form": {
326
+ "name": "Create Payment Form",
327
+ "category": "feature",
328
+ "files": [
329
+ "components/payments/create-payment-form/create-payment-form.tsx",
330
+ "components/payments/create-payment-form/locales/de.ts",
331
+ "components/payments/create-payment-form/locales/sl.ts",
332
+ "components/payments/create-payment-form/index.ts",
333
+ "components/payments/payments.hooks.ts"
334
+ ],
335
+ "dependencies": ["form/form-input", "ui/form", "ui/select"],
336
+ "providers": ["sdk-provider"],
337
+ "utils": ["translation", "hooks"],
338
+ "schemas": ["createPaymentSchema"],
339
+ "npmDependencies": ["react-hook-form", "@hookform/resolvers", "zod", "@spaceinvoices/js-sdk"]
340
+ },
341
+ "customers/create-customer-form": {
342
+ "name": "Create Customer Form",
343
+ "category": "feature",
344
+ "files": [
345
+ "components/customers/create-customer-form/create-customer-form.tsx",
346
+ "components/customers/create-customer-form/locales/de.ts",
347
+ "components/customers/create-customer-form/locales/sl.ts",
348
+ "components/customers/customers.hooks.ts"
349
+ ],
350
+ "dependencies": ["form/form-input", "ui/form"],
351
+ "providers": ["sdk-provider"],
352
+ "utils": ["translation", "hooks"],
353
+ "schemas": ["createCustomerSchema"],
354
+ "npmDependencies": ["react-hook-form", "@hookform/resolvers", "zod", "@spaceinvoices/js-sdk"]
355
+ },
356
+ "customers/customer-list-table": {
357
+ "name": "Customer List Table",
358
+ "category": "feature",
359
+ "files": [
360
+ "components/customers/customer-list-table/customer-list-table.tsx",
361
+ "components/customers/customer-list-table/customer-list-row-actions.tsx",
362
+ "components/customers/customer-list-table/locales/de.ts",
363
+ "components/customers/customer-list-table/locales/sl.ts",
364
+ "components/customers/customer-list-table/index.ts",
365
+ "components/customers/customers.hooks.ts"
366
+ ],
367
+ "dependencies": ["table/data-table", "ui/dropdown-menu", "ui/button"],
368
+ "providers": ["sdk-provider"],
369
+ "utils": ["translation", "hooks"],
370
+ "npmDependencies": ["@tanstack/react-query", "lucide-react", "@spaceinvoices/js-sdk"]
371
+ },
372
+ "customers/customer-combobox": {
373
+ "name": "Customer Combobox",
374
+ "category": "feature",
375
+ "files": ["components/customers/customer-combobox.tsx", "components/customers/customers.hooks.ts"],
376
+ "dependencies": ["ui/popover", "ui/command", "ui/button"],
377
+ "providers": ["sdk-provider"],
378
+ "utils": ["hooks"],
379
+ "npmDependencies": ["@tanstack/react-query", "lucide-react", "@spaceinvoices/js-sdk"]
380
+ },
381
+ "entities/create-entity-form": {
382
+ "name": "Create Entity Form",
383
+ "category": "feature",
384
+ "files": ["components/entities/create-entity-form.tsx", "components/entities/entities.hooks.ts"],
385
+ "dependencies": ["form/form-input", "ui/form", "ui/select"],
386
+ "providers": ["sdk-provider"],
387
+ "utils": ["translation", "hooks"],
388
+ "schemas": ["createEntitySchema"],
389
+ "npmDependencies": ["react-hook-form", "@hookform/resolvers", "zod", "@spaceinvoices/js-sdk"]
390
+ },
391
+ "invoices/create-invoice-form": {
392
+ "name": "Create Invoice Form",
393
+ "category": "feature",
394
+ "files": [
395
+ "components/invoices/create/create-invoice-form.tsx",
396
+ "components/invoices/invoices.hooks.ts",
397
+ "components/documents/create/document-details-section.tsx",
398
+ "components/documents/create/document-recipient-section.tsx",
399
+ "components/documents/create/document-items-section.tsx",
400
+ "components/documents/create/document-add-item-form.tsx",
401
+ "components/documents/create/document-add-item-tax-rate-field.tsx",
402
+ "components/documents/create/mark-as-paid-section.tsx",
403
+ "components/documents/create/live-preview.tsx"
404
+ ],
405
+ "dependencies": [
406
+ "form/form-input",
407
+ "ui/form",
408
+ "ui/card",
409
+ "ui/button",
410
+ "ui/calendar",
411
+ "ui/popover",
412
+ "customers/customer-combobox"
413
+ ],
414
+ "providers": ["sdk-provider", "entities-provider"],
415
+ "utils": ["translation", "hooks"],
416
+ "schemas": ["createInvoiceSchema"],
417
+ "npmDependencies": ["react-hook-form", "@hookform/resolvers", "zod", "@spaceinvoices/js-sdk", "date-fns", "lucide-react"]
418
+ },
419
+ "invoices/invoice-list-table": {
420
+ "name": "Invoice List Table",
421
+ "category": "feature",
422
+ "files": [
423
+ "components/invoices/list/list-table.tsx",
424
+ "components/invoices/list/list-header.tsx",
425
+ "components/invoices/list/list-row.tsx",
426
+ "components/invoices/list/list-row-actions.tsx",
427
+ "components/invoices/invoices.hooks.ts"
428
+ ],
429
+ "dependencies": ["table/data-table", "ui/dropdown-menu", "ui/button", "ui/badge"],
430
+ "providers": ["sdk-provider"],
431
+ "utils": ["translation", "hooks"],
432
+ "npmDependencies": ["@tanstack/react-query", "lucide-react", "@spaceinvoices/js-sdk", "date-fns"]
433
+ },
434
+ "estimates/create-estimate-form": {
435
+ "name": "Create Estimate Form",
436
+ "category": "feature",
437
+ "files": ["components/estimates/create/create-estimate-form.tsx", "components/estimates/estimates.hooks.ts"],
438
+ "dependencies": ["form/form-input", "ui/form", "ui/card", "customers/customer-combobox"],
439
+ "providers": ["sdk-provider", "entities-provider"],
440
+ "utils": ["translation", "hooks"],
441
+ "schemas": ["createEstimateSchema"],
442
+ "npmDependencies": ["react-hook-form", "@hookform/resolvers", "zod", "@spaceinvoices/js-sdk", "date-fns"]
443
+ },
444
+ "estimates/estimate-list-table": {
445
+ "name": "Estimate List Table",
446
+ "category": "feature",
447
+ "files": [
448
+ "components/estimates/list/list-table.tsx",
449
+ "components/estimates/list/list-header.tsx",
450
+ "components/estimates/list/list-row.tsx",
451
+ "components/estimates/list/list-row-actions.tsx",
452
+ "components/estimates/estimates.hooks.ts"
453
+ ],
454
+ "dependencies": ["table/data-table", "ui/dropdown-menu", "ui/button", "ui/badge"],
455
+ "providers": ["sdk-provider"],
456
+ "utils": ["translation", "hooks"],
457
+ "npmDependencies": ["@tanstack/react-query", "lucide-react", "@spaceinvoices/js-sdk", "date-fns"]
458
+ },
459
+ "credit-notes/create-credit-note-form": {
460
+ "name": "Create Credit Note Form",
461
+ "category": "feature",
462
+ "files": [
463
+ "components/credit-notes/create/create-credit-note-form.tsx",
464
+ "components/credit-notes/credit-notes.hooks.ts"
465
+ ],
466
+ "dependencies": ["form/form-input", "ui/form", "ui/card", "customers/customer-combobox"],
467
+ "providers": ["sdk-provider", "entities-provider"],
468
+ "utils": ["translation", "hooks"],
469
+ "schemas": ["createCreditNoteSchema"],
470
+ "npmDependencies": ["react-hook-form", "@hookform/resolvers", "zod", "@spaceinvoices/js-sdk", "date-fns"]
471
+ },
472
+ "credit-notes/credit-note-list-table": {
473
+ "name": "Credit Note List Table",
474
+ "category": "feature",
475
+ "files": [
476
+ "components/credit-notes/list/list-table.tsx",
477
+ "components/credit-notes/list/list-header.tsx",
478
+ "components/credit-notes/list/list-row.tsx",
479
+ "components/credit-notes/list/list-row-actions.tsx",
480
+ "components/credit-notes/credit-notes.hooks.ts"
481
+ ],
482
+ "dependencies": ["table/data-table", "ui/dropdown-menu", "ui/button", "ui/badge"],
483
+ "providers": ["sdk-provider"],
484
+ "utils": ["translation", "hooks"],
485
+ "npmDependencies": ["@tanstack/react-query", "lucide-react", "@spaceinvoices/js-sdk", "date-fns"]
486
+ },
487
+ "dashboard/chart-empty-state": {
488
+ "name": "Chart Empty State",
489
+ "category": "ui",
490
+ "files": ["components/dashboard/chart-empty-state.tsx"],
491
+ "dependencies": [],
492
+ "npmDependencies": ["clsx", "tailwind-merge"]
493
+ },
494
+ "dashboard/loading-card": {
495
+ "name": "Loading Card",
496
+ "category": "ui",
497
+ "files": ["components/dashboard/loading-card.tsx"],
498
+ "dependencies": ["ui/card", "ui/skeleton"],
499
+ "npmDependencies": []
500
+ },
501
+ "dashboard/stat-card": {
502
+ "name": "Stat Card",
503
+ "category": "ui",
504
+ "files": ["components/dashboard/stat-card.tsx"],
505
+ "dependencies": ["ui/card"],
506
+ "npmDependencies": []
507
+ },
508
+ "dashboard/revenue-card": {
509
+ "name": "Revenue Card",
510
+ "category": "ui",
511
+ "files": ["components/dashboard/revenue-card.tsx"],
512
+ "dependencies": ["ui/card"],
513
+ "npmDependencies": []
514
+ },
515
+ "dashboard/revenue-trend-chart": {
516
+ "name": "Revenue Trend Chart",
517
+ "category": "feature",
518
+ "files": [
519
+ "components/dashboard/revenue-trend-chart/revenue-trend-chart.tsx",
520
+ "components/dashboard/revenue-trend-chart/use-revenue-trend.ts",
521
+ "components/dashboard/revenue-trend-chart/locales/sl.ts",
522
+ "components/dashboard/revenue-trend-chart/index.ts"
523
+ ],
524
+ "dependencies": ["ui/card", "ui/chart", "dashboard/chart-empty-state", "dashboard/loading-card"],
525
+ "providers": ["sdk-provider"],
526
+ "utils": ["translation"],
527
+ "npmDependencies": ["recharts", "@tanstack/react-query", "date-fns", "@spaceinvoices/js-sdk"]
528
+ },
529
+ "dashboard/invoice-status-chart": {
530
+ "name": "Invoice Status Chart",
531
+ "category": "feature",
532
+ "files": [
533
+ "components/dashboard/invoice-status-chart/invoice-status-chart.tsx",
534
+ "components/dashboard/invoice-status-chart/use-invoice-status.ts",
535
+ "components/dashboard/invoice-status-chart/locales/sl.ts",
536
+ "components/dashboard/invoice-status-chart/index.ts"
537
+ ],
538
+ "dependencies": ["ui/card", "ui/chart", "dashboard/chart-empty-state", "dashboard/loading-card"],
539
+ "providers": ["sdk-provider"],
540
+ "utils": ["translation"],
541
+ "npmDependencies": ["recharts", "@tanstack/react-query", "@spaceinvoices/js-sdk"]
542
+ },
543
+ "dashboard/payment-trend-chart": {
544
+ "name": "Payment Trend Chart",
545
+ "category": "feature",
546
+ "files": [
547
+ "components/dashboard/payment-trend-chart/payment-trend-chart.tsx",
548
+ "components/dashboard/payment-trend-chart/use-payment-trend.ts",
549
+ "components/dashboard/payment-trend-chart/locales/sl.ts",
550
+ "components/dashboard/payment-trend-chart/index.ts"
551
+ ],
552
+ "dependencies": ["ui/card", "ui/chart", "dashboard/chart-empty-state", "dashboard/loading-card"],
553
+ "providers": ["sdk-provider"],
554
+ "utils": ["translation"],
555
+ "npmDependencies": ["recharts", "@tanstack/react-query", "date-fns", "@spaceinvoices/js-sdk"]
556
+ },
557
+ "dashboard/payment-methods-chart": {
558
+ "name": "Payment Methods Chart",
559
+ "category": "feature",
560
+ "files": [
561
+ "components/dashboard/payment-methods-chart/payment-methods-chart.tsx",
562
+ "components/dashboard/payment-methods-chart/use-payment-methods.ts",
563
+ "components/dashboard/payment-methods-chart/locales/sl.ts",
564
+ "components/dashboard/payment-methods-chart/index.ts"
565
+ ],
566
+ "dependencies": ["ui/card", "ui/chart", "dashboard/chart-empty-state", "dashboard/loading-card"],
567
+ "providers": ["sdk-provider"],
568
+ "utils": ["translation"],
569
+ "npmDependencies": ["recharts", "@tanstack/react-query", "@spaceinvoices/js-sdk"]
570
+ },
571
+ "dashboard/top-customers-chart": {
572
+ "name": "Top Customers Chart",
573
+ "category": "feature",
574
+ "files": [
575
+ "components/dashboard/top-customers-chart/top-customers-chart.tsx",
576
+ "components/dashboard/top-customers-chart/use-top-customers.ts",
577
+ "components/dashboard/top-customers-chart/locales/sl.ts",
578
+ "components/dashboard/top-customers-chart/index.ts"
579
+ ],
580
+ "dependencies": ["ui/card", "ui/chart", "dashboard/chart-empty-state", "dashboard/loading-card"],
581
+ "providers": ["sdk-provider"],
582
+ "utils": ["translation"],
583
+ "npmDependencies": ["recharts", "@tanstack/react-query", "@spaceinvoices/js-sdk"]
584
+ },
585
+ "dashboard/collection-rate-card": {
586
+ "name": "Collection Rate Card",
587
+ "category": "feature",
588
+ "files": [
589
+ "components/dashboard/collection-rate-card/collection-rate-card.tsx",
590
+ "components/dashboard/collection-rate-card/use-collection-rate.ts",
591
+ "components/dashboard/collection-rate-card/locales/sl.ts",
592
+ "components/dashboard/collection-rate-card/index.ts"
593
+ ],
594
+ "dependencies": ["ui/card", "dashboard/loading-card"],
595
+ "providers": ["sdk-provider"],
596
+ "utils": ["translation"],
597
+ "npmDependencies": ["@tanstack/react-query", "@spaceinvoices/js-sdk"]
598
+ }
599
+ }
600
+ }
@@ -0,0 +1,47 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Space Invoices React UI Configuration",
4
+ "description": "Configuration file for Space Invoices React UI CLI",
5
+ "type": "object",
6
+ "required": ["aliases"],
7
+ "properties": {
8
+ "$schema": {
9
+ "type": "string",
10
+ "description": "JSON schema reference"
11
+ },
12
+ "aliases": {
13
+ "type": "object",
14
+ "description": "Path aliases for component installation",
15
+ "required": ["components", "ui", "lib", "hooks", "providers"],
16
+ "properties": {
17
+ "components": {
18
+ "type": "string",
19
+ "description": "Path alias for feature components (e.g., @/components/space-invoices)",
20
+ "default": "@/components/space-invoices"
21
+ },
22
+ "ui": {
23
+ "type": "string",
24
+ "description": "Path alias for UI primitives (e.g., @/components/ui)",
25
+ "default": "@/components/ui"
26
+ },
27
+ "lib": {
28
+ "type": "string",
29
+ "description": "Path alias for utility functions (e.g., @/lib)",
30
+ "default": "@/lib"
31
+ },
32
+ "hooks": {
33
+ "type": "string",
34
+ "description": "Path alias for React hooks (e.g., @/hooks)",
35
+ "default": "@/hooks"
36
+ },
37
+ "providers": {
38
+ "type": "string",
39
+ "description": "Path alias for React providers (e.g., @/providers)",
40
+ "default": "@/providers"
41
+ }
42
+ },
43
+ "additionalProperties": false
44
+ }
45
+ },
46
+ "additionalProperties": false
47
+ }