@bagelink/vue 1.15.59 → 1.15.63
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/Avatar.vue.d.ts +5 -1
- package/dist/components/Avatar.vue.d.ts.map +1 -1
- package/dist/components/Badge.vue.d.ts +6 -1
- package/dist/components/Badge.vue.d.ts.map +1 -1
- package/dist/components/Dropdown.vue.d.ts.map +1 -1
- package/dist/components/ListItem.vue.d.ts +12 -0
- package/dist/components/ListItem.vue.d.ts.map +1 -1
- package/dist/components/Progress.vue.d.ts +38 -0
- package/dist/components/Progress.vue.d.ts.map +1 -0
- package/dist/components/Swiper.vue.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.vue.d.ts +1 -0
- package/dist/components/layout/AppSidebar.vue.d.ts.map +1 -1
- package/dist/components/layout/Divider.vue.d.ts +31 -0
- package/dist/components/layout/Divider.vue.d.ts.map +1 -0
- package/dist/components/layout/Layout.vue.d.ts.map +1 -1
- package/dist/components/layout/SidebarNavItem.vue.d.ts +20 -0
- package/dist/components/layout/SidebarNavItem.vue.d.ts.map +1 -0
- package/dist/components/layout/index.d.ts +1 -0
- package/dist/components/layout/index.d.ts.map +1 -1
- package/dist/directives/index.d.ts +2 -0
- package/dist/directives/index.d.ts.map +1 -1
- package/dist/directives/reveal.d.ts +29 -0
- package/dist/directives/reveal.d.ts.map +1 -0
- package/dist/index.cjs +37 -37
- package/dist/index.mjs +8104 -7796
- package/dist/plugins/bagel.d.ts.map +1 -1
- package/dist/style.css +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Avatar.vue +20 -4
- package/src/components/Badge.vue +32 -2
- package/src/components/Dropdown.vue +7 -1
- package/src/components/ListItem.vue +151 -76
- package/src/components/Progress.vue +80 -0
- package/src/components/Swiper.vue +19 -1
- package/src/components/index.ts +1 -0
- package/src/components/layout/AppSidebar.vue +12 -15
- package/src/components/layout/Divider.vue +57 -0
- package/src/components/layout/Layout.vue +17 -4
- package/src/components/layout/SidebarNavItem.vue +227 -0
- package/src/components/layout/index.ts +1 -0
- package/src/directives/index.ts +2 -0
- package/src/directives/reveal.ts +78 -0
- package/src/plugins/bagel.ts +2 -1
- package/src/styles/appearance.css +11 -0
- package/src/styles/bagel.css +1 -0
- package/src/styles/dark.css +107 -2
- package/src/styles/layout.css +65 -13
- package/src/styles/motion.css +91 -0
- package/src/styles/text.css +38 -6
- package/src/utils/index.ts +1 -1
package/src/styles/layout.css
CHANGED
|
@@ -15,6 +15,58 @@
|
|
|
15
15
|
border-radius: 1000px;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
/* SQUARE — equal width+height in one class. Collapses the extremely common
|
|
19
|
+
* `width:N; height:N` (often + place-items:center + radius) chip/control/avatar
|
|
20
|
+
* pattern. Pair with `.grid.place-items-center` (or `.flex-center`) + `.round`
|
|
21
|
+
* / `.radius-*` as needed. Values in px to match icon/control sizing. */
|
|
22
|
+
.square-8 { width: 8px; height: 8px; }
|
|
23
|
+
.square-10 { width: 10px; height: 10px; }
|
|
24
|
+
.square-12 { width: 12px; height: 12px; }
|
|
25
|
+
.square-16 { width: 16px; height: 16px; }
|
|
26
|
+
.square-20 { width: 20px; height: 20px; }
|
|
27
|
+
.square-24 { width: 24px; height: 24px; }
|
|
28
|
+
.square-28 { width: 28px; height: 28px; }
|
|
29
|
+
.square-30 { width: 30px; height: 30px; }
|
|
30
|
+
.square-32 { width: 32px; height: 32px; }
|
|
31
|
+
.square-34 { width: 34px; height: 34px; }
|
|
32
|
+
.square-36 { width: 36px; height: 36px; }
|
|
33
|
+
.square-38 { width: 38px; height: 38px; }
|
|
34
|
+
.square-40 { width: 40px; height: 40px; }
|
|
35
|
+
.square-44 { width: 44px; height: 44px; }
|
|
36
|
+
.square-48 { width: 48px; height: 48px; }
|
|
37
|
+
.square-56 { width: 56px; height: 56px; }
|
|
38
|
+
.square-64 { width: 64px; height: 64px; }
|
|
39
|
+
.square-80 { width: 80px; height: 80px; }
|
|
40
|
+
.square-96 { width: 96px; height: 96px; }
|
|
41
|
+
|
|
42
|
+
/* FLEX-CENTER — flex + center both axes. The other half of the chip pattern. */
|
|
43
|
+
.flex-center {
|
|
44
|
+
display: flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
justify-content: center;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* ABSOLUTE CENTERING — for an absolutely-positioned child, center on one or
|
|
50
|
+
* both axes. Replaces the repeated `left:50%; transform:translateX(-50%)`. */
|
|
51
|
+
.center-x { inset-inline-start: 50%; transform: translateX(-50%); }
|
|
52
|
+
.center-y { top: 50%; transform: translateY(-50%); }
|
|
53
|
+
.center-xy { inset-inline-start: 50%; top: 50%; transform: translate(-50%, -50%); }
|
|
54
|
+
|
|
55
|
+
/* DIVIDERS — hairline separators in the border color. `.divider` is a full-width
|
|
56
|
+
* horizontal rule; `.divider-v` is a short vertical rule for inline groups
|
|
57
|
+
* (toolbars, pill search bars, breadcrumbs). Height of the vertical one tracks
|
|
58
|
+
* the line via --divider-size (default 1.25rem). */
|
|
59
|
+
.divider { height: 1px; width: 100%; background: var(--bgl-border-color); border: none; }
|
|
60
|
+
.divider-v { width: 1px; height: var(--divider-size, 1.25rem); background: var(--bgl-border-color); flex-shrink: 0; }
|
|
61
|
+
|
|
62
|
+
/* ABSOLUTE-FILL — position:absolute pinned to all edges. Collapses the very
|
|
63
|
+
* common `position:absolute; inset:0` overlay/background pattern. */
|
|
64
|
+
.absolute-fill { position: absolute; inset: 0; }
|
|
65
|
+
|
|
66
|
+
/* TABULAR-NUMS — fixed-width figures so numbers line up in columns and don't
|
|
67
|
+
* jitter when animating counters/stats. */
|
|
68
|
+
.tabular-nums { font-variant-numeric: tabular-nums; }
|
|
69
|
+
|
|
18
70
|
.rounded,
|
|
19
71
|
.radius,
|
|
20
72
|
.radius-1 {
|
|
@@ -272,7 +324,7 @@
|
|
|
272
324
|
}
|
|
273
325
|
|
|
274
326
|
.grid-2-col {
|
|
275
|
-
grid-template-columns: 1fr 1fr;
|
|
327
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
|
276
328
|
}
|
|
277
329
|
|
|
278
330
|
.justify-content-between {
|
|
@@ -6998,62 +7050,62 @@
|
|
|
6998
7050
|
}
|
|
6999
7051
|
|
|
7000
7052
|
.grid-wrap-1 {
|
|
7001
|
-
grid-template-columns: repeat(1, 1fr);
|
|
7053
|
+
grid-template-columns: repeat(1, minmax(0, 1fr));
|
|
7002
7054
|
height: max-content;
|
|
7003
7055
|
}
|
|
7004
7056
|
|
|
7005
7057
|
.grid-wrap-2 {
|
|
7006
|
-
grid-template-columns: repeat(2, 1fr);
|
|
7058
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
7007
7059
|
height: max-content;
|
|
7008
7060
|
}
|
|
7009
7061
|
|
|
7010
7062
|
.grid-wrap-3 {
|
|
7011
|
-
grid-template-columns: repeat(3, 1fr);
|
|
7063
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
7012
7064
|
height: max-content;
|
|
7013
7065
|
}
|
|
7014
7066
|
|
|
7015
7067
|
.grid-wrap-4 {
|
|
7016
|
-
grid-template-columns: repeat(4, 1fr);
|
|
7068
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
7017
7069
|
height: max-content;
|
|
7018
7070
|
}
|
|
7019
7071
|
|
|
7020
7072
|
.grid-wrap-5 {
|
|
7021
|
-
grid-template-columns: repeat(5, 1fr);
|
|
7073
|
+
grid-template-columns: repeat(5, minmax(0, 1fr));
|
|
7022
7074
|
height: max-content;
|
|
7023
7075
|
}
|
|
7024
7076
|
|
|
7025
7077
|
.grid-wrap-6 {
|
|
7026
|
-
grid-template-columns: repeat(6, 1fr);
|
|
7078
|
+
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
7027
7079
|
height: max-content;
|
|
7028
7080
|
}
|
|
7029
7081
|
|
|
7030
7082
|
.grid-wrap-7 {
|
|
7031
|
-
grid-template-columns: repeat(7, 1fr);
|
|
7083
|
+
grid-template-columns: repeat(7, minmax(0, 1fr));
|
|
7032
7084
|
height: max-content;
|
|
7033
7085
|
}
|
|
7034
7086
|
|
|
7035
7087
|
.grid-wrap-8 {
|
|
7036
|
-
grid-template-columns: repeat(8, 1fr);
|
|
7088
|
+
grid-template-columns: repeat(8, minmax(0, 1fr));
|
|
7037
7089
|
height: max-content;
|
|
7038
7090
|
}
|
|
7039
7091
|
|
|
7040
7092
|
.grid-wrap-9 {
|
|
7041
|
-
grid-template-columns: repeat(9, 1fr);
|
|
7093
|
+
grid-template-columns: repeat(9, minmax(0, 1fr));
|
|
7042
7094
|
height: max-content;
|
|
7043
7095
|
}
|
|
7044
7096
|
|
|
7045
7097
|
.grid-wrap-10 {
|
|
7046
|
-
grid-template-columns: repeat(10, 1fr);
|
|
7098
|
+
grid-template-columns: repeat(10, minmax(0, 1fr));
|
|
7047
7099
|
height: max-content;
|
|
7048
7100
|
}
|
|
7049
7101
|
|
|
7050
7102
|
.grid-wrap-11 {
|
|
7051
|
-
grid-template-columns: repeat(11, 1fr);
|
|
7103
|
+
grid-template-columns: repeat(11, minmax(0, 1fr));
|
|
7052
7104
|
height: max-content;
|
|
7053
7105
|
}
|
|
7054
7106
|
|
|
7055
7107
|
.grid-wrap-12 {
|
|
7056
|
-
grid-template-columns: repeat(12, 1fr);
|
|
7108
|
+
grid-template-columns: repeat(12, minmax(0, 1fr));
|
|
7057
7109
|
height: max-content;
|
|
7058
7110
|
}
|
|
7059
7111
|
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/* ============================================================================
|
|
2
|
+
* MOTION — scroll reveals + hover/entrance utilities.
|
|
3
|
+
*
|
|
4
|
+
* Pairs with the `v-reveal` directive (directives/reveal.ts). The directive
|
|
5
|
+
* adds `.bgl-reveal` (hidden + pre-transformed) and toggles `.bgl-reveal-in`
|
|
6
|
+
* when the element scrolls into view. Direction comes from [data-reveal-dir],
|
|
7
|
+
* stagger from --bgl-reveal-delay. Everything is opt-in and respects
|
|
8
|
+
* prefers-reduced-motion.
|
|
9
|
+
* ========================================================================== */
|
|
10
|
+
|
|
11
|
+
:root {
|
|
12
|
+
--bgl-reveal-distance: 24px;
|
|
13
|
+
--bgl-reveal-duration: 0.6s;
|
|
14
|
+
--bgl-reveal-ease: cubic-bezier(0.16, 1, 0.3, 1); /* gentle "out-expo" */
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Hidden initial state — set by v-reveal on mount. We animate the entrance with
|
|
18
|
+
* a keyframe (not a `transition`) so it can't be clobbered when the element ALSO
|
|
19
|
+
* carries a `transition`-based utility like `.hover-lift` (both would otherwise
|
|
20
|
+
* declare `transition` and the later one wins, silently dropping the opacity
|
|
21
|
+
* fade — which looked "abrupt"). Keyframes are independent of `transition`. */
|
|
22
|
+
.bgl-reveal {
|
|
23
|
+
opacity: 0;
|
|
24
|
+
/* per-direction starting offset, consumed by the keyframes via custom prop */
|
|
25
|
+
--bgl-reveal-x: 0px;
|
|
26
|
+
--bgl-reveal-y: var(--bgl-reveal-distance);
|
|
27
|
+
transform: translate3d(var(--bgl-reveal-x), var(--bgl-reveal-y), 0);
|
|
28
|
+
will-change: opacity, transform;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.bgl-reveal[data-reveal-dir="down"] { --bgl-reveal-y: calc(-1 * var(--bgl-reveal-distance)); }
|
|
32
|
+
.bgl-reveal[data-reveal-dir="left"] { --bgl-reveal-x: var(--bgl-reveal-distance); --bgl-reveal-y: 0px; }
|
|
33
|
+
.bgl-reveal[data-reveal-dir="right"] { --bgl-reveal-x: calc(-1 * var(--bgl-reveal-distance)); --bgl-reveal-y: 0px; }
|
|
34
|
+
|
|
35
|
+
/* Revealed: run a fade+move keyframe, then settle at the resting state (the
|
|
36
|
+
declared opacity/transform below) so a `transition` utility like .hover-lift
|
|
37
|
+
can still drive :hover transforms afterwards. NOTE: no `both`/`forwards`
|
|
38
|
+
fill-mode on purpose — a persisted fill would lock `transform` and defeat
|
|
39
|
+
hover-lift. `backwards` only holds the FROM frame during the start delay. */
|
|
40
|
+
.bgl-reveal-in {
|
|
41
|
+
opacity: 1;
|
|
42
|
+
transform: none;
|
|
43
|
+
animation: bgl-reveal-enter var(--bgl-reveal-duration) var(--bgl-reveal-ease) var(--bgl-reveal-delay, 0ms) backwards;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@keyframes bgl-reveal-enter {
|
|
47
|
+
from { opacity: 0; transform: translate3d(var(--bgl-reveal-x), var(--bgl-reveal-y), 0); }
|
|
48
|
+
to { opacity: 1; transform: none; }
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/* ---- Hover lift: standardize the "card floats up on hover" pattern. -------- */
|
|
52
|
+
.hover-lift {
|
|
53
|
+
transition: transform 0.2s var(--bgl-reveal-ease), box-shadow 0.2s var(--bgl-reveal-ease);
|
|
54
|
+
}
|
|
55
|
+
.hover-lift:hover {
|
|
56
|
+
transform: translateY(-4px);
|
|
57
|
+
box-shadow: 0 12px 28px -8px rgba(0, 0, 0, 0.18);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Hover grow — for thumbnails/media inside an overflow-hidden frame. */
|
|
61
|
+
.hover-grow { transition: transform 0.4s var(--bgl-reveal-ease); }
|
|
62
|
+
.hover-grow:hover { transform: scale(1.04); }
|
|
63
|
+
|
|
64
|
+
/* ---- One-shot entrance animations (no scroll trigger needed). ------------- */
|
|
65
|
+
@keyframes bgl-fade-in { from { opacity: 0; } to { opacity: 1; } }
|
|
66
|
+
@keyframes bgl-rise-in { from { opacity: 0; transform: translateY(var(--bgl-reveal-distance)); } to { opacity: 1; transform: none; } }
|
|
67
|
+
@keyframes bgl-pop-in { 0% { opacity: 0; transform: scale(0.92); } 100% { opacity: 1; transform: scale(1); } }
|
|
68
|
+
@keyframes bgl-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
|
|
69
|
+
|
|
70
|
+
.animate-fade-in { animation: bgl-fade-in var(--bgl-reveal-duration) var(--bgl-reveal-ease) both; }
|
|
71
|
+
.animate-rise-in { animation: bgl-rise-in var(--bgl-reveal-duration) var(--bgl-reveal-ease) both; }
|
|
72
|
+
.animate-pop-in { animation: bgl-pop-in 0.4s var(--bgl-reveal-ease) both; }
|
|
73
|
+
.animate-float { animation: bgl-float 4s ease-in-out infinite; }
|
|
74
|
+
|
|
75
|
+
/* Respect user motion preferences — kill all of the above. */
|
|
76
|
+
@media (prefers-reduced-motion: reduce) {
|
|
77
|
+
.bgl-reveal,
|
|
78
|
+
.bgl-reveal-in,
|
|
79
|
+
.bgl-reveal[data-reveal-dir],
|
|
80
|
+
.hover-lift,
|
|
81
|
+
.hover-grow,
|
|
82
|
+
.animate-fade-in,
|
|
83
|
+
.animate-rise-in,
|
|
84
|
+
.animate-pop-in,
|
|
85
|
+
.animate-float {
|
|
86
|
+
opacity: 1 !important;
|
|
87
|
+
transform: none !important;
|
|
88
|
+
animation: none !important;
|
|
89
|
+
transition: none !important;
|
|
90
|
+
}
|
|
91
|
+
}
|
package/src/styles/text.css
CHANGED
|
@@ -217,21 +217,38 @@
|
|
|
217
217
|
font-size: 0.25rem;
|
|
218
218
|
}
|
|
219
219
|
|
|
220
|
+
.txt0375rem,
|
|
221
|
+
.txt-0375rem {
|
|
222
|
+
font-size: 0.375rem;
|
|
223
|
+
}
|
|
224
|
+
|
|
220
225
|
.txt05rem,
|
|
221
226
|
.txt-05rem {
|
|
222
227
|
font-size: 0.5rem;
|
|
223
228
|
}
|
|
224
229
|
|
|
230
|
+
.txt0625rem,
|
|
231
|
+
.txt-0625rem {
|
|
232
|
+
font-size: 0.625rem;
|
|
233
|
+
}
|
|
234
|
+
|
|
225
235
|
.txt075rem,
|
|
226
236
|
.txt-075rem {
|
|
227
237
|
font-size: 0.75rem;
|
|
228
238
|
}
|
|
229
239
|
|
|
240
|
+
.txt0875rem,
|
|
241
|
+
.txt-0875rem {
|
|
242
|
+
font-size: 0.875rem;
|
|
243
|
+
}
|
|
244
|
+
|
|
230
245
|
.txt1rem,
|
|
231
246
|
.txt-1rem {
|
|
232
247
|
font-size: 1rem;
|
|
233
248
|
}
|
|
234
249
|
|
|
250
|
+
|
|
251
|
+
|
|
235
252
|
.txt1-25rem,
|
|
236
253
|
.txt-1-25rem {
|
|
237
254
|
font-size: 1.25rem;
|
|
@@ -1788,21 +1805,36 @@
|
|
|
1788
1805
|
font-size: 9px;
|
|
1789
1806
|
}
|
|
1790
1807
|
|
|
1791
|
-
.
|
|
1792
|
-
.m_txt-
|
|
1808
|
+
.m_txt025rem,
|
|
1809
|
+
.m_txt-025rem {
|
|
1793
1810
|
font-size: 0.25rem;
|
|
1794
1811
|
}
|
|
1795
1812
|
|
|
1796
|
-
.
|
|
1797
|
-
.m_txt-
|
|
1813
|
+
.m_txt0375rem,
|
|
1814
|
+
.m_txt-0375rem {
|
|
1815
|
+
font-size: 0.375rem;
|
|
1816
|
+
}
|
|
1817
|
+
|
|
1818
|
+
.m_txt05rem,
|
|
1819
|
+
.m_txt-05rem {
|
|
1798
1820
|
font-size: 0.5rem;
|
|
1799
1821
|
}
|
|
1800
1822
|
|
|
1801
|
-
.
|
|
1802
|
-
.m_txt-
|
|
1823
|
+
.m_txt0625rem,
|
|
1824
|
+
.m_txt-0625rem {
|
|
1825
|
+
font-size: 0.625rem;
|
|
1826
|
+
}
|
|
1827
|
+
|
|
1828
|
+
.m_txt075rem,
|
|
1829
|
+
.m_txt-075rem {
|
|
1803
1830
|
font-size: 0.75rem;
|
|
1804
1831
|
}
|
|
1805
1832
|
|
|
1833
|
+
.m_txt0875rem,
|
|
1834
|
+
.m_txt-0875rem {
|
|
1835
|
+
font-size: 0.875rem;
|
|
1836
|
+
}
|
|
1837
|
+
|
|
1806
1838
|
.m_txt1rem,
|
|
1807
1839
|
.m_txt-1rem {
|
|
1808
1840
|
font-size: 1rem;
|
package/src/utils/index.ts
CHANGED
|
@@ -254,7 +254,7 @@ export type { NormalizedOption } from './options'
|
|
|
254
254
|
export { getOptionIcon, getOptionLabel, getOptionValue, normalizeOption } from './options'
|
|
255
255
|
|
|
256
256
|
export type { ComparisonOperator, FilterCondition, LogicalOperator, QueryConditions, QueryFilter } from './queryFilter'
|
|
257
|
-
export { anyOf, parseQuery, queryFilter, range, search } from './queryFilter'
|
|
257
|
+
export { anyOf, buildQuery, evaluateQuery, parseQuery, queryFilter, range, search } from './queryFilter'
|
|
258
258
|
export type { ShowdownConverter, ShowdownOptions } from './showdown'
|
|
259
259
|
|
|
260
260
|
const URL_REGEX = /^https?:\/\/|^\/\//
|