@bagelink/vue 1.8.73 → 1.8.78

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "1.8.73",
4
+ "version": "1.8.78",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Bagel Studio",
@@ -3,6 +3,7 @@ import type { IconType, ThemeType } from '@bagelink/vue'
3
3
  import type { SetupContext } from 'vue'
4
4
  import { Btn, Icon } from '@bagelink/vue'
5
5
  import { computed, useSlots } from 'vue'
6
+ import '../styles/base-colors.css'
6
7
 
7
8
  interface BtnProp {
8
9
  icon?: IconType
@@ -27,6 +28,7 @@ const props = defineProps<{
27
28
  btnEnd?: BtnProp
28
29
  large?: boolean
29
30
  small?: boolean
31
+ uppercase?: boolean
30
32
  }>()
31
33
 
32
34
  const slots: SetupContext['slots'] = useSlots()
@@ -38,273 +40,49 @@ const computedTheme = computed(
38
40
  },
39
41
  )
40
42
 
41
- const computedDefaultColors = computed(
42
- () => ({
43
- backgroundColor: 'var(--bgl-primary)',
44
- color: props.flat ? 'var(--bgl-text-color)' : 'var(--bgl-light-text)',
45
- }),
46
- )
47
-
48
- function getThemeColors(theme: Partial<typeof computedDefaultColors.value>): typeof computedDefaultColors.value {
49
- return {
50
- ...computedDefaultColors.value,
51
- ...theme,
52
- color: props.flat
53
- ? theme.backgroundColor as string
54
- : theme.color as string,
43
+ const computedPairClass = computed(() => {
44
+ const theme = computedTheme.value
45
+ if (!theme) return 'pair-primary'
46
+ return `pair-${theme}`
47
+ })
48
+
49
+ const computedClasses = computed(() => {
50
+ const classes: Record<string, boolean> = {
51
+ 'bgl_pill': !props.icon || !!slots.default || !!props.value,
52
+ 'round': props.round,
53
+ 'bgl_flatPill': props.flat,
54
+ 'bgl_pill-border': props.border || props.outline,
55
+ 'pillLarge': props.large,
56
+ 'pillSmall': props.small,
55
57
  }
56
- }
57
-
58
- const themes: Partial<Record<string, typeof computedDefaultColors.value>> = {
59
- // Base Colors
60
- 'blue': getThemeColors({ backgroundColor: 'var(--bgl-blue)', color: 'var(--bgl-white)' }),
61
- 'green': getThemeColors({ backgroundColor: 'var(--bgl-green)', color: 'var(--bgl-white)' }),
62
- 'red': getThemeColors({ backgroundColor: 'var(--bgl-red)', color: 'var(--bgl-white)' }),
63
- 'yellow': getThemeColors({ backgroundColor: 'var(--bgl-yellow)', color: 'var(--bgl-black)' }),
64
- 'purple': getThemeColors({ backgroundColor: 'var(--bgl-purple)', color: 'var(--bgl-white)' }),
65
- 'brown': getThemeColors({ backgroundColor: 'var(--bgl-brown)', color: 'var(--bgl-white)' }),
66
- 'orange': getThemeColors({ backgroundColor: 'var(--bgl-orange)', color: 'var(--bgl-white)' }),
67
- 'turquoise': getThemeColors({ backgroundColor: 'var(--bgl-turquoise)', color: 'var(--bgl-white)' }),
68
- 'gray': getThemeColors({ backgroundColor: 'var(--bgl-gray)', color: 'var(--bgl-white)' }),
69
- 'black': getThemeColors({ backgroundColor: 'var(--bgl-black)', color: 'var(--bgl-white)' }),
70
- 'pink': getThemeColors({ backgroundColor: 'var(--bgl-pink)', color: 'var(--bgl-white)' }),
71
-
72
- // System Colors
73
- 'primary': getThemeColors({ backgroundColor: 'var(--bgl-primary)', color: 'var(--bgl-white)' }),
74
- 'white': getThemeColors({ backgroundColor: 'var(--bgl-white)', color: 'var(--bgl-black)' }),
75
-
76
- // 10% tints (lightest)
77
- 'blue-10': getThemeColors({ backgroundColor: 'var(--bgl-blue-10)', color: 'var(--bgl-blue)' }),
78
- 'green-10': getThemeColors({ backgroundColor: 'var(--bgl-green-10)', color: 'var(--bgl-green)' }),
79
- 'red-10': getThemeColors({ backgroundColor: 'var(--bgl-red-10)', color: 'var(--bgl-red)' }),
80
- 'yellow-10': getThemeColors({ backgroundColor: 'var(--bgl-yellow-10)', color: 'var(--bgl-yellow)' }),
81
- 'purple-10': getThemeColors({ backgroundColor: 'var(--bgl-purple-10)', color: 'var(--bgl-purple)' }),
82
- 'brown-10': getThemeColors({ backgroundColor: 'var(--bgl-brown-10)', color: 'var(--bgl-brown)' }),
83
- 'orange-10': getThemeColors({ backgroundColor: 'var(--bgl-orange-10)', color: 'var(--bgl-orange)' }),
84
- 'turquoise-10': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-10)', color: 'var(--bgl-turquoise)' }),
85
- 'gray-10': getThemeColors({ backgroundColor: 'var(--bgl-gray-10)', color: 'var(--bgl-black)' }),
86
- 'black-10': getThemeColors({ backgroundColor: 'var(--bgl-black-10)', color: 'var(--bgl-black)' }),
87
- 'pink-10': getThemeColors({ backgroundColor: 'var(--bgl-pink-10)', color: 'var(--bgl-pink)' }),
88
-
89
- // 20% tints
90
- 'blue-20': getThemeColors({ backgroundColor: 'var(--bgl-blue-20)', color: 'var(--bgl-blue)' }),
91
- 'green-20': getThemeColors({ backgroundColor: 'var(--bgl-green-20)', color: 'var(--bgl-green)' }),
92
- 'red-20': getThemeColors({ backgroundColor: 'var(--bgl-red-20)', color: 'var(--bgl-red)' }),
93
- 'yellow-20': getThemeColors({ backgroundColor: 'var(--bgl-yellow-20)', color: 'var(--bgl-yellow)' }),
94
- 'purple-20': getThemeColors({ backgroundColor: 'var(--bgl-purple-20)', color: 'var(--bgl-purple)' }),
95
- 'brown-20': getThemeColors({ backgroundColor: 'var(--bgl-brown-20)', color: 'var(--bgl-brown)' }),
96
- 'orange-20': getThemeColors({ backgroundColor: 'var(--bgl-orange-20)', color: 'var(--bgl-orange)' }),
97
- 'turquoise-20': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-20)', color: 'var(--bgl-turquoise)' }),
98
- 'gray-20': getThemeColors({ backgroundColor: 'var(--bgl-gray-20)', color: 'var(--bgl-black)' }),
99
- 'black-20': getThemeColors({ backgroundColor: 'var(--bgl-black-20)', color: 'var(--bgl-black)' }),
100
- 'pink-20': getThemeColors({ backgroundColor: 'var(--bgl-pink-20)', color: 'var(--bgl-pink)' }),
101
- // 30% tints
102
- 'blue-30': getThemeColors({ backgroundColor: 'var(--bgl-blue-30)', color: 'var(--bgl-blue)' }),
103
- 'green-30': getThemeColors({ backgroundColor: 'var(--bgl-green-30)', color: 'var(--bgl-black)' }),
104
- 'red-30': getThemeColors({ backgroundColor: 'var(--bgl-red-30)', color: 'var(--bgl-red)' }),
105
- 'yellow-30': getThemeColors({ backgroundColor: 'var(--bgl-yellow-30)', color: 'var(--bgl-black)' }),
106
- 'purple-30': getThemeColors({ backgroundColor: 'var(--bgl-purple-30)', color: 'var(--bgl-purple)' }),
107
- 'brown-30': getThemeColors({ backgroundColor: 'var(--bgl-brown-30)', color: 'var(--bgl-black)' }),
108
- 'orange-30': getThemeColors({ backgroundColor: 'var(--bgl-orange-30)', color: 'var(--bgl-orange)' }),
109
- 'turquoise-30': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-30)', color: 'var(--bgl-black)' }),
110
- 'gray-30': getThemeColors({ backgroundColor: 'var(--bgl-gray-30)', color: 'var(--bgl-black)' }),
111
- 'black-30': getThemeColors({ backgroundColor: 'var(--bgl-black-30)', color: 'var(--bgl-black)' }),
112
- 'pink-30': getThemeColors({ backgroundColor: 'var(--bgl-pink-30)', color: 'var(--bgl-pink)' }),
113
- // 40% tints
114
- 'blue-40': getThemeColors({ backgroundColor: 'var(--bgl-blue-40)', color: 'var(--bgl-blue)' }),
115
- 'green-40': getThemeColors({ backgroundColor: 'var(--bgl-green-40)', color: 'var(--bgl-black)' }),
116
- 'red-40': getThemeColors({ backgroundColor: 'var(--bgl-red-40)', color: 'var(--bgl-black)' }),
117
- 'yellow-40': getThemeColors({ backgroundColor: 'var(--bgl-yellow-40)', color: 'var(--bgl-black)' }),
118
- 'purple-40': getThemeColors({ backgroundColor: 'var(--bgl-purple-40)', color: 'var(--bgl-black)' }),
119
- 'brown-40': getThemeColors({ backgroundColor: 'var(--bgl-brown-40)', color: 'var(--bgl-black)' }),
120
- 'orange-40': getThemeColors({ backgroundColor: 'var(--bgl-orange-40)', color: 'var(--bgl-black)' }),
121
- 'turquoise-40': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-40)', color: 'var(--bgl-black)' }),
122
- 'gray-40': getThemeColors({ backgroundColor: 'var(--bgl-gray-40)', color: 'var(--bgl-black)' }),
123
- 'black-40': getThemeColors({ backgroundColor: 'var(--bgl-black-40)', color: 'var(--bgl-black)' }),
124
- 'pink-40': getThemeColors({ backgroundColor: 'var(--bgl-pink-40)', color: 'var(--bgl-black)' }),
125
- // 50% tints
126
- 'blue-50': getThemeColors({ backgroundColor: 'var(--bgl-blue-50)', color: 'var(--bgl-black)' }),
127
- 'green-50': getThemeColors({ backgroundColor: 'var(--bgl-green-50)', color: 'var(--bgl-black)' }),
128
- 'red-50': getThemeColors({ backgroundColor: 'var(--bgl-red-50)', color: 'var(--bgl-black)' }),
129
- 'yellow-50': getThemeColors({ backgroundColor: 'var(--bgl-yellow-50)', color: 'var(--bgl-black)' }),
130
- 'purple-50': getThemeColors({ backgroundColor: 'var(--bgl-purple-50)', color: 'var(--bgl-black)' }),
131
- 'brown-50': getThemeColors({ backgroundColor: 'var(--bgl-brown-50)', color: 'var(--bgl-black)' }),
132
- 'orange-50': getThemeColors({ backgroundColor: 'var(--bgl-orange-50)', color: 'var(--bgl-black)' }),
133
- 'turquoise-50': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-50)', color: 'var(--bgl-black)' }),
134
- 'gray-50': getThemeColors({ backgroundColor: 'var(--bgl-gray-50)', color: 'var(--bgl-black)' }),
135
- 'black-50': getThemeColors({ backgroundColor: 'var(--bgl-black-50)', color: 'var(--bgl-black)' }),
136
- 'pink-50': getThemeColors({ backgroundColor: 'var(--bgl-pink-50)', color: 'var(--bgl-black)' }),
137
- // 60% tints
138
- 'blue-60': getThemeColors({ backgroundColor: 'var(--bgl-blue-60)', color: 'var(--bgl-white)' }),
139
- 'green-60': getThemeColors({ backgroundColor: 'var(--bgl-green-60)', color: 'var(--bgl-white)' }),
140
- 'red-60': getThemeColors({ backgroundColor: 'var(--bgl-red-60)', color: 'var(--bgl-white)' }),
141
- 'yellow-60': getThemeColors({ backgroundColor: 'var(--bgl-yellow-60)', color: 'var(--bgl-black)' }),
142
- 'purple-60': getThemeColors({ backgroundColor: 'var(--bgl-purple-60)', color: 'var(--bgl-white)' }),
143
- 'brown-60': getThemeColors({ backgroundColor: 'var(--bgl-brown-60)', color: 'var(--bgl-white)' }),
144
- 'orange-60': getThemeColors({ backgroundColor: 'var(--bgl-orange-60)', color: 'var(--bgl-white)' }),
145
- 'turquoise-60': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-60)', color: 'var(--bgl-black)' }),
146
- 'gray-60': getThemeColors({ backgroundColor: 'var(--bgl-gray-60)', color: 'var(--bgl-black)' }),
147
- 'black-60': getThemeColors({ backgroundColor: 'var(--bgl-black-60)', color: 'var(--bgl-white)' }),
148
- 'pink-60': getThemeColors({ backgroundColor: 'var(--bgl-pink-60)', color: 'var(--bgl-white)' }),
149
-
150
- // 70% tints
151
- 'blue-70': getThemeColors({ backgroundColor: 'var(--bgl-blue-70)', color: 'var(--bgl-white)' }),
152
- 'green-70': getThemeColors({ backgroundColor: 'var(--bgl-green-70)', color: 'var(--bgl-white)' }),
153
- 'red-70': getThemeColors({ backgroundColor: 'var(--bgl-red-70)', color: 'var(--bgl-white)' }),
154
- 'yellow-70': getThemeColors({ backgroundColor: 'var(--bgl-yellow-70)', color: 'var(--bgl-white)' }),
155
- 'purple-70': getThemeColors({ backgroundColor: 'var(--bgl-purple-70)', color: 'var(--bgl-white)' }),
156
- 'brown-70': getThemeColors({ backgroundColor: 'var(--bgl-brown-70)', color: 'var(--bgl-white)' }),
157
- 'orange-70': getThemeColors({ backgroundColor: 'var(--bgl-orange-70)', color: 'var(--bgl-white)' }),
158
- 'turquoise-70': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-70)', color: 'var(--bgl-black)' }),
159
- 'gray-70': getThemeColors({ backgroundColor: 'var(--bgl-gray-70)', color: 'var(--bgl-white)' }),
160
- 'black-70': getThemeColors({ backgroundColor: 'var(--bgl-black-70)', color: 'var(--bgl-white)' }),
161
- 'pink-70': getThemeColors({ backgroundColor: 'var(--bgl-pink-70)', color: 'var(--bgl-white)' }),
162
-
163
- // 80% tints
164
- 'blue-80': getThemeColors({ backgroundColor: 'var(--bgl-blue-80)', color: 'var(--bgl-white)' }),
165
- 'green-80': getThemeColors({ backgroundColor: 'var(--bgl-green-80)', color: 'var(--bgl-white)' }),
166
- 'red-80': getThemeColors({ backgroundColor: 'var(--bgl-red-80)', color: 'var(--bgl-white)' }),
167
- 'yellow-80': getThemeColors({ backgroundColor: 'var(--bgl-yellow-80)', color: 'var(--bgl-white)' }),
168
- 'purple-80': getThemeColors({ backgroundColor: 'var(--bgl-purple-80)', color: 'var(--bgl-white)' }),
169
- 'brown-80': getThemeColors({ backgroundColor: 'var(--bgl-brown-80)', color: 'var(--bgl-white)' }),
170
- 'orange-80': getThemeColors({ backgroundColor: 'var(--bgl-orange-80)', color: 'var(--bgl-white)' }),
171
- 'turquoise-80': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-80)', color: 'var(--bgl-black)' }),
172
- 'gray-80': getThemeColors({ backgroundColor: 'var(--bgl-gray-80)', color: 'var(--bgl-black)' }),
173
- 'black-80': getThemeColors({ backgroundColor: 'var(--bgl-black-80)', color: 'var(--bgl-white)' }),
174
- 'pink-80': getThemeColors({ backgroundColor: 'var(--bgl-pink-80)', color: 'var(--bgl-white)' }),
175
-
176
- // 90% tints
177
- 'blue-90': getThemeColors({ backgroundColor: 'var(--bgl-blue-90)', color: 'var(--bgl-white)' }),
178
- 'green-90': getThemeColors({ backgroundColor: 'var(--bgl-green-90)', color: 'var(--bgl-white)' }),
179
- 'red-90': getThemeColors({ backgroundColor: 'var(--bgl-red-90)', color: 'var(--bgl-white)' }),
180
- 'yellow-90': getThemeColors({ backgroundColor: 'var(--bgl-yellow-90)', color: 'var(--bgl-white)' }),
181
- 'purple-90': getThemeColors({ backgroundColor: 'var(--bgl-purple-90)', color: 'var(--bgl-white)' }),
182
- 'brown-90': getThemeColors({ backgroundColor: 'var(--bgl-brown-90)', color: 'var(--bgl-white)' }),
183
- 'orange-90': getThemeColors({ backgroundColor: 'var(--bgl-orange-90)', color: 'var(--bgl-white)' }),
184
- 'turquoise-90': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-90)', color: 'var(--bgl-white)' }),
185
- 'gray-90': getThemeColors({ backgroundColor: 'var(--bgl-gray-90)', color: 'var(--bgl-white)' }),
186
- 'black-90': getThemeColors({ backgroundColor: 'var(--bgl-black-90)', color: 'var(--bgl-white)' }),
187
- 'pink-90': getThemeColors({ backgroundColor: 'var(--bgl-pink-90)', color: 'var(--bgl-white)' }),
188
-
189
- // 100% tints
190
- 'blue-100': getThemeColors({ backgroundColor: 'var(--bgl-blue-100)', color: 'var(--bgl-white)' }),
191
- 'green-100': getThemeColors({ backgroundColor: 'var(--bgl-green-100)', color: 'var(--bgl-white)' }),
192
- 'red-100': getThemeColors({ backgroundColor: 'var(--bgl-red-100)', color: 'var(--bgl-white)' }),
193
- 'yellow-100': getThemeColors({ backgroundColor: 'var(--bgl-yellow-100)', color: 'var(--bgl-white)' }),
194
- 'purple-100': getThemeColors({ backgroundColor: 'var(--bgl-purple-100)', color: 'var(--bgl-white)' }),
195
- 'brown-100': getThemeColors({ backgroundColor: 'var(--bgl-brown-100)', color: 'var(--bgl-white)' }),
196
- 'orange-100': getThemeColors({ backgroundColor: 'var(--bgl-orange-100)', color: 'var(--bgl-white)' }),
197
- 'turquoise-100': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-100)', color: 'var(--bgl-white)' }),
198
- 'gray-100': getThemeColors({ backgroundColor: 'var(--bgl-gray-100)', color: 'var(--bgl-white)' }),
199
- 'black-100': getThemeColors({ backgroundColor: 'var(--bgl-black-100)', color: 'var(--bgl-white)' }),
200
- 'pink-100': getThemeColors({ backgroundColor: 'var(--bgl-pink-100)', color: 'var(--bgl-white)' }),
201
-
202
- // 110% tints
203
- 'blue-110': getThemeColors({ backgroundColor: 'var(--bgl-blue-110)', color: 'var(--bgl-white)' }),
204
- 'green-110': getThemeColors({ backgroundColor: 'var(--bgl-green-110)', color: 'var(--bgl-white)' }),
205
- 'red-110': getThemeColors({ backgroundColor: 'var(--bgl-red-110)', color: 'var(--bgl-white)' }),
206
- 'yellow-110': getThemeColors({ backgroundColor: 'var(--bgl-yellow-110)', color: 'var(--bgl-white)' }),
207
- 'purple-110': getThemeColors({ backgroundColor: 'var(--bgl-purple-110)', color: 'var(--bgl-white)' }),
208
- 'brown-110': getThemeColors({ backgroundColor: 'var(--bgl-brown-110)', color: 'var(--bgl-white)' }),
209
- 'orange-110': getThemeColors({ backgroundColor: 'var(--bgl-orange-110)', color: 'var(--bgl-white)' }),
210
- 'turquoise-110': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-110)', color: 'var(--bgl-white)' }),
211
- 'gray-110': getThemeColors({ backgroundColor: 'var(--bgl-gray-110)', color: 'var(--bgl-white)' }),
212
- 'black-110': getThemeColors({ backgroundColor: 'var(--bgl-black-110)', color: 'var(--bgl-white)' }),
213
- 'pink-110': getThemeColors({ backgroundColor: 'var(--bgl-pink-110)', color: 'var(--bgl-white)' }),
214
-
215
- // 120% tints
216
- 'blue-120': getThemeColors({ backgroundColor: 'var(--bgl-blue-120)', color: 'var(--bgl-white)' }),
217
- 'green-120': getThemeColors({ backgroundColor: 'var(--bgl-green-120)', color: 'var(--bgl-white)' }),
218
- 'red-120': getThemeColors({ backgroundColor: 'var(--bgl-red-120)', color: 'var(--bgl-white)' }),
219
- 'yellow-120': getThemeColors({ backgroundColor: 'var(--bgl-yellow-120)', color: 'var(--bgl-white)' }),
220
- 'purple-120': getThemeColors({ backgroundColor: 'var(--bgl-purple-120)', color: 'var(--bgl-white)' }),
221
- 'brown-120': getThemeColors({ backgroundColor: 'var(--bgl-brown-120)', color: 'var(--bgl-white)' }),
222
- 'orange-120': getThemeColors({ backgroundColor: 'var(--bgl-orange-120)', color: 'var(--bgl-white)' }),
223
- 'turquoise-120': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-120)', color: 'var(--bgl-white)' }),
224
- 'gray-120': getThemeColors({ backgroundColor: 'var(--bgl-gray-120)', color: 'var(--bgl-white)' }),
225
- 'black-120': getThemeColors({ backgroundColor: 'var(--bgl-black-120)', color: 'var(--bgl-white)' }),
226
- 'pink-120': getThemeColors({ backgroundColor: 'var(--bgl-pink-120)', color: 'var(--bgl-white)' }),
227
-
228
- // 130% tints
229
- 'blue-130': getThemeColors({ backgroundColor: 'var(--bgl-blue-130)', color: 'var(--bgl-white)' }),
230
- 'green-130': getThemeColors({ backgroundColor: 'var(--bgl-green-130)', color: 'var(--bgl-white)' }),
231
- 'red-130': getThemeColors({ backgroundColor: 'var(--bgl-red-130)', color: 'var(--bgl-white)' }),
232
- 'yellow-130': getThemeColors({ backgroundColor: 'var(--bgl-yellow-130)', color: 'var(--bgl-white)' }),
233
- 'purple-130': getThemeColors({ backgroundColor: 'var(--bgl-purple-130)', color: 'var(--bgl-white)' }),
234
- 'brown-130': getThemeColors({ backgroundColor: 'var(--bgl-brown-130)', color: 'var(--bgl-white)' }),
235
- 'orange-130': getThemeColors({ backgroundColor: 'var(--bgl-orange-130)', color: 'var(--bgl-white)' }),
236
- 'turquoise-130': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-130)', color: 'var(--bgl-white)' }),
237
- 'gray-130': getThemeColors({ backgroundColor: 'var(--bgl-gray-130)', color: 'var(--bgl-white)' }),
238
- 'black-130': getThemeColors({ backgroundColor: 'var(--bgl-black-130)', color: 'var(--bgl-white)' }),
239
- 'pink-130': getThemeColors({ backgroundColor: 'var(--bgl-pink-130)', color: 'var(--bgl-white)' }),
240
58
 
241
- // Legacy light variants (mapped to 20% tints)
242
- 'blue-light': getThemeColors({ backgroundColor: 'var(--bgl-blue-light)', color: 'var(--bgl-blue)' }),
243
- 'green-light': getThemeColors({ backgroundColor: 'var(--bgl-green-light)', color: 'var(--bgl-green)' }),
244
- 'red-light': getThemeColors({ backgroundColor: 'var(--bgl-red-light)', color: 'var(--bgl-red)' }),
245
- 'yellow-light': getThemeColors({ backgroundColor: 'var(--bgl-yellow-light)', color: 'var(--bgl-black)' }),
246
- 'purple-light': getThemeColors({ backgroundColor: 'var(--bgl-purple-light)', color: 'var(--bgl-purple)' }),
247
- 'brown-light': getThemeColors({ backgroundColor: 'var(--bgl-brown-light)', color: 'var(--bgl-brown)' }),
248
- 'orange-light': getThemeColors({ backgroundColor: 'var(--bgl-orange-light)', color: 'var(--bgl-orange)' }),
249
- 'turquoise-light': getThemeColors({ backgroundColor: 'var(--bgl-turquoise-light)', color: 'var(--bgl-black)' }),
250
- 'pink-light': getThemeColors({ backgroundColor: 'var(--bgl-pink-light)', color: 'var(--bgl-pink)' }),
251
- 'gray-light': getThemeColors({ backgroundColor: 'var(--bgl-gray-light)', color: 'var(--bgl-black)' }),
252
- 'primary-light': getThemeColors({ backgroundColor: 'var(--bgl-primary-light)', color: 'var(--bgl-primary)' }),
59
+ // Add the pair class
60
+ classes[computedPairClass.value] = true
253
61
 
254
- // Legacy tint variants
255
- 'blue-tint': getThemeColors({ backgroundColor: 'var(--bgl-blue-tint)', color: 'var(--bgl-blue)' }),
256
- 'red-tint': getThemeColors({ backgroundColor: 'var(--bgl-red-tint)', color: 'var(--bgl-red)' }),
257
- 'primary-tint': getThemeColors({ backgroundColor: 'var(--bgl-primary-tint)', color: 'var(--bgl-white)' }),
258
- 'black-tint': getThemeColors({ backgroundColor: 'var(--bgl-black-tint)', color: 'var(--bgl-white)' }),
259
-
260
- // Special variants
261
- 'blue-dark': getThemeColors({ backgroundColor: 'var(--bgl-blue-dark)', color: 'var(--bgl-white)' }),
262
- 'light': getThemeColors({ backgroundColor: 'var(--bgl-primary-light)', color: 'var(--bgl-primary)' }),
263
- }
264
-
265
- const cumputedTextColor = computed(
266
- () => (themes[computedTheme.value as ThemeType]?.color ?? computedDefaultColors.value.color),
267
- )
268
-
269
- const computedBackgroundColor = computed(
270
- () => (themes[computedTheme.value as ThemeType]?.backgroundColor ?? computedDefaultColors.value.backgroundColor),
271
- )
62
+ return classes
63
+ })
272
64
  </script>
273
65
 
274
66
  <template>
275
67
  <div
68
+ class="bgl_pill"
276
69
  style="height: var(--pill-height);"
277
- :disabled="disabled" :class="{
278
- 'bgl_pill': !icon || slots.default || value,
279
- round,
280
- 'bgl_flatPill': flat,
281
- 'bgl_pill-border': border || outline,
282
- 'pillLarge': large,
283
- 'pillSmall': small,
284
- }"
70
+ :disabled="disabled"
71
+ :class="computedClasses"
285
72
  >
286
- <div class="bgl_pill-flex">
287
- <div v-if="loading" class="loading" />
288
- <div v-else>
289
- <div v-if="btn" class="flex h-100">
290
- <Btn class="bgl_pill-btn" round thin v-bind="btn" />
291
- </div>
292
- </div>
293
- <Icon v-if="icon" :icon="icon" style="font-size: var(--pill-font-size)" />
294
- <slot />
295
- <template v-if="!slots.default">
296
- <p
297
- class="pillText"
298
- >
299
- {{ slots.default ? slots.default : value || modelValue }}
300
- </p>
301
- </template>
302
- <Icon v-if="iconEnd" :icon="iconEnd" style="font-size: var(--pill-font-size)" />
303
- <div v-if="loading" class="loading" />
304
- <div v-else>
305
- <div v-if="btnEnd" class="flex h-100">
306
- <Btn class="bgl_pill-btn" round thin flat v-bind="btnEnd" />
307
- </div>
73
+ <div class="flex h-100 justify-content-center relative ">
74
+ <div v-if="loading" class="loading absolute inset-0 mx-auto" />
75
+ <div class="px-025 flex gap-025 justify-content-center" :class="{ 'opacity-0': loading }">
76
+ <Btn v-if="btn" class="bgl_pill-btn -ms-025" icon-size="0.8" round v-bind="btn" />
77
+ <Icon v-if="icon" class="line-height-0" :icon="icon" style="font-size: var(--pill-font-size)" />
78
+ <slot :class="{ uppercase }" />
79
+ <template v-if="!slots.default">
80
+ <p class="pillText inline" :class="{ uppercase }">
81
+ {{ slots.default ? slots.default : value || modelValue }}
82
+ </p>
83
+ </template>
84
+ <Icon v-if="iconEnd" class="line-height-0" :icon="iconEnd" style="font-size: var(--pill-font-size)" />
85
+ <Btn v-if="btnEnd" class="bgl_pill-btn -me-025" icon-size="0.8" round v-bind="btnEnd" />
308
86
  </div>
309
87
  </div>
310
88
  </div>
@@ -353,40 +131,19 @@ const computedBackgroundColor = computed(
353
131
  .bgl_pill {
354
132
  padding-inline: calc(var(--pill-font-size) / 6);
355
133
  padding-block: calc(var(--pill-font-size) / 24);
356
- transition: var(--bgl-transition);
357
- background-color: v-bind(computedBackgroundColor);
358
- color: v-bind(cumputedTextColor);
134
+ transition: var(--bgl-transition);
359
135
  display: inline-block;
360
136
  margin-inline-end: 0.25rem;
361
137
  border-radius: var(--pill-border-radius);
362
138
  min-height: var(--pill-height);
363
- vertical-align: middle;
364
- margin-bottom: 0.25rem;
139
+ vertical-align: middle;
365
140
  }
366
141
 
367
142
  .bgl_pill[disabled="true"] {
368
143
  opacity: 0.5;
369
144
  cursor: not-allowed;
370
145
  }
371
-
372
- .bgl_pill-flex {
373
- display: flex;
374
- align-items: center;
375
- gap: 0.25rem;
376
- justify-content: center;
377
- height: 100%;
378
- }
379
- .bgl_pill.bgl_flatPill {
380
- background: transparent;
381
- }
382
-
383
146
  .bgl_pill.round {
384
- border-radius: 1000px;
385
- }
386
-
387
- .bgl_pill-border {
388
- outline: 1px solid v-bind(computedBackgroundColor);
389
- color: v-bind(computedBackgroundColor);
390
- background: transparent;
147
+ border-radius: 1000px;
391
148
  }
392
149
  </style>
@@ -340,13 +340,31 @@ function validateAll(): boolean {
340
340
  }
341
341
 
342
342
  // Submit handler for the slot
343
- function handleSubmit() {
344
- return validateAll()
343
+ function handleSubmit(event?: Event): boolean {
344
+ // Prevent default form submission if event is provided
345
+ if (event) {
346
+ event.preventDefault()
347
+ }
348
+
349
+ const isValid = validateAll()
350
+
351
+ // If validation fails, prevent further processing
352
+ if (!isValid) {
353
+ event?.stopPropagation()
354
+ }
355
+
356
+ return isValid
345
357
  }
358
+
359
+ // Expose methods for parent components (e.g., dialogs)
360
+ defineExpose({
361
+ validate: validateAll,
362
+ handleSubmit
363
+ })
346
364
  </script>
347
365
 
348
366
  <template>
349
- <div :class="schema._class">
367
+ <form :class="schema._class" @submit="handleSubmit">
350
368
  <div v-for="{ key, field } in visibleFields" :key="key" :class="[field._class, field._config.class]">
351
369
  <!-- Custom slot for specific field -->
352
370
  <slot
@@ -395,7 +413,7 @@ function handleSubmit() {
395
413
  name="submit" :submit="handleSubmit" :validate="validateAll" :form-data="formData"
396
414
  :errors="mergedErrors"
397
415
  />
398
- </div>
416
+ </form>
399
417
  </template>
400
418
 
401
419
  <style scoped>