@boobooking/dashboard-ui-components 0.18.0 → 0.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
- import { Fragment as e, Transition as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, effectScope as c, mergeProps as l, normalizeClass as u, normalizeStyle as d, openBlock as f, renderList as p, renderSlot as m, resolveComponent as h, shallowReactive as g, toDisplayString as _, useId as v, vModelDynamic as ee, vModelText as te, vShow as y, watch as ne, withCtx as b, withDirectives as x, withKeys as re, withModifiers as S } from "vue";
2
- import ie from "imask";
1
+ import { Fragment as e, Transition as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, effectScope as c, mergeProps as l, normalizeClass as u, normalizeStyle as d, openBlock as f, renderList as p, renderSlot as m, resolveComponent as h, shallowReactive as g, toDisplayString as _, useId as v, vModelDynamic as ee, vModelText as te, vShow as y, watch as ne, withCtx as b, withDirectives as x, withKeys as S, withModifiers as C } from "vue";
2
+ import re from "imask";
3
3
  //#region src/i18n.js
4
- var C = ["ru", "en"];
4
+ var ie = ["ru", "en"];
5
5
  function w(e) {
6
- return C.includes(e);
6
+ return ie.includes(e);
7
7
  }
8
8
  var ae = {
9
9
  ru: {
@@ -55,7 +55,10 @@ var ae = {
55
55
  clear: "Очистить",
56
56
  showText: "Показать текст",
57
57
  fullText: "Полный текст",
58
- tabs: "Закладки"
58
+ tabs: "Закладки",
59
+ selected: "Выбрано",
60
+ search: "Поиск",
61
+ nothingFound: "Ничего не найдено"
59
62
  },
60
63
  en: {
61
64
  cancel: "Cancel",
@@ -106,20 +109,23 @@ var ae = {
106
109
  clear: "Clear",
107
110
  showText: "Show text",
108
111
  fullText: "Full text",
109
- tabs: "Tabs"
112
+ tabs: "Tabs",
113
+ selected: "Selected",
114
+ search: "Search",
115
+ nothingFound: "Nothing found"
110
116
  }
111
117
  };
112
118
  //#endregion
113
119
  //#region src/windows.js
114
- function oe(e, t) {
120
+ function T(e, t) {
115
121
  if (e == null || e === "") return null;
116
122
  let n = new URL(String(e), t);
117
123
  return n.pathname + n.search;
118
124
  }
119
- function se(e) {
125
+ function oe(e) {
120
126
  return e === null ? null : e.split("?")[0];
121
127
  }
122
- function ce() {
128
+ function se() {
123
129
  return {
124
130
  windows: [],
125
131
  cards: /* @__PURE__ */ new Map(),
@@ -133,36 +139,36 @@ function ce() {
133
139
  nextId: 1
134
140
  };
135
141
  }
136
- function T(e, t) {
142
+ function E(e, t) {
137
143
  return e.windows.includes(t);
138
144
  }
139
- function le(e) {
145
+ function ce(e) {
140
146
  return e.returnAddress ?? e.fallbackAddress;
141
147
  }
142
- function ue(e) {
148
+ function le(e) {
143
149
  let t = null;
144
150
  for (let n of e.cards.values()) t = n.window;
145
151
  return t;
146
152
  }
147
- function de(e, t) {
153
+ function D(e, t) {
148
154
  let n = t;
149
- for (; n !== null && !T(e, n);) n = n.parent;
155
+ for (; n !== null && !E(e, n);) n = n.parent;
150
156
  return n;
151
157
  }
152
- function fe(e, t) {
158
+ function ue(e, t) {
153
159
  return e.transition = {
154
160
  number: e.transition.number + 1,
155
161
  fromAddress: e.shown,
156
- fromWindow: ue(e),
162
+ fromWindow: le(e),
157
163
  assigned: /* @__PURE__ */ new Map()
158
164
  }, e.shown = t, e.transition.number;
159
165
  }
160
- function pe(e, t, n) {
166
+ function de(e, t, n) {
161
167
  let r = e.transition, i = r.assigned.get(t);
162
- if (i !== void 0 && T(e, i)) return i;
168
+ if (i !== void 0 && E(e, i)) return i;
163
169
  let a = r.fromWindow, o = r.fromAddress;
164
- a !== null && !T(e, a) && (a = de(e, a), o = null), a !== null && le(a) === e.shown && (e.windows.splice(e.windows.indexOf(a)), a = a.parent === null ? null : de(e, a.parent), o = null);
165
- for (let n = a; n !== null; n = n.parent) if (n.key === t && T(e, n)) return e.windows.splice(e.windows.indexOf(n) + 1), n;
170
+ a !== null && !E(e, a) && (a = D(e, a), o = null), a !== null && ce(a) === e.shown && (e.windows.splice(e.windows.indexOf(a)), a = a.parent === null ? null : D(e, a.parent), o = null);
171
+ for (let n = a; n !== null; n = n.parent) if (n.key === t && E(e, n)) return e.windows.splice(e.windows.indexOf(n) + 1), n;
166
172
  a === null ? e.windows = [] : e.windows.splice(e.windows.indexOf(a) + 1);
167
173
  let s = {
168
174
  id: e.nextId,
@@ -173,18 +179,18 @@ function pe(e, t, n) {
173
179
  };
174
180
  return e.nextId += 1, e.windows.push(s), s;
175
181
  }
176
- function E(e, t, n, r) {
177
- let i = pe(e, n, r);
182
+ function O(e, t, n, r) {
183
+ let i = de(e, n, r);
178
184
  return i.fallbackAddress = r, e.transition.assigned.set(n, i), e.cards.delete(t), e.cards.set(t, {
179
185
  key: n,
180
186
  window: i,
181
187
  processed: e.transition.number
182
188
  }), i;
183
189
  }
184
- function me(e, t, n, r) {
190
+ function fe(e, t, n, r) {
185
191
  let i = e.cards.get(t);
186
192
  return i === void 0 ? {
187
- window: E(e, t, n, r),
193
+ window: O(e, t, n, r),
188
194
  rejected: !1,
189
195
  key: n
190
196
  } : i.key === n ? (i.processed = e.transition.number, {
@@ -196,37 +202,37 @@ function me(e, t, n, r) {
196
202
  rejected: !0,
197
203
  key: i.key
198
204
  } : (e.cards.delete(t), {
199
- window: E(e, t, n, r),
205
+ window: O(e, t, n, r),
200
206
  rejected: !1,
201
207
  key: n
202
208
  });
203
209
  }
204
- function he(e, t) {
210
+ function pe(e, t) {
205
211
  e.cards.delete(t);
206
212
  }
207
- function ge(e, t, n) {
213
+ function me(e, t, n) {
208
214
  let r = e.cards.get(t);
209
215
  r !== void 0 && (r.window.fallbackAddress = n);
210
216
  }
211
217
  //#endregion
212
218
  //#region src/plugin.js
213
- var _e = Symbol("dashboardUi"), ve = Object.freeze({
219
+ var k = Symbol("dashboardUi"), he = Object.freeze({
214
220
  lang: "ru",
215
221
  navigate: null,
216
222
  windows: null
217
- }), D = { uiSettings: {
218
- from: _e,
219
- default: () => ve
223
+ }), A = { uiSettings: {
224
+ from: k,
225
+ default: () => he
220
226
  } };
221
- function ye(e, t) {
222
- let n = ce(), r = g({
227
+ function ge(e, t) {
228
+ let n = se(), r = g({
223
229
  number: 0,
224
230
  address: null
225
231
  }), i = c(!0);
226
232
  return i.run(() => {
227
233
  ne(t, (e) => {
228
- let t = oe(e, window.location.origin);
229
- t !== null && t !== r.address && (r.number = fe(n, t), r.address = t);
234
+ let t = T(e, window.location.origin);
235
+ t !== null && t !== r.address && (r.number = ue(n, t), r.address = t);
230
236
  }, {
231
237
  flush: "sync",
232
238
  immediate: !0
@@ -236,21 +242,21 @@ function ye(e, t) {
236
242
  page: r
237
243
  };
238
244
  }
239
- var be = { install(e, t) {
245
+ var _e = { install(e, t) {
240
246
  let n = t ?? {}, r = Object.hasOwn(n, "lang") ? n.lang : "ru";
241
- if (!w(r)) throw Error(`dashboardUi: неизвестный lang «${r}», допустимы: ${C.join(", ")}`);
247
+ if (!w(r)) throw Error(`dashboardUi: неизвестный lang «${r}», допустимы: ${ie.join(", ")}`);
242
248
  let i = Object.hasOwn(n, "navigate"), a = i ? n.navigate : null;
243
249
  if (i && typeof a != "function") throw Error("dashboardUi: navigate должен быть функцией (href) => …");
244
250
  let o = Object.hasOwn(n, "currentUrl"), s = o ? n.currentUrl : null;
245
251
  if (o && typeof s != "function") throw Error("dashboardUi: currentUrl должен быть функцией () => адрес страницы");
246
- let c = s !== null && typeof window < "u" ? ye(e, s) : null;
247
- e.provide(_e, Object.freeze({
252
+ let c = s !== null && typeof window < "u" ? ge(e, s) : null;
253
+ e.provide(k, Object.freeze({
248
254
  lang: r,
249
255
  navigate: a,
250
256
  windows: c
251
257
  }));
252
- } }, xe = 4e4;
253
- function Se(e) {
258
+ } }, ve = 4e4;
259
+ function ye(e) {
254
260
  if (typeof e != "string") return null;
255
261
  let t = /filename\*\s*=\s*UTF-8''([^;]+)/i.exec(e);
256
262
  if (t !== null) try {
@@ -261,7 +267,7 @@ function Se(e) {
261
267
  let r = /filename\s*=\s*([^;"\s]+)/i.exec(e);
262
268
  return r === null ? null : r[1];
263
269
  }
264
- function Ce(e) {
270
+ function be(e) {
265
271
  try {
266
272
  let t = new URL(e, window.location.href).pathname.split("/").filter((e) => e !== "");
267
273
  return t.length === 0 ? null : decodeURIComponent(t[t.length - 1]);
@@ -269,7 +275,7 @@ function Ce(e) {
269
275
  return null;
270
276
  }
271
277
  }
272
- async function we(e) {
278
+ async function xe(e) {
273
279
  let t = await fetch(e, { credentials: "same-origin" });
274
280
  if (t.redirected) throw Object.assign(/* @__PURE__ */ Error(`downloadFile: сервер перенаправил запрос ${e}`), {
275
281
  redirectUrl: t.url,
@@ -279,12 +285,12 @@ async function we(e) {
279
285
  redirectUrl: null,
280
286
  status: t.status
281
287
  });
282
- let n = Se(t.headers.get("Content-Disposition")) ?? Ce(e) ?? "download", r = URL.createObjectURL(await t.blob()), i = document.createElement("a");
283
- i.href = r, i.download = n, i.style.display = "none", document.body.appendChild(i), i.click(), i.remove(), setTimeout(() => URL.revokeObjectURL(r), xe);
288
+ let n = ye(t.headers.get("Content-Disposition")) ?? be(e) ?? "download", r = URL.createObjectURL(await t.blob()), i = document.createElement("a");
289
+ i.href = r, i.download = n, i.style.display = "none", document.body.appendChild(i), i.click(), i.remove(), setTimeout(() => URL.revokeObjectURL(r), ve);
284
290
  }
285
291
  //#endregion
286
292
  //#region src/colors.js
287
- var Te = {
293
+ var Se = {
288
294
  gray: {
289
295
  pill: "bb:bg-gray-100 bb:text-gray-800",
290
296
  pillHover: "bb:hover:text-gray-600",
@@ -327,19 +333,19 @@ var Te = {
327
333
  menuItem: "bb:text-purple-800 bb:focus:bg-purple-100",
328
334
  mark: "bb:text-purple-500"
329
335
  }
330
- }, Ee = Object.keys(Te);
331
- function O(e) {
332
- return Ee.includes(e);
336
+ }, Ce = Object.keys(Se);
337
+ function j(e) {
338
+ return Ce.includes(e);
333
339
  }
334
- function De(e, t) {
335
- return O(e) ? Te[e][t] ?? "" : "";
340
+ function we(e, t) {
341
+ return j(e) ? Se[e][t] ?? "" : "";
336
342
  }
337
- var k = { methods: { colorClass: De } }, A = (e, t) => {
343
+ var M = { methods: { colorClass: we } }, N = (e, t) => {
338
344
  let n = e.__vccOpts || e;
339
345
  for (let [e, r] of t) n[e] = r;
340
346
  return n;
341
- }, Oe = {
342
- mixins: [k],
347
+ }, Te = {
348
+ mixins: [M],
343
349
  props: {
344
350
  withPulse: {
345
351
  type: Boolean,
@@ -348,11 +354,11 @@ var k = { methods: { colorClass: De } }, A = (e, t) => {
348
354
  color: {
349
355
  type: String,
350
356
  required: !0,
351
- validator: O
357
+ validator: j
352
358
  }
353
359
  }
354
360
  };
355
- function ke(e, t, n, r, o, s) {
361
+ function Ee(e, t, n, r, o, s) {
356
362
  return f(), i("div", { class: u(["bb-dashboard-ui bb:flex bb:h-full bb:items-center bb:leading-none bb:text-4xl", [e.colorClass(n.color, "mark"), { "bb:animate-pulse": n.withPulse }]]) }, [...t[0] ||= [a("svg", {
357
363
  class: "bb:fill-current bb:w-2 bb:h-2",
358
364
  viewBox: "0 0 120 120"
@@ -362,8 +368,8 @@ function ke(e, t, n, r, o, s) {
362
368
  r: "45"
363
369
  })], -1)]], 2);
364
370
  }
365
- var j = /*#__PURE__*/ A(Oe, [["render", ke]]), Ae = {
366
- components: { Dot: j },
371
+ var P = /*#__PURE__*/ N(Te, [["render", Ee]]), De = {
372
+ components: { Dot: P },
367
373
  props: {
368
374
  text: {
369
375
  type: String,
@@ -378,14 +384,14 @@ var j = /*#__PURE__*/ A(Oe, [["render", ke]]), Ae = {
378
384
  default: !1
379
385
  }
380
386
  }
381
- }, je = { class: "bb:flex bb:h-6 bb:px-3 bb:bg-white bb:items-center bb:justify-between" }, Me = ["textContent"];
382
- function Ne(e, t, n, r, o, c) {
387
+ }, Oe = { class: "bb:flex bb:h-6 bb:px-3 bb:bg-white bb:items-center bb:justify-between" }, ke = ["textContent"];
388
+ function Ae(e, t, n, r, o, c) {
383
389
  let l = h("dot");
384
- return f(), i("div", je, [
390
+ return f(), i("div", Oe, [
385
391
  a("div", {
386
392
  class: "bb:flex bb:flex-1 bb:h-full bb:items-center bb:text-xs bb:text-gray-500 bb:whitespace-nowrap bb:truncate bb:leading-tight bb:select-none",
387
393
  textContent: _(n.text)
388
- }, null, 8, Me),
394
+ }, null, 8, ke),
389
395
  x(s(l, {
390
396
  color: "red",
391
397
  "with-pulse": !0,
@@ -397,8 +403,8 @@ function Ne(e, t, n, r, o, c) {
397
403
  }, null, 512), [[y, n.isRequired]])
398
404
  ]);
399
405
  }
400
- var M = /*#__PURE__*/ A(Ae, [["render", Ne]]), N = {
401
- inject: D,
406
+ var F = /*#__PURE__*/ N(De, [["render", Ae]]), I = {
407
+ inject: A,
402
408
  props: { lang: {
403
409
  type: String,
404
410
  default: null,
@@ -412,11 +418,11 @@ var M = /*#__PURE__*/ A(Ae, [["render", Ne]]), N = {
412
418
  return ae[this.resolvedLang];
413
419
  }
414
420
  }
415
- }, Pe = [
421
+ }, je = [
416
422
  { transform: "scale(1)" },
417
423
  { transform: "scale(0.8)" },
418
424
  { transform: "scale(1)" }
419
- ], Fe = 150, Ie = {
425
+ ], Me = 150, Ne = {
420
426
  created() {
421
427
  this.isPressing = !1, this.isUnmounted = !1;
422
428
  },
@@ -424,40 +430,39 @@ var M = /*#__PURE__*/ A(Ae, [["render", Ne]]), N = {
424
430
  this.isUnmounted = !0;
425
431
  },
426
432
  methods: { press() {
427
- this.isPressing || (this.isPressing = !0, Le(this.$el).then(() => {
433
+ this.isPressing || (this.isPressing = !0, Pe(this.$el).then(() => {
428
434
  this.isPressing = !1, this.isUnmounted || this.$emit("clicked");
429
435
  }));
430
436
  } }
431
437
  };
432
- function Le(e) {
433
- if (typeof e.animate != "function" || Re()) return Promise.resolve();
438
+ function Pe(e) {
439
+ if (typeof e.animate != "function" || Fe()) return Promise.resolve();
434
440
  let t = () => {};
435
- return e.animate(Pe, {
436
- duration: Fe,
441
+ return e.animate(je, {
442
+ duration: Me,
437
443
  easing: "ease-out"
438
444
  }).finished.then(t, t);
439
445
  }
440
- function Re() {
446
+ function Fe() {
441
447
  return typeof window.matchMedia == "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
442
448
  }
443
449
  //#endregion
444
450
  //#region src/components/CrossButton.vue
445
- var ze = {
446
- mixins: [N, Ie],
451
+ var Ie = {
452
+ mixins: [I, Ne],
447
453
  props: { size: {
448
454
  type: String,
449
455
  required: !0,
450
456
  validator: (e) => ["small", "large"].includes(e)
451
457
  } },
452
458
  emits: ["clicked"]
453
- }, Be = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
454
- function Ve(e, t, n, r, s, c) {
459
+ }, Le = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" }, Re = { class: "bb:flex bb:rounded-md bb:group-focus-visible:focus-ring bb:pointer-events-none bb:cursor-default" };
460
+ function ze(e, t, n, r, s, c) {
455
461
  return f(), i("button", {
456
462
  type: "button",
457
- tabindex: "-1",
458
- class: "bb-dashboard-ui bb:flex bb:items-center bb:justify-center bb:bg-transparent bb:cursor-pointer bb:text-gray-400 bb:focus:outline-hidden bb:hover:text-gray-500",
459
- onClick: t[0] ||= S((...t) => e.press && e.press(...t), ["prevent"])
460
- }, [a("span", Be, [m(e.$slots, "default", {}, () => [o(_(e.texts.clear), 1)])]), (f(), i("svg", {
463
+ class: "bb-dashboard-ui bb:group bb:flex bb:items-center bb:justify-center bb:bg-transparent bb:cursor-pointer bb:text-gray-400 bb:focus:outline-hidden bb:hover:text-gray-500",
464
+ onClick: t[0] ||= C((...t) => e.press && e.press(...t), ["prevent"])
465
+ }, [a("span", Le, [m(e.$slots, "default", {}, () => [o(_(e.texts.clear), 1)])]), a("span", Re, [(f(), i("svg", {
461
466
  class: u(["bb:stroke-current bb:pointer-events-none bb:cursor-default", {
462
467
  "bb:w-6 bb:h-6": n.size === "small",
463
468
  "bb:w-8 bb:h-8": n.size === "large"
@@ -470,26 +475,26 @@ function Ve(e, t, n, r, s, c) {
470
475
  "stroke-linejoin": "round",
471
476
  "stroke-width": "2",
472
477
  d: "M6 18L18 6M6 6l12 12"
473
- }, null, -1)]], 2))]);
478
+ }, null, -1)]], 2))])]);
474
479
  }
475
- var P = /*#__PURE__*/ A(ze, [["render", Ve]]), He = 10;
476
- function Ue(e) {
480
+ var L = /*#__PURE__*/ N(Ie, [["render", ze]]), Be = 10;
481
+ function Ve(e) {
477
482
  let t = e.replace(/\D/g, "");
478
- return (t.startsWith("7") || t.startsWith("8")) && t[1] === "9" && (t = t.slice(1)), t.slice(0, He);
483
+ return (t.startsWith("7") || t.startsWith("8")) && t[1] === "9" && (t = t.slice(1)), t.slice(0, Be);
479
484
  }
480
- function F(e) {
485
+ function R(e) {
481
486
  return e === "" ? "" : `7${e}`;
482
487
  }
483
- function I(e) {
488
+ function z(e) {
484
489
  let t = e ?? "", n = t.startsWith("+") ? t.slice(1) : t;
485
490
  return n.startsWith("7") ? n.slice(1) : n;
486
491
  }
487
492
  //#endregion
488
493
  //#region src/components/RussianMobileFilter.vue
489
- var We = 400, Ge = 3, Ke = {
494
+ var He = 400, Ue = 3, We = {
490
495
  components: {
491
- ElementHeader: M,
492
- CrossButton: P
496
+ ElementHeader: F,
497
+ CrossButton: L
493
498
  },
494
499
  emits: ["update:modelValue", "changed"],
495
500
  props: {
@@ -511,32 +516,32 @@ var We = 400, Ge = 3, Ke = {
511
516
  }
512
517
  },
513
518
  data() {
514
- return { digits: I(this.modelValue) };
519
+ return { digits: z(this.modelValue) };
515
520
  },
516
521
  created() {
517
- this.mask = null, this.debounceTimer = null, this.isWritingProgrammatically = !1, this.lastCommitted = I(this.modelValue), this.isUnmounted = !1;
522
+ this.mask = null, this.debounceTimer = null, this.isWritingProgrammatically = !1, this.lastCommitted = z(this.modelValue), this.isUnmounted = !1;
518
523
  },
519
524
  mounted() {
520
- this.mask = ie(this.$refs.input, {
525
+ this.mask = re(this.$refs.input, {
521
526
  mask: "+7 (000) 000 00 00",
522
527
  lazy: !0,
523
528
  prepare: (e, t) => t.unmaskedValue === "" && (e === "7" || e === "8") ? "" : e
524
529
  }), this.mask.on("accept", () => {
525
- this.isWritingProgrammatically || (this.digits = this.mask.unmaskedValue, this.$emit("update:modelValue", F(this.digits)), this.scheduleCommit());
530
+ this.isWritingProgrammatically || (this.digits = this.mask.unmaskedValue, this.$emit("update:modelValue", R(this.digits)), this.scheduleCommit());
526
531
  }), this.syncFromModelValue(this.modelValue);
527
532
  },
528
533
  beforeUnmount() {
529
534
  this.isUnmounted = !0, clearTimeout(this.debounceTimer), this.mask?.destroy();
530
535
  },
531
536
  watch: { modelValue(e) {
532
- e !== F(this.digits) && this.syncFromModelValue(e);
537
+ e !== R(this.digits) && this.syncFromModelValue(e);
533
538
  } },
534
539
  methods: {
535
540
  syncFromModelValue(e) {
536
- this.writeToMask(I(e)), this.digits = this.mask.unmaskedValue, this.lastCommitted = this.digits;
541
+ this.writeToMask(z(e)), this.digits = this.mask.unmaskedValue, this.lastCommitted = this.digits;
537
542
  },
538
543
  applyUserDigits(e) {
539
- this.writeToMask(e), this.digits = this.mask.unmaskedValue, this.$emit("update:modelValue", F(this.digits));
544
+ this.writeToMask(e), this.digits = this.mask.unmaskedValue, this.$emit("update:modelValue", R(this.digits));
540
545
  },
541
546
  writeToMask(e) {
542
547
  if (this.isWritingProgrammatically = !0, e === "") this.mask.value = "";
@@ -559,26 +564,30 @@ var We = 400, Ge = 3, Ke = {
559
564
  this.isUnmounted || (this.setLazy(!0), this.digits === "" && this.writeToMask(""), this.commit());
560
565
  },
561
566
  onPaste(e) {
562
- this.applyUserDigits(Ue(e.clipboardData?.getData("text") ?? "")), this.scheduleCommit();
567
+ this.applyUserDigits(Ve(e.clipboardData?.getData("text") ?? "")), this.scheduleCommit();
568
+ },
569
+ moveFocusFromEraser() {
570
+ let e = this.$refs.eraser.$el;
571
+ document.activeElement === e && e.matches(":focus-visible") && this.$refs.input.focus({ preventScroll: !0 });
563
572
  },
564
573
  clear() {
565
- this.applyUserDigits(""), this.commit();
574
+ this.moveFocusFromEraser(), this.applyUserDigits(""), this.commit();
566
575
  },
567
576
  scheduleCommit() {
568
577
  if (clearTimeout(this.debounceTimer), this.digits.length === 0) {
569
578
  this.commit();
570
579
  return;
571
580
  }
572
- this.digits.length < Ge || (this.debounceTimer = setTimeout(() => this.commit(), We));
581
+ this.digits.length < Ue || (this.debounceTimer = setTimeout(() => this.commit(), He));
573
582
  },
574
583
  commit() {
575
584
  clearTimeout(this.debounceTimer), this.digits !== this.lastCommitted && (this.lastCommitted = this.digits, this.$emit("changed"));
576
585
  }
577
586
  }
578
- }, qe = { class: "bb-dashboard-ui bb:flex bb:flex-none" }, Je = { class: "bb:flex bb:w-full bb:flex-col bb:border bb:border-white bb:bg-white" }, Ye = { class: "bb:relative bb:flex bb:h-full bb:w-full" }, Xe = { class: "bb:flex bb:w-full bb:h-full bb:items-center bb:justify-center" };
579
- function Ze(e, t, n, r, o, c) {
587
+ }, Ge = { class: "bb-dashboard-ui bb:flex bb:flex-none" }, Ke = { class: "bb:flex bb:w-full bb:flex-col bb:border bb:border-white bb:bg-white" }, qe = { class: "bb:relative bb:flex bb:h-full bb:w-full" }, Je = { class: "bb:flex bb:w-full bb:h-full bb:items-center bb:justify-center" };
588
+ function Ye(e, t, n, r, o, c) {
580
589
  let l = h("element-header"), u = h("cross-button");
581
- return f(), i("div", qe, [a("div", Je, [s(l, {
590
+ return f(), i("div", Ge, [a("div", Ke, [s(l, {
582
591
  text: n.header,
583
592
  "is-required": n.isRequired,
584
593
  "is-loading": n.isLoading
@@ -586,27 +595,28 @@ function Ze(e, t, n, r, o, c) {
586
595
  "text",
587
596
  "is-required",
588
597
  "is-loading"
589
- ]), a("div", Ye, [a("label", Xe, [a("input", {
598
+ ]), a("div", qe, [a("label", Je, [a("input", {
590
599
  ref: "input",
591
600
  type: "tel",
592
601
  inputmode: "tel",
593
602
  autocomplete: "off",
594
- class: "bb:flex bb:w-phone bb:h-full bb:px-3 bb:py-2 bb:cursor-pointer bb:truncate bb:focus:outline-hidden bb:border-none",
603
+ class: "bb:flex bb:w-phone bb:h-full bb:px-3 bb:py-2 bb:cursor-pointer bb:truncate bb:focus:focus-ring bb:border-none",
595
604
  onFocus: t[0] ||= (...e) => c.onFocus && c.onFocus(...e),
596
605
  onBlur: t[1] ||= (...e) => c.onBlur && c.onBlur(...e),
597
- onKeydown: t[2] ||= re((...e) => c.commit && c.commit(...e), ["enter"]),
598
- onPaste: t[3] ||= S((...e) => c.onPaste && c.onPaste(...e), ["prevent"])
606
+ onKeydown: t[2] ||= S((...e) => c.commit && c.commit(...e), ["enter"]),
607
+ onPaste: t[3] ||= C((...e) => c.onPaste && c.onPaste(...e), ["prevent"])
599
608
  }, null, 544)]), x(s(u, {
609
+ ref: "eraser",
600
610
  size: "small",
601
- onMousedown: t[4] ||= S(() => {}, ["prevent"]),
611
+ onMousedown: t[4] ||= C(() => {}, ["prevent"]),
602
612
  onClicked: c.clear,
603
613
  class: "bb:absolute bb:right-0 bb:top-0 bb:pr-2 bb:h-full"
604
614
  }, null, 8, ["onClicked"]), [[y, o.digits.length > 0]])])])]);
605
615
  }
606
- var Qe = /*#__PURE__*/ A(Ke, [["render", Ze]]), $e = {
616
+ var Xe = /*#__PURE__*/ N(We, [["render", Ye]]), Ze = {
607
617
  components: {
608
- ElementHeader: M,
609
- CrossButton: P
618
+ ElementHeader: F,
619
+ CrossButton: L
610
620
  },
611
621
  emits: ["update:modelValue", "changed"],
612
622
  props: {
@@ -637,17 +647,21 @@ var Qe = /*#__PURE__*/ A(Ke, [["render", Ze]]), $e = {
637
647
  this.search = e ?? "";
638
648
  } },
639
649
  methods: {
650
+ moveFocusFromEraser() {
651
+ let e = this.$refs.eraser.$el;
652
+ document.activeElement === e && e.matches(":focus-visible") && this.$refs.input.focus({ preventScroll: !0 });
653
+ },
640
654
  clearInput() {
641
- this.search = "", this.startSearch();
655
+ this.moveFocusFromEraser(), this.search = "", this.startSearch();
642
656
  },
643
657
  startSearch() {
644
658
  this.$emit("update:modelValue", this.search), this.$emit("changed");
645
659
  }
646
660
  }
647
- }, et = { class: "bb-dashboard-ui bb:flex bb:flex-none" }, tt = { class: "bb:flex bb:w-full bb:flex-col bb:border bb:border-white bb:bg-white" }, nt = { class: "bb:relative bb:flex bb:h-full bb:w-full" }, rt = { class: "bb:flex bb:w-full bb:h-full bb:items-center bb:justify-center" };
648
- function it(e, t, n, r, o, c) {
661
+ }, Qe = { class: "bb-dashboard-ui bb:flex bb:flex-none" }, $e = { class: "bb:flex bb:w-full bb:flex-col bb:border bb:border-white bb:bg-white" }, et = { class: "bb:relative bb:flex bb:h-full bb:w-full" }, tt = { class: "bb:flex bb:w-full bb:h-full bb:items-center bb:justify-center" };
662
+ function nt(e, t, n, r, o, c) {
649
663
  let l = h("element-header"), u = h("cross-button");
650
- return f(), i("div", et, [a("div", tt, [s(l, {
664
+ return f(), i("div", Qe, [a("div", $e, [s(l, {
651
665
  text: n.header,
652
666
  "is-required": n.isRequired,
653
667
  "is-loading": n.isLoading
@@ -655,8 +669,9 @@ function it(e, t, n, r, o, c) {
655
669
  "text",
656
670
  "is-required",
657
671
  "is-loading"
658
- ]), a("div", nt, [a("label", rt, [x(a("input", {
659
- class: "bb:flex bb:w-full bb:h-full bb:px-3 bb:py-2 bb:cursor-pointer bb:truncate bb:focus:outline-hidden bb:border-none",
672
+ ]), a("div", et, [a("label", tt, [x(a("input", {
673
+ ref: "input",
674
+ class: "bb:flex bb:w-full bb:h-full bb:px-3 bb:py-2 bb:cursor-pointer bb:truncate bb:focus:focus-ring bb:border-none",
660
675
  "onUpdate:modelValue": t[0] ||= (e) => o.search = e,
661
676
  onInput: t[1] ||= (...e) => c.startSearch && c.startSearch(...e)
662
677
  }, null, 544), [[
@@ -665,42 +680,43 @@ function it(e, t, n, r, o, c) {
665
680
  void 0,
666
681
  { trim: !0 }
667
682
  ]])]), x(s(u, {
683
+ ref: "eraser",
668
684
  size: "small",
669
685
  onClicked: c.clearInput,
670
686
  class: "bb:absolute bb:right-0 bb:top-0 bb:pr-2 bb:h-full"
671
687
  }, null, 8, ["onClicked"]), [[y, c.inputNeedsEraser]])])])]);
672
688
  }
673
- var at = /*#__PURE__*/ A($e, [["render", it]]), L = 4, R = 8;
674
- function ot(e) {
689
+ var rt = /*#__PURE__*/ N(Ze, [["render", nt]]), B = 4, V = 8;
690
+ function H(e) {
675
691
  return typeof e?.showPopover == "function";
676
692
  }
677
- function z(e) {
678
- return ot(e) && e.matches(":popover-open");
693
+ function U(e) {
694
+ return H(e) && e.matches(":popover-open");
679
695
  }
680
- function B(e, t, { maxWidth: n = null, align: r = "end", fitsBelow: i = !0, fitsRight: a = !0 } = {}) {
681
- let o = e.getBoundingClientRect(), s = document.documentElement.clientWidth, c = document.documentElement.clientHeight, l = Math.max(R, o.left), u = Math.max(R, s - o.right), d = Math.max(0, s - l - R), f = Math.max(0, s - u - R), p = r === "start" && (a || d >= f), m = Math.max(0, c - o.bottom - L - R), h = Math.max(0, o.top - L - R), g = i || m >= h, _ = "";
696
+ function W(e, t, { maxWidth: n = null, align: r = "end", fitsBelow: i = !0, fitsRight: a = !0 } = {}) {
697
+ let o = e.getBoundingClientRect(), s = document.documentElement.clientWidth, c = document.documentElement.clientHeight, l = Math.max(V, o.left), u = Math.max(V, s - o.right), d = Math.max(0, s - l - V), f = Math.max(0, s - u - V), p = r === "start" && (a || d >= f), m = Math.max(0, c - o.bottom - B - V), h = Math.max(0, o.top - B - V), g = i || m >= h, _ = "";
682
698
  if (r === "start") {
683
699
  let e = p ? d : f;
684
700
  _ = `${n === null ? e : Math.min(n, e)}px`;
685
701
  } else n !== null && (_ = `${Math.min(n, f)}px`);
686
702
  Object.assign(t.style, {
687
- top: g ? `${o.bottom + L}px` : "auto",
688
- bottom: g ? "auto" : `${c - o.top + L}px`,
703
+ top: g ? `${o.bottom + B}px` : "auto",
704
+ bottom: g ? "auto" : `${c - o.top + B}px`,
689
705
  right: p ? "auto" : `${u}px`,
690
706
  left: p ? `${l}px` : "auto",
691
707
  maxHeight: `${g ? m : h}px`,
692
708
  maxWidth: _
693
709
  });
694
710
  }
695
- function st(e, t, n = {}) {
711
+ function it(e, t, n = {}) {
696
712
  let r = t.scrollHeight <= t.clientHeight + 1, i = t.scrollWidth <= t.clientWidth + 1;
697
- r && i || B(e, t, {
713
+ r && i || W(e, t, {
698
714
  ...n,
699
715
  fitsBelow: r,
700
716
  fitsRight: i
701
717
  });
702
718
  }
703
- function ct(e, t) {
719
+ function at(e, t) {
704
720
  let n = (n) => {
705
721
  e.contains(n.target) || t();
706
722
  };
@@ -713,26 +729,39 @@ function ct(e, t) {
713
729
  }
714
730
  //#endregion
715
731
  //#region src/menuFocus.js
716
- var V = "a[href], button";
717
- function lt(e, t = () => null) {
718
- let n = (n) => {
719
- if (n.key !== "ArrowDown" && n.key !== "ArrowUp") return;
720
- let r = [...e.querySelectorAll(V)];
721
- if (r.length === 0) return;
722
- n.preventDefault();
723
- let i = n.key === "ArrowDown" ? 1 : -1, a = r.indexOf(document.activeElement);
724
- a === -1 && (a = r.indexOf(t())), r[a === -1 ? i === 1 ? 0 : r.length - 1 : (a + i + r.length) % r.length].focus();
725
- }, r = (e) => {
726
- let t = e.target.closest(V);
727
- t !== null && t.focus({ preventScroll: !0 });
732
+ var G = "a[href], button";
733
+ function ot(e, t = () => null, n = null) {
734
+ let r = (r) => {
735
+ if (r.key !== "ArrowDown" && r.key !== "ArrowUp") return;
736
+ let i = n === null ? [...e.querySelectorAll(G)] : n();
737
+ if (i.length === 0) return;
738
+ r.preventDefault();
739
+ let a = r.key === "ArrowDown" ? 1 : -1, o = i.indexOf(document.activeElement);
740
+ o === -1 && (o = i.indexOf(t())), i[o === -1 ? a === 1 ? 0 : i.length - 1 : (o + a + i.length) % i.length].focus();
741
+ }, i = (e) => {
742
+ let t = e.target.closest(G);
743
+ t !== null && (n === null || n().includes(t)) && t.focus({ preventScroll: !0 });
728
744
  };
729
- return document.addEventListener("keydown", n, !0), e.addEventListener("mousemove", r), () => {
730
- document.removeEventListener("keydown", n, !0), e.removeEventListener("mousemove", r);
745
+ return document.addEventListener("keydown", r, !0), e.addEventListener("mousemove", i), () => {
746
+ document.removeEventListener("keydown", r, !0), e.removeEventListener("mousemove", i);
747
+ };
748
+ }
749
+ function st(e) {
750
+ let t = (t) => {
751
+ if (t.key !== "Tab" || t.ctrlKey || t.altKey || t.metaKey) return;
752
+ let n = e();
753
+ if (n.length === 0) return;
754
+ t.preventDefault();
755
+ let r = t.shiftKey ? -1 : 1, i = n.indexOf(document.activeElement);
756
+ n[i === -1 ? r === 1 ? 0 : n.length - 1 : (i + r + n.length) % n.length].focus();
757
+ };
758
+ return document.addEventListener("keydown", t, !0), () => {
759
+ document.removeEventListener("keydown", t, !0);
731
760
  };
732
761
  }
733
762
  //#endregion
734
763
  //#region src/components/PopoverPanel.vue
735
- var ut = {
764
+ var ct = {
736
765
  emits: ["update:modelValue", "toggle"],
737
766
  props: {
738
767
  modelValue: {
@@ -760,6 +789,18 @@ var ut = {
760
789
  type: Function,
761
790
  default: () => null
762
791
  },
792
+ findStops: {
793
+ type: Function,
794
+ default: null
795
+ },
796
+ findTabStops: {
797
+ type: Function,
798
+ default: null
799
+ },
800
+ keepSize: {
801
+ type: Boolean,
802
+ default: !1
803
+ },
763
804
  closeOnClick: {
764
805
  type: Boolean,
765
806
  default: !1
@@ -810,7 +851,7 @@ var ut = {
810
851
  }
811
852
  },
812
853
  created() {
813
- this.stopClosing = null, this.stopArrows = null, this.focusWasInside = !1, this.panelShown = !1;
854
+ this.stopClosing = null, this.stopArrows = null, this.stopTab = null, this.focusWasInside = !1, this.panelShown = !1;
814
855
  },
815
856
  mounted() {
816
857
  this.applyPanelState();
@@ -821,11 +862,11 @@ var ut = {
821
862
  methods: {
822
863
  applyPanelState() {
823
864
  let e = this.$refs.panel;
824
- ot(e) && e.isConnected && (this.panelIsOpen && !z(e) && e.showPopover(), !this.panelIsOpen && z(e) && e.hidePopover());
865
+ H(e) && e.isConnected && (this.panelIsOpen && !U(e) && e.showPopover(), !this.panelIsOpen && U(e) && e.hidePopover());
825
866
  },
826
867
  close() {
827
868
  let e = this.$refs.panel;
828
- z(e) && e.hidePopover();
869
+ U(e) && e.hidePopover();
829
870
  },
830
871
  reportPanelShown(e) {
831
872
  this.panelShown !== e && (this.panelShown = e, this.$emit("toggle", e));
@@ -839,9 +880,13 @@ var ut = {
839
880
  maxWidth: this.maxWidth,
840
881
  align: this.align
841
882
  };
842
- B(e, this.$refs.panel, t), requestAnimationFrame(() => {
883
+ this.$refs.panel.style.minWidth = "", this.$refs.panel.style.minHeight = "", this.$refs.panel.style.scrollbarGutter = "", W(e, this.$refs.panel, t), requestAnimationFrame(() => {
843
884
  let n = this.$refs.panel;
844
- z(n) && st(e, n, t);
885
+ if (U(n) && (it(e, n, t), this.keepSize)) {
886
+ n.scrollHeight > n.clientHeight + 1 && (n.style.scrollbarGutter = "stable");
887
+ let e = n.getBoundingClientRect();
888
+ n.style.minWidth = `${e.width}px`, n.style.top === "auto" && (n.style.minHeight = `${e.height}px`);
889
+ }
845
890
  });
846
891
  return;
847
892
  }
@@ -850,8 +895,8 @@ var ut = {
850
895
  },
851
896
  onToggle() {
852
897
  this.stopListening();
853
- let e = this.$refs.panel, t = z(e);
854
- t && (this.stopClosing = ct(e, this.close), this.arrows && (this.stopArrows = lt(e, this.findSelected))), t || this.restoreFocus(e), this.reportPanelShown(t), t !== this.panelIsOpen && (this.panelIsOpen = t, this.$emit("update:modelValue", t));
898
+ let e = this.$refs.panel, t = U(e);
899
+ t && (this.stopClosing = at(e, this.close), this.arrows && (this.stopArrows = ot(e, this.findSelected, this.findStops)), this.findTabStops !== null && (this.stopTab = st(this.findTabStops))), t || this.restoreFocus(e), this.reportPanelShown(t), t !== this.panelIsOpen && (this.panelIsOpen = t, this.$emit("update:modelValue", t));
855
900
  },
856
901
  restoreFocus(e) {
857
902
  let t = this.focusWasInside;
@@ -860,13 +905,13 @@ var ut = {
860
905
  (n === null || n === document.body || e != null && e.contains(n)) && document.getElementById(this.buttonId)?.focus({ preventScroll: !0 });
861
906
  },
862
907
  stopListening() {
863
- this.stopClosing !== null && (this.stopClosing(), this.stopClosing = null), this.stopArrows !== null && (this.stopArrows(), this.stopArrows = null);
908
+ this.stopClosing !== null && (this.stopClosing(), this.stopClosing = null), this.stopArrows !== null && (this.stopArrows(), this.stopArrows = null), this.stopTab !== null && (this.stopTab(), this.stopTab = null);
864
909
  }
865
910
  }
866
- }, dt = {
911
+ }, lt = {
867
912
  key: 0,
868
913
  class: "bb:relative"
869
- }, ft = [
914
+ }, ut = [
870
915
  "id",
871
916
  "role",
872
917
  "aria-orientation",
@@ -874,8 +919,8 @@ var ut = {
874
919
  "aria-label",
875
920
  "tabindex"
876
921
  ];
877
- function pt(e, t, n, o, s, c) {
878
- return n.hasContent ? (f(), i("span", dt, [m(e.$slots, "trigger", {
922
+ function dt(e, t, n, o, s, c) {
923
+ return n.hasContent ? (f(), i("span", lt, [m(e.$slots, "trigger", {
879
924
  id: o.buttonId,
880
925
  popovertarget: o.panelId
881
926
  }), a("div", {
@@ -891,15 +936,15 @@ function pt(e, t, n, o, s, c) {
891
936
  onBeforetoggle: t[0] ||= (...e) => c.onBeforeToggle && c.onBeforeToggle(...e),
892
937
  onToggle: t[1] ||= (...e) => c.onToggle && c.onToggle(...e),
893
938
  onClick: t[2] ||= (...e) => c.onClick && c.onClick(...e)
894
- }, [m(e.$slots, "default")], 42, ft)])) : r("", !0);
939
+ }, [m(e.$slots, "default")], 42, ut)])) : r("", !0);
895
940
  }
896
- var H = /*#__PURE__*/ A(ut, [["render", pt]]);
941
+ var K = /*#__PURE__*/ N(ct, [["render", dt]]);
897
942
  //#endregion
898
943
  //#region src/date.js
899
- function U(e) {
944
+ function q(e) {
900
945
  return `${String(e.getDate()).padStart(2, "0")}.${String(e.getMonth() + 1).padStart(2, "0")}.${String(e.getFullYear()).padStart(4, "0")}`;
901
946
  }
902
- function W(e) {
947
+ function J(e) {
903
948
  let t = /^(\d{1,2})\.(\d{1,2})\.(\d{4})$/.exec(e);
904
949
  if (t === null) return null;
905
950
  let [, n, r, i] = t.map(Number), a = /* @__PURE__ */ new Date(0);
@@ -907,11 +952,11 @@ function W(e) {
907
952
  }
908
953
  //#endregion
909
954
  //#region src/dayFocus.js
910
- var G = ".pika-button.pika-day", mt = ".pika-button, .pika-prev, .pika-next";
911
- function ht(e, t = () => null) {
955
+ var Y = ".pika-button.pika-day", ft = ".pika-button, .pika-prev, .pika-next";
956
+ function pt(e, t = () => null) {
912
957
  let n = (n) => {
913
958
  if (n.detail !== 0) return;
914
- let r = n.target.closest(mt);
959
+ let r = n.target.closest(ft);
915
960
  r !== null && e.contains(r) && setTimeout(() => {
916
961
  let n = document.activeElement === r;
917
962
  if (r.dispatchEvent(new MouseEvent("mousedown", {
@@ -924,46 +969,46 @@ function ht(e, t = () => null) {
924
969
  };
925
970
  return e.addEventListener("click", n), () => e.removeEventListener("click", n);
926
971
  }
927
- var gt = {
972
+ var mt = {
928
973
  ArrowLeft: -1,
929
974
  ArrowRight: 1,
930
975
  ArrowUp: -7,
931
976
  ArrowDown: 7
932
977
  };
933
- function _t(e, t) {
978
+ function ht(e, t) {
934
979
  let n = (n) => {
935
- let r = gt[n.key];
936
- if (r === void 0 || vt(document.activeElement)) return;
980
+ let r = mt[n.key];
981
+ if (r === void 0 || gt(document.activeElement)) return;
937
982
  n.preventDefault();
938
- let i = document.activeElement?.closest(G) ?? null, a = i !== null && e.contains(i) ? bt(yt(i), r) : t.getDate() ?? xt();
939
- K(e, a) === null && t.gotoDate(a), K(e, a)?.focus();
983
+ let i = document.activeElement?.closest(Y) ?? null, a = i !== null && e.contains(i) ? vt(_t(i), r) : t.getDate() ?? yt();
984
+ X(e, a) === null && t.gotoDate(a), X(e, a)?.focus();
940
985
  };
941
986
  return document.addEventListener("keydown", n, !0), () => document.removeEventListener("keydown", n, !0);
942
987
  }
943
- function vt(e) {
988
+ function gt(e) {
944
989
  return e !== null && e.matches("input, select, textarea, [contenteditable]");
945
990
  }
946
- function yt(e) {
991
+ function _t(e) {
947
992
  return new Date(e.dataset.pikaYear, e.dataset.pikaMonth, e.dataset.pikaDay);
948
993
  }
949
- function bt(e, t) {
994
+ function vt(e, t) {
950
995
  return new Date(e.getFullYear(), e.getMonth(), e.getDate() + t);
951
996
  }
952
- function xt() {
997
+ function yt() {
953
998
  let e = /* @__PURE__ */ new Date();
954
999
  return new Date(e.getFullYear(), e.getMonth(), e.getDate());
955
1000
  }
956
- function K(e, t) {
957
- return e.querySelector(`${G}[data-pika-year="${t.getFullYear()}"][data-pika-month="${t.getMonth()}"][data-pika-day="${t.getDate()}"]`);
1001
+ function X(e, t) {
1002
+ return e.querySelector(`${Y}[data-pika-year="${t.getFullYear()}"][data-pika-month="${t.getMonth()}"][data-pika-day="${t.getDate()}"]`);
958
1003
  }
959
1004
  //#endregion
960
1005
  //#region src/components/PickDay.vue
961
- var St = {
1006
+ var bt = {
962
1007
  components: {
963
- PopoverPanel: H,
964
- CrossButton: P
1008
+ PopoverPanel: K,
1009
+ CrossButton: L
965
1010
  },
966
- mixins: [N],
1011
+ mixins: [I],
967
1012
  emits: ["update:modelValue", "changed"],
968
1013
  props: {
969
1014
  modelValue: {
@@ -990,8 +1035,8 @@ var St = {
990
1035
  keyboardInput: !1,
991
1036
  bound: !1,
992
1037
  firstDay: 1,
993
- parse: (e) => W(e),
994
- toString: (e) => U(e),
1038
+ parse: (e) => J(e),
1039
+ toString: (e) => q(e),
995
1040
  i18n: {
996
1041
  previousMonth: this.texts.previousMonth,
997
1042
  nextMonth: this.texts.nextMonth,
@@ -1000,9 +1045,9 @@ var St = {
1000
1045
  weekdaysShort: this.texts.weekdaysShort
1001
1046
  },
1002
1047
  onSelect: (e) => {
1003
- this.popupIsOpen = !1, this.$emit("update:modelValue", U(e)), this.$emit("changed");
1048
+ this.popupIsOpen = !1, this.$emit("update:modelValue", q(e)), this.$emit("changed");
1004
1049
  }
1005
- }), this.stopPickOnClick = ht(this.$refs.container, () => this.$refs.trigger), this.syncDayFocus());
1050
+ }), this.stopPickOnClick = pt(this.$refs.container, () => this.$refs.trigger), this.syncDayFocus());
1006
1051
  },
1007
1052
  beforeUnmount() {
1008
1053
  this.isUnmounted = !0, this.stopPickOnClick?.(), this.stopDayFocus?.(), this.picker?.destroy();
@@ -1023,20 +1068,31 @@ var St = {
1023
1068
  }
1024
1069
  },
1025
1070
  methods: {
1071
+ openOnKey(e) {
1072
+ e.ctrlKey || e.altKey || e.metaKey || e.isComposing || [
1073
+ "ArrowDown",
1074
+ "Enter",
1075
+ " "
1076
+ ].includes(e.key) && (e.preventDefault(), this.$refs.trigger.focus({ preventScroll: !0 }), this.popupIsOpen = !0);
1077
+ },
1026
1078
  syncDayFocus() {
1027
- this.stopDayFocus?.(), this.stopDayFocus = null, this.popupIsOpen && this.picker !== null && (this.stopDayFocus = _t(this.$refs.container, this.picker));
1079
+ this.stopDayFocus?.(), this.stopDayFocus = null, this.popupIsOpen && this.picker !== null && (this.stopDayFocus = ht(this.$refs.container, this.picker));
1028
1080
  },
1029
1081
  syncPicker(e) {
1030
1082
  if (this.picker === null) return;
1031
- let t = W(e);
1083
+ let t = J(e);
1032
1084
  if (t === null) {
1033
1085
  this.picker.clear();
1034
1086
  return;
1035
1087
  }
1036
1088
  this.picker.setDate(t, !0);
1037
1089
  },
1090
+ moveFocusFromEraser() {
1091
+ let e = this.$refs.eraser.$el;
1092
+ document.activeElement === e && e.matches(":focus-visible") && this.$refs.trigger.focus({ preventScroll: !0 });
1093
+ },
1038
1094
  clearPicker() {
1039
- this.$emit("update:modelValue", ""), this.dayValue = "", this.picker?.clear(), this.$emit("changed");
1095
+ this.moveFocusFromEraser(), this.$emit("update:modelValue", ""), this.dayValue = "", this.picker?.clear(), this.$emit("changed");
1040
1096
  }
1041
1097
  },
1042
1098
  computed: {
@@ -1050,20 +1106,20 @@ var St = {
1050
1106
  return !this.withEraser || this.popupIsOpen ? !1 : this.hasValue;
1051
1107
  }
1052
1108
  }
1053
- }, Ct = { class: "bb-dashboard-ui bb:flex bb:flex-col" }, wt = { class: "bb:relative bb:flex bb:h-full" }, Tt = ["id", "popovertarget"], Et = ["textContent"], Dt = { class: "bb:flex bb:w-full bb:items-center bb:leading-none bb:min-w-24 bb:pointer-events-none" }, Ot = [
1109
+ }, xt = { class: "bb-dashboard-ui bb:flex bb:flex-col" }, St = { class: "bb:relative bb:flex bb:h-full" }, Ct = ["id", "popovertarget"], wt = ["textContent"], Tt = { class: "bb:flex bb:w-full bb:items-center bb:leading-none bb:min-w-24 bb:pointer-events-none" }, Et = [
1054
1110
  "disabled",
1055
1111
  "value",
1056
1112
  "placeholder"
1057
- ], kt = {
1113
+ ], Dt = {
1058
1114
  ref: "container",
1059
1115
  class: "bb:flex"
1060
1116
  };
1061
- function At(e, t, o, c, l, u) {
1117
+ function Ot(e, t, o, c, l, u) {
1062
1118
  let d = h("popover-panel"), p = h("cross-button");
1063
- return f(), i("div", Ct, [a("div", wt, [s(d, {
1119
+ return f(), i("div", xt, [a("div", St, [s(d, {
1064
1120
  class: "bb:flex bb:w-full",
1065
1121
  modelValue: l.popupIsOpen,
1066
- "onUpdate:modelValue": t[0] ||= (e) => l.popupIsOpen = e,
1122
+ "onUpdate:modelValue": t[1] ||= (e) => l.popupIsOpen = e,
1067
1123
  align: "start",
1068
1124
  "return-focus": "",
1069
1125
  "panel-class": "bb:bg-white bb:border bb:border-gray-200 bb:rounded-md bb:shadow-lg"
@@ -1073,22 +1129,24 @@ function At(e, t, o, c, l, u) {
1073
1129
  type: "button",
1074
1130
  id: e.id,
1075
1131
  popovertarget: e.popovertarget,
1076
- class: "bb:absolute bb:inset-0 bb:cursor-pointer bb:focus:outline-hidden"
1132
+ class: "bb:absolute bb:inset-0 bb:cursor-pointer bb:focus-visible:focus-ring"
1077
1133
  }, [a("span", {
1078
1134
  class: "bb:sr-only bb:pointer-events-none bb:cursor-default",
1079
1135
  textContent: _(u.triggerLabel)
1080
- }, null, 8, Et)], 8, Tt), a("label", Dt, [a("input", {
1136
+ }, null, 8, wt)], 8, Ct), a("label", Tt, [a("input", {
1081
1137
  disabled: l.popupIsOpen,
1082
1138
  ref: "field",
1139
+ onKeydown: t[0] ||= (...e) => u.openOnKey && u.openOnKey(...e),
1083
1140
  type: "text",
1084
1141
  value: l.dayValue,
1085
1142
  placeholder: o.placeholderText,
1086
- class: "bb:w-full bb:h-full bb:py-2 bb:pr-3 bb:leading-none bb:border bb:border-transparent bb:whitespace-nowrap bb:bg-transparent bb:placeholder:text-sm bb:placeholder-gray-300 bb:cursor-pointer bb:focus:outline-hidden"
1087
- }, null, 8, Ot)])]),
1088
- default: b(() => [a("div", kt, null, 512)]),
1143
+ class: "bb:w-full bb:h-full bb:py-2 bb:pr-3 bb:leading-none bb:border bb:border-transparent bb:whitespace-nowrap bb:bg-transparent bb:placeholder:text-sm bb:placeholder-gray-300 bb:cursor-pointer bb:focus:focus-ring"
1144
+ }, null, 40, Et)])]),
1145
+ default: b(() => [a("div", Dt, null, 512)]),
1089
1146
  _: 1
1090
1147
  }, 8, ["modelValue"]), u.needsEraser ? (f(), n(p, {
1091
1148
  key: 0,
1149
+ ref: "eraser",
1092
1150
  size: "small",
1093
1151
  onClicked: u.clearPicker,
1094
1152
  class: "bb:absolute bb:right-0 bb:top-0 bb:z-10 bb:h-full bb:pr-2",
@@ -1097,12 +1155,12 @@ function At(e, t, o, c, l, u) {
1097
1155
  }
1098
1156
  //#endregion
1099
1157
  //#region src/components/SelectDateInterval.vue
1100
- var jt = {
1158
+ var kt = {
1101
1159
  components: {
1102
- ElementHeader: M,
1103
- PickDay: /* @__PURE__ */ A(St, [["render", At]])
1160
+ ElementHeader: F,
1161
+ PickDay: /* @__PURE__ */ N(bt, [["render", Ot]])
1104
1162
  },
1105
- mixins: [N],
1163
+ mixins: [I],
1106
1164
  emits: [
1107
1165
  "update:dateFrom",
1108
1166
  "update:dateTo",
@@ -1150,10 +1208,10 @@ var jt = {
1150
1208
  this.$emit("update:dateTo", e), this.dateTo !== e && this.$emit("changed");
1151
1209
  }
1152
1210
  }
1153
- }, Mt = { class: "bb-dashboard-ui bb:flex" }, Nt = { class: "bb:flex bb:border bb:border-white" }, Pt = { class: "bb:flex bb:flex-col bb:min-w-72 bb:w-72 bb:bg-white bb:h-full" }, Ft = { class: "bb:flex bb:h-full bb:divide-x bb:divide-gray-200" };
1154
- function It(e, t, n, r, o, c) {
1211
+ }, At = { class: "bb-dashboard-ui bb:flex" }, jt = { class: "bb:flex bb:border bb:border-white" }, Mt = { class: "bb:flex bb:flex-col bb:min-w-72 bb:w-72 bb:bg-white bb:h-full" }, Nt = { class: "bb:flex bb:h-full bb:divide-x bb:divide-gray-200" };
1212
+ function Pt(e, t, n, r, o, c) {
1155
1213
  let l = h("element-header"), u = h("pick-day");
1156
- return f(), i("div", Mt, [a("div", Nt, [a("div", Pt, [s(l, {
1214
+ return f(), i("div", At, [a("div", jt, [a("div", Mt, [s(l, {
1157
1215
  text: n.header,
1158
1216
  "is-required": n.isRequired,
1159
1217
  "is-loading": n.isLoading
@@ -1161,7 +1219,7 @@ function It(e, t, n, r, o, c) {
1161
1219
  "text",
1162
1220
  "is-required",
1163
1221
  "is-loading"
1164
- ]), a("div", Ft, [s(u, {
1222
+ ]), a("div", Nt, [s(u, {
1165
1223
  modelValue: o.userDateFrom,
1166
1224
  "onUpdate:modelValue": t[0] ||= (e) => o.userDateFrom = e,
1167
1225
  class: "bb:flex-1 bb:min-w-36 bb:pl-3",
@@ -1183,12 +1241,16 @@ function It(e, t, n, r, o, c) {
1183
1241
  "lang"
1184
1242
  ])])])])]);
1185
1243
  }
1186
- var Lt = /*#__PURE__*/ A(jt, [["render", It]]), Rt = {
1244
+ var Ft = /*#__PURE__*/ N(kt, [["render", Pt]]), It = {
1187
1245
  components: {
1188
- PopoverPanel: H,
1189
- CrossButton: P
1246
+ PopoverPanel: K,
1247
+ CrossButton: L
1190
1248
  },
1191
- emits: ["update:isOpen", "erased"],
1249
+ emits: [
1250
+ "update:isOpen",
1251
+ "erased",
1252
+ "toggle"
1253
+ ],
1192
1254
  props: {
1193
1255
  isOpen: {
1194
1256
  type: Boolean,
@@ -1205,43 +1267,76 @@ var Lt = /*#__PURE__*/ A(jt, [["render", It]]), Rt = {
1205
1267
  findSelected: {
1206
1268
  type: Function,
1207
1269
  default: () => null
1270
+ },
1271
+ findStops: {
1272
+ type: Function,
1273
+ default: null
1274
+ },
1275
+ findTabStops: {
1276
+ type: Function,
1277
+ default: null
1278
+ },
1279
+ keepSize: {
1280
+ type: Boolean,
1281
+ default: !1
1282
+ },
1283
+ lang: {
1284
+ type: String,
1285
+ default: null
1208
1286
  }
1209
1287
  },
1210
1288
  computed: { needsEraser() {
1211
1289
  return !this.isOpen && this.hasValue;
1290
+ } },
1291
+ methods: { erase() {
1292
+ let e = this.$refs.eraser.$el;
1293
+ document.activeElement === e && e.matches(":focus-visible") && this.$refs.trigger.focus({ preventScroll: !0 }), this.$emit("erased");
1212
1294
  } }
1213
- }, zt = { class: "bb:flex bb:flex-col bb:grow bb:bg-white" }, Bt = { class: "bb:relative bb:flex bb:w-full bb:h-full" }, Vt = ["id", "popovertarget"], Ht = ["textContent"];
1214
- function Ut(e, t, o, c, l, u) {
1295
+ }, Lt = { class: "bb:flex bb:flex-col bb:grow bb:bg-white" }, Rt = { class: "bb:relative bb:flex bb:w-full bb:h-full" }, zt = ["id", "popovertarget"], Bt = ["textContent"];
1296
+ function Vt(e, t, o, c, l, u) {
1215
1297
  let d = h("popover-panel"), p = h("cross-button");
1216
- return f(), i("div", zt, [a("div", Bt, [s(d, {
1298
+ return f(), i("div", Lt, [a("div", Rt, [s(d, {
1217
1299
  class: "bb:flex bb:w-full bb:h-full",
1218
1300
  "model-value": o.isOpen,
1219
1301
  align: "start",
1220
1302
  arrows: "",
1221
1303
  "find-selected": o.findSelected,
1304
+ "find-stops": o.findStops,
1305
+ "find-tab-stops": o.findTabStops,
1306
+ "keep-size": o.keepSize,
1222
1307
  "return-focus": "",
1223
1308
  "panel-class": "bb:bg-white bb:text-inherit bb:border bb:border-gray-200 bb:rounded-md bb:shadow-lg bb:overscroll-contain",
1224
- "onUpdate:modelValue": t[0] ||= (t) => e.$emit("update:isOpen", t)
1309
+ "onUpdate:modelValue": t[0] ||= (t) => e.$emit("update:isOpen", t),
1310
+ onToggle: t[1] ||= (t) => e.$emit("toggle", t)
1225
1311
  }, {
1226
1312
  trigger: b((e) => [a("button", {
1313
+ ref: "trigger",
1227
1314
  type: "button",
1228
1315
  id: e.id,
1229
1316
  popovertarget: e.popovertarget,
1230
- class: "bb:flex bb:w-full bb:h-full bb:items-center bb:focus:outline-hidden bb:cursor-pointer"
1317
+ class: "bb:flex bb:w-full bb:h-full bb:items-center bb:focus-visible:focus-ring bb:cursor-pointer"
1231
1318
  }, [a("span", {
1232
1319
  class: "bb:flex bb:w-full bb:h-full bb:pl-3 bb:pr-12 bb:py-2 bb:items-center bb:whitespace-nowrap bb:leading-none bb:pointer-events-none bb:cursor-default",
1233
1320
  textContent: _(o.title)
1234
- }, null, 8, Ht)], 8, Vt)]),
1321
+ }, null, 8, Bt)], 8, zt)]),
1235
1322
  default: b(() => [m(e.$slots, "default")]),
1236
1323
  _: 3
1237
- }, 8, ["model-value", "find-selected"]), u.needsEraser ? (f(), n(p, {
1324
+ }, 8, [
1325
+ "model-value",
1326
+ "find-selected",
1327
+ "find-stops",
1328
+ "find-tab-stops",
1329
+ "keep-size"
1330
+ ]), u.needsEraser ? (f(), n(p, {
1238
1331
  key: 0,
1332
+ ref: "eraser",
1239
1333
  size: "small",
1240
- onClicked: t[1] ||= (t) => e.$emit("erased"),
1334
+ lang: o.lang,
1335
+ onClicked: u.erase,
1241
1336
  class: "bb:absolute bb:right-0 bb:top-0 bb:pr-2 bb:h-full"
1242
- })) : r("", !0)])]);
1337
+ }, null, 8, ["lang", "onClicked"])) : r("", !0)])]);
1243
1338
  }
1244
- var Wt = /*#__PURE__*/ A(Rt, [["render", Ut]]), Gt = {
1339
+ var Ht = /*#__PURE__*/ N(It, [["render", Vt]]), Ut = {
1245
1340
  props: {
1246
1341
  isChecked: {
1247
1342
  type: Boolean,
@@ -1253,32 +1348,222 @@ var Wt = /*#__PURE__*/ A(Rt, [["render", Ut]]), Gt = {
1253
1348
  methods: { toggle() {
1254
1349
  this.$emit("clicked");
1255
1350
  } }
1256
- }, Kt = { class: "bb:flex bb:w-9 bb:h-9 bb:items-center bb:justify-center bb:pointer-events-none bb:cursor-default" }, qt = {
1351
+ }, Wt = { class: "bb:flex bb:w-9 bb:h-9 bb:items-center bb:justify-center bb:pointer-events-none bb:cursor-default" }, Gt = {
1257
1352
  class: "bb:w-5 bb:h-5 bb:fill-current bb:text-green-300",
1258
1353
  viewBox: "0 0 20 20",
1259
1354
  "aria-hidden": "true"
1260
- }, Jt = ["textContent"];
1261
- function Yt(e, t, n, r, o, s) {
1355
+ }, Kt = ["textContent"];
1356
+ function qt(e, t, n, r, o, s) {
1262
1357
  return f(), i("button", {
1263
1358
  type: "button",
1264
- onClick: t[0] ||= S((...e) => s.toggle && s.toggle(...e), ["prevent"]),
1359
+ onClick: t[0] ||= C((...e) => s.toggle && s.toggle(...e), ["prevent"]),
1265
1360
  class: "bb:flex bb:w-full bb:bg-white bb:cursor-pointer bb:focus:outline-hidden bb:focus:bg-indigo-100"
1266
- }, [a("span", Kt, [x((f(), i("svg", qt, [...t[1] ||= [a("path", {
1361
+ }, [a("span", Wt, [x((f(), i("svg", Gt, [...t[1] ||= [a("path", {
1267
1362
  d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",
1268
1363
  "clip-rule": "evenodd",
1269
1364
  "fill-rule": "evenodd"
1270
1365
  }, null, -1)]], 512)), [[y, n.isChecked]])]), a("span", {
1271
1366
  class: "bb:flex bb:h-9 bb:justify-center bb:items-center bb:pr-6 bb:whitespace-nowrap bb:select-none bb:pointer-events-none bb:cursor-default",
1272
1367
  textContent: _(n.name)
1273
- }, null, 8, Jt)]);
1368
+ }, null, 8, Kt)]);
1274
1369
  }
1275
- //#endregion
1276
- //#region src/components/SelectSingle.vue
1277
- var Xt = {
1370
+ var Jt = /*#__PURE__*/ N(Ut, [["render", qt]]), Yt = {
1278
1371
  components: {
1279
- ElementHeader: M,
1280
- DropdownButton: Wt,
1281
- ListElement: /* @__PURE__ */ A(Gt, [["render", Yt]])
1372
+ ElementHeader: F,
1373
+ DropdownButton: Ht,
1374
+ ListElement: Jt,
1375
+ CrossButton: L
1376
+ },
1377
+ mixins: [I],
1378
+ emits: ["update:modelValue", "changed"],
1379
+ props: {
1380
+ items: {
1381
+ type: Array,
1382
+ required: !0
1383
+ },
1384
+ modelValue: {
1385
+ type: Array,
1386
+ default: () => []
1387
+ },
1388
+ header: {
1389
+ type: String,
1390
+ required: !0
1391
+ },
1392
+ isRequired: {
1393
+ type: Boolean,
1394
+ default: !1
1395
+ },
1396
+ isLoading: {
1397
+ type: Boolean,
1398
+ default: !1
1399
+ },
1400
+ withSearch: {
1401
+ type: Boolean,
1402
+ default: !1
1403
+ }
1404
+ },
1405
+ data() {
1406
+ return {
1407
+ isOpen: !1,
1408
+ query: ""
1409
+ };
1410
+ },
1411
+ watch: { hasItems(e) {
1412
+ e || (this.isOpen = !1, this.query = "");
1413
+ } },
1414
+ computed: {
1415
+ itemList() {
1416
+ return Array.isArray(this.items) ? this.items.filter((e) => typeof e == "object" && !!e) : [];
1417
+ },
1418
+ selectedIds() {
1419
+ return Array.isArray(this.modelValue) ? this.modelValue : [];
1420
+ },
1421
+ selectedItems() {
1422
+ return this.itemList.filter((e) => this.selectedIds.includes(e.id));
1423
+ },
1424
+ visibleItems() {
1425
+ let e = this.withSearch ? this.query.trim().toLowerCase() : "";
1426
+ return e === "" ? this.itemList : this.itemList.filter((t) => this.itemName(t).toLowerCase().includes(e));
1427
+ },
1428
+ hasItems() {
1429
+ return this.itemList.length > 0;
1430
+ },
1431
+ title() {
1432
+ return this.selectedItems.length === 0 ? "" : this.selectedItems.length === 1 ? this.itemName(this.selectedItems[0]) : `${this.texts.selected}: ${this.selectedItems.length}`;
1433
+ }
1434
+ },
1435
+ methods: {
1436
+ itemName(e) {
1437
+ return String(e.name ?? "");
1438
+ },
1439
+ itemClicked(e) {
1440
+ this.itemElements()[this.visibleItems.indexOf(e)].focus({ preventScroll: !0 }), this.isOpen = !1, this.$emit("update:modelValue", this.selectedIds.includes(e.id) ? this.selectedIds.filter((t) => t !== e.id) : [...this.selectedIds, e.id]), this.$emit("changed");
1441
+ },
1442
+ clear() {
1443
+ this.$emit("update:modelValue", []), this.$emit("changed");
1444
+ },
1445
+ itemElements() {
1446
+ return this.$refs.list ? [...this.$refs.list.querySelectorAll(":scope > button")] : [];
1447
+ },
1448
+ firstSelectedElement() {
1449
+ let e = this.visibleItems.findIndex((e) => this.selectedIds.includes(e.id));
1450
+ return e === -1 ? null : this.itemElements()[e];
1451
+ },
1452
+ arrowsOrigin() {
1453
+ return this.firstSelectedElement() ?? this.$refs.search ?? null;
1454
+ },
1455
+ onToggle(e) {
1456
+ e && this.withSearch && this.$refs.search.focus({ preventScroll: !0 }), e || (this.query = "");
1457
+ },
1458
+ searchStops() {
1459
+ return [...this.$refs.search ? [this.$refs.search] : [], ...this.itemElements()];
1460
+ },
1461
+ tabStops() {
1462
+ let e = this.$refs.search ? [this.$refs.search] : [], t = this.$refs.search && this.query !== "" ? [this.$refs.searchEraser.$el] : [];
1463
+ return [
1464
+ ...e,
1465
+ ...t,
1466
+ ...this.itemElements()
1467
+ ];
1468
+ },
1469
+ onListKeydown(e) {
1470
+ if (!(!this.withSearch || e.ctrlKey || e.metaKey || e.altKey || e.isComposing)) {
1471
+ if (e.key === "Backspace") this.query = this.query.slice(0, -1);
1472
+ else if (e.key.length === 1 && e.key !== " ") this.query += e.key;
1473
+ else return;
1474
+ e.preventDefault(), this.$refs.search.focus({ preventScroll: !0 }), this.$nextTick(() => {
1475
+ let e = this.$refs.search.value.length;
1476
+ this.$refs.search.setSelectionRange(e, e);
1477
+ });
1478
+ }
1479
+ },
1480
+ clearQuery() {
1481
+ this.query = "", this.$refs.search.focus();
1482
+ }
1483
+ }
1484
+ }, Xt = { class: "bb-dashboard-ui bb:flex bb:flex-none" }, Zt = { class: "bb:flex bb:w-full bb:flex-col bb:border bb:border-white bb:bg-white" }, Qt = {
1485
+ key: 0,
1486
+ class: "bb:sticky bb:top-0 bb:min-w-56 bb:px-2 bb:py-2 bb:bg-white bb:border-b bb:border-gray-200"
1487
+ }, $t = { class: "bb:relative" }, en = ["placeholder", "aria-label"], tn = ["textContent"];
1488
+ function nn(t, o, c, l, u, d) {
1489
+ let m = h("element-header"), g = h("cross-button"), v = h("list-element"), ee = h("dropdown-button");
1490
+ return f(), i("div", Xt, [a("div", Zt, [s(m, {
1491
+ text: c.header,
1492
+ "is-required": c.isRequired,
1493
+ "is-loading": c.isLoading
1494
+ }, null, 8, [
1495
+ "text",
1496
+ "is-required",
1497
+ "is-loading"
1498
+ ]), d.hasItems ? (f(), n(ee, {
1499
+ key: 0,
1500
+ title: d.title,
1501
+ "is-open": u.isOpen,
1502
+ "onUpdate:isOpen": o[3] ||= (e) => u.isOpen = e,
1503
+ "has-value": d.selectedItems.length > 0,
1504
+ "find-selected": d.arrowsOrigin,
1505
+ "find-stops": d.searchStops,
1506
+ "find-tab-stops": d.tabStops,
1507
+ "keep-size": c.withSearch,
1508
+ lang: t.lang,
1509
+ onErased: d.clear,
1510
+ onToggle: d.onToggle
1511
+ }, {
1512
+ default: b(() => [c.withSearch ? (f(), i("div", Qt, [a("div", $t, [x(a("input", {
1513
+ ref: "search",
1514
+ type: "text",
1515
+ autocomplete: "off",
1516
+ "onUpdate:modelValue": o[0] ||= (e) => u.query = e,
1517
+ placeholder: t.texts.search,
1518
+ "aria-label": t.texts.search,
1519
+ class: "bb:w-full bb:pl-3 bb:pr-9 bb:py-2 bb:text-sm bb:bg-white bb:border bb:border-gray-300 bb:rounded-md bb:focus:focus-ring",
1520
+ onKeydown: o[1] ||= S(C(() => {}, ["prevent"]), ["enter"])
1521
+ }, null, 40, en), [[te, u.query]]), x(s(g, {
1522
+ ref: "searchEraser",
1523
+ size: "small",
1524
+ lang: t.lang,
1525
+ onClicked: d.clearQuery,
1526
+ class: "bb:absolute bb:right-0 bb:top-0 bb:pr-2 bb:h-full"
1527
+ }, null, 8, ["lang", "onClicked"]), [[y, u.query !== ""]])])])) : r("", !0), d.visibleItems.length > 0 ? (f(), i("div", {
1528
+ key: 1,
1529
+ ref: "list",
1530
+ class: "bb:flex bb:flex-col bb:py-1 bb:divide-y bb:divide-gray-200 bb:divide-dashed",
1531
+ onKeydown: o[2] ||= (...e) => d.onListKeydown && d.onListKeydown(...e)
1532
+ }, [(f(!0), i(e, null, p(d.visibleItems, (e) => (f(), n(v, {
1533
+ name: d.itemName(e),
1534
+ key: e.id,
1535
+ "is-checked": d.selectedIds.includes(e.id),
1536
+ "aria-pressed": d.selectedIds.includes(e.id),
1537
+ onClicked: (t) => d.itemClicked(e)
1538
+ }, null, 8, [
1539
+ "name",
1540
+ "is-checked",
1541
+ "aria-pressed",
1542
+ "onClicked"
1543
+ ]))), 128))], 544)) : (f(), i("div", {
1544
+ key: 2,
1545
+ class: "bb:px-3 bb:py-2 bb:text-sm bb:text-gray-500 bb:text-center",
1546
+ textContent: _(t.texts.nothingFound)
1547
+ }, null, 8, tn))]),
1548
+ _: 1
1549
+ }, 8, [
1550
+ "title",
1551
+ "is-open",
1552
+ "has-value",
1553
+ "find-selected",
1554
+ "find-stops",
1555
+ "find-tab-stops",
1556
+ "keep-size",
1557
+ "lang",
1558
+ "onErased",
1559
+ "onToggle"
1560
+ ])) : r("", !0)])]);
1561
+ }
1562
+ var rn = /*#__PURE__*/ N(Yt, [["render", nn]]), an = {
1563
+ components: {
1564
+ ElementHeader: F,
1565
+ DropdownButton: Ht,
1566
+ ListElement: Jt
1282
1567
  },
1283
1568
  emits: ["update:modelValue", "changed"],
1284
1569
  props: {
@@ -1311,7 +1596,7 @@ var Xt = {
1311
1596
  } },
1312
1597
  computed: {
1313
1598
  itemList() {
1314
- return this.items ?? [];
1599
+ return Array.isArray(this.items) ? this.items.filter((e) => typeof e == "object" && !!e) : [];
1315
1600
  },
1316
1601
  activeItem() {
1317
1602
  return this.itemList.find((e) => e.id === this.modelValue) ?? null;
@@ -1336,15 +1621,18 @@ var Xt = {
1336
1621
  activeItemElement() {
1337
1622
  let e = this.itemList.indexOf(this.activeItem);
1338
1623
  return e === -1 ? null : this.$refs.list.querySelectorAll("button")[e];
1624
+ },
1625
+ itemStops() {
1626
+ return this.$refs.list ? [...this.$refs.list.querySelectorAll(":scope > button")] : [];
1339
1627
  }
1340
1628
  }
1341
- }, Zt = { class: "bb-dashboard-ui bb:flex bb:flex-none" }, Qt = { class: "bb:flex bb:w-full bb:flex-col bb:border bb:border-white bb:bg-white" }, $t = {
1629
+ }, on = { class: "bb-dashboard-ui bb:flex bb:flex-none" }, sn = { class: "bb:flex bb:w-full bb:flex-col bb:border bb:border-white bb:bg-white" }, cn = {
1342
1630
  ref: "list",
1343
1631
  class: "bb:flex bb:flex-col bb:py-1 bb:divide-y bb:divide-gray-200 bb:divide-dashed"
1344
1632
  };
1345
- function en(t, o, c, l, u, d) {
1633
+ function ln(t, o, c, l, u, d) {
1346
1634
  let m = h("element-header"), g = h("list-element"), _ = h("dropdown-button");
1347
- return f(), i("div", Zt, [a("div", Qt, [s(m, {
1635
+ return f(), i("div", on, [a("div", sn, [s(m, {
1348
1636
  text: c.header,
1349
1637
  "is-required": c.isRequired,
1350
1638
  "is-loading": c.isLoading
@@ -1359,9 +1647,10 @@ function en(t, o, c, l, u, d) {
1359
1647
  "onUpdate:isOpen": o[0] ||= (e) => u.isOpen = e,
1360
1648
  "has-value": d.hasValue,
1361
1649
  "find-selected": d.activeItemElement,
1650
+ "find-tab-stops": d.itemStops,
1362
1651
  onErased: d.clear
1363
1652
  }, {
1364
- default: b(() => [a("div", $t, [(f(!0), i(e, null, p(d.itemList, (e) => (f(), n(g, {
1653
+ default: b(() => [a("div", cn, [(f(!0), i(e, null, p(d.itemList, (e) => (f(), n(g, {
1365
1654
  name: e.name,
1366
1655
  key: e.id,
1367
1656
  "is-checked": e.id === c.modelValue,
@@ -1377,11 +1666,12 @@ function en(t, o, c, l, u, d) {
1377
1666
  "is-open",
1378
1667
  "has-value",
1379
1668
  "find-selected",
1669
+ "find-tab-stops",
1380
1670
  "onErased"
1381
1671
  ])) : r("", !0)])]);
1382
1672
  }
1383
- var tn = /*#__PURE__*/ A(Xt, [["render", en]]), nn = {
1384
- mixins: [k],
1673
+ var un = /*#__PURE__*/ N(an, [["render", ln]]), dn = {
1674
+ mixins: [M],
1385
1675
  props: {
1386
1676
  text: {
1387
1677
  type: String,
@@ -1390,17 +1680,17 @@ var tn = /*#__PURE__*/ A(Xt, [["render", en]]), nn = {
1390
1680
  color: {
1391
1681
  type: String,
1392
1682
  required: !0,
1393
- validator: O
1683
+ validator: j
1394
1684
  }
1395
1685
  }
1396
- }, rn = ["textContent"];
1397
- function an(e, t, n, r, a, o) {
1686
+ }, fn = ["textContent"];
1687
+ function pn(e, t, n, r, a, o) {
1398
1688
  return f(), i("span", {
1399
1689
  class: u(["bb-dashboard-ui bb:inline-flex bb:items-center bb:px-3 bb:py-2 bb:rounded-full bb:text-xs bb:font-medium bb:leading-none bb:select-none bb:whitespace-nowrap", e.colorClass(n.color, "pill")]),
1400
1690
  textContent: _(n.text)
1401
- }, null, 10, rn);
1691
+ }, null, 10, fn);
1402
1692
  }
1403
- var q = /*#__PURE__*/ A(nn, [["render", an]]), on = {
1693
+ var mn = /*#__PURE__*/ N(dn, [["render", pn]]), hn = {
1404
1694
  props: {
1405
1695
  messages: {
1406
1696
  type: [Object, Array],
@@ -1420,12 +1710,12 @@ var q = /*#__PURE__*/ A(nn, [["render", an]]), on = {
1420
1710
  return this.type === "dangerous";
1421
1711
  }
1422
1712
  }
1423
- }, sn = { class: "bb:flex" }, cn = { class: "bb:shrink-0" }, ln = { class: "bb:ml-3" }, un = ["textContent"];
1424
- function dn(t, n, o, s, c, l) {
1713
+ }, gn = { class: "bb:flex" }, _n = { class: "bb:shrink-0" }, vn = { class: "bb:ml-3" }, yn = ["textContent"];
1714
+ function bn(t, n, o, s, c, l) {
1425
1715
  return l.hasErrors ? (f(), i("div", {
1426
1716
  key: 0,
1427
1717
  class: u(["bb-dashboard-ui bb:border-l-4 bb:p-4", l.isDangerous ? "bb:bg-red-50 bb:border-red-400" : "bb:bg-yellow-50 bb:border-yellow-400"])
1428
- }, [a("div", sn, [a("div", cn, [(f(), i("svg", {
1718
+ }, [a("div", gn, [a("div", _n, [(f(), i("svg", {
1429
1719
  class: u(["bb:h-5 bb:w-5", l.isDangerous ? "bb:text-red-400" : "bb:text-yellow-400"]),
1430
1720
  viewBox: "0 0 20 20",
1431
1721
  fill: "currentColor"
@@ -1433,21 +1723,21 @@ function dn(t, n, o, s, c, l) {
1433
1723
  "fill-rule": "evenodd",
1434
1724
  d: "M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",
1435
1725
  "clip-rule": "evenodd"
1436
- }, null, -1)]], 2))]), a("div", ln, [(f(!0), i(e, null, p(o.messages, (e, t) => (f(), i("p", {
1726
+ }, null, -1)]], 2))]), a("div", vn, [(f(!0), i(e, null, p(o.messages, (e, t) => (f(), i("p", {
1437
1727
  class: u(["bb:text-sm bb:leading-5", l.isDangerous ? "bb:text-red-700" : "bb:text-yellow-700"]),
1438
1728
  key: t,
1439
1729
  textContent: _(e)
1440
- }, null, 10, un))), 128))])])], 2)) : r("", !0);
1730
+ }, null, 10, yn))), 128))])])], 2)) : r("", !0);
1441
1731
  }
1442
- var fn = /*#__PURE__*/ A(on, [["render", dn]]), J = [
1732
+ var xn = /*#__PURE__*/ N(hn, [["render", bn]]), Sn = [
1443
1733
  "text",
1444
1734
  "email",
1445
1735
  "password",
1446
1736
  "tel",
1447
1737
  "url",
1448
1738
  "search"
1449
- ], pn = {
1450
- components: { Dot: j },
1739
+ ], Cn = {
1740
+ components: { Dot: P },
1451
1741
  inheritAttrs: !1,
1452
1742
  props: {
1453
1743
  modelValue: {
@@ -1461,7 +1751,7 @@ var fn = /*#__PURE__*/ A(on, [["render", dn]]), J = [
1461
1751
  type: {
1462
1752
  type: String,
1463
1753
  default: "text",
1464
- validator: (e) => J.includes(e)
1754
+ validator: (e) => Sn.includes(e)
1465
1755
  },
1466
1756
  isRequired: {
1467
1757
  type: Boolean,
@@ -1482,7 +1772,7 @@ var fn = /*#__PURE__*/ A(on, [["render", dn]]), J = [
1482
1772
  }
1483
1773
  },
1484
1774
  inputType() {
1485
- return J.includes(this.type) ? this.type : "text";
1775
+ return Sn.includes(this.type) ? this.type : "text";
1486
1776
  }
1487
1777
  },
1488
1778
  methods: {
@@ -1497,26 +1787,26 @@ var fn = /*#__PURE__*/ A(on, [["render", dn]]), J = [
1497
1787
  ].includes(e)));
1498
1788
  }
1499
1789
  }
1500
- }, mn = { class: "bb:flex bb:items-center" }, hn = ["for", "textContent"], gn = ["id", "type"];
1501
- function _n(e, t, n, r, o, c) {
1790
+ }, wn = { class: "bb:flex bb:items-center" }, Tn = ["for", "textContent"], En = ["id", "type"];
1791
+ function Dn(e, t, n, r, o, c) {
1502
1792
  let p = h("dot");
1503
1793
  return f(), i("div", {
1504
1794
  class: u(["bb-dashboard-ui", e.$attrs.class]),
1505
1795
  style: d(e.$attrs.style)
1506
- }, [a("div", mn, [a("label", {
1796
+ }, [a("div", wn, [a("label", {
1507
1797
  for: c.inputId(),
1508
1798
  class: "bb:block bb:text-sm bb:font-medium bb:leading-5 bb:text-gray-700",
1509
1799
  textContent: _(n.label)
1510
- }, null, 8, hn), x(s(p, {
1800
+ }, null, 8, Tn), x(s(p, {
1511
1801
  color: "red",
1512
1802
  class: "bb:ml-2"
1513
1803
  }, null, 512), [[y, n.isRequired]])]), x(a("input", l({ "onUpdate:modelValue": t[0] ||= (e) => c.value = e }, { ...c.inputAttrs() }, {
1514
1804
  id: c.inputId(),
1515
1805
  type: c.inputType,
1516
- class: "bb:mt-1 bb:block bb:w-full bb:rounded-md bb:border bb:border-gray-300 bb:bg-white bb:px-3 bb:py-2 bb:text-sm bb:leading-5 bb:shadow-xs bb:focus:border-blue-300 bb:focus:ring-3 bb:focus:ring-blue-200/50 bb:focus:outline-hidden"
1517
- }), null, 16, gn), [[ee, c.value]])], 6);
1806
+ class: "bb:mt-1 bb:block bb:w-full bb:rounded-md bb:border bb:border-gray-300 bb:bg-white bb:px-3 bb:py-2 bb:text-sm bb:leading-5 bb:shadow-xs bb:focus:focus-ring"
1807
+ }), null, 16, En), [[ee, c.value]])], 6);
1518
1808
  }
1519
- var vn = /*#__PURE__*/ A(pn, [["render", _n]]), yn = {}, bn = {
1809
+ var On = /*#__PURE__*/ N(Cn, [["render", Dn]]), kn = {}, An = {
1520
1810
  class: "bb:w-4 bb:h-4",
1521
1811
  fill: "none",
1522
1812
  stroke: "currentColor",
@@ -1526,8 +1816,8 @@ var vn = /*#__PURE__*/ A(pn, [["render", _n]]), yn = {}, bn = {
1526
1816
  xmlns: "http://www.w3.org/2000/svg",
1527
1817
  "aria-hidden": "true"
1528
1818
  };
1529
- function xn(e, t, n, r, o, s) {
1530
- return f(), i("svg", bn, [...t[0] ||= [
1819
+ function jn(e, t, n, r, o, s) {
1820
+ return f(), i("svg", An, [...t[0] ||= [
1531
1821
  a("circle", {
1532
1822
  cx: "12",
1533
1823
  cy: "12",
@@ -1549,7 +1839,7 @@ function xn(e, t, n, r, o, s) {
1549
1839
  }, null, -1)
1550
1840
  ]]);
1551
1841
  }
1552
- var Sn = /*#__PURE__*/ A(yn, [["render", xn]]), Cn = {}, wn = {
1842
+ var Mn = /*#__PURE__*/ N(kn, [["render", jn]]), Nn = {}, Pn = {
1553
1843
  class: "bb:w-4 bb:h-4",
1554
1844
  fill: "none",
1555
1845
  stroke: "currentColor",
@@ -1557,15 +1847,15 @@ var Sn = /*#__PURE__*/ A(yn, [["render", xn]]), Cn = {}, wn = {
1557
1847
  xmlns: "http://www.w3.org/2000/svg",
1558
1848
  "aria-hidden": "true"
1559
1849
  };
1560
- function Tn(e, t, n, r, o, s) {
1561
- return f(), i("svg", wn, [...t[0] ||= [a("path", {
1850
+ function Fn(e, t, n, r, o, s) {
1851
+ return f(), i("svg", Pn, [...t[0] ||= [a("path", {
1562
1852
  "stroke-linecap": "round",
1563
1853
  "stroke-linejoin": "round",
1564
1854
  "stroke-width": "2",
1565
1855
  d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
1566
1856
  }, null, -1)]]);
1567
1857
  }
1568
- var En = /*#__PURE__*/ A(Cn, [["render", Tn]]), Dn = {}, On = {
1858
+ var In = /*#__PURE__*/ N(Nn, [["render", Fn]]), Ln = {}, Rn = {
1569
1859
  class: "bb:w-4 bb:h-4",
1570
1860
  fill: "none",
1571
1861
  stroke: "currentColor",
@@ -1573,21 +1863,21 @@ var En = /*#__PURE__*/ A(Cn, [["render", Tn]]), Dn = {}, On = {
1573
1863
  xmlns: "http://www.w3.org/2000/svg",
1574
1864
  "aria-hidden": "true"
1575
1865
  };
1576
- function kn(e, t, n, r, o, s) {
1577
- return f(), i("svg", On, [...t[0] ||= [a("path", {
1866
+ function zn(e, t, n, r, o, s) {
1867
+ return f(), i("svg", Rn, [...t[0] ||= [a("path", {
1578
1868
  "stroke-linecap": "round",
1579
1869
  "stroke-linejoin": "round",
1580
1870
  "stroke-width": "2",
1581
1871
  d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"
1582
1872
  }, null, -1)]]);
1583
1873
  }
1584
- var An = /*#__PURE__*/ A(Dn, [["render", kn]]), jn = ["download", "refresh"], Mn = {
1874
+ var Bn = /*#__PURE__*/ N(Ln, [["render", zn]]), Vn = ["download", "refresh"], Hn = {
1585
1875
  components: {
1586
- "clock-icon": Sn,
1587
- "download-icon": En,
1588
- "refresh-icon": An
1876
+ "clock-icon": Mn,
1877
+ "download-icon": In,
1878
+ "refresh-icon": Bn
1589
1879
  },
1590
- mixins: [k],
1880
+ mixins: [M],
1591
1881
  emits: ["click"],
1592
1882
  props: {
1593
1883
  title: {
@@ -1597,12 +1887,12 @@ var An = /*#__PURE__*/ A(Dn, [["render", kn]]), jn = ["download", "refresh"], Mn
1597
1887
  icon: {
1598
1888
  type: String,
1599
1889
  required: !0,
1600
- validator: (e) => jn.includes(e)
1890
+ validator: (e) => Vn.includes(e)
1601
1891
  },
1602
1892
  color: {
1603
1893
  type: String,
1604
1894
  default: "purple",
1605
- validator: O
1895
+ validator: j
1606
1896
  },
1607
1897
  isLoading: {
1608
1898
  type: Boolean,
@@ -1617,16 +1907,16 @@ var An = /*#__PURE__*/ A(Dn, [["render", kn]]), jn = ["download", "refresh"], Mn
1617
1907
  let e = this.isLoading && typeof this.loadingText == "string" && this.loadingText !== "" ? this.loadingText : this.title;
1618
1908
  return typeof e == "string" ? e : "";
1619
1909
  } }
1620
- }, Nn = [
1910
+ }, Un = [
1621
1911
  "title",
1622
1912
  "disabled",
1623
1913
  "aria-busy"
1624
- ], Pn = ["textContent"];
1625
- function Fn(e, t, o, s, c, l) {
1914
+ ], Wn = ["textContent"];
1915
+ function Gn(e, t, o, s, c, l) {
1626
1916
  let d = h("clock-icon"), p = h("download-icon"), m = h("refresh-icon");
1627
1917
  return f(), i("button", {
1628
1918
  type: "button",
1629
- class: u(["bb-dashboard-ui bb:inline-flex bb:items-center bb:px-3 bb:py-1.5 bb:rounded-full bb:text-xs bb:font-medium bb:leading-none bb:select-none bb:whitespace-nowrap", [
1919
+ class: u(["bb-dashboard-ui bb:inline-flex bb:items-center bb:px-3 bb:py-1.5 bb:rounded-full bb:text-xs bb:font-medium bb:leading-none bb:select-none bb:whitespace-nowrap bb:focus-visible:focus-ring", [
1630
1920
  e.colorClass(o.color, "pill"),
1631
1921
  o.isLoading ? "bb:opacity-60 bb:cursor-not-allowed" : "bb:cursor-pointer",
1632
1922
  o.isLoading ? "" : e.colorClass(o.color, "pillHover")
@@ -1647,19 +1937,19 @@ function Fn(e, t, o, s, c, l) {
1647
1937
  })) : r("", !0), a("span", {
1648
1938
  class: "bb:ml-1 bb:pointer-events-none bb:cursor-default",
1649
1939
  textContent: _(l.label)
1650
- }, null, 8, Pn)], 10, Nn);
1940
+ }, null, 8, Wn)], 10, Un);
1651
1941
  }
1652
- var In = /*#__PURE__*/ A(Mn, [["render", Fn]]), Y = "a[href], button:not(:disabled)";
1653
- function Ln(e, t) {
1942
+ var Kn = /*#__PURE__*/ N(Hn, [["render", Gn]]), qn = "a[href], button:not(:disabled)";
1943
+ function Jn(e, t) {
1654
1944
  let n = document.activeElement;
1655
- (e.querySelector("[data-dialog-focus]") ?? e.querySelector(Y))?.focus();
1945
+ (e.querySelector("[data-dialog-focus]") ?? e.querySelector(qn))?.focus();
1656
1946
  let r = (n) => {
1657
1947
  if (n.key === "Escape") {
1658
1948
  t();
1659
1949
  return;
1660
1950
  }
1661
1951
  if (n.key !== "Tab") return;
1662
- let r = [...e.querySelectorAll(Y)];
1952
+ let r = [...e.querySelectorAll(qn)];
1663
1953
  if (r.length === 0) return;
1664
1954
  n.preventDefault();
1665
1955
  let i = n.shiftKey ? -1 : 1, a = r.indexOf(document.activeElement);
@@ -1676,7 +1966,7 @@ function Ln(e, t) {
1676
1966
  }
1677
1967
  //#endregion
1678
1968
  //#region src/components/Modal.vue
1679
- var Rn = {
1969
+ var Yn = {
1680
1970
  emits: ["escape"],
1681
1971
  props: {
1682
1972
  isOpen: {
@@ -1710,16 +2000,16 @@ var Rn = {
1710
2000
  methods: {
1711
2001
  holdFocus() {
1712
2002
  this.focusFrame === null && this.releaseHeldFocus === null && (this.focusFrame = requestAnimationFrame(() => {
1713
- this.focusFrame = null, this.releaseHeldFocus = Ln(this.$refs.panel, () => this.$emit("escape"));
2003
+ this.focusFrame = null, this.releaseHeldFocus = Jn(this.$refs.panel, () => this.$emit("escape"));
1714
2004
  }));
1715
2005
  },
1716
2006
  releaseFocus() {
1717
2007
  this.focusFrame !== null && (cancelAnimationFrame(this.focusFrame), this.focusFrame = null), this.releaseHeldFocus !== null && (this.releaseHeldFocus(), this.releaseHeldFocus = null);
1718
2008
  }
1719
2009
  }
1720
- }, zn = { class: "bb:min-h-screen bb:text-center" }, Bn = { class: "bb:fixed bb:inset-0 bb:transition-opacity" }, Vn = ["aria-labelledby"];
1721
- function Hn(e, n, r, o, c, l) {
1722
- return f(), i("div", { class: u(["bb-dashboard-ui bb:fixed bb:inset-0 bb:overflow-y-auto bb:z-20", { "bb:pointer-events-none": !r.isOpen }]) }, [a("div", zn, [
2010
+ }, Xn = { class: "bb:min-h-screen bb:text-center" }, Zn = { class: "bb:fixed bb:inset-0 bb:transition-opacity" }, Qn = ["aria-labelledby"];
2011
+ function $n(e, n, r, o, c, l) {
2012
+ return f(), i("div", { class: u(["bb-dashboard-ui bb:fixed bb:inset-0 bb:overflow-y-auto bb:z-20", { "bb:pointer-events-none": !r.isOpen }]) }, [a("div", Xn, [
1723
2013
  s(t, {
1724
2014
  "enter-active-class": "bb:ease-out bb:duration-300",
1725
2015
  "enter-from-class": "bb:opacity-0",
@@ -1728,7 +2018,7 @@ function Hn(e, n, r, o, c, l) {
1728
2018
  "leave-from-class": "bb:opacity-100",
1729
2019
  "leave-to-class": "bb:opacity-0"
1730
2020
  }, {
1731
- default: b(() => [x(a("div", Bn, [...n[0] ||= [a("div", { class: "bb:absolute bb:inset-0 bb:bg-gray-500 bb:opacity-75" }, null, -1)]], 512), [[y, r.isOpen]])]),
2021
+ default: b(() => [x(a("div", Zn, [...n[0] ||= [a("div", { class: "bb:absolute bb:inset-0 bb:bg-gray-500 bb:opacity-75" }, null, -1)]], 512), [[y, r.isOpen]])]),
1732
2022
  _: 1
1733
2023
  }),
1734
2024
  n[1] ||= a("span", { class: "bb:inline-block bb:align-middle bb:h-screen" }, null, -1),
@@ -1746,12 +2036,12 @@ function Hn(e, n, r, o, c, l) {
1746
2036
  role: "dialog",
1747
2037
  "aria-modal": "true",
1748
2038
  "aria-labelledby": r.headingId
1749
- }, [m(e.$slots, "default")], 8, Vn), [[y, r.isOpen]])]),
2039
+ }, [m(e.$slots, "default")], 8, Qn), [[y, r.isOpen]])]),
1750
2040
  _: 3
1751
2041
  })
1752
2042
  ])], 2);
1753
2043
  }
1754
- var Un = /*#__PURE__*/ A(Rn, [["render", Hn]]), Wn = {}, Gn = {
2044
+ var er = /*#__PURE__*/ N(Yn, [["render", $n]]), tr = {}, nr = {
1755
2045
  class: "bb:h-7 bb:w-7 bb:text-red-600",
1756
2046
  xmlns: "http://www.w3.org/2000/svg",
1757
2047
  fill: "none",
@@ -1759,35 +2049,35 @@ var Un = /*#__PURE__*/ A(Rn, [["render", Hn]]), Wn = {}, Gn = {
1759
2049
  stroke: "currentColor",
1760
2050
  "aria-hidden": "true"
1761
2051
  };
1762
- function Kn(e, t, n, r, o, s) {
1763
- return f(), i("svg", Gn, [...t[0] ||= [a("path", {
2052
+ function rr(e, t, n, r, o, s) {
2053
+ return f(), i("svg", nr, [...t[0] ||= [a("path", {
1764
2054
  "stroke-linecap": "round",
1765
2055
  "stroke-linejoin": "round",
1766
2056
  "stroke-width": "2",
1767
2057
  d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
1768
2058
  }, null, -1)]]);
1769
2059
  }
1770
- var qn = /*#__PURE__*/ A(Wn, [["render", Kn]]), Jn = {}, Yn = {
2060
+ var ir = /*#__PURE__*/ N(tr, [["render", rr]]), ar = {}, or = {
1771
2061
  class: "bb:h-7 bb:w-7 bb:text-yellow-400",
1772
2062
  xmlns: "http://www.w3.org/2000/svg",
1773
2063
  viewBox: "0 0 20 20",
1774
2064
  fill: "currentColor",
1775
2065
  "aria-hidden": "true"
1776
2066
  };
1777
- function Xn(e, t, n, r, o, s) {
1778
- return f(), i("svg", Yn, [...t[0] ||= [a("path", {
2067
+ function sr(e, t, n, r, o, s) {
2068
+ return f(), i("svg", or, [...t[0] ||= [a("path", {
1779
2069
  "fill-rule": "evenodd",
1780
2070
  d: "M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",
1781
2071
  "clip-rule": "evenodd"
1782
2072
  }, null, -1)]]);
1783
2073
  }
1784
- var Zn = /*#__PURE__*/ A(Jn, [["render", Xn]]), Qn = {
2074
+ var cr = /*#__PURE__*/ N(ar, [["render", sr]]), lr = {
1785
2075
  components: {
1786
- Modal: Un,
1787
- Dangerous: qn,
1788
- Warning: Zn
2076
+ Modal: er,
2077
+ Dangerous: ir,
2078
+ Warning: cr
1789
2079
  },
1790
- mixins: [N],
2080
+ mixins: [I],
1791
2081
  emits: ["actionConfirmed", "actionCanceled"],
1792
2082
  props: {
1793
2083
  isOpen: {
@@ -1827,68 +2117,68 @@ var Zn = /*#__PURE__*/ A(Jn, [["render", Xn]]), Qn = {
1827
2117
  return this.type === "warning";
1828
2118
  }
1829
2119
  }
1830
- }, $n = { class: "bb:flex bb:bg-white bb:rounded-t-lg bb:p-6 bb:pb-4" }, er = { class: "bb:flex bb:items-start" }, tr = { class: "bb:ml-4 bb:text-left" }, nr = ["id"], rr = { class: "bb:mt-2" }, ir = { class: "bb:text-sm bb:text-gray-500" }, ar = { class: "bb:bg-gray-50 bb:rounded-b-lg bb:px-6 bb:py-3 bb:flex bb:flex-row-reverse" };
1831
- function or(e, t, i, o, s, c) {
2120
+ }, ur = { class: "bb:flex bb:bg-white bb:rounded-t-lg bb:p-6 bb:pb-4" }, dr = { class: "bb:flex bb:items-start" }, fr = { class: "bb:ml-4 bb:text-left" }, pr = ["id"], mr = { class: "bb:mt-2" }, hr = { class: "bb:text-sm bb:text-gray-500" }, gr = { class: "bb:bg-gray-50 bb:rounded-b-lg bb:px-6 bb:py-3 bb:flex bb:flex-row-reverse" };
2121
+ function _r(e, t, i, o, s, c) {
1832
2122
  let l = h("warning"), d = h("dangerous"), p = h("modal");
1833
2123
  return f(), n(p, {
1834
2124
  "is-open": i.isOpen,
1835
2125
  "heading-id": o.headingId,
1836
2126
  onEscape: t[2] ||= (t) => e.$emit("actionCanceled")
1837
2127
  }, {
1838
- default: b(() => [a("div", $n, [a("div", er, [a("div", { class: u(["bb:shrink-0 bb:flex bb:items-center bb:justify-center bb:h-10 bb:w-10 bb:rounded-full", {
2128
+ default: b(() => [a("div", ur, [a("div", dr, [a("div", { class: u(["bb:shrink-0 bb:flex bb:items-center bb:justify-center bb:h-10 bb:w-10 bb:rounded-full", {
1839
2129
  "bb:bg-red-100": c.isDangerous,
1840
2130
  "bb:bg-yellow-100": c.isWarning
1841
- }]) }, [c.isWarning ? (f(), n(l, { key: 0 })) : r("", !0), c.isDangerous ? (f(), n(d, { key: 1 })) : r("", !0)], 2), a("div", tr, [a("h3", {
2131
+ }]) }, [c.isWarning ? (f(), n(l, { key: 0 })) : r("", !0), c.isDangerous ? (f(), n(d, { key: 1 })) : r("", !0)], 2), a("div", fr, [a("h3", {
1842
2132
  class: "bb:text-lg bb:leading-6 bb:font-medium bb:text-gray-900",
1843
2133
  id: o.headingId
1844
- }, _(i.confirmationHeading), 9, nr), a("div", rr, [a("p", ir, _(i.confirmationText), 1)])])])]), a("div", ar, [a("button", {
2134
+ }, _(i.confirmationHeading), 9, pr), a("div", mr, [a("p", hr, _(i.confirmationText), 1)])])])]), a("div", gr, [a("button", {
1845
2135
  type: "button",
1846
- class: u(["bb:inline-flex bb:justify-center bb:rounded-md bb:border bb:border-transparent bb:shadow-xs bb:px-4 bb:py-2 bb:text-sm bb:font-medium bb:text-white bb:focus:outline-hidden bb:focus:ring-2 bb:focus:ring-offset-2 bb:ml-3", {
1847
- "bb:bg-red-600 bb:hover:bg-red-700 bb:focus:ring-red-500": c.isDangerous,
1848
- "bb:bg-yellow-400 bb:hover:bg-yellow-500 bb:focus:ring-yellow-300": c.isWarning
2136
+ class: u(["bb:inline-flex bb:justify-center bb:rounded-md bb:border bb:border-transparent bb:shadow-xs bb:px-4 bb:py-2 bb:text-sm bb:font-medium bb:text-white bb:focus:focus-ring bb:ml-3", {
2137
+ "bb:bg-red-600 bb:hover:bg-red-700": c.isDangerous,
2138
+ "bb:bg-yellow-400 bb:hover:bg-yellow-500": c.isWarning
1849
2139
  }]),
1850
- onClick: t[0] ||= S((t) => e.$emit("actionConfirmed"), ["prevent"])
2140
+ onClick: t[0] ||= C((t) => e.$emit("actionConfirmed"), ["prevent"])
1851
2141
  }, _(i.actionButtonText), 3), a("button", {
1852
2142
  type: "button",
1853
- class: "bb:inline-flex bb:justify-center bb:rounded-md bb:border bb:border-gray-300 bb:shadow-xs bb:px-4 bb:py-2 bb:bg-white bb:text-sm bb:font-medium bb:text-gray-700 bb:hover:bg-gray-50 bb:focus:outline-hidden bb:focus:ring-2 bb:focus:ring-offset-2 bb:focus:ring-indigo-500 bb:ml-3",
2143
+ class: "bb:inline-flex bb:justify-center bb:rounded-md bb:border bb:border-gray-300 bb:shadow-xs bb:px-4 bb:py-2 bb:bg-white bb:text-sm bb:font-medium bb:text-gray-700 bb:hover:bg-gray-50 bb:focus:focus-ring bb:ml-3",
1854
2144
  "data-dialog-focus": "",
1855
- onClick: t[1] ||= S((t) => e.$emit("actionCanceled"), ["prevent"])
2145
+ onClick: t[1] ||= C((t) => e.$emit("actionCanceled"), ["prevent"])
1856
2146
  }, _(i.cancelButtonText ?? e.texts.cancel), 1)])]),
1857
2147
  _: 1
1858
2148
  }, 8, ["is-open", "heading-id"]);
1859
2149
  }
1860
- var sr = /*#__PURE__*/ A(Qn, [["render", or]]);
2150
+ var vr = /*#__PURE__*/ N(lr, [["render", _r]]);
1861
2151
  //#endregion
1862
2152
  //#region src/menuItems.js
1863
- function cr(e) {
1864
- if (typeof e != "object" || !e || typeof e.label != "string" || e.label === "" || e.color !== void 0 && !O(e.color)) return !1;
2153
+ function yr(e) {
2154
+ if (typeof e != "object" || !e || typeof e.label != "string" || e.label === "" || e.color !== void 0 && !j(e.color)) return !1;
1865
2155
  let t = typeof e.href == "string" && e.href !== "" && e.onSelect === void 0, n = typeof e.onSelect == "function" && e.href === void 0;
1866
2156
  return t || n;
1867
2157
  }
1868
- function lr(e) {
2158
+ function br(e) {
1869
2159
  return Array.isArray(e) ? e.filter((e) => typeof e == "object" && !!e) : [];
1870
2160
  }
1871
- function ur(e) {
2161
+ function xr(e) {
1872
2162
  return typeof e.href == "string" && e.href !== "";
1873
2163
  }
1874
- function dr(e) {
1875
- return O(e.color) ? e.color : null;
2164
+ function Sr(e) {
2165
+ return j(e.color) ? e.color : null;
1876
2166
  }
1877
2167
  //#endregion
1878
2168
  //#region src/navigation.js
1879
- function fr(e) {
2169
+ function Cr(e) {
1880
2170
  let t = e.currentTarget?.target ?? "";
1881
2171
  return !(e.defaultPrevented || e.target?.isContentEditable === !0 || e.altKey || e.ctrlKey || e.metaKey || e.shiftKey || t !== "" && t !== "_self" || e.button !== 0);
1882
2172
  }
1883
- var X = {
1884
- inject: D,
2173
+ var Z = {
2174
+ inject: A,
1885
2175
  methods: { followLink(e, t) {
1886
2176
  let n = this.uiSettings.navigate;
1887
- n !== null && fr(e) && (e.preventDefault(), n(t));
2177
+ n !== null && Cr(e) && (e.preventDefault(), n(t));
1888
2178
  } }
1889
- }, pr = {
1890
- components: { PopoverPanel: H },
1891
- mixins: [X, k],
2179
+ }, wr = {
2180
+ components: { PopoverPanel: K },
2181
+ mixins: [Z, M],
1892
2182
  emits: ["update:modelValue"],
1893
2183
  props: {
1894
2184
  actions: { default: () => [] },
@@ -1899,7 +2189,7 @@ var X = {
1899
2189
  },
1900
2190
  computed: {
1901
2191
  actionItems() {
1902
- return lr(this.actions);
2192
+ return br(this.actions);
1903
2193
  },
1904
2194
  hasActions() {
1905
2195
  return this.actionItems.length > 0;
@@ -1907,21 +2197,21 @@ var X = {
1907
2197
  },
1908
2198
  methods: {
1909
2199
  color(e) {
1910
- return dr(e);
2200
+ return Sr(e);
1911
2201
  },
1912
2202
  isLink(e) {
1913
- return ur(e);
2203
+ return xr(e);
1914
2204
  },
1915
2205
  select(e) {
1916
2206
  if (typeof e.onSelect == "function") return e.onSelect();
1917
2207
  }
1918
2208
  }
1919
- }, mr = [
2209
+ }, Tr = [
1920
2210
  "href",
1921
2211
  "onClick",
1922
2212
  "textContent"
1923
- ], hr = ["onClick", "textContent"];
1924
- function gr(t, r, a, o, s, c) {
2213
+ ], Er = ["onClick", "textContent"];
2214
+ function Dr(t, r, a, o, s, c) {
1925
2215
  let l = h("popover-panel");
1926
2216
  return f(), n(l, {
1927
2217
  "model-value": a.modelValue,
@@ -1945,30 +2235,30 @@ function gr(t, r, a, o, s, c) {
1945
2235
  class: u(["bb:block bb:w-full bb:px-4 bb:py-2 bb:text-sm bb:text-left bb:cursor-pointer bb:focus:outline-hidden", c.color(n) === null ? "bb:text-gray-700 bb:focus:bg-gray-100 bb:focus:text-gray-900" : t.colorClass(c.color(n), "menuItem")]),
1946
2236
  onClick: (e) => t.followLink(e, n.href),
1947
2237
  textContent: _(n.label)
1948
- }, null, 10, mr)) : (f(), i("button", {
2238
+ }, null, 10, Tr)) : (f(), i("button", {
1949
2239
  key: 1,
1950
2240
  type: "button",
1951
2241
  role: "menuitem",
1952
2242
  class: u(["bb:block bb:w-full bb:px-4 bb:py-2 bb:text-sm bb:text-left bb:cursor-pointer bb:focus:outline-hidden", c.color(n) === null ? "bb:text-gray-700 bb:focus:bg-gray-100 bb:focus:text-gray-900" : t.colorClass(c.color(n), "menuItem")]),
1953
2243
  onClick: (e) => c.select(n),
1954
2244
  textContent: _(n.label)
1955
- }, null, 10, hr))], 64))), 128))]),
2245
+ }, null, 10, Er))], 64))), 128))]),
1956
2246
  _: 3
1957
2247
  }, 8, ["model-value", "has-content"]);
1958
2248
  }
1959
- var Z = /*#__PURE__*/ A(pr, [["render", gr]]), _r = {
1960
- components: { PopoverMenu: Z },
2249
+ var Or = /*#__PURE__*/ N(wr, [["render", Dr]]), kr = {
2250
+ components: { PopoverMenu: Or },
1961
2251
  mixins: [
1962
- N,
1963
- X,
1964
- k
2252
+ I,
2253
+ Z,
2254
+ M
1965
2255
  ],
1966
2256
  emits: ["update:modelValue"],
1967
2257
  props: {
1968
2258
  actions: {
1969
2259
  type: Array,
1970
2260
  default: () => [],
1971
- validator: (e) => e.every(cr)
2261
+ validator: (e) => e.every(yr)
1972
2262
  },
1973
2263
  modelValue: {
1974
2264
  type: Boolean,
@@ -1980,7 +2270,7 @@ var Z = /*#__PURE__*/ A(pr, [["render", gr]]), _r = {
1980
2270
  },
1981
2271
  computed: {
1982
2272
  items() {
1983
- return lr(this.actions);
2273
+ return br(this.actions);
1984
2274
  },
1985
2275
  hasActions() {
1986
2276
  return this.items.length > 0;
@@ -1989,7 +2279,7 @@ var Z = /*#__PURE__*/ A(pr, [["render", gr]]), _r = {
1989
2279
  return this.items[0];
1990
2280
  },
1991
2281
  mainColor() {
1992
- return this.hasActions ? dr(this.mainAction) : null;
2282
+ return this.hasActions ? Sr(this.mainAction) : null;
1993
2283
  },
1994
2284
  menuActions() {
1995
2285
  return this.items.slice(1);
@@ -2011,7 +2301,7 @@ var Z = /*#__PURE__*/ A(pr, [["render", gr]]), _r = {
2011
2301
  },
2012
2302
  methods: {
2013
2303
  isLink(e) {
2014
- return ur(e);
2304
+ return xr(e);
2015
2305
  },
2016
2306
  select(e) {
2017
2307
  if (typeof e.onSelect == "function") return e.onSelect();
@@ -2020,31 +2310,31 @@ var Z = /*#__PURE__*/ A(pr, [["render", gr]]), _r = {
2020
2310
  this.menuIsOpen = e, this.$emit("update:modelValue", e);
2021
2311
  }
2022
2312
  }
2023
- }, vr = {
2313
+ }, Ar = {
2024
2314
  key: 0,
2025
2315
  class: "bb-dashboard-ui bb:relative bb:inline-flex bb:shadow-xs bb:rounded-md"
2026
- }, yr = ["href", "textContent"], br = ["textContent"], xr = ["id", "popovertarget"], Sr = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2027
- function Cr(e, t, n, o, c, l) {
2316
+ }, jr = ["href", "textContent"], Mr = ["textContent"], Nr = ["id", "popovertarget"], Pr = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2317
+ function Fr(e, t, n, o, c, l) {
2028
2318
  let d = h("popover-menu");
2029
- return l.hasActions ? (f(), i("span", vr, [l.isLink(l.mainAction) ? (f(), i("a", {
2319
+ return l.hasActions ? (f(), i("span", Ar, [l.isLink(l.mainAction) ? (f(), i("a", {
2030
2320
  key: 0,
2031
2321
  href: l.mainAction.href,
2032
- class: u(["bb:relative bb:inline-flex bb:items-center bb:px-4 bb:py-2 bb:border bb:text-sm bb:font-medium bb:cursor-pointer bb:focus:z-10 bb:focus:outline-hidden bb:focus:ring-1 bb:focus:ring-indigo-500 bb:focus:border-indigo-500", [{
2322
+ class: u(["bb:relative bb:inline-flex bb:items-center bb:px-4 bb:py-2 bb:border bb:text-sm bb:font-medium bb:cursor-pointer bb:focus:z-10 bb:focus:focus-ring", [{
2033
2323
  "bb:rounded-l-md": l.hasMenu,
2034
2324
  "bb:rounded-md": !l.hasMenu
2035
2325
  }, l.mainColor === null ? "bb:bg-white bb:border-gray-300 bb:text-gray-700 bb:hover:bg-gray-50" : e.colorClass(l.mainColor, "button")]]),
2036
2326
  onClick: t[0] ||= (t) => e.followLink(t, l.mainAction.href),
2037
2327
  textContent: _(l.mainAction.label)
2038
- }, null, 10, yr)) : (f(), i("button", {
2328
+ }, null, 10, jr)) : (f(), i("button", {
2039
2329
  key: 1,
2040
2330
  type: "button",
2041
- class: u(["bb:relative bb:inline-flex bb:items-center bb:px-4 bb:py-2 bb:border bb:text-sm bb:font-medium bb:cursor-pointer bb:focus:z-10 bb:focus:outline-hidden bb:focus:ring-1 bb:focus:ring-indigo-500 bb:focus:border-indigo-500", [{
2331
+ class: u(["bb:relative bb:inline-flex bb:items-center bb:px-4 bb:py-2 bb:border bb:text-sm bb:font-medium bb:cursor-pointer bb:focus:z-10 bb:focus:focus-ring", [{
2042
2332
  "bb:rounded-l-md": l.hasMenu,
2043
2333
  "bb:rounded-md": !l.hasMenu
2044
2334
  }, l.mainColor === null ? "bb:bg-white bb:border-gray-300 bb:text-gray-700 bb:hover:bg-gray-50" : e.colorClass(l.mainColor, "button")]]),
2045
2335
  onClick: t[1] ||= (e) => l.select(l.mainAction),
2046
2336
  textContent: _(l.mainAction.label)
2047
- }, null, 10, br)), s(d, {
2337
+ }, null, 10, Mr)), s(d, {
2048
2338
  class: "bb:-ml-px bb:flex",
2049
2339
  actions: l.menuActions,
2050
2340
  "model-value": n.modelValue,
@@ -2054,8 +2344,8 @@ function Cr(e, t, n, o, c, l) {
2054
2344
  type: "button",
2055
2345
  id: n.id,
2056
2346
  popovertarget: n.popovertarget,
2057
- class: u(["bb:relative bb:inline-flex bb:items-center bb:px-2 bb:py-2 bb:rounded-r-md bb:border bb:text-sm bb:font-medium bb:focus:z-10 bb:focus:outline-hidden bb:focus:ring-1 bb:focus:ring-indigo-500 bb:focus:border-indigo-500", l.mainColor === null ? "bb:bg-white bb:border-gray-300 bb:text-gray-500 bb:hover:bg-gray-50" : e.colorClass(l.mainColor, "button")])
2058
- }, [a("span", Sr, _(e.texts.openMenu), 1), t[2] ||= a("svg", {
2347
+ class: u(["bb:relative bb:inline-flex bb:items-center bb:px-2 bb:py-2 bb:rounded-r-md bb:border bb:text-sm bb:font-medium bb:focus:z-10 bb:focus:focus-ring", l.mainColor === null ? "bb:bg-white bb:border-gray-300 bb:text-gray-500 bb:hover:bg-gray-50" : e.colorClass(l.mainColor, "button")])
2348
+ }, [a("span", Pr, _(e.texts.openMenu), 1), t[2] ||= a("svg", {
2059
2349
  class: "bb:h-5 bb:w-5 bb:pointer-events-none bb:cursor-default",
2060
2350
  xmlns: "http://www.w3.org/2000/svg",
2061
2351
  viewBox: "0 0 20 20",
@@ -2065,7 +2355,7 @@ function Cr(e, t, n, o, c, l) {
2065
2355
  "fill-rule": "evenodd",
2066
2356
  d: "M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z",
2067
2357
  "clip-rule": "evenodd"
2068
- })], -1)], 10, xr)]),
2358
+ })], -1)], 10, Nr)]),
2069
2359
  _: 1
2070
2360
  }, 8, [
2071
2361
  "actions",
@@ -2073,16 +2363,16 @@ function Cr(e, t, n, o, c, l) {
2073
2363
  "onUpdate:modelValue"
2074
2364
  ])])) : r("", !0);
2075
2365
  }
2076
- var wr = /*#__PURE__*/ A(_r, [["render", Cr]]), Tr = {
2077
- components: { PopoverMenu: Z },
2078
- mixins: [N],
2366
+ var Ir = /*#__PURE__*/ N(kr, [["render", Fr]]), Lr = {
2367
+ components: { PopoverMenu: Or },
2368
+ mixins: [I],
2079
2369
  props: { actions: {
2080
2370
  type: Array,
2081
2371
  default: () => [],
2082
- validator: (e) => e.every(cr)
2372
+ validator: (e) => e.every(yr)
2083
2373
  } }
2084
- }, Er = ["id", "popovertarget"], Dr = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2085
- function Or(e, t, r, i, o, s) {
2374
+ }, Rr = ["id", "popovertarget"], zr = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2375
+ function Br(e, t, r, i, o, s) {
2086
2376
  let c = h("popover-menu");
2087
2377
  return f(), n(c, {
2088
2378
  class: "bb-dashboard-ui bb:inline-flex",
@@ -2093,7 +2383,7 @@ function Or(e, t, r, i, o, s) {
2093
2383
  id: n.id,
2094
2384
  popovertarget: n.popovertarget,
2095
2385
  class: "bb:relative bb:inline-flex bb:items-center bb:justify-center bb:p-2 bb:rounded-md bb:text-gray-400 bb:hover:text-gray-500 bb:hover:bg-gray-100 bb:focus:outline-hidden bb:focus:bg-gray-100 bb:focus:text-gray-500 bb:transition bb:duration-150 bb:ease-in-out"
2096
- }, [a("span", Dr, _(e.texts.openMenu), 1), t[0] ||= a("svg", {
2386
+ }, [a("span", zr, _(e.texts.openMenu), 1), t[0] ||= a("svg", {
2097
2387
  class: "bb:h-6 bb:w-6 bb:pointer-events-none bb:cursor-default",
2098
2388
  fill: "none",
2099
2389
  viewBox: "0 0 24 24",
@@ -2104,48 +2394,48 @@ function Or(e, t, r, i, o, s) {
2104
2394
  "stroke-linejoin": "round",
2105
2395
  "stroke-width": "2",
2106
2396
  d: "M4 6h16M4 12h16M4 18h16"
2107
- })], -1)], 8, Er)]),
2397
+ })], -1)], 8, Rr)]),
2108
2398
  _: 1
2109
2399
  }, 8, ["actions"]);
2110
2400
  }
2111
- var kr = /*#__PURE__*/ A(Tr, [["render", Or]]), Ar = {}, jr = {
2401
+ var Vr = /*#__PURE__*/ N(Lr, [["render", Br]]), Hr = {}, Ur = {
2112
2402
  xmlns: "http://www.w3.org/2000/svg",
2113
2403
  viewBox: "0 0 20 20",
2114
2404
  fill: "currentColor",
2115
2405
  "aria-hidden": "true"
2116
2406
  };
2117
- function Mr(e, t, n, r, o, s) {
2118
- return f(), i("svg", jr, [...t[0] ||= [a("path", {
2407
+ function Wr(e, t, n, r, o, s) {
2408
+ return f(), i("svg", Ur, [...t[0] ||= [a("path", {
2119
2409
  "fill-rule": "evenodd",
2120
2410
  "clip-rule": "evenodd",
2121
2411
  d: "M7.707 14.707a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 1.414L5.414 9H17a1 1 0 110 2H5.414l2.293 2.293a1 1 0 010 1.414z"
2122
2412
  }, null, -1)]]);
2123
2413
  }
2124
- var Nr = /*#__PURE__*/ A(Ar, [["render", Mr]]), Pr = {}, Fr = {
2414
+ var Gr = /*#__PURE__*/ N(Hr, [["render", Wr]]), Kr = {}, qr = {
2125
2415
  xmlns: "http://www.w3.org/2000/svg",
2126
2416
  viewBox: "0 0 20 20",
2127
2417
  fill: "currentColor",
2128
2418
  "aria-hidden": "true"
2129
2419
  };
2130
- function Ir(e, t, n, r, o, s) {
2131
- return f(), i("svg", Fr, [...t[0] ||= [a("path", {
2420
+ function Jr(e, t, n, r, o, s) {
2421
+ return f(), i("svg", qr, [...t[0] ||= [a("path", {
2132
2422
  "fill-rule": "evenodd",
2133
2423
  "clip-rule": "evenodd",
2134
2424
  d: "M12.293 5.293a1 1 0 011.414 0l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-2.293-2.293a1 1 0 010-1.414z"
2135
2425
  }, null, -1)]]);
2136
2426
  }
2137
- var Lr = /*#__PURE__*/ A(Pr, [["render", Ir]]);
2427
+ var Yr = /*#__PURE__*/ N(Kr, [["render", Jr]]);
2138
2428
  //#endregion
2139
2429
  //#region src/components/Pagination.vue
2140
- function Rr(e) {
2430
+ function Xr(e) {
2141
2431
  return typeof e == "string" && e !== "" ? e : null;
2142
2432
  }
2143
- var zr = {
2433
+ var Zr = {
2144
2434
  components: {
2145
- ArrowNarrowLeft: Nr,
2146
- ArrowNarrowRight: Lr
2435
+ ArrowNarrowLeft: Gr,
2436
+ ArrowNarrowRight: Yr
2147
2437
  },
2148
- mixins: [N, X],
2438
+ mixins: [I, Z],
2149
2439
  props: {
2150
2440
  links: {
2151
2441
  type: Object,
@@ -2173,49 +2463,49 @@ var zr = {
2173
2463
  return typeof this.from == "number" && typeof this.to == "number";
2174
2464
  },
2175
2465
  previousPageUrl() {
2176
- return Rr(this.links?.prev);
2466
+ return Xr(this.links?.prev);
2177
2467
  },
2178
2468
  nextPageUrl() {
2179
- return Rr(this.links?.next);
2469
+ return Xr(this.links?.next);
2180
2470
  }
2181
2471
  }
2182
- }, Br = {
2472
+ }, Qr = {
2183
2473
  key: 0,
2184
2474
  class: "bb-dashboard-ui bb:flex bb:items-center bb:justify-between"
2185
- }, Vr = { class: "bb:-mt-px bb:w-0 bb:flex-1 bb:flex" }, Hr = ["href"], Ur = {
2475
+ }, $r = { class: "bb:-mt-px bb:w-0 bb:flex-1 bb:flex" }, ei = ["href"], ti = {
2186
2476
  key: 0,
2187
2477
  class: "bb:-mt-px bb:flex bb:text-gray-400 bb:text-sm bb:leading-5"
2188
- }, Wr = { class: "bb:font-medium bb:text-gray-900 bb:mx-1" }, Gr = { class: "bb:font-medium bb:text-gray-900 bb:mx-1" }, Kr = { class: "bb:-mt-px bb:w-0 bb:flex-1 bb:flex bb:justify-end" }, qr = ["href"];
2189
- function Jr(e, t, n, c, l, u) {
2478
+ }, ni = { class: "bb:font-medium bb:text-gray-900 bb:mx-1" }, ri = { class: "bb:font-medium bb:text-gray-900 bb:mx-1" }, ii = { class: "bb:-mt-px bb:w-0 bb:flex-1 bb:flex bb:justify-end" }, ai = ["href"];
2479
+ function oi(e, t, n, c, l, u) {
2190
2480
  let d = h("arrow-narrow-left"), p = h("arrow-narrow-right");
2191
- return u.hasResults ? (f(), i("nav", Br, [
2192
- a("div", Vr, [u.previousPageUrl === null ? r("", !0) : (f(), i("a", {
2481
+ return u.hasResults ? (f(), i("nav", Qr, [
2482
+ a("div", $r, [u.previousPageUrl === null ? r("", !0) : (f(), i("a", {
2193
2483
  key: 0,
2194
2484
  href: u.previousPageUrl,
2195
- class: "bb:border-t-2 bb:border-transparent bb:pt-4 bb:pr-1 bb:inline-flex bb:items-center bb:text-sm bb:font-medium bb:text-gray-500 bb:hover:text-gray-700 bb:hover:border-indigo-700",
2485
+ class: "bb:border-t-2 bb:border-transparent bb:pt-4 bb:pr-1 bb:inline-flex bb:items-center bb:text-sm bb:font-medium bb:text-gray-500 bb:hover:text-gray-700 bb:hover:border-indigo-700 bb:focus-visible:focus-ring",
2196
2486
  onClick: t[0] ||= (t) => e.followLink(t, u.previousPageUrl)
2197
- }, [s(d, { class: "bb:mr-3 bb:h-5 bb:w-5 bb:text-gray-400 bb:pointer-events-none bb:cursor-default" }), o(" " + _(e.texts.previousPage), 1)], 8, Hr))]),
2198
- u.hasRange ? (f(), i("div", Ur, [
2487
+ }, [s(d, { class: "bb:mr-3 bb:h-5 bb:w-5 bb:text-gray-400 bb:pointer-events-none bb:cursor-default" }), o(" " + _(e.texts.previousPage), 1)], 8, ei))]),
2488
+ u.hasRange ? (f(), i("div", ti, [
2199
2489
  o(_(e.texts.resultsBefore) + " ", 1),
2200
- a("span", Wr, _(u.from) + " - " + _(u.to), 1),
2490
+ a("span", ni, _(u.from) + " - " + _(u.to), 1),
2201
2491
  o(" " + _(e.texts.resultsOf) + " ", 1),
2202
- a("span", Gr, _(u.total), 1),
2492
+ a("span", ri, _(u.total), 1),
2203
2493
  o(" " + _(e.texts.resultsAfter), 1)
2204
2494
  ])) : r("", !0),
2205
- a("div", Kr, [u.nextPageUrl === null ? r("", !0) : (f(), i("a", {
2495
+ a("div", ii, [u.nextPageUrl === null ? r("", !0) : (f(), i("a", {
2206
2496
  key: 0,
2207
2497
  href: u.nextPageUrl,
2208
- class: "bb:border-t-2 bb:border-transparent bb:pt-4 bb:pl-1 bb:inline-flex bb:items-center bb:text-sm bb:font-medium bb:text-gray-500 bb:hover:text-gray-700 bb:hover:border-indigo-700",
2498
+ class: "bb:border-t-2 bb:border-transparent bb:pt-4 bb:pl-1 bb:inline-flex bb:items-center bb:text-sm bb:font-medium bb:text-gray-500 bb:hover:text-gray-700 bb:hover:border-indigo-700 bb:focus-visible:focus-ring",
2209
2499
  onClick: t[1] ||= (t) => e.followLink(t, u.nextPageUrl)
2210
- }, [o(_(e.texts.nextPage) + " ", 1), s(p, { class: "bb:ml-3 bb:h-5 bb:w-5 bb:text-gray-400 bb:pointer-events-none bb:cursor-default" })], 8, qr))])
2500
+ }, [o(_(e.texts.nextPage) + " ", 1), s(p, { class: "bb:ml-3 bb:h-5 bb:w-5 bb:text-gray-400 bb:pointer-events-none bb:cursor-default" })], 8, ai))])
2211
2501
  ])) : r("", !0);
2212
2502
  }
2213
- var Yr = /*#__PURE__*/ A(zr, [["render", Jr]]), Xr = [
2503
+ var si = /*#__PURE__*/ N(Zr, [["render", oi]]), ci = [
2214
2504
  "left",
2215
2505
  "center",
2216
2506
  "right"
2217
2507
  ];
2218
- function Zr(e) {
2508
+ function li(e) {
2219
2509
  if (typeof e != "object" || !e || typeof e.key != "string" || e.key === "") return null;
2220
2510
  let t = e.key;
2221
2511
  return {
@@ -2224,21 +2514,21 @@ function Zr(e) {
2224
2514
  value: typeof e.value == "function" ? e.value : (e) => e?.[t],
2225
2515
  secondary: typeof e.secondary == "function" ? e.secondary : null,
2226
2516
  muted: e.muted === !0,
2227
- align: Xr.includes(e.align) ? e.align : "left",
2517
+ align: ci.includes(e.align) ? e.align : "left",
2228
2518
  wrap: e.wrap === !0,
2229
2519
  narrow: e.narrow === !0,
2230
2520
  visible: e.visible !== !1
2231
2521
  };
2232
2522
  }
2233
- function Qr(e) {
2523
+ function ui(e) {
2234
2524
  return typeof e == "string" && e !== "" ? e : null;
2235
2525
  }
2236
- var $r = {
2526
+ var di = {
2237
2527
  components: {
2238
- Pagination: Yr,
2239
- InfoPill: q
2528
+ Pagination: si,
2529
+ InfoPill: mn
2240
2530
  },
2241
- mixins: [N, k],
2531
+ mixins: [I, M],
2242
2532
  props: {
2243
2533
  rows: {
2244
2534
  type: Array,
@@ -2283,7 +2573,7 @@ var $r = {
2283
2573
  return Array.isArray(this.rows) ? this.rows : [];
2284
2574
  },
2285
2575
  visibleColumns() {
2286
- return (Array.isArray(this.columns) ? this.columns : []).map(Zr).filter((e) => e !== null && e.visible);
2576
+ return (Array.isArray(this.columns) ? this.columns : []).map(li).filter((e) => e !== null && e.visible);
2287
2577
  },
2288
2578
  rowStripes() {
2289
2579
  return this.normalizedRows.map((e) => this.stripeOf(e));
@@ -2302,10 +2592,10 @@ var $r = {
2302
2592
  },
2303
2593
  badgeText() {
2304
2594
  if (this.hasRecords) {
2305
- let e = Qr(this.foundText);
2595
+ let e = ui(this.foundText);
2306
2596
  return e === null ? null : `${e}: ${this.recordCount}`;
2307
2597
  }
2308
- return Qr(this.emptyText);
2598
+ return ui(this.emptyText);
2309
2599
  }
2310
2600
  },
2311
2601
  methods: {
@@ -2325,15 +2615,15 @@ var $r = {
2325
2615
  stripeOf(e) {
2326
2616
  if (typeof this.rowStripe != "function") return null;
2327
2617
  let t = this.rowStripe(e);
2328
- return O(t) ? t : null;
2618
+ return j(t) ? t : null;
2329
2619
  },
2330
2620
  textOf(e, t) {
2331
2621
  let n = e(t);
2332
2622
  return n == null ? "" : String(n);
2333
2623
  }
2334
2624
  }
2335
- }, ei = { class: "bb:min-w-full bb:divide-y bb:divide-gray-200 bb:border-collapse" }, ti = { class: "bb:bg-gray-50" }, ni = ["textContent"], ri = { class: "bb:divide-y bb:divide-gray-200" }, ii = ["textContent"], ai = ["textContent"];
2336
- function oi(t, o, s, c, l, d) {
2625
+ }, fi = { class: "bb:min-w-full bb:divide-y bb:divide-gray-200 bb:border-collapse" }, pi = { class: "bb:bg-gray-50" }, mi = ["textContent"], hi = { class: "bb:divide-y bb:divide-gray-200" }, gi = ["textContent"], _i = ["textContent"];
2626
+ function vi(t, o, s, c, l, d) {
2337
2627
  let g = h("info-pill"), v = h("pagination");
2338
2628
  return f(), i("div", null, [
2339
2629
  d.hasBadgeRow() ? (f(), i("div", {
@@ -2347,7 +2637,7 @@ function oi(t, o, s, c, l, d) {
2347
2637
  d.normalizedRows.length > 0 ? (f(), i("div", {
2348
2638
  key: 1,
2349
2639
  class: u(d.isCard && d.hasBadgeRow() ? "bb:mt-4" : "")
2350
- }, [a("div", { class: u(["bb:overflow-x-auto", d.isCard ? "bb:border-t bb:border-gray-200" : "bb:shadow-sm bb:border-b bb:border-gray-200 bb:rounded-lg"]) }, [a("table", ei, [a("thead", null, [a("tr", ti, [(f(!0), i(e, null, p(d.visibleColumns, (e) => (f(), i("th", {
2640
+ }, [a("div", { class: u(["bb:overflow-x-auto", d.isCard ? "bb:border-t bb:border-gray-200" : "bb:shadow-sm bb:border-b bb:border-gray-200 bb:rounded-lg"]) }, [a("table", fi, [a("thead", null, [a("tr", pi, [(f(!0), i(e, null, p(d.visibleColumns, (e) => (f(), i("th", {
2351
2641
  key: e.key,
2352
2642
  scope: "col",
2353
2643
  class: u(["bb:px-6 bb:py-3 bb:text-xs bb:leading-4 bb:font-medium bb:text-gray-500 bb:uppercase bb:tracking-wider bb:whitespace-nowrap", [{
@@ -2356,7 +2646,7 @@ function oi(t, o, s, c, l, d) {
2356
2646
  "bb:text-right": e.align === "right"
2357
2647
  }, { "bb:w-px": e.narrow }]]),
2358
2648
  textContent: _(e.label)
2359
- }, null, 10, ni))), 128))])]), a("tbody", ri, [(f(!0), i(e, null, p(d.normalizedRows, (n, o) => (f(), i("tr", {
2649
+ }, null, 10, mi))), 128))])]), a("tbody", hi, [(f(!0), i(e, null, p(d.normalizedRows, (n, o) => (f(), i("tr", {
2360
2650
  key: d.keyOf(n, o),
2361
2651
  class: "bb:bg-white bb:even:bg-gray-50"
2362
2652
  }, [(f(!0), i(e, null, p(d.visibleColumns, (e, s) => (f(), i("td", {
@@ -2380,11 +2670,11 @@ function oi(t, o, s, c, l, d) {
2380
2670
  }, () => [a("div", {
2381
2671
  class: u(["bb:font-medium", e.muted ? "bb:text-gray-400" : "bb:text-gray-900"]),
2382
2672
  textContent: _(d.textOf(e.value, n))
2383
- }, null, 10, ii), e.secondary !== null && d.textOf(e.secondary, n) !== "" ? (f(), i("div", {
2673
+ }, null, 10, gi), e.secondary !== null && d.textOf(e.secondary, n) !== "" ? (f(), i("div", {
2384
2674
  key: 0,
2385
2675
  class: "bb:text-gray-400",
2386
2676
  textContent: _(d.textOf(e.secondary, n))
2387
- }, null, 8, ai)) : r("", !0)])], 2))), 128))]))), 128))])])], 2)], 2)) : r("", !0),
2677
+ }, null, 8, _i)) : r("", !0)])], 2))), 128))]))), 128))])])], 2)], 2)) : r("", !0),
2388
2678
  d.hasMeta ? (f(), n(v, {
2389
2679
  key: 2,
2390
2680
  meta: s.meta,
@@ -2399,8 +2689,8 @@ function oi(t, o, s, c, l, d) {
2399
2689
  ])) : r("", !0)
2400
2690
  ]);
2401
2691
  }
2402
- var si = /*#__PURE__*/ A($r, [["render", oi]]), ci = {
2403
- mixins: [X],
2692
+ var yi = /*#__PURE__*/ N(di, [["render", vi]]), bi = {
2693
+ mixins: [Z],
2404
2694
  props: {
2405
2695
  url: {
2406
2696
  type: String,
@@ -2415,17 +2705,17 @@ var si = /*#__PURE__*/ A($r, [["render", oi]]), ci = {
2415
2705
  default: !1
2416
2706
  }
2417
2707
  }
2418
- }, li = ["href", "textContent"];
2419
- function ui(e, t, n, r, a, o) {
2708
+ }, xi = ["href", "textContent"];
2709
+ function Si(e, t, n, r, a, o) {
2420
2710
  return f(), i("a", {
2421
2711
  href: n.url,
2422
2712
  class: u([n.isActive ? "bb:border-indigo-400 bb:text-gray-600 bb:focus:border-indigo-700" : "bb:border-transparent bb:text-gray-500 bb:hover:text-gray-600 bb:hover:border-gray-300 bb:focus:text-gray-700 bb:focus:border-gray-300", "bb-dashboard-ui bb:inline-flex bb:items-center bb:px-1 bb:pt-1 bb:border-b-2 bb:text-sm bb:font-medium bb:leading-5 bb:focus:outline-hidden bb:transition bb:duration-150 bb:ease-in-out"]),
2423
2713
  onClick: t[0] ||= (t) => e.followLink(t, n.url),
2424
2714
  textContent: _(n.name)
2425
- }, null, 10, li);
2715
+ }, null, 10, xi);
2426
2716
  }
2427
- var di = /*#__PURE__*/ A(ci, [["render", ui]]), fi = {
2428
- mixins: [N, X],
2717
+ var Ci = /*#__PURE__*/ N(bi, [["render", Si]]), wi = {
2718
+ mixins: [I, Z],
2429
2719
  props: {
2430
2720
  tabs: {
2431
2721
  type: Array,
@@ -2439,13 +2729,13 @@ var di = /*#__PURE__*/ A(ci, [["render", ui]]), fi = {
2439
2729
  computed: { tabList() {
2440
2730
  return Array.isArray(this.tabs) ? this.tabs.filter((e) => typeof e == "object" && !!e) : [];
2441
2731
  } }
2442
- }, pi = ["aria-label"], mi = [
2732
+ }, Ti = ["aria-label"], Ei = [
2443
2733
  "href",
2444
2734
  "aria-current",
2445
2735
  "onClick",
2446
2736
  "textContent"
2447
2737
  ];
2448
- function hi(t, n, r, a, o, s) {
2738
+ function Di(t, n, r, a, o, s) {
2449
2739
  return f(), i("nav", {
2450
2740
  class: "bb-dashboard-ui bb:flex bb:space-x-4",
2451
2741
  "aria-label": t.texts.tabs
@@ -2453,24 +2743,24 @@ function hi(t, n, r, a, o, s) {
2453
2743
  key: e.key,
2454
2744
  href: e.url,
2455
2745
  "aria-current": e.key === r.activeKey ? "page" : null,
2456
- class: u(["bb:px-3 bb:py-2 bb:font-medium bb:text-sm bb:rounded-md", e.key === r.activeKey ? "bb:bg-indigo-100 bb:text-gray-700" : "bb:text-gray-500 bb:hover:text-gray-700"]),
2746
+ class: u(["bb:px-3 bb:py-2 bb:font-medium bb:text-sm bb:rounded-md bb:focus-visible:focus-ring", e.key === r.activeKey ? "bb:bg-indigo-100 bb:text-gray-700" : "bb:text-gray-500 bb:hover:text-gray-700"]),
2457
2747
  onClick: (n) => t.followLink(n, e.url),
2458
2748
  textContent: _(e.name)
2459
- }, null, 10, mi))), 128))], 8, pi);
2749
+ }, null, 10, Ei))), 128))], 8, Ti);
2460
2750
  }
2461
- var gi = /*#__PURE__*/ A(fi, [["render", hi]]), _i = [
2751
+ var Oi = /*#__PURE__*/ N(wi, [["render", Di]]), ki = [
2462
2752
  "xl",
2463
2753
  "4xl",
2464
2754
  "7xl"
2465
- ], vi = {
2466
- components: { CrossButton: P },
2467
- mixins: [N],
2755
+ ], Ai = {
2756
+ components: { CrossButton: L },
2757
+ mixins: [I],
2468
2758
  inheritAttrs: !1,
2469
2759
  props: {
2470
2760
  width: {
2471
2761
  type: String,
2472
2762
  default: "xl",
2473
- validator: (e) => _i.includes(e)
2763
+ validator: (e) => ki.includes(e)
2474
2764
  },
2475
2765
  fallbackUrl: {
2476
2766
  type: String,
@@ -2486,13 +2776,13 @@ var gi = /*#__PURE__*/ A(fi, [["render", hi]]), _i = [
2486
2776
  },
2487
2777
  computed: {
2488
2778
  resolvedWidth() {
2489
- return _i.includes(this.width) ? this.width : "xl";
2779
+ return ki.includes(this.width) ? this.width : "xl";
2490
2780
  },
2491
2781
  windows() {
2492
2782
  return this.uiSettings.windows;
2493
2783
  },
2494
2784
  resolvedKey() {
2495
- return this.windowKey !== null && this.windowKey !== "" ? this.windowKey : this.windows === null ? null : se(this.windows.page.address);
2785
+ return this.windowKey !== null && this.windowKey !== "" ? this.windowKey : this.windows === null ? null : oe(this.windows.page.address);
2496
2786
  },
2497
2787
  target() {
2498
2788
  return this.returnAddress === null ? this.fallbackUrl === null || this.fallbackUrl === "" ? null : this.fallbackUrl : this.returnAddress;
@@ -2502,23 +2792,23 @@ var gi = /*#__PURE__*/ A(fi, [["render", hi]]), _i = [
2502
2792
  }
2503
2793
  },
2504
2794
  watch: { fallbackUrl() {
2505
- this.windows !== null && ge(this.windows.state, this, this.fallbackAddress());
2795
+ this.windows !== null && me(this.windows.state, this, this.fallbackAddress());
2506
2796
  } },
2507
2797
  mounted() {
2508
- this.windows !== null && (this.returnAddress = E(this.windows.state, this, this.resolvedKey, this.fallbackAddress()).returnAddress, this.$watch(() => [this.windows.page.number, this.resolvedKey], () => this.syncWindow(), { flush: "post" }));
2798
+ this.windows !== null && (this.returnAddress = O(this.windows.state, this, this.resolvedKey, this.fallbackAddress()).returnAddress, this.$watch(() => [this.windows.page.number, this.resolvedKey], () => this.syncWindow(), { flush: "post" }));
2509
2799
  },
2510
2800
  beforeUnmount() {
2511
- this.windows !== null && he(this.windows.state, this);
2801
+ this.windows !== null && pe(this.windows.state, this);
2512
2802
  },
2513
2803
  methods: {
2514
2804
  fallbackAddress() {
2515
- return oe(this.fallbackUrl, window.location.origin);
2805
+ return T(this.fallbackUrl, window.location.origin);
2516
2806
  },
2517
2807
  forwardedAttrs() {
2518
2808
  return Object.fromEntries(Object.entries(this.$attrs).filter(([e]) => e.startsWith("data-") || e.startsWith("aria-")));
2519
2809
  },
2520
2810
  syncWindow() {
2521
- let e = me(this.windows.state, this, this.resolvedKey, this.fallbackAddress());
2811
+ let e = fe(this.windows.state, this, this.resolvedKey, this.fallbackAddress());
2522
2812
  e.rejected && console.warn(`PageCard: ключ окна сменился на «${this.resolvedKey}» без смены страницы — карточка остаётся в окне «${e.key}»`), this.returnAddress = e.window.returnAddress;
2523
2813
  },
2524
2814
  close() {
@@ -2533,7 +2823,7 @@ var gi = /*#__PURE__*/ A(fi, [["render", hi]]), _i = [
2533
2823
  }
2534
2824
  }
2535
2825
  };
2536
- function yi(e, t, a, s, c, d) {
2826
+ function ji(e, t, a, s, c, d) {
2537
2827
  let p = h("cross-button");
2538
2828
  return f(), i("div", l({
2539
2829
  class: ["bb:box-border bb:relative bb:my-6 bb:mx-auto bb:bg-white bb:shadow-xl bb:rounded-lg", [
@@ -2553,19 +2843,18 @@ function yi(e, t, a, s, c, d) {
2553
2843
  }, { ...d.forwardedAttrs() }), [m(e.$slots, "default", { close: d.close }), d.canClose ? (f(), n(p, {
2554
2844
  key: 0,
2555
2845
  size: "large",
2556
- class: u(["bb:absolute bb:top-0 bb:right-0 bb:mt-6 bb:mr-4 bb:w-8 bb:h-8 bb:rounded-md bb:focus-visible:ring-2 bb:focus-visible:ring-indigo-500", {
2846
+ class: u(["bb:absolute bb:top-0 bb:right-0 bb:mt-6 bb:mr-4 bb:w-8 bb:h-8", {
2557
2847
  "bb:md:right-auto bb:md:left-full bb:md:mr-0 bb:md:ml-4": d.resolvedWidth === "xl",
2558
2848
  "bb:lg:right-auto bb:lg:left-full bb:lg:mr-0 bb:lg:ml-4": d.resolvedWidth === "4xl",
2559
2849
  "bb:2xl:right-auto bb:2xl:left-full bb:2xl:mr-0 bb:2xl:ml-4": d.resolvedWidth === "7xl"
2560
2850
  }]),
2561
- tabindex: "0",
2562
2851
  onClicked: d.close
2563
2852
  }, {
2564
2853
  default: b(() => [o(_(e.texts.back), 1)]),
2565
2854
  _: 1
2566
2855
  }, 8, ["class", "onClicked"])) : r("", !0)], 16);
2567
2856
  }
2568
- var bi = /*#__PURE__*/ A(vi, [["render", yi]]), xi = {}, Si = {
2857
+ var Mi = /*#__PURE__*/ N(Ai, [["render", ji]]), Ni = {}, Pi = {
2569
2858
  class: "bb:h-7 bb:w-7 bb:text-green-600",
2570
2859
  xmlns: "http://www.w3.org/2000/svg",
2571
2860
  fill: "none",
@@ -2574,22 +2863,22 @@ var bi = /*#__PURE__*/ A(vi, [["render", yi]]), xi = {}, Si = {
2574
2863
  stroke: "currentColor",
2575
2864
  "aria-hidden": "true"
2576
2865
  };
2577
- function Ci(e, t, n, r, o, s) {
2578
- return f(), i("svg", Si, [...t[0] ||= [a("path", {
2866
+ function Fi(e, t, n, r, o, s) {
2867
+ return f(), i("svg", Pi, [...t[0] ||= [a("path", {
2579
2868
  "stroke-linecap": "round",
2580
2869
  "stroke-linejoin": "round",
2581
2870
  d: "M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
2582
2871
  }, null, -1)]]);
2583
2872
  }
2584
- var wi = /*#__PURE__*/ A(xi, [["render", Ci]]), Ti = {}, Ei = {
2873
+ var Ii = /*#__PURE__*/ N(Ni, [["render", Fi]]), Li = {}, Ri = {
2585
2874
  class: "bb:h-5 bb:w-5",
2586
2875
  xmlns: "http://www.w3.org/2000/svg",
2587
2876
  viewBox: "0 0 20 20",
2588
2877
  fill: "currentColor",
2589
2878
  "aria-hidden": "true"
2590
2879
  };
2591
- function Di(e, t, n, r, o, s) {
2592
- return f(), i("svg", Ei, [...t[0] ||= [a("path", {
2880
+ function zi(e, t, n, r, o, s) {
2881
+ return f(), i("svg", Ri, [...t[0] ||= [a("path", {
2593
2882
  "fill-rule": "evenodd",
2594
2883
  d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
2595
2884
  "clip-rule": "evenodd"
@@ -2597,14 +2886,14 @@ function Di(e, t, n, r, o, s) {
2597
2886
  }
2598
2887
  //#endregion
2599
2888
  //#region src/components/NotificationMessage.vue
2600
- var Oi = {
2889
+ var Bi = {
2601
2890
  components: {
2602
- Check: wi,
2603
- Close: /* @__PURE__ */ A(Ti, [["render", Di]]),
2604
- Dangerous: qn,
2605
- Warning: Zn
2891
+ Check: Ii,
2892
+ Close: /* @__PURE__ */ N(Li, [["render", zi]]),
2893
+ Dangerous: ir,
2894
+ Warning: cr
2606
2895
  },
2607
- mixins: [N],
2896
+ mixins: [I],
2608
2897
  emits: ["update:modelValue"],
2609
2898
  props: {
2610
2899
  modelValue: {
@@ -2642,8 +2931,8 @@ var Oi = {
2642
2931
  return this.type === "confirmation";
2643
2932
  }
2644
2933
  }
2645
- }, ki = ["role"], Ai = { class: "bb:p-4" }, ji = { class: "bb:flex bb:items-start" }, Mi = { class: "bb:shrink-0" }, Ni = { class: "bb:ml-3 bb:w-0 bb:flex-1 bb:pt-0.5" }, Pi = { class: "bb:text-sm bb:font-medium bb:text-gray-900" }, Fi = { class: "bb:mt-1 bb:text-sm bb:text-gray-500" }, Ii = { class: "bb:ml-4 bb:shrink-0 bb:flex" }, Li = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2646
- function Ri(e, t, o, c, l, d) {
2934
+ }, Vi = ["role"], Hi = { class: "bb:p-4" }, Ui = { class: "bb:flex bb:items-start" }, Wi = { class: "bb:shrink-0" }, Gi = { class: "bb:ml-3 bb:w-0 bb:flex-1 bb:pt-0.5" }, Ki = { class: "bb:text-sm bb:font-medium bb:text-gray-900" }, qi = { class: "bb:mt-1 bb:text-sm bb:text-gray-500" }, Ji = { class: "bb:ml-4 bb:shrink-0 bb:flex" }, Yi = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2935
+ function Xi(e, t, o, c, l, d) {
2647
2936
  let p = h("warning"), m = h("dangerous"), g = h("check"), v = h("close");
2648
2937
  return f(), i("div", {
2649
2938
  class: "bb-dashboard-ui bb:fixed bb:inset-0 bb:flex bb:items-start bb:justify-end bb:p-6 bb:pointer-events-none",
@@ -2655,25 +2944,25 @@ function Ri(e, t, o, c, l, d) {
2655
2944
  "bb:bg-yellow-50": d.isWarning,
2656
2945
  "bb:bg-gray-50": d.isConfirmation
2657
2946
  }])
2658
- }, [a("div", Ai, [a("div", ji, [
2659
- a("div", Mi, [
2947
+ }, [a("div", Hi, [a("div", Ui, [
2948
+ a("div", Wi, [
2660
2949
  d.isWarning ? (f(), n(p, { key: 0 })) : r("", !0),
2661
2950
  d.isDangerous ? (f(), n(m, { key: 1 })) : r("", !0),
2662
2951
  d.isConfirmation ? (f(), n(g, { key: 2 })) : r("", !0)
2663
2952
  ]),
2664
- a("div", Ni, [a("p", Pi, _(o.notificationHeading), 1), a("p", Fi, _(d.text), 1)]),
2665
- a("div", Ii, [a("button", {
2953
+ a("div", Gi, [a("p", Ki, _(o.notificationHeading), 1), a("p", qi, _(d.text), 1)]),
2954
+ a("div", Ji, [a("button", {
2666
2955
  type: "button",
2667
- class: u(["bb:rounded-md bb:inline-flex bb:text-gray-400 bb:hover:text-gray-500 bb:focus:outline-hidden bb:focus:ring-2 bb:focus:ring-offset-2 bb:focus:ring-indigo-500", {
2956
+ class: u(["bb:rounded-md bb:inline-flex bb:text-gray-400 bb:hover:text-gray-500 bb:focus:focus-ring", {
2668
2957
  "bb:bg-red-50": d.isDangerous,
2669
2958
  "bb:bg-yellow-50": d.isWarning,
2670
2959
  "bb:bg-gray-50": d.isConfirmation
2671
2960
  }]),
2672
- onClick: t[0] ||= S((t) => e.$emit("update:modelValue", ""), ["prevent"])
2673
- }, [a("span", Li, _(e.texts.close), 1), s(v, { class: "bb:pointer-events-none bb:cursor-default" })], 2)])
2674
- ])])], 2)) : r("", !0)], 8, ki);
2961
+ onClick: t[0] ||= C((t) => e.$emit("update:modelValue", ""), ["prevent"])
2962
+ }, [a("span", Yi, _(e.texts.close), 1), s(v, { class: "bb:pointer-events-none bb:cursor-default" })], 2)])
2963
+ ])])], 2)) : r("", !0)], 8, Vi);
2675
2964
  }
2676
- var zi = /*#__PURE__*/ A(Oi, [["render", Ri]]), Bi = {}, Vi = {
2965
+ var Zi = /*#__PURE__*/ N(Bi, [["render", Xi]]), Qi = {}, $i = {
2677
2966
  class: "bb:h-5 bb:w-5",
2678
2967
  xmlns: "http://www.w3.org/2000/svg",
2679
2968
  fill: "none",
@@ -2682,8 +2971,8 @@ var zi = /*#__PURE__*/ A(Oi, [["render", Ri]]), Bi = {}, Vi = {
2682
2971
  "stroke-width": "2",
2683
2972
  "aria-hidden": "true"
2684
2973
  };
2685
- function Hi(e, t, n, r, o, s) {
2686
- return f(), i("svg", Vi, [...t[0] ||= [a("path", {
2974
+ function ea(e, t, n, r, o, s) {
2975
+ return f(), i("svg", $i, [...t[0] ||= [a("path", {
2687
2976
  "stroke-linecap": "round",
2688
2977
  "stroke-linejoin": "round",
2689
2978
  d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
@@ -2693,12 +2982,12 @@ function Hi(e, t, n, r, o, s) {
2693
2982
  d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
2694
2983
  }, null, -1)]]);
2695
2984
  }
2696
- var Ui = /*#__PURE__*/ A(Bi, [["render", Hi]]), Q = 0, $ = null, Wi = {
2985
+ var ta = /*#__PURE__*/ N(Qi, [["render", ea]]), Q = 0, $ = null, na = {
2697
2986
  components: {
2698
- PopoverPanel: H,
2699
- Eye: Ui
2987
+ PopoverPanel: K,
2988
+ Eye: ta
2700
2989
  },
2701
- mixins: [N],
2990
+ mixins: [I],
2702
2991
  emits: ["update:modelValue"],
2703
2992
  props: {
2704
2993
  text: {
@@ -2741,8 +3030,8 @@ var Ui = /*#__PURE__*/ A(Bi, [["render", Hi]]), Q = 0, $ = null, Wi = {
2741
3030
  this.holdsPageSelectionLock && (this.holdsPageSelectionLock = !1, --Q, Q === 0 && (Object.assign(document.documentElement.style, $), $ = null));
2742
3031
  }
2743
3032
  }
2744
- }, Gi = ["id", "popovertarget"], Ki = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
2745
- function qi(e, t, r, i, c, l) {
3033
+ }, ra = ["id", "popovertarget"], ia = { class: "bb:sr-only bb:pointer-events-none bb:cursor-default" };
3034
+ function aa(e, t, r, i, c, l) {
2746
3035
  let u = h("eye"), d = h("popover-panel");
2747
3036
  return f(), n(d, {
2748
3037
  class: "bb-dashboard-ui bb:inline-flex",
@@ -2753,7 +3042,7 @@ function qi(e, t, r, i, c, l) {
2753
3042
  "panel-role": "region",
2754
3043
  "panel-label": e.texts.fullText,
2755
3044
  "panel-focusable": "",
2756
- "panel-class": "bb:p-3 bb:rounded-md bb:border bb:border-gray-200 bb:bg-white bb:shadow-lg bb:text-left bb:text-sm bb:leading-5 bb:text-gray-700 bb:whitespace-normal bb:break-words bb:overscroll-contain bb:select-text bb:focus:outline-hidden bb:focus-visible:ring-2 bb:focus-visible:ring-indigo-500",
3045
+ "panel-class": "bb:p-3 bb:rounded-md bb:border bb:border-gray-200 bb:bg-white bb:shadow-lg bb:text-left bb:text-sm bb:leading-5 bb:text-gray-700 bb:whitespace-normal bb:break-words bb:overscroll-contain bb:select-text bb:focus-visible:focus-ring",
2757
3046
  "onUpdate:modelValue": t[0] ||= (t) => e.$emit("update:modelValue", t),
2758
3047
  onToggle: l.onPanelToggle
2759
3048
  }, {
@@ -2761,8 +3050,8 @@ function qi(e, t, r, i, c, l) {
2761
3050
  type: "button",
2762
3051
  id: t.id,
2763
3052
  popovertarget: t.popovertarget,
2764
- class: "bb:relative bb:text-gray-400 bb:hover:text-gray-600 bb:rounded-md bb:focus:outline-hidden bb:focus-visible:ring-2 bb:focus-visible:ring-indigo-500"
2765
- }, [a("span", Ki, _(e.texts.showText), 1), s(u, { class: "bb:pointer-events-none bb:cursor-default" })], 8, Gi)]),
3053
+ class: "bb:relative bb:inline-flex bb:items-center bb:justify-center bb:self-center bb:text-gray-400 bb:hover:text-gray-600 bb:rounded-md bb:focus-visible:focus-ring"
3054
+ }, [a("span", ia, _(e.texts.showText), 1), s(u, { class: "bb:pointer-events-none bb:cursor-default" })], 8, ra)]),
2766
3055
  default: b(() => [o(_(l.normalizedText), 1)]),
2767
3056
  _: 1
2768
3057
  }, 8, [
@@ -2772,6 +3061,6 @@ function qi(e, t, r, i, c, l) {
2772
3061
  "onToggle"
2773
3062
  ]);
2774
3063
  }
2775
- var Ji = /*#__PURE__*/ A(Wi, [["render", qi]]);
3064
+ var oa = /*#__PURE__*/ N(na, [["render", aa]]);
2776
3065
  //#endregion
2777
- export { In as ActionPill, sr as ConfirmationModal, si as DataTable, j as Dot, wr as DropdownButtonWithAction, fn as ErrorMessages, vn as FormInput, kr as HamburgerMenu, q as InfoPill, di as NavigationMenuElement, zi as NotificationMessage, bi as PageCard, gi as PageTabs, Qe as RussianMobileFilter, at as Search, Lt as SelectDateInterval, tn as SelectSingle, Ji as TextPopover, be as dashboardUi, we as downloadFile };
3066
+ export { Kn as ActionPill, vr as ConfirmationModal, yi as DataTable, P as Dot, Ir as DropdownButtonWithAction, xn as ErrorMessages, On as FormInput, Vr as HamburgerMenu, mn as InfoPill, Ci as NavigationMenuElement, Zi as NotificationMessage, Mi as PageCard, Oi as PageTabs, Xe as RussianMobileFilter, rt as Search, Ft as SelectDateInterval, rn as SelectMultiple, un as SelectSingle, oa as TextPopover, _e as dashboardUi, xe as downloadFile };