@saasmakers/ui 0.1.57 → 0.1.59
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/app/app.config.ts +1 -0
- package/app/components/bases/BaseChart.vue +1 -1
- package/app/components/bases/BaseEmoji.vue +66 -0
- package/app/components/bases/BasePower.vue +53 -0
- package/app/types/bases.d.ts +50 -0
- package/app/types/global.d.ts +1 -0
- package/package.json +2 -1
- package/public/images/bases/BasePower/power-401.svg +271 -0
- package/public/images/bases/BasePower/power-404.svg +227 -0
- package/public/images/bases/BasePower/power-500.svg +227 -0
- package/public/images/bases/BasePower/power-angry.svg +66 -0
- package/public/images/bases/BasePower/power-bag.svg +98 -0
- package/public/images/bases/BasePower/power-bank.svg +508 -0
- package/public/images/bases/BasePower/power-book.svg +162 -0
- package/public/images/bases/BasePower/power-browser.svg +141 -0
- package/public/images/bases/BasePower/power-chair.svg +184 -0
- package/public/images/bases/BasePower/power-christmas.svg +678 -0
- package/public/images/bases/BasePower/power-city-bis.svg +1076 -0
- package/public/images/bases/BasePower/power-city.svg +1052 -0
- package/public/images/bases/BasePower/power-coffee.svg +123 -0
- package/public/images/bases/BasePower/power-computer-book.svg +264 -0
- package/public/images/bases/BasePower/power-computer-coffee.svg +263 -0
- package/public/images/bases/BasePower/power-dead.svg +68 -0
- package/public/images/bases/BasePower/power-easter.svg +473 -0
- package/public/images/bases/BasePower/power-hourglass.svg +362 -0
- package/public/images/bases/BasePower/power-invite.svg +226 -0
- package/public/images/bases/BasePower/power-ko.svg +66 -0
- package/public/images/bases/BasePower/power-love.svg +66 -0
- package/public/images/bases/BasePower/power-magic.svg +340 -0
- package/public/images/bases/BasePower/power-popcorn.svg +235 -0
- package/public/images/bases/BasePower/power-radar.svg +1 -0
- package/public/images/bases/BasePower/power-rocket.svg +615 -0
- package/public/images/bases/BasePower/power-smiling.svg +66 -0
- package/public/images/bases/BasePower/power-social-networks.svg +1 -0
- package/public/images/bases/BasePower/power-starwars.svg +607 -0
- package/public/images/bases/BasePower/power-teach.svg +148 -0
- package/public/images/bases/BasePower/power-typewriter.svg +358 -0
- package/public/images/bases/BasePower/power-website.svg +114 -0
- package/public/images/bases/BasePower/power-welcome.svg +525 -0
- package/public/images/bases/BasePower/power-writer.svg +199 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default defineAppConfig({ urls: { storage: 'https://resilienceclub.s3.fr-par.scw.cloud' } })
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import type { BaseEmoji } from '../../types/bases'
|
|
3
|
+
|
|
4
|
+
const props = withDefaults(defineProps<BaseEmoji>(), {
|
|
5
|
+
clickable: true,
|
|
6
|
+
emoji: undefined,
|
|
7
|
+
hasBox: false,
|
|
8
|
+
size: 'base',
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
const emit = defineEmits<{
|
|
12
|
+
click: [event: MouseEvent, emoji?: string]
|
|
13
|
+
}>()
|
|
14
|
+
|
|
15
|
+
const { urls } = useAppConfig()
|
|
16
|
+
|
|
17
|
+
function onClick(event: MouseEvent) {
|
|
18
|
+
emit('click', event, props.emoji)
|
|
19
|
+
}
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<template>
|
|
23
|
+
<span
|
|
24
|
+
class="flex items-center justify-center transition"
|
|
25
|
+
:class="{
|
|
26
|
+
'border border-gray-200 dark:border-gray-800 bg-gray-100 dark:bg-gray-900 shadow-inner': hasBox,
|
|
27
|
+
'cursor-pointer hover:border-gray-400 dark:hover:border-gray-600': clickable,
|
|
28
|
+
|
|
29
|
+
'rounded': ['xs'].includes(size) && hasBox,
|
|
30
|
+
'rounded-md': ['sm', 'base'].includes(size) && hasBox,
|
|
31
|
+
'rounded-lg': ['lg', 'xl'].includes(size) && hasBox,
|
|
32
|
+
|
|
33
|
+
'h-2 w-2': size === '3xs' && hasBox,
|
|
34
|
+
'h-4 w-4': size === '2xs' && hasBox,
|
|
35
|
+
'h-5 w-5': size === 'xs' && hasBox,
|
|
36
|
+
'h-6 w-6': size === 'sm' && hasBox,
|
|
37
|
+
'h-8.5 w-8.5': size === 'base' && hasBox,
|
|
38
|
+
'h-10 w-10': size === 'lg' && hasBox,
|
|
39
|
+
'h-12 w-12': size === 'xl' && hasBox,
|
|
40
|
+
'h-14 w-14': size === '2xl' && hasBox,
|
|
41
|
+
'h-16 w-16': size === '3xl' && hasBox,
|
|
42
|
+
'h-18 w-18': size === '4xl' && hasBox,
|
|
43
|
+
}"
|
|
44
|
+
@click="onClick"
|
|
45
|
+
>
|
|
46
|
+
<img
|
|
47
|
+
v-if="emoji"
|
|
48
|
+
class="flex"
|
|
49
|
+
:class="{
|
|
50
|
+
'h-2.5 w-2.5': size === '3xs',
|
|
51
|
+
'h-3 w-3': size === '2xs',
|
|
52
|
+
'h-3.5 w-3.5': size === 'xs',
|
|
53
|
+
'h-4 w-4': size === 'sm',
|
|
54
|
+
'h-5 w-5': size === 'base',
|
|
55
|
+
'h-5.5 w-5.5': size === 'lg',
|
|
56
|
+
'h-6 w-6': size === 'xl',
|
|
57
|
+
'h-8 w-8': size === '2xl',
|
|
58
|
+
'h-10 w-10': size === '3xl',
|
|
59
|
+
'h-12 w-12': size === '4xl',
|
|
60
|
+
}"
|
|
61
|
+
loading="lazy"
|
|
62
|
+
:src="`${urls.storage}/images/emojis/${emoji}.svg`"
|
|
63
|
+
@click.stop="onClick"
|
|
64
|
+
>
|
|
65
|
+
</span>
|
|
66
|
+
</template>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import type { BasePower } from '../../types/bases'
|
|
3
|
+
// import lottie from 'lottie-web'
|
|
4
|
+
|
|
5
|
+
const props = withDefaults(defineProps<BasePower>(), {
|
|
6
|
+
animated: false,
|
|
7
|
+
power: 'welcome',
|
|
8
|
+
size: 'base',
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
const animationLoaded = ref(false)
|
|
12
|
+
const animationPlaceholder = ref<HTMLElement>()
|
|
13
|
+
|
|
14
|
+
onMounted(() => {
|
|
15
|
+
if (props.animated && ['radar'].includes(props.power) && animationPlaceholder.value) {
|
|
16
|
+
// lottie.loadAnimation({
|
|
17
|
+
// autoplay: true,
|
|
18
|
+
// container: animationPlaceholder.value,
|
|
19
|
+
// loop: true,
|
|
20
|
+
// path: `/animations/bases/BasePower/power-${props.power}.json`,
|
|
21
|
+
// renderer: 'svg',
|
|
22
|
+
// })
|
|
23
|
+
|
|
24
|
+
// setTimeout(() => (animationLoaded.value = true), 1 * 1000)
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<template>
|
|
30
|
+
<div
|
|
31
|
+
class="pointer-events-none select-none"
|
|
32
|
+
:class="{
|
|
33
|
+
'h-12 sm:h-16': size === 'xs',
|
|
34
|
+
'h-16 sm:h-20': size === 'sm',
|
|
35
|
+
'h-20 sm:h-24': size === 'base',
|
|
36
|
+
'h-24 sm:h-32': size === 'lg',
|
|
37
|
+
}"
|
|
38
|
+
>
|
|
39
|
+
<img
|
|
40
|
+
v-show="!animationLoaded"
|
|
41
|
+
:alt="power"
|
|
42
|
+
class="h-full w-full"
|
|
43
|
+
loading="lazy"
|
|
44
|
+
:src="`/images/bases/BasePower/power-${power}.svg`"
|
|
45
|
+
>
|
|
46
|
+
|
|
47
|
+
<div
|
|
48
|
+
v-show="animationLoaded"
|
|
49
|
+
ref="animationPlaceholder"
|
|
50
|
+
class="h-full w-full"
|
|
51
|
+
/>
|
|
52
|
+
</div>
|
|
53
|
+
</template>
|
package/app/types/bases.d.ts
CHANGED
|
@@ -111,6 +111,13 @@ export type BaseDividerBorderStyle = 'dashed' | 'dotted' | 'solid'
|
|
|
111
111
|
|
|
112
112
|
export type BaseDividerSize = 'base' | 'sm'
|
|
113
113
|
|
|
114
|
+
export interface BaseEmoji {
|
|
115
|
+
clickable?: boolean
|
|
116
|
+
emoji?: string
|
|
117
|
+
hasBox?: boolean
|
|
118
|
+
size?: BaseSize
|
|
119
|
+
}
|
|
120
|
+
|
|
114
121
|
export interface BaseHeading {
|
|
115
122
|
alignment?: BaseHeadingAlignment
|
|
116
123
|
size?: BaseHeadingSize
|
|
@@ -184,6 +191,49 @@ export type BaseParagraphAlignment = 'center' | 'left' | 'right'
|
|
|
184
191
|
|
|
185
192
|
export type BaseParagraphSize = 'base' | 'lg' | 'sm'
|
|
186
193
|
|
|
194
|
+
export interface BasePower {
|
|
195
|
+
animated?: boolean
|
|
196
|
+
power?: BasePowerPower
|
|
197
|
+
size?: BasePowerSize
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export type BasePowerPower
|
|
201
|
+
= | '401'
|
|
202
|
+
| '404'
|
|
203
|
+
| '500'
|
|
204
|
+
| 'angry'
|
|
205
|
+
| 'bag'
|
|
206
|
+
| 'bank'
|
|
207
|
+
| 'book'
|
|
208
|
+
| 'browser'
|
|
209
|
+
| 'chair'
|
|
210
|
+
| 'christmas'
|
|
211
|
+
| 'city'
|
|
212
|
+
| 'city-bis'
|
|
213
|
+
| 'coffee'
|
|
214
|
+
| 'computer-book'
|
|
215
|
+
| 'computer-coffee'
|
|
216
|
+
| 'dead'
|
|
217
|
+
| 'easter'
|
|
218
|
+
| 'hourglass'
|
|
219
|
+
| 'invite'
|
|
220
|
+
| 'ko'
|
|
221
|
+
| 'love'
|
|
222
|
+
| 'magic'
|
|
223
|
+
| 'popcorn'
|
|
224
|
+
| 'radar'
|
|
225
|
+
| 'rocket'
|
|
226
|
+
| 'smiling'
|
|
227
|
+
| 'social-networks'
|
|
228
|
+
| 'starwars'
|
|
229
|
+
| 'teach'
|
|
230
|
+
| 'typewriter'
|
|
231
|
+
| 'website'
|
|
232
|
+
| 'welcome'
|
|
233
|
+
| 'writer'
|
|
234
|
+
|
|
235
|
+
export type BasePowerSize = 'base' | 'lg' | 'sm' | 'xs'
|
|
236
|
+
|
|
187
237
|
export interface BaseQuote {
|
|
188
238
|
background?: BaseQuoteBackground
|
|
189
239
|
character?: BaseCharacterCharacter
|
package/app/types/global.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ declare global {
|
|
|
27
27
|
type BaseDivider = Bases.BaseDivider
|
|
28
28
|
type BaseDividerBorderStyle = Bases.BaseDividerBorderStyle
|
|
29
29
|
type BaseDividerSize = Bases.BaseDividerSize
|
|
30
|
+
type BaseEmoji = Bases.BaseEmoji
|
|
30
31
|
type BaseHeading = Bases.BaseHeading
|
|
31
32
|
type BaseHeadingAlignment = Bases.BaseHeadingAlignment
|
|
32
33
|
type BaseHeadingSize = Bases.BaseHeadingSize
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saasmakers/ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.59",
|
|
5
5
|
"private": false,
|
|
6
6
|
"description": "Reusable Nuxt UI components for SaaS Makers projects",
|
|
7
7
|
"license": "MIT",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"@unocss/reset": "66.5.10",
|
|
44
44
|
"chartist": "1.5.0",
|
|
45
45
|
"floating-vue": "5.2.2",
|
|
46
|
+
"lottie-web": "5.13.0",
|
|
46
47
|
"motion-v": "1.7.4",
|
|
47
48
|
"numbro": "2.5.0",
|
|
48
49
|
"snarkdown": "2.0.0",
|