@opengis/gis 0.2.115 → 0.2.117

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/CardIcon-FxpK90rl.js +51 -0
  2. package/dist/EntityCreatePage-Da8XgBKU.js +141 -0
  3. package/dist/EntityEditPage-QktKEAxz.js +167 -0
  4. package/dist/EntityTablePage-ii-Wz0YZ.js +286 -0
  5. package/dist/ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-Bl5ZwNQX.js +70 -0
  6. package/dist/FileEdit-C7tteUeG.js +37 -0
  7. package/dist/HeaderActions.vue_vue_type_script_setup_true_lang-CKEep8BL.js +796 -0
  8. package/dist/MapSettings-CjJ7WWkn.js +672 -0
  9. package/dist/MapSettingsTabs.vue_vue_type_script_setup_true_lang-CKCK3NqY.js +29 -0
  10. package/dist/MonacoEditor.vue_vue_type_script_setup_true_lang-Bs7gz6Lt.js +408 -0
  11. package/dist/RastersTablePage-DpKkFOyo.js +359 -0
  12. package/dist/TableFormHeader.vue_vue_type_script_setup_true_lang-Mci_tseM.js +47 -0
  13. package/dist/cartocss-C_O8qG3h.js +892 -0
  14. package/dist/import-utils-BbZ1gVp-.js +123 -0
  15. package/dist/index-4aSsUBB8.js +10020 -0
  16. package/dist/index.css +1 -1
  17. package/dist/index.js +16 -17634
  18. package/dist/index.umd.cjs +41 -244
  19. package/dist/raster-Du8ZMtjf.js +664 -0
  20. package/dist/register-B2gF-GzA.js +780 -0
  21. package/dist/service-BnPCDVwm.js +2573 -0
  22. package/dist/vs-datatable-QKks38xL.js +800 -0
  23. package/module/gis/form/feedback.answer.form.json +11 -0
  24. package/module/gis/form/gis.cartocss.form.json +8 -0
  25. package/module/gis/form/gis.metadata_new.form.json +196 -0
  26. package/module/gis/form/gis.ogc_service.form.json +8 -2
  27. package/module/gis/select/layer_list_text.sql +7 -0
  28. package/module/gis/select/pg.column_name.geometry.sql +13 -0
  29. package/module/gis/table/gis.metadata_new.table.json +138 -0
  30. package/module/gis/table/site.gis.registers.table.json +1 -1
  31. package/module/test/cls/doc_status.json +31 -31
  32. package/module/test/select/core.user_uid.sql +1 -1
  33. package/package.json +3 -4
  34. package/server/plugins/mapnik/funcs/mapnik.js +5 -5
  35. package/server/routes/gis/cartocss/get.cartocss.js +1 -1
  36. package/server/routes/mapnik/controllers/clearTiles.js +8 -4
  37. package/server/routes/mapnik/controllers/createXmlMulti.js +1 -1
  38. package/server/routes/mapnik/controllers/fileSearch.js +6 -2
  39. package/server/routes/mapnik/controllers/fileStat.js +4 -3
  40. package/server/routes/mapnik/controllers/mapnikLogger.js +1 -1
  41. package/server/routes/mapnik/controllers/mapnikStat.js +1 -1
  42. package/server/routes/mapnik/controllers/rasterInfo.js +5 -2
  43. package/server/routes/mapnik/controllers/readDir.js +5 -2
  44. package/server/routes/mapnik/controllers/rtile.js +21 -6
  45. package/server/routes/mapnik/index.js +0 -1
@@ -0,0 +1,359 @@
1
+ import { defineComponent as ie, defineAsyncComponent as re, computed as b, ref as d, onMounted as de, onBeforeUnmount as ce, watch as L, resolveComponent as ue, openBlock as o, createElementBlock as i, createVNode as c, createSlots as fe, withCtx as N, createTextVNode as v, toDisplayString as h, createElementVNode as a, unref as r, normalizeClass as q, withDirectives as ve, vModelText as ge, Fragment as A, renderList as I, createStaticVNode as pe, createCommentVNode as me } from "vue";
2
+ import { useRoute as be, useRouter as he } from "vue-router";
3
+ import { VsPagination as xe, notify as Q } from "@opengis/core";
4
+ import { Filter as ye } from "@opengis/filter";
5
+ import { RefreshCw as _e, LayoutGrid as we, List as ke, Plus as Ce, Search as $e, Image as Se } from "lucide-vue-next";
6
+ import { _ as Te } from "./TableFormHeader.vue_vue_type_script_setup_true_lang-Mci_tseM.js";
7
+ import { _ as Pe } from "./index-4aSsUBB8.js";
8
+ const ze = { class: "flex-1 flex flex-col bg-gray-50 h-screen overflow-hidden p-0 m-0" }, Re = {
9
+ href: "/api/gis-create-xml",
10
+ target: "_blank",
11
+ rel: "noreferrer",
12
+ class: "flex h-[2rem] items-center gap-1.5 px-3 py-1.5 bg-slate-50 text-slate-700 rounded-md border border-slate-200 hover:bg-slate-100 transition-colors text-sm"
13
+ }, je = { class: "inline-flex items-center rounded-lg border border-gray-200 bg-white p-1 shadow-sm" }, Ne = { class: "flex-1 px-4 sm:px-6 pb-4 overflow-y-auto overflow-x-visible" }, Ee = { class: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-visible" }, Fe = { class: "p-3 border-b border-gray-200" }, Ve = { class: "flex flex-col sm:flex-row gap-2" }, De = { class: "flex-1 relative" }, Me = ["placeholder"], Ue = {
14
+ key: 0,
15
+ class: "entity-table-root"
16
+ }, Be = { class: "gap-2 inline-flex" }, Le = ["onClick"], qe = {
17
+ key: 1,
18
+ class: "p-4"
19
+ }, Ae = {
20
+ key: 0,
21
+ class: "grid grid-cols-1 gap-5 md:grid-cols-3 xl:grid-cols-4"
22
+ }, Ie = {
23
+ key: 1,
24
+ class: "grid grid-cols-1 gap-5 md:grid-cols-3 xl:grid-cols-4"
25
+ }, Qe = ["href"], Je = { class: "p-0" }, Ke = { class: "overflow-hidden border border-[#dbe5f3] bg-[#eef4fb]" }, Oe = { class: "relative aspect-[1.58/1] w-full overflow-hidden" }, We = ["src", "alt"], Ge = {
26
+ key: 1,
27
+ class: "flex h-full w-full items-center justify-center bg-[radial-gradient(circle_at_top_left,_#f8fbff,_#e8eef8_55%,_#dce6f3)]"
28
+ }, He = { class: "p-5" }, Xe = { class: "mb-5 flex items-start justify-between gap-3" }, Ye = { class: "line-clamp-2 max-w-[72%] text-[1.02rem] font-semibold leading-[1.28] tracking-[-0.01em] text-[#183153]" }, Ze = { class: "border-t border-[#e9eef6] pt-4" }, et = { class: "flex items-center justify-between gap-3 text-[0.92rem]" }, tt = { class: "font-medium text-[#b3c1da]" }, st = { class: "truncate text-right font-medium text-[#c0cadb]" }, at = {
29
+ key: 2,
30
+ class: "py-16 text-center text-sm text-gray-500"
31
+ }, nt = {
32
+ key: 2,
33
+ class: "flex flex-col gap-3 border-t border-gray-200 px-4 py-3 sm:flex-row sm:items-center sm:justify-between bg-gray-50"
34
+ }, lt = { class: "text-sm text-gray-500" }, ot = { class: "font-medium text-gray-700" }, it = { class: "font-medium text-gray-700" }, rt = { class: "font-medium text-gray-700" }, dt = { class: "flex items-center justify-end gap-3" }, ct = /* @__PURE__ */ ie({
35
+ __name: "RastersTablePage",
36
+ props: {
37
+ entityKey: { default: "rasters" },
38
+ entityBasePath: { default: "/gis.rasters" },
39
+ columnsConfig: { default: () => [] }
40
+ },
41
+ setup(J) {
42
+ const K = re(() => import("@opengis/table")), g = be(), $ = he(), S = J, T = b(() => {
43
+ var e;
44
+ return String(((e = g.meta) == null ? void 0 : e.title) || "Растри");
45
+ }), F = b(() => {
46
+ var e;
47
+ return String(((e = g.meta) == null ? void 0 : e.description) || "");
48
+ }), O = b(() => `Пошук ${String(T.value).trim()}...`), V = b(() => S.entityKey || "rasters"), k = b(() => S.entityBasePath || "/gis.rasters"), _ = d([]), P = d(!0), x = d([]), D = d([]), y = d({}), W = d([]), u = d(String(g.query.search ?? "")), l = d(Math.max(1, Number(g.query.page) || 1)), z = d(15), p = d(0), f = d(g.query.view === "table" ? "table" : "tiles");
49
+ let C = null;
50
+ const G = b(() => p.value > 0), H = b(() => p.value ? (l.value - 1) * z.value + 1 : 0), X = b(() => p.value ? Math.min(l.value * z.value, p.value) : 0);
51
+ function Y(e) {
52
+ const t = new URLSearchParams();
53
+ return Object.entries(e).forEach(([n, s]) => {
54
+ if (!(s == null || s === "")) {
55
+ if (Array.isArray(s)) {
56
+ s.forEach((m) => {
57
+ m != null && m !== "" && t.append(n, String(m));
58
+ });
59
+ return;
60
+ }
61
+ t.append(n, String(s));
62
+ }
63
+ }), t.toString();
64
+ }
65
+ function Z() {
66
+ return `${k.value}/new`;
67
+ }
68
+ function ee(e) {
69
+ return `${k.value}/${e}/edit`;
70
+ }
71
+ async function w() {
72
+ try {
73
+ P.value = !0;
74
+ const e = `/api/data/gis.${V.value}.table`, t = Y({
75
+ ...y.value,
76
+ page: l.value,
77
+ limit: z.value
78
+ }), n = await fetch(t ? `${e}?${t}` : e);
79
+ if (!n.ok)
80
+ throw new Error(`Rows fetch failed: ${n.status}`);
81
+ const s = await n.json();
82
+ _.value = s.rows || [], p.value = Number(s.filtered ?? s.total ?? s.count ?? _.value.length) || 0, x.value = S.columnsConfig.length ? S.columnsConfig : s.columns || [], D.value = s.filters || [], W.value = s.actions || [], x.value.length && !x.value[0].link ? x.value[0].link = `${k.value}/{id}` : x.value.length && (x.value[0].link = `${k.value}/{id}`);
83
+ } catch {
84
+ _.value = [], p.value = 0;
85
+ } finally {
86
+ P.value = !1;
87
+ }
88
+ }
89
+ function M(e) {
90
+ const t = typeof (e == null ? void 0 : e.url) == "string" ? e.url.trim() : "";
91
+ return t ? (/^https?:\/\//i.test(t) ? t : `${location.origin}${t.startsWith("/") ? "" : "/"}${t}`).replace("{z}", "12").replace("{x}", "2422").replace("{y}", "1400") : "";
92
+ }
93
+ function te(e) {
94
+ if (!e) return "—";
95
+ const t = new Date(e);
96
+ return Number.isNaN(t.getTime()) ? "—" : t.toLocaleDateString("uk-UA", {
97
+ day: "2-digit",
98
+ month: "2-digit",
99
+ year: "numeric"
100
+ });
101
+ }
102
+ function se(e) {
103
+ return (e == null ? void 0 : e.holder) || (e == null ? void 0 : e.source_path) || (e == null ? void 0 : e.extension) || "—";
104
+ }
105
+ function ae(e) {
106
+ y.value = e, l.value = 1, R(), w();
107
+ }
108
+ async function ne(e, t, n) {
109
+ const s = await fetch(`/api/form/gis.${V.value}.table/${e.id}`);
110
+ if (!s.ok) throw new Error(`Form fetch failed: ${s.status}`);
111
+ const E = (await s.json()).token, j = await fetch(`/api/table/${E}`, {
112
+ method: "PUT",
113
+ headers: { "Content-Type": "application/json" },
114
+ body: JSON.stringify({ [t]: n })
115
+ });
116
+ if (!j.ok)
117
+ throw Q({
118
+ type: "error",
119
+ title: "Помилка збереження",
120
+ message: `Поле "${t}" не оновлено`
121
+ }), new Error(`Save failed: ${j.status}`);
122
+ Q({ title: "Збережено", message: `Поле "${t}" оновлено` });
123
+ }
124
+ function le(e, t) {
125
+ y.value = {
126
+ ...y.value,
127
+ [e]: t
128
+ }, R(), w();
129
+ }
130
+ function oe() {
131
+ C && clearTimeout(C), C = setTimeout(() => {
132
+ l.value = 1, le("search", u.value);
133
+ }, 250);
134
+ }
135
+ function U(e) {
136
+ !e || e === l.value || (l.value = e, R(), w());
137
+ }
138
+ function B(e) {
139
+ f.value !== e && (f.value = e, R());
140
+ }
141
+ function R() {
142
+ const e = {
143
+ ...g.query,
144
+ page: String(l.value),
145
+ view: f.value,
146
+ ...u.value ? { search: u.value } : {}
147
+ };
148
+ u.value || delete e.search, $.replace({ query: e });
149
+ }
150
+ return de(() => {
151
+ w(), document.title = T.value;
152
+ }), ce(() => {
153
+ C && clearTimeout(C);
154
+ }), L(
155
+ () => g.name,
156
+ () => {
157
+ l.value = 1, u.value = "", f.value = "tiles", w(), document.title = T.value;
158
+ }
159
+ ), L(
160
+ () => g.query,
161
+ (e) => {
162
+ const t = Math.max(1, Number(e.page) || 1), n = String(e.search ?? ""), s = e.view === "table" ? "table" : "tiles", m = t !== l.value, E = n !== u.value, j = s !== f.value;
163
+ !m && !E && !j || (l.value = t, u.value = n, f.value = s, y.value = {
164
+ ...y.value,
165
+ search: n || void 0
166
+ }, w());
167
+ }
168
+ ), (e, t) => {
169
+ const n = ue("FileEdit");
170
+ return o(), i("div", ze, [
171
+ c(Te, { variant: "table" }, fe({
172
+ title: N(() => [
173
+ v(h(T.value), 1)
174
+ ]),
175
+ actions: N(() => [
176
+ a("a", Re, [
177
+ c(r(_e), { size: 16 }),
178
+ t[4] || (t[4] = v(" Оновити растри ", -1))
179
+ ]),
180
+ a("div", je, [
181
+ a("button", {
182
+ type: "button",
183
+ class: q(["inline-flex items-center gap-1 rounded-md px-2.5 py-1.5 text-sm transition-colors", f.value === "tiles" ? "bg-blue-600 text-white" : "text-gray-600 hover:bg-gray-100"]),
184
+ onClick: t[0] || (t[0] = (s) => B("tiles"))
185
+ }, [
186
+ c(r(we), { size: 16 }),
187
+ t[5] || (t[5] = v(" Плитка ", -1))
188
+ ], 2),
189
+ a("button", {
190
+ type: "button",
191
+ class: q(["inline-flex items-center gap-1 rounded-md px-2.5 py-1.5 text-sm transition-colors", f.value === "table" ? "bg-blue-600 text-white" : "text-gray-600 hover:bg-gray-100"]),
192
+ onClick: t[1] || (t[1] = (s) => B("table"))
193
+ }, [
194
+ c(r(ke), { size: 16 }),
195
+ t[6] || (t[6] = v(" Таблиця ", -1))
196
+ ], 2)
197
+ ]),
198
+ a("a", {
199
+ onClick: t[2] || (t[2] = (s) => r($).push(Z())),
200
+ class: "hover:cursor-pointer flex items-center gap-1.5 px-3 py-1.5 bg-blue-600 text-white rounded-md hover:bg-blue-700 transition-colors text-sm"
201
+ }, [
202
+ c(r(Ce), { size: 16 }),
203
+ t[7] || (t[7] = v(" Додати ", -1))
204
+ ])
205
+ ]),
206
+ _: 2
207
+ }, [
208
+ F.value ? {
209
+ name: "description",
210
+ fn: N(() => [
211
+ v(h(F.value), 1)
212
+ ]),
213
+ key: "0"
214
+ } : void 0
215
+ ]), 1024),
216
+ a("div", Ne, [
217
+ a("div", Ee, [
218
+ a("div", Fe, [
219
+ a("div", Ve, [
220
+ a("div", De, [
221
+ c(r($e), {
222
+ size: 16,
223
+ class: "absolute left-2.5 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"
224
+ }),
225
+ ve(a("input", {
226
+ "onUpdate:modelValue": t[3] || (t[3] = (s) => u.value = s),
227
+ onInput: oe,
228
+ type: "text",
229
+ placeholder: O.value,
230
+ class: "w-full pl-9 pr-3 py-1.5 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent"
231
+ }, null, 40, Me), [
232
+ [ge, u.value]
233
+ ])
234
+ ]),
235
+ c(r(ye), {
236
+ schema: D.value,
237
+ value: y.value,
238
+ onChange: ae,
239
+ layout: "inline",
240
+ mode: "soft",
241
+ view: "popover",
242
+ limit: 8,
243
+ class: "flex-shrink-0"
244
+ }, null, 8, ["schema", "value"])
245
+ ])
246
+ ]),
247
+ f.value === "table" ? (o(), i("div", Ue, [
248
+ c(r(K), {
249
+ rows: _.value,
250
+ columns: x.value,
251
+ loading: P.value,
252
+ router: r($),
253
+ selectable: !1,
254
+ onCellUpdate: ne,
255
+ classWrapper: "overflow-x-auto overflow-y-visible",
256
+ TableStyle: "w-full",
257
+ classTable: "w-full min-w-[640px]",
258
+ classThead: "bg-gray-50 border-b border-gray-200",
259
+ classTh: "px-3 sm:px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider",
260
+ classTbody: "bg-white divide-y divide-gray-200",
261
+ classTr: "hover:bg-gray-50 transition-colors",
262
+ classTd: "px-3 sm:px-4 py-2.5 whitespace-nowrap",
263
+ classLink: "text-sm font-medium text-blue-600 hover:text-blue-800 hover:underline text-left"
264
+ }, {
265
+ action: N(({ row: s }) => [
266
+ a("div", Be, [
267
+ a("button", {
268
+ onClick: (m) => r($).push(ee(s.id)),
269
+ class: "inline-flex items-center justify-center bg-white border rounded-md size-7 gap-x-2 hover:bg-gray-100"
270
+ }, [
271
+ c(n)
272
+ ], 8, Le)
273
+ ])
274
+ ]),
275
+ _: 1
276
+ }, 8, ["rows", "columns", "loading", "router"])
277
+ ])) : (o(), i("div", qe, [
278
+ P.value ? (o(), i("div", Ae, [
279
+ (o(), i(A, null, I(6, (s) => a("div", {
280
+ key: s,
281
+ class: "overflow-hidden rounded-md border border-[#dde6f2] bg-white animate-pulse"
282
+ }, [...t[8] || (t[8] = [
283
+ pe('<div class="p-0" data-v-b310f540><div class="overflow-hidden border border-[#dbe5f3] bg-[#eef4fb]" data-v-b310f540><div class="aspect-[1.58/1] w-full bg-[radial-gradient(circle_at_top_left,_#f8fbff,_#edf2f9_55%,_#e2e9f4)]" data-v-b310f540></div></div></div><div class="p-5" data-v-b310f540><div class="mb-5 flex items-start justify-between gap-3" data-v-b310f540><div class="flex-1 space-y-2" data-v-b310f540><div class="h-4 w-[82%] rounded bg-[#e7edf6]" data-v-b310f540></div><div class="h-4 w-[58%] rounded bg-[#eef3fa]" data-v-b310f540></div></div><div class="h-8 w-20 shrink-0 rounded-[0.85rem] bg-[#e7efff]" data-v-b310f540></div></div><div class="border-t border-[#e9eef6] pt-4" data-v-b310f540><div class="flex items-center justify-between gap-3" data-v-b310f540><div class="h-4 w-20 rounded bg-[#eef3fa]" data-v-b310f540></div><div class="h-4 w-28 rounded bg-[#eef3fa]" data-v-b310f540></div></div></div></div>', 2)
284
+ ])])), 64))
285
+ ])) : _.value.length ? (o(), i("div", Ie, [
286
+ (o(!0), i(A, null, I(_.value, (s) => (o(), i("article", {
287
+ key: s.id,
288
+ class: "group overflow-hidden rounded-md border border-[#dde6f2] bg-white transition-all hover:border-[#bfd0ee] hover:ring-2 hover:ring-[#edf3ff]"
289
+ }, [
290
+ a("a", {
291
+ href: `${k.value}/${s.id}`,
292
+ class: "block bg-white transition-colors group-hover:bg-[#fcfdff]"
293
+ }, [
294
+ a("div", Je, [
295
+ a("div", Ke, [
296
+ a("div", Oe, [
297
+ M(s) ? (o(), i("img", {
298
+ key: 0,
299
+ src: M(s),
300
+ alt: s.name || "Raster preview",
301
+ class: "h-full w-full object-cover",
302
+ loading: "lazy"
303
+ }, null, 8, We)) : (o(), i("div", Ge, [
304
+ c(r(Se), {
305
+ size: 42,
306
+ class: "text-slate-400"
307
+ })
308
+ ]))
309
+ ])
310
+ ])
311
+ ]),
312
+ a("div", He, [
313
+ a("div", Xe, [
314
+ a("h3", Ye, h(s.name || "Без назви"), 1),
315
+ t[9] || (t[9] = a("span", { class: "inline-flex shrink-0 items-center rounded-[0.85rem] bg-[#e4edff] px-3 py-1.5 text-[0.78rem] font-semibold uppercase tracking-wide text-[#4f7cff]" }, " Raster ", -1))
316
+ ]),
317
+ a("div", Ze, [
318
+ a("div", et, [
319
+ a("span", tt, h(te(s.created_at || s.updated_at)), 1),
320
+ a("span", st, h(se(s)), 1)
321
+ ])
322
+ ])
323
+ ])
324
+ ], 8, Qe)
325
+ ]))), 128))
326
+ ])) : (o(), i("div", at, " Нічого не знайдено "))
327
+ ])),
328
+ G.value ? (o(), i("div", nt, [
329
+ a("div", lt, [
330
+ t[10] || (t[10] = v(" Показано ", -1)),
331
+ a("span", ot, h(H.value), 1),
332
+ t[11] || (t[11] = v(" - ", -1)),
333
+ a("span", it, h(X.value), 1),
334
+ t[12] || (t[12] = v(" з ", -1)),
335
+ a("span", rt, h(p.value), 1)
336
+ ]),
337
+ a("div", dt, [
338
+ c(r(xe), {
339
+ total: p.value,
340
+ page: l.value,
341
+ "page-size": z.value,
342
+ showPageSizes: !1,
343
+ pageRange: 5,
344
+ view: "button",
345
+ color: "gray",
346
+ "onUpdate:page": U,
347
+ onPageChange: U
348
+ }, null, 8, ["total", "page", "page-size"])
349
+ ])
350
+ ])) : me("", !0)
351
+ ])
352
+ ])
353
+ ]);
354
+ };
355
+ }
356
+ }), ht = /* @__PURE__ */ Pe(ct, [["__scopeId", "data-v-b310f540"]]);
357
+ export {
358
+ ht as default
359
+ };
@@ -0,0 +1,47 @@
1
+ import { defineComponent as x, computed as i, openBlock as t, createElementBlock as s, normalizeClass as o, renderSlot as a, createCommentVNode as r, createElementVNode as p, createTextVNode as d, toDisplayString as f } from "vue";
2
+ const u = {
3
+ key: 0,
4
+ class: "flex items-center text-sm text-gray-500 pb-[8px]"
5
+ }, b = {
6
+ key: 0,
7
+ class: "flex items-center gap-2 flex-shrink-0"
8
+ }, h = {
9
+ key: 1,
10
+ class: "text-xs text-gray-500 m-0 p-0 mt-[-0.3em]"
11
+ }, k = /* @__PURE__ */ x({
12
+ __name: "TableFormHeader",
13
+ props: {
14
+ variant: { default: "table" },
15
+ title: { default: "" }
16
+ },
17
+ setup(l) {
18
+ const n = l, c = i(() => n.variant === "table" ? "px-6 pb-4 pt-0 mt-0 flex flex-col gap-0 px-[25px] pt-[24px]" : "px-6 pb-4 pt-0 mt-0 flex flex-col gap-0 px-[25px] pt-[16px]"), m = i(() => n.variant === "form" ? "font-medium" : "");
19
+ return (e, v) => (t(), s("header", {
20
+ class: o([c.value, "flex-shrink-0 pt"])
21
+ }, [
22
+ e.$slots.breadcrumbs ? (t(), s("div", u, [
23
+ a(e.$slots, "breadcrumbs")
24
+ ])) : r("", !0),
25
+ p("div", {
26
+ class: o(["flex items-center justify-between", { "gap-2": l.variant === "table" }])
27
+ }, [
28
+ p("h2", {
29
+ class: o(["text-xl font-semibold text-gray-900 p-0 m-0 flex-shrink-0", m.value])
30
+ }, [
31
+ a(e.$slots, "title", {}, () => [
32
+ d(f(l.title), 1)
33
+ ])
34
+ ], 2),
35
+ e.$slots.actions ? (t(), s("div", b, [
36
+ a(e.$slots, "actions")
37
+ ])) : r("", !0)
38
+ ], 2),
39
+ e.$slots.description ? (t(), s("p", h, [
40
+ a(e.$slots, "description")
41
+ ])) : r("", !0)
42
+ ], 2));
43
+ }
44
+ });
45
+ export {
46
+ k as _
47
+ };