@wgalleti/primevue-components 0.6.0 → 0.7.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 (98) hide show
  1. package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-B70Uk-1x.cjs +12 -0
  2. package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-B70Uk-1x.cjs.map +1 -0
  3. package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-BVlG1in1.js +3024 -0
  4. package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-BVlG1in1.js.map +1 -0
  5. package/dist/components/crud/WCrudColumnRenderer.vue.d.ts +1 -1
  6. package/dist/components/crud/WCrudFormDialog.vue.d.ts +7 -11
  7. package/dist/components/crud/WCrudView.vue.d.ts +7 -2
  8. package/dist/components/form/WAutoCompleteFK.vue.d.ts +2 -1
  9. package/dist/components/form/WFormRenderer.vue.d.ts +1 -1
  10. package/dist/components/form/WImageCropper.vue.d.ts +57 -0
  11. package/dist/components/index.d.ts +1 -0
  12. package/dist/components/ui/WKpiGrid.vue.d.ts +1 -1
  13. package/dist/components.cjs +2 -0
  14. package/dist/components.cjs.map +1 -0
  15. package/dist/components.d.ts +2 -0
  16. package/dist/components.js +23 -0
  17. package/dist/components.js.map +1 -0
  18. package/dist/composables/useCrudManager.d.ts +1 -1
  19. package/dist/composables.cjs +2 -0
  20. package/dist/composables.cjs.map +1 -0
  21. package/dist/composables.d.ts +2 -0
  22. package/dist/composables.js +12 -0
  23. package/dist/composables.js.map +1 -0
  24. package/dist/index.cjs +1 -12
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.ts +2 -2
  27. package/dist/index.js +122 -3541
  28. package/dist/index.js.map +1 -1
  29. package/dist/plugin-BKa0eSEM.js +7 -0
  30. package/dist/plugin-BKa0eSEM.js.map +1 -0
  31. package/dist/plugin-D1YvyKXX.cjs +2 -0
  32. package/dist/plugin-D1YvyKXX.cjs.map +1 -0
  33. package/dist/primevue-components.css +1 -1
  34. package/dist/types/action.d.ts +19 -0
  35. package/dist/types/column.d.ts +30 -0
  36. package/dist/types/componentMeta.d.ts +33 -0
  37. package/dist/types/field.d.ts +95 -0
  38. package/dist/types/index.d.ts +11 -14
  39. package/dist/types/kpi.d.ts +13 -0
  40. package/dist/types/labels.d.ts +17 -0
  41. package/dist/types/manager.d.ts +93 -0
  42. package/dist/types/plugin.d.ts +24 -2
  43. package/dist/types.cjs +2 -0
  44. package/dist/types.cjs.map +1 -0
  45. package/dist/types.d.ts +2 -0
  46. package/dist/types.js +23 -0
  47. package/dist/types.js.map +1 -0
  48. package/dist/useApi-B692TOWz.js +383 -0
  49. package/dist/useApi-B692TOWz.js.map +1 -0
  50. package/dist/useApi-BIlKLud-.cjs +2 -0
  51. package/dist/useApi-BIlKLud-.cjs.map +1 -0
  52. package/dist/useApiError-BEbEk2Kq.cjs +3 -0
  53. package/dist/useApiError-BEbEk2Kq.cjs.map +1 -0
  54. package/dist/useApiError-C7rPzGrF.js +375 -0
  55. package/dist/useApiError-C7rPzGrF.js.map +1 -0
  56. package/dist/utils/csv.d.ts +1 -1
  57. package/dist/utils/fieldMapper.d.ts +2 -1
  58. package/package.json +49 -12
  59. package/dist/types/components/crud/WCrudColumnRenderer.vue.d.ts +0 -8
  60. package/dist/types/components/crud/WCrudFormDialog.vue.d.ts +0 -52
  61. package/dist/types/components/crud/WCrudView.vue.d.ts +0 -127
  62. package/dist/types/components/form/WAutoCompleteFK.vue.d.ts +0 -54
  63. package/dist/types/components/form/WFormRenderer.vue.d.ts +0 -44
  64. package/dist/types/components/form/WMoneyInput.vue.d.ts +0 -28
  65. package/dist/types/components/form/WTransferList.vue.d.ts +0 -25
  66. package/dist/types/components/index.d.ts +0 -18
  67. package/dist/types/components/ui/WActionBar.vue.d.ts +0 -25
  68. package/dist/types/components/ui/WDetailHeader.vue.d.ts +0 -24
  69. package/dist/types/components/ui/WEmptyState.vue.d.ts +0 -13
  70. package/dist/types/components/ui/WFormSection.vue.d.ts +0 -19
  71. package/dist/types/components/ui/WInfoCard.vue.d.ts +0 -11
  72. package/dist/types/components/ui/WKpiCard.vue.d.ts +0 -32
  73. package/dist/types/components/ui/WKpiGrid.vue.d.ts +0 -31
  74. package/dist/types/components/ui/WPageHeader.vue.d.ts +0 -22
  75. package/dist/types/components/ui/WProgressFlow.vue.d.ts +0 -28
  76. package/dist/types/components/ui/WSectionHeader.vue.d.ts +0 -22
  77. package/dist/types/components/ui/WStatusTag.vue.d.ts +0 -10
  78. package/dist/types/composables/index.d.ts +0 -6
  79. package/dist/types/composables/useApi.d.ts +0 -2
  80. package/dist/types/composables/useApiError.d.ts +0 -4
  81. package/dist/types/composables/useAppConfirm.d.ts +0 -4
  82. package/dist/types/composables/useAppToast.d.ts +0 -6
  83. package/dist/types/composables/useCrudManager.d.ts +0 -2
  84. package/dist/types/composables/useFormatters.d.ts +0 -19
  85. package/dist/types/crud.d.ts +0 -221
  86. package/dist/types/data-providers/axiosDataProvider.d.ts +0 -3
  87. package/dist/types/data-providers/index.d.ts +0 -2
  88. package/dist/types/data-providers/supabaseDataProvider.d.ts +0 -54
  89. package/dist/types/types/api.d.ts +0 -60
  90. package/dist/types/types/crud.d.ts +0 -221
  91. package/dist/types/types/dataProvider.d.ts +0 -28
  92. package/dist/types/types/index.d.ts +0 -6
  93. package/dist/types/types/plugin.d.ts +0 -24
  94. package/dist/types/utils/cep.d.ts +0 -14
  95. package/dist/types/utils/csv.d.ts +0 -13
  96. package/dist/types/utils/dates.d.ts +0 -5
  97. package/dist/types/utils/fieldMapper.d.ts +0 -20
  98. package/dist/types/utils/masks.d.ts +0 -8
@@ -0,0 +1,7 @@
1
+ const o = Symbol("w-axios"), a = Symbol("w-data-provider"), s = Symbol("w-config");
2
+ export {
3
+ a as W,
4
+ s as a,
5
+ o as b
6
+ };
7
+ //# sourceMappingURL=plugin-BKa0eSEM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-BKa0eSEM.js","sources":["../src/types/plugin.ts"],"sourcesContent":["import type { AxiosInstance } from 'axios'\nimport type { DataProvider } from './dataProvider'\n\nexport interface WPluginOptions {\n axios?: AxiosInstance\n dataProvider?: DataProvider\n defaultPageSize?: number\n dateFormat?: string\n dateTimeFormat?: string\n locale?: string\n currency?: string\n registerComponents?: boolean\n}\n\nexport interface WPluginConfig {\n axios?: AxiosInstance\n dataProvider: DataProvider\n defaultPageSize: number\n dateFormat: string\n dateTimeFormat: string\n locale: string\n currency: string\n}\n\nexport const W_AXIOS_KEY = Symbol('w-axios')\nexport const W_DATA_PROVIDER_KEY = Symbol('w-data-provider')\nexport const W_CONFIG_KEY = Symbol('w-config')\n"],"names":["W_AXIOS_KEY","W_DATA_PROVIDER_KEY","W_CONFIG_KEY"],"mappings":"AAwBO,MAAMA,IAAc,OAAO,SAAS,GAC9BC,IAAsB,OAAO,iBAAiB,GAC9CC,IAAe,OAAO,UAAU;"}
@@ -0,0 +1,2 @@
1
+ "use strict";const _=Symbol("w-axios"),o=Symbol("w-data-provider"),E=Symbol("w-config");exports.W_AXIOS_KEY=_;exports.W_CONFIG_KEY=E;exports.W_DATA_PROVIDER_KEY=o;
2
+ //# sourceMappingURL=plugin-D1YvyKXX.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-D1YvyKXX.cjs","sources":["../src/types/plugin.ts"],"sourcesContent":["import type { AxiosInstance } from 'axios'\nimport type { DataProvider } from './dataProvider'\n\nexport interface WPluginOptions {\n axios?: AxiosInstance\n dataProvider?: DataProvider\n defaultPageSize?: number\n dateFormat?: string\n dateTimeFormat?: string\n locale?: string\n currency?: string\n registerComponents?: boolean\n}\n\nexport interface WPluginConfig {\n axios?: AxiosInstance\n dataProvider: DataProvider\n defaultPageSize: number\n dateFormat: string\n dateTimeFormat: string\n locale: string\n currency: string\n}\n\nexport const W_AXIOS_KEY = Symbol('w-axios')\nexport const W_DATA_PROVIDER_KEY = Symbol('w-data-provider')\nexport const W_CONFIG_KEY = Symbol('w-config')\n"],"names":["W_AXIOS_KEY","W_DATA_PROVIDER_KEY","W_CONFIG_KEY"],"mappings":"aAwBO,MAAMA,EAAc,OAAO,SAAS,EAC9BC,EAAsB,OAAO,iBAAiB,EAC9CC,EAAe,OAAO,UAAU"}
@@ -1 +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(var(--w-form-cols, 2),1fr);gap:1rem 1rem}.w-crud-form-col-full{grid-column:span var(--w-col-span, 2)}.w-crud-form-col-half{grid-column:span var(--w-col-span, 1)}@media(max-width:640px){.w-crud-form-fields{grid-template-columns:1fr}.w-crud-form-col-full,.w-crud-form-col-half,.w-crud-form-switch{grid-column:1 / -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 var(--w-col-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--cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.w-kpi-grid--cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.w-kpi-grid--auto{grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),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-crud-card--selected{border-color:var(--p-primary-color);box-shadow:0 0 0 1px var(--p-primary-color)}.w-crud-content--rail{display:flex;align-items:flex-start;gap:.75rem}.w-crud-content-main{min-width:0}.w-crud-content--rail .w-crud-content-main{flex:1}.w-crud-rail{position:sticky;top:1rem;display:flex;flex-direction:column;align-items:center;gap:.375rem;flex-shrink:0;width:52px;padding:.5rem 0;border:1px solid var(--p-content-border-color);border-radius:15px;background:var(--p-content-background);box-shadow:var(--p-overlay-popover-shadow, 0 6px 20px rgba(15, 23, 42, .09))}.w-crud-rail-sep{width:60%;height:1px;background:var(--p-content-border-color);margin:.125rem 0}.w-crud-ctx-danger .p-contextmenu-item-link,.w-crud-ctx-danger .p-contextmenu-item-link .p-contextmenu-item-icon{color:var(--p-red-500, #ef4444)}.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}}
1
+ .w-imgcropper-preview[data-v-95684d2d]{position:relative;overflow:hidden;border-radius:8px;border:1px solid var(--p-content-border-color, #e2e8f0);background:var(--p-content-background, #f8fafc)}.w-imgcropper-preview.is-circular[data-v-95684d2d]{border-radius:50%}.w-imgcropper-img[data-v-95684d2d]{width:100%;height:100%;object-fit:cover;display:block}.w-imgcropper-actions[data-v-95684d2d]{position:absolute;inset:auto 0 0 0;display:flex;justify-content:center;gap:4px;padding:4px;background:color-mix(in srgb,#000 45%,transparent);opacity:0;transition:opacity .15s ease}.w-imgcropper-preview:hover .w-imgcropper-actions[data-v-95684d2d],.w-imgcropper-preview:focus-within .w-imgcropper-actions[data-v-95684d2d]{opacity:1}.w-imgcropper-empty[data-v-95684d2d]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;border:none;background:transparent;color:var(--p-text-muted-color, #64748b);font-size:.85rem}.w-imgcropper-empty i[data-v-95684d2d]{font-size:1.5rem}.w-imgcropper-file[data-v-95684d2d]{display:none}.w-imgcropper-stage[data-v-95684d2d]{display:flex;flex-direction:column;gap:16px;align-items:center}.w-imgcropper-viewport[data-v-95684d2d]{position:relative;overflow:hidden;touch-action:none;cursor:grab;background:#1e1e1e;border-radius:4px}.w-imgcropper-viewport[data-v-95684d2d]:active{cursor:grabbing}.w-imgcropper-viewport.is-circular[data-v-95684d2d]{border-radius:50%}.w-imgcropper-cropimg[data-v-95684d2d]{position:absolute;top:0;left:0;max-width:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.w-imgcropper-stencil[data-v-95684d2d]{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;box-shadow:0 0 0 1px color-mix(in srgb,#fff 60%,transparent) inset}.w-imgcropper-stencil.is-circular[data-v-95684d2d]{border-radius:50%}.w-imgcropper-zoom[data-v-95684d2d]{display:flex;align-items:center;gap:10px;width:100%;color:var(--p-text-muted-color, #64748b)}.w-imgcropper-slider[data-v-95684d2d]{flex: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(var(--w-form-cols, 2),1fr);gap:1rem 1rem}.w-crud-form-col-full{grid-column:span var(--w-col-span, 2)}.w-crud-form-col-half{grid-column:span var(--w-col-span, 1)}@media(max-width:640px){.w-crud-form-fields{grid-template-columns:1fr}.w-crud-form-col-full,.w-crud-form-col-half,.w-crud-form-switch{grid-column:1 / -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 var(--w-col-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--cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.w-kpi-grid--cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.w-kpi-grid--auto{grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),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-crud-card--selected{border-color:var(--p-primary-color);box-shadow:0 0 0 1px var(--p-primary-color)}.w-crud-content--rail{display:flex;align-items:flex-start;gap:.75rem}.w-crud-content-main{min-width:0}.w-crud-content--rail .w-crud-content-main{flex:1}.w-crud-rail{position:sticky;top:1rem;display:flex;flex-direction:column;align-items:center;gap:.375rem;flex-shrink:0;width:52px;padding:.5rem 0;border:1px solid var(--p-content-border-color);border-radius:15px;background:var(--p-content-background);box-shadow:var(--p-overlay-popover-shadow, 0 6px 20px rgba(15, 23, 42, .09))}.w-crud-rail-sep{width:60%;height:1px;background:var(--p-content-border-color);margin:.125rem 0}.w-crud-ctx-danger .p-contextmenu-item-link,.w-crud-ctx-danger .p-contextmenu-item-link .p-contextmenu-item-icon{color:var(--p-red-500, #ef4444)}.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,19 @@
1
+ export interface RowAction<T = Record<string, unknown>> {
2
+ action: string;
3
+ icon: string;
4
+ tooltip?: string;
5
+ severity?: 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast';
6
+ visible?: (data: T) => boolean;
7
+ disabled?: (data: T) => boolean;
8
+ handler?: (data: T) => void;
9
+ }
10
+ export interface BulkAction<T = Record<string, unknown>> {
11
+ action: string;
12
+ label: string;
13
+ icon?: string;
14
+ severity?: 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast';
15
+ /** Desabilita a ação para a seleção atual. */
16
+ disabled?: (items: T[]) => boolean;
17
+ /** Executa a ação sobre os itens selecionados. */
18
+ handler: (items: T[]) => void | Promise<void>;
19
+ }
@@ -0,0 +1,30 @@
1
+ export type ColumnType = 'text' | 'boolean' | 'date' | 'datetime' | 'number' | 'currency' | 'image' | 'custom';
2
+ /** Filtro declarativo de coluna — renderizado na barra de filtros e enviado
3
+ * como parâmetro na requisição de `list`. Opt-in por coluna. */
4
+ export interface ColumnFilter {
5
+ /** Widget do filtro. Default: 'text'. */
6
+ type?: 'text' | 'select' | 'boolean' | 'numeric';
7
+ /** Opções para `type: 'select'`. */
8
+ options?: {
9
+ label: string;
10
+ value: unknown;
11
+ }[];
12
+ /** Nome do parâmetro enviado à API. Default: o `field` da coluna. */
13
+ param?: string;
14
+ placeholder?: string;
15
+ }
16
+ export interface ColumnDef {
17
+ field: string;
18
+ header: string;
19
+ type?: ColumnType;
20
+ style?: string;
21
+ align?: 'left' | 'center' | 'right';
22
+ sortable?: boolean;
23
+ format?: (value: unknown, rowData?: Record<string, unknown>) => string;
24
+ visible?: boolean;
25
+ decimals?: number;
26
+ tagValue?: (value: unknown, rowData?: Record<string, unknown>) => string;
27
+ tagSeverity?: (value: unknown, rowData?: Record<string, unknown>) => string;
28
+ /** Filtro declarativo desta coluna (aparece na barra de filtros). */
29
+ filter?: ColumnFilter;
30
+ }
@@ -0,0 +1,33 @@
1
+ /** Dica de controle para o workbench quando o tipo da prop não basta. */
2
+ export interface ControlHint {
3
+ type?: 'text' | 'number' | 'boolean' | 'select' | 'color' | 'textarea';
4
+ /** Opções para 'select' quando não dá pra inferir de um union type. */
5
+ options?: (string | number)[];
6
+ min?: number;
7
+ max?: number;
8
+ step?: number;
9
+ }
10
+ /** Um cenário de uso, renderizado ao vivo no workbench e nas docs. */
11
+ export interface ComponentExample {
12
+ /** Título curto (aba/seção). */
13
+ name: string;
14
+ description?: string;
15
+ /** Valores de props deste cenário. */
16
+ props?: Record<string, unknown>;
17
+ /** Conteúdo de slot por nome (template como string, para o snippet). */
18
+ slots?: Record<string, string>;
19
+ }
20
+ export interface ComponentSidecar {
21
+ /** Categoria para agrupar na navegação (ex.: 'CRUD', 'Formulário', 'UI'). */
22
+ category: string;
23
+ /** Ícone PrimeIcons (ex.: 'pi pi-chart-bar'). */
24
+ icon?: string;
25
+ /** Resumo de uma linha (fallback quando o SFC não tem doc de topo). */
26
+ summary?: string;
27
+ /** Exemplos ao vivo; o primeiro é o estado inicial do workbench. */
28
+ examples?: ComponentExample[];
29
+ /** Dicas de controle por prop, quando o tipo não basta para o workbench. */
30
+ controls?: Record<string, ControlHint>;
31
+ }
32
+ /** Helper de autoria: type-check + autocomplete no sidecar. */
33
+ export declare function defineComponentMeta(meta: ComponentSidecar): ComponentSidecar;
@@ -0,0 +1,95 @@
1
+ import { Ref } from 'vue';
2
+ import { ColumnDef } from './column';
3
+ export type FieldType = 'text' | 'email' | 'password' | 'number' | 'currency' | 'date' | 'datetime' | 'select' | 'autocomplete' | 'fk' | 'switch' | 'textarea' | 'color' | 'cpf_cnpj' | 'mask' | 'image' | 'cep' | 'transfer';
4
+ export interface SelectOption {
5
+ [key: string]: unknown;
6
+ }
7
+ /**
8
+ * Filtro em cascata (drill-down) de um campo FK: torna a busca dependente do valor
9
+ * de outro campo do formulário, aplicando-o como filtro na requisição à API.
10
+ */
11
+ export interface FieldDependency {
12
+ /** Campo do formulário cujo valor alimenta o filtro (ex.: 'unidade_producao'). */
13
+ field: string;
14
+ /** Nome do parâmetro enviado à API. Default: o próprio `field`. */
15
+ param?: string;
16
+ /** Se true, a busca só ocorre quando o valor de origem estiver preenchido
17
+ * (cascata obrigatória). Default: true. */
18
+ required?: boolean;
19
+ }
20
+ export interface FieldDef {
21
+ field: string;
22
+ label: string;
23
+ type?: FieldType;
24
+ required?: boolean;
25
+ /** Largura do campo no grid do form (ver `columns` do WFormRenderer):
26
+ * - omitido ou 'full' → linha inteira
27
+ * - 0.5 → metade da linha (independe do nº de colunas)
28
+ * - inteiro ≥ 1 → ocupa N colunas do grid (limitado ao total de colunas) */
29
+ colSpan?: number | 'full';
30
+ defaultValue?: unknown | (() => unknown);
31
+ disabled?: boolean | ((formData: Record<string, unknown>, isEditing: boolean) => boolean);
32
+ disabledOnEdit?: boolean;
33
+ visible?: boolean | ((formData: Record<string, unknown>, isEditing: boolean) => boolean);
34
+ placeholder?: string;
35
+ validate?: (value: unknown) => string | null;
36
+ autofocus?: boolean | 'create' | 'edit';
37
+ options?: SelectOption[] | Ref<SelectOption[]>;
38
+ optionLabel?: string;
39
+ optionValue?: string;
40
+ showClear?: boolean;
41
+ /** For 'transfer' fields — option keys to match against when searching
42
+ * (defaults to [optionLabel]). */
43
+ searchFields?: string[];
44
+ endpoint?: string;
45
+ endpointParams?: Record<string, string | number | boolean>;
46
+ /** Filtro em cascata: torna esta FK dependente do valor de outro(s) campo(s) do
47
+ * formulário, aplicando-o(s) como filtro na busca da API (ex.: um "local" que só
48
+ * lista os da "unidade_producao" selecionada). Com `required` (default true), a
49
+ * busca só ocorre após o campo de origem estar preenchido. */
50
+ dependsOn?: FieldDependency | FieldDependency[];
51
+ /** Placeholder da FK enquanto uma cascata obrigatória (`dependsOn`) não estiver
52
+ * preenchida — ex.: "Selecione a unidade primeiro". */
53
+ blockedPlaceholder?: string;
54
+ crudFields?: FieldDef[];
55
+ crudColumns?: ColumnDef[];
56
+ min?: number;
57
+ max?: number;
58
+ minFractionDigits?: number;
59
+ maxFractionDigits?: number;
60
+ prefix?: string;
61
+ suffix?: string;
62
+ /** For 'currency' fields — render WMoneyInput (digit entry filled from the
63
+ * right, like a calculator/POS) instead of the default InputNumber. */
64
+ fillFromRight?: boolean;
65
+ /** Fixed decimal places for 'currency' fillFromRight mode (default: 2). */
66
+ decimals?: number;
67
+ dateFormat?: string;
68
+ hourFormat?: '12' | '24';
69
+ mask?: string;
70
+ rows?: number;
71
+ switchLabel?: string;
72
+ feedback?: boolean;
73
+ accept?: string;
74
+ /** For type 'cep' — maps ViaCEP response fields to form field names.
75
+ * Keys are ViaCEP response names (logradouro, bairro, localidade, uf, complemento).
76
+ * Values are the form field names to populate. Omit keys to skip fields. */
77
+ cepFields?: {
78
+ logradouro?: string;
79
+ bairro?: string;
80
+ localidade?: string;
81
+ uf?: string;
82
+ complemento?: string;
83
+ };
84
+ /** Optional visual grouping. Fields with the same group.id render together
85
+ * under a titled section. Ungrouped fields render in a default section at the top.
86
+ * `order` controls the display order of groups; defaults to the order of first occurrence. */
87
+ fieldGroup?: {
88
+ id: string;
89
+ title: string;
90
+ description?: string;
91
+ order?: number;
92
+ /** Nº de colunas do grid deste grupo — sobrepõe o `columns` do form. */
93
+ columns?: number;
94
+ };
95
+ }
@@ -1,14 +1,11 @@
1
- import './assets/crud.css';
2
- export { WPrimeVuePlugin } from './plugin';
3
- export { WCrudView, WCrudFormDialog, WCrudColumnRenderer, WAutoCompleteFK, WFormRenderer, WMoneyInput, WTransferList, WStatusTag, WPageHeader, WDetailHeader, WEmptyState, WInfoCard, WKpiCard, WKpiGrid, WSectionHeader, WFormSection, WActionBar, WProgressFlow, } from './components';
4
- export { useCrudManager, useApi, useAppToast, useAppConfirm, useApiError, extractApiError, useFormatters, } from './composables';
5
- export { createAxiosDataProvider, createSupabaseDataProvider, } from './data-providers';
6
- export type { PaginatedResponse, PaginationState, SortState, UseApiOptions, UseApiReturn, ColumnDef, ColumnType, FieldDef, FieldType, SelectOption, RowAction, CrudLabels, KpiItem, CrudManagerConfig, CrudManagerReturn, WPluginOptions, WPluginConfig, DataProvider, DataProviderListParams, DataProviderListResponse, DataProviderRequestConfig, DataProviderResponse, } from './types';
7
- export type { StatusMapping } from './components/ui/WStatusTag.vue';
8
- export type { InfoField } from './components/ui/WInfoCard.vue';
9
- export type { CreateSupabaseDataProviderOptions, SupabaseDataProviderClient, SupabaseResourceConfig, } from './data-providers';
10
- export { DEFAULT_CRUD_LABELS, W_AXIOS_KEY, W_CONFIG_KEY, W_DATA_PROVIDER_KEY, } from './types';
11
- export type { ApiFieldMeta } from './utils/fieldMapper';
12
- export { mapApiFieldToFieldDef, mapApiFieldsToFieldDefs, mapApiFieldToColumnDef, mapApiFieldsToColumnDefs, } from './utils/fieldMapper';
13
- export type { ToCsvOptions } from './utils/csv';
14
- export { toCsv, downloadCsv } from './utils/csv';
1
+ export type { PaginatedResponse, PaginationState, SortState, UseApiOptions, UseApiReturn, } from './api';
2
+ export type { ColumnDef, ColumnType } from './column';
3
+ export type { FieldDef, FieldType, SelectOption, FieldDependency } from './field';
4
+ export type { RowAction } from './action';
5
+ export type { CrudLabels } from './labels';
6
+ export { DEFAULT_CRUD_LABELS } from './labels';
7
+ export type { KpiItem } from './kpi';
8
+ export type { CrudManagerConfig, CrudManagerReturn } from './manager';
9
+ export type { WPluginOptions, WPluginConfig } from './plugin';
10
+ export { W_AXIOS_KEY, W_CONFIG_KEY, W_DATA_PROVIDER_KEY } from './plugin';
11
+ export type { DataProvider, DataProviderListParams, DataProviderListResponse, DataProviderRequestConfig, DataProviderResponse, } from './dataProvider';
@@ -0,0 +1,13 @@
1
+ export interface KpiItem {
2
+ icon: string;
3
+ label: string;
4
+ value: string | number;
5
+ color?: string;
6
+ severity?: 'primary' | 'success' | 'warning' | 'danger' | 'info';
7
+ hint?: string;
8
+ loading?: boolean;
9
+ trend?: {
10
+ value: string;
11
+ direction?: 'up' | 'down' | 'neutral';
12
+ };
13
+ }
@@ -0,0 +1,17 @@
1
+ export interface CrudLabels {
2
+ createTitle: string;
3
+ editTitle: string;
4
+ viewTitle?: string;
5
+ createButton: string;
6
+ saveButton: string;
7
+ updateButton: string;
8
+ cancelButton: string;
9
+ deleteConfirmTitle: string;
10
+ deleteConfirmMessage: string;
11
+ searchPlaceholder: string;
12
+ emptyMessage: string;
13
+ successCreate: string;
14
+ successUpdate: string;
15
+ successDelete: string;
16
+ }
17
+ export declare const DEFAULT_CRUD_LABELS: CrudLabels;
@@ -0,0 +1,93 @@
1
+ import { ComputedRef, Ref } from 'vue';
2
+ import { PaginationState, SortState } from './api';
3
+ import { ColumnDef } from './column';
4
+ import { FieldDef } from './field';
5
+ import { RowAction, BulkAction } from './action';
6
+ import { CrudLabels } from './labels';
7
+ export interface CrudManagerConfig<T> {
8
+ endpoint: string;
9
+ columns: ColumnDef[];
10
+ form: FieldDef[];
11
+ /** Nº de colunas do grid do form dialog (default 2). Campos usam `colSpan`
12
+ * para ocupar frações do grid; grupos podem sobrepor via `fieldGroup.columns`. */
13
+ formColumns?: number;
14
+ pk?: string;
15
+ pageSize?: number;
16
+ searchDebounce?: number;
17
+ /** When editing, send only the changed fields (diff) instead of the whole
18
+ * record. Defaults to `true`. Set `false` to always send the full payload. */
19
+ partialUpdate?: boolean;
20
+ /** After a successful create/update, re-fetch the current page so the list
21
+ * reflects the backend (derived fields, ordering) without losing pagination,
22
+ * search or filter position. Defaults to `true`. Set `false` to keep the
23
+ * optimistic in-place update instead. */
24
+ refetchOnSave?: boolean;
25
+ canCreate?: boolean;
26
+ canEdit?: boolean;
27
+ canDelete?: boolean;
28
+ rowActions?: RowAction<T>[];
29
+ /** Habilita seleção múltipla na tabela (checkbox + barra de ações em lote). */
30
+ selectionMode?: 'multiple';
31
+ /** Ações aplicadas ao conjunto selecionado, exibidas na barra de lote. */
32
+ bulkActions?: BulkAction<T>[];
33
+ filterParams?: () => Record<string, unknown>;
34
+ transformPayload?: (payload: Record<string, unknown>, isEditing: boolean) => Record<string, unknown>;
35
+ createDefaults?: () => Record<string, unknown>;
36
+ onAfterSave?: (data: T, isEditing: boolean) => void;
37
+ onAfterDelete?: (item: T) => void;
38
+ labels?: Partial<CrudLabels>;
39
+ }
40
+ export interface CrudManagerReturn<T> {
41
+ items: Ref<T[]>;
42
+ /** Itens marcados quando `selectionMode: 'multiple'`. */
43
+ selectedItems: Ref<T[]>;
44
+ /** Filtros de coluna ativos (param → valor), enviados na requisição de `list`. */
45
+ columnFilters: Record<string, unknown>;
46
+ extras: Ref<Record<string, unknown>>;
47
+ loading: Ref<boolean>;
48
+ saving: Ref<boolean>;
49
+ search: Ref<string>;
50
+ dialogVisible: Ref<boolean>;
51
+ editingItem: Ref<T | null>;
52
+ formData: Record<string, unknown>;
53
+ pagination: PaginationState;
54
+ sort: SortState;
55
+ isEditing: ComputedRef<boolean>;
56
+ isViewing: ComputedRef<boolean>;
57
+ viewMode: Ref<boolean>;
58
+ dialogTitle: ComputedRef<string>;
59
+ isFirstPage: ComputedRef<boolean>;
60
+ isLastPage: ComputedRef<boolean>;
61
+ init(): Promise<void>;
62
+ fetchItems(params?: Record<string, unknown>): Promise<void>;
63
+ fetchAll(pageSize?: number): Promise<T[]>;
64
+ refresh(): Promise<void>;
65
+ setSearch(value: string): void;
66
+ onSearch(event: Event): void;
67
+ onPage(event: {
68
+ page: number;
69
+ rows: number;
70
+ }): void;
71
+ onSort(event: {
72
+ sortField?: string | null;
73
+ sortOrder?: 1 | -1 | 0 | null;
74
+ }): void;
75
+ openCreateDialog(): void;
76
+ openEditDialog(item: T): void;
77
+ openViewDialog(item: T): void;
78
+ openDuplicateDialog(item: T): void;
79
+ save(): Promise<T | null>;
80
+ confirmDelete(item: T): void;
81
+ setFormField(field: string, value: unknown): void;
82
+ resetForm(): void;
83
+ goToPage(page: number): void;
84
+ firstPage(): void;
85
+ lastPage(): void;
86
+ /** Limpa a seleção múltipla. */
87
+ clearSelection(): void;
88
+ /** Define (ou remove, se vazio) um filtro de coluna e recarrega a lista. */
89
+ setColumnFilter(param: string, value: unknown): void;
90
+ /** Limpa todos os filtros de coluna e recarrega a lista. */
91
+ clearColumnFilters(): void;
92
+ config: CrudManagerConfig<T>;
93
+ }
@@ -1,2 +1,24 @@
1
- import type { Plugin } from 'vue';
2
- export declare const WPrimeVuePlugin: Plugin;
1
+ import { AxiosInstance } from 'axios';
2
+ import { DataProvider } from './dataProvider';
3
+ export interface WPluginOptions {
4
+ axios?: AxiosInstance;
5
+ dataProvider?: DataProvider;
6
+ defaultPageSize?: number;
7
+ dateFormat?: string;
8
+ dateTimeFormat?: string;
9
+ locale?: string;
10
+ currency?: string;
11
+ registerComponents?: boolean;
12
+ }
13
+ export interface WPluginConfig {
14
+ axios?: AxiosInstance;
15
+ dataProvider: DataProvider;
16
+ defaultPageSize: number;
17
+ dateFormat: string;
18
+ dateTimeFormat: string;
19
+ locale: string;
20
+ currency: string;
21
+ }
22
+ export declare const W_AXIOS_KEY: unique symbol;
23
+ export declare const W_DATA_PROVIDER_KEY: unique symbol;
24
+ export declare const W_CONFIG_KEY: unique symbol;
package/dist/types.cjs ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./plugin-D1YvyKXX.cjs"),t={createTitle:"Novo Registro",editTitle:"Editar Registro",createButton:"Novo",saveButton:"Salvar",updateButton:"Atualizar",cancelButton:"Cancelar",deleteConfirmTitle:"Confirmar Exclusão",deleteConfirmMessage:"Deseja realmente excluir este registro?",searchPlaceholder:"Buscar...",emptyMessage:"Nenhum registro encontrado",successCreate:"Registro criado com sucesso",successUpdate:"Registro atualizado com sucesso",successDelete:"Registro excluído com sucesso"};exports.W_AXIOS_KEY=e.W_AXIOS_KEY;exports.W_CONFIG_KEY=e.W_CONFIG_KEY;exports.W_DATA_PROVIDER_KEY=e.W_DATA_PROVIDER_KEY;exports.DEFAULT_CRUD_LABELS=t;
2
+ //# sourceMappingURL=types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.cjs","sources":["../src/types/labels.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// Labels\n// ---------------------------------------------------------------------------\n\nexport interface CrudLabels {\n createTitle: string\n editTitle: string\n viewTitle?: string\n createButton: string\n saveButton: string\n updateButton: string\n cancelButton: string\n deleteConfirmTitle: string\n deleteConfirmMessage: string\n searchPlaceholder: string\n emptyMessage: string\n successCreate: string\n successUpdate: string\n successDelete: string\n}\n\nexport const DEFAULT_CRUD_LABELS: CrudLabels = {\n createTitle: 'Novo Registro',\n editTitle: 'Editar Registro',\n createButton: 'Novo',\n saveButton: 'Salvar',\n updateButton: 'Atualizar',\n cancelButton: 'Cancelar',\n deleteConfirmTitle: 'Confirmar Exclusão',\n deleteConfirmMessage: 'Deseja realmente excluir este registro?',\n searchPlaceholder: 'Buscar...',\n emptyMessage: 'Nenhum registro encontrado',\n successCreate: 'Registro criado com sucesso',\n successUpdate: 'Registro atualizado com sucesso',\n successDelete: 'Registro excluído com sucesso',\n}\n"],"names":["DEFAULT_CRUD_LABELS"],"mappings":"yHAqBaA,EAAkC,CAC7C,YAAa,gBACb,UAAW,kBACX,aAAc,OACd,WAAY,SACZ,aAAc,YACd,aAAc,WACd,mBAAoB,qBACpB,qBAAsB,0CACtB,kBAAmB,YACnB,aAAc,6BACd,cAAe,8BACf,cAAe,kCACf,cAAe,+BACjB"}
@@ -0,0 +1,2 @@
1
+ export * from './types/index'
2
+ export {}
package/dist/types.js ADDED
@@ -0,0 +1,23 @@
1
+ import { b as o, a, W as r } from "./plugin-BKa0eSEM.js";
2
+ const e = {
3
+ createTitle: "Novo Registro",
4
+ editTitle: "Editar Registro",
5
+ createButton: "Novo",
6
+ saveButton: "Salvar",
7
+ updateButton: "Atualizar",
8
+ cancelButton: "Cancelar",
9
+ deleteConfirmTitle: "Confirmar Exclusão",
10
+ deleteConfirmMessage: "Deseja realmente excluir este registro?",
11
+ searchPlaceholder: "Buscar...",
12
+ emptyMessage: "Nenhum registro encontrado",
13
+ successCreate: "Registro criado com sucesso",
14
+ successUpdate: "Registro atualizado com sucesso",
15
+ successDelete: "Registro excluído com sucesso"
16
+ };
17
+ export {
18
+ e as DEFAULT_CRUD_LABELS,
19
+ o as W_AXIOS_KEY,
20
+ a as W_CONFIG_KEY,
21
+ r as W_DATA_PROVIDER_KEY
22
+ };
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sources":["../src/types/labels.ts"],"sourcesContent":["// ---------------------------------------------------------------------------\n// Labels\n// ---------------------------------------------------------------------------\n\nexport interface CrudLabels {\n createTitle: string\n editTitle: string\n viewTitle?: string\n createButton: string\n saveButton: string\n updateButton: string\n cancelButton: string\n deleteConfirmTitle: string\n deleteConfirmMessage: string\n searchPlaceholder: string\n emptyMessage: string\n successCreate: string\n successUpdate: string\n successDelete: string\n}\n\nexport const DEFAULT_CRUD_LABELS: CrudLabels = {\n createTitle: 'Novo Registro',\n editTitle: 'Editar Registro',\n createButton: 'Novo',\n saveButton: 'Salvar',\n updateButton: 'Atualizar',\n cancelButton: 'Cancelar',\n deleteConfirmTitle: 'Confirmar Exclusão',\n deleteConfirmMessage: 'Deseja realmente excluir este registro?',\n searchPlaceholder: 'Buscar...',\n emptyMessage: 'Nenhum registro encontrado',\n successCreate: 'Registro criado com sucesso',\n successUpdate: 'Registro atualizado com sucesso',\n successDelete: 'Registro excluído com sucesso',\n}\n"],"names":["DEFAULT_CRUD_LABELS"],"mappings":";AAqBO,MAAMA,IAAkC;AAAA,EAC7C,aAAa;AAAA,EACb,WAAW;AAAA,EACX,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,cAAc;AAAA,EACd,eAAe;AAAA,EACf,eAAe;AAAA,EACf,eAAe;AACjB;"}