@wgalleti/primevue-components 0.3.4

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 (85) hide show
  1. package/README.md +218 -0
  2. package/dist/components/crud/WCrudColumnRenderer.vue.d.ts +8 -0
  3. package/dist/components/crud/WCrudFormDialog.vue.d.ts +214 -0
  4. package/dist/components/crud/WCrudView.vue.d.ts +89 -0
  5. package/dist/components/form/WAutoCompleteFK.vue.d.ts +43 -0
  6. package/dist/components/form/WFormRenderer.vue.d.ts +41 -0
  7. package/dist/components/form/WMoneyInput.vue.d.ts +28 -0
  8. package/dist/components/form/WTransferList.vue.d.ts +25 -0
  9. package/dist/components/index.d.ts +18 -0
  10. package/dist/components/ui/WActionBar.vue.d.ts +27 -0
  11. package/dist/components/ui/WDetailHeader.vue.d.ts +29 -0
  12. package/dist/components/ui/WEmptyState.vue.d.ts +13 -0
  13. package/dist/components/ui/WFormSection.vue.d.ts +23 -0
  14. package/dist/components/ui/WInfoCard.vue.d.ts +11 -0
  15. package/dist/components/ui/WKpiCard.vue.d.ts +33 -0
  16. package/dist/components/ui/WKpiGrid.vue.d.ts +31 -0
  17. package/dist/components/ui/WPageHeader.vue.d.ts +27 -0
  18. package/dist/components/ui/WProgressFlow.vue.d.ts +33 -0
  19. package/dist/components/ui/WSectionHeader.vue.d.ts +25 -0
  20. package/dist/components/ui/WStatusTag.vue.d.ts +10 -0
  21. package/dist/composables/index.d.ts +6 -0
  22. package/dist/composables/useApi.d.ts +2 -0
  23. package/dist/composables/useApiError.d.ts +4 -0
  24. package/dist/composables/useAppConfirm.d.ts +4 -0
  25. package/dist/composables/useAppToast.d.ts +6 -0
  26. package/dist/composables/useCrudManager.d.ts +2 -0
  27. package/dist/composables/useFormatters.d.ts +19 -0
  28. package/dist/data-providers/axiosDataProvider.d.ts +3 -0
  29. package/dist/data-providers/index.d.ts +2 -0
  30. package/dist/data-providers/supabaseDataProvider.d.ts +54 -0
  31. package/dist/index.cjs +11 -0
  32. package/dist/index.cjs.map +1 -0
  33. package/dist/index.d.ts +11 -0
  34. package/dist/index.js +3287 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/plugin.d.ts +2 -0
  37. package/dist/primevue-components.css +1 -0
  38. package/dist/types/api.d.ts +60 -0
  39. package/dist/types/components/crud/WCrudColumnRenderer.vue.d.ts +8 -0
  40. package/dist/types/components/crud/WCrudFormDialog.vue.d.ts +49 -0
  41. package/dist/types/components/crud/WCrudView.vue.d.ts +103 -0
  42. package/dist/types/components/form/WAutoCompleteFK.vue.d.ts +43 -0
  43. package/dist/types/components/form/WFormRenderer.vue.d.ts +40 -0
  44. package/dist/types/components/form/WMoneyInput.vue.d.ts +28 -0
  45. package/dist/types/components/form/WTransferList.vue.d.ts +25 -0
  46. package/dist/types/components/index.d.ts +18 -0
  47. package/dist/types/components/ui/WActionBar.vue.d.ts +25 -0
  48. package/dist/types/components/ui/WDetailHeader.vue.d.ts +24 -0
  49. package/dist/types/components/ui/WEmptyState.vue.d.ts +13 -0
  50. package/dist/types/components/ui/WFormSection.vue.d.ts +19 -0
  51. package/dist/types/components/ui/WInfoCard.vue.d.ts +11 -0
  52. package/dist/types/components/ui/WKpiCard.vue.d.ts +32 -0
  53. package/dist/types/components/ui/WKpiGrid.vue.d.ts +26 -0
  54. package/dist/types/components/ui/WPageHeader.vue.d.ts +22 -0
  55. package/dist/types/components/ui/WProgressFlow.vue.d.ts +28 -0
  56. package/dist/types/components/ui/WSectionHeader.vue.d.ts +22 -0
  57. package/dist/types/components/ui/WStatusTag.vue.d.ts +10 -0
  58. package/dist/types/composables/index.d.ts +6 -0
  59. package/dist/types/composables/useApi.d.ts +2 -0
  60. package/dist/types/composables/useApiError.d.ts +4 -0
  61. package/dist/types/composables/useAppConfirm.d.ts +4 -0
  62. package/dist/types/composables/useAppToast.d.ts +6 -0
  63. package/dist/types/composables/useCrudManager.d.ts +2 -0
  64. package/dist/types/composables/useFormatters.d.ts +19 -0
  65. package/dist/types/crud.d.ts +184 -0
  66. package/dist/types/data-providers/axiosDataProvider.d.ts +3 -0
  67. package/dist/types/data-providers/index.d.ts +2 -0
  68. package/dist/types/data-providers/supabaseDataProvider.d.ts +54 -0
  69. package/dist/types/dataProvider.d.ts +28 -0
  70. package/dist/types/index.d.ts +12 -0
  71. package/dist/types/plugin.d.ts +2 -0
  72. package/dist/types/types/api.d.ts +60 -0
  73. package/dist/types/types/crud.d.ts +184 -0
  74. package/dist/types/types/dataProvider.d.ts +28 -0
  75. package/dist/types/types/index.d.ts +6 -0
  76. package/dist/types/types/plugin.d.ts +24 -0
  77. package/dist/types/utils/cep.d.ts +14 -0
  78. package/dist/types/utils/dates.d.ts +5 -0
  79. package/dist/types/utils/fieldMapper.d.ts +20 -0
  80. package/dist/types/utils/masks.d.ts +8 -0
  81. package/dist/utils/cep.d.ts +14 -0
  82. package/dist/utils/dates.d.ts +5 -0
  83. package/dist/utils/fieldMapper.d.ts +20 -0
  84. package/dist/utils/masks.d.ts +8 -0
  85. package/package.json +78 -0
@@ -0,0 +1,2 @@
1
+ import { Plugin } from 'vue';
2
+ export declare const WPrimeVuePlugin: Plugin;
@@ -0,0 +1 @@
1
+ .w-crud-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.w-crud-header-content{min-width:0}.w-crud-title{font-size:1.25rem;font-weight:600;letter-spacing:-.015em;color:var(--p-text-color);line-height:1.3}.w-crud-subtitle{margin-top:.125rem;font-size:.8125rem;color:var(--p-text-muted-color)}.w-crud-header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.w-crud-kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.75rem;margin-bottom:1.25rem}.w-crud-kpi{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;border-radius:.75rem;border:1px solid var(--p-content-border-color);background:var(--p-content-background)}.w-crud-kpi-icon{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:.75rem;background:color-mix(in srgb,var(--p-primary-color) 10%,transparent);color:var(--p-primary-color);flex-shrink:0;font-size:1.125rem}.w-crud-kpi-icon--primary{background:color-mix(in srgb,var(--p-primary-color) 10%,transparent);color:var(--p-primary-color)}.w-crud-kpi-icon--success{background:color-mix(in srgb,var(--p-green-500, #22c55e) 10%,transparent);color:var(--p-green-500, #22c55e)}.w-crud-kpi-icon--warning{background:color-mix(in srgb,var(--p-yellow-500, #eab308) 10%,transparent);color:var(--p-yellow-500, #eab308)}.w-crud-kpi-icon--danger{background:color-mix(in srgb,var(--p-red-500, #ef4444) 10%,transparent);color:var(--p-red-500, #ef4444)}.w-crud-kpi-icon--info{background:color-mix(in srgb,var(--p-blue-500, #3b82f6) 10%,transparent);color:var(--p-blue-500, #3b82f6)}.w-crud-kpi-content{min-width:0}.w-crud-kpi-label{font-size:.6875rem;font-weight:500;color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.05em;line-height:1;margin-bottom:.25rem}.w-crud-kpi-value{font-size:1.25rem;font-weight:700;color:var(--p-text-color);letter-spacing:-.02em;line-height:1}.w-crud-table{border-radius:.75rem;border:1px solid var(--p-content-border-color);background:var(--p-content-background);overflow:hidden}.w-crud-table .p-datatable{font-size:.8125rem}.w-crud-table .p-datatable-header{background:transparent;border-bottom:1px solid var(--p-content-border-color);padding:.75rem 1rem}.w-crud-table .p-datatable-thead>tr>th{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--p-text-muted-color);background:var(--p-content-background)}.w-crud-table .p-datatable-tbody>tr>td{padding-top:.625rem;padding-bottom:.625rem}.w-crud-table .p-datatable-paginator-bottom{border-top:1px solid var(--p-content-border-color)}.w-crud-paginator .p-paginator-content{justify-content:flex-end}.w-crud-paginator .p-paginator-current{font-size:.75rem;color:var(--p-text-muted-color);margin-right:auto!important}.w-crud-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;padding:.25rem 0}.w-crud-toolbar-start{display:flex;align-items:center;gap:.75rem}.w-crud-toolbar-end{display:flex;align-items:center;gap:.5rem}.w-crud-actions-header .p-datatable-column-header-content{justify-content:center}.w-crud-actions{display:flex;align-items:center;justify-content:center;gap:.125rem}.w-crud-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 1rem}.w-crud-empty-icon{display:flex;align-items:center;justify-content:center;width:4rem;height:4rem;border-radius:1rem;margin-bottom:1rem;background:var(--p-content-hover-background);color:var(--p-text-muted-color);font-size:1.5rem}.w-crud-empty-title{font-size:.875rem;font-weight:600;color:var(--p-text-color)}.w-crud-empty-text{font-size:.75rem;color:var(--p-text-muted-color);margin-top:.25rem}.p-datatable-header-cell.text-right .p-datatable-column-header-content{justify-content:flex-end}.p-datatable-header-cell.text-center .p-datatable-column-header-content{justify-content:center}.p-dialog.w-crud-form-dialog>.p-dialog-header{padding-bottom:.5rem}.p-dialog.w-crud-form-dialog>.p-dialog-content{padding-bottom:.75rem}.w-crud-form{display:flex;flex-direction:column;gap:1.5rem}.w-crud-form-group-header{margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid var(--p-surface-200)}.dark .w-crud-form-group-header{border-bottom-color:var(--p-surface-700)}.w-crud-form-group-title{font-size:.875rem;font-weight:600;color:var(--p-text-color);margin:0}.w-crud-form-group-desc{font-size:.75rem;color:var(--p-text-muted-color);margin:.25rem 0 0}.w-crud-form-cep-error{display:block;font-size:.75rem;color:var(--p-red-500);margin-top:.25rem}.w-crud-form-cep-spinner{margin-left:.375rem;font-size:.75rem;color:var(--p-text-muted-color)}.w-crud-form-fields{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem 1rem}.w-crud-form-col-full{grid-column:span 2}.w-crud-form-col-half{grid-column:span 1}.w-crud-form-field{display:flex;flex-direction:column}.w-crud-form-required{color:var(--p-red-400, #f87171);margin-left:.125rem}.w-crud-form-label{display:block;font-weight:500;margin-bottom:.375rem;color:var(--p-text-color);font-size:.75rem}.w-crud-form-color-row{display:flex;align-items:center;gap:.5rem}.w-crud-form-switch{grid-column:span 2;display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;border-radius:.5rem;background:var(--p-content-hover-background)}.w-crud-form-switch-label{font-size:.875rem;font-weight:500;color:var(--p-text-color);-webkit-user-select:none;user-select:none}.w-crud-form-error{display:block;font-size:.75rem;color:var(--p-red-400, #f87171);margin-top:.25rem}.w-crud-form-footer{display:flex;justify-content:space-between;gap:.5rem;padding-top:1rem;padding-bottom:.5rem;border-top:1px solid var(--p-content-border-color);margin-top:.25rem}.w-autocompletefk{position:relative;display:flex;align-items:stretch;width:100%}.w-autocompletefk .p-autocomplete{flex:1}.w-autocompletefk .p-autocomplete-input{padding-right:2.5rem}.w-autocompletefk-trigger{position:absolute;right:0;top:0;bottom:0;width:2.5rem;display:flex;align-items:center;justify-content:center;color:var(--p-text-muted-color);cursor:pointer;border:none;background:transparent;border-left:1px solid var(--p-content-border-color);border-radius:0 var(--p-border-radius) var(--p-border-radius) 0;transition:color .15s,background-color .15s;font-size:.875rem}.w-autocompletefk-trigger:hover{color:var(--p-text-color);background:var(--p-content-hover-background)}.w-autocompletefk-trigger:disabled{opacity:.4;cursor:default}.w-autocompletefk-trigger i{font-size:.875rem}.w-autocompletefk-toolbar{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.w-autocompletefk-toolbar-search{flex:1}.w-autocompletefk-toolbar-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.w-autocompletefk-empty{text-align:center;padding:1.5rem;color:var(--p-text-muted-color);font-size:.875rem}.w-autocompletefk-footer{display:flex;justify-content:flex-end;gap:.5rem}.w-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.w-page-header-content{min-width:0}.w-page-header-title{font-size:1.25rem;font-weight:600;letter-spacing:-.015em;color:var(--p-text-color);line-height:1.3}.w-page-header-subtitle{margin-top:.125rem;font-size:.8125rem;color:var(--p-text-muted-color)}.w-page-header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.w-detail-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.w-detail-header-left{display:flex;align-items:center;gap:.75rem;min-width:0}.w-detail-header-icon{font-size:1.25rem;color:var(--p-primary-color)}.w-detail-header-content{min-width:0}.w-detail-header-title{font-size:1.125rem;font-weight:600;color:var(--p-text-color);line-height:1.3}.w-detail-header-subtitle{font-size:.75rem;color:var(--p-text-muted-color);margin-top:.125rem}.w-detail-header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.w-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem;text-align:center}.w-empty-state-icon{display:flex;align-items:center;justify-content:center;width:4rem;height:4rem;border-radius:1rem;margin-bottom:1rem;background:var(--p-content-hover-background);color:var(--p-text-muted-color);font-size:1.5rem}.w-empty-state-title{font-size:.9375rem;font-weight:600;color:var(--p-text-color)}.w-empty-state-description{font-size:.8125rem;color:var(--p-text-muted-color);margin-top:.25rem;max-width:24rem}.w-info-card{padding:1.25rem;border-radius:.75rem;border:1px solid var(--p-content-border-color);background:var(--p-content-background);margin-bottom:1rem}.w-info-card-title{font-size:.9375rem;font-weight:600;color:var(--p-text-color);margin-bottom:.75rem}.w-info-card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem 1.5rem}.w-info-card-field{display:flex;flex-direction:column;gap:.125rem}.w-info-card-label{font-size:.6875rem;font-weight:500;color:var(--p-text-muted-color);text-transform:uppercase;letter-spacing:.05em}.w-info-card-value{font-size:.875rem;font-weight:500;color:var(--p-text-color)}.w-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.w-section-header--compact{margin-bottom:.75rem}.w-section-header__main{display:flex;align-items:flex-start;gap:.75rem;min-width:0}.w-section-header__icon{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;flex-shrink:0;border-radius:.75rem;background:color-mix(in srgb,var(--p-primary-color) 10%,transparent);color:var(--p-primary-color)}.w-section-header__content{min-width:0}.w-section-header__title-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.w-section-header__title{font-size:1rem;font-weight:600;color:var(--p-text-color);line-height:1.3}.w-section-header__subtitle{margin-top:.125rem;font-size:.8125rem;color:var(--p-text-muted-color)}.w-section-header__actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.w-form-section{border:1px solid var(--p-content-border-color);border-radius:1rem;background:var(--p-content-background);padding:1rem}.w-form-section--muted{background:color-mix(in srgb,var(--p-content-background) 88%,var(--p-primary-color) 2%)}.w-form-section--outlined{background:transparent}.w-form-section__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.w-form-section__content{min-width:0}.w-form-section__title{font-size:.9375rem;font-weight:600;color:var(--p-text-color)}.w-form-section__description{margin-top:.125rem;font-size:.8125rem;color:var(--p-text-muted-color)}.w-form-section__actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.w-form-section__body{display:flex;flex-direction:column;gap:1rem}.w-action-bar{display:flex;align-items:center;gap:.75rem}.w-action-bar--between{justify-content:space-between}.w-action-bar--start{justify-content:flex-start}.w-action-bar--end{justify-content:flex-end}.w-action-bar__primary,.w-action-bar__secondary,.w-action-bar__filters{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.w-action-bar__primary{min-width:0}.w-action-bar__secondary{justify-content:flex-end}.w-kpi-grid{display:grid;gap:.75rem}.w-kpi-grid--cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.w-kpi-grid--cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.w-kpi-grid--cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.w-kpi-grid--dense{gap:.5rem}.w-kpi-card{display:flex;flex-direction:column;gap:.875rem;min-height:100%;padding:1rem 1.125rem;border:1px solid var(--p-content-border-color);border-radius:1rem;background:var(--p-content-background)}.w-kpi-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.w-kpi-card__icon{display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:.875rem;background:color-mix(in srgb,var(--p-primary-color) 10%,transparent);color:var(--p-primary-color);font-size:1.125rem}.w-kpi-card__content{display:flex;flex-direction:column;gap:.25rem}.w-kpi-card__label{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--p-text-muted-color);font-weight:600}.w-kpi-card__value{font-size:1.5rem;font-weight:700;line-height:1.1;letter-spacing:-.02em;color:var(--p-text-color)}.w-kpi-card__hint{font-size:.8125rem;color:var(--p-text-muted-color)}.w-kpi-card__footer{margin-top:auto}.w-kpi-card__trend{display:flex;justify-content:flex-end}.w-kpi-card__trend-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--p-content-hover-background);color:var(--p-text-muted-color)}.w-kpi-card__trend-badge--up{background:color-mix(in srgb,var(--p-green-500, #22c55e) 10%,transparent);color:var(--p-green-500, #22c55e)}.w-kpi-card__trend-badge--down{background:color-mix(in srgb,var(--p-red-500, #ef4444) 10%,transparent);color:var(--p-red-500, #ef4444)}.w-kpi-card__loading{display:flex;align-items:center;gap:.875rem}.w-kpi-card__loading-content{display:flex;flex:1;flex-direction:column;gap:.5rem}.w-kpi-card--success .w-kpi-card__icon{background:color-mix(in srgb,var(--p-green-500, #22c55e) 10%,transparent);color:var(--p-green-500, #22c55e)}.w-kpi-card--warning .w-kpi-card__icon{background:color-mix(in srgb,var(--p-yellow-500, #eab308) 10%,transparent);color:var(--p-yellow-500, #eab308)}.w-kpi-card--danger .w-kpi-card__icon{background:color-mix(in srgb,var(--p-red-500, #ef4444) 10%,transparent);color:var(--p-red-500, #ef4444)}.w-kpi-card--info .w-kpi-card__icon{background:color-mix(in srgb,var(--p-blue-500, #3b82f6) 10%,transparent);color:var(--p-blue-500, #3b82f6)}.w-kpi-card--neutral .w-kpi-card__icon{background:var(--p-content-hover-background);color:var(--p-text-muted-color)}.w-progress-flow{display:flex;gap:.75rem}.w-progress-flow--horizontal{align-items:stretch;flex-wrap:wrap}.w-progress-flow--vertical{flex-direction:column}.w-progress-flow__step{display:flex;align-items:flex-start;gap:.75rem;min-width:0}.w-progress-flow--horizontal .w-progress-flow__step{flex:1 1 0;min-width:12rem;padding:.875rem 1rem;border:1px solid var(--p-content-border-color);border-radius:1rem;background:var(--p-content-background)}.w-progress-flow__marker{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;border-radius:999px;border:1px solid var(--p-content-border-color);color:var(--p-text-muted-color);background:transparent;font-size:.8125rem;font-weight:700}.w-progress-flow__content{min-width:0}.w-progress-flow__label{font-size:.875rem;font-weight:600;color:var(--p-text-color)}.w-progress-flow__description{margin-top:.125rem;font-size:.75rem;color:var(--p-text-muted-color)}.w-progress-flow__step--current .w-progress-flow__marker{border-color:var(--p-primary-color);background:color-mix(in srgb,var(--p-primary-color) 12%,transparent);color:var(--p-primary-color)}.w-progress-flow__step--done .w-progress-flow__marker{border-color:var(--p-green-500, #22c55e);background:color-mix(in srgb,var(--p-green-500, #22c55e) 12%,transparent);color:var(--p-green-500, #22c55e)}.w-crud-view-toggle{display:inline-flex;align-items:center;gap:.125rem}.w-crud-toolbar--standalone{border:1px solid var(--p-content-border-color);background:var(--p-content-background);border-radius:.75rem;padding:.625rem .75rem;margin-bottom:.75rem}.w-crud-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.75rem}.w-crud-card{display:flex;flex-direction:column;gap:.5rem;padding:1rem;border:1px solid var(--p-content-border-color);border-radius:.75rem;background:var(--p-content-background);cursor:default;transition:border-color .15s,box-shadow .15s}.w-crud-card:hover{border-color:color-mix(in srgb,var(--p-primary-color) 40%,var(--p-content-border-color))}.w-crud-card-body{display:flex;flex-direction:column;gap:.375rem;min-width:0}.w-crud-card-row{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;font-size:.8125rem;min-width:0}.w-crud-card-row--title{font-size:.9375rem;font-weight:600;color:var(--p-text-color);margin-bottom:.125rem}.w-crud-card-label{font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--p-text-muted-color);flex-shrink:0}.w-crud-card-value{min-width:0;text-align:right;color:var(--p-text-color)}.w-crud-card-row--title .w-crud-card-value{text-align:left}.w-crud-card-actions{display:flex;align-items:center;justify-content:flex-end;gap:.125rem;margin-top:.25rem;padding-top:.5rem;border-top:1px solid var(--p-content-border-color)}.w-crud-cards-loading{display:flex;align-items:center;justify-content:center;padding:3rem 1rem;color:var(--p-text-muted-color);font-size:1.5rem}.w-crud-cards-wrap .w-crud-paginator{margin-top:.75rem}.w-money-input__field{text-align:right}.w-transfer{display:grid;grid-template-columns:1fr auto 1fr;gap:.75rem;align-items:stretch}.w-transfer--disabled{opacity:.6;pointer-events:none}.w-transfer__pane{display:flex;flex-direction:column;gap:.5rem;border:1px solid var(--p-content-border-color);border-radius:.75rem;background:var(--p-content-background);padding:.625rem;min-width:0}.w-transfer__head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.w-transfer__title{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--p-text-muted-color)}.w-transfer__count{font-size:.6875rem;font-weight:600;color:var(--p-text-muted-color);background:var(--p-content-hover-background);border-radius:999px;padding:.0625rem .5rem}.w-transfer__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.125rem;max-height:14rem;overflow-y:auto}.w-transfer__item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.375rem .5rem;border-radius:.5rem;font-size:.8125rem;color:var(--p-text-color);cursor:pointer;transition:background-color .12s}.w-transfer__item:hover{background:var(--p-content-hover-background)}.w-transfer__item i{color:var(--p-text-muted-color);font-size:.75rem}.w-transfer__empty{padding:.75rem .5rem;text-align:center;font-size:.75rem;color:var(--p-text-muted-color)}.w-transfer__controls{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.375rem}@media(max-width:768px){.w-section-header,.w-form-section__header,.w-action-bar--stack{flex-direction:column;align-items:stretch}.w-action-bar__primary,.w-action-bar__secondary,.w-action-bar__filters{justify-content:flex-start}.w-kpi-grid--cols-2,.w-kpi-grid--cols-3,.w-kpi-grid--cols-4,.w-transfer{grid-template-columns:1fr}.w-transfer__controls{flex-direction:row}}
@@ -0,0 +1,60 @@
1
+ import { Ref } from 'vue';
2
+ /**
3
+ * Formato padrao de resposta paginada da API (DRF).
4
+ */
5
+ export interface PaginatedResponse<T> {
6
+ data: T[];
7
+ page: number;
8
+ page_size: number;
9
+ rows: number;
10
+ extras?: Record<string, unknown>;
11
+ }
12
+ /**
13
+ * Estado reativo de paginacao.
14
+ */
15
+ export interface PaginationState {
16
+ page: number;
17
+ pageSize: number;
18
+ rows: number;
19
+ totalPages: number;
20
+ }
21
+ /**
22
+ * Estado de ordenacao server-side.
23
+ */
24
+ export interface SortState {
25
+ field: string | null;
26
+ order: 1 | -1 | 0;
27
+ }
28
+ /**
29
+ * Opcoes do useApi composable.
30
+ */
31
+ export interface UseApiOptions {
32
+ endpoint: string;
33
+ pageSize?: number;
34
+ searchDebounce?: number;
35
+ immediate?: boolean;
36
+ }
37
+ /**
38
+ * Retorno do useApi composable.
39
+ */
40
+ export interface UseApiReturn<T> {
41
+ items: Ref<T[]>;
42
+ loading: Ref<boolean>;
43
+ search: Ref<string>;
44
+ pagination: PaginationState;
45
+ extras: Ref<Record<string, unknown>>;
46
+ sort: SortState;
47
+ fetchItems(params?: Record<string, unknown>): Promise<void>;
48
+ refresh(): Promise<void>;
49
+ setSearch(value: string): void;
50
+ setFilter(key: string, value: unknown): void;
51
+ clearFilters(): void;
52
+ onPage(event: {
53
+ page: number;
54
+ rows: number;
55
+ }): void;
56
+ onSort(event: {
57
+ sortField: string;
58
+ sortOrder: 1 | -1 | 0;
59
+ }): void;
60
+ }
@@ -0,0 +1,8 @@
1
+ import type { ColumnDef } from '@/types/crud';
2
+ type __VLS_Props = {
3
+ column: ColumnDef;
4
+ value: unknown;
5
+ rowData: Record<string, unknown>;
6
+ };
7
+ declare const _default: 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
+ export default _default;
@@ -0,0 +1,49 @@
1
+ import type { FieldDef } from '@/types/crud';
2
+ type __VLS_Props = {
3
+ visible: boolean;
4
+ title: string;
5
+ fields: FieldDef[];
6
+ formData: Record<string, unknown>;
7
+ isEditing: boolean;
8
+ saving: boolean;
9
+ disabled?: boolean;
10
+ width?: string;
11
+ };
12
+ declare var __VLS_20: `field-${string}`, __VLS_21: {
13
+ field: FieldDef;
14
+ formData: Record<string, unknown>;
15
+ isEditing: boolean;
16
+ setFormField: (f: string, v: unknown) => void;
17
+ }, __VLS_24: `image-${string}`, __VLS_25: {
18
+ field: FieldDef;
19
+ formData: Record<string, unknown>;
20
+ }, __VLS_27: {
21
+ saving: boolean;
22
+ disabled: boolean;
23
+ };
24
+ type __VLS_Slots = {} & {
25
+ [K in NonNullable<typeof __VLS_20>]?: (props: typeof __VLS_21) => any;
26
+ } & {
27
+ [K in NonNullable<typeof __VLS_24>]?: (props: typeof __VLS_25) => any;
28
+ } & {
29
+ footer?: (props: typeof __VLS_27) => any;
30
+ };
31
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
32
+ "update:visible": (value: boolean) => any;
33
+ "update:field": (field: string, value: unknown) => any;
34
+ save: () => any;
35
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
36
+ "onUpdate:visible"?: ((value: boolean) => any) | undefined;
37
+ "onUpdate:field"?: ((field: string, value: unknown) => any) | undefined;
38
+ onSave?: (() => any) | undefined;
39
+ }>, {
40
+ disabled: boolean;
41
+ width: string;
42
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
43
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
44
+ export default _default;
45
+ type __VLS_WithSlots<T, S> = T & {
46
+ new (): {
47
+ $slots: S;
48
+ };
49
+ };
@@ -0,0 +1,103 @@
1
+ import type { CrudManagerReturn, KpiItem } from '@/types/crud';
2
+ type __VLS_Props = {
3
+ crud: CrudManagerReturn<any>;
4
+ title: string;
5
+ subtitle?: string;
6
+ showSearch?: boolean;
7
+ showHeader?: boolean;
8
+ dialogWidth?: string;
9
+ autoInit?: boolean;
10
+ showKpi?: boolean;
11
+ kpiIcon?: string;
12
+ kpiLabel?: string;
13
+ extraKpis?: KpiItem[];
14
+ expandable?: boolean;
15
+ viewToggle?: boolean;
16
+ defaultView?: 'table' | 'cards';
17
+ cardFields?: number;
18
+ };
19
+ declare var __VLS_1: {}, __VLS_11: {}, __VLS_40: {}, __VLS_42: {}, __VLS_44: {}, __VLS_70: {}, __VLS_81: `column-${string}`, __VLS_82: {
20
+ data: any;
21
+ value: any;
22
+ }, __VLS_99: {
23
+ data: any;
24
+ crud: CrudManagerReturn<any>;
25
+ }, __VLS_101: {
26
+ data: any;
27
+ }, __VLS_119: {}, __VLS_121: {}, __VLS_123: {}, __VLS_149: {}, __VLS_152: `column-${string}`, __VLS_153: {
28
+ data: any;
29
+ value: any;
30
+ }, __VLS_166: {
31
+ data: any;
32
+ crud: CrudManagerReturn<any>;
33
+ }, __VLS_176: {
34
+ crud: CrudManagerReturn<any>;
35
+ dialogWidth: string;
36
+ }, __VLS_188: `field-${string}`, __VLS_189: {
37
+ field: import("@/types/crud").FieldDef;
38
+ formData: Record<string, unknown>;
39
+ isEditing: boolean;
40
+ setFormField: (f: string, v: unknown) => void;
41
+ };
42
+ type __VLS_Slots = {} & {
43
+ [K in NonNullable<typeof __VLS_81>]?: (props: typeof __VLS_82) => any;
44
+ } & {
45
+ [K in NonNullable<typeof __VLS_152>]?: (props: typeof __VLS_153) => any;
46
+ } & {
47
+ [K in NonNullable<typeof __VLS_188>]?: (props: typeof __VLS_189) => any;
48
+ } & {
49
+ 'header-actions'?: (props: typeof __VLS_1) => any;
50
+ } & {
51
+ 'before-table'?: (props: typeof __VLS_11) => any;
52
+ } & {
53
+ 'toolbar-start'?: (props: typeof __VLS_40) => any;
54
+ } & {
55
+ 'toolbar-filters'?: (props: typeof __VLS_42) => any;
56
+ } & {
57
+ 'toolbar-actions'?: (props: typeof __VLS_44) => any;
58
+ } & {
59
+ empty?: (props: typeof __VLS_70) => any;
60
+ } & {
61
+ 'row-actions'?: (props: typeof __VLS_99) => any;
62
+ } & {
63
+ expansion?: (props: typeof __VLS_101) => any;
64
+ } & {
65
+ 'toolbar-start'?: (props: typeof __VLS_119) => any;
66
+ } & {
67
+ 'toolbar-filters'?: (props: typeof __VLS_121) => any;
68
+ } & {
69
+ 'toolbar-actions'?: (props: typeof __VLS_123) => any;
70
+ } & {
71
+ empty?: (props: typeof __VLS_149) => any;
72
+ } & {
73
+ 'row-actions'?: (props: typeof __VLS_166) => any;
74
+ } & {
75
+ 'form-dialog'?: (props: typeof __VLS_176) => any;
76
+ };
77
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
78
+ "row-expand": (data: unknown) => any;
79
+ "row-collapse": (data: unknown) => any;
80
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
81
+ "onRow-expand"?: ((data: unknown) => any) | undefined;
82
+ "onRow-collapse"?: ((data: unknown) => any) | undefined;
83
+ }>, {
84
+ dialogWidth: string;
85
+ showHeader: boolean;
86
+ showSearch: boolean;
87
+ autoInit: boolean;
88
+ showKpi: boolean;
89
+ kpiIcon: string;
90
+ kpiLabel: string;
91
+ extraKpis: KpiItem[];
92
+ expandable: boolean;
93
+ viewToggle: boolean;
94
+ defaultView: "table" | "cards";
95
+ cardFields: number;
96
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
97
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
98
+ export default _default;
99
+ type __VLS_WithSlots<T, S> = T & {
100
+ new (): {
101
+ $slots: S;
102
+ };
103
+ };
@@ -0,0 +1,43 @@
1
+ import type { FieldDef, ColumnDef } from '@/types/crud';
2
+ interface ColumnMeta {
3
+ field: string;
4
+ header: string;
5
+ }
6
+ type __VLS_Props = {
7
+ modelValue: string | number | Record<string, unknown> | null;
8
+ endpoint: string;
9
+ endpointParams?: Record<string, string | number | boolean>;
10
+ optionLabel?: string;
11
+ optionValue?: string;
12
+ placeholder?: string;
13
+ disabled?: boolean;
14
+ showClear?: boolean;
15
+ forceSelection?: boolean;
16
+ columns?: ColumnMeta[];
17
+ minLength?: number;
18
+ dialogHeader?: string;
19
+ canCreate?: boolean;
20
+ canEdit?: boolean;
21
+ canDelete?: boolean;
22
+ crudFields?: FieldDef[];
23
+ crudColumns?: ColumnDef[];
24
+ dialogWidth?: string;
25
+ };
26
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
27
+ "update:modelValue": (value: Record<string, unknown> | null) => any;
28
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
29
+ "onUpdate:modelValue"?: ((value: Record<string, unknown> | null) => any) | undefined;
30
+ }>, {
31
+ placeholder: string;
32
+ optionLabel: string;
33
+ optionValue: string;
34
+ disabled: boolean;
35
+ showClear: boolean;
36
+ forceSelection: boolean;
37
+ minLength: number;
38
+ canCreate: boolean;
39
+ canEdit: boolean;
40
+ canDelete: boolean;
41
+ dialogWidth: string;
42
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
43
+ export default _default;
@@ -0,0 +1,40 @@
1
+ import type { FieldDef } from '@/types/crud';
2
+ type __VLS_Props = {
3
+ fields: FieldDef[];
4
+ formData: Record<string, unknown>;
5
+ isEditing: boolean;
6
+ disabled?: boolean;
7
+ };
8
+ declare function validateAll(): string[];
9
+ declare function clearErrors(): void;
10
+ declare var __VLS_2: `field-${string}`, __VLS_3: {
11
+ field: FieldDef;
12
+ formData: Record<string, unknown>;
13
+ isEditing: boolean;
14
+ setFormField: (f: string, v: unknown) => void;
15
+ }, __VLS_30: `image-${string}`, __VLS_31: {
16
+ field: FieldDef;
17
+ formData: Record<string, unknown>;
18
+ };
19
+ type __VLS_Slots = {} & {
20
+ [K in NonNullable<typeof __VLS_2>]?: (props: typeof __VLS_3) => any;
21
+ } & {
22
+ [K in NonNullable<typeof __VLS_30>]?: (props: typeof __VLS_31) => any;
23
+ };
24
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {
25
+ validateAll: typeof validateAll;
26
+ clearErrors: typeof clearErrors;
27
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
28
+ "update:field": (field: string, value: unknown) => any;
29
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
30
+ "onUpdate:field"?: ((field: string, value: unknown) => any) | undefined;
31
+ }>, {
32
+ disabled: boolean;
33
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
34
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
35
+ export default _default;
36
+ type __VLS_WithSlots<T, S> = T & {
37
+ new (): {
38
+ $slots: S;
39
+ };
40
+ };
@@ -0,0 +1,28 @@
1
+ type __VLS_Props = {
2
+ /** Numeric model — the real value sent to the API (e.g. 1234.56). */
3
+ modelValue: number | null;
4
+ /** Fixed decimal places (default: 2). */
5
+ decimals?: number;
6
+ /** Show a "R$" prefix. Ignored when `prefix` is set. */
7
+ currency?: boolean;
8
+ /** Custom leading addon (overrides `currency`). */
9
+ prefix?: string;
10
+ /** Trailing addon. */
11
+ suffix?: string;
12
+ /** Display locale for grouping/decimal separators (default: 'pt-BR'). */
13
+ locale?: string;
14
+ disabled?: boolean;
15
+ placeholder?: string;
16
+ invalid?: boolean;
17
+ };
18
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
19
+ "update:modelValue": (value: number | null) => any;
20
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
21
+ "onUpdate:modelValue"?: ((value: number | null) => any) | undefined;
22
+ }>, {
23
+ currency: boolean;
24
+ disabled: boolean;
25
+ decimals: number;
26
+ locale: string;
27
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
28
+ export default _default;
@@ -0,0 +1,25 @@
1
+ type Id = string | number;
2
+ type Item = Record<string, unknown>;
3
+ type __VLS_Props = {
4
+ /** Full pool of available records. */
5
+ source: Item[];
6
+ /** Currently selected ids (v-model:selected). */
7
+ selected: Id[];
8
+ /** Field used as the record id (default: 'id'). */
9
+ trackBy?: string;
10
+ /** Field used for the visible label (default: 'nome'). */
11
+ optionLabel?: string;
12
+ /** Fields to match when searching (default: [optionLabel]). */
13
+ searchFields?: string[];
14
+ disabled?: boolean;
15
+ };
16
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ "update:selected": (ids: Id[]) => any;
18
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
19
+ "onUpdate:selected"?: ((ids: Id[]) => any) | undefined;
20
+ }>, {
21
+ optionLabel: string;
22
+ selected: Id[];
23
+ trackBy: string;
24
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
25
+ export default _default;
@@ -0,0 +1,18 @@
1
+ export { default as WCrudView } from './crud/WCrudView.vue';
2
+ export { default as WCrudFormDialog } from './crud/WCrudFormDialog.vue';
3
+ export { default as WCrudColumnRenderer } from './crud/WCrudColumnRenderer.vue';
4
+ export { default as WAutoCompleteFK } from './form/WAutoCompleteFK.vue';
5
+ export { default as WFormRenderer } from './form/WFormRenderer.vue';
6
+ export { default as WMoneyInput } from './form/WMoneyInput.vue';
7
+ export { default as WTransferList } from './form/WTransferList.vue';
8
+ export { default as WStatusTag } from './ui/WStatusTag.vue';
9
+ export { default as WPageHeader } from './ui/WPageHeader.vue';
10
+ export { default as WEmptyState } from './ui/WEmptyState.vue';
11
+ export { default as WDetailHeader } from './ui/WDetailHeader.vue';
12
+ export { default as WInfoCard } from './ui/WInfoCard.vue';
13
+ export { default as WKpiCard } from './ui/WKpiCard.vue';
14
+ export { default as WKpiGrid } from './ui/WKpiGrid.vue';
15
+ export { default as WSectionHeader } from './ui/WSectionHeader.vue';
16
+ export { default as WFormSection } from './ui/WFormSection.vue';
17
+ export { default as WActionBar } from './ui/WActionBar.vue';
18
+ export { default as WProgressFlow } from './ui/WProgressFlow.vue';
@@ -0,0 +1,25 @@
1
+ type __VLS_Props = {
2
+ align?: 'between' | 'start' | 'end';
3
+ stackOnMobile?: boolean;
4
+ };
5
+ declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {};
6
+ type __VLS_Slots = {} & {
7
+ primary?: (props: typeof __VLS_1) => any;
8
+ } & {
9
+ default?: (props: typeof __VLS_3) => any;
10
+ } & {
11
+ filters?: (props: typeof __VLS_5) => any;
12
+ } & {
13
+ secondary?: (props: typeof __VLS_7) => any;
14
+ };
15
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
16
+ align: "between" | "start" | "end";
17
+ stackOnMobile: boolean;
18
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
19
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
20
+ export default _default;
21
+ type __VLS_WithSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };
@@ -0,0 +1,24 @@
1
+ type __VLS_Props = {
2
+ title: string;
3
+ subtitle?: string;
4
+ icon?: string;
5
+ backRoute?: string;
6
+ backTo?: string | Record<string, unknown>;
7
+ status?: string;
8
+ statusMap?: Record<string, {
9
+ label: string;
10
+ severity: string;
11
+ }>;
12
+ };
13
+ declare var __VLS_12: {};
14
+ type __VLS_Slots = {} & {
15
+ actions?: (props: typeof __VLS_12) => any;
16
+ };
17
+ declare const __VLS_component: 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>;
18
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
19
+ export default _default;
20
+ type __VLS_WithSlots<T, S> = T & {
21
+ new (): {
22
+ $slots: S;
23
+ };
24
+ };
@@ -0,0 +1,13 @@
1
+ type __VLS_Props = {
2
+ icon: string;
3
+ title: string;
4
+ description?: string;
5
+ actionLabel?: string;
6
+ actionIcon?: string;
7
+ };
8
+ declare const _default: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
9
+ action: () => any;
10
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ onAction?: (() => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
13
+ export default _default;
@@ -0,0 +1,19 @@
1
+ type __VLS_Props = {
2
+ title: string;
3
+ description?: string;
4
+ variant?: 'default' | 'muted' | 'outlined';
5
+ };
6
+ declare var __VLS_1: {}, __VLS_3: {};
7
+ type __VLS_Slots = {} & {
8
+ actions?: (props: typeof __VLS_1) => any;
9
+ } & {
10
+ default?: (props: typeof __VLS_3) => any;
11
+ };
12
+ declare const __VLS_component: 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>;
13
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
14
+ export default _default;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
@@ -0,0 +1,11 @@
1
+ export interface InfoField {
2
+ label: string;
3
+ value: string | number | null | undefined;
4
+ format?: 'currency' | 'date' | 'datetime' | 'number' | 'text';
5
+ }
6
+ type __VLS_Props = {
7
+ title?: string;
8
+ fields: InfoField[];
9
+ };
10
+ declare const _default: 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
+ export default _default;
@@ -0,0 +1,32 @@
1
+ type __VLS_Props = {
2
+ label: string;
3
+ value: string | number;
4
+ icon?: string;
5
+ hint?: string;
6
+ severity?: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';
7
+ trend?: {
8
+ value: string;
9
+ direction?: 'up' | 'down' | 'neutral';
10
+ };
11
+ loading?: boolean;
12
+ };
13
+ declare var __VLS_17: {}, __VLS_19: {}, __VLS_21: {}, __VLS_23: {}, __VLS_25: {};
14
+ type __VLS_Slots = {} & {
15
+ icon?: (props: typeof __VLS_17) => any;
16
+ } & {
17
+ trend?: (props: typeof __VLS_19) => any;
18
+ } & {
19
+ value?: (props: typeof __VLS_21) => any;
20
+ } & {
21
+ hint?: (props: typeof __VLS_23) => any;
22
+ } & {
23
+ footer?: (props: typeof __VLS_25) => any;
24
+ };
25
+ declare const __VLS_component: 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>;
26
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
27
+ export default _default;
28
+ type __VLS_WithSlots<T, S> = T & {
29
+ new (): {
30
+ $slots: S;
31
+ };
32
+ };
@@ -0,0 +1,26 @@
1
+ import type { KpiItem } from '@/types/crud';
2
+ type __VLS_Props = {
3
+ items?: KpiItem[];
4
+ columns?: 2 | 3 | 4;
5
+ dense?: boolean;
6
+ };
7
+ declare var __VLS_1: {
8
+ key: number;
9
+ item: KpiItem;
10
+ index: number;
11
+ };
12
+ type __VLS_Slots = {} & {
13
+ item?: (props: typeof __VLS_1) => any;
14
+ };
15
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
16
+ columns: 2 | 3 | 4;
17
+ items: KpiItem[];
18
+ dense: boolean;
19
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
21
+ export default _default;
22
+ type __VLS_WithSlots<T, S> = T & {
23
+ new (): {
24
+ $slots: S;
25
+ };
26
+ };
@@ -0,0 +1,22 @@
1
+ type __VLS_Props = {
2
+ title: string;
3
+ subtitle?: string;
4
+ actionLabel?: string;
5
+ actionIcon?: string;
6
+ };
7
+ declare var __VLS_1: {};
8
+ type __VLS_Slots = {} & {
9
+ actions?: (props: typeof __VLS_1) => any;
10
+ };
11
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
12
+ action: () => any;
13
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
14
+ onAction?: (() => any) | undefined;
15
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
17
+ export default _default;
18
+ type __VLS_WithSlots<T, S> = T & {
19
+ new (): {
20
+ $slots: S;
21
+ };
22
+ };
@@ -0,0 +1,28 @@
1
+ interface ProgressStep {
2
+ key: string;
3
+ label: string;
4
+ description?: string;
5
+ }
6
+ type __VLS_Props = {
7
+ steps: ProgressStep[];
8
+ currentStep: string;
9
+ orientation?: 'horizontal' | 'vertical';
10
+ };
11
+ declare var __VLS_1: {
12
+ step: ProgressStep;
13
+ index: number;
14
+ state: string;
15
+ };
16
+ type __VLS_Slots = {} & {
17
+ step?: (props: typeof __VLS_1) => any;
18
+ };
19
+ declare const __VLS_component: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
20
+ orientation: "horizontal" | "vertical";
21
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
22
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
23
+ export default _default;
24
+ type __VLS_WithSlots<T, S> = T & {
25
+ new (): {
26
+ $slots: S;
27
+ };
28
+ };