@saasmakers/ui 2.0.55 → 2.0.57

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.
@@ -1,26 +1,51 @@
1
1
  <script lang="ts" setup>
2
2
  import type { BaseTag } from '../../types/bases'
3
3
 
4
- withDefaults(defineProps<BaseTag>(), {
4
+ const props = withDefaults(defineProps<BaseTag>(), {
5
+ active: false,
6
+ clickable: false,
5
7
  color: 'gray',
6
8
  size: 'base',
7
9
  text: '',
10
+ variant: 'filled',
8
11
  })
12
+
13
+ const emit = defineEmits<{
14
+ click: [event: MouseEvent]
15
+ }>()
16
+
17
+ function onClick(event: MouseEvent) {
18
+ if (props.clickable) {
19
+ emit('click', event)
20
+ }
21
+ }
9
22
  </script>
10
23
 
11
24
  <template>
12
- <span
13
- class="pointer-events-none inline-flex rounded font-medium tracking-tight"
25
+ <component
26
+ :is="clickable ? 'button' : 'span'"
27
+ class="inline-flex rounded border font-medium tracking-tight uppercase transition-colors"
14
28
  :class="{
29
+ 'cursor-pointer': clickable,
30
+ 'pointer-events-none': !clickable,
15
31
  'px-0.5 py-px text-3xs': size === 'xs',
16
32
  'px-1 py-px text-3xs': size === 'sm',
17
33
  'px-1.5 py-0.5 text-2xs': size === 'base',
18
- 'bg-orange-500/15 text-orange-800 dark:text-orange-300': color === 'orange',
19
- 'bg-indigo-500/15 text-indigo-800 dark:text-indigo-300': color === 'indigo',
20
- 'bg-green-500/15 text-green-800 dark:text-green-300': color === 'green',
21
- 'bg-gray-500/20 text-gray-700 dark:text-gray-300': color === 'gray',
34
+ 'border-transparent': variant === 'filled',
35
+ 'border border-gray-300 bg-transparent text-gray-900 dark:border-gray-700 dark:text-gray-100': variant === 'ghost' && !active,
36
+ 'hover:border-gray-400 dark:hover:border-gray-600': variant === 'ghost' && !active && clickable,
37
+ 'border border-indigo-700 bg-transparent text-indigo-800 dark:border-indigo-300 dark:text-indigo-300': variant === 'ghost' && active && color === 'indigo',
38
+ 'border border-orange-700 bg-transparent text-orange-800 dark:border-orange-300 dark:text-orange-300': variant === 'ghost' && active && color === 'orange',
39
+ 'border border-green-700 bg-transparent text-green-800 dark:border-green-300 dark:text-green-300': variant === 'ghost' && active && color === 'green',
40
+ 'border border-gray-700 bg-transparent text-gray-700 dark:border-gray-300 dark:text-gray-300': variant === 'ghost' && active && color === 'gray',
41
+ 'bg-orange-500/15 text-orange-800 dark:text-orange-300': variant === 'filled' && color === 'orange' && (!clickable || active),
42
+ 'bg-indigo-500/15 text-indigo-800 dark:text-indigo-300': variant === 'filled' && color === 'indigo' && (!clickable || active),
43
+ 'bg-green-500/15 text-green-800 dark:text-green-300': variant === 'filled' && color === 'green' && (!clickable || active),
44
+ 'bg-gray-500/20 text-gray-700 dark:text-gray-300': variant === 'filled' && (color === 'gray' || (clickable && !active)),
22
45
  }"
46
+ :type="clickable ? 'button' : undefined"
47
+ @click="onClick"
23
48
  >
24
49
  <slot>{{ text }}</slot>
25
- </span>
50
+ </component>
26
51
  </template>
@@ -328,13 +328,18 @@ export interface BaseSpinner {
328
328
  export type BaseStatus = | 'error' | 'info' | 'success' | 'warning'
329
329
 
330
330
  export interface BaseTag {
331
+ active?: boolean
332
+ clickable?: boolean
331
333
  color?: BaseTagColor
332
334
  size?: BaseTagSize
333
335
  text?: BaseTextText
336
+ variant?: BaseTagVariant
334
337
  }
335
338
 
336
339
  export type BaseTagColor = 'gray' | 'green' | 'indigo' | 'orange'
337
340
 
341
+ export type BaseTagVariant = 'filled' | 'ghost'
342
+
338
343
  export interface BaseTagItem extends BaseTag {
339
344
  id?: number | string
340
345
  order?: number
@@ -73,6 +73,7 @@ declare global {
73
73
  type BaseTagItem = import('./bases').BaseTagItem
74
74
  type BaseTags = import('./bases').BaseTags
75
75
  type BaseTagSize = import('./bases').BaseTagSize
76
+ type BaseTagVariant = import('./bases').BaseTagVariant
76
77
  type BaseText = import('./bases').BaseText
77
78
  type BaseTextText = import('./bases').BaseTextText
78
79
  type BaseToast = import('./bases').BaseToast
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saasmakers/ui",
3
- "version": "2.0.55",
3
+ "version": "2.0.57",
4
4
  "private": false,
5
5
  "description": "Reusable Nuxt UI components for SaaS Makers projects",
6
6
  "license": "MIT",