@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-
|
|
97
|
+
'text-2xl': (size === '2xl' && !uppercase) || (size === '3xl' && uppercase),
|
|
100
98
|
'text-2xs': (size === '2xs') || (size === 'xs' && uppercase),
|
|
101
|
-
'text-
|
|
102
|
-
'text-
|
|
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-
|
|
107
|
-
'
|
|
108
|
-
'text-
|
|
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
|
|
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:
|
|
15
|
-
click: [event: MouseEvent, tabValue:
|
|
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:
|
|
29
|
-
|
|
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 =
|
|
28
|
+
modelValue.value = tabValue
|
|
53
29
|
|
|
54
|
-
emit('click', event, tabValue,
|
|
30
|
+
emit('click', event, tabValue, tabValue)
|
|
55
31
|
}
|
|
56
32
|
</script>
|
|
57
33
|
|
package/app/types/bases.d.ts
CHANGED
|
@@ -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?:
|
|
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?:
|
|
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?:
|
|
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
|
package/app/types/fields.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ export interface FieldEmojis {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
export interface FieldInput {
|
|
38
|
-
alignment?:
|
|
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:
|
|
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:
|
|
152
|
+
value: string
|
|
156
153
|
}
|
|
157
154
|
|
|
158
155
|
export type FieldTabsAction = 'added' | 'removed'
|