mgv-backoffice 1.0.13 → 1.2.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.
Files changed (83) hide show
  1. package/README.md +735 -70
  2. package/dist/index.d.ts +1 -27
  3. package/dist/{components → src/components}/BaseAlert.vue.d.ts +2 -2
  4. package/dist/src/components/BaseAppLayout.vue.d.ts +31 -0
  5. package/dist/{components → src/components}/BaseButton.vue.d.ts +5 -2
  6. package/dist/src/components/BaseCollapsibleSection.vue.d.ts +35 -0
  7. package/dist/src/components/BaseConfirmModal.vue.d.ts +23 -0
  8. package/dist/src/components/BaseEntityPickerModal.vue.d.ts +58 -0
  9. package/dist/{components → src/components}/BaseLogo.vue.d.ts +3 -3
  10. package/dist/{components → src/components}/BaseModal.vue.d.ts +4 -3
  11. package/dist/src/components/BaseModalShell.vue.d.ts +43 -0
  12. package/dist/src/components/BaseNotFoundPage.vue.d.ts +17 -0
  13. package/dist/src/components/BaseSidebar.vue.d.ts +46 -0
  14. package/dist/src/components/BaseTextInputModal.vue.d.ts +46 -0
  15. package/dist/{components → src/components}/BaseToast.vue.d.ts +14 -2
  16. package/dist/{components → src/components}/Pagination.vue.d.ts +0 -3
  17. package/dist/src/composables/useDebounce.d.ts +10 -0
  18. package/dist/src/composables/useEscapeKey.d.ts +6 -0
  19. package/dist/src/composables/useMobileSidebar.d.ts +6 -0
  20. package/dist/src/composables/useTheme.d.ts +19 -0
  21. package/dist/src/composables/useThemeClasses.d.ts +62 -0
  22. package/dist/src/composables/useToast.d.ts +19 -0
  23. package/dist/{enums → src/enums}/AlertEnum.d.ts +1 -1
  24. package/dist/{enums → src/enums}/BaseButtonSizeEnum.d.ts +1 -1
  25. package/dist/src/enums/BaseLogoEnum.d.ts +7 -0
  26. package/dist/src/index.d.ts +46 -0
  27. package/dist/src/types/entityPicker.d.ts +11 -0
  28. package/dist/src/types/sidebar.d.ts +22 -0
  29. package/dist/src/utils/httpColors.d.ts +19 -0
  30. package/dist/ui-lib.css +3 -0
  31. package/dist/ui-lib.js +1624 -1011
  32. package/dist/ui-lib.umd.cjs +1 -1
  33. package/package.json +14 -14
  34. package/src/components/BaseAlert.vue +2 -2
  35. package/src/components/BaseAppLayout.vue +65 -0
  36. package/src/components/BaseBreadcrumb.vue +2 -1
  37. package/src/components/BaseButton.vue +152 -132
  38. package/src/components/BaseCollapsibleSection.vue +107 -0
  39. package/src/components/BaseConfirmModal.vue +110 -0
  40. package/src/components/BaseEntityPickerModal.vue +330 -0
  41. package/src/components/BaseLogo.vue +5 -5
  42. package/src/components/BaseModal.vue +95 -75
  43. package/src/components/BaseModalShell.vue +115 -0
  44. package/src/components/BaseNotFoundPage.vue +51 -0
  45. package/src/components/BaseSidebar.vue +223 -0
  46. package/src/components/BaseTextInputModal.vue +144 -0
  47. package/src/components/BaseToast.vue +41 -20
  48. package/src/components/ColoredSquares.vue +2 -4
  49. package/src/components/Pagination.vue +137 -136
  50. package/src/components/TrendArrow.vue +1 -1
  51. package/src/composables/useDebounce.ts +32 -0
  52. package/src/composables/useEscapeKey.ts +15 -0
  53. package/src/composables/useMobileSidebar.ts +23 -0
  54. package/src/composables/useTheme.ts +69 -0
  55. package/src/composables/useThemeClasses.ts +133 -0
  56. package/src/composables/useToast.ts +56 -0
  57. package/src/enums/AlertEnum.ts +1 -1
  58. package/src/enums/BaseButtonSizeEnum.ts +1 -1
  59. package/src/enums/BaseLogoEnum.ts +4 -1
  60. package/src/index.ts +64 -36
  61. package/src/types/entityPicker.ts +11 -0
  62. package/src/types/sidebar.ts +24 -0
  63. package/src/utils/httpColors.ts +68 -0
  64. package/src/utils/util.ts +61 -53
  65. package/dist/enums/BaseLogoEnum.d.ts +0 -5
  66. package/dist/style.css +0 -1
  67. /package/dist/{components → src/components}/BaseBadge.vue.d.ts +0 -0
  68. /package/dist/{components → src/components}/BaseBreadcrumb.vue.d.ts +0 -0
  69. /package/dist/{components → src/components}/BaseLine.vue.d.ts +0 -0
  70. /package/dist/{components → src/components}/BaseRow.vue.d.ts +0 -0
  71. /package/dist/{components → src/components}/BaseSpinner.vue.d.ts +0 -0
  72. /package/dist/{components → src/components}/ColoredSquares.vue.d.ts +0 -0
  73. /package/dist/{components → src/components}/EarningsCard.vue.d.ts +0 -0
  74. /package/dist/{components → src/components}/EuroAmount.vue.d.ts +0 -0
  75. /package/dist/{components → src/components}/TrendArrow.vue.d.ts +0 -0
  76. /package/dist/{enums → src/enums}/BaseBadgeEnum.d.ts +0 -0
  77. /package/dist/{enums → src/enums}/BaseButtonEnum.d.ts +0 -0
  78. /package/dist/{enums → src/enums}/BaseModalEnum.d.ts +0 -0
  79. /package/dist/{enums → src/enums}/BaseToastEnum.d.ts +0 -0
  80. /package/dist/{enums → src/enums}/ColorsEnums.d.ts +0 -0
  81. /package/dist/{enums → src/enums}/LineEnum.d.ts +0 -0
  82. /package/dist/{enums → src/enums}/PositioningEnum.d.ts +0 -0
  83. /package/dist/{utils → src/utils}/util.d.ts +0 -0
package/src/index.ts CHANGED
@@ -1,36 +1,64 @@
1
- import './style.css'
2
-
3
- // Components
4
- export { default as BaseAlert } from './components/BaseAlert.vue'
5
- export { default as BaseBadge } from './components/BaseBadge.vue'
6
- export { default as BaseBreadcrumb } from './components/BaseBreadcrumb.vue'
7
- export { default as BaseButton } from './components/BaseButton.vue'
8
- export { default as BaseLine } from './components/BaseLine.vue'
9
- export { default as BaseLogo } from './components/BaseLogo.vue'
10
- export { default as BaseModal } from './components/BaseModal.vue'
11
- export { default as BaseRow } from './components/BaseRow.vue'
12
- export { default as BaseSpinner } from './components/BaseSpinner.vue'
13
- export { default as BaseToast } from './components/BaseToast.vue'
14
- export { default as ColoredSquares } from './components/ColoredSquares.vue'
15
- export { default as EarningsCard } from './components/EarningsCard.vue'
16
- export { default as EuroAmount } from './components/EuroAmount.vue'
17
- export { default as Pagination } from './components/Pagination.vue'
18
- export { default as TrendArrow } from './components/TrendArrow.vue'
19
-
20
- // Enums
21
- export { AlertEnum } from './enums/AlertEnum'
22
- export { BaseBadgeEnum } from './enums/BaseBadgeEnum'
23
- export { BaseButtonEnum } from './enums/BaseButtonEnum'
24
- export { BaseButtonSizeEnum } from './enums/BaseButtonSizeEnum'
25
- export { BaseLoginEnum } from './enums/BaseLogoEnum'
26
- export { BaseModalEnum } from './enums/BaseModalEnum'
27
- export { BaseToastEnum } from './enums/BaseToastEnum'
28
- export { ColorsEnums } from './enums/ColorsEnums'
29
- export { LineEnum } from './enums/LineEnum'
30
- export { PositioningEnum } from './enums/PositioningEnum'
31
-
32
- // Types
33
- export type { BreadCrumb } from './components/BaseBreadcrumb.vue'
34
-
35
- // Utils
36
- export { getBaseColor, getBaseColorOf } from './utils/util'
1
+ import './style.css'
2
+
3
+ // Components — existing
4
+ export { default as BaseAlert } from './components/BaseAlert.vue'
5
+ export { default as BaseBadge } from './components/BaseBadge.vue'
6
+ export { default as BaseBreadcrumb } from './components/BaseBreadcrumb.vue'
7
+ export { default as BaseButton } from './components/BaseButton.vue'
8
+ export { default as BaseLine } from './components/BaseLine.vue'
9
+ export { default as BaseLogo } from './components/BaseLogo.vue'
10
+ export { default as BaseModal } from './components/BaseModal.vue'
11
+ export { default as BaseRow } from './components/BaseRow.vue'
12
+ export { default as BaseSpinner } from './components/BaseSpinner.vue'
13
+ export { default as BaseToast } from './components/BaseToast.vue'
14
+ export { default as ColoredSquares } from './components/ColoredSquares.vue'
15
+ export { default as EarningsCard } from './components/EarningsCard.vue'
16
+ export { default as EuroAmount } from './components/EuroAmount.vue'
17
+ export { default as Pagination } from './components/Pagination.vue'
18
+ export { default as TrendArrow } from './components/TrendArrow.vue'
19
+
20
+ // Components — extracted from WireMate (Tier 1 + Tier 2)
21
+ export { default as BaseModalShell } from './components/BaseModalShell.vue'
22
+ export { default as BaseCollapsibleSection } from './components/BaseCollapsibleSection.vue'
23
+ export { default as BaseConfirmModal } from './components/BaseConfirmModal.vue'
24
+ export { default as BaseTextInputModal } from './components/BaseTextInputModal.vue'
25
+ export { default as BaseNotFoundPage } from './components/BaseNotFoundPage.vue'
26
+ export { default as BaseSidebar } from './components/BaseSidebar.vue'
27
+ export { default as BaseEntityPickerModal } from './components/BaseEntityPickerModal.vue'
28
+ export { default as BaseAppLayout } from './components/BaseAppLayout.vue'
29
+
30
+ // Composables
31
+ export { useTheme } from './composables/useTheme'
32
+ export type { UseThemeOptions } from './composables/useTheme'
33
+ export { useThemeClasses } from './composables/useThemeClasses'
34
+ export type { ThemeClasses } from './composables/useThemeClasses'
35
+ export { useEscapeKey } from './composables/useEscapeKey'
36
+ export { useDebouncedRef } from './composables/useDebounce'
37
+ export { useToast } from './composables/useToast'
38
+ export { useMobileSidebar } from './composables/useMobileSidebar'
39
+
40
+ // Enums
41
+ export { AlertEnum } from './enums/AlertEnum'
42
+ export { BaseBadgeEnum } from './enums/BaseBadgeEnum'
43
+ export { BaseButtonEnum } from './enums/BaseButtonEnum'
44
+ export { BaseButtonSizeEnum } from './enums/BaseButtonSizeEnum'
45
+ export { BaseLogoEnum, BaseLoginEnum } from './enums/BaseLogoEnum'
46
+ export { BaseModalEnum } from './enums/BaseModalEnum'
47
+ export { BaseToastEnum } from './enums/BaseToastEnum'
48
+ export { ColorsEnums } from './enums/ColorsEnums'
49
+ export { LineEnum } from './enums/LineEnum'
50
+ export { PositioningEnum } from './enums/PositioningEnum'
51
+
52
+ // Types
53
+ export type { BreadCrumb } from './components/BaseBreadcrumb.vue'
54
+ export type { NavItem, NavSection } from './types/sidebar'
55
+ export type { EntityPickerItem } from './types/entityPicker'
56
+
57
+ // Utils
58
+ export { getBaseColor, getBaseColorOf } from './utils/util'
59
+ export {
60
+ methodBadgeSolid,
61
+ methodBadgeBright,
62
+ statusBadgeSolid,
63
+ statusBadgeTinted,
64
+ } from './utils/httpColors'
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Minimal shape required for an item in BaseEntityPickerModal.
3
+ *
4
+ * Callers can pass arrays of richer types as long as each item has an
5
+ * `id` and a `label`. The picker uses `id` for selection and emission,
6
+ * and `label` for display + fuzzy search.
7
+ */
8
+ export interface EntityPickerItem {
9
+ id: string
10
+ label: string
11
+ }
@@ -0,0 +1,24 @@
1
+ import type { Component } from 'vue'
2
+
3
+ /**
4
+ * A single nav button inside a sidebar section.
5
+ *
6
+ * • `name` — Vue Router route name. Used both for activation matching
7
+ * (`route.name === item.name`) and for the `router.push` target.
8
+ * • `label` — display text.
9
+ * • `icon` — Vue component to render as the leading icon (typically a
10
+ * Heroicon).
11
+ */
12
+ export interface NavItem {
13
+ name: string
14
+ label: string
15
+ icon: Component
16
+ }
17
+
18
+ /**
19
+ * A grouped section of nav items rendered with a small uppercase header.
20
+ */
21
+ export interface NavSection {
22
+ title: string
23
+ items: NavItem[]
24
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * HTTP method / status code → Tailwind class helpers.
3
+ *
4
+ * Two visual families:
5
+ *
6
+ * Solid family (600 weight, white text): bold saturated badges for
7
+ * inline rows (e.g. request logs / detail modals).
8
+ *
9
+ * Bright/tinted family (500 weight + tinted backgrounds): softer
10
+ * badges for use on card surfaces, adapts to dark/light themes.
11
+ */
12
+
13
+ type MethodColorMap = Readonly<Record<string, string>>
14
+
15
+ const SOLID_METHOD_COLORS: MethodColorMap = {
16
+ GET: 'bg-blue-600',
17
+ POST: 'bg-emerald-600',
18
+ PUT: 'bg-amber-600',
19
+ DELETE: 'bg-red-600',
20
+ PATCH: 'bg-purple-600',
21
+ HEAD: 'bg-gray-600',
22
+ }
23
+
24
+ const BRIGHT_METHOD_COLORS: MethodColorMap = {
25
+ GET: 'bg-blue-500',
26
+ POST: 'bg-green-500',
27
+ PUT: 'bg-yellow-500',
28
+ DELETE: 'bg-red-500',
29
+ PATCH: 'bg-purple-500',
30
+ HEAD: 'bg-gray-500',
31
+ }
32
+
33
+ /** Solid 600-weight method badge. */
34
+ export function methodBadgeSolid(method?: string): string {
35
+ if (!method) return 'bg-gray-600'
36
+ return SOLID_METHOD_COLORS[method.toUpperCase()] ?? 'bg-gray-600'
37
+ }
38
+
39
+ /** Bright 500-weight method badge. */
40
+ export function methodBadgeBright(method?: string): string {
41
+ if (!method) return 'bg-gray-500'
42
+ return BRIGHT_METHOD_COLORS[method.toUpperCase()] ?? 'bg-gray-500'
43
+ }
44
+
45
+ /** Solid 600-weight status badge with white text. */
46
+ export function statusBadgeSolid(status?: number): string {
47
+ const code = status ?? 0
48
+ if (code >= 200 && code < 300) return 'bg-emerald-600'
49
+ if (code >= 300 && code < 400) return 'bg-blue-600'
50
+ if (code >= 400 && code < 500) return 'bg-amber-600'
51
+ if (code >= 500) return 'bg-red-600'
52
+ return 'bg-gray-600'
53
+ }
54
+
55
+ /** Dark/light-aware tinted status badge. */
56
+ export function statusBadgeTinted(status: number | undefined, isDark: boolean): string {
57
+ const code = status ?? 200
58
+ if (isDark) {
59
+ if (code >= 200 && code < 300) return 'bg-green-500/15 text-green-400'
60
+ if (code >= 300 && code < 400) return 'bg-blue-500/15 text-blue-400'
61
+ if (code >= 400 && code < 500) return 'bg-yellow-500/15 text-yellow-400'
62
+ return 'bg-red-500/15 text-red-400'
63
+ }
64
+ if (code >= 200 && code < 300) return 'bg-green-100 text-green-800'
65
+ if (code >= 300 && code < 400) return 'bg-blue-100 text-blue-800'
66
+ if (code >= 400 && code < 500) return 'bg-yellow-100 text-yellow-800'
67
+ return 'bg-red-100 text-red-800'
68
+ }
package/src/utils/util.ts CHANGED
@@ -1,53 +1,61 @@
1
- import { AlertEnum } from "../enums/AlertEnum";
2
- import { ColorsEnums } from "../enums/ColorsEnums";
3
-
4
- function getBaseColor(c: AlertEnum): string {
5
- let color = "red";
6
- switch (c) {
7
- case (AlertEnum.ERROR):
8
- color = "red"
9
- break;
10
- case (AlertEnum.SUCCESS):
11
- color = "green"
12
- break;
13
- case (AlertEnum.INFROM):
14
- color = "gray"
15
- break;
16
- case (AlertEnum.WARNING):
17
- color = "yellow"
18
- break;
19
- }
20
- return color;
21
- }
22
-
23
- function getBaseColorOf(c: ColorsEnums): string {
24
- let color = 'red';
25
- switch (c) {
26
- case ColorsEnums.GREEN: {
27
- color = 'green';
28
- break;
29
- }
30
- case ColorsEnums.RED: {
31
- color = 'red';
32
- break;
33
- }
34
- case ColorsEnums.BLUE: {
35
- color = 'blue';
36
- break;
37
- }
38
- case ColorsEnums.YELLOW: {
39
- color = 'yellow';
40
- break;
41
- }
42
- case ColorsEnums.NONE: {
43
- color = '';
44
- break;
45
- }
46
- }
47
- return color;
48
- }
49
-
50
- export {
51
- getBaseColor,
52
- getBaseColorOf
53
- };
1
+ import { AlertEnum } from "../enums/AlertEnum";
2
+ import { ColorsEnums } from "../enums/ColorsEnums";
3
+
4
+ function getBaseColor(c: AlertEnum): string {
5
+ let color = "red";
6
+ switch (c) {
7
+ case (AlertEnum.ERROR):
8
+ color = "red"
9
+ break;
10
+ case (AlertEnum.SUCCESS):
11
+ color = "green"
12
+ break;
13
+ case (AlertEnum.INFO):
14
+ color = "gray"
15
+ break;
16
+ case (AlertEnum.WARNING):
17
+ color = "yellow"
18
+ break;
19
+ }
20
+ return color;
21
+ }
22
+
23
+ function getBaseColorOf(c: ColorsEnums): string {
24
+ let color = 'red';
25
+ switch (c) {
26
+ case ColorsEnums.GREEN: {
27
+ color = 'green';
28
+ break;
29
+ }
30
+ case ColorsEnums.RED: {
31
+ color = 'red';
32
+ break;
33
+ }
34
+ case ColorsEnums.BLUE: {
35
+ color = 'blue';
36
+ break;
37
+ }
38
+ case ColorsEnums.YELLOW: {
39
+ color = 'yellow';
40
+ break;
41
+ }
42
+ case ColorsEnums.BLACK: {
43
+ color = 'black';
44
+ break;
45
+ }
46
+ case ColorsEnums.GRAY: {
47
+ color = 'gray';
48
+ break;
49
+ }
50
+ case ColorsEnums.NONE: {
51
+ color = '';
52
+ break;
53
+ }
54
+ }
55
+ return color;
56
+ }
57
+
58
+ export {
59
+ getBaseColor,
60
+ getBaseColorOf
61
+ };
@@ -1,5 +0,0 @@
1
- export declare enum BaseLoginEnum {
2
- SMALL = "SMALL",
3
- MEDIUM = "MEDIUM",
4
- LARGE = "LARGE"
5
- }
package/dist/style.css DELETED
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */@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-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking: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}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--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-orange-50:oklch(98% .016 73.684);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-200:oklch(90.1% .076 70.697);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-700:oklch(55.3% .195 38.402);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--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-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-pink-300:oklch(82.3% .12 346.018);--color-slate-300:oklch(86.9% .022 252.894);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--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-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-zinc-300:oklch(87.1% .006 286.286);--color-neutral-300:oklch(87% 0 0);--color-stone-300:oklch(86.9% .005 56.366);--color-white:#fff;--spacing:.25rem;--container-md:28rem;--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: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.top-4{top:calc(var(--spacing) * 4)}.top-5{top:calc(var(--spacing) * 5)}.top-20{top:calc(var(--spacing) * 20)}.right-4{right:calc(var(--spacing) * 4)}.right-5{right:calc(var(--spacing) * 5)}.bottom-0{bottom:calc(var(--spacing) * 0)}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-0{left:calc(var(--spacing) * 0)}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.-mx-1\.5{margin-inline:calc(var(--spacing) * -1.5)}.mx-auto{margin-inline:auto}.-my-1\.5{margin-block:calc(var(--spacing) * -1.5)}.my-4{margin-block:calc(var(--spacing) * 4)}.my-8{margin-block:calc(var(--spacing) * 8)}.me-3{margin-inline-end:calc(var(--spacing) * 3)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.inline{display:inline}.inline-flex{display:inline-flex}.aspect-square{aspect-ratio:1}.h-1{height:calc(var(--spacing) * 1)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-12{height:calc(var(--spacing) * 12)}.h-px{height:1px}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-12{width:calc(var(--spacing) * 12)}.w-13{width:calc(var(--spacing) * 13)}.w-48{width:calc(var(--spacing) * 48)}.w-96{width:calc(var(--spacing) * 96)}.w-full{width:100%}.max-w-md{max-width:var(--container-md)}.flex-shrink-0{flex-shrink:0}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 1) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 4) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-x-reverse)))}: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)))}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-blue-200{border-color:var(--color-blue-200)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-orange-300{border-color:var(--color-orange-300)}.border-red-200{border-color:var(--color-red-200)}.border-yellow-200{border-color:var(--color-yellow-200)}.border-t-blue-500{border-top-color:var(--color-blue-500)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-300{background-color:var(--color-blue-300)}.bg-blue-400{background-color:var(--color-blue-400)}.bg-blue-700{background-color:var(--color-blue-700)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-300{background-color:var(--color-green-300)}.bg-green-400{background-color:var(--color-green-400)}.bg-green-700{background-color:var(--color-green-700)}.bg-neutral-300{background-color:var(--color-neutral-300)}.bg-orange-50{background-color:var(--color-orange-50)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-pink-300{background-color:var(--color-pink-300)}.bg-purple-300{background-color:var(--color-purple-300)}.bg-purple-400{background-color:var(--color-purple-400)}.bg-purple-700{background-color:var(--color-purple-700)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-700{background-color:var(--color-red-700)}.bg-slate-300{background-color:var(--color-slate-300)}.bg-stone-300{background-color:var(--color-stone-300)}.bg-white{background-color:var(--color-white)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-300{background-color:var(--color-yellow-300)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-zinc-300{background-color:var(--color-zinc-300)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.pl-1{padding-left:calc(var(--spacing) * 1)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.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-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-blue-700{color:var(--color-blue-700)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-orange-400{color:var(--color-orange-400)}.text-orange-500{color:var(--color-orange-500)}.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-white{color:var(--color-white)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-700{color:var(--color-yellow-700)}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px 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-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-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px 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)}@media (hover:hover){.hover\:bg-blue-800:hover{background-color:var(--color-blue-800)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-900:hover{background-color:var(--color-gray-900)}.hover\:bg-green-800:hover{background-color:var(--color-green-800)}.hover\:bg-purple-800:hover{background-color:var(--color-purple-800)}.hover\:bg-red-800:hover{background-color:var(--color-red-800)}.hover\:bg-yellow-500:hover{background-color:var(--color-yellow-500)}.hover\:text-blue-600:hover{color:var(--color-blue-600)}.hover\:text-blue-700:hover{color:var(--color-blue-700)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}}.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-4:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + 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-300:focus{--tw-ring-color:var(--color-blue-300)}.focus\:ring-gray-200:focus{--tw-ring-color:var(--color-gray-200)}.focus\:ring-gray-300:focus{--tw-ring-color:var(--color-gray-300)}.focus\:ring-green-300:focus{--tw-ring-color:var(--color-green-300)}.focus\:ring-purple-300:focus{--tw-ring-color:var(--color-purple-300)}.focus\:ring-red-300:focus{--tw-ring-color:var(--color-red-300)}.focus\:ring-yellow-300:focus{--tw-ring-color:var(--color-yellow-300)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (min-width:48rem){.md\:my-10{margin-block:calc(var(--spacing) * 10)}.md\:my-12{margin-block:calc(var(--spacing) * 12)}.md\:ml-2{margin-left:calc(var(--spacing) * 2)}:where(.md\:space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing) * 3) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-x-reverse)))}}@media (prefers-color-scheme:dark){.dark\:border-gray-700{border-color:var(--color-gray-700)}.dark\:bg-gray-700{background-color:var(--color-gray-700)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-green-800{background-color:var(--color-green-800)}.dark\:bg-orange-700{background-color:var(--color-orange-700)}.dark\:bg-red-800{background-color:var(--color-red-800)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-gray-500{color:var(--color-gray-500)}.dark\:text-green-200{color:var(--color-green-200)}.dark\:text-orange-200{color:var(--color-orange-200)}.dark\:text-red-200{color:var(--color-red-200)}.dark\:text-white{color:var(--color-white)}@media (hover:hover){.dark\:hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.dark\:hover\:text-white:hover{color:var(--color-white)}}}}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{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}@keyframes spin{to{transform:rotate(360deg)}}.outside[data-v-492169b3]{position:fixed;top:0;left:0;height:100vh;width:100%;background-color:#000000bf;z-index:10}.dialog[data-v-492169b3]{position:fixed;top:20vh;left:40%;width:20%;z-index:100;border-radius:12px;border:none;box-shadow:0 2px 8px #00000042;padding:0;margin:0;overflow:hidden}span[data-v-248e09af]{border:1px solid #d1d5db;border-radius:10px;padding:.75rem;text-decoration:none;color:#000}ul[data-v-248e09af]{display:flex;list-style:none;padding:0}li[data-v-248e09af]{margin-right:3px}a[data-v-248e09af]{border:1px solid #d1d5db;border-radius:10px;padding:.75rem;text-decoration:none;color:#000}a[data-v-248e09af]:hover{background-color:#c3c5c9;color:#000;cursor:pointer}a.active[data-v-248e09af]:hover{background-color:#c3c5c9}a.active[data-v-248e09af]{font-weight:700;border-radius:10px;background-color:#e5e7eb;color:#000}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes