@imaginario27/air-ui-ds 1.0.23 → 1.1.0
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.
- package/components/accordions/AccordionItem.vue +1 -1
- package/components/alerts/Alert.vue +19 -22
- package/components/badges/Badge.vue +32 -25
- package/components/badges/IconBadge.vue +7 -7
- package/components/badges/IconTextBadge.vue +2 -2
- package/components/breadcrumbs/Breadcrumbs.vue +92 -27
- package/components/buttons/ActionButton.vue +34 -68
- package/components/buttons/ActionIconButton.vue +11 -39
- package/components/buttons/AlertButton.vue +8 -13
- package/components/buttons/AlertIconButton.vue +6 -7
- package/components/buttons/CopyButton.vue +4 -4
- package/components/buttons/options/OptionButton.vue +2 -2
- package/components/buttons/toggle/ToggleButton.vue +8 -10
- package/components/cards/specific/ContactDetailsCard.vue +4 -8
- package/components/cards/specific/FeatureCard.vue +2 -2
- package/components/cards/specific/HelpTopicCard.vue +4 -4
- package/components/cards/specific/subscription/SubscriptionPlanCard.vue +6 -6
- package/components/cards/specific/subscription/UniqueSubscriptionPlanCard.vue +1 -1
- package/components/collapsibles/Collapsible.vue +1 -1
- package/components/content/ContentItem.vue +2 -2
- package/components/content/ContentItemImage.vue +12 -14
- package/components/dropdowns/DropdownMenuItem.vue +10 -10
- package/components/dropdowns/DropdownSelect.vue +5 -16
- package/components/dropdowns/DropdownSelectItem.vue +13 -23
- package/components/empty-states/EmptyState.vue +21 -27
- package/components/features/Feature.vue +11 -48
- package/components/forms/fields/ButtonField.vue +2 -9
- package/components/forms/fields/CheckboxField.vue +9 -8
- package/components/forms/fields/DataField.vue +1 -1
- package/components/forms/fields/FileUploadField.vue +6 -6
- package/components/forms/fields/InputField.vue +17 -28
- package/components/forms/fields/RepeaterField.vue +2 -2
- package/components/forms/fields/SearchField.vue +7 -10
- package/components/forms/fields/SliderField.vue +16 -19
- package/components/forms/fields/SwitchField.vue +12 -34
- package/components/forms/fields/TextareaField.vue +7 -5
- package/components/forms/fields/radio/RadioButtonField.vue +6 -7
- package/components/icons/ContainedIcon.vue +5 -15
- package/components/icons/Icon.vue +13 -22
- package/components/layouts/ErrorDisplay.vue +3 -3
- package/components/layouts/headers/CompactHeader.vue +4 -4
- package/components/layouts/headers/ContentPageHeader.vue +1 -1
- package/components/lists/List.vue +1 -1
- package/components/lists/ListItem.vue +11 -14
- package/components/loaders/LoadingScreen.vue +3 -3
- package/components/modals/DangerModalDialog.vue +4 -4
- package/components/modals/InfoModalDialog.vue +3 -3
- package/components/modals/ModalDialog.vue +1 -1
- package/components/modals/SuccessModalDialog.vue +2 -2
- package/components/navigation/links/NavLink.vue +10 -10
- package/components/navigation/nav-sidebar/BottomUserNavBar.vue +3 -3
- package/components/navigation/nav-sidebar/NavSidebar.vue +9 -9
- package/components/navigation/nav-sidebar/NavSidebarMenuItem.vue +7 -9
- package/components/navigation/nav-sidebar/NavSidebarMenuSectionTitle.vue +4 -5
- package/components/pagination/ButtonPagination.vue +6 -10
- package/components/pagination/SimplePagination.vue +2 -2
- package/components/password/SecurePasswordCondition.vue +5 -6
- package/components/rating/InteractiveRating.vue +6 -6
- package/components/rating/Rating.vue +6 -6
- package/components/rating/RatingItem.vue +12 -13
- package/components/steppers/CircleStepper.vue +11 -13
- package/components/steppers/Step.vue +2 -2
- package/components/steppers/StepIndicator.vue +29 -28
- package/components/steppers/TabStepper.vue +1 -1
- package/components/steppers/vertical-stepper/VerticalStep.vue +2 -2
- package/components/steppers/vertical-stepper/VerticalStepper.vue +1 -1
- package/components/tabs/Tab.vue +4 -9
- package/models/enums/dropdowns.ts +1 -0
- package/models/types/buttons.ts +1 -1
- package/models/types/selects.ts +1 -2
- package/nuxt.config.ts +1 -1
- package/package.json +1 -2
- package/components/navigation/nav-menu/NavFooterMenu.vue +0 -90
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
<span
|
|
17
17
|
v-if="status === StepStatus.NONE"
|
|
18
18
|
:class="[
|
|
19
|
+
'flex items-center justify-center',
|
|
19
20
|
'font-bold',
|
|
20
21
|
stepNumberSizeClass,
|
|
21
22
|
textColorClass,
|
|
@@ -25,10 +26,9 @@
|
|
|
25
26
|
{{ step }}
|
|
26
27
|
</template>
|
|
27
28
|
<template v-else-if="type === StepIndicatorType.ICON && stepIcon">
|
|
28
|
-
<
|
|
29
|
-
:
|
|
30
|
-
:
|
|
31
|
-
preserveAspectRatio="xMidYMid meet"
|
|
29
|
+
<Icon
|
|
30
|
+
:name="stepIcon"
|
|
31
|
+
:iconClass="iconSizeClass"
|
|
32
32
|
/>
|
|
33
33
|
</template>
|
|
34
34
|
</span>
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
<span
|
|
38
38
|
v-if="status === StepStatus.INACTIVE"
|
|
39
39
|
:class="[
|
|
40
|
+
'flex items-center justify-center',
|
|
40
41
|
'font-bold',
|
|
41
42
|
stepNumberSizeClass,
|
|
42
43
|
textColorClass,
|
|
@@ -46,10 +47,9 @@
|
|
|
46
47
|
{{ step }}
|
|
47
48
|
</template>
|
|
48
49
|
<template v-else-if="type === StepIndicatorType.ICON && stepIcon">
|
|
49
|
-
<
|
|
50
|
-
:
|
|
51
|
-
:
|
|
52
|
-
preserveAspectRatio="xMidYMid meet"
|
|
50
|
+
<Icon
|
|
51
|
+
:name="stepIcon"
|
|
52
|
+
:iconClass="iconSizeClass"
|
|
53
53
|
/>
|
|
54
54
|
</template>
|
|
55
55
|
</span>
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
<span
|
|
59
59
|
v-else-if="status === StepStatus.CURRENT"
|
|
60
60
|
:class="[
|
|
61
|
+
'flex items-center justify-center',
|
|
61
62
|
'font-bold text-text-primary-brand-default',
|
|
62
63
|
stepNumberSizeClass,
|
|
63
64
|
textColorClass,
|
|
@@ -67,10 +68,9 @@
|
|
|
67
68
|
{{ step }}
|
|
68
69
|
</template>
|
|
69
70
|
<template v-else-if="type === StepIndicatorType.ICON && stepIcon">
|
|
70
|
-
<
|
|
71
|
-
:
|
|
72
|
-
:
|
|
73
|
-
preserveAspectRatio="xMidYMid meet"
|
|
71
|
+
<Icon
|
|
72
|
+
:name="stepIcon"
|
|
73
|
+
:iconClass="iconSizeClass"
|
|
74
74
|
/>
|
|
75
75
|
</template>
|
|
76
76
|
<template v-else-if="type === StepIndicatorType.EMPTY">
|
|
@@ -87,13 +87,14 @@
|
|
|
87
87
|
<!-- COMPLETED -->
|
|
88
88
|
<span
|
|
89
89
|
v-else-if="status === StepStatus.COMPLETED"
|
|
90
|
-
class="
|
|
90
|
+
:class="[
|
|
91
|
+
'text-sm font-semibold text-text-primary-brand-default',
|
|
92
|
+
'flex items-center justify-center',
|
|
93
|
+
]"
|
|
91
94
|
>
|
|
92
|
-
<
|
|
93
|
-
:
|
|
94
|
-
:
|
|
95
|
-
preserveAspectRatio="xMidYMid meet"
|
|
96
|
-
class="text-icon-neutral-on-filled-bg"
|
|
95
|
+
<Icon
|
|
96
|
+
:name="completedIcon"
|
|
97
|
+
:iconClass="['!text-icon-neutral-on-filled-bg', iconSizeClass]"
|
|
97
98
|
/>
|
|
98
99
|
</span>
|
|
99
100
|
</div>
|
|
@@ -120,10 +121,10 @@ const props = defineProps({
|
|
|
120
121
|
type: Number as PropType<number>,
|
|
121
122
|
default: 1,
|
|
122
123
|
},
|
|
123
|
-
stepIcon: String as PropType<
|
|
124
|
+
stepIcon: String as PropType<string>,
|
|
124
125
|
completedIcon: {
|
|
125
|
-
type: String as PropType<
|
|
126
|
-
default: '
|
|
126
|
+
type: String as PropType<string>,
|
|
127
|
+
default: 'mdi:check',
|
|
127
128
|
},
|
|
128
129
|
isHovered: {
|
|
129
130
|
type: Boolean as PropType<boolean>,
|
|
@@ -160,15 +161,15 @@ const containerBorderClass = computed(() => {
|
|
|
160
161
|
return base
|
|
161
162
|
})
|
|
162
163
|
|
|
163
|
-
const
|
|
164
|
+
const iconSizeClass = computed(() => {
|
|
164
165
|
const variant = {
|
|
165
|
-
[StepIndicatorSize.XL]: '
|
|
166
|
-
[StepIndicatorSize.LG]: '
|
|
167
|
-
[StepIndicatorSize.MD]: '
|
|
168
|
-
[StepIndicatorSize.SM]: '
|
|
169
|
-
[StepIndicatorSize.XS]: '
|
|
166
|
+
[StepIndicatorSize.XL]: 'w-[24px] h-[24px] min-w-[24px] min-h-[24px]',
|
|
167
|
+
[StepIndicatorSize.LG]: 'w-[20px] h-[20px] min-w-[20px] min-h-[20px]',
|
|
168
|
+
[StepIndicatorSize.MD]: 'w-[20px] h-[20px] min-w-[20px] min-h-[20px]',
|
|
169
|
+
[StepIndicatorSize.SM]: 'w-[16px] h-[16px] min-w-[16px] min-h-[16px]',
|
|
170
|
+
[StepIndicatorSize.XS]: 'w-[16px] h-[16px] min-w-[16px] min-h-[16px]',
|
|
170
171
|
}
|
|
171
|
-
return variant[props.size as StepIndicatorSize] || '
|
|
172
|
+
return variant[props.size as StepIndicatorSize] || 'w-[24px] h-[24px] min-w-[24px] min-h-[24px]'
|
|
172
173
|
})
|
|
173
174
|
|
|
174
175
|
const stepNumberSizeClass = computed(() => {
|
|
@@ -76,7 +76,7 @@ const props = defineProps({
|
|
|
76
76
|
},
|
|
77
77
|
type: String as PropType<StepIndicatorType>,
|
|
78
78
|
size: String as PropType<StepIndicatorSize>,
|
|
79
|
-
completedIcon: String as PropType<
|
|
79
|
+
completedIcon: String as PropType<string>,
|
|
80
80
|
isInteractive: {
|
|
81
81
|
type: Boolean as PropType<boolean>,
|
|
82
82
|
default: false,
|
|
@@ -125,8 +125,8 @@ const props = defineProps({
|
|
|
125
125
|
default: StepIndicatorSize.SM,
|
|
126
126
|
validator: (value: StepIndicatorSize) => Object.values(StepIndicatorSize).includes(value),
|
|
127
127
|
},
|
|
128
|
-
stepIcon: String as PropType<
|
|
129
|
-
stepCompletedIcon: String as PropType<
|
|
128
|
+
stepIcon: String as PropType<string>,
|
|
129
|
+
stepCompletedIcon: String as PropType<string>,
|
|
130
130
|
isLast: {
|
|
131
131
|
type: Boolean as PropType<boolean>,
|
|
132
132
|
default: false,
|
|
@@ -39,7 +39,7 @@ defineProps({
|
|
|
39
39
|
items: Array as PropType<VerticalStepperItem[]>,
|
|
40
40
|
stepType: String as PropType<StepIndicatorType>,
|
|
41
41
|
stepSize: String as PropType<StepIndicatorSize>,
|
|
42
|
-
stepCompletedIcon: String as PropType<
|
|
42
|
+
stepCompletedIcon: String as PropType<string>,
|
|
43
43
|
hasStepper: {
|
|
44
44
|
type: Boolean as PropType<boolean>,
|
|
45
45
|
default: true,
|
package/components/tabs/Tab.vue
CHANGED
|
@@ -10,14 +10,9 @@
|
|
|
10
10
|
styleClass
|
|
11
11
|
]"
|
|
12
12
|
>
|
|
13
|
-
<
|
|
13
|
+
<Icon
|
|
14
14
|
v-if="decoration === TabDecoration.ICON"
|
|
15
|
-
|
|
16
|
-
preserveAspectRatio="xMidYMid meet"
|
|
17
|
-
:class="[
|
|
18
|
-
'min-w-[20px]'
|
|
19
|
-
]"
|
|
20
|
-
:icon
|
|
15
|
+
:name="icon"
|
|
21
16
|
/>
|
|
22
17
|
|
|
23
18
|
<template v-if="decoration === TabDecoration.IMAGE">
|
|
@@ -79,8 +74,8 @@ const props = defineProps({
|
|
|
79
74
|
validator: (value: TabDecoration) => Object.values(TabDecoration).includes(value),
|
|
80
75
|
},
|
|
81
76
|
icon: {
|
|
82
|
-
type: String as PropType<
|
|
83
|
-
default: '
|
|
77
|
+
type: String as PropType<string>,
|
|
78
|
+
default: 'mdi:help',
|
|
84
79
|
},
|
|
85
80
|
imgUrl: String as PropType<string>,
|
|
86
81
|
active: {
|
package/models/types/buttons.ts
CHANGED
package/models/types/selects.ts
CHANGED
package/nuxt.config.ts
CHANGED
|
@@ -10,7 +10,7 @@ export default defineNuxtConfig({
|
|
|
10
10
|
'../air-ui-utils',
|
|
11
11
|
],
|
|
12
12
|
|
|
13
|
-
modules: ["@nuxt/image", "
|
|
13
|
+
modules: ["@nuxt/image", "@nuxt/eslint", '@vueuse/nuxt', "@nuxt/icon"],
|
|
14
14
|
|
|
15
15
|
plugins: ["@/plugins/vue3-toastify"],
|
|
16
16
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@imaginario27/air-ui-ds",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"author": "imaginario27",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://air-ui.netlify.app/",
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
"jspdf": "3.0.3",
|
|
36
36
|
"jspdf-autotable": "5.0.2",
|
|
37
37
|
"nuxt": "4.1.2",
|
|
38
|
-
"nuxt-mdi": "2.1.1",
|
|
39
38
|
"qrcode.vue": "3.6.0",
|
|
40
39
|
"tailwindcss": "4.1.13",
|
|
41
40
|
"vue": "3.5.22",
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div
|
|
3
|
-
:class="[
|
|
4
|
-
orientation === Orientation.HORIZONTAL ? 'flex flex-col gap-2' : 'flex gap-6 flex-wrap',
|
|
5
|
-
]"
|
|
6
|
-
>
|
|
7
|
-
<div>
|
|
8
|
-
<p
|
|
9
|
-
v-if="title"
|
|
10
|
-
class="text-sm font-semibold text-theme-neutral-50 mb-4"
|
|
11
|
-
>
|
|
12
|
-
{{ title }}
|
|
13
|
-
</p>
|
|
14
|
-
|
|
15
|
-
<!-- Solo SVGs -->
|
|
16
|
-
<div
|
|
17
|
-
v-if="onlySvgs"
|
|
18
|
-
class="flex gap-3 flex-wrap"
|
|
19
|
-
>
|
|
20
|
-
<NuxtLink
|
|
21
|
-
v-for="(item, index) in items"
|
|
22
|
-
:key="index"
|
|
23
|
-
:to="item.path"
|
|
24
|
-
class="inline-block"
|
|
25
|
-
target="_blank"
|
|
26
|
-
>
|
|
27
|
-
<SVGImage
|
|
28
|
-
v-if="item.svg"
|
|
29
|
-
:src="item.svg"
|
|
30
|
-
alt="icon"
|
|
31
|
-
class="max-w-[20px] filter invert"
|
|
32
|
-
/>
|
|
33
|
-
</NuxtLink>
|
|
34
|
-
</div>
|
|
35
|
-
|
|
36
|
-
<!-- Texto / Iconos -->
|
|
37
|
-
<div
|
|
38
|
-
v-else
|
|
39
|
-
:class="[
|
|
40
|
-
orientation === Orientation.VERTICAL
|
|
41
|
-
? 'flex flex-col gap-4'
|
|
42
|
-
: 'flex gap-6 flex-wrap',
|
|
43
|
-
]"
|
|
44
|
-
>
|
|
45
|
-
<NuxtLink
|
|
46
|
-
v-for="(item, index) in items"
|
|
47
|
-
:key="index"
|
|
48
|
-
:to="item.path"
|
|
49
|
-
class="flex items-center gap-2 text-sm text-theme-neutral-50 hover:underline"
|
|
50
|
-
>
|
|
51
|
-
<MdiIcon
|
|
52
|
-
v-if="item.icon"
|
|
53
|
-
:icon="item.icon as any"
|
|
54
|
-
size="20"
|
|
55
|
-
preserveAspectRatio="xMidYMid meet"
|
|
56
|
-
/>
|
|
57
|
-
<span v-if="item.text">{{ item.text }}</span>
|
|
58
|
-
</NuxtLink>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
|
|
64
|
-
<script setup lang="ts">
|
|
65
|
-
// Props
|
|
66
|
-
|
|
67
|
-
type NavItem = {
|
|
68
|
-
path: string
|
|
69
|
-
text?: string
|
|
70
|
-
icon?: string
|
|
71
|
-
svg?: string
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
const props = defineProps({
|
|
75
|
-
title: {
|
|
76
|
-
type: String,
|
|
77
|
-
default: '',
|
|
78
|
-
},
|
|
79
|
-
items: {
|
|
80
|
-
type: Array as PropType<NavItem[]>,
|
|
81
|
-
required: true,
|
|
82
|
-
},
|
|
83
|
-
orientation: {
|
|
84
|
-
type: String as PropType<Orientation>,
|
|
85
|
-
default: Orientation.VERTICAL,
|
|
86
|
-
},
|
|
87
|
-
})
|
|
88
|
-
|
|
89
|
-
const onlySvgs = computed(() => props.items.every(item => item.svg && !item.text && !item.icon))
|
|
90
|
-
</script>
|