@saasmakers/ui 0.1.76 → 0.1.79

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.
@@ -3,7 +3,9 @@ import type { BaseText } from '../../types/bases'
3
3
  import { NuxtLinkLocale } from '#components'
4
4
 
5
5
  const props = withDefaults(defineProps<BaseText>(), {
6
+ alignment: undefined,
6
7
  background: undefined,
8
+ block: false,
7
9
  bold: false,
8
10
  hasMargin: false,
9
11
  maxCharacters: 0,
@@ -77,35 +79,39 @@ function onShowMore() {
77
79
  <component
78
80
  :is="to ? NuxtLinkLocale : 'div'"
79
81
  :class="{
80
- 'font-bold': bold,
81
- 'font-medium': uppercase || !bold,
82
- 'truncate': truncate,
83
- 'underline text-indigo-700 dark:text-indigo-300': !!to,
84
- 'uppercase': uppercase,
85
- 'whitespace-nowrap': noWrap,
86
- 'underline': underline,
87
82
  'bg-gray-100 dark:bg-gray-900': background === 'gray',
88
83
  'bg-white dark:bg-gray-900': background === 'white',
84
+ 'block': block,
85
+ 'font-bold': bold,
86
+ 'font-medium': uppercase || !bold,
89
87
  'ml-0.5': ['3xs'].includes(size) && !reverse && hasMargin,
90
88
  'ml-1.5': ['2xs', 'xs', 'sm'].includes(size) && !reverse && hasMargin,
91
- 'ml-2': ['base', 'lg'].includes(size) && !reverse && hasMargin,
92
89
  'ml-2.5': ['xl', '2xl'].includes(size) && !reverse && hasMargin,
90
+ 'ml-2': ['base', 'lg'].includes(size) && !reverse && hasMargin,
93
91
  'ml-3': ['3xl', '4xl'].includes(size) && !reverse && hasMargin,
94
92
  'mr-0.5': ['3xs'].includes(size) && reverse && hasMargin,
95
93
  'mr-1.5': ['2xs', 'xs', 'sm'].includes(size) && reverse && hasMargin,
96
- 'mr-2': ['base', 'lg'].includes(size) && reverse && hasMargin,
97
94
  'mr-2.5': ['xl', '2xl'].includes(size) && reverse && hasMargin,
95
+ 'mr-2': ['base', 'lg'].includes(size) && reverse && hasMargin,
98
96
  'mr-3': ['3xl', '4xl'].includes(size) && reverse && hasMargin,
99
- 'text-3xs': (size === '3xs') && !uppercase,
97
+ 'text-2xl': (size === '2xl' && !uppercase) || (size === '3xl' && uppercase),
100
98
  'text-2xs': (size === '2xs') || (size === 'xs' && uppercase),
101
- 'text-xs': (size === 'xs' && !uppercase) || (size === 'sm' && uppercase),
102
- 'text-sm': (size === 'sm' && !uppercase) || (size === 'base' && uppercase),
99
+ 'text-3xl': (size === '3xl' && !uppercase) || (size === '4xl' && uppercase),
100
+ 'text-3xs': (size === '3xs') && !uppercase,
101
+ 'text-4xl': size === '4xl' && !uppercase,
103
102
  'text-base': (size === 'base' && !uppercase) || (size === 'lg' && uppercase),
103
+ 'text-center': alignment === 'center',
104
+ 'text-left': alignment === 'left',
104
105
  'text-lg': (size === 'lg' && !uppercase) || (size === 'xl' && uppercase),
106
+ 'text-right': alignment === 'right',
107
+ 'text-sm': (size === 'sm' && !uppercase) || (size === 'base' && uppercase),
105
108
  'text-xl': (size === 'xl' && !uppercase) || (size === '2xl' && uppercase),
106
- 'text-2xl': (size === '2xl' && !uppercase) || (size === '3xl' && uppercase),
107
- 'text-3xl': (size === '3xl' && !uppercase) || (size === '4xl' && uppercase),
108
- 'text-4xl': size === '4xl' && !uppercase,
109
+ 'text-xs': (size === 'xs' && !uppercase) || (size === 'sm' && uppercase),
110
+ 'truncate': truncate,
111
+ 'underline text-indigo-700 dark:text-indigo-300': !!to,
112
+ 'underline': underline,
113
+ 'uppercase': uppercase,
114
+ 'whitespace-nowrap': noWrap,
109
115
  }"
110
116
  :to="to"
111
117
  @click="onClick"
@@ -2,56 +2,32 @@
2
2
  import type { FieldTabs, FieldTabsAction } from '../../types/fields'
3
3
  import { NuxtLinkLocale } from '#components'
4
4
 
5
- const props = withDefaults(defineProps<Omit<FieldTabs, 'modelValue'>>(), {
5
+ const _props = withDefaults(defineProps<Omit<FieldTabs, 'modelValue'>>(), {
6
6
  minimizeOnMobile: false,
7
- multiple: false,
8
7
  size: 'base',
9
8
  tabs: undefined,
10
9
  theme: 'rounded',
11
10
  })
12
11
 
13
12
  const emit = defineEmits<{
14
- change: [event: MouseEvent, tabValue: number | string, action: FieldTabsAction, activeTabs: Array<number | string>]
15
- click: [event: MouseEvent, tabValue: number | string, activeTabs: Array<number | string>]
13
+ change: [event: MouseEvent, tabValue: string, action: FieldTabsAction, activeTab: string]
14
+ click: [event: MouseEvent, tabValue: string, activeTab: string]
16
15
  }>()
17
16
 
18
- const modelValue = defineModel<FieldTabs['modelValue']>({ default: () => [] })
19
-
20
- function isTabActive(tabValue: number | string) {
21
- if (props.multiple) {
22
- return Array.isArray(modelValue.value) && modelValue.value.includes(tabValue)
23
- }
17
+ const modelValue = defineModel<FieldTabs['modelValue']>({ default: '' })
24
18
 
19
+ function isTabActive(tabValue: string) {
25
20
  return modelValue.value === tabValue
26
21
  }
27
22
 
28
- function onTabClick(event: MouseEvent, tabValue: number | string) {
29
- let activeTabs = [tabValue]
30
-
31
- // When multiple values are not allowed and tab is not already active
32
- if (!props.multiple && modelValue.value !== tabValue) {
33
- emit('change', event, tabValue, 'added', activeTabs)
34
- }
35
-
36
- // When multiple values are allowed
37
- if (props.multiple) {
38
- // Remove the tab when already active
39
- if (Array.isArray(modelValue.value) && modelValue.value.includes(tabValue)) {
40
- activeTabs = modelValue.value.filter(item => item !== tabValue)
41
-
42
- emit('change', event, tabValue, 'removed', activeTabs)
43
- }
44
- // Push the tab when not already active
45
- else {
46
- activeTabs = Array.isArray(modelValue.value) ? [...modelValue.value, tabValue] : [tabValue]
47
-
48
- emit('change', event, tabValue, 'added', activeTabs)
49
- }
23
+ function onTabClick(event: MouseEvent, tabValue: string) {
24
+ if (modelValue.value !== tabValue) {
25
+ emit('change', event, tabValue, 'added', tabValue)
50
26
  }
51
27
 
52
- modelValue.value = props.multiple ? activeTabs : tabValue
28
+ modelValue.value = tabValue
53
29
 
54
- emit('click', event, tabValue, activeTabs)
30
+ emit('click', event, tabValue, tabValue)
55
31
  }
56
32
  </script>
57
33
 
@@ -1,3 +1,5 @@
1
+ export type BaseAlignment = 'center' | 'left' | 'right'
2
+
1
3
  export type BaseBackground = 'gray' | 'white'
2
4
 
3
5
  export type BaseColor
@@ -134,13 +136,11 @@ export interface BaseEmoji {
134
136
  }
135
137
 
136
138
  export interface BaseHeading {
137
- alignment?: BaseHeadingAlignment
139
+ alignment?: BaseAlignment
138
140
  size?: BaseHeadingSize
139
141
  tag?: BaseHeadingTag
140
142
  }
141
143
 
142
- export type BaseHeadingAlignment = 'center' | 'left' | 'right'
143
-
144
144
  export type BaseHeadingSize
145
145
  = | 'base'
146
146
  | 'lg'
@@ -181,7 +181,7 @@ export interface BaseMessage {
181
181
  }
182
182
 
183
183
  export interface BaseMetric {
184
- alignment?: BaseMetricAlignment
184
+ alignment?: BaseAlignment
185
185
  performance?: BaseMetricPerformance
186
186
  performanceTooltip?: string
187
187
  size?: BaseMetricSize
@@ -189,8 +189,6 @@ export interface BaseMetric {
189
189
  value?: number | string
190
190
  }
191
191
 
192
- export type BaseMetricAlignment = 'center' | 'left' | 'right'
193
-
194
192
  export type BaseMetricPerformance = 'down' | 'equal' | 'up'
195
193
 
196
194
  export type BaseMetricSize = 'base' | 'sm'
@@ -215,12 +213,10 @@ export type BaseOverlayOpacity
215
213
  export type BaseOverlayPosition = 'absolute' | 'fixed'
216
214
 
217
215
  export interface BaseParagraph {
218
- alignment?: BaseParagraphAlignment
216
+ alignment?: BaseAlignment
219
217
  size?: BaseParagraphSize
220
218
  }
221
219
 
222
- export type BaseParagraphAlignment = 'center' | 'left' | 'right'
223
-
224
220
  export type BaseParagraphSize = 'base' | 'lg' | 'sm'
225
221
 
226
222
  export interface BasePower {
@@ -337,7 +333,9 @@ export interface BaseTags {
337
333
  }
338
334
 
339
335
  export interface BaseText {
336
+ alignment?: BaseAlignment
340
337
  background?: BaseTextBackground
338
+ block?: boolean
341
339
  bold?: boolean
342
340
  hasMargin?: boolean
343
341
  maxCharacters?: number
@@ -35,7 +35,7 @@ export interface FieldEmojis {
35
35
  }
36
36
 
37
37
  export interface FieldInput {
38
- alignment?: FieldInputAlignment
38
+ alignment?: BaseAlignment
39
39
  autocomplete?: boolean
40
40
  autofocus?: boolean
41
41
  background?: FieldBackground
@@ -60,8 +60,6 @@ export interface FieldInput {
60
60
  validation?: VuelidateValidation
61
61
  }
62
62
 
63
- export type FieldInputAlignment = 'center' | 'left' | 'right'
64
-
65
63
  export type FieldInputBorder = 'bottom' | 'full' | 'none'
66
64
 
67
65
  export type FieldInputType
@@ -140,8 +138,7 @@ export type FieldSelectMaxHeight = 'lg' | 'md' | 'sm' | 'xs'
140
138
 
141
139
  export interface FieldTabs {
142
140
  minimizeOnMobile?: boolean
143
- modelValue: Array<number | string> | number | string
144
- multiple?: boolean
141
+ modelValue: string
145
142
  size?: FieldSize
146
143
  tabs: FieldTabsTab[]
147
144
  theme?: FieldTabsTheme
@@ -152,7 +149,7 @@ export interface FieldTabsTab {
152
149
  icon?: string
153
150
  label: string
154
151
  to?: RouteLocationNamedI18n
155
- value: number | string
152
+ value: string
156
153
  }
157
154
 
158
155
  export type FieldTabsAction = 'added' | 'removed'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@saasmakers/ui",
3
3
  "type": "module",
4
- "version": "0.1.76",
4
+ "version": "0.1.79",
5
5
  "private": false,
6
6
  "description": "Reusable Nuxt UI components for SaaS Makers projects",
7
7
  "license": "MIT",