@saasmakers/ui 2.0.54 → 2.0.56

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.
@@ -44,7 +44,7 @@ function onClick(event: MouseEvent) {
44
44
 
45
45
  <template>
46
46
  <button
47
- class="relative flex select-none flex-col items-center rounded-lg text-center transition-colors"
47
+ class="relative flex flex-col select-none items-center rounded-lg text-center transition-colors"
48
48
  :aria-busy="loading"
49
49
  :class="{
50
50
  'cursor-not-allowed opacity-50': disabled,
@@ -8,10 +8,10 @@ withDefaults(defineProps<BaseCircle>(), { color: 'indigo' })
8
8
  <span
9
9
  class="inline-block size-2.5 shrink-0 rounded-full"
10
10
  :class="{
11
- 'bg-red-500': color === 'red',
12
- 'bg-amber-500': color === 'amber',
13
- 'bg-indigo-500': color === 'indigo',
14
- 'bg-green-500': color === 'green',
11
+ 'bg-red-600 dark:bg-red-400': color === 'red',
12
+ 'bg-amber-600 dark:bg-amber-400': color === 'amber',
13
+ 'bg-indigo-600 dark:bg-indigo-400': color === 'indigo',
14
+ 'bg-green-600 dark:bg-green-400': color === 'green',
15
15
  }"
16
16
  />
17
17
  </template>
@@ -1,24 +1,50 @@
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 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-100 text-orange-700 dark:bg-orange-950 dark:text-orange-300': color === 'orange',
19
- 'bg-gray-200 text-gray-600 dark:bg-gray-800 dark:text-gray-400': color === 'gray',
34
+ 'border border-gray-300 bg-transparent text-gray-900 dark:border-gray-700 dark:text-gray-100': variant === 'ghost' && !active,
35
+ 'hover:border-gray-400 dark:hover:border-gray-600': variant === 'ghost' && !active && clickable,
36
+ 'border border-indigo-700 bg-transparent text-indigo-800 dark:border-indigo-300 dark:text-indigo-300': variant === 'ghost' && active && color === 'indigo',
37
+ 'border border-orange-700 bg-transparent text-orange-800 dark:border-orange-300 dark:text-orange-300': variant === 'ghost' && active && color === 'orange',
38
+ 'border border-green-700 bg-transparent text-green-800 dark:border-green-300 dark:text-green-300': variant === 'ghost' && active && color === 'green',
39
+ 'border border-gray-700 bg-transparent text-gray-700 dark:border-gray-300 dark:text-gray-300': variant === 'ghost' && active && color === 'gray',
40
+ 'bg-orange-500/15 text-orange-800 dark:text-orange-300': variant === 'filled' && color === 'orange' && (!clickable || active),
41
+ 'bg-indigo-500/15 text-indigo-800 dark:text-indigo-300': variant === 'filled' && color === 'indigo' && (!clickable || active),
42
+ 'bg-green-500/15 text-green-800 dark:text-green-300': variant === 'filled' && color === 'green' && (!clickable || active),
43
+ 'bg-gray-500/20 text-gray-700 dark:text-gray-300': variant === 'filled' && (color === 'gray' || (clickable && !active)),
20
44
  }"
45
+ :type="clickable ? 'button' : undefined"
46
+ @click="onClick"
21
47
  >
22
48
  <slot>{{ text }}</slot>
23
- </span>
49
+ </component>
24
50
  </template>
@@ -328,12 +328,17 @@ 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
- export type BaseTagColor = 'gray' | 'orange'
339
+ export type BaseTagColor = 'gray' | 'green' | 'indigo' | 'orange'
340
+
341
+ export type BaseTagVariant = 'filled' | 'ghost'
337
342
 
338
343
  export interface BaseTagItem extends BaseTag {
339
344
  id?: number | string
@@ -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.54",
3
+ "version": "2.0.56",
4
4
  "private": false,
5
5
  "description": "Reusable Nuxt UI components for SaaS Makers projects",
6
6
  "license": "MIT",