@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.
Files changed (54) hide show
  1. package/dist/components/Avatar.vue.d.ts +5 -1
  2. package/dist/components/Avatar.vue.d.ts.map +1 -1
  3. package/dist/components/Badge.vue.d.ts +6 -1
  4. package/dist/components/Badge.vue.d.ts.map +1 -1
  5. package/dist/components/Dropdown.vue.d.ts.map +1 -1
  6. package/dist/components/ListItem.vue.d.ts +12 -0
  7. package/dist/components/ListItem.vue.d.ts.map +1 -1
  8. package/dist/components/Progress.vue.d.ts +38 -0
  9. package/dist/components/Progress.vue.d.ts.map +1 -0
  10. package/dist/components/Swiper.vue.d.ts.map +1 -1
  11. package/dist/components/index.d.ts +1 -0
  12. package/dist/components/index.d.ts.map +1 -1
  13. package/dist/components/layout/AppSidebar.vue.d.ts +1 -0
  14. package/dist/components/layout/AppSidebar.vue.d.ts.map +1 -1
  15. package/dist/components/layout/Divider.vue.d.ts +31 -0
  16. package/dist/components/layout/Divider.vue.d.ts.map +1 -0
  17. package/dist/components/layout/Layout.vue.d.ts.map +1 -1
  18. package/dist/components/layout/SidebarNavItem.vue.d.ts +20 -0
  19. package/dist/components/layout/SidebarNavItem.vue.d.ts.map +1 -0
  20. package/dist/components/layout/index.d.ts +1 -0
  21. package/dist/components/layout/index.d.ts.map +1 -1
  22. package/dist/directives/index.d.ts +2 -0
  23. package/dist/directives/index.d.ts.map +1 -1
  24. package/dist/directives/reveal.d.ts +29 -0
  25. package/dist/directives/reveal.d.ts.map +1 -0
  26. package/dist/index.cjs +37 -37
  27. package/dist/index.mjs +8104 -7796
  28. package/dist/plugins/bagel.d.ts.map +1 -1
  29. package/dist/style.css +1 -1
  30. package/dist/utils/index.d.ts +1 -1
  31. package/dist/utils/index.d.ts.map +1 -1
  32. package/package.json +1 -1
  33. package/src/components/Avatar.vue +20 -4
  34. package/src/components/Badge.vue +32 -2
  35. package/src/components/Dropdown.vue +7 -1
  36. package/src/components/ListItem.vue +151 -76
  37. package/src/components/Progress.vue +80 -0
  38. package/src/components/Swiper.vue +19 -1
  39. package/src/components/index.ts +1 -0
  40. package/src/components/layout/AppSidebar.vue +12 -15
  41. package/src/components/layout/Divider.vue +57 -0
  42. package/src/components/layout/Layout.vue +17 -4
  43. package/src/components/layout/SidebarNavItem.vue +227 -0
  44. package/src/components/layout/index.ts +1 -0
  45. package/src/directives/index.ts +2 -0
  46. package/src/directives/reveal.ts +78 -0
  47. package/src/plugins/bagel.ts +2 -1
  48. package/src/styles/appearance.css +11 -0
  49. package/src/styles/bagel.css +1 -0
  50. package/src/styles/dark.css +107 -2
  51. package/src/styles/layout.css +65 -13
  52. package/src/styles/motion.css +91 -0
  53. package/src/styles/text.css +38 -6
  54. package/src/utils/index.ts +1 -1
@@ -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
+ }
@@ -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
- .m_txt025,
1792
- .m_txt-025 {
1808
+ .m_txt025rem,
1809
+ .m_txt-025rem {
1793
1810
  font-size: 0.25rem;
1794
1811
  }
1795
1812
 
1796
- .m_txt05,
1797
- .m_txt-05 {
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
- .m_txt075,
1802
- .m_txt-075 {
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;
@@ -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?:\/\/|^\/\//