@wgalleti/primevue-components 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/dist/WMapSelect.vue_vue_type_script_setup_true_lang-BOhO1F9v.js +4991 -0
- package/dist/WMapSelect.vue_vue_type_script_setup_true_lang-BOhO1F9v.js.map +1 -0
- package/dist/WMapSelect.vue_vue_type_script_setup_true_lang-BkZhQ_LO.cjs +12 -0
- package/dist/WMapSelect.vue_vue_type_script_setup_true_lang-BkZhQ_LO.cjs.map +1 -0
- package/dist/components/crud/WEditableTable.vue.d.ts +78 -0
- package/dist/components/form/WAutoCompleteFK.vue.d.ts +9 -1
- package/dist/components/index.d.ts +5 -0
- package/dist/components/ui/WCheckList.vue.d.ts +36 -0
- package/dist/components/ui/WInfoCard.vue.d.ts +11 -1
- package/dist/components/ui/WMapSelect.vue.d.ts +133 -0
- package/dist/components/ui/WStepFlow.vue.d.ts +51 -0
- package/dist/components/ui/WStepSection.vue.d.ts +49 -0
- package/dist/components.cjs +1 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.js +29 -125
- package/dist/components.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +68 -60
- package/dist/primevue-components.css +1 -1
- package/dist/types/checkList.d.ts +7 -0
- package/dist/types/editableTable.d.ts +39 -0
- package/dist/types/field.d.ts +27 -1
- package/dist/types/index.d.ts +3 -0
- package/dist/types/mapSelect.d.ts +31 -0
- package/dist/utils/stepFlow.d.ts +27 -0
- package/package.json +3 -1
- package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-C-167GXT.cjs +0 -12
- package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-C-167GXT.cjs.map +0 -1
- package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-D9HgZsV9.js +0 -3886
- package/dist/WProgressFlow.vue_vue_type_script_setup_true_lang-D9HgZsV9.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("./plugin-D1YvyKXX.cjs"),n=require("./WMapSelect.vue_vue_type_script_setup_true_lang-BkZhQ_LO.cjs"),y=require("./useApi-237Q1Vdg.cjs"),m=require("./useFormKeyboardNav-D4Ow3k4Y.cjs"),F=require("./types.cjs");function C(e,a,t){const r=e;return Array.isArray(r.results)?{data:r.results,page:r.page??a,page_size:r.page_size??t,rows:r.count??0,extras:r.extras??{}}:Array.isArray(r.data)?{data:r.data,page:r.page??a,page_size:r.page_size??t,rows:r.rows??0,extras:r.extras??{}}:{data:Array.isArray(e)?e:[],page:a,page_size:t,rows:Array.isArray(e)?e.length:0,extras:{}}}function $(e){return{async list(a,t={}){const r=await e.get(a,{params:t});return C(r.data,Number(t.page??1),Number(t.page_size??20))},async get(a,t,r){return{data:(await e.get(`${a}${t}/`,r)).data}},async create(a,t,r){return{data:(await e.post(a,t,r)).data}},async update(a,t,r,s){return{data:(await e.patch(`${a}${t}/`,r,s)).data}},async delete(a,t){await e.delete(`${a}${t}/`)}}}const P={install(e,a){if(!(a!=null&&a.axios)&&!(a!=null&&a.dataProvider))throw new Error('[wPrimeVueComponents] Informe "axios" ou "dataProvider" ao registrar o WPrimeVuePlugin.');const t=a.dataProvider??$(a.axios),r={axios:a.axios,dataProvider:t,defaultPageSize:a.defaultPageSize??20,dateFormat:a.dateFormat??"DD/MM/YYYY",dateTimeFormat:a.dateTimeFormat??"DD/MM/YYYY HH:mm",locale:a.locale??"pt-BR",currency:a.currency??"BRL"};a.axios&&e.provide(_.W_AXIOS_KEY,a.axios),e.provide(_.W_DATA_PROVIDER_KEY,t),e.provide(_.W_CONFIG_KEY,r),a.registerComponents!==!1&&(e.component("WCrudView",n._sfc_main$5),e.component("WCrudFormDialog",n._sfc_main$4),e.component("WCrudColumnRenderer",n._sfc_main$3),e.component("WAutoCompleteFK",n._sfc_main$1),e.component("WMoneyInput",n._sfc_main$18),e.component("WTransferList",n._sfc_main$25),e.component("WTreeSelect",n._sfc_main$26))}};function S(e){return e.split("?")[0].replace(/^\/+|\/+$/g,"").replace(/^api\/v\d+\//,"")}function E(e){return typeof e=="string"?{table:e}:e}function D(e,a=400){return{response:{status:a,data:{detail:e}},message:e}}function A(e){if(e instanceof FormData)throw D("SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.");return e}function p(e){throw{response:{data:{detail:(e==null?void 0:e.message)??"Erro ao consultar Supabase",code:e==null?void 0:e.code,details:e==null?void 0:e.details,hint:e==null?void 0:e.hint}},message:(e==null?void 0:e.message)??"Erro ao consultar Supabase"}}function g(e,a){var s,i;const t=S(e),r=(s=a.resources)==null?void 0:s[t];if(r)return E(r);if((i=a.allowedTables)!=null&&i.includes(t))return{table:t};throw D(`Recurso Supabase nao registrado para o endpoint "${e}".`,404)}function v(e,a,t){const r=new Set(["page","page_size","search","ordering"]),s={...t.defaultFilters,...a};for(const[i,o]of Object.entries(s))r.has(i)||o===null||o===void 0||o===""||(e=e.eq(i,o));return e}function w(e,a,t){if(typeof a!="string"||!a.trim()||!(t!=null&&t.length))return e;const r=a.trim().replace(/,/g,"\\,"),s=t.map(i=>`${i}.ilike.%${r}%`).join(",");return e.or(s)}function T(e,a){const t=typeof e=="string"&&e?e:a;return t?{field:t.startsWith("-")?t.slice(1):t,ascending:!t.startsWith("-")}:null}function b(e,a){return e?a.mapListItem?e.map(t=>{var r;return(r=a.mapListItem)==null?void 0:r.call(a,t)}):e:[]}function R(e){const a=e.defaultSelect??"*";return{async list(t,r={}){var W;const s=g(t,e),i=Math.max(Number(r.page??1),1),o=Math.max(Number(r.page_size??20),1),c=(i-1)*o,l=c+o-1;let u=e.client.from(s.table).select(s.select??a,{count:"exact"});u=v(u,r,s),u=w(u,r.search,s.searchFields);const d=T(r.ordering,s.defaultOrdering);d&&(u=u.order(d.field,{ascending:d.ascending}));const f=await u.range(c,l);return f.error&&p(f.error),{data:b(f.data,s),page:i,page_size:o,rows:f.count??((W=f.data)==null?void 0:W.length)??0,extras:{}}},async get(t,r,s){const i=g(t,e),o=i.pk??"id",c=await e.client.from(i.table).select(i.select??a).eq(o,r).single();return c.error&&p(c.error),{data:c.data}},async create(t,r,s){const i=g(t,e),o=A(r),c=i.mapPayload?i.mapPayload(o,"create"):o,l=await e.client.from(i.table).insert(c).select(i.select??a).single();return l.error&&p(l.error),{data:l.data}},async update(t,r,s,i){const o=g(t,e),c=o.pk??"id",l=A(s),u=o.mapPayload?o.mapPayload(l,"update"):l,d=await e.client.from(o.table).update(u).eq(c,r).select(o.select??a).single();return d.error&&p(d.error),{data:d.data}},async delete(t,r){const s=g(t,e),i=s.pk??"id",o=s.softDelete===!0?{is_active:!1}:typeof s.softDelete=="object"?s.softDelete:null,c=o?await e.client.from(s.table).update(o).eq(i,r):await e.client.from(s.table).delete().eq(i,r);c.error&&p(c.error)}}}exports.W_AXIOS_KEY=_.W_AXIOS_KEY;exports.W_CONFIG_KEY=_.W_CONFIG_KEY;exports.W_DATA_PROVIDER_KEY=_.W_DATA_PROVIDER_KEY;exports.WActionBar=n._sfc_main;exports.WAutoCompleteFK=n._sfc_main$1;exports.WCheckList=n._sfc_main$2;exports.WCrudColumnRenderer=n._sfc_main$3;exports.WCrudFormDialog=n._sfc_main$4;exports.WCrudView=n._sfc_main$5;exports.WDatePicker=n._sfc_main$6;exports.WDateRange=n._sfc_main$7;exports.WDetailHeader=n._sfc_main$8;exports.WEditableTable=n._sfc_main$9;exports.WEmptyState=n._sfc_main$10;exports.WFileUpload=n._sfc_main$11;exports.WFormRenderer=n._sfc_main$12;exports.WFormSection=n._sfc_main$13;exports.WImageCropper=n.WImageCropper;exports.WInfoCard=n._sfc_main$14;exports.WKpiCard=n._sfc_main$15;exports.WKpiGrid=n._sfc_main$16;exports.WMapSelect=n._sfc_main$17;exports.WMoneyInput=n._sfc_main$18;exports.WPageHeader=n._sfc_main$19;exports.WProgressFlow=n._sfc_main$20;exports.WSectionHeader=n._sfc_main$21;exports.WStatusTag=n._sfc_main$22;exports.WStepFlow=n._sfc_main$23;exports.WStepSection=n._sfc_main$24;exports.WTransferList=n._sfc_main$25;exports.WTreeSelect=n._sfc_main$26;exports.W_STEP_FLOW_KEY=n.W_STEP_FLOW_KEY;exports.downloadCsv=n.downloadCsv;exports.mapApiFieldToColumnDef=n.mapApiFieldToColumnDef;exports.mapApiFieldToFieldDef=n.mapApiFieldToFieldDef;exports.mapApiFieldsToColumnDefs=n.mapApiFieldsToColumnDefs;exports.mapApiFieldsToFieldDefs=n.mapApiFieldsToFieldDefs;exports.toCsv=n.toCsv;exports.useApi=y.useApi;exports.useCrudManager=y.useCrudManager;exports.extractApiError=m.extractApiError;exports.useApiError=m.useApiError;exports.useAppConfirm=m.useAppConfirm;exports.useAppToast=m.useAppToast;exports.useDateInput=m.useDateInput;exports.useFormatters=m.useFormatters;exports.DEFAULT_CRUD_LABELS=F.DEFAULT_CRUD_LABELS;exports.WPrimeVuePlugin=P;exports.createAxiosDataProvider=$;exports.createSupabaseDataProvider=R;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/data-providers/axiosDataProvider.ts","../src/plugin.ts","../src/data-providers/supabaseDataProvider.ts"],"sourcesContent":["import type { AxiosInstance } from 'axios'\nimport type {\n DataProvider,\n DataProviderListParams,\n DataProviderListResponse,\n DataProviderRequestConfig,\n DataProviderResponse,\n} from '@/types/dataProvider'\n\nfunction normalizeListResponse<T>(\n responseData: unknown,\n fallbackPage: number,\n fallbackPageSize: number,\n): DataProviderListResponse<T> {\n const data = responseData as Record<string, unknown>\n\n if (Array.isArray(data.results)) {\n return {\n data: data.results as T[],\n page: (data.page as number) ?? fallbackPage,\n page_size: (data.page_size as number) ?? fallbackPageSize,\n rows: (data.count as number) ?? 0,\n extras: (data.extras as Record<string, unknown>) ?? {},\n }\n }\n\n if (Array.isArray(data.data)) {\n return {\n data: data.data as T[],\n page: (data.page as number) ?? fallbackPage,\n page_size: (data.page_size as number) ?? fallbackPageSize,\n rows: (data.rows as number) ?? 0,\n extras: (data.extras as Record<string, unknown>) ?? {},\n }\n }\n\n return {\n data: Array.isArray(responseData) ? (responseData as T[]) : [],\n page: fallbackPage,\n page_size: fallbackPageSize,\n rows: Array.isArray(responseData) ? responseData.length : 0,\n extras: {},\n }\n}\n\nexport function createAxiosDataProvider(axios: AxiosInstance): DataProvider {\n return {\n async list<T = Record<string, unknown>>(\n endpoint: string,\n params: DataProviderListParams = {},\n ): Promise<DataProviderListResponse<T>> {\n const response = await axios.get(endpoint, { params })\n return normalizeListResponse<T>(\n response.data,\n Number(params.page ?? 1),\n Number(params.page_size ?? 20),\n )\n },\n\n async get<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.get<T>(`${endpoint}${id}/`, config)\n return { data: response.data }\n },\n\n async create<T = Record<string, unknown>>(\n endpoint: string,\n payload: Record<string, unknown> | FormData,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.post<T>(endpoint, payload, config)\n return { data: response.data }\n },\n\n async update<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n payload: Record<string, unknown> | FormData,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.patch<T>(`${endpoint}${id}/`, payload, config)\n return { data: response.data }\n },\n\n async delete(endpoint: string, id: string | number): Promise<void> {\n await axios.delete(`${endpoint}${id}/`)\n },\n }\n}\n","import type { App, Plugin } from 'vue'\nimport type { WPluginOptions, WPluginConfig } from './types/plugin'\nimport { W_AXIOS_KEY, W_CONFIG_KEY, W_DATA_PROVIDER_KEY } from './types/plugin'\nimport {\n WCrudView,\n WCrudFormDialog,\n WCrudColumnRenderer,\n WAutoCompleteFK,\n WMoneyInput,\n WTransferList,\n WTreeSelect,\n} from './components'\nimport { createAxiosDataProvider } from './data-providers/axiosDataProvider'\n\nexport const WPrimeVuePlugin: Plugin = {\n install(app: App, options: WPluginOptions) {\n if (!options?.axios && !options?.dataProvider) {\n throw new Error(\n '[wPrimeVueComponents] Informe \"axios\" ou \"dataProvider\" ao registrar o WPrimeVuePlugin.',\n )\n }\n\n const dataProvider = options.dataProvider ?? createAxiosDataProvider(options.axios!)\n\n const config: WPluginConfig = {\n axios: options.axios,\n dataProvider,\n defaultPageSize: options.defaultPageSize ?? 20,\n dateFormat: options.dateFormat ?? 'DD/MM/YYYY',\n dateTimeFormat: options.dateTimeFormat ?? 'DD/MM/YYYY HH:mm',\n locale: options.locale ?? 'pt-BR',\n currency: options.currency ?? 'BRL',\n }\n\n if (options.axios) {\n app.provide(W_AXIOS_KEY, options.axios)\n }\n app.provide(W_DATA_PROVIDER_KEY, dataProvider)\n app.provide(W_CONFIG_KEY, config)\n\n if (options.registerComponents !== false) {\n app.component('WCrudView', WCrudView)\n app.component('WCrudFormDialog', WCrudFormDialog)\n app.component('WCrudColumnRenderer', WCrudColumnRenderer)\n app.component('WAutoCompleteFK', WAutoCompleteFK)\n app.component('WMoneyInput', WMoneyInput)\n app.component('WTransferList', WTransferList)\n app.component('WTreeSelect', WTreeSelect)\n }\n },\n}\n","import type {\n DataProvider,\n DataProviderListParams,\n DataProviderListResponse,\n DataProviderRequestConfig,\n DataProviderResponse,\n} from '@/types/dataProvider'\n\ntype SupabaseResult<T> = {\n data: T | null\n error: {\n message: string\n code?: string\n details?: string\n hint?: string\n } | null\n count?: number | null\n}\n\ntype SupabaseFilterBuilder<T> = PromiseLike<SupabaseResult<T>> & {\n select(\n columns?: string,\n options?: { count?: 'exact' | 'planned' | 'estimated' },\n ): SupabaseFilterBuilder<T>\n eq(column: string, value: unknown): SupabaseFilterBuilder<T>\n ilike(column: string, pattern: string): SupabaseFilterBuilder<T>\n or(filters: string): SupabaseFilterBuilder<T>\n order(column: string, options?: { ascending?: boolean }): SupabaseFilterBuilder<T>\n range(from: number, to: number): SupabaseFilterBuilder<T>\n single(): Promise<SupabaseResult<T>>\n}\n\ntype SupabaseTable = {\n select<T = unknown>(\n columns?: string,\n options?: { count?: 'exact' | 'planned' | 'estimated' },\n ): SupabaseFilterBuilder<T>\n insert<T = unknown>(payload: unknown): SupabaseFilterBuilder<T>\n update<T = unknown>(payload: unknown): SupabaseFilterBuilder<T>\n delete<T = unknown>(): SupabaseFilterBuilder<T>\n}\n\nexport interface SupabaseDataProviderClient {\n from(table: string): SupabaseTable\n}\n\nexport interface SupabaseResourceConfig {\n table: string\n pk?: string\n select?: string\n searchFields?: string[]\n defaultOrdering?: string\n defaultFilters?: Record<string, unknown>\n softDelete?: boolean | Record<string, unknown>\n mapListItem?: (item: Record<string, unknown>) => Record<string, unknown>\n mapPayload?: (\n payload: Record<string, unknown>,\n operation: 'create' | 'update',\n ) => Record<string, unknown>\n}\n\nexport interface CreateSupabaseDataProviderOptions {\n client: SupabaseDataProviderClient\n resources?: Record<string, SupabaseResourceConfig | string>\n defaultSelect?: string\n allowedTables?: string[]\n}\n\nfunction normalizeEndpoint(endpoint: string): string {\n return endpoint\n .split('?')[0]\n .replace(/^\\/+|\\/+$/g, '')\n .replace(/^api\\/v\\d+\\//, '')\n}\n\nfunction toResourceConfig(resource: SupabaseResourceConfig | string): SupabaseResourceConfig {\n return typeof resource === 'string' ? { table: resource } : resource\n}\n\nfunction createProviderError(message: string, status = 400) {\n return {\n response: {\n status,\n data: { detail: message },\n },\n message,\n }\n}\n\nfunction assertPlainPayload(payload: Record<string, unknown> | FormData): Record<string, unknown> {\n if (payload instanceof FormData) {\n throw createProviderError(\n 'SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.',\n )\n }\n\n return payload\n}\n\nfunction normalizeSupabaseError(error: SupabaseResult<unknown>['error']): never {\n throw {\n response: {\n data: {\n detail: error?.message ?? 'Erro ao consultar Supabase',\n code: error?.code,\n details: error?.details,\n hint: error?.hint,\n },\n },\n message: error?.message ?? 'Erro ao consultar Supabase',\n }\n}\n\nfunction resolveResource(\n endpoint: string,\n options: CreateSupabaseDataProviderOptions,\n): SupabaseResourceConfig {\n const resourceName = normalizeEndpoint(endpoint)\n const configuredResource = options.resources?.[resourceName]\n\n if (configuredResource) {\n return toResourceConfig(configuredResource)\n }\n\n if (options.allowedTables?.includes(resourceName)) {\n return { table: resourceName }\n }\n\n throw createProviderError(`Recurso Supabase nao registrado para o endpoint \"${endpoint}\".`, 404)\n}\n\nfunction applyFilters<T>(\n query: SupabaseFilterBuilder<T>,\n params: DataProviderListParams,\n resource: SupabaseResourceConfig,\n): SupabaseFilterBuilder<T> {\n const reservedKeys = new Set(['page', 'page_size', 'search', 'ordering'])\n const filters = { ...resource.defaultFilters, ...params }\n\n for (const [key, value] of Object.entries(filters)) {\n if (reservedKeys.has(key) || value === null || value === undefined || value === '') {\n continue\n }\n query = query.eq(key, value)\n }\n\n return query\n}\n\nfunction applySearch<T>(\n query: SupabaseFilterBuilder<T>,\n search: unknown,\n searchFields?: string[],\n): SupabaseFilterBuilder<T> {\n if (typeof search !== 'string' || !search.trim() || !searchFields?.length) {\n return query\n }\n\n const escapedSearch = search.trim().replace(/,/g, '\\\\,')\n const expression = searchFields.map((field) => `${field}.ilike.%${escapedSearch}%`).join(',')\n\n return query.or(expression)\n}\n\nfunction parseOrdering(ordering: unknown, fallback?: string) {\n const value = typeof ordering === 'string' && ordering ? ordering : fallback\n if (!value) return null\n\n return {\n field: value.startsWith('-') ? value.slice(1) : value,\n ascending: !value.startsWith('-'),\n }\n}\n\nfunction mapList<T>(data: T[] | null, resource: SupabaseResourceConfig): T[] {\n if (!data) return []\n if (!resource.mapListItem) return data\n\n return data.map((item) => resource.mapListItem?.(item as Record<string, unknown>)) as T[]\n}\n\nexport function createSupabaseDataProvider(\n options: CreateSupabaseDataProviderOptions,\n): DataProvider {\n const defaultSelect = options.defaultSelect ?? '*'\n\n return {\n async list<T = Record<string, unknown>>(\n endpoint: string,\n params: DataProviderListParams = {},\n ): Promise<DataProviderListResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const page = Math.max(Number(params.page ?? 1), 1)\n const pageSize = Math.max(Number(params.page_size ?? 20), 1)\n const from = (page - 1) * pageSize\n const to = from + pageSize - 1\n\n let query = options.client\n .from(resource.table)\n .select<T[]>(resource.select ?? defaultSelect, { count: 'exact' })\n\n query = applyFilters(query, params, resource)\n query = applySearch(query, params.search, resource.searchFields)\n\n const ordering = parseOrdering(params.ordering, resource.defaultOrdering)\n if (ordering) {\n query = query.order(ordering.field, { ascending: ordering.ascending })\n }\n\n const result = await query.range(from, to)\n if (result.error) normalizeSupabaseError(result.error)\n\n return {\n data: mapList(result.data, resource),\n page,\n page_size: pageSize,\n rows: result.count ?? result.data?.length ?? 0,\n extras: {},\n }\n },\n\n async get<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const result = await options.client\n .from(resource.table)\n .select<T>(resource.select ?? defaultSelect)\n .eq(pk, id)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async create<T = Record<string, unknown>>(\n endpoint: string,\n payload: Record<string, unknown> | FormData,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const plainPayload = assertPlainPayload(payload)\n const mappedPayload = resource.mapPayload\n ? resource.mapPayload(plainPayload, 'create')\n : plainPayload\n const result = await options.client\n .from(resource.table)\n .insert<T>(mappedPayload)\n .select(resource.select ?? defaultSelect)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async update<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n payload: Record<string, unknown> | FormData,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const plainPayload = assertPlainPayload(payload)\n const mappedPayload = resource.mapPayload\n ? resource.mapPayload(plainPayload, 'update')\n : plainPayload\n const result = await options.client\n .from(resource.table)\n .update<T>(mappedPayload)\n .eq(pk, id)\n .select(resource.select ?? defaultSelect)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async delete(endpoint: string, id: string | number): Promise<void> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const softDeletePayload =\n resource.softDelete === true\n ? { is_active: false }\n : typeof resource.softDelete === 'object'\n ? resource.softDelete\n : null\n\n const result = softDeletePayload\n ? await options.client.from(resource.table).update(softDeletePayload).eq(pk, id)\n : await options.client.from(resource.table).delete().eq(pk, id)\n\n if (result.error) normalizeSupabaseError(result.error)\n },\n }\n}\n"],"names":["normalizeListResponse","responseData","fallbackPage","fallbackPageSize","data","createAxiosDataProvider","axios","endpoint","params","response","id","config","payload","WPrimeVuePlugin","app","options","dataProvider","W_AXIOS_KEY","W_DATA_PROVIDER_KEY","W_CONFIG_KEY","WCrudView","WCrudFormDialog","WCrudColumnRenderer","WAutoCompleteFK","WMoneyInput","WTransferList","WTreeSelect","normalizeEndpoint","toResourceConfig","resource","createProviderError","message","status","assertPlainPayload","normalizeSupabaseError","error","resolveResource","resourceName","configuredResource","_a","_b","applyFilters","query","reservedKeys","filters","key","value","applySearch","search","searchFields","escapedSearch","expression","field","parseOrdering","ordering","fallback","mapList","item","createSupabaseDataProvider","defaultSelect","page","pageSize","from","to","result","_config","pk","plainPayload","mappedPayload","softDeletePayload"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/data-providers/axiosDataProvider.ts","../src/plugin.ts","../src/data-providers/supabaseDataProvider.ts"],"sourcesContent":["import type { AxiosInstance } from 'axios'\nimport type {\n DataProvider,\n DataProviderListParams,\n DataProviderListResponse,\n DataProviderRequestConfig,\n DataProviderResponse,\n} from '@/types/dataProvider'\n\nfunction normalizeListResponse<T>(\n responseData: unknown,\n fallbackPage: number,\n fallbackPageSize: number,\n): DataProviderListResponse<T> {\n const data = responseData as Record<string, unknown>\n\n if (Array.isArray(data.results)) {\n return {\n data: data.results as T[],\n page: (data.page as number) ?? fallbackPage,\n page_size: (data.page_size as number) ?? fallbackPageSize,\n rows: (data.count as number) ?? 0,\n extras: (data.extras as Record<string, unknown>) ?? {},\n }\n }\n\n if (Array.isArray(data.data)) {\n return {\n data: data.data as T[],\n page: (data.page as number) ?? fallbackPage,\n page_size: (data.page_size as number) ?? fallbackPageSize,\n rows: (data.rows as number) ?? 0,\n extras: (data.extras as Record<string, unknown>) ?? {},\n }\n }\n\n return {\n data: Array.isArray(responseData) ? (responseData as T[]) : [],\n page: fallbackPage,\n page_size: fallbackPageSize,\n rows: Array.isArray(responseData) ? responseData.length : 0,\n extras: {},\n }\n}\n\nexport function createAxiosDataProvider(axios: AxiosInstance): DataProvider {\n return {\n async list<T = Record<string, unknown>>(\n endpoint: string,\n params: DataProviderListParams = {},\n ): Promise<DataProviderListResponse<T>> {\n const response = await axios.get(endpoint, { params })\n return normalizeListResponse<T>(\n response.data,\n Number(params.page ?? 1),\n Number(params.page_size ?? 20),\n )\n },\n\n async get<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.get<T>(`${endpoint}${id}/`, config)\n return { data: response.data }\n },\n\n async create<T = Record<string, unknown>>(\n endpoint: string,\n payload: Record<string, unknown> | FormData,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.post<T>(endpoint, payload, config)\n return { data: response.data }\n },\n\n async update<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n payload: Record<string, unknown> | FormData,\n config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const response = await axios.patch<T>(`${endpoint}${id}/`, payload, config)\n return { data: response.data }\n },\n\n async delete(endpoint: string, id: string | number): Promise<void> {\n await axios.delete(`${endpoint}${id}/`)\n },\n }\n}\n","import type { App, Plugin } from 'vue'\nimport type { WPluginOptions, WPluginConfig } from './types/plugin'\nimport { W_AXIOS_KEY, W_CONFIG_KEY, W_DATA_PROVIDER_KEY } from './types/plugin'\nimport {\n WCrudView,\n WCrudFormDialog,\n WCrudColumnRenderer,\n WAutoCompleteFK,\n WMoneyInput,\n WTransferList,\n WTreeSelect,\n} from './components'\nimport { createAxiosDataProvider } from './data-providers/axiosDataProvider'\n\nexport const WPrimeVuePlugin: Plugin = {\n install(app: App, options: WPluginOptions) {\n if (!options?.axios && !options?.dataProvider) {\n throw new Error(\n '[wPrimeVueComponents] Informe \"axios\" ou \"dataProvider\" ao registrar o WPrimeVuePlugin.',\n )\n }\n\n const dataProvider = options.dataProvider ?? createAxiosDataProvider(options.axios!)\n\n const config: WPluginConfig = {\n axios: options.axios,\n dataProvider,\n defaultPageSize: options.defaultPageSize ?? 20,\n dateFormat: options.dateFormat ?? 'DD/MM/YYYY',\n dateTimeFormat: options.dateTimeFormat ?? 'DD/MM/YYYY HH:mm',\n locale: options.locale ?? 'pt-BR',\n currency: options.currency ?? 'BRL',\n }\n\n if (options.axios) {\n app.provide(W_AXIOS_KEY, options.axios)\n }\n app.provide(W_DATA_PROVIDER_KEY, dataProvider)\n app.provide(W_CONFIG_KEY, config)\n\n if (options.registerComponents !== false) {\n app.component('WCrudView', WCrudView)\n app.component('WCrudFormDialog', WCrudFormDialog)\n app.component('WCrudColumnRenderer', WCrudColumnRenderer)\n app.component('WAutoCompleteFK', WAutoCompleteFK)\n app.component('WMoneyInput', WMoneyInput)\n app.component('WTransferList', WTransferList)\n app.component('WTreeSelect', WTreeSelect)\n }\n },\n}\n","import type {\n DataProvider,\n DataProviderListParams,\n DataProviderListResponse,\n DataProviderRequestConfig,\n DataProviderResponse,\n} from '@/types/dataProvider'\n\ntype SupabaseResult<T> = {\n data: T | null\n error: {\n message: string\n code?: string\n details?: string\n hint?: string\n } | null\n count?: number | null\n}\n\ntype SupabaseFilterBuilder<T> = PromiseLike<SupabaseResult<T>> & {\n select(\n columns?: string,\n options?: { count?: 'exact' | 'planned' | 'estimated' },\n ): SupabaseFilterBuilder<T>\n eq(column: string, value: unknown): SupabaseFilterBuilder<T>\n ilike(column: string, pattern: string): SupabaseFilterBuilder<T>\n or(filters: string): SupabaseFilterBuilder<T>\n order(column: string, options?: { ascending?: boolean }): SupabaseFilterBuilder<T>\n range(from: number, to: number): SupabaseFilterBuilder<T>\n single(): Promise<SupabaseResult<T>>\n}\n\ntype SupabaseTable = {\n select<T = unknown>(\n columns?: string,\n options?: { count?: 'exact' | 'planned' | 'estimated' },\n ): SupabaseFilterBuilder<T>\n insert<T = unknown>(payload: unknown): SupabaseFilterBuilder<T>\n update<T = unknown>(payload: unknown): SupabaseFilterBuilder<T>\n delete<T = unknown>(): SupabaseFilterBuilder<T>\n}\n\nexport interface SupabaseDataProviderClient {\n from(table: string): SupabaseTable\n}\n\nexport interface SupabaseResourceConfig {\n table: string\n pk?: string\n select?: string\n searchFields?: string[]\n defaultOrdering?: string\n defaultFilters?: Record<string, unknown>\n softDelete?: boolean | Record<string, unknown>\n mapListItem?: (item: Record<string, unknown>) => Record<string, unknown>\n mapPayload?: (\n payload: Record<string, unknown>,\n operation: 'create' | 'update',\n ) => Record<string, unknown>\n}\n\nexport interface CreateSupabaseDataProviderOptions {\n client: SupabaseDataProviderClient\n resources?: Record<string, SupabaseResourceConfig | string>\n defaultSelect?: string\n allowedTables?: string[]\n}\n\nfunction normalizeEndpoint(endpoint: string): string {\n return endpoint\n .split('?')[0]\n .replace(/^\\/+|\\/+$/g, '')\n .replace(/^api\\/v\\d+\\//, '')\n}\n\nfunction toResourceConfig(resource: SupabaseResourceConfig | string): SupabaseResourceConfig {\n return typeof resource === 'string' ? { table: resource } : resource\n}\n\nfunction createProviderError(message: string, status = 400) {\n return {\n response: {\n status,\n data: { detail: message },\n },\n message,\n }\n}\n\nfunction assertPlainPayload(payload: Record<string, unknown> | FormData): Record<string, unknown> {\n if (payload instanceof FormData) {\n throw createProviderError(\n 'SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload.',\n )\n }\n\n return payload\n}\n\nfunction normalizeSupabaseError(error: SupabaseResult<unknown>['error']): never {\n throw {\n response: {\n data: {\n detail: error?.message ?? 'Erro ao consultar Supabase',\n code: error?.code,\n details: error?.details,\n hint: error?.hint,\n },\n },\n message: error?.message ?? 'Erro ao consultar Supabase',\n }\n}\n\nfunction resolveResource(\n endpoint: string,\n options: CreateSupabaseDataProviderOptions,\n): SupabaseResourceConfig {\n const resourceName = normalizeEndpoint(endpoint)\n const configuredResource = options.resources?.[resourceName]\n\n if (configuredResource) {\n return toResourceConfig(configuredResource)\n }\n\n if (options.allowedTables?.includes(resourceName)) {\n return { table: resourceName }\n }\n\n throw createProviderError(`Recurso Supabase nao registrado para o endpoint \"${endpoint}\".`, 404)\n}\n\nfunction applyFilters<T>(\n query: SupabaseFilterBuilder<T>,\n params: DataProviderListParams,\n resource: SupabaseResourceConfig,\n): SupabaseFilterBuilder<T> {\n const reservedKeys = new Set(['page', 'page_size', 'search', 'ordering'])\n const filters = { ...resource.defaultFilters, ...params }\n\n for (const [key, value] of Object.entries(filters)) {\n if (reservedKeys.has(key) || value === null || value === undefined || value === '') {\n continue\n }\n query = query.eq(key, value)\n }\n\n return query\n}\n\nfunction applySearch<T>(\n query: SupabaseFilterBuilder<T>,\n search: unknown,\n searchFields?: string[],\n): SupabaseFilterBuilder<T> {\n if (typeof search !== 'string' || !search.trim() || !searchFields?.length) {\n return query\n }\n\n const escapedSearch = search.trim().replace(/,/g, '\\\\,')\n const expression = searchFields.map((field) => `${field}.ilike.%${escapedSearch}%`).join(',')\n\n return query.or(expression)\n}\n\nfunction parseOrdering(ordering: unknown, fallback?: string) {\n const value = typeof ordering === 'string' && ordering ? ordering : fallback\n if (!value) return null\n\n return {\n field: value.startsWith('-') ? value.slice(1) : value,\n ascending: !value.startsWith('-'),\n }\n}\n\nfunction mapList<T>(data: T[] | null, resource: SupabaseResourceConfig): T[] {\n if (!data) return []\n if (!resource.mapListItem) return data\n\n return data.map((item) => resource.mapListItem?.(item as Record<string, unknown>)) as T[]\n}\n\nexport function createSupabaseDataProvider(\n options: CreateSupabaseDataProviderOptions,\n): DataProvider {\n const defaultSelect = options.defaultSelect ?? '*'\n\n return {\n async list<T = Record<string, unknown>>(\n endpoint: string,\n params: DataProviderListParams = {},\n ): Promise<DataProviderListResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const page = Math.max(Number(params.page ?? 1), 1)\n const pageSize = Math.max(Number(params.page_size ?? 20), 1)\n const from = (page - 1) * pageSize\n const to = from + pageSize - 1\n\n let query = options.client\n .from(resource.table)\n .select<T[]>(resource.select ?? defaultSelect, { count: 'exact' })\n\n query = applyFilters(query, params, resource)\n query = applySearch(query, params.search, resource.searchFields)\n\n const ordering = parseOrdering(params.ordering, resource.defaultOrdering)\n if (ordering) {\n query = query.order(ordering.field, { ascending: ordering.ascending })\n }\n\n const result = await query.range(from, to)\n if (result.error) normalizeSupabaseError(result.error)\n\n return {\n data: mapList(result.data, resource),\n page,\n page_size: pageSize,\n rows: result.count ?? result.data?.length ?? 0,\n extras: {},\n }\n },\n\n async get<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const result = await options.client\n .from(resource.table)\n .select<T>(resource.select ?? defaultSelect)\n .eq(pk, id)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async create<T = Record<string, unknown>>(\n endpoint: string,\n payload: Record<string, unknown> | FormData,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const plainPayload = assertPlainPayload(payload)\n const mappedPayload = resource.mapPayload\n ? resource.mapPayload(plainPayload, 'create')\n : plainPayload\n const result = await options.client\n .from(resource.table)\n .insert<T>(mappedPayload)\n .select(resource.select ?? defaultSelect)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async update<T = Record<string, unknown>>(\n endpoint: string,\n id: string | number,\n payload: Record<string, unknown> | FormData,\n _config?: DataProviderRequestConfig,\n ): Promise<DataProviderResponse<T>> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const plainPayload = assertPlainPayload(payload)\n const mappedPayload = resource.mapPayload\n ? resource.mapPayload(plainPayload, 'update')\n : plainPayload\n const result = await options.client\n .from(resource.table)\n .update<T>(mappedPayload)\n .eq(pk, id)\n .select(resource.select ?? defaultSelect)\n .single()\n\n if (result.error) normalizeSupabaseError(result.error)\n return { data: result.data as T }\n },\n\n async delete(endpoint: string, id: string | number): Promise<void> {\n const resource = resolveResource(endpoint, options)\n const pk = resource.pk ?? 'id'\n const softDeletePayload =\n resource.softDelete === true\n ? { is_active: false }\n : typeof resource.softDelete === 'object'\n ? resource.softDelete\n : null\n\n const result = softDeletePayload\n ? await options.client.from(resource.table).update(softDeletePayload).eq(pk, id)\n : await options.client.from(resource.table).delete().eq(pk, id)\n\n if (result.error) normalizeSupabaseError(result.error)\n },\n }\n}\n"],"names":["normalizeListResponse","responseData","fallbackPage","fallbackPageSize","data","createAxiosDataProvider","axios","endpoint","params","response","id","config","payload","WPrimeVuePlugin","app","options","dataProvider","W_AXIOS_KEY","W_DATA_PROVIDER_KEY","W_CONFIG_KEY","WCrudView","WCrudFormDialog","WCrudColumnRenderer","WAutoCompleteFK","WMoneyInput","WTransferList","WTreeSelect","normalizeEndpoint","toResourceConfig","resource","createProviderError","message","status","assertPlainPayload","normalizeSupabaseError","error","resolveResource","resourceName","configuredResource","_a","_b","applyFilters","query","reservedKeys","filters","key","value","applySearch","search","searchFields","escapedSearch","expression","field","parseOrdering","ordering","fallback","mapList","item","createSupabaseDataProvider","defaultSelect","page","pageSize","from","to","result","_config","pk","plainPayload","mappedPayload","softDeletePayload"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export { WPrimeVuePlugin } from './plugin';
|
|
2
|
-
export { WCrudView, WCrudFormDialog, WCrudColumnRenderer, WAutoCompleteFK, WFormRenderer, WDatePicker, WDateRange, WMoneyInput, WTransferList, WTreeSelect, WStatusTag, WPageHeader, WDetailHeader, WEmptyState, WInfoCard, WKpiCard, WKpiGrid, WSectionHeader, WFormSection, WActionBar, WProgressFlow, } from './components';
|
|
2
|
+
export { WCrudView, WCrudFormDialog, WCrudColumnRenderer, WEditableTable, WAutoCompleteFK, WFormRenderer, WDatePicker, WDateRange, WFileUpload, WImageCropper, WMoneyInput, WTransferList, WTreeSelect, WStatusTag, WPageHeader, WDetailHeader, WEmptyState, WInfoCard, WKpiCard, WKpiGrid, WSectionHeader, WFormSection, WActionBar, WProgressFlow, WStepFlow, WStepSection, WCheckList, WMapSelect, } from './components';
|
|
3
3
|
export { useCrudManager, useApi, useAppToast, useAppConfirm, useApiError, extractApiError, useFormatters, useDateInput, } from './composables';
|
|
4
4
|
export type { DateValueFormat } from './composables';
|
|
5
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';
|
|
6
|
+
export type { PaginatedResponse, PaginationState, SortState, UseApiOptions, UseApiReturn, ColumnDef, ColumnType, FieldDef, FieldType, SelectOption, EditableColumnDef, EditableColumnEditor, EditableRow, CheckListItem, CheckListLevel, MapSelectFeature, MapSelectGeometry, MapSelectId, MapSelectPolygonStyle, MapSelectPosition, RowAction, CrudLabels, KpiItem, CrudManagerConfig, CrudManagerReturn, WPluginOptions, WPluginConfig, DataProvider, DataProviderListParams, DataProviderListResponse, DataProviderRequestConfig, DataProviderResponse, } from './types';
|
|
7
7
|
export type { StatusMapping } from './components/ui/WStatusTag.vue';
|
|
8
8
|
export type { InfoField } from './components/ui/WInfoCard.vue';
|
|
9
|
+
export type { StepFlowContext, StepFlowOrientation } from './utils/stepFlow';
|
|
10
|
+
export { W_STEP_FLOW_KEY } from './utils/stepFlow';
|
|
9
11
|
export type { CreateSupabaseDataProviderOptions, SupabaseDataProviderClient, SupabaseResourceConfig, } from './data-providers';
|
|
10
12
|
export { DEFAULT_CRUD_LABELS, W_AXIOS_KEY, W_CONFIG_KEY, W_DATA_PROVIDER_KEY } from './types';
|
|
11
13
|
export type { ApiFieldMeta } from './utils/fieldMapper';
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { b as
|
|
2
|
-
import {
|
|
3
|
-
import { _ as
|
|
4
|
-
import { u as
|
|
5
|
-
import { e as
|
|
6
|
-
import { DEFAULT_CRUD_LABELS as
|
|
7
|
-
function
|
|
1
|
+
import { b as y, W as _, a as w } from "./plugin-BKa0eSEM.js";
|
|
2
|
+
import { e as A, d as P, c as C, a as S, r as F, y as v, z as D } from "./WMapSelect.vue_vue_type_script_setup_true_lang-BOhO1F9v.js";
|
|
3
|
+
import { _ as O, b as N, f as V, g as q, h as B, i as H, j, k as U, l as G, m as X, W as J, n as Q, o as Z, p as ee, q as ae, s as te, t as re, u as se, v as ne, w as oe, x as ie, A as ce, B as le, C as ue, D as de, E as fe, F as me, G as pe } from "./WMapSelect.vue_vue_type_script_setup_true_lang-BOhO1F9v.js";
|
|
4
|
+
import { u as We, a as ye } from "./useApi-BsrLTNwE.js";
|
|
5
|
+
import { e as we, u as Ae, a as Pe, b as Ce, c as Se, f as Fe } from "./useFormKeyboardNav-D4Irq5RE.js";
|
|
6
|
+
import { DEFAULT_CRUD_LABELS as De } from "./types.js";
|
|
7
|
+
function b(e, a, t) {
|
|
8
8
|
const r = e;
|
|
9
9
|
return Array.isArray(r.results) ? {
|
|
10
10
|
data: r.results,
|
|
@@ -26,11 +26,11 @@ function S(e, a, t) {
|
|
|
26
26
|
extras: {}
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
function
|
|
29
|
+
function x(e) {
|
|
30
30
|
return {
|
|
31
31
|
async list(a, t = {}) {
|
|
32
32
|
const r = await e.get(a, { params: t });
|
|
33
|
-
return
|
|
33
|
+
return b(
|
|
34
34
|
r.data,
|
|
35
35
|
Number(t.page ?? 1),
|
|
36
36
|
Number(t.page_size ?? 20)
|
|
@@ -56,7 +56,7 @@ const I = {
|
|
|
56
56
|
throw new Error(
|
|
57
57
|
'[wPrimeVueComponents] Informe "axios" ou "dataProvider" ao registrar o WPrimeVuePlugin.'
|
|
58
58
|
);
|
|
59
|
-
const t = a.dataProvider ??
|
|
59
|
+
const t = a.dataProvider ?? x(a.axios), r = {
|
|
60
60
|
axios: a.axios,
|
|
61
61
|
dataProvider: t,
|
|
62
62
|
defaultPageSize: a.defaultPageSize ?? 20,
|
|
@@ -65,16 +65,16 @@ const I = {
|
|
|
65
65
|
locale: a.locale ?? "pt-BR",
|
|
66
66
|
currency: a.currency ?? "BRL"
|
|
67
67
|
};
|
|
68
|
-
a.axios && e.provide(
|
|
68
|
+
a.axios && e.provide(y, a.axios), e.provide(_, t), e.provide(w, r), a.registerComponents !== !1 && (e.component("WCrudView", A), e.component("WCrudFormDialog", P), e.component("WCrudColumnRenderer", C), e.component("WAutoCompleteFK", S), e.component("WMoneyInput", F), e.component("WTransferList", v), e.component("WTreeSelect", D));
|
|
69
69
|
}
|
|
70
70
|
};
|
|
71
|
-
function
|
|
71
|
+
function E(e) {
|
|
72
72
|
return e.split("?")[0].replace(/^\/+|\/+$/g, "").replace(/^api\/v\d+\//, "");
|
|
73
73
|
}
|
|
74
|
-
function
|
|
74
|
+
function T(e) {
|
|
75
75
|
return typeof e == "string" ? { table: e } : e;
|
|
76
76
|
}
|
|
77
|
-
function
|
|
77
|
+
function W(e, a = 400) {
|
|
78
78
|
return {
|
|
79
79
|
response: {
|
|
80
80
|
status: a,
|
|
@@ -85,7 +85,7 @@ function y(e, a = 400) {
|
|
|
85
85
|
}
|
|
86
86
|
function g(e) {
|
|
87
87
|
if (e instanceof FormData)
|
|
88
|
-
throw
|
|
88
|
+
throw W(
|
|
89
89
|
"SupabaseDataProvider nao envia FormData diretamente. Faça upload do arquivo no Storage e envie a URL/caminho no payload."
|
|
90
90
|
);
|
|
91
91
|
return e;
|
|
@@ -105,26 +105,26 @@ function f(e) {
|
|
|
105
105
|
}
|
|
106
106
|
function m(e, a) {
|
|
107
107
|
var s, n;
|
|
108
|
-
const t =
|
|
108
|
+
const t = E(e), r = (s = a.resources) == null ? void 0 : s[t];
|
|
109
109
|
if (r)
|
|
110
|
-
return
|
|
110
|
+
return T(r);
|
|
111
111
|
if ((n = a.allowedTables) != null && n.includes(t))
|
|
112
112
|
return { table: t };
|
|
113
|
-
throw
|
|
113
|
+
throw W(`Recurso Supabase nao registrado para o endpoint "${e}".`, 404);
|
|
114
114
|
}
|
|
115
|
-
function
|
|
115
|
+
function h(e, a, t) {
|
|
116
116
|
const r = /* @__PURE__ */ new Set(["page", "page_size", "search", "ordering"]), s = { ...t.defaultFilters, ...a };
|
|
117
117
|
for (const [n, o] of Object.entries(s))
|
|
118
118
|
r.has(n) || o === null || o === void 0 || o === "" || (e = e.eq(n, o));
|
|
119
119
|
return e;
|
|
120
120
|
}
|
|
121
|
-
function
|
|
121
|
+
function $(e, a, t) {
|
|
122
122
|
if (typeof a != "string" || !a.trim() || !(t != null && t.length))
|
|
123
123
|
return e;
|
|
124
124
|
const r = a.trim().replace(/,/g, "\\,"), s = t.map((n) => `${n}.ilike.%${r}%`).join(",");
|
|
125
125
|
return e.or(s);
|
|
126
126
|
}
|
|
127
|
-
function
|
|
127
|
+
function R(e, a) {
|
|
128
128
|
const t = typeof e == "string" && e ? e : a;
|
|
129
129
|
return t ? {
|
|
130
130
|
field: t.startsWith("-") ? t.slice(1) : t,
|
|
@@ -144,8 +144,8 @@ function M(e) {
|
|
|
144
144
|
var p;
|
|
145
145
|
const s = m(t, e), n = Math.max(Number(r.page ?? 1), 1), o = Math.max(Number(r.page_size ?? 20), 1), i = (n - 1) * o, l = i + o - 1;
|
|
146
146
|
let c = e.client.from(s.table).select(s.select ?? a, { count: "exact" });
|
|
147
|
-
c =
|
|
148
|
-
const u =
|
|
147
|
+
c = h(c, r, s), c = $(c, r.search, s.searchFields);
|
|
148
|
+
const u = R(r.ordering, s.defaultOrdering);
|
|
149
149
|
u && (c = c.order(u.field, { ascending: u.ascending }));
|
|
150
150
|
const d = await c.range(i, l);
|
|
151
151
|
return d.error && f(d.error), {
|
|
@@ -175,47 +175,55 @@ function M(e) {
|
|
|
175
175
|
};
|
|
176
176
|
}
|
|
177
177
|
export {
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
178
|
+
De as DEFAULT_CRUD_LABELS,
|
|
179
|
+
O as WActionBar,
|
|
180
|
+
S as WAutoCompleteFK,
|
|
181
|
+
N as WCheckList,
|
|
182
|
+
C as WCrudColumnRenderer,
|
|
182
183
|
P as WCrudFormDialog,
|
|
183
184
|
A as WCrudView,
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
H as
|
|
188
|
-
j as
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
185
|
+
V as WDatePicker,
|
|
186
|
+
q as WDateRange,
|
|
187
|
+
B as WDetailHeader,
|
|
188
|
+
H as WEditableTable,
|
|
189
|
+
j as WEmptyState,
|
|
190
|
+
U as WFileUpload,
|
|
191
|
+
G as WFormRenderer,
|
|
192
|
+
X as WFormSection,
|
|
193
|
+
J as WImageCropper,
|
|
194
|
+
Q as WInfoCard,
|
|
195
|
+
Z as WKpiCard,
|
|
196
|
+
ee as WKpiGrid,
|
|
197
|
+
ae as WMapSelect,
|
|
198
|
+
F as WMoneyInput,
|
|
199
|
+
te as WPageHeader,
|
|
195
200
|
I as WPrimeVuePlugin,
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
re as WProgressFlow,
|
|
202
|
+
se as WSectionHeader,
|
|
203
|
+
ne as WStatusTag,
|
|
204
|
+
oe as WStepFlow,
|
|
205
|
+
ie as WStepSection,
|
|
206
|
+
v as WTransferList,
|
|
207
|
+
D as WTreeSelect,
|
|
208
|
+
y as W_AXIOS_KEY,
|
|
202
209
|
w as W_CONFIG_KEY,
|
|
203
|
-
|
|
204
|
-
|
|
210
|
+
_ as W_DATA_PROVIDER_KEY,
|
|
211
|
+
ce as W_STEP_FLOW_KEY,
|
|
212
|
+
x as createAxiosDataProvider,
|
|
205
213
|
M as createSupabaseDataProvider,
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
214
|
+
le as downloadCsv,
|
|
215
|
+
we as extractApiError,
|
|
216
|
+
ue as mapApiFieldToColumnDef,
|
|
217
|
+
de as mapApiFieldToFieldDef,
|
|
218
|
+
fe as mapApiFieldsToColumnDefs,
|
|
219
|
+
me as mapApiFieldsToFieldDefs,
|
|
220
|
+
pe as toCsv,
|
|
221
|
+
We as useApi,
|
|
222
|
+
Ae as useApiError,
|
|
223
|
+
Pe as useAppConfirm,
|
|
224
|
+
Ce as useAppToast,
|
|
225
|
+
ye as useCrudManager,
|
|
226
|
+
Se as useDateInput,
|
|
227
|
+
Fe as useFormatters
|
|
220
228
|
};
|
|
221
229
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
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;flex-wrap:wrap;align-items:center;gap:.75rem;min-width:0;flex:1 1 auto}.w-crud-toolbar-end{display:flex;flex-wrap:wrap;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;min-width:0}.w-autocompletefk .p-autocomplete-input{padding-right:2.5rem}.w-autocompletefk .p-autocomplete-input-multiple{padding-right:2.5rem;min-width:0;max-height:7rem;overflow-y:auto}.w-autocompletefk .p-autocomplete-chip-item{max-width:var(--w-fk-chip-max, 100%);min-width:min(100%,6rem)}.w-autocompletefk .p-autocomplete-chip{max-width:100%;min-width:0}.w-autocompletefk .p-autocomplete-chip .p-chip-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-autocompletefk .p-autocomplete-input-chip{flex:1 1 2rem;min-width:2rem}.w-autocompletefk .w-autocompletefk-chip{cursor:pointer}.w-autocompletefk .p-autocomplete-chip-item:has(>.w-autocompletefk-chip-hidden){display:none}.w-autocompletefk .w-autocompletefk-chip-more{font-variant-numeric:tabular-nums}.w-autocompletefk .p-autocomplete-chip-item:has(>.w-autocompletefk-chip-more){min-width:0;flex:0 0 auto}.w-autocompletefk-clear{position:absolute;right:2.25rem;top:0;bottom:0;width:1.75rem;display:flex;align-items:center;justify-content:center;color:var(--p-text-muted-color);cursor:pointer;border:none;background:transparent;transition:color .15s;font-size:.75rem}.w-autocompletefk-clear:hover{color:var(--p-primary-color)}.w-autocompletefk-clear i{font-size:.75rem}.w-autocompletefk-has-clear .p-autocomplete-input,.w-autocompletefk-has-clear .p-autocomplete-input-multiple{padding-right:4.25rem}.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;transition:color .15s;font-size:.875rem}.w-autocompletefk-trigger:hover{color:var(--p-primary-color)}.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(280px,1fr));gap:1rem;align-items:start}.w-crud-cards--bare{grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}.w-crud-card-bare{min-width:0}.w-crud-card{display:flex;flex-direction:column;gap:.625rem;padding:1.25rem;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}.w-tree-select{display:flex;flex-direction:column;gap:var(--field-gap, .375rem);border:1px solid var(--border, var(--p-content-border-color));border-radius:var(--radius-lg, .75rem);background:var(--surface, var(--p-content-background));padding:var(--control-px, .625rem);min-width:0}.w-tree-select--disabled{opacity:.6;pointer-events:none}.w-tree-select__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2, .5rem);min-height:var(--control-h-sm, 2rem)}.w-tree-select__count{font-size:var(--text-2xs, .6875rem);font-weight:var(--fw-medium, 600);text-transform:uppercase;letter-spacing:.04em;color:var(--fg-muted, var(--p-text-muted-color))}.w-tree-select__actions{display:flex;align-items:center;gap:var(--space-1, .25rem);flex-shrink:0}.w-tree-select__actions .p-button{padding:0 var(--space-2, .5rem);height:var(--control-h-sm, 2rem);font-size:var(--text-xs, .75rem);font-weight:var(--fw-medium, 500)}.w-tree-select__filter{width:100%}.w-tree-select__tree{max-height:var(--w-tree-select-max-h, 18rem);overflow-y:auto;padding:0;border:0;background:transparent;font-size:var(--ui-font, .8125rem)}.w-tree-select__tree.p-tree{border:0;background:transparent;padding:0}.w-tree-select__tree .p-tree-node-content{border-radius:var(--radius-sm, .5rem);padding:var(--space-1, .25rem) var(--space-2, .5rem);transition:background-color var(--motion-fast, .12s) var(--ease, ease)}.w-tree-select__tree .p-tree-node-content:hover{background:var(--surface-2, var(--p-content-hover-background))}.w-tree-select__tree .p-tree-node-label{color:var(--fg, var(--p-text-color));min-width:0;overflow-wrap:anywhere}.w-tree-select__tree .p-tree-node[aria-level="1"]>.p-tree-node-content .p-tree-node-label{font-weight:var(--fw-medium, 500)}.w-tree-select__empty{padding:var(--space-3, .75rem) var(--space-2, .5rem);text-align:center;font-size:var(--text-xs, .75rem);color:var(--fg-muted, var(--p-text-muted-color))}@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}}.w-datepicker,.w-datepicker .p-iconfield{width:100%}.w-datepicker-icon{cursor:pointer;color:var(--p-text-muted-color);transition:color .15s}.w-datepicker-icon:hover{color:var(--p-primary-color)}.w-datepicker-icon-disabled{opacity:.4;cursor:default;pointer-events:none}.w-datepicker-panel{display:flex;flex-direction:column;gap:.5rem}.w-datepicker-actions{display:flex;justify-content:space-between;gap:.5rem;border-top:1px solid var(--p-content-border-color);padding-top:.5rem}
|
|
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}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.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;flex-wrap:wrap;align-items:center;gap:.75rem;min-width:0;flex:1 1 auto}.w-crud-toolbar-end{display:flex;flex-wrap:wrap;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;min-width:0}.w-autocompletefk .p-autocomplete-input{padding-right:2.5rem}.w-autocompletefk .p-autocomplete-input-multiple{padding-right:2.5rem;min-width:0;max-height:7rem;overflow-y:auto}.w-autocompletefk .p-autocomplete-chip-item{max-width:var(--w-fk-chip-max, 100%);min-width:min(100%,6rem)}.w-autocompletefk .p-autocomplete-chip{max-width:100%;min-width:0}.w-fk-option{display:flex;flex-direction:column;gap:.125rem;min-width:0}.w-fk-option__label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-fk-option__desc{font-size:var(--text-xs, .75rem);color:var(--fg-muted, #64748b);font-variant-numeric:tabular-nums}.w-autocompletefk .p-autocomplete-chip .p-chip-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-autocompletefk .p-autocomplete-input-chip{flex:1 1 2rem;min-width:2rem}.w-autocompletefk .w-autocompletefk-chip{cursor:pointer}.w-autocompletefk .p-autocomplete-chip-item:has(>.w-autocompletefk-chip-hidden){display:none}.w-autocompletefk .w-autocompletefk-chip-more{font-variant-numeric:tabular-nums}.w-autocompletefk .p-autocomplete-chip-item:has(>.w-autocompletefk-chip-more){min-width:0;flex:0 0 auto}.w-autocompletefk-clear{position:absolute;right:2.25rem;top:0;bottom:0;width:1.75rem;display:flex;align-items:center;justify-content:center;color:var(--p-text-muted-color);cursor:pointer;border:none;background:transparent;transition:color .15s;font-size:.75rem}.w-autocompletefk-clear:hover{color:var(--p-primary-color)}.w-autocompletefk-clear i{font-size:.75rem}.w-autocompletefk-has-clear .p-autocomplete-input,.w-autocompletefk-has-clear .p-autocomplete-input-multiple{padding-right:4.25rem}.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;transition:color .15s;font-size:.875rem}.w-autocompletefk-trigger:hover{color:var(--p-primary-color)}.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(280px,1fr));gap:1rem;align-items:start}.w-crud-cards--bare{grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}.w-crud-card-bare{min-width:0}.w-crud-card{display:flex;flex-direction:column;gap:.625rem;padding:1.25rem;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}.w-tree-select{display:flex;flex-direction:column;gap:var(--field-gap, .375rem);border:1px solid var(--border, var(--p-content-border-color));border-radius:var(--radius-lg, .75rem);background:var(--surface, var(--p-content-background));padding:var(--control-px, .625rem);min-width:0}.w-tree-select--disabled{opacity:.6;pointer-events:none}.w-tree-select__head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2, .5rem);min-height:var(--control-h-sm, 2rem)}.w-tree-select__count{font-size:var(--text-2xs, .6875rem);font-weight:var(--fw-medium, 600);text-transform:uppercase;letter-spacing:.04em;color:var(--fg-muted, var(--p-text-muted-color))}.w-tree-select__actions{display:flex;align-items:center;gap:var(--space-1, .25rem);flex-shrink:0}.w-tree-select__actions .p-button{padding:0 var(--space-2, .5rem);height:var(--control-h-sm, 2rem);font-size:var(--text-xs, .75rem);font-weight:var(--fw-medium, 500)}.w-tree-select__filter{width:100%}.w-tree-select__tree{max-height:var(--w-tree-select-max-h, 18rem);overflow-y:auto;padding:0;border:0;background:transparent;font-size:var(--ui-font, .8125rem)}.w-tree-select__tree.p-tree{border:0;background:transparent;padding:0}.w-tree-select__tree .p-tree-node-content{border-radius:var(--radius-sm, .5rem);padding:var(--space-1, .25rem) var(--space-2, .5rem);transition:background-color var(--motion-fast, .12s) var(--ease, ease)}.w-tree-select__tree .p-tree-node-content:hover{background:var(--surface-2, var(--p-content-hover-background))}.w-tree-select__tree .p-tree-node-label{color:var(--fg, var(--p-text-color));min-width:0;overflow-wrap:anywhere}.w-tree-select__tree .p-tree-node[aria-level="1"]>.p-tree-node-content .p-tree-node-label{font-weight:var(--fw-medium, 500)}.w-tree-select__empty{padding:var(--space-3, .75rem) var(--space-2, .5rem);text-align:center;font-size:var(--text-xs, .75rem);color:var(--fg-muted, var(--p-text-muted-color))}@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}}.w-info-card-metrics{display:flex;flex-direction:column}.w-info-card-metric{display:flex;align-items:baseline;gap:var(--space-2, .625rem);padding:var(--space-3, .75rem) 0;border-top:1px solid var(--border, var(--p-content-border-color))}.w-info-card-metric:first-child{border-top:0;padding-top:0}.w-info-card-metric:last-child{padding-bottom:0}.w-info-card-metric-label{font-size:var(--text-sm, .8125rem);font-weight:var(--fw-regular, 400);color:var(--fg-muted, var(--p-text-muted-color));min-width:0}.w-info-card-metric-value{margin-left:auto;font-size:var(--text-xl, 1.25rem);font-weight:var(--fw-bold, 700);line-height:1;color:var(--fg, var(--p-text-color));font-variant-numeric:tabular-nums}.w-info-card-metric-suffix{font-size:var(--text-sm, .8125rem);color:var(--fg-muted, var(--p-text-muted-color))}.w-check-list{border:1px solid var(--border, var(--p-content-border-color));border-radius:var(--radius-lg, .75rem);background:var(--surface, var(--p-content-background));overflow:hidden}.w-check-list__header{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-3, .8125rem) var(--space-4, 1rem);border-bottom:1px solid var(--border, var(--p-content-border-color))}.w-check-list__title{font-size:var(--text-2xs, .6875rem);font-weight:var(--fw-bold, 700);text-transform:uppercase;letter-spacing:.05em;color:var(--fg-muted, var(--p-text-muted-color))}.w-check-list__count{margin-left:auto;display:inline-flex;align-items:center;height:1.25rem;padding:0 var(--space-2, .5rem);border-radius:var(--radius-full, 999px);background:var(--surface-3, var(--p-content-hover-background));color:var(--fg-muted, var(--p-text-muted-color));font-size:var(--text-2xs, .6875rem);font-weight:var(--fw-bold, 700);font-variant-numeric:tabular-nums}.w-check-list__items{list-style:none;margin:0;padding:var(--space-2, .5rem) 0}.w-check-list__item{display:flex;align-items:flex-start;gap:var(--space-2, .5625rem);padding:var(--space-2, .5rem) var(--space-4, 1rem)}.w-check-list__item i{font-size:var(--text-sm, .8125rem);margin-top:.125rem;flex-shrink:0}.w-check-list__icon--ok{color:var(--success, var(--p-green-500, #22c55e))}.w-check-list__icon--warn{color:var(--warning, var(--p-yellow-500, #eab308))}.w-check-list__icon--bad{color:var(--danger, var(--p-red-500, #ef4444))}.w-check-list__label{min-width:0;font-size:var(--text-sm, .8125rem);line-height:1.4;color:var(--fg, var(--p-text-color))}.w-check-list__empty{padding:var(--space-4, 1rem);font-size:var(--text-xs, .75rem);color:var(--fg-muted, var(--p-text-muted-color))}.w-step-flow,.w-step-flow--vertical{display:flex;flex-direction:column}.w-step-section{display:flex;align-items:stretch;gap:var(--space-4, 1rem);min-width:0}.w-step-section__rail{flex:none;width:1.875rem;display:flex;flex-direction:column;align-items:center;gap:var(--space-2, .5rem)}.w-step-section__badge{display:grid;place-items:center;width:1.875rem;height:1.875rem;flex:none;border-radius:var(--radius-full, 999px);border:1px solid var(--border-strong, var(--p-content-border-color));background:var(--surface, var(--p-content-background));color:var(--fg-subtle, var(--p-text-muted-color));font-size:var(--text-xs, .75rem);font-weight:var(--fw-bold, 700);font-variant-numeric:tabular-nums}.w-step-section__badge--on{border-color:transparent;background:var(--primary, var(--p-primary-color));color:var(--primary-fg, var(--p-primary-contrast-color, #fff))}.w-step-section__line{flex:1;width:2px;border-radius:2px;background:var(--border, var(--p-content-border-color))}.w-step-section__body{flex:1;min-width:0;padding-bottom:var(--space-5, 1.25rem)}.w-step-flow--vertical>.w-step-section:last-child .w-step-section__line{display:none}.w-step-flow--vertical>.w-step-section:last-child .w-step-section__body{padding-bottom:0}.w-step-section__card{border:1px solid var(--border, var(--p-content-border-color));border-radius:var(--radius-lg, .75rem);background:var(--surface, var(--p-content-background));overflow:hidden}.w-step-section__header{display:flex;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-3, .875rem) var(--card-pad, 1.25rem)}.w-step-section__trigger{display:flex;align-items:center;gap:var(--space-2, .625rem);flex:1;min-width:0;padding:0;border:0;background:transparent;font-family:inherit;text-align:left;cursor:pointer}.w-step-section__trigger:disabled{cursor:default;opacity:.6}.w-step-section__chevron{flex:none;font-size:var(--text-xs, .6875rem);color:var(--fg-subtle, var(--p-text-muted-color))}.w-step-section__title{margin:0;font-size:var(--text-lg, 1.0625rem);font-weight:var(--fw-medium, 600);letter-spacing:-.01em;color:var(--fg, var(--p-text-color))}.w-step-section__count{display:inline-flex;align-items:center;height:1.375rem;flex:none;padding:0 var(--space-2, .5625rem);border-radius:var(--radius-full, 999px);background:var(--surface-3, var(--p-content-hover-background));color:var(--fg-muted, var(--p-text-muted-color));font-size:var(--text-2xs, .6875rem);font-weight:var(--fw-bold, 700);font-variant-numeric:tabular-nums}.w-step-section__summary{min-width:0;font-size:var(--text-sm, .8125rem);color:var(--fg-muted, var(--p-text-muted-color));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-step-section__actions{display:flex;align-items:center;gap:var(--space-2, .5rem);flex-shrink:0}.w-step-section__content{padding:0 var(--card-pad, 1.25rem) var(--space-3, .875rem);display:flex;flex-direction:column;gap:var(--space-3, .75rem)}.w-step-section__content>.w-editable-table{margin:0 calc(-1 * var(--card-pad, 1.25rem))}.w-step-section__footer{display:flex;justify-content:flex-end;gap:var(--space-2, .5rem);padding:var(--space-3, .875rem) var(--card-pad, 1.25rem);border-top:1px solid var(--border, var(--p-content-border-color))}@media(max-width:640px){.w-step-section{gap:var(--space-2, .5rem)}}.w-step-flow--horizontal{gap:var(--space-2, .5rem)}.w-step-section--horizontal{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-2, .5rem)}.w-step-section--horizontal .w-step-section__head{display:flex;align-items:center;gap:var(--space-2, .5rem);min-width:0}.w-step-section--horizontal .w-step-section__line{display:none}.w-step-section--horizontal .w-step-section__trigger{padding:var(--space-2, .5rem);border-radius:var(--radius-md, .5rem)}.w-step-section--horizontal .w-step-section__trigger:hover:not(:disabled){background:var(--surface-3, var(--p-content-hover-background))}.w-step-section--horizontal .w-step-section__title{flex:0 1 auto;min-width:0;font-size:var(--text-base, .9375rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-step-section--horizontal .w-step-section__summary{flex:0 20 auto}.w-step-section__badge--done{border-color:transparent;background:var(--surface-3, var(--p-content-hover-background));color:var(--fg-muted, var(--p-text-muted-color))}.w-step-section__badge--done .pi{font-size:var(--text-2xs, .6875rem)}.w-step-section__panel{min-width:0;border:1px solid var(--border, var(--p-content-border-color));border-radius:var(--radius-lg, .75rem);background:var(--surface, var(--p-content-background));overflow:hidden}.w-step-section--horizontal .w-step-section__content{padding-top:var(--space-4, 1rem)}@media(min-width:768px){.w-step-flow--horizontal{flex-direction:row;flex-wrap:wrap;align-items:center;column-gap:var(--space-3, .75rem);row-gap:var(--space-4, 1rem)}.w-step-flow--horizontal>.w-step-section--horizontal{display:contents}.w-step-flow--horizontal>.w-step-section--horizontal>.w-step-section__head{order:1;flex:1 1 0}.w-step-flow--horizontal>.w-step-section--horizontal>.w-step-section__panel{order:2;flex:0 0 100%}.w-step-flow--horizontal .w-step-section__line{display:block;flex:none;width:var(--space-5, 1.25rem);height:2px}.w-step-flow--horizontal>.w-step-section:first-child .w-step-section__line{display:none}.w-step-section__line--done{background:var(--border-strong, var(--p-content-border-color))}}@media(min-width:768px)and (max-width:1279px){.w-step-section--horizontal .w-step-section__summary{display:none}}.w-editable-table{min-width:0}.w-editable-table__toolbar{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-2, .5rem);padding:0 var(--card-pad, 1.25rem) var(--space-3, .875rem)}.w-editable-table__add{display:inline-flex;align-items:center;gap:var(--space-2, .4375rem);height:var(--control-h-sm, 2rem);padding:0 var(--control-px, .75rem);border:1px solid var(--border-strong, var(--p-content-border-color));border-radius:var(--radius, .5rem);background:var(--surface, var(--p-content-background));color:var(--fg, var(--p-text-color));font-family:inherit;font-size:var(--text-sm, .8125rem);font-weight:var(--fw-medium, 500);cursor:pointer;transition:background-color var(--motion-fast, .14s) var(--ease, ease)}.w-editable-table__add:hover:not(:disabled){background:var(--surface-3, var(--p-content-hover-background))}.w-editable-table__add:disabled{opacity:.5;cursor:default}.w-editable-table__add i{font-size:var(--text-xs, .6875rem)}.w-editable-table__table{width:100%;border-collapse:collapse;table-layout:fixed}.w-editable-table__table thead tr{background:var(--surface-2, var(--p-content-hover-background));border-top:1px solid var(--border, var(--p-content-border-color));border-bottom:1px solid var(--border, var(--p-content-border-color))}.w-editable-table__table th{padding:var(--space-2, .5625rem) var(--space-2, .625rem);text-align:left;font-size:var(--text-2xs, .6875rem);font-weight:var(--fw-bold, 700);text-transform:uppercase;letter-spacing:.05em;color:var(--fg-muted, var(--p-text-muted-color));white-space:nowrap}.w-editable-table__table td{padding:var(--cell-py, .625rem) var(--space-2, .625rem);font-size:var(--ui-font, .875rem);color:var(--fg, var(--p-text-color));vertical-align:middle}.w-editable-table__row{border-bottom:1px solid var(--border, var(--p-content-border-color))}.w-editable-table__cell--right{text-align:right}.w-editable-table__cell--center{text-align:center}.w-editable-table__cell--num,.w-editable-table__num{font-variant-numeric:tabular-nums}.w-editable-table__cell--num .p-inputtext,.w-editable-table__cell--right .p-inputtext{text-align:right}.w-editable-table__text{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-editable-table__toggle-col{width:2.5rem}.w-editable-table__action-col{width:2.75rem;text-align:right}.w-editable-table__toggle{display:grid;place-items:center;width:1.625rem;height:1.625rem;border:1px solid var(--border, var(--p-content-border-color));border-radius:var(--radius-sm, .375rem);background:var(--surface, var(--p-content-background));color:var(--fg-muted, var(--p-text-muted-color));cursor:pointer;transition:background-color var(--motion-fast, .14s) var(--ease, ease)}.w-editable-table__toggle:hover{background:var(--surface-3, var(--p-content-hover-background));color:var(--fg, var(--p-text-color))}.w-editable-table__toggle i{font-size:var(--text-2xs, .625rem)}.w-editable-table__remove{display:grid;place-items:center;width:1.75rem;height:1.75rem;margin-left:auto;border:1px solid transparent;border-radius:var(--radius-sm, .375rem);background:transparent;color:var(--fg-subtle, var(--p-text-muted-color));cursor:pointer;transition:background-color var(--motion-fast, .14s) var(--ease, ease),color var(--motion-fast, .14s) var(--ease, ease)}.w-editable-table__remove:hover:not(:disabled){background:var(--danger-soft, color-mix(in srgb, var(--p-red-500, #ef4444) 12%, transparent));color:var(--danger, var(--p-red-500, #ef4444))}.w-editable-table__remove:disabled{opacity:.4;cursor:default}.w-editable-table__remove i{font-size:var(--text-xs, .75rem)}.w-editable-table__expansion>td{padding:0 var(--space-3, .875rem) var(--space-4, 1rem);background:var(--surface-2, var(--p-content-hover-background));border-bottom:1px solid var(--border, var(--p-content-border-color))}.w-editable-table__empty{padding:var(--space-6, 1.5rem) var(--space-4, 1rem)!important;text-align:center;font-size:var(--text-sm, .8125rem);color:var(--fg-muted, var(--p-text-muted-color))}.w-editable-table__footer{background:var(--surface-2, var(--p-content-hover-background));border-top:2px solid var(--primary, var(--p-primary-color))}.w-editable-table__footer td{font-weight:var(--fw-bold, 700);font-variant-numeric:tabular-nums}.w-editable-table__footer-label{font-size:var(--text-sm, .8125rem);font-weight:var(--fw-medium, 600);color:var(--fg-muted, var(--p-text-muted-color))}.w-segmented{display:inline-flex;gap:var(--space-1, .25rem);padding:3px;height:var(--control-h, 2.375rem);border-radius:var(--radius, .5rem);background:var(--surface-3, var(--p-content-hover-background))}.w-segmented__option{flex:1 0 auto;padding:0 var(--control-px, .75rem);border:0;border-radius:var(--radius-sm, .375rem);background:transparent;color:var(--fg-muted, var(--p-text-muted-color));font-family:inherit;font-size:var(--text-sm, .8125rem);font-weight:var(--fw-medium, 500);white-space:nowrap;cursor:pointer;transition:color var(--motion-fast, .14s) var(--ease, ease)}.w-segmented__option:hover:not(:disabled){color:var(--fg, var(--p-text-color))}.w-segmented__option--on{background:var(--surface, var(--p-content-background));color:var(--fg, var(--p-text-color));font-weight:var(--fw-medium, 600);box-shadow:var(--shadow-xs, 0 1px 2px rgba(16, 30, 24, .06))}.w-segmented__option:disabled{opacity:.6;cursor:default}.w-choice{display:flex;flex-wrap:wrap;gap:var(--space-1, .3125rem)}.w-choice__option{display:inline-flex;align-items:center;gap:var(--space-2, .375rem);height:var(--control-h, 2.125rem);padding:0 var(--control-px, .75rem);border:1px solid var(--border-strong, var(--p-content-border-color));border-radius:var(--radius, .5rem);background:var(--surface, var(--p-content-background));color:var(--fg-muted, var(--p-text-muted-color));font-family:inherit;font-size:var(--text-sm, .8125rem);font-weight:var(--fw-medium, 500);white-space:nowrap;cursor:pointer;transition:background-color var(--motion-fast, .14s) var(--ease, ease),border-color var(--motion-fast, .14s) var(--ease, ease)}.w-choice__option:hover:not(:disabled):not(.w-choice__option--on){background:var(--surface-3, var(--p-content-hover-background));color:var(--fg, var(--p-text-color))}.w-choice__option--on{border-color:var(--primary, var(--p-primary-color));background:var(--primary-soft, color-mix(in srgb, var(--p-primary-color) 10%, transparent));color:var(--primary, var(--p-primary-color));font-weight:var(--fw-medium, 600)}.w-choice__option:disabled{opacity:.6;cursor:default}.w-choice__option i{font-size:var(--text-xs, .6875rem)}.w-chips{display:flex;align-items:center;gap:var(--space-1, .375rem);flex-wrap:wrap;min-height:var(--control-h, 2.125rem);padding:3px var(--space-1, .375rem);border:1px solid var(--border-strong, var(--p-content-border-color));border-radius:var(--radius, .5rem);background:var(--surface, var(--p-content-background))}.w-chips__chip{display:inline-flex;align-items:center;gap:var(--space-1, .25rem);height:1.5rem;padding:0 3px 0 var(--space-2, .5625rem);border-radius:var(--radius-full, 999px);background:var(--primary-soft, color-mix(in srgb, var(--p-primary-color) 10%, transparent));color:var(--primary, var(--p-primary-color));font-size:var(--text-sm, .8125rem);font-weight:var(--fw-medium, 500);white-space:nowrap}.w-chips__remove{display:grid;place-items:center;width:1.0625rem;height:1.0625rem;border:0;border-radius:var(--radius-full, 999px);background:transparent;color:inherit;opacity:.55;cursor:pointer}.w-chips__remove:hover:not(:disabled){opacity:1}.w-chips__remove:disabled{opacity:.3;cursor:default}.w-chips__remove i{font-size:.5625rem}.w-chips__empty{font-size:var(--text-sm, .8125rem);color:var(--fg-subtle, var(--p-text-muted-color));padding-left:var(--space-1, .25rem)}.w-chips__summary{margin-left:auto;padding-right:var(--space-1, .25rem);font-size:var(--text-sm, .8125rem);color:var(--fg-muted, var(--p-text-muted-color));white-space:nowrap}.w-chips__summary:empty{display:none}.w-map-select{display:flex;flex-direction:column;min-width:0}.w-map-select--disabled{opacity:.7}.w-map-select__body{display:flex;align-items:stretch;min-height:0;min-width:0}.w-map-select__map{flex:1;min-width:0;position:relative;border:1px solid var(--border, var(--p-content-border-color));border-radius:var(--radius-md, .625rem);background:var(--surface-3, var(--p-content-hover-background));overflow:hidden}.w-map-select__canvas{width:100%;height:var(--w-map-h, 460px)}.w-map-select__fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2, .5rem);padding:var(--space-6, 1.5rem);text-align:center;background:var(--surface-2, var(--p-content-hover-background));color:var(--fg-muted, var(--p-text-muted-color));font-size:var(--text-sm, .8125rem)}.w-map-select__fallback i{font-size:1.25rem;color:var(--fg-subtle, var(--p-text-muted-color))}.w-map-select__badge{position:absolute;right:.75rem;top:.75rem;z-index:500;display:inline-flex;align-items:center;gap:var(--space-2, .5rem);height:1.75rem;padding:0 var(--space-2, .625rem);border-radius:var(--radius-full, 999px);background:#0f1f30b8;color:#fff;font-size:var(--text-2xs, .6875rem);font-weight:var(--fw-bold, 700);text-transform:uppercase;letter-spacing:.05em;pointer-events:none}.w-map-select__badge i{font-size:.6875rem}.w-map-select__panel{width:300px;flex:none;display:flex;flex-direction:column;border-left:1px solid var(--border, var(--p-content-border-color));margin-left:var(--space-4, 1rem);padding-left:var(--space-4, 1rem)}.w-map-select__panel-head{display:flex;flex-direction:column;gap:var(--space-2, .625rem);padding-bottom:var(--space-3, .75rem)}.w-map-select__meta{display:flex;align-items:center;gap:var(--space-2, .625rem)}.w-map-select__count{font-size:var(--text-2xs, .6875rem);font-weight:var(--fw-bold, 700);text-transform:uppercase;letter-spacing:.05em;color:var(--fg-muted, var(--p-text-muted-color));font-variant-numeric:tabular-nums}.w-map-select__clear{margin-left:auto;border:0;padding:0;background:transparent;color:var(--primary, var(--p-primary-color));font-family:inherit;font-size:var(--text-sm, .8125rem);font-weight:var(--fw-medium, 500);cursor:pointer}.w-map-select__clear:disabled{color:var(--fg-subtle, var(--p-text-muted-color));cursor:default}.w-map-select__list{flex:1;min-height:0;max-height:var(--w-map-list-h, 23.75rem);overflow-y:auto;list-style:none;margin:0;padding:0 0 var(--space-3, .75rem)}.w-map-select__item{width:100%;display:flex;align-items:center;gap:var(--space-2, .6875rem);padding:var(--space-2, .5625rem) var(--space-2, .625rem);border:1px solid transparent;border-radius:var(--radius, .5rem);background:transparent;font-family:inherit;text-align:left;cursor:pointer;transition:background-color var(--motion-fast, .14s) var(--ease, ease)}.w-map-select__item:hover:not(:disabled){background:var(--surface-3, var(--p-content-hover-background))}.w-map-select__item:disabled{cursor:default;opacity:.6}.w-map-select__box{display:grid;place-items:center;width:1.125rem;height:1.125rem;flex:none;border:1px solid var(--border-strong, var(--p-content-border-color));border-radius:var(--radius-xs, .25rem);background:var(--surface, var(--p-content-background))}.w-map-select__item--on .w-map-select__box{border-color:transparent;background:var(--primary, var(--p-primary-color));color:var(--primary-fg, var(--p-primary-contrast-color, #fff))}.w-map-select__box i{font-size:.5625rem}.w-map-select__item-text{min-width:0;flex:1}.w-map-select__item-name{display:block;font-size:var(--ui-font, .875rem);font-weight:var(--fw-medium, 600);color:var(--fg, var(--p-text-color))}.w-map-select__item-sub{display:block;font-size:var(--text-xs, .75rem);color:var(--fg-muted, var(--p-text-muted-color));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.w-map-select__item-nogeo{flex:none;font-size:var(--text-xs, .75rem);color:var(--fg-subtle, var(--p-text-muted-color))}.w-map-select__item-area{font-size:var(--text-sm, .8125rem);color:var(--fg-muted, var(--p-text-muted-color));font-variant-numeric:tabular-nums;white-space:nowrap}.w-map-select__empty{padding:var(--space-4, 1rem) var(--space-2, .625rem);text-align:center;font-size:var(--text-xs, .75rem);color:var(--fg-muted, var(--p-text-muted-color))}.w-map-select__footer{display:flex;align-items:center;gap:var(--space-3, .875rem);margin-top:var(--space-3, .875rem);padding-top:var(--space-3, .875rem);border-top:1px solid var(--border, var(--p-content-border-color))}.w-map-select__area{display:inline-flex;align-items:baseline;gap:var(--space-2, .5rem);font-size:var(--text-sm, .8125rem);color:var(--fg-muted, var(--p-text-muted-color))}.w-map-select__area strong{font-size:var(--text-xl, 1.25rem);font-weight:var(--fw-bold, 700);line-height:1;color:var(--fg, var(--p-text-color));font-variant-numeric:tabular-nums}.leaflet-tooltip.w-map-select__tip{background:transparent;border:0;box-shadow:none;padding:0;white-space:nowrap;pointer-events:none;font-family:inherit;font-size:var(--text-sm, .8125rem);font-weight:var(--fw-bold, 700);color:#ffffffdb;text-shadow:0 1px 4px rgba(0,0,0,.92)}.leaflet-tooltip.w-map-select__tip:before{display:none}.leaflet-tooltip.w-map-select__tip--on{color:#fff}@media(max-width:900px){.w-map-select__body{flex-direction:column}.w-map-select__panel{width:100%;border-left:0;border-top:1px solid var(--border, var(--p-content-border-color));margin-left:0;margin-top:var(--space-3, .875rem);padding-left:0;padding-top:var(--space-3, .875rem)}}.w-map-select--overlay{--w-map-panel-w: 20rem;--w-map-inset: .75rem;--w-map-foot-h: 3.25rem;position:relative}.w-map-select--overlay .w-map-select__body{position:relative;flex-direction:row}.w-map-select--overlay .w-map-select__panel,.w-map-select--overlay .w-map-select__footer{--fg-muted: color-mix(in srgb, var(--fg, var(--p-text-color)) 74%, transparent);--fg-subtle: color-mix(in srgb, var(--fg, var(--p-text-color)) 56%, transparent);position:absolute;z-index:900;margin:0;border:1px solid var(--border, var(--p-content-border-color));border-radius:var(--radius-md, .625rem);box-shadow:var(--shadow-lg, 0 12px 32px rgba(15, 31, 48, .28));color:var(--fg, var(--p-text-color));background:var(--surface, var(--p-content-background));background:color-mix(in srgb,var(--surface, var(--p-content-background)) 92%,transparent);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.w-map-select--overlay .w-map-select__panel,.w-map-select--overlay .w-map-select__footer{background:var(--surface, var(--p-content-background))}}.w-map-select--overlay .w-map-select__panel{top:var(--w-map-inset);right:var(--w-map-inset);bottom:calc(var(--w-map-inset) * 2 + var(--w-map-foot-h));width:var(--w-map-panel-w);max-width:calc(100% - var(--w-map-inset) * 2);padding:var(--space-2, .5rem) var(--space-3, .75rem) var(--space-3, .75rem)}.w-map-select--overlay .w-map-select__footer{left:var(--w-map-inset);right:var(--w-map-inset);bottom:var(--w-map-inset);padding:var(--space-2, .625rem) var(--space-3, .875rem)}.w-map-select--overlay .w-map-select__list{max-height:none;padding-bottom:0;overscroll-behavior:contain;scrollbar-width:thin}.w-map-select__collapse{align-self:flex-end;display:inline-flex;align-items:center;gap:var(--space-1, .375rem);height:1.5rem;min-width:1.5rem;justify-content:center;margin-bottom:var(--space-1, .25rem);padding:0;border:0;border-radius:var(--radius-full, 999px);background:transparent;color:var(--fg-muted, var(--p-text-muted-color));font-family:inherit;cursor:pointer;transition:color var(--motion-fast, .14s) var(--ease, ease)}.w-map-select__collapse:hover{color:var(--fg, var(--p-text-color))}.w-map-select__collapse:focus-visible{outline:2px solid var(--primary, var(--p-primary-color));outline-offset:2px}.w-map-select__collapse i{font-size:.8125rem}.w-map-select--collapsed .w-map-select__panel{bottom:auto;width:auto;padding:0;border-radius:var(--radius-full, 999px)}.w-map-select--collapsed .w-map-select__panel-head,.w-map-select--collapsed .w-map-select__list{display:none}.w-map-select--collapsed .w-map-select__collapse{height:2.25rem;margin:0;padding:0 var(--space-3, .75rem);color:var(--fg, var(--p-text-color))}.w-map-select__collapse-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 var(--space-1, .3125rem);border-radius:var(--radius-full, 999px);background:var(--primary, var(--p-primary-color));color:var(--primary-fg, var(--p-primary-contrast-color, #fff));font-size:var(--text-2xs, .6875rem);font-weight:var(--fw-bold, 700);font-variant-numeric:tabular-nums}.w-map-select--overlay:not(.w-map-select--collapsed) .w-map-select__collapse-count{display:none}.w-map-select--overlay .w-map-select__badge{right:auto;left:3.5rem}.w-map-select--overlay .leaflet-bottom{margin-bottom:calc(var(--w-map-foot-h) + var(--w-map-inset) + .25rem)}.w-map-select--overlay .leaflet-bottom.leaflet-right{right:auto;left:0}@media(max-width:768px){.w-map-select--overlay{--w-map-inset: .5rem}.w-map-select--overlay .w-map-select__panel{top:auto;left:var(--w-map-inset);right:var(--w-map-inset);width:auto;max-width:none;max-height:55%}.w-map-select--overlay.w-map-select--collapsed .w-map-select__panel{left:auto}}.w-datepicker,.w-datepicker .p-iconfield{width:100%}.w-datepicker-icon{cursor:pointer;color:var(--p-text-muted-color);transition:color .15s}.w-datepicker-icon:hover{color:var(--p-primary-color)}.w-datepicker-icon-disabled{opacity:.4;cursor:default;pointer-events:none}.w-datepicker-panel{display:flex;flex-direction:column;gap:.5rem}.w-datepicker-actions{display:flex;justify-content:space-between;gap:.5rem;border-top:1px solid var(--p-content-border-color);padding-top:.5rem}.w-fk-subrows{width:100%;border-collapse:collapse;font-size:var(--text-sm, .8125rem)}.w-fk-subrows th{padding:.25rem .625rem;text-align:right;font-weight:var(--fw-medium, 500);color:var(--fg-muted, var(--p-text-muted-color));white-space:nowrap}.w-fk-subrows th:first-child,.w-fk-subrows td:first-child{text-align:left}.w-fk-subrows td{padding:.3rem .625rem;text-align:right;border-top:1px solid var(--border, var(--p-content-border-color));font-variant-numeric:tabular-nums;white-space:nowrap}
|