@bagelink/vue 1.4.81 → 1.4.87

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.
@@ -73,11 +73,25 @@ export type VNodeFn<T, P extends Path<T>> = (props: {
73
73
  field: BaseBagelField<T, P>
74
74
  }) => VNode
75
75
 
76
+ export interface ElementField<
77
+ T,
78
+ PO extends PathsOptions = DefaultPathsOptions,
79
+ > {
80
+ $el: string
81
+ id?: Path<T, PO> | string
82
+ class?: any
83
+ vIf?: any
84
+ style?: Record<string, any>
85
+ attrs?: Record<string, any>
86
+ onClick?: () => void
87
+ children?: ElementField<T, PO>[]
88
+ }
89
+
76
90
  export type SchemaChild<
77
91
  T,
78
92
  P extends Path<T, PO>,
79
93
  PO extends PathsOptions = DefaultPathsOptions,
80
- > = Field<T, PO> | VNode | VNodeFn<T, P> | string
94
+ > = Field<T, PO> | ElementField<T, PO> | VNode | VNodeFn<T, P> | string
81
95
 
82
96
  export interface BaseBagelField<
83
97
  T,
@@ -21,17 +21,52 @@ export type Tab = {
21
21
  icon?: IconType
22
22
  } | string
23
23
 
24
- export type ThemeType = |
25
- 'light'
26
- | 'white'
27
- | 'red'
28
- | 'gray'
29
- | 'gray-light'
30
- | 'black'
31
- | 'green'
32
- | 'yellow'
33
- | 'primary'
34
- | 'blue' // ! blue does nothing
24
+ export type ThemeType =
25
+ | 'blue' | 'green' | 'red' | 'yellow' | 'purple' | 'brown' | 'orange' | 'turquoise' | 'gray' | 'black' | 'pink'
26
+ | 'primary' | 'white'
27
+ | 'blue-light' | 'green-light' | 'red-light' | 'yellow-light' | 'purple-light' | 'brown-light'
28
+ | 'orange-light' | 'turquoise-light' | 'pink-light' | 'gray-light' | 'primary-light'
29
+ | 'blue-tint' | 'red-tint' | 'primary-tint' | 'black-tint' | 'blue-dark'
30
+ | 'light'
31
+
32
+ // Extended theme type with all percentage variations
33
+ export type ExtendedThemeType =
34
+ // Base colors
35
+ | 'blue' | 'green' | 'red' | 'yellow' | 'purple' | 'brown' | 'orange' | 'turquoise' | 'gray' | 'black' | 'pink'
36
+ | 'primary' | 'white'
37
+ // Legacy light variants
38
+ | 'blue-light' | 'green-light' | 'red-light' | 'yellow-light' | 'purple-light' | 'brown-light'
39
+ | 'orange-light' | 'turquoise-light' | 'pink-light' | 'gray-light' | 'primary-light'
40
+ // Legacy tint variants
41
+ | 'blue-tint' | 'red-tint' | 'primary-tint' | 'black-tint' | 'blue-dark' | 'light'
42
+ // 10% variants (lightest)
43
+ | 'blue-10' | 'green-10' | 'red-10' | 'yellow-10' | 'purple-10' | 'brown-10' | 'orange-10' | 'turquoise-10' | 'gray-10' | 'black-10' | 'pink-10'
44
+ // 20% variants
45
+ | 'blue-20' | 'green-20' | 'red-20' | 'yellow-20' | 'purple-20' | 'brown-20' | 'orange-20' | 'turquoise-20' | 'gray-20' | 'black-20' | 'pink-20'
46
+ // 30% variants
47
+ | 'blue-30' | 'green-30' | 'red-30' | 'yellow-30' | 'purple-30' | 'brown-30' | 'orange-30' | 'turquoise-30' | 'gray-30' | 'black-30' | 'pink-30'
48
+ // 40% variants
49
+ | 'blue-40' | 'green-40' | 'red-40' | 'yellow-40' | 'purple-40' | 'brown-40' | 'orange-40' | 'turquoise-40' | 'gray-40' | 'black-40' | 'pink-40'
50
+ // 50% variants
51
+ | 'blue-50' | 'green-50' | 'red-50' | 'yellow-50' | 'purple-50' | 'brown-50' | 'orange-50' | 'turquoise-50' | 'gray-50' | 'black-50' | 'pink-50'
52
+ // 60% variants
53
+ | 'blue-60' | 'green-60' | 'red-60' | 'yellow-60' | 'purple-60' | 'brown-60' | 'orange-60' | 'turquoise-60' | 'gray-60' | 'black-60' | 'pink-60'
54
+ // 70% variants
55
+ | 'blue-70' | 'green-70' | 'red-70' | 'yellow-70' | 'purple-70' | 'brown-70' | 'orange-70' | 'turquoise-70' | 'gray-70' | 'black-70' | 'pink-70'
56
+ // 80% variants
57
+ | 'blue-80' | 'green-80' | 'red-80' | 'yellow-80' | 'purple-80' | 'brown-80' | 'orange-80' | 'turquoise-80' | 'gray-80' | 'black-80' | 'pink-80'
58
+ // 90% variants
59
+ | 'blue-90' | 'green-90' | 'red-90' | 'yellow-90' | 'purple-90' | 'brown-90' | 'orange-90' | 'turquoise-90' | 'gray-90' | 'black-90' | 'pink-90'
60
+ // 100% variants (same as base)
61
+ | 'blue-100' | 'green-100' | 'red-100' | 'yellow-100' | 'purple-100' | 'brown-100' | 'orange-100' | 'turquoise-100' | 'gray-100' | 'black-100' | 'pink-100'
62
+ // 110% variants (darker)
63
+ | 'blue-110' | 'green-110' | 'red-110' | 'yellow-110' | 'purple-110' | 'brown-110' | 'orange-110' | 'turquoise-110' | 'gray-110' | 'black-110' | 'pink-110'
64
+ // 120% variants
65
+ | 'blue-120' | 'green-120' | 'red-120' | 'yellow-120' | 'purple-120' | 'brown-120' | 'orange-120' | 'turquoise-120' | 'gray-120' | 'black-120' | 'pink-120'
66
+ // 130% variants (darkest)
67
+ | 'blue-130' | 'green-130' | 'red-130' | 'yellow-130' | 'purple-130' | 'brown-130' | 'orange-130' | 'turquoise-130' | 'gray-130' | 'black-130' | 'pink-130'
68
+ // Status colors
69
+ | 'Error' | 'Paid' | 'Active'
35
70
 
36
71
  export type Option =
37
72
  | string
@@ -1,28 +1,14 @@
1
- import type { BaseBagelField, IconType, Option, Path } from '@bagelink/vue'
1
+ import type { IconType, Option, Path, ElementField } from '@bagelink/vue'
2
2
 
3
3
  export type DefaultPathsOptions = Record<string, any>
4
4
  export type PathsOptions = Record<string, any>
5
5
 
6
- export interface BaseElementField<
7
- T,
8
- P extends Path<T, PO>,
9
- PO extends PathsOptions = DefaultPathsOptions
10
- > extends Partial<BaseBagelField<T, P, PO>> {
11
- $el: string
12
- id?: P
13
- class?: string
14
- vIf?: boolean | (() => boolean)
15
- style?: Record<string, any>
16
- attrs?: Record<string, any>
17
- onClick?: () => void
18
- children?: BaseElementField<T, any>[]
19
- }
6
+ export type BaseElementField<T, PO extends PathsOptions = DefaultPathsOptions> = ElementField<T, PO>
20
7
 
21
8
  export interface BtnElementOptions<
22
9
  T = any,
23
- P extends Path<T, PO> = any,
24
10
  PO extends PathsOptions = DefaultPathsOptions
25
- > extends Partial<BaseElementField<T, P, PO>> {
11
+ > extends Partial<BaseElementField<T, PO>> {
26
12
  text?: string
27
13
  variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger'
28
14
  size?: 'sm' | 'md' | 'lg'
@@ -36,9 +22,8 @@ export interface BtnElementOptions<
36
22
 
37
23
  export interface TxtElementOptions<
38
24
  T = any,
39
- P extends Path<T, PO> = any,
40
25
  PO extends PathsOptions = DefaultPathsOptions
41
- > extends Partial<BaseElementField<T, P, PO>> {
26
+ > extends Partial<BaseElementField<T, PO>> {
42
27
  text?: string
43
28
  tag?: 'p' | 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div'
44
29
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'
@@ -49,9 +34,8 @@ export interface TxtElementOptions<
49
34
 
50
35
  export interface ImgElementOptions<
51
36
  T = any,
52
- P extends Path<T, PO> = any,
53
37
  PO extends PathsOptions = DefaultPathsOptions
54
- > extends Partial<BaseElementField<T, P, PO>> {
38
+ > extends Partial<BaseElementField<T, PO>> {
55
39
  src?: string
56
40
  alt?: string
57
41
  width?: number | string
@@ -64,9 +48,8 @@ export interface ImgElementOptions<
64
48
 
65
49
  export interface DropdownElementOptions<
66
50
  T = any,
67
- P extends Path<T, PO> = any,
68
51
  PO extends PathsOptions = DefaultPathsOptions
69
- > extends Partial<BaseElementField<T, P, PO>> {
52
+ > extends Partial<BaseElementField<T, PO>> {
70
53
  options?: Option[] | (() => Option[])
71
54
  placeholder?: string
72
55
  searchable?: boolean
@@ -78,9 +61,8 @@ export interface DropdownElementOptions<
78
61
 
79
62
  export interface ListItemElementOptions<
80
63
  T = any,
81
- P extends Path<T, PO> = any,
82
64
  PO extends PathsOptions = DefaultPathsOptions
83
- > extends Partial<BaseElementField<T, P, PO>> {
65
+ > extends Partial<BaseElementField<T, PO>> {
84
66
  title?: string
85
67
  subtitle?: string
86
68
  icon?: IconType
@@ -94,24 +76,23 @@ export interface ListItemElementOptions<
94
76
  // Magical button overloads with schema support
95
77
  export function btn<
96
78
  T = any,
97
- P extends Path<T, PO> = any,
98
79
  PO extends PathsOptions = DefaultPathsOptions
99
- >(options: BtnElementOptions<T, P, PO>): BaseElementField<T, P, PO>
80
+ >(options: BtnElementOptions<T, PO>): BaseElementField<T, PO>
100
81
  export function btn<
101
82
  T = any,
102
83
  P extends Path<T, PO> = any,
103
84
  PO extends PathsOptions = DefaultPathsOptions
104
- >(id: P): BaseElementField<T, P, PO>
85
+ >(id: P): BaseElementField<T, PO>
105
86
  export function btn<
106
87
  T = any,
107
88
  P extends Path<T, PO> = any,
108
89
  PO extends PathsOptions = DefaultPathsOptions
109
- >(id: P, text: string): BaseElementField<T, P, PO>
90
+ >(id: P, text: string): BaseElementField<T, PO>
110
91
  export function btn<
111
92
  T = any,
112
93
  P extends Path<T, PO> = any,
113
94
  PO extends PathsOptions = DefaultPathsOptions
114
- >(id: P, icon: IconType): BaseElementField<T, P, PO>
95
+ >(id: P, icon: IconType): BaseElementField<T, PO>
115
96
  export function btn<
116
97
  T = any,
117
98
  P extends Path<T, PO> = any,
@@ -119,8 +100,8 @@ export function btn<
119
100
  >(
120
101
  id: P,
121
102
  text: string,
122
- options: BtnElementOptions<T, P, PO>
123
- ): BaseElementField<T, P, PO>
103
+ options: BtnElementOptions<T, PO>
104
+ ): BaseElementField<T, PO>
124
105
  export function btn<
125
106
  T = any,
126
107
  P extends Path<T, PO> = any,
@@ -128,8 +109,8 @@ export function btn<
128
109
  >(
129
110
  id: P,
130
111
  icon: IconType,
131
- options: BtnElementOptions<T, P, PO>
132
- ): BaseElementField<T, P, PO>
112
+ options: BtnElementOptions<T, PO>
113
+ ): BaseElementField<T, PO>
133
114
  export function btn<
134
115
  T = any,
135
116
  P extends Path<T, PO> = any,
@@ -137,28 +118,28 @@ export function btn<
137
118
  >(
138
119
  id: P,
139
120
  textOrIcon: string | IconType,
140
- options: BtnElementOptions<T, P, PO>
141
- ): BaseElementField<T, P, PO>
121
+ options: BtnElementOptions<T, PO>
122
+ ): BaseElementField<T, PO>
142
123
  export function btn<
143
124
  T = any,
144
125
  P extends Path<T, PO> = any,
145
126
  PO extends PathsOptions = DefaultPathsOptions
146
127
  >(
147
- idOrOptions?: P | BtnElementOptions<T, P, PO>,
128
+ idOrOptions?: P | BtnElementOptions<T, PO>,
148
129
  textOrIcon?: string | IconType,
149
- options?: BtnElementOptions<T, P, PO>,
150
- ): BaseElementField<T, P, PO> {
130
+ options?: BtnElementOptions<T, PO>,
131
+ ): BaseElementField<T, PO> {
151
132
  // Handle different overload patterns
152
- let id: P | undefined
133
+ let id: Path<T, PO> | undefined
153
134
  let text: string = ''
154
135
  let icon: IconType | undefined
155
- let finalOptions: BtnElementOptions<T, P, PO> = {}
136
+ let finalOptions: BtnElementOptions<T, PO> = {}
156
137
 
157
138
  if (typeof idOrOptions === 'object' && idOrOptions !== null) {
158
139
  // btn(options)
159
140
  finalOptions = idOrOptions
160
141
  const { id: optionId, text: optionText, icon: optionIcon } = finalOptions
161
- id = optionId
142
+ id = optionId as Path<T, PO> | undefined
162
143
  text = optionText ?? ''
163
144
  icon = optionIcon
164
145
  } else {
@@ -212,13 +193,12 @@ export function btn<
212
193
 
213
194
  export function getBaseElementField<
214
195
  T = any,
215
- P extends Path<T, PO> = any,
216
196
  PO extends PathsOptions = DefaultPathsOptions
217
197
  >(
218
198
  elementType: string,
219
- id?: P,
220
- options: Partial<BaseElementField<T, P, PO>> = {}
221
- ): BaseElementField<T, P, PO> {
199
+ id?: Path<T, PO>,
200
+ options: Partial<BaseElementField<T, PO>> = {}
201
+ ): BaseElementField<T, PO> {
222
202
  return {
223
203
  $el: elementType,
224
204
  id,
@@ -238,30 +218,29 @@ export function iconBtn<
238
218
  >(
239
219
  id?: P,
240
220
  icon?: IconType,
241
- options?: BtnElementOptions<T, P, PO>,
242
- ): BaseElementField<T, P, PO> {
221
+ options?: BtnElementOptions<T, PO>,
222
+ ): BaseElementField<T, PO> {
243
223
  if (icon != null && id != null) {
244
224
  return btn(id, icon, options || {})
245
225
  }
246
- return btn({ id, icon, ...options } as BtnElementOptions<T, P, PO>)
226
+ return btn({ id, icon, ...options } as BtnElementOptions<T, PO>)
247
227
  }
248
228
 
249
229
  // Magical text overloads with schema support
250
230
  export function txt<
251
231
  T = any,
252
- P extends Path<T, PO> = any,
253
232
  PO extends PathsOptions = DefaultPathsOptions
254
- >(options: TxtElementOptions<T, P, PO>): BaseElementField<T, P, PO>
233
+ >(options: TxtElementOptions<T, PO>): BaseElementField<T, PO>
255
234
  export function txt<
256
235
  T = any,
257
236
  P extends Path<T, PO> = any,
258
237
  PO extends PathsOptions = DefaultPathsOptions
259
- >(id: P): BaseElementField<T, P, PO>
238
+ >(id: P): BaseElementField<T, PO>
260
239
  export function txt<
261
240
  T = any,
262
241
  P extends Path<T, PO> = any,
263
242
  PO extends PathsOptions = DefaultPathsOptions
264
- >(id: P, text: string): BaseElementField<T, P, PO>
243
+ >(id: P, text: string): BaseElementField<T, PO>
265
244
  export function txt<
266
245
  T = any,
267
246
  P extends Path<T, PO> = any,
@@ -270,30 +249,30 @@ export function txt<
270
249
  id: P,
271
250
  text: string,
272
251
  tag: 'p' | 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div'
273
- ): BaseElementField<T, P, PO>
252
+ ): BaseElementField<T, PO>
274
253
  export function txt<
275
254
  T = any,
276
255
  P extends Path<T, PO> = any,
277
256
  PO extends PathsOptions = DefaultPathsOptions
278
- >(id: P, text: string, options: TxtElementOptions<T, P, PO>): BaseElementField<T, P, PO>
257
+ >(id: P, text: string, options: TxtElementOptions<T, PO>): BaseElementField<T, PO>
279
258
  export function txt<
280
259
  T = any,
281
260
  P extends Path<T, PO> = any,
282
261
  PO extends PathsOptions = DefaultPathsOptions
283
262
  >(
284
- idOrOptions?: P | TxtElementOptions<T, P, PO>,
263
+ idOrOptions?: P | TxtElementOptions<T, PO>,
285
264
  text?: string,
286
- tagOrOptions?: string | TxtElementOptions<T, P, PO>,
287
- ): BaseElementField<T, P, PO> {
265
+ tagOrOptions?: string | TxtElementOptions<T, PO>,
266
+ ): BaseElementField<T, PO> {
288
267
  // Handle different overload patterns
289
- let id: P | undefined
290
- let finalOptions: TxtElementOptions<T, P, PO> = {}
268
+ let id: Path<T, PO> | undefined
269
+ let finalOptions: TxtElementOptions<T, PO> = {}
291
270
 
292
271
  if (typeof idOrOptions === 'object' && idOrOptions !== null) {
293
272
  // txt(options)
294
273
  finalOptions = idOrOptions
295
274
  const { id: optionId } = finalOptions
296
- id = optionId
275
+ id = optionId as Path<T, PO> | undefined
297
276
  } else {
298
277
  // txt(id, ...) patterns
299
278
  id = idOrOptions
@@ -329,48 +308,47 @@ export function txt<
329
308
  // Magical image overloads with schema support
330
309
  export function img<
331
310
  T = any,
332
- P extends Path<T, PO> = any,
333
311
  PO extends PathsOptions = DefaultPathsOptions
334
- >(options: ImgElementOptions<T, P, PO>): BaseElementField<T, P, PO>
312
+ >(options: ImgElementOptions<T, PO>): BaseElementField<T, PO>
335
313
  export function img<
336
314
  T = any,
337
315
  P extends Path<T, PO> = any,
338
316
  PO extends PathsOptions = DefaultPathsOptions
339
- >(id: P): BaseElementField<T, P, PO>
317
+ >(id: P): BaseElementField<T, PO>
340
318
  export function img<
341
319
  T = any,
342
320
  P extends Path<T, PO> = any,
343
321
  PO extends PathsOptions = DefaultPathsOptions
344
- >(id: P, src: string): BaseElementField<T, P, PO>
322
+ >(id: P, src: string): BaseElementField<T, PO>
345
323
  export function img<
346
324
  T = any,
347
325
  P extends Path<T, PO> = any,
348
326
  PO extends PathsOptions = DefaultPathsOptions
349
- >(id: P, src: string, alt: string): BaseElementField<T, P, PO>
327
+ >(id: P, src: string, alt: string): BaseElementField<T, PO>
350
328
  export function img<
351
329
  T = any,
352
330
  P extends Path<T, PO> = any,
353
331
  PO extends PathsOptions = DefaultPathsOptions
354
- >(id: P, src: string, options: ImgElementOptions<T, P, PO>): BaseElementField<T, P, PO>
332
+ >(id: P, src: string, options: ImgElementOptions<T, PO>): BaseElementField<T, PO>
355
333
  export function img<
356
334
  T = any,
357
335
  P extends Path<T, PO> = any,
358
336
  PO extends PathsOptions = DefaultPathsOptions
359
337
  >(
360
- idOrOptions?: P | ImgElementOptions<T, P, PO>,
338
+ idOrOptions?: P | ImgElementOptions<T, PO>,
361
339
  src?: string,
362
- altOrOptions?: string | ImgElementOptions<T, P, PO>,
363
- ): BaseElementField<T, P, PO> {
340
+ altOrOptions?: string | ImgElementOptions<T, PO>,
341
+ ): BaseElementField<T, PO> {
364
342
  // Handle different overload patterns
365
- let id: P | undefined
343
+ let id: Path<T, PO> | undefined
366
344
  let finalSrc: string = ''
367
- let finalOptions: ImgElementOptions<T, P, PO> = {}
345
+ let finalOptions: ImgElementOptions<T, PO> = {}
368
346
 
369
347
  if (typeof idOrOptions === 'object' && idOrOptions !== null) {
370
348
  // img(options)
371
349
  finalOptions = idOrOptions
372
350
  const { id: optionId, src: optionSrc } = finalOptions
373
- id = optionId
351
+ id = optionId as Path<T, PO> | undefined
374
352
  finalSrc = optionSrc ?? ''
375
353
  } else {
376
354
  // img(id, ...) patterns
@@ -409,13 +387,12 @@ export function img<
409
387
  // Dropdown element function following BagelForm pattern
410
388
  export function dropdownElement<
411
389
  T = any,
412
- P extends Path<T, PO> = any,
413
390
  PO extends PathsOptions = DefaultPathsOptions
414
391
  >(
415
- id?: P,
392
+ id?: Path<T, PO>,
416
393
  options?: Option[] | (() => Option[]),
417
- config?: DropdownElementOptions<T, P, PO>,
418
- ): BaseElementField<T, P, PO> {
394
+ config?: DropdownElementOptions<T, PO>,
395
+ ): BaseElementField<T, PO> {
419
396
  return {
420
397
  $el: 'dropdown',
421
398
  id,
@@ -437,13 +414,12 @@ export function dropdownElement<
437
414
  // ListItem element function following BagelForm pattern
438
415
  export function listItemElement<
439
416
  T = any,
440
- P extends Path<T, PO> = any,
441
417
  PO extends PathsOptions = DefaultPathsOptions
442
418
  >(
443
- id?: P,
419
+ id?: Path<T, PO>,
444
420
  title?: string,
445
- options?: ListItemElementOptions<T, P, PO>,
446
- ): BaseElementField<T, P, PO> {
421
+ options?: ListItemElementOptions<T, PO>,
422
+ ): BaseElementField<T, PO> {
447
423
  return {
448
424
  $el: 'listItem',
449
425
  id,
@@ -467,13 +443,12 @@ export function listItemElement<
467
443
  // Container element function following BagelForm pattern
468
444
  export function containerElement<
469
445
  T = any,
470
- P extends Path<T, PO> = any,
471
446
  PO extends PathsOptions = DefaultPathsOptions
472
447
  >(
473
- id?: P,
448
+ id?: Path<T, PO>,
474
449
  children?: BaseElementField<T, any>[],
475
- options?: Partial<BaseElementField<T, P, PO>>,
476
- ): BaseElementField<T, P, PO> {
450
+ options?: Partial<BaseElementField<T, PO>>,
451
+ ): BaseElementField<T, PO> {
477
452
  return {
478
453
  $el: 'div',
479
454
  id,
@@ -501,9 +476,9 @@ export function findElementById<T>(
501
476
 
502
477
  export function column<T = any, P extends Path<T, PO> = any, PO extends PathsOptions = DefaultPathsOptions>(
503
478
  id?: P,
504
- labelOrOptions?: string | Partial<BaseElementField<T, P, PO>>,
505
- options?: Partial<BaseElementField<T, P, PO>>,
506
- ): BaseElementField<T, P, PO> {
479
+ labelOrOptions?: string | Partial<BaseElementField<T, PO>>,
480
+ options?: Partial<BaseElementField<T, PO>>,
481
+ ): BaseElementField<T, PO> {
507
482
  let label: string | undefined
508
483
  if (typeof labelOrOptions === 'string') {
509
484
  label = labelOrOptions