@boobooking/dashboard-ui-components 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,16 +15,18 @@ import '@boobooking/dashboard-ui-components/style.css'
15
15
 
16
16
  ## Требования
17
17
 
18
- Vue не ниже 3.2, ESM, сборщик, умеющий импорт CSS из пакета.
18
+ Vue не ниже 3.5, ESM, сборщик, умеющий импорт CSS из пакета. Версия 3.5 нужна
19
+ ради `useId()`: им компоненты связывают свои `id` с `aria-`атрибутами, и две
20
+ копии компонента на одной странице не делят один `id`.
19
21
 
20
22
  Tailwind, `@tailwindcss/forms`, Inertia и какие-либо токены в CSS приложения
21
23
  пакету не нужны.
22
24
 
23
25
  ## Компоненты
24
26
 
25
- Пакет экспортирует одиннадцать компонентов: `Popup`, `Dot`, `PickDay`,
27
+ Пакет экспортирует двенадцать компонентов: `Popup`, `Dot`, `PickDay`,
26
28
  `RussianMobileFilter`, `Search`, `SelectDateInterval`, `SelectSingle`,
27
- `SmallBadge`, `ErrorMessages`, `Closer`, `DownloadLink`. В
29
+ `SmallBadge`, `ErrorMessages`, `Closer`, `DownloadLink`, `ConfirmationModal`. В
28
30
  архив пакета (`files: ["dist"]`) исходники не попадают, поэтому контракт
29
31
  каждого компонента — здесь и в playground, а не в исходном коде.
30
32
 
@@ -215,6 +217,34 @@ Tailwind, `@tailwindcss/forms`, Inertia и какие-либо токены в C
215
217
 
216
218
  Событий нет.
217
219
 
220
+ ### ConfirmationModal
221
+
222
+ Модалка подтверждения действия: заголовок, текст, кнопка действия и кнопка
223
+ отмены.
224
+
225
+ <confirmation-modal
226
+ :is-open="showDelete"
227
+ type="dangerous"
228
+ confirmation-heading="Удаление администратора"
229
+ confirmation-text="Это действие необратимо."
230
+ action-button-text="Удалить"
231
+ @action-canceled="showDelete = false"
232
+ @action-confirmed="deleteUser"
233
+ />
234
+
235
+ | Проп | Тип | По умолчанию | Описание |
236
+ | --- | --- | --- | --- |
237
+ | `isOpen` | `Boolean` | `false` | Открыта ли модалка |
238
+ | `type` | `String` | `"warning"` | `"warning"` (жёлтая) или `"dangerous"` (красная) |
239
+ | `confirmationHeading` | `String` | `""` | Заголовок |
240
+ | `confirmationText` | `String` | `""` | Текст под заголовком |
241
+ | `cancelButtonText` | `String` | `"Отмена"` | Подпись кнопки отмены |
242
+ | `actionButtonText` | `String` | обязателен | Подпись кнопки действия |
243
+
244
+ События: `actionConfirmed` — по кнопке действия, `actionCanceled` — по кнопке
245
+ отмены. Ни одна из кнопок модалку не закрывает — см. раздел «Почему у
246
+ ConfirmationModal нет v-model».
247
+
218
248
  ## Правила API пакета
219
249
 
220
250
  Компонент, добавляемый в пакет, следует тем же правилам, что и уже
@@ -254,11 +284,22 @@ Tailwind, `@tailwindcss/forms`, Inertia и какие-либо токены в C
254
284
  Отсутствие `changed` у `Popup` и `Dot` — сознательное решение, а не
255
285
  пропуск.
256
286
 
287
+ ## Почему у ConfirmationModal нет v-model
288
+
289
+ Правило пакета — значение через `v-model` — относится к состоянию, которое
290
+ компонент меняет сам: `Popup` закрывается по клику вне, `SelectSingle` меняет
291
+ выбор. `ConfirmationModal` свою видимость не меняет никогда. Обе кнопки только
292
+ сообщают родителю решение пользователя, а закрыть модалку, оставить её открытой
293
+ на время запроса или открыть следующую — решает родитель.
294
+
295
+ `v-model` обещал бы двустороннюю связь, которой нет, поэтому видимость
296
+ передаётся пропом `isOpen`.
297
+
257
298
  ## Playground
258
299
 
259
300
  npm run playground
260
301
 
261
- Поднимает демо-страницы со всеми одиннадцатью компонентами в двух окружениях:
302
+ Поднимает демо-страницы со всеми двенадцатью компонентами в двух окружениях:
262
303
  голом (без Tailwind и стилей приложения) и в окружении приложения (с
263
304
  Tailwind, `@tailwindcss/forms` и типографикой, как у потребителя). Это
264
305
  основной способ посмотреть, как компоненты выглядят и ведут себя, а не
@@ -288,3 +329,7 @@ Tailwind, `@tailwindcss/forms` и типографикой, как у потре
288
329
  У `Closer` нет доступного имени, и он выключен из порядка табуляции
289
330
  (`tabindex="-1"`): скринридер его не назовёт, а с клавиатуры до него не
290
331
  добраться.
332
+
333
+ `ConfirmationModal` не переносит фокус внутрь при открытии, не удерживает его
334
+ внутри, не возвращает на прежнее место после закрытия и не закрывается по
335
+ Escape.
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
- import { Fragment as e, Transition as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createVNode as o, mergeProps as s, normalizeClass as c, openBlock as l, renderList as u, renderSlot as d, resolveComponent as f, toDisplayString as p, vModelText as m, vShow as h, withCtx as g, withDirectives as _, withKeys as v, withModifiers as y } from "vue";
1
+ import { Fragment as e, Transition as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createVNode as o, mergeProps as s, normalizeClass as c, openBlock as l, renderList as u, renderSlot as d, resolveComponent as f, toDisplayString as p, useId as m, vModelText as h, vShow as g, withCtx as _, withDirectives as v, withKeys as y, withModifiers as b } from "vue";
2
2
  import ee from "pikaday";
3
- import b from "imask";
3
+ import x from "imask";
4
4
  //#region \0plugin-vue:export-helper
5
- var x = (e, t) => {
5
+ var S = (e, t) => {
6
6
  let n = e.__vccOpts || e;
7
7
  for (let [e, r] of t) n[e] = r;
8
8
  return n;
9
- }, S = {
9
+ }, C = {
10
10
  props: {
11
11
  isOpen: {
12
12
  type: Boolean,
@@ -33,21 +33,21 @@ var x = (e, t) => {
33
33
  document.removeEventListener("keydown", this.handleEscape);
34
34
  }
35
35
  };
36
- function C(e, t, n, r, a, o) {
37
- return _((l(), i("button", {
36
+ function w(e, t, n, r, a, o) {
37
+ return v((l(), i("button", {
38
38
  tabindex: "-1",
39
- onClick: t[0] ||= y((...e) => o.closeOverlay && o.closeOverlay(...e), ["prevent"]),
39
+ onClick: t[0] ||= b((...e) => o.closeOverlay && o.closeOverlay(...e), ["prevent"]),
40
40
  class: c(["fixed inset-0 w-full h-full cursor-default flex items-start", {
41
41
  "z-20": n.isOpen,
42
42
  "bg-transparent": n.isTransparent,
43
43
  "bg-gray-900 opacity-75": !n.isTransparent
44
44
  }])
45
- }, null, 2)), [[h, n.isOpen]]);
45
+ }, null, 2)), [[g, n.isOpen]]);
46
46
  }
47
47
  //#endregion
48
48
  //#region src/components/Popup.vue
49
- var w = {
50
- components: { Overlay: /* @__PURE__ */ x(S, [["render", C]]) },
49
+ var T = {
50
+ components: { Overlay: /* @__PURE__ */ S(C, [["render", w]]) },
51
51
  inheritAttrs: !1,
52
52
  emits: ["update:modelValue"],
53
53
  props: {
@@ -80,10 +80,10 @@ var w = {
80
80
  return this.align === "right";
81
81
  }
82
82
  }
83
- }, T = { class: "bb-dashboard-ui relative" };
84
- function E(e, n, r, c, u, p) {
83
+ }, E = { class: "bb-dashboard-ui relative" };
84
+ function D(e, n, r, c, u, p) {
85
85
  let m = f("overlay");
86
- return l(), i("div", T, [o(m, {
86
+ return l(), i("div", E, [o(m, {
87
87
  "is-open": u.overlayIsOpen,
88
88
  "onUpdate:isOpen": n[0] ||= (e) => u.overlayIsOpen = e
89
89
  }, null, 8, ["is-open"]), o(t, {
@@ -94,14 +94,14 @@ function E(e, n, r, c, u, p) {
94
94
  "leave-from-class": "opacity-100 scale-100",
95
95
  "leave-to-class": "opacity-0 scale-95"
96
96
  }, {
97
- default: g(() => [_(a("div", s(e.$attrs, { class: ["absolute z-20", {
97
+ default: _(() => [v(a("div", s(e.$attrs, { class: ["absolute z-20", {
98
98
  "left-0": p.alignLeft,
99
99
  "right-0": p.alignRight
100
- }] }), [d(e.$slots, "default")], 16), [[h, r.modelValue]])]),
100
+ }] }), [d(e.$slots, "default")], 16), [[g, r.modelValue]])]),
101
101
  _: 3
102
102
  })]);
103
103
  }
104
- var D = /*#__PURE__*/ x(w, [["render", E]]), O = {
104
+ var O = /*#__PURE__*/ S(T, [["render", D]]), te = {
105
105
  props: {
106
106
  withPulse: {
107
107
  type: Boolean,
@@ -122,7 +122,7 @@ var D = /*#__PURE__*/ x(w, [["render", E]]), O = {
122
122
  }
123
123
  }
124
124
  };
125
- function te(e, t, n, r, o, s) {
125
+ function ne(e, t, n, r, o, s) {
126
126
  return l(), i("div", { class: c(["bb-dashboard-ui flex h-full items-center leading-none text-4xl", {
127
127
  "text-red-500": s.isRed,
128
128
  "text-green-500": s.isGreen,
@@ -136,7 +136,7 @@ function te(e, t, n, r, o, s) {
136
136
  r: "45"
137
137
  })], -1)]], 2);
138
138
  }
139
- var k = /*#__PURE__*/ x(O, [["render", te]]), A = {}, j = {
139
+ var k = /*#__PURE__*/ S(te, [["render", ne]]), A = {}, j = {
140
140
  type: "button",
141
141
  tabindex: "-1",
142
142
  class: "absolute right-0 top-0 flex items-center justify-center bg-transparent cursor-pointer text-gray-300 hover:text-gray-400 focus:outline-hidden"
@@ -153,7 +153,7 @@ function M(e, t, n, r, o, s) {
153
153
  d: "M6 18L18 6M6 6l12 12"
154
154
  })], -1)]]);
155
155
  }
156
- var N = /*#__PURE__*/ x(A, [["render", M]]);
156
+ var N = /*#__PURE__*/ S(A, [["render", M]]);
157
157
  //#endregion
158
158
  //#region src/date.js
159
159
  function P(e) {
@@ -169,7 +169,7 @@ function F(e) {
169
169
  //#region src/components/PickDay.vue
170
170
  var I = {
171
171
  components: {
172
- Popup: D,
172
+ Popup: O,
173
173
  Eraser: N
174
174
  },
175
175
  emits: ["update:modelValue", "changed"],
@@ -303,11 +303,11 @@ function H(e, t, s, u, d, p) {
303
303
  modelValue: d.popupIsOpen,
304
304
  "onUpdate:modelValue": t[1] ||= (e) => d.popupIsOpen = e
305
305
  }, {
306
- default: g(() => [a("div", V, null, 512)]),
306
+ default: _(() => [a("div", V, null, 512)]),
307
307
  _: 1
308
308
  }, 8, ["modelValue"])]);
309
309
  }
310
- var U = /*#__PURE__*/ x(I, [["render", H]]), W = {
310
+ var U = /*#__PURE__*/ S(I, [["render", H]]), W = {
311
311
  components: { Dot: k },
312
312
  props: {
313
313
  text: {
@@ -331,18 +331,18 @@ function q(e, t, n, r, s, c) {
331
331
  class: "flex flex-1 h-full items-center text-xs text-gray-500 whitespace-nowrap truncate leading-tight select-none",
332
332
  textContent: p(n.text)
333
333
  }, null, 8, K),
334
- _(o(u, {
334
+ v(o(u, {
335
335
  color: "red",
336
336
  "with-pulse": !0,
337
337
  class: "ml-3"
338
- }, null, 512), [[h, n.isLoading]]),
339
- _(o(u, {
338
+ }, null, 512), [[g, n.isLoading]]),
339
+ v(o(u, {
340
340
  color: "red",
341
341
  class: "ml-3"
342
- }, null, 512), [[h, n.isRequired]])
342
+ }, null, 512), [[g, n.isRequired]])
343
343
  ]);
344
344
  }
345
- var J = /*#__PURE__*/ x(W, [["render", q]]), Y = 10;
345
+ var J = /*#__PURE__*/ S(W, [["render", q]]), Y = 10;
346
346
  function X(e) {
347
347
  let t = e.replace(/\D/g, "");
348
348
  return (t.startsWith("7") || t.startsWith("8")) && t[1] === "9" && (t = t.slice(1)), t.slice(0, Y);
@@ -356,7 +356,7 @@ function Q(e) {
356
356
  }
357
357
  //#endregion
358
358
  //#region src/components/RussianMobileFilter.vue
359
- var ne = 400, re = 3, ie = {
359
+ var re = 400, ie = 3, ae = {
360
360
  components: {
361
361
  ElementHeader: J,
362
362
  Eraser: N
@@ -387,7 +387,7 @@ var ne = 400, re = 3, ie = {
387
387
  this.mask = null, this.debounceTimer = null, this.isWritingProgrammatically = !1, this.lastCommitted = Q(this.modelValue);
388
388
  },
389
389
  mounted() {
390
- this.mask = b(this.$refs.input, {
390
+ this.mask = x(this.$refs.input, {
391
391
  mask: "+7 (000) 000 00 00",
392
392
  lazy: !0,
393
393
  prepare: (e, t) => t.unmaskedValue === "" && (e === "7" || e === "8") ? "" : e
@@ -439,16 +439,16 @@ var ne = 400, re = 3, ie = {
439
439
  this.commit();
440
440
  return;
441
441
  }
442
- this.digits.length < re || (this.debounceTimer = setTimeout(() => this.commit(), ne));
442
+ this.digits.length < ie || (this.debounceTimer = setTimeout(() => this.commit(), re));
443
443
  },
444
444
  commit() {
445
445
  clearTimeout(this.debounceTimer), this.digits !== this.lastCommitted && (this.lastCommitted = this.digits, this.$emit("changed"));
446
446
  }
447
447
  }
448
- }, ae = { class: "bb-dashboard-ui flex flex-none" }, oe = { class: "flex w-full flex-col border border-white bg-white" }, se = { class: "relative flex h-full w-full" }, ce = { class: "flex w-full h-full items-center justify-center" };
449
- function le(e, t, n, r, s, c) {
448
+ }, oe = { class: "bb-dashboard-ui flex flex-none" }, se = { class: "flex w-full flex-col border border-white bg-white" }, ce = { class: "relative flex h-full w-full" }, le = { class: "flex w-full h-full items-center justify-center" };
449
+ function ue(e, t, n, r, s, c) {
450
450
  let u = f("element-header"), d = f("eraser");
451
- return l(), i("div", ae, [a("div", oe, [o(u, {
451
+ return l(), i("div", oe, [a("div", se, [o(u, {
452
452
  text: n.header,
453
453
  "is-required": n.isRequired,
454
454
  "is-loading": n.isLoading
@@ -456,7 +456,7 @@ function le(e, t, n, r, s, c) {
456
456
  "text",
457
457
  "is-required",
458
458
  "is-loading"
459
- ]), a("div", se, [a("label", ce, [a("input", {
459
+ ]), a("div", ce, [a("label", le, [a("input", {
460
460
  ref: "input",
461
461
  type: "tel",
462
462
  inputmode: "tel",
@@ -464,15 +464,15 @@ function le(e, t, n, r, s, c) {
464
464
  class: "flex w-phone h-full px-3 py-2 cursor-pointer truncate focus:outline-hidden border-none",
465
465
  onFocus: t[0] ||= (...e) => c.onFocus && c.onFocus(...e),
466
466
  onBlur: t[1] ||= (...e) => c.onBlur && c.onBlur(...e),
467
- onKeydown: t[2] ||= v((...e) => c.commit && c.commit(...e), ["enter"]),
468
- onPaste: t[3] ||= y((...e) => c.onPaste && c.onPaste(...e), ["prevent"])
469
- }, null, 544), _(o(d, {
470
- onMousedown: t[4] ||= y(() => {}, ["prevent"]),
467
+ onKeydown: t[2] ||= y((...e) => c.commit && c.commit(...e), ["enter"]),
468
+ onPaste: t[3] ||= b((...e) => c.onPaste && c.onPaste(...e), ["prevent"])
469
+ }, null, 544), v(o(d, {
470
+ onMousedown: t[4] ||= b(() => {}, ["prevent"]),
471
471
  onClick: c.clear,
472
472
  class: "pr-2 h-full"
473
- }, null, 8, ["onClick"]), [[h, s.digits.length > 0]])])])])]);
473
+ }, null, 8, ["onClick"]), [[g, s.digits.length > 0]])])])])]);
474
474
  }
475
- var ue = /*#__PURE__*/ x(ie, [["render", le]]), de = {
475
+ var de = /*#__PURE__*/ S(ae, [["render", ue]]), fe = {
476
476
  components: {
477
477
  ElementHeader: J,
478
478
  Eraser: N
@@ -511,10 +511,10 @@ var ue = /*#__PURE__*/ x(ie, [["render", le]]), de = {
511
511
  this.$emit("update:modelValue", this.search), this.$emit("changed");
512
512
  }
513
513
  }
514
- }, fe = { class: "bb-dashboard-ui flex flex-none" }, pe = { class: "flex w-full flex-col border border-white bg-white" }, me = { class: "relative flex h-full w-full" }, he = { class: "flex w-full h-full items-center justify-center" };
515
- function ge(e, t, n, r, s, c) {
514
+ }, pe = { class: "bb-dashboard-ui flex flex-none" }, me = { class: "flex w-full flex-col border border-white bg-white" }, he = { class: "relative flex h-full w-full" }, ge = { class: "flex w-full h-full items-center justify-center" };
515
+ function _e(e, t, n, r, s, c) {
516
516
  let u = f("element-header"), d = f("eraser");
517
- return l(), i("div", fe, [a("div", pe, [o(u, {
517
+ return l(), i("div", pe, [a("div", me, [o(u, {
518
518
  text: n.header,
519
519
  "is-required": n.isRequired,
520
520
  "is-loading": n.isLoading
@@ -522,21 +522,21 @@ function ge(e, t, n, r, s, c) {
522
522
  "text",
523
523
  "is-required",
524
524
  "is-loading"
525
- ]), a("div", me, [a("label", he, [_(a("input", {
525
+ ]), a("div", he, [a("label", ge, [v(a("input", {
526
526
  class: "flex w-full h-full px-3 py-2 cursor-pointer truncate focus:outline-hidden border-none",
527
527
  "onUpdate:modelValue": t[0] ||= (e) => s.search = e,
528
528
  onInput: t[1] ||= (...e) => c.startSearch && c.startSearch(...e)
529
529
  }, null, 544), [[
530
- m,
530
+ h,
531
531
  s.search,
532
532
  void 0,
533
533
  { trim: !0 }
534
- ]]), _(o(d, {
534
+ ]]), v(o(d, {
535
535
  onClick: c.clearInput,
536
536
  class: "pr-2 h-full"
537
- }, null, 8, ["onClick"]), [[h, c.inputNeedsEraser]])])])])]);
537
+ }, null, 8, ["onClick"]), [[g, c.inputNeedsEraser]])])])])]);
538
538
  }
539
- var _e = /*#__PURE__*/ x(de, [["render", ge]]), ve = {
539
+ var ve = /*#__PURE__*/ S(fe, [["render", _e]]), ye = {
540
540
  components: {
541
541
  ElementHeader: J,
542
542
  PickDay: U
@@ -588,10 +588,10 @@ var _e = /*#__PURE__*/ x(de, [["render", ge]]), ve = {
588
588
  this.$emit("update:dateTo", e), this.dateTo !== e && this.$emit("changed");
589
589
  }
590
590
  }
591
- }, ye = { class: "bb-dashboard-ui flex" }, be = { class: "flex border border-white" }, xe = { class: "flex flex-col min-w-72 w-72 bg-white h-full" }, Se = { class: "flex h-full divide-x divide-gray-200" };
592
- function Ce(e, t, n, r, s, c) {
591
+ }, be = { class: "bb-dashboard-ui flex" }, xe = { class: "flex border border-white" }, Se = { class: "flex flex-col min-w-72 w-72 bg-white h-full" }, Ce = { class: "flex h-full divide-x divide-gray-200" };
592
+ function we(e, t, n, r, s, c) {
593
593
  let u = f("element-header"), d = f("pick-day");
594
- return l(), i("div", ye, [a("div", be, [a("div", xe, [o(u, {
594
+ return l(), i("div", be, [a("div", xe, [a("div", Se, [o(u, {
595
595
  text: n.header,
596
596
  "is-required": n.isRequired,
597
597
  "is-loading": n.isLoading
@@ -599,7 +599,7 @@ function Ce(e, t, n, r, s, c) {
599
599
  "text",
600
600
  "is-required",
601
601
  "is-loading"
602
- ]), a("div", Se, [o(d, {
602
+ ]), a("div", Ce, [o(d, {
603
603
  modelValue: s.userDateFrom,
604
604
  "onUpdate:modelValue": t[0] ||= (e) => s.userDateFrom = e,
605
605
  class: "flex-1 min-w-36 pl-3",
@@ -611,9 +611,9 @@ function Ce(e, t, n, r, s, c) {
611
611
  "placeholder-text": "до"
612
612
  }, null, 8, ["modelValue"])])])])]);
613
613
  }
614
- var we = /*#__PURE__*/ x(ve, [["render", Ce]]), Te = {
614
+ var Te = /*#__PURE__*/ S(ye, [["render", we]]), Ee = {
615
615
  components: {
616
- Popup: D,
616
+ Popup: O,
617
617
  Eraser: N
618
618
  },
619
619
  emits: ["update:isOpen", "erased"],
@@ -645,17 +645,17 @@ var we = /*#__PURE__*/ x(ve, [["render", Ce]]), Te = {
645
645
  computed: { needsEraser() {
646
646
  return !this.isOpen && this.hasValue;
647
647
  } }
648
- }, Ee = { class: "flex flex-col grow bg-white" }, De = { class: "relative flex w-full h-full" }, Oe = ["textContent"];
649
- function ke(e, t, s, u, m, h) {
650
- let _ = f("eraser"), v = f("popup");
651
- return l(), i("div", Ee, [a("div", De, [a("button", {
648
+ }, De = { class: "flex flex-col grow bg-white" }, Oe = { class: "relative flex w-full h-full" }, ke = ["textContent"];
649
+ function Ae(e, t, s, u, m, h) {
650
+ let g = f("eraser"), v = f("popup");
651
+ return l(), i("div", De, [a("div", Oe, [a("button", {
652
652
  type: "button",
653
653
  class: c(["flex w-full h-full items-center focus:outline-hidden cursor-pointer", { "z-20": s.isOpen }]),
654
- onClick: t[0] ||= y((t) => e.$emit("update:isOpen", !s.isOpen), ["prevent"])
654
+ onClick: t[0] ||= b((t) => e.$emit("update:isOpen", !s.isOpen), ["prevent"])
655
655
  }, [a("span", {
656
656
  class: "flex w-full h-full pl-3 pr-12 py-2 items-center whitespace-nowrap leading-none",
657
657
  textContent: p(s.title)
658
- }, null, 8, Oe)], 2), h.needsEraser ? (l(), n(_, {
658
+ }, null, 8, ke)], 2), h.needsEraser ? (l(), n(g, {
659
659
  key: 0,
660
660
  onClick: t[1] ||= (t) => e.$emit("erased"),
661
661
  class: "pr-2 h-full"
@@ -663,11 +663,11 @@ function ke(e, t, s, u, m, h) {
663
663
  modelValue: m.popupIsOpen,
664
664
  "onUpdate:modelValue": t[2] ||= (e) => m.popupIsOpen = e
665
665
  }, {
666
- default: g(() => [d(e.$slots, "default")]),
666
+ default: _(() => [d(e.$slots, "default")]),
667
667
  _: 3
668
668
  }, 8, ["modelValue"])]);
669
669
  }
670
- var Ae = /*#__PURE__*/ x(Te, [["render", ke]]), je = {
670
+ var je = /*#__PURE__*/ S(Ee, [["render", Ae]]), Me = {
671
671
  props: {
672
672
  isChecked: {
673
673
  type: Boolean,
@@ -679,31 +679,31 @@ var Ae = /*#__PURE__*/ x(Te, [["render", ke]]), je = {
679
679
  methods: { toggle() {
680
680
  this.$emit("clicked");
681
681
  } }
682
- }, Me = { class: "flex w-9 h-9 items-center justify-center" }, Ne = {
682
+ }, Ne = { class: "flex w-9 h-9 items-center justify-center" }, Pe = {
683
683
  class: "w-5 h-5 fill-current text-green-300",
684
684
  viewBox: "0 0 20 20"
685
- }, Pe = ["textContent"];
686
- function Fe(e, t, n, r, o, s) {
685
+ }, Fe = ["textContent"];
686
+ function Ie(e, t, n, r, o, s) {
687
687
  return l(), i("button", {
688
688
  type: "button",
689
- onClick: t[0] ||= y((...e) => s.toggle && s.toggle(...e), ["prevent"]),
689
+ onClick: t[0] ||= b((...e) => s.toggle && s.toggle(...e), ["prevent"]),
690
690
  class: "flex w-full bg-white hover:bg-indigo-100 cursor-pointer focus:outline-hidden focus:ring-3 focus:z-10 focus:ring-blue-500/50"
691
- }, [a("span", Me, [_((l(), i("svg", Ne, [...t[1] ||= [a("path", {
691
+ }, [a("span", Ne, [v((l(), i("svg", Pe, [...t[1] ||= [a("path", {
692
692
  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",
693
693
  "clip-rule": "evenodd",
694
694
  "fill-rule": "evenodd"
695
- }, null, -1)]], 512)), [[h, n.isChecked]])]), a("span", {
695
+ }, null, -1)]], 512)), [[g, n.isChecked]])]), a("span", {
696
696
  class: "flex h-9 justify-center items-center pr-6 whitespace-nowrap select-none",
697
697
  textContent: p(n.name)
698
- }, null, 8, Pe)]);
698
+ }, null, 8, Fe)]);
699
699
  }
700
700
  //#endregion
701
701
  //#region src/components/SelectSingle.vue
702
- var Ie = {
702
+ var Le = {
703
703
  components: {
704
704
  ElementHeader: J,
705
- DropdownButton: Ae,
706
- ListElement: /* @__PURE__ */ x(je, [["render", Fe]])
705
+ DropdownButton: je,
706
+ ListElement: /* @__PURE__ */ S(Me, [["render", Ie]])
707
707
  },
708
708
  emits: ["update:modelValue", "changed"],
709
709
  props: {
@@ -753,10 +753,10 @@ var Ie = {
753
753
  this.$emit("update:modelValue", null), this.$emit("changed");
754
754
  }
755
755
  }
756
- }, Le = { class: "bb-dashboard-ui flex flex-none" }, Re = { class: "flex w-full flex-col border border-white bg-white" }, ze = { class: "flex flex-col py-1 mt-1 bg-white border border-gray-200 rounded-md shadow-lg divide-y divide-gray-200 divide-dashed" };
757
- function Be(t, s, c, d, p, m) {
758
- let h = f("element-header"), _ = f("list-element"), v = f("dropdown-button");
759
- return l(), i("div", Le, [a("div", Re, [o(h, {
756
+ }, Re = { class: "bb-dashboard-ui flex flex-none" }, ze = { class: "flex w-full flex-col border border-white bg-white" }, Be = { class: "flex flex-col py-1 mt-1 bg-white border border-gray-200 rounded-md shadow-lg divide-y divide-gray-200 divide-dashed" };
757
+ function Ve(t, s, c, d, p, m) {
758
+ let h = f("element-header"), g = f("list-element"), v = f("dropdown-button");
759
+ return l(), i("div", Re, [a("div", ze, [o(h, {
760
760
  text: c.header,
761
761
  "is-required": c.isRequired,
762
762
  "is-loading": c.isLoading
@@ -772,7 +772,7 @@ function Be(t, s, c, d, p, m) {
772
772
  "has-value": m.hasValue,
773
773
  onErased: m.clear
774
774
  }, {
775
- default: g(() => [a("div", ze, [(l(!0), i(e, null, u(c.items, (e) => (l(), n(_, {
775
+ default: _(() => [a("div", Be, [(l(!0), i(e, null, u(c.items, (e) => (l(), n(g, {
776
776
  name: e.name,
777
777
  key: e.id,
778
778
  "is-checked": e.id === c.modelValue,
@@ -790,7 +790,7 @@ function Be(t, s, c, d, p, m) {
790
790
  "onErased"
791
791
  ])) : r("", !0)])]);
792
792
  }
793
- var Ve = /*#__PURE__*/ x(Ie, [["render", Be]]), He = {
793
+ var He = /*#__PURE__*/ S(Le, [["render", Ve]]), Ue = {
794
794
  props: {
795
795
  text: {
796
796
  type: String,
@@ -829,8 +829,8 @@ var Ve = /*#__PURE__*/ x(Ie, [["render", Be]]), He = {
829
829
  return this.color === "yellow";
830
830
  }
831
831
  }
832
- }, Ue = ["textContent"];
833
- function We(e, t, n, r, a, o) {
832
+ }, We = ["textContent"];
833
+ function Ge(e, t, n, r, a, o) {
834
834
  return l(), i("span", {
835
835
  class: c(["bb-dashboard-ui inline-flex items-center px-3 py-2 rounded-full text-xs font-medium leading-none select-none whitespace-nowrap", {
836
836
  "bg-green-50 text-gray-700": o.isGreen,
@@ -841,9 +841,9 @@ function We(e, t, n, r, a, o) {
841
841
  "bg-yellow-100 text-yellow-800": o.isYellow
842
842
  }]),
843
843
  textContent: p(n.text)
844
- }, null, 10, Ue);
844
+ }, null, 10, We);
845
845
  }
846
- var Ge = /*#__PURE__*/ x(He, [["render", We]]), Ke = {
846
+ var Ke = /*#__PURE__*/ S(Ue, [["render", Ge]]), qe = {
847
847
  props: {
848
848
  messages: {
849
849
  type: [Object, Array],
@@ -863,12 +863,12 @@ var Ge = /*#__PURE__*/ x(He, [["render", We]]), Ke = {
863
863
  return this.type === "dangerous";
864
864
  }
865
865
  }
866
- }, qe = { class: "flex" }, Je = { class: "shrink-0" }, $ = { class: "ml-3" }, Ye = ["textContent"];
867
- function Xe(t, n, o, s, d, f) {
866
+ }, Je = { class: "flex" }, Ye = { class: "shrink-0" }, Xe = { class: "ml-3" }, Ze = ["textContent"];
867
+ function Qe(t, n, o, s, d, f) {
868
868
  return f.hasErrors ? (l(), i("div", {
869
869
  key: 0,
870
870
  class: c(["bb-dashboard-ui border-l-4 p-4", f.isDangerous ? "bg-red-50 border-red-400" : "bg-yellow-50 border-yellow-400"])
871
- }, [a("div", qe, [a("div", Je, [(l(), i("svg", {
871
+ }, [a("div", Je, [a("div", Ye, [(l(), i("svg", {
872
872
  class: c(["h-5 w-5", f.isDangerous ? "text-red-400" : "text-yellow-400"]),
873
873
  viewBox: "0 0 20 20",
874
874
  fill: "currentColor"
@@ -876,19 +876,19 @@ function Xe(t, n, o, s, d, f) {
876
876
  "fill-rule": "evenodd",
877
877
  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",
878
878
  "clip-rule": "evenodd"
879
- }, null, -1)]], 2))]), a("div", $, [(l(!0), i(e, null, u(o.messages, (e, t) => (l(), i("p", {
879
+ }, null, -1)]], 2))]), a("div", Xe, [(l(!0), i(e, null, u(o.messages, (e, t) => (l(), i("p", {
880
880
  class: c(["text-sm leading-5", f.isDangerous ? "text-red-700" : "text-yellow-700"]),
881
881
  key: t,
882
882
  textContent: p(e)
883
- }, null, 10, Ye))), 128))])])], 2)) : r("", !0);
883
+ }, null, 10, Ze))), 128))])])], 2)) : r("", !0);
884
884
  }
885
- var Ze = /*#__PURE__*/ x(Ke, [["render", Xe]]), Qe = { emits: ["clicked"] };
886
- function $e(e, t, n, r, o, s) {
885
+ var $e = /*#__PURE__*/ S(qe, [["render", Qe]]), et = { emits: ["clicked"] };
886
+ function tt(e, t, n, r, o, s) {
887
887
  return l(), i("button", {
888
888
  type: "button",
889
889
  tabindex: "-1",
890
890
  class: "bb-dashboard-ui flex items-center justify-center bg-transparent cursor-pointer text-gray-400 focus:outline-hidden hover:text-gray-600",
891
- onClick: t[0] ||= y((t) => e.$emit("clicked"), ["prevent"])
891
+ onClick: t[0] ||= b((t) => e.$emit("clicked"), ["prevent"])
892
892
  }, [...t[1] ||= [a("svg", {
893
893
  class: "w-full h-full stroke-current",
894
894
  fill: "none",
@@ -900,15 +900,15 @@ function $e(e, t, n, r, o, s) {
900
900
  d: "M6 18L18 6M6 6l12 12"
901
901
  })], -1)]]);
902
902
  }
903
- var et = /*#__PURE__*/ x(Qe, [["render", $e]]), tt = {}, nt = {
903
+ var nt = /*#__PURE__*/ S(et, [["render", tt]]), rt = {}, it = {
904
904
  class: "w-4 h-4",
905
905
  fill: "none",
906
906
  stroke: "currentColor",
907
907
  viewBox: "0 0 24 24",
908
908
  xmlns: "http://www.w3.org/2000/svg"
909
909
  };
910
- function rt(e, t, n, r, o, s) {
911
- return l(), i("svg", nt, [...t[0] ||= [a("path", {
910
+ function at(e, t, n, r, o, s) {
911
+ return l(), i("svg", it, [...t[0] ||= [a("path", {
912
912
  "stroke-linecap": "round",
913
913
  "stroke-linejoin": "round",
914
914
  "stroke-width": "2",
@@ -917,8 +917,8 @@ function rt(e, t, n, r, o, s) {
917
917
  }
918
918
  //#endregion
919
919
  //#region src/components/DownloadLink.vue
920
- var it = {
921
- components: { "download-icon": /* @__PURE__ */ x(tt, [["render", rt]]) },
920
+ var ot = {
921
+ components: { "download-icon": /* @__PURE__ */ S(rt, [["render", at]]) },
922
922
  props: {
923
923
  url: {
924
924
  type: String,
@@ -929,15 +929,162 @@ var it = {
929
929
  default: "Скачать"
930
930
  }
931
931
  }
932
- }, at = ["href", "title"], ot = { class: "ml-1" };
933
- function st(e, t, n, r, s, c) {
932
+ }, st = ["href", "title"], ct = { class: "ml-1" };
933
+ function lt(e, t, n, r, s, c) {
934
934
  let u = f("download-icon");
935
935
  return l(), i("a", {
936
936
  href: n.url,
937
937
  title: n.title,
938
938
  class: "bb-dashboard-ui inline-flex items-center px-3 py-1.5 rounded-full text-xs font-medium leading-none select-none bg-purple-100 text-purple-800 hover:text-purple-600"
939
- }, [o(u), a("span", ot, p(n.title), 1)], 8, at);
939
+ }, [o(u), a("span", ct, p(n.title), 1)], 8, st);
940
940
  }
941
- var ct = /*#__PURE__*/ x(it, [["render", st]]);
941
+ var ut = /*#__PURE__*/ S(ot, [["render", lt]]), dt = { props: {
942
+ isOpen: {
943
+ type: Boolean,
944
+ default: !1
945
+ },
946
+ headingId: {
947
+ type: String,
948
+ required: !0
949
+ }
950
+ } }, ft = { class: "flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0" }, pt = { class: "fixed inset-0 transition-opacity" }, mt = ["aria-labelledby"];
951
+ function ht(e, n, r, s, u, f) {
952
+ return l(), i("div", { class: c(["bb-dashboard-ui fixed inset-0 overflow-y-auto z-20", { "pointer-events-none": !r.isOpen }]) }, [a("div", ft, [
953
+ o(t, {
954
+ "enter-active-class": "ease-out duration-300",
955
+ "enter-from-class": "opacity-0",
956
+ "enter-to-class": "opacity-100",
957
+ "leave-active-class": "ease-in duration-200",
958
+ "leave-from-class": "opacity-100",
959
+ "leave-to-class": "opacity-0"
960
+ }, {
961
+ default: _(() => [v(a("div", pt, [...n[0] ||= [a("div", { class: "absolute inset-0 bg-gray-500 opacity-75" }, null, -1)]], 512), [[g, r.isOpen]])]),
962
+ _: 1
963
+ }),
964
+ n[1] ||= a("span", { class: "hidden sm:inline-block sm:align-middle sm:h-screen" }, null, -1),
965
+ o(t, {
966
+ "enter-active-class": "ease-out duration-300",
967
+ "enter-from-class": "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
968
+ "enter-to-class": "opacity-100 translate-y-0 sm:scale-100",
969
+ "leave-active-class": "ease-in duration-200",
970
+ "leave-from-class": "opacity-100 translate-y-0 sm:scale-100",
971
+ "leave-to-class": "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
972
+ }, {
973
+ default: _(() => [v(a("div", {
974
+ class: "relative inline-block align-bottom bg-white rounded-lg text-left overflow-visible shadow-xl transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full",
975
+ role: "dialog",
976
+ "aria-modal": "true",
977
+ "aria-labelledby": r.headingId
978
+ }, [d(e.$slots, "default")], 8, mt), [[g, r.isOpen]])]),
979
+ _: 3
980
+ })
981
+ ])], 2);
982
+ }
983
+ var gt = /*#__PURE__*/ S(dt, [["render", ht]]), _t = {}, vt = {
984
+ class: "h-7 w-7 text-red-600",
985
+ xmlns: "http://www.w3.org/2000/svg",
986
+ fill: "none",
987
+ viewBox: "0 0 24 24",
988
+ stroke: "currentColor",
989
+ "aria-hidden": "true"
990
+ };
991
+ function yt(e, t, n, r, o, s) {
992
+ return l(), i("svg", vt, [...t[0] ||= [a("path", {
993
+ "stroke-linecap": "round",
994
+ "stroke-linejoin": "round",
995
+ "stroke-width": "2",
996
+ 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"
997
+ }, null, -1)]]);
998
+ }
999
+ var $ = /*#__PURE__*/ S(_t, [["render", yt]]), bt = {}, xt = {
1000
+ class: "h-7 w-7 text-yellow-400",
1001
+ xmlns: "http://www.w3.org/2000/svg",
1002
+ viewBox: "0 0 20 20",
1003
+ fill: "currentColor",
1004
+ "aria-hidden": "true"
1005
+ };
1006
+ function St(e, t, n, r, o, s) {
1007
+ return l(), i("svg", xt, [...t[0] ||= [a("path", {
1008
+ "fill-rule": "evenodd",
1009
+ 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",
1010
+ "clip-rule": "evenodd"
1011
+ }, null, -1)]]);
1012
+ }
1013
+ //#endregion
1014
+ //#region src/components/ConfirmationModal.vue
1015
+ var Ct = {
1016
+ components: {
1017
+ Modal: gt,
1018
+ Dangerous: $,
1019
+ Warning: /* @__PURE__ */ S(bt, [["render", St]])
1020
+ },
1021
+ emits: ["actionConfirmed", "actionCanceled"],
1022
+ props: {
1023
+ isOpen: {
1024
+ type: Boolean,
1025
+ default: !1
1026
+ },
1027
+ type: {
1028
+ type: String,
1029
+ default: "warning",
1030
+ validator: (e) => ["warning", "dangerous"].indexOf(e) !== -1
1031
+ },
1032
+ confirmationHeading: {
1033
+ type: String,
1034
+ default: ""
1035
+ },
1036
+ confirmationText: {
1037
+ type: String,
1038
+ default: ""
1039
+ },
1040
+ cancelButtonText: {
1041
+ type: String,
1042
+ default: "Отмена"
1043
+ },
1044
+ actionButtonText: {
1045
+ type: String,
1046
+ required: !0
1047
+ }
1048
+ },
1049
+ setup() {
1050
+ return { headingId: m() };
1051
+ },
1052
+ computed: {
1053
+ isDangerous() {
1054
+ return this.type === "dangerous";
1055
+ },
1056
+ isWarning() {
1057
+ return this.type === "warning";
1058
+ }
1059
+ }
1060
+ }, wt = { class: "flex bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4" }, Tt = { class: "sm:flex sm:items-start" }, Et = { class: "mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left" }, Dt = ["id"], Ot = { class: "mt-2" }, kt = { class: "text-sm text-gray-500" }, At = { class: "bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse" };
1061
+ function jt(e, t, i, o, s, u) {
1062
+ let d = f("warning"), m = f("dangerous"), h = f("modal");
1063
+ return l(), n(h, {
1064
+ "is-open": i.isOpen,
1065
+ "heading-id": o.headingId
1066
+ }, {
1067
+ default: _(() => [a("div", wt, [a("div", Tt, [a("div", { class: c(["mx-auto shrink-0 flex items-center justify-center h-12 w-12 rounded-full sm:mx-0 sm:h-10 sm:w-10", {
1068
+ "bg-red-100": u.isDangerous,
1069
+ "bg-yellow-100": u.isWarning
1070
+ }]) }, [u.isWarning ? (l(), n(d, { key: 0 })) : r("", !0), u.isDangerous ? (l(), n(m, { key: 1 })) : r("", !0)], 2), a("div", Et, [a("h3", {
1071
+ class: "text-lg leading-6 font-medium text-gray-900",
1072
+ id: o.headingId
1073
+ }, p(i.confirmationHeading), 9, Dt), a("div", Ot, [a("p", kt, p(i.confirmationText), 1)])])])]), a("div", At, [a("button", {
1074
+ type: "button",
1075
+ class: c(["w-full inline-flex justify-center rounded-md border border-transparent shadow-xs px-4 py-2 text-base font-medium text-white focus:outline-hidden focus:ring-2 focus:ring-offset-2 sm:ml-3 sm:w-auto sm:text-sm", {
1076
+ "bg-red-600 hover:bg-red-700 focus:ring-red-500": u.isDangerous,
1077
+ "bg-yellow-400 hover:bg-yellow-500 focus:ring-yellow-300": u.isWarning
1078
+ }]),
1079
+ onClick: t[0] ||= b((t) => e.$emit("actionConfirmed"), ["prevent"])
1080
+ }, p(i.actionButtonText), 3), a("button", {
1081
+ type: "button",
1082
+ class: "mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-xs px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-hidden focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm",
1083
+ onClick: t[1] ||= b((t) => e.$emit("actionCanceled"), ["prevent"])
1084
+ }, p(i.cancelButtonText), 1)])]),
1085
+ _: 1
1086
+ }, 8, ["is-open", "heading-id"]);
1087
+ }
1088
+ var Mt = /*#__PURE__*/ S(Ct, [["render", jt]]);
942
1089
  //#endregion
943
- export { et as Closer, k as Dot, ct as DownloadLink, Ze as ErrorMessages, U as PickDay, D as Popup, ue as RussianMobileFilter, _e as Search, we as SelectDateInterval, Ve as SelectSingle, Ge as SmallBadge };
1090
+ export { nt as Closer, Mt as ConfirmationModal, k as Dot, ut as DownloadLink, $e as ErrorMessages, U as PickDay, O as Popup, de as RussianMobileFilter, ve as Search, Te as SelectDateInterval, He as SelectSingle, Ke as SmallBadge };
package/dist/style.css CHANGED
@@ -1,2 +1,2 @@
1
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-300:oklch(87.1% .15 154.449);--color-green-500:oklch(72.3% .219 149.579);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-800:oklch(42.4% .199 265.638);--color-indigo-100:oklch(93% .034 272.788);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-800:oklch(43.8% .218 303.724);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--leading-tight:1.25;--radius-md:.375rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--container-phone:calc(19ch + 16px)}}@layer base;@layer components{.bb-dashboard-ui,.bb-dashboard-ui *,.bb-dashboard-ui :before,.bb-dashboard-ui :after{box-sizing:border-box;border:0 solid;margin:0;padding:0}.bb-dashboard-ui button,.bb-dashboard-ui input,button.bb-dashboard-ui{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}.bb-dashboard-ui button,button.bb-dashboard-ui{appearance:button}.bb-dashboard-ui a,a.bb-dashboard-ui{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.bb-dashboard-ui input{appearance:none}.bb-dashboard-ui input:focus{box-shadow:none}.bb-dashboard-ui ::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){.bb-dashboard-ui ::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}.bb-dashboard-ui ::placeholder{opacity:1}}@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:0}.top-0{top:0}.right-0{right:0}.left-0{left:0}.z-10{z-index:10}.z-20{z-index:20}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mt-1{margin-top:var(--spacing)}.ml-1{margin-left:var(--spacing)}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-9{height:calc(var(--spacing) * 9)}.h-full{height:100%}.w-2{width:calc(var(--spacing) * 2)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-9{width:calc(var(--spacing) * 9)}.w-72{width:calc(var(--spacing) * 72)}.w-full{width:100%}.w-phone{width:var(--container-phone)}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-72{min-width:calc(var(--spacing) * 72)}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-top-right{transform-origin:100% 0}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-dashed>:not(:last-child)){--tw-border-style:dashed;border-style:dashed}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rounded-full{border-radius:2147483647px}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-none{--tw-border-style:none;border-style:none}.border-gray-200{border-color:var(--color-gray-200)}.border-red-400{border-color:var(--color-red-400)}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-yellow-400{border-color:var(--color-yellow-400)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.fill-current{fill:currentColor}.stroke-current{stroke:currentColor}.p-4{padding:calc(var(--spacing) * 4)}.px-3{padding-inline:calc(var(--spacing) * 3)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.whitespace-nowrap{white-space:nowrap}.text-blue-800{color:var(--color-blue-800)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-green-300{color:var(--color-green-300)}.text-green-500{color:var(--color-green-500)}.text-purple-800{color:var(--color-purple-800)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.placeholder-gray-300::placeholder{color:var(--color-gray-300)}.opacity-0{opacity:0}.opacity-75{opacity:.75}.opacity-100{opacity:1}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}.placeholder\:text-sm::placeholder{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media (hover:hover){.hover\:bg-indigo-100:hover{background-color:var(--color-indigo-100)}.hover\:text-gray-400:hover{color:var(--color-gray-400)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-purple-600:hover{color:var(--color-purple-600)}}.focus\:z-10:focus{z-index:10}.focus\:ring-3:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-500\/50:focus{--tw-ring-color:#3080ff80}@supports (color:color-mix(in lab, red, red)){.focus\:ring-blue-500\/50:focus{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 50%, transparent)}}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}.pika-single{z-index:9999;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:block;position:relative}.pika-single:before,.pika-single:after{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px #00000080}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{text-align:center;position:relative}.pika-label{z-index:9999;background-color:#fff;margin:0;padding:5px 3px;font-size:14px;font-weight:700;line-height:20px;display:inline-block;position:relative;overflow:hidden}.pika-title select{cursor:pointer;z-index:9998;opacity:0;margin:0;position:absolute;top:5px;left:0}.pika-prev,.pika-next{cursor:pointer;text-indent:20px;white-space:nowrap;opacity:.5;background-color:#0000;background-position:50%;background-repeat:no-repeat;background-size:75% 75%;border:0;outline:none;width:20px;height:30px;padding:0;display:block;position:relative;overflow:hidden}.pika-prev:hover,.pika-next:hover{opacity:1}.pika-prev,.is-rtl .pika-next{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.pika-next,.is-rtl .pika-prev{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-prev.is-disabled,.pika-next.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{border-collapse:collapse;border-spacing:0;border:0;width:100%}.pika-table th,.pika-table td{width:14.2857%;padding:0}.pika-table th{color:#999;text-align:center;font-size:12px;font-weight:700;line-height:25px}.pika-button{cursor:pointer;box-sizing:border-box;color:#666;text-align:right;width:100%;height:initial;background:#f5f5f5;border:0;outline:none;margin:0;padding:5px;font-size:12px;line-height:15px;display:block}.pika-week{color:#999;font-size:11px}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button,.has-event .pika-button{color:#fff;background:#3af;border-radius:3px;font-weight:700;box-shadow:inset 0 1px 3px #178fe5}.has-event .pika-button{background:#005da9;box-shadow:inset 0 1px 3px #0076c9}.is-disabled .pika-button,.is-inrange .pika-button{background:#d5e9f7}.is-startrange .pika-button{color:#fff;box-shadow:none;background:#6cb31d;border-radius:3px}.is-endrange .pika-button{color:#fff;box-shadow:none;background:#3af;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.is-outside-current-month .pika-button{color:#999;opacity:.3}.is-selection-disabled{pointer-events:none;cursor:default}.pika-button:hover,.pika-row.pick-whole-week:hover .pika-button{color:#fff;box-shadow:none;background:#ff8000;border-radius:3px}.pika-table abbr{cursor:help;border-bottom:none}
1
+ @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-300:oklch(87.1% .15 154.449);--color-green-500:oklch(72.3% .219 149.579);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-800:oklch(42.4% .199 265.638);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-800:oklch(43.8% .218 303.724);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--leading-tight:1.25;--radius-md:.375rem;--radius-lg:.5rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--container-phone:calc(19ch + 16px)}}@layer base;@layer components{.bb-dashboard-ui,.bb-dashboard-ui *,.bb-dashboard-ui :before,.bb-dashboard-ui :after{box-sizing:border-box;border:0 solid;margin:0;padding:0}.bb-dashboard-ui button,.bb-dashboard-ui input,button.bb-dashboard-ui{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}.bb-dashboard-ui button,button.bb-dashboard-ui{appearance:button}.bb-dashboard-ui a,a.bb-dashboard-ui{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}.bb-dashboard-ui input{appearance:none}.bb-dashboard-ui input:focus{box-shadow:none}.bb-dashboard-ui ::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){.bb-dashboard-ui ::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}.bb-dashboard-ui ::placeholder{opacity:1}}@layer utilities{.pointer-events-none{pointer-events:none}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:0}.top-0{top:0}.right-0{right:0}.left-0{left:0}.z-10{z-index:10}.z-20{z-index:20}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.ml-1{margin-left:var(--spacing)}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-2{height:calc(var(--spacing) * 2)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-9{height:calc(var(--spacing) * 9)}.h-12{height:calc(var(--spacing) * 12)}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-2{width:calc(var(--spacing) * 2)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-9{width:calc(var(--spacing) * 9)}.w-12{width:calc(var(--spacing) * 12)}.w-72{width:calc(var(--spacing) * 72)}.w-full{width:100%}.w-phone{width:var(--container-phone)}.min-w-24{min-width:calc(var(--spacing) * 24)}.min-w-36{min-width:calc(var(--spacing) * 36)}.min-w-72{min-width:calc(var(--spacing) * 72)}.flex-1{flex:1}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.origin-top-right{transform-origin:100% 0}.translate-y-0{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-4{--tw-translate-y:calc(var(--spacing) * 4);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.animate-pulse{animation:var(--animate-pulse)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-dashed>:not(:last-child)){--tw-border-style:dashed;border-style:dashed}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-visible{overflow:visible}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-none{--tw-border-style:none;border-style:none}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-red-400{border-color:var(--color-red-400)}.border-transparent{border-color:#0000}.border-white{border-color:var(--color-white)}.border-yellow-400{border-color:var(--color-yellow-400)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-600{background-color:var(--color-red-600)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-400{background-color:var(--color-yellow-400)}.fill-current{fill:currentColor}.stroke-current{stroke:currentColor}.p-4{padding:calc(var(--spacing) * 4)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-6{padding-right:calc(var(--spacing) * 6)}.pr-12{padding-right:calc(var(--spacing) * 12)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.align-bottom{vertical-align:bottom}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.whitespace-nowrap{white-space:nowrap}.text-blue-800{color:var(--color-blue-800)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-700{color:var(--color-gray-700)}.text-gray-900{color:var(--color-gray-900)}.text-green-300{color:var(--color-green-300)}.text-green-500{color:var(--color-green-500)}.text-purple-800{color:var(--color-purple-800)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.placeholder-gray-300::placeholder{color:var(--color-gray-300)}.opacity-0{opacity:0}.opacity-75{opacity:.75}.opacity-100{opacity:1}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.select-none{-webkit-user-select:none;user-select:none}.placeholder\:text-sm::placeholder{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}@media (hover:hover){.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-indigo-100:hover{background-color:var(--color-indigo-100)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:bg-yellow-500:hover{background-color:var(--color-yellow-500)}.hover\:text-gray-400:hover{color:var(--color-gray-400)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-purple-600:hover{color:var(--color-purple-600)}}.focus\:z-10:focus{z-index:10}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-3:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-blue-500\/50:focus{--tw-ring-color:#3080ff80}@supports (color:color-mix(in lab, red, red)){.focus\:ring-blue-500\/50:focus{--tw-ring-color:color-mix(in oklab, var(--color-blue-500) 50%, transparent)}}.focus\:ring-indigo-500:focus{--tw-ring-color:var(--color-indigo-500)}.focus\:ring-red-500:focus{--tw-ring-color:var(--color-red-500)}.focus\:ring-yellow-300:focus{--tw-ring-color:var(--color-yellow-300)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}@media (width>=40rem){.sm\:mx-0{margin-inline:0}.sm\:my-8{margin-block:calc(var(--spacing) * 8)}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:calc(var(--spacing) * 3)}.sm\:ml-4{margin-left:calc(var(--spacing) * 4)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:inline-block{display:inline-block}.sm\:h-10{height:calc(var(--spacing) * 10)}.sm\:h-screen{height:100vh}.sm\:w-10{width:calc(var(--spacing) * 10)}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:translate-y-0{--tw-translate-y:0px;translate:var(--tw-translate-x) var(--tw-translate-y)}.sm\:scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.sm\:scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:p-0{padding:0}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:pb-4{padding-bottom:calc(var(--spacing) * 4)}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}.pika-single{z-index:9999;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;display:block;position:relative}.pika-single:before,.pika-single:after{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px #00000080}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{text-align:center;position:relative}.pika-label{z-index:9999;background-color:#fff;margin:0;padding:5px 3px;font-size:14px;font-weight:700;line-height:20px;display:inline-block;position:relative;overflow:hidden}.pika-title select{cursor:pointer;z-index:9998;opacity:0;margin:0;position:absolute;top:5px;left:0}.pika-prev,.pika-next{cursor:pointer;text-indent:20px;white-space:nowrap;opacity:.5;background-color:#0000;background-position:50%;background-repeat:no-repeat;background-size:75% 75%;border:0;outline:none;width:20px;height:30px;padding:0;display:block;position:relative;overflow:hidden}.pika-prev:hover,.pika-next:hover{opacity:1}.pika-prev,.is-rtl .pika-next{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.pika-next,.is-rtl .pika-prev{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-prev.is-disabled,.pika-next.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{border-collapse:collapse;border-spacing:0;border:0;width:100%}.pika-table th,.pika-table td{width:14.2857%;padding:0}.pika-table th{color:#999;text-align:center;font-size:12px;font-weight:700;line-height:25px}.pika-button{cursor:pointer;box-sizing:border-box;color:#666;text-align:right;width:100%;height:initial;background:#f5f5f5;border:0;outline:none;margin:0;padding:5px;font-size:12px;line-height:15px;display:block}.pika-week{color:#999;font-size:11px}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button,.has-event .pika-button{color:#fff;background:#3af;border-radius:3px;font-weight:700;box-shadow:inset 0 1px 3px #178fe5}.has-event .pika-button{background:#005da9;box-shadow:inset 0 1px 3px #0076c9}.is-disabled .pika-button,.is-inrange .pika-button{background:#d5e9f7}.is-startrange .pika-button{color:#fff;box-shadow:none;background:#6cb31d;border-radius:3px}.is-endrange .pika-button{color:#fff;box-shadow:none;background:#3af;border-radius:3px}.is-disabled .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.is-outside-current-month .pika-button{color:#999;opacity:.3}.is-selection-disabled{pointer-events:none;cursor:default}.pika-button:hover,.pika-row.pick-whole-week:hover .pika-button{color:#fff;box-shadow:none;background:#ff8000;border-radius:3px}.pika-table abbr{cursor:help;border-bottom:none}
2
2
  /*$vite$:1*/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boobooking/dashboard-ui-components",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Компоненты дашборда на Vue 3",
5
5
  "keywords": [
6
6
  "vue",
@@ -30,7 +30,7 @@
30
30
  "playground": "npm run build && vite --config vite.playground.config.js"
31
31
  },
32
32
  "peerDependencies": {
33
- "vue": "^3.2"
33
+ "vue": "^3.5.0"
34
34
  },
35
35
  "dependencies": {
36
36
  "imask": "^7.6.1",
@@ -40,6 +40,8 @@
40
40
  "@tailwindcss/forms": "^0.5.10",
41
41
  "@tailwindcss/vite": "^4.3.3",
42
42
  "@vitejs/plugin-vue": "^6.0.8",
43
+ "@vue/test-utils": "^2.5.1",
44
+ "happy-dom": "^20.14.5",
43
45
  "tailwindcss": "^4.3.3",
44
46
  "vite": "^8.3.0",
45
47
  "vitest": "^5.0.0",