@bagelink/vue 1.15.63 → 1.15.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AccordionItem.vue.d.ts.map +1 -1
- package/dist/components/Avatar.vue.d.ts +6 -1
- package/dist/components/Avatar.vue.d.ts.map +1 -1
- package/dist/components/Badge.vue.d.ts.map +1 -1
- package/dist/components/Card.vue.d.ts +7 -0
- package/dist/components/Card.vue.d.ts.map +1 -1
- package/dist/components/Dropdown.vue.d.ts.map +1 -1
- package/dist/components/EmptyState.vue.d.ts +43 -0
- package/dist/components/EmptyState.vue.d.ts.map +1 -0
- package/dist/components/Icon/Icon.vue.d.ts +13 -0
- package/dist/components/Icon/Icon.vue.d.ts.map +1 -1
- package/dist/components/Image.vue.d.ts +26 -1
- package/dist/components/Image.vue.d.ts.map +1 -1
- package/dist/components/ListItem.vue.d.ts +9 -9
- package/dist/components/ListItem.vue.d.ts.map +1 -1
- package/dist/components/Menu.vue.d.ts.map +1 -1
- package/dist/components/Swiper.vue.d.ts +3 -3
- package/dist/components/calendar/CalendarPopover.vue.d.ts +10 -0
- package/dist/components/calendar/CalendarPopover.vue.d.ts.map +1 -1
- package/dist/components/charts/BarChart.vue.d.ts +34 -0
- package/dist/components/charts/BarChart.vue.d.ts.map +1 -0
- package/dist/components/charts/ChartTooltip.vue.d.ts +33 -0
- package/dist/components/charts/ChartTooltip.vue.d.ts.map +1 -0
- package/dist/components/charts/Donut.vue.d.ts +53 -0
- package/dist/components/charts/Donut.vue.d.ts.map +1 -0
- package/dist/components/charts/Funnel.vue.d.ts +53 -0
- package/dist/components/charts/Funnel.vue.d.ts.map +1 -0
- package/dist/components/charts/Gauge.vue.d.ts +28 -0
- package/dist/components/charts/Gauge.vue.d.ts.map +1 -0
- package/dist/components/charts/LineChart.vue.d.ts +37 -0
- package/dist/components/charts/LineChart.vue.d.ts.map +1 -0
- package/dist/components/charts/RadialBars.vue.d.ts +34 -0
- package/dist/components/charts/RadialBars.vue.d.ts.map +1 -0
- package/dist/components/charts/RankBars.vue.d.ts +27 -0
- package/dist/components/charts/RankBars.vue.d.ts.map +1 -0
- package/dist/components/charts/Sparkline.vue.d.ts +25 -0
- package/dist/components/charts/Sparkline.vue.d.ts.map +1 -0
- package/dist/components/charts/StatCard.vue.d.ts +28 -0
- package/dist/components/charts/StatCard.vue.d.ts.map +1 -0
- package/dist/components/charts/core/data.d.ts +46 -0
- package/dist/components/charts/core/data.d.ts.map +1 -0
- package/dist/components/charts/core/format.d.ts +13 -0
- package/dist/components/charts/core/format.d.ts.map +1 -0
- package/dist/components/charts/core/palette.d.ts +19 -0
- package/dist/components/charts/core/palette.d.ts.map +1 -0
- package/dist/components/charts/core/uid.d.ts +2 -0
- package/dist/components/charts/core/uid.d.ts.map +1 -0
- package/dist/components/charts/core/useChartAnim.d.ts +11 -0
- package/dist/components/charts/core/useChartAnim.d.ts.map +1 -0
- package/dist/components/charts/core/useChartFrame.d.ts +21 -0
- package/dist/components/charts/core/useChartFrame.d.ts.map +1 -0
- package/dist/components/charts/core/useScale.d.ts +16 -0
- package/dist/components/charts/core/useScale.d.ts.map +1 -0
- package/dist/components/charts/index.d.ts +12 -0
- package/dist/components/charts/index.d.ts.map +1 -0
- package/dist/components/form/inputs/RadioGroup.vue.d.ts +1 -0
- package/dist/components/form/inputs/RadioGroup.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/RangeInput.vue.d.ts +13 -4
- package/dist/components/form/inputs/RangeInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/layout/Layout.vue.d.ts +1 -1
- package/dist/components/layout/Layout.vue.d.ts.map +1 -1
- package/dist/components/layout/Panel.vue.d.ts +1 -1
- package/dist/components/layout/Panel.vue.d.ts.map +1 -1
- package/dist/components/layout/Timeline.types.d.ts +9 -0
- package/dist/components/layout/Timeline.types.d.ts.map +1 -0
- package/dist/components/layout/Timeline.vue.d.ts +42 -0
- package/dist/components/layout/Timeline.vue.d.ts.map +1 -0
- package/dist/components/layout/TimelineItem.vue.d.ts +37 -0
- package/dist/components/layout/TimelineItem.vue.d.ts.map +1 -0
- package/dist/components/layout/index.d.ts +3 -0
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/dialog/Dialog.vue.d.ts +4 -0
- package/dist/dialog/Dialog.vue.d.ts.map +1 -1
- package/dist/index.cjs +110 -116
- package/dist/index.mjs +38059 -37009
- package/dist/style.css +1 -1
- package/package.json +2 -1
- package/src/components/AccordionItem.vue +24 -22
- package/src/components/Avatar.vue +49 -11
- package/src/components/Badge.vue +4 -7
- package/src/components/Card.vue +32 -2
- package/src/components/Dropdown.vue +14 -3
- package/src/components/EmptyState.vue +91 -0
- package/src/components/Icon/Icon.vue +118 -25
- package/src/components/Image.vue +70 -3
- package/src/components/ListItem.vue +43 -22
- package/src/components/Menu.vue +10 -2
- package/src/components/charts/BarChart.vue +197 -0
- package/src/components/charts/ChartTooltip.vue +74 -0
- package/src/components/charts/Donut.vue +219 -0
- package/src/components/charts/Funnel.vue +377 -0
- package/src/components/charts/Gauge.vue +90 -0
- package/src/components/charts/LineChart.vue +255 -0
- package/src/components/charts/RadialBars.vue +99 -0
- package/src/components/charts/RankBars.vue +72 -0
- package/src/components/charts/Sparkline.vue +90 -0
- package/src/components/charts/StatCard.vue +84 -0
- package/src/components/charts/core/data.ts +95 -0
- package/src/components/charts/core/format.ts +64 -0
- package/src/components/charts/core/palette.ts +52 -0
- package/src/components/charts/core/uid.ts +6 -0
- package/src/components/charts/core/useChartAnim.ts +60 -0
- package/src/components/charts/core/useChartFrame.ts +49 -0
- package/src/components/charts/core/useScale.ts +39 -0
- package/src/components/charts/index.ts +12 -0
- package/src/components/form/inputs/RadioGroup.vue +2 -1
- package/src/components/form/inputs/RangeInput.vue +43 -15
- package/src/components/form/inputs/SelectInput.vue +1 -19
- package/src/components/index.ts +3 -1
- package/src/components/layout/Timeline.types.ts +9 -0
- package/src/components/layout/Timeline.vue +54 -0
- package/src/components/layout/TimelineItem.vue +93 -0
- package/src/components/layout/index.ts +3 -0
- package/src/dialog/Dialog.vue +29 -1
- package/src/styles/bagel.css +1 -0
- package/src/styles/gradients.css +181 -0
- package/src/styles/layout.css +9 -0
- package/src/styles/theme.css +1 -1
- package/dist/components/analytics/BarChart.vue.d.ts +0 -47
- package/dist/components/analytics/BarChart.vue.d.ts.map +0 -1
- package/dist/components/analytics/KpiCard.vue.d.ts +0 -24
- package/dist/components/analytics/KpiCard.vue.d.ts.map +0 -1
- package/dist/components/analytics/LineChart.vue.d.ts +0 -35
- package/dist/components/analytics/LineChart.vue.d.ts.map +0 -1
- package/dist/components/analytics/PieChart.vue.d.ts +0 -53
- package/dist/components/analytics/PieChart.vue.d.ts.map +0 -1
- package/dist/components/analytics/index.d.ts +0 -5
- package/dist/components/analytics/index.d.ts.map +0 -1
- package/src/components/analytics/BarChart.vue +0 -262
- package/src/components/analytics/KpiCard.vue +0 -84
- package/src/components/analytics/LineChart.vue +0 -357
- package/src/components/analytics/PieChart.vue +0 -544
- package/src/components/analytics/index.ts +0 -4
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
defineOptions({ name: 'BglTimelineItem' })
|
|
3
|
+
import type { IconType, ThemeType } from '@bagelink/vue'
|
|
4
|
+
import { Icon } from '@bagelink/vue'
|
|
5
|
+
import { useSlots } from 'vue'
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* One node in a <Timeline>: a marker (icon dot or plain dot) with a connecting
|
|
9
|
+
* line, a title, optional meta line, and free content via the default slot.
|
|
10
|
+
* - `icon` renders inside the dot; otherwise a small solid dot is shown.
|
|
11
|
+
* - `color` themes the dot (and icon).
|
|
12
|
+
* - `last` removes the connector line (auto-handled by <Timeline>).
|
|
13
|
+
* - Slots: `#marker` (replace the dot), `#meta`, default (body).
|
|
14
|
+
*/
|
|
15
|
+
const {
|
|
16
|
+
title = '',
|
|
17
|
+
meta = '',
|
|
18
|
+
icon,
|
|
19
|
+
color = 'primary',
|
|
20
|
+
last = false,
|
|
21
|
+
} = defineProps<{
|
|
22
|
+
title?: string
|
|
23
|
+
meta?: string
|
|
24
|
+
icon?: IconType
|
|
25
|
+
color?: ThemeType
|
|
26
|
+
last?: boolean
|
|
27
|
+
}>()
|
|
28
|
+
|
|
29
|
+
const slots = useSlots()
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<template>
|
|
33
|
+
<div class="bgl-tl-item flex gap-075" :class="{ 'bgl-tl-item--last': last }">
|
|
34
|
+
<div class="bgl-tl-rail flex-column align-items-center flex-shrink-0">
|
|
35
|
+
<span class="bgl-tl-marker flex-center" :style="{ '--tl-color': `var(--bgl-${color})` }">
|
|
36
|
+
<slot name="marker">
|
|
37
|
+
<Icon v-if="icon" :icon="icon" :size="0.85" />
|
|
38
|
+
<span v-else class="bgl-tl-dot" />
|
|
39
|
+
</slot>
|
|
40
|
+
</span>
|
|
41
|
+
<span v-if="!last" class="bgl-tl-line" />
|
|
42
|
+
</div>
|
|
43
|
+
<div class="bgl-tl-body min-w-0">
|
|
44
|
+
<p v-if="title || slots.title" class="bgl-tl-title m-0"><slot name="title">{{ title }}</slot></p>
|
|
45
|
+
<div v-if="slots.default" class="bgl-tl-content"><slot /></div>
|
|
46
|
+
<p v-if="meta || slots.meta" class="bgl-tl-meta m-0"><slot name="meta">{{ meta }}</slot></p>
|
|
47
|
+
</div>
|
|
48
|
+
</div>
|
|
49
|
+
</template>
|
|
50
|
+
|
|
51
|
+
<style scoped>
|
|
52
|
+
.bgl-tl-item {
|
|
53
|
+
min-height: 1.75rem;
|
|
54
|
+
}
|
|
55
|
+
.bgl-tl-marker {
|
|
56
|
+
width: 1.625rem;
|
|
57
|
+
height: 1.625rem;
|
|
58
|
+
border-radius: 50%;
|
|
59
|
+
background: color-mix(in srgb, var(--tl-color) 15%, transparent);
|
|
60
|
+
color: var(--tl-color);
|
|
61
|
+
}
|
|
62
|
+
.bgl-tl-dot {
|
|
63
|
+
width: 0.5rem;
|
|
64
|
+
height: 0.5rem;
|
|
65
|
+
border-radius: 50%;
|
|
66
|
+
background: var(--tl-color);
|
|
67
|
+
}
|
|
68
|
+
.bgl-tl-line {
|
|
69
|
+
width: 2px;
|
|
70
|
+
flex: 1;
|
|
71
|
+
background: var(--bgl-border-color);
|
|
72
|
+
margin: 2px 0;
|
|
73
|
+
}
|
|
74
|
+
.bgl-tl-body {
|
|
75
|
+
padding-bottom: 1rem;
|
|
76
|
+
}
|
|
77
|
+
.bgl-tl-item--last .bgl-tl-body {
|
|
78
|
+
padding-bottom: 0;
|
|
79
|
+
}
|
|
80
|
+
.bgl-tl-title {
|
|
81
|
+
font-size: 0.875rem;
|
|
82
|
+
line-height: 1.3;
|
|
83
|
+
}
|
|
84
|
+
.bgl-tl-meta {
|
|
85
|
+
font-size: 0.6875rem;
|
|
86
|
+
color: var(--bgl-text-soft, var(--bgl-gray));
|
|
87
|
+
margin-top: 0.125rem;
|
|
88
|
+
}
|
|
89
|
+
.bgl-tl-content {
|
|
90
|
+
font-size: 0.8125rem;
|
|
91
|
+
color: var(--bgl-text-soft, var(--bgl-gray));
|
|
92
|
+
}
|
|
93
|
+
</style>
|
|
@@ -12,5 +12,8 @@ export { default as SidebarMenu } from './SidebarMenu.vue'
|
|
|
12
12
|
export { default as Skeleton } from './Skeleton.vue'
|
|
13
13
|
export { default as TabbedLayout } from './TabbedLayout.vue'
|
|
14
14
|
export { default as Tabs } from './Tabs.vue'
|
|
15
|
+
export { default as Timeline } from './Timeline.vue'
|
|
16
|
+
export type { TimelineEntry } from './Timeline.types'
|
|
17
|
+
export { default as TimelineItem } from './TimelineItem.vue'
|
|
15
18
|
export { default as TabsBody } from './TabsBody.vue'
|
|
16
19
|
export { default as TabsNav } from './TabsNav.vue'
|
package/src/dialog/Dialog.vue
CHANGED
|
@@ -19,6 +19,9 @@ const props = withDefaults(defineProps<{
|
|
|
19
19
|
centerTitle?: boolean
|
|
20
20
|
ellipsisTitle?: boolean
|
|
21
21
|
closePlacement?: 'header-end' | 'header-start' | 'overlay-start' | 'overlay-end' | 'none'
|
|
22
|
+
/** Show a drag-handle grip at the top — the mobile bottom-sheet affordance.
|
|
23
|
+
* Defaults to true when position="bottom". Set false to opt out. */
|
|
24
|
+
grip?: boolean
|
|
22
25
|
}>(), {
|
|
23
26
|
width: 'm',
|
|
24
27
|
position: 'center',
|
|
@@ -27,9 +30,13 @@ const props = withDefaults(defineProps<{
|
|
|
27
30
|
thin: false,
|
|
28
31
|
centerTitle: false,
|
|
29
32
|
ellipsisTitle: false,
|
|
30
|
-
closePlacement: 'header-end'
|
|
33
|
+
closePlacement: 'header-end',
|
|
34
|
+
grip: undefined,
|
|
31
35
|
})
|
|
32
36
|
|
|
37
|
+
// Grip is the native bottom-sheet handle; default it on for bottom-positioned dialogs.
|
|
38
|
+
const showGrip = computed(() => props.grip ?? props.position === 'bottom')
|
|
39
|
+
|
|
33
40
|
const emit = defineEmits<{
|
|
34
41
|
'update:open': [value: boolean]
|
|
35
42
|
'close': []
|
|
@@ -114,6 +121,8 @@ defineExpose({ close })
|
|
|
114
121
|
@cancel="onCancel" @animationend="onAnimationEnd"
|
|
115
122
|
>
|
|
116
123
|
<div class="grid grid-dialog max-height-100-2" @click.stop>
|
|
124
|
+
<!-- Bottom-sheet grip handle -->
|
|
125
|
+
<div v-if="showGrip" class="dialog-grip" aria-hidden="true" />
|
|
117
126
|
<!-- Header -->
|
|
118
127
|
<header
|
|
119
128
|
v-if="title || dismissable" class="flex space-between flex-shrink-0 align-items-start gap-05"
|
|
@@ -261,6 +270,25 @@ dialog.dialog-bottom.is-closing {
|
|
|
261
270
|
animation: slide-out-bottom 0.2s ease-in forwards;
|
|
262
271
|
}
|
|
263
272
|
|
|
273
|
+
/* Bottom sheet: round only the top corners + full-width on mobile. */
|
|
274
|
+
dialog.dialog-bottom {
|
|
275
|
+
border-end-end-radius: 0;
|
|
276
|
+
border-end-start-radius: 0;
|
|
277
|
+
}
|
|
278
|
+
@media (max-width: 910px) {
|
|
279
|
+
dialog.dialog-bottom { width: 100%; max-width: 100%; margin-inline: 0; }
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/* Drag-handle grip for bottom sheets. */
|
|
283
|
+
.dialog-grip {
|
|
284
|
+
width: 40px;
|
|
285
|
+
height: 4px;
|
|
286
|
+
border-radius: 100px;
|
|
287
|
+
background: var(--bgl-border-color);
|
|
288
|
+
margin: 8px auto 4px;
|
|
289
|
+
flex-shrink: 0;
|
|
290
|
+
}
|
|
291
|
+
|
|
264
292
|
/* Keyframes - shared and reusable */
|
|
265
293
|
@keyframes fade-in {
|
|
266
294
|
from {
|
package/src/styles/bagel.css
CHANGED
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
@import "colors.css";
|
|
34
34
|
@import "mobileColors.css";
|
|
35
35
|
@import "appearance.css";
|
|
36
|
+
@import "gradients.css";
|
|
36
37
|
|
|
37
38
|
/* Icon font-family bindings — mirrored from Icon.vue so icons work even when
|
|
38
39
|
that component's injected <style> is not yet present (e.g. Vite dev mode). */
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/* ─────────────────────────────────────────────────────────────────────────────
|
|
2
|
+
* GRADIENTS — a small, memorable system that mirrors the color utilities.
|
|
3
|
+
*
|
|
4
|
+
* <div class="bg-gradient from-purple to-blue">
|
|
5
|
+
* <div class="bg-gradient to-tr from-pink to-orange">
|
|
6
|
+
* <div class="bg-gradient from-primary via-purple to-turquoise">
|
|
7
|
+
* <div class="text-gradient from-blue to-purple">Gorgeous</div>
|
|
8
|
+
* <div class="bg-gradient-brand"> (named presets)
|
|
9
|
+
*
|
|
10
|
+
* How it works:
|
|
11
|
+
* - `from-<tone>` / `via-<tone>` / `to-<tone>` set --bgl-grad-from/via/to.
|
|
12
|
+
* - `bg-gradient` paints them as a linear gradient (default 135°).
|
|
13
|
+
* - direction modifiers (to-t/-b/-l/-r/-tl/-tr/-bl/-br) override the angle.
|
|
14
|
+
* - `gradient-radial` / `gradient-conic` swap the gradient type.
|
|
15
|
+
* - `text-gradient` clips the gradient to text.
|
|
16
|
+
* Tokens resolve through var(--bgl-<tone>) so everything is theme + dark aware.
|
|
17
|
+
* ──────────────────────────────────────────────────────────────────────────── */
|
|
18
|
+
|
|
19
|
+
:root {
|
|
20
|
+
--bgl-grad-angle: 135deg;
|
|
21
|
+
--bgl-grad-from: transparent;
|
|
22
|
+
--bgl-grad-via: ;
|
|
23
|
+
--bgl-grad-to: transparent;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* ── Paint ─────────────────────────────────────────────────────────────────── */
|
|
27
|
+
/* The stop list collapses to 2 stops when --bgl-grad-via is empty, 3 when set. */
|
|
28
|
+
.bg-gradient {
|
|
29
|
+
background-image: linear-gradient(
|
|
30
|
+
var(--bgl-grad-angle),
|
|
31
|
+
var(--bgl-grad-from),
|
|
32
|
+
var(--bgl-grad-via, ) var(--bgl-grad-to)
|
|
33
|
+
) !important;
|
|
34
|
+
}
|
|
35
|
+
.gradient-radial.bg-gradient,
|
|
36
|
+
.bg-gradient.gradient-radial {
|
|
37
|
+
background-image: radial-gradient(
|
|
38
|
+
circle at var(--bgl-grad-pos, center),
|
|
39
|
+
var(--bgl-grad-from),
|
|
40
|
+
var(--bgl-grad-via, ) var(--bgl-grad-to)
|
|
41
|
+
) !important;
|
|
42
|
+
}
|
|
43
|
+
.gradient-conic.bg-gradient,
|
|
44
|
+
.bg-gradient.gradient-conic {
|
|
45
|
+
background-image: conic-gradient(
|
|
46
|
+
from var(--bgl-grad-angle),
|
|
47
|
+
var(--bgl-grad-from),
|
|
48
|
+
var(--bgl-grad-via, ) var(--bgl-grad-to)
|
|
49
|
+
) !important;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* ── Direction modifiers ───────────────────────────────────────────────────── */
|
|
53
|
+
.to-t { --bgl-grad-angle: to top; }
|
|
54
|
+
.to-b { --bgl-grad-angle: to bottom; }
|
|
55
|
+
.to-l { --bgl-grad-angle: to left; }
|
|
56
|
+
.to-r { --bgl-grad-angle: to right; }
|
|
57
|
+
.to-tl { --bgl-grad-angle: to top left; }
|
|
58
|
+
.to-tr { --bgl-grad-angle: to top right; }
|
|
59
|
+
.to-bl { --bgl-grad-angle: to bottom left; }
|
|
60
|
+
.to-br { --bgl-grad-angle: to bottom right; }
|
|
61
|
+
|
|
62
|
+
/* ── Text gradient ─────────────────────────────────────────────────────────── */
|
|
63
|
+
.text-gradient {
|
|
64
|
+
background-image: linear-gradient(
|
|
65
|
+
var(--bgl-grad-angle),
|
|
66
|
+
var(--bgl-grad-from),
|
|
67
|
+
var(--bgl-grad-via, ) var(--bgl-grad-to)
|
|
68
|
+
);
|
|
69
|
+
background-clip: text;
|
|
70
|
+
-webkit-background-clip: text;
|
|
71
|
+
color: transparent;
|
|
72
|
+
-webkit-text-fill-color: transparent;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* ── Stop utilities (generated per tone) ───────────────────────────────────── */
|
|
76
|
+
/* Base tones */
|
|
77
|
+
.from-primary { --bgl-grad-from: var(--bgl-primary); }
|
|
78
|
+
.from-blue { --bgl-grad-from: var(--bgl-blue); }
|
|
79
|
+
.from-green { --bgl-grad-from: var(--bgl-green); }
|
|
80
|
+
.from-red { --bgl-grad-from: var(--bgl-red); }
|
|
81
|
+
.from-yellow { --bgl-grad-from: var(--bgl-yellow); }
|
|
82
|
+
.from-purple { --bgl-grad-from: var(--bgl-purple); }
|
|
83
|
+
.from-brown { --bgl-grad-from: var(--bgl-brown); }
|
|
84
|
+
.from-orange { --bgl-grad-from: var(--bgl-orange); }
|
|
85
|
+
.from-turquoise { --bgl-grad-from: var(--bgl-turquoise); }
|
|
86
|
+
.from-pink { --bgl-grad-from: var(--bgl-pink); }
|
|
87
|
+
.from-gray { --bgl-grad-from: var(--bgl-gray); }
|
|
88
|
+
.from-black { --bgl-grad-from: var(--bgl-black, #000); }
|
|
89
|
+
.from-white { --bgl-grad-from: var(--bgl-white, #fff); }
|
|
90
|
+
.from-bg { --bgl-grad-from: var(--bgl-bg); }
|
|
91
|
+
.from-box { --bgl-grad-from: var(--bgl-box-bg); }
|
|
92
|
+
.from-transparent { --bgl-grad-from: transparent; }
|
|
93
|
+
|
|
94
|
+
.via-primary { --bgl-grad-via: var(--bgl-primary), ; }
|
|
95
|
+
.via-blue { --bgl-grad-via: var(--bgl-blue), ; }
|
|
96
|
+
.via-green { --bgl-grad-via: var(--bgl-green), ; }
|
|
97
|
+
.via-red { --bgl-grad-via: var(--bgl-red), ; }
|
|
98
|
+
.via-yellow { --bgl-grad-via: var(--bgl-yellow), ; }
|
|
99
|
+
.via-purple { --bgl-grad-via: var(--bgl-purple), ; }
|
|
100
|
+
.via-brown { --bgl-grad-via: var(--bgl-brown), ; }
|
|
101
|
+
.via-orange { --bgl-grad-via: var(--bgl-orange), ; }
|
|
102
|
+
.via-turquoise { --bgl-grad-via: var(--bgl-turquoise), ; }
|
|
103
|
+
.via-pink { --bgl-grad-via: var(--bgl-pink), ; }
|
|
104
|
+
.via-gray { --bgl-grad-via: var(--bgl-gray), ; }
|
|
105
|
+
.via-transparent { --bgl-grad-via: transparent, ; }
|
|
106
|
+
|
|
107
|
+
.to-primary { --bgl-grad-to: var(--bgl-primary); }
|
|
108
|
+
.to-blue { --bgl-grad-to: var(--bgl-blue); }
|
|
109
|
+
.to-green { --bgl-grad-to: var(--bgl-green); }
|
|
110
|
+
.to-red { --bgl-grad-to: var(--bgl-red); }
|
|
111
|
+
.to-yellow { --bgl-grad-to: var(--bgl-yellow); }
|
|
112
|
+
.to-purple { --bgl-grad-to: var(--bgl-purple); }
|
|
113
|
+
.to-brown { --bgl-grad-to: var(--bgl-brown); }
|
|
114
|
+
.to-orange { --bgl-grad-to: var(--bgl-orange); }
|
|
115
|
+
.to-turquoise { --bgl-grad-to: var(--bgl-turquoise); }
|
|
116
|
+
.to-pink { --bgl-grad-to: var(--bgl-pink); }
|
|
117
|
+
.to-gray { --bgl-grad-to: var(--bgl-gray); }
|
|
118
|
+
.to-black { --bgl-grad-to: var(--bgl-black, #000); }
|
|
119
|
+
.to-white { --bgl-grad-to: var(--bgl-white, #fff); }
|
|
120
|
+
.to-bg { --bgl-grad-to: var(--bgl-bg); }
|
|
121
|
+
.to-box { --bgl-grad-to: var(--bgl-box-bg); }
|
|
122
|
+
.to-transparent { --bgl-grad-to: transparent; }
|
|
123
|
+
|
|
124
|
+
/* Common tint/light/dark stops (compose with from-/to-) */
|
|
125
|
+
.from-primary-tint { --bgl-grad-from: var(--bgl-primary-tint); }
|
|
126
|
+
.to-primary-tint { --bgl-grad-to: var(--bgl-primary-tint); }
|
|
127
|
+
.from-blue-tint { --bgl-grad-from: var(--bgl-blue-tint); }
|
|
128
|
+
.to-blue-tint { --bgl-grad-to: var(--bgl-blue-tint); }
|
|
129
|
+
|
|
130
|
+
/* ── Named presets — the gorgeous, copy-pasted brand sweeps, tokenized ──────── */
|
|
131
|
+
.bg-gradient-brand {
|
|
132
|
+
background-image: linear-gradient(135deg, var(--bgl-primary), var(--bgl-purple)) !important;
|
|
133
|
+
}
|
|
134
|
+
.bg-gradient-sunset {
|
|
135
|
+
background-image: linear-gradient(135deg, var(--bgl-orange), var(--bgl-pink)) !important;
|
|
136
|
+
}
|
|
137
|
+
.bg-gradient-ocean {
|
|
138
|
+
background-image: linear-gradient(135deg, var(--bgl-blue), var(--bgl-turquoise)) !important;
|
|
139
|
+
}
|
|
140
|
+
.bg-gradient-dusk {
|
|
141
|
+
background-image: linear-gradient(135deg, var(--bgl-purple), var(--bgl-blue)) !important;
|
|
142
|
+
}
|
|
143
|
+
.bg-gradient-citrus {
|
|
144
|
+
background-image: linear-gradient(135deg, var(--bgl-yellow), var(--bgl-orange)) !important;
|
|
145
|
+
}
|
|
146
|
+
/* Subtle surface sweep for cards/panels — dark-mode aware via tokens. */
|
|
147
|
+
.bg-gradient-surface {
|
|
148
|
+
background-image: linear-gradient(160deg,
|
|
149
|
+
color-mix(in srgb, var(--bgl-box-bg) 100%, transparent),
|
|
150
|
+
color-mix(in srgb, var(--bgl-primary) 6%, var(--bgl-box-bg))) !important;
|
|
151
|
+
}
|
|
152
|
+
/* Multi-radial "mesh" hero background built from the brand palette. */
|
|
153
|
+
.bg-gradient-mesh {
|
|
154
|
+
background-color: var(--bgl-box-bg) !important;
|
|
155
|
+
background-image:
|
|
156
|
+
radial-gradient(at 0% 0%, color-mix(in srgb, var(--bgl-primary) 35%, transparent) 0px, transparent 50%),
|
|
157
|
+
radial-gradient(at 100% 0%, color-mix(in srgb, var(--bgl-purple) 30%, transparent) 0px, transparent 50%),
|
|
158
|
+
radial-gradient(at 100% 100%, color-mix(in srgb, var(--bgl-turquoise) 25%, transparent) 0px, transparent 50%),
|
|
159
|
+
radial-gradient(at 0% 100%, color-mix(in srgb, var(--bgl-pink) 25%, transparent) 0px, transparent 50%) !important;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* Soft fade for chart/sparkline fills: tone at top → transparent. Pair with a
|
|
163
|
+
from-<tone> and a direction, e.g. `bg-gradient-fade to-b from-blue`. */
|
|
164
|
+
.bg-gradient-fade {
|
|
165
|
+
--bgl-grad-to: transparent;
|
|
166
|
+
background-image: linear-gradient(var(--bgl-grad-angle),
|
|
167
|
+
color-mix(in srgb, var(--bgl-grad-from) 22%, transparent),
|
|
168
|
+
transparent) !important;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
172
|
+
.bg-gradient-animate {
|
|
173
|
+
background-size: 200% 200% !important;
|
|
174
|
+
animation: bgl-grad-pan 8s ease infinite;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
@keyframes bgl-grad-pan {
|
|
178
|
+
0% { background-position: 0% 50%; }
|
|
179
|
+
50% { background-position: 100% 50%; }
|
|
180
|
+
100% { background-position: 0% 50%; }
|
|
181
|
+
}
|
package/src/styles/layout.css
CHANGED
|
@@ -3949,6 +3949,15 @@
|
|
|
3949
3949
|
flex-shrink: 0;
|
|
3950
3950
|
}
|
|
3951
3951
|
|
|
3952
|
+
.min-w-0 {
|
|
3953
|
+
/* shrink below content size for ellipsis truncation in flex rows */
|
|
3954
|
+
min-width: 0;
|
|
3955
|
+
}
|
|
3956
|
+
|
|
3957
|
+
.min-h-0 {
|
|
3958
|
+
min-height: 0;
|
|
3959
|
+
}
|
|
3960
|
+
|
|
3952
3961
|
.flex-grow-2 {
|
|
3953
3962
|
flex-grow: 2;
|
|
3954
3963
|
}
|
package/src/styles/theme.css
CHANGED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
interface SecondaryValue {
|
|
2
|
-
label: string;
|
|
3
|
-
value: number;
|
|
4
|
-
currency?: boolean;
|
|
5
|
-
prefix?: string;
|
|
6
|
-
suffix?: string;
|
|
7
|
-
}
|
|
8
|
-
interface DataPoint {
|
|
9
|
-
date: string;
|
|
10
|
-
value: number;
|
|
11
|
-
secondaryValues?: SecondaryValue[];
|
|
12
|
-
label?: string;
|
|
13
|
-
}
|
|
14
|
-
interface Props {
|
|
15
|
-
title: string;
|
|
16
|
-
data: DataPoint[];
|
|
17
|
-
icon?: string;
|
|
18
|
-
color?: string;
|
|
19
|
-
percentageChange?: number;
|
|
20
|
-
prefix?: string;
|
|
21
|
-
suffix?: string;
|
|
22
|
-
currency?: boolean;
|
|
23
|
-
maxBars?: number;
|
|
24
|
-
loading?: boolean;
|
|
25
|
-
rtl?: boolean;
|
|
26
|
-
animated?: boolean;
|
|
27
|
-
animationDuration?: number;
|
|
28
|
-
animationStartDelay?: number;
|
|
29
|
-
}
|
|
30
|
-
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
31
|
-
icon: string;
|
|
32
|
-
color: string;
|
|
33
|
-
loading: boolean;
|
|
34
|
-
percentageChange: number;
|
|
35
|
-
prefix: string;
|
|
36
|
-
suffix: string;
|
|
37
|
-
currency: boolean;
|
|
38
|
-
maxBars: number;
|
|
39
|
-
rtl: boolean;
|
|
40
|
-
animated: boolean;
|
|
41
|
-
animationDuration: number;
|
|
42
|
-
animationStartDelay: number;
|
|
43
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
44
|
-
chartRef: HTMLDivElement;
|
|
45
|
-
}, HTMLDivElement>;
|
|
46
|
-
export default _default;
|
|
47
|
-
//# sourceMappingURL=BarChart.vue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BarChart.vue.d.ts","sourceRoot":"","sources":["../../../src/components/analytics/BarChart.vue"],"names":[],"mappings":"AA2QA,UAAU,cAAc;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,UAAU,SAAS;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,cAAc,EAAE,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,KAAK;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,SAAS,EAAE,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC5B;;UAZO,MAAM;WACL,MAAM;aAMJ,OAAO;sBALE,MAAM;YAChB,MAAM;YACN,MAAM;cACJ,OAAO;aACR,MAAM;SAEV,OAAO;cACF,OAAO;uBACE,MAAM;yBACJ,MAAM;;;;AAsT7B,wBASG"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
interface Props {
|
|
2
|
-
title: string;
|
|
3
|
-
value: number | string;
|
|
4
|
-
icon?: string;
|
|
5
|
-
color?: string;
|
|
6
|
-
percentageChange?: number;
|
|
7
|
-
prefix?: string;
|
|
8
|
-
suffix?: string;
|
|
9
|
-
currency?: Currency;
|
|
10
|
-
loading?: boolean;
|
|
11
|
-
subtitle?: string;
|
|
12
|
-
}
|
|
13
|
-
type Currency = 'ILS' | 'USD' | 'EUR';
|
|
14
|
-
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
15
|
-
icon: string;
|
|
16
|
-
color: string;
|
|
17
|
-
subtitle: string;
|
|
18
|
-
loading: boolean;
|
|
19
|
-
percentageChange: number;
|
|
20
|
-
prefix: string;
|
|
21
|
-
suffix: string;
|
|
22
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
23
|
-
export default _default;
|
|
24
|
-
//# sourceMappingURL=KpiCard.vue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"KpiCard.vue.d.ts","sourceRoot":"","sources":["../../../src/components/analytics/KpiCard.vue"],"names":[],"mappings":"AAyFA,UAAU,KAAK;IACd,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,KAAK,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;;UAV7B,MAAM;WACL,MAAM;cAMH,MAAM;aADP,OAAO;sBAJE,MAAM;YAChB,MAAM;YACN,MAAM;;AAmLhB,wBAQG"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
interface DataPoint {
|
|
2
|
-
date: string;
|
|
3
|
-
value: number;
|
|
4
|
-
label?: string;
|
|
5
|
-
}
|
|
6
|
-
interface Props {
|
|
7
|
-
data: DataPoint[];
|
|
8
|
-
title?: string;
|
|
9
|
-
icon?: string;
|
|
10
|
-
color?: string;
|
|
11
|
-
height?: number;
|
|
12
|
-
showPoints?: boolean;
|
|
13
|
-
currency?: boolean;
|
|
14
|
-
animated?: boolean;
|
|
15
|
-
animationDuration?: number;
|
|
16
|
-
animationStartDelay?: number;
|
|
17
|
-
percentageChange?: number;
|
|
18
|
-
}
|
|
19
|
-
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
20
|
-
title: string;
|
|
21
|
-
icon: string;
|
|
22
|
-
color: string;
|
|
23
|
-
height: number;
|
|
24
|
-
percentageChange: number;
|
|
25
|
-
currency: boolean;
|
|
26
|
-
animated: boolean;
|
|
27
|
-
animationDuration: number;
|
|
28
|
-
animationStartDelay: number;
|
|
29
|
-
showPoints: boolean;
|
|
30
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
31
|
-
chartRef: HTMLDivElement;
|
|
32
|
-
svgRef: SVGSVGElement;
|
|
33
|
-
}, HTMLDivElement>;
|
|
34
|
-
export default _default;
|
|
35
|
-
//# sourceMappingURL=LineChart.vue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart.vue.d.ts","sourceRoot":"","sources":["../../../src/components/analytics/LineChart.vue"],"names":[],"mappings":"AA0WA,UAAU,SAAS;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,KAAK;IACd,IAAI,EAAE,SAAS,EAAE,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACzB;;WAVQ,MAAM;UACP,MAAM;WACL,MAAM;YACL,MAAM;sBAMI,MAAM;cAJd,OAAO;cACP,OAAO;uBACE,MAAM;yBACJ,MAAM;gBAJf,OAAO;;;;;AAobrB,wBASG"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
interface PieData {
|
|
2
|
-
label: string;
|
|
3
|
-
value: number;
|
|
4
|
-
color?: string;
|
|
5
|
-
}
|
|
6
|
-
interface Props {
|
|
7
|
-
data: PieData[];
|
|
8
|
-
title?: string;
|
|
9
|
-
icon?: string;
|
|
10
|
-
color?: string;
|
|
11
|
-
colors?: string[];
|
|
12
|
-
size?: number;
|
|
13
|
-
showLegend?: boolean;
|
|
14
|
-
donut?: boolean;
|
|
15
|
-
thickness?: number;
|
|
16
|
-
centerLabel?: string;
|
|
17
|
-
animated?: boolean;
|
|
18
|
-
animationDuration?: number;
|
|
19
|
-
animationDelay?: number;
|
|
20
|
-
animationStartDelay?: number;
|
|
21
|
-
centerValue?: number;
|
|
22
|
-
showCenterTotal?: boolean;
|
|
23
|
-
percentageChange?: number;
|
|
24
|
-
showLabelsOnChart?: boolean;
|
|
25
|
-
showConnectorLines?: boolean;
|
|
26
|
-
labelColor?: string;
|
|
27
|
-
}
|
|
28
|
-
declare function restartAnimation(): void;
|
|
29
|
-
declare const _default: import('vue').DefineComponent<Props, {
|
|
30
|
-
restartAnimation: typeof restartAnimation;
|
|
31
|
-
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
32
|
-
title: string;
|
|
33
|
-
icon: string;
|
|
34
|
-
size: number;
|
|
35
|
-
color: string;
|
|
36
|
-
labelColor: string;
|
|
37
|
-
thickness: number;
|
|
38
|
-
percentageChange: number;
|
|
39
|
-
animated: boolean;
|
|
40
|
-
animationDuration: number;
|
|
41
|
-
animationStartDelay: number;
|
|
42
|
-
showLegend: boolean;
|
|
43
|
-
donut: boolean;
|
|
44
|
-
centerLabel: string;
|
|
45
|
-
animationDelay: number;
|
|
46
|
-
showCenterTotal: boolean;
|
|
47
|
-
showLabelsOnChart: boolean;
|
|
48
|
-
showConnectorLines: boolean;
|
|
49
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
50
|
-
chartRef: HTMLDivElement;
|
|
51
|
-
}, HTMLDivElement>;
|
|
52
|
-
export default _default;
|
|
53
|
-
//# sourceMappingURL=PieChart.vue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PieChart.vue.d.ts","sourceRoot":"","sources":["../../../src/components/analytics/PieChart.vue"],"names":[],"mappings":"AAqiBA,UAAU,OAAO;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAED,UAAU,KAAK;IACd,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAoID,iBAAS,gBAAgB,SAIxB;;;;WA3JQ,MAAM;UACP,MAAM;UAGN,MAAM;WAFL,MAAM;gBAgBD,MAAM;eAXP,MAAM;sBAQC,MAAM;cANd,OAAO;uBACE,MAAM;yBAEJ,MAAM;gBAPf,OAAO;WACZ,OAAO;iBAED,MAAM;oBAGH,MAAM;qBAGL,OAAO;uBAEL,OAAO;wBACN,OAAO;;;;AAsnB7B,wBAUG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/analytics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAA"}
|