@datametria/vue-components 1.2.0 → 2.0.1
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/README.md +548 -657
- package/dist/index.es.js +2353 -1364
- package/dist/index.umd.js +10 -10
- package/dist/vue-components.css +1 -1
- package/package.json +102 -98
- package/src/components/DatametriaAlert.vue +137 -137
- package/src/components/DatametriaAutocomplete.vue +184 -138
- package/src/components/DatametriaAvatar.vue +177 -33
- package/src/components/DatametriaBadge.vue +98 -98
- package/src/components/DatametriaBreadcrumb.vue +21 -21
- package/src/components/DatametriaButton.vue +177 -165
- package/src/components/DatametriaCard.vue +12 -12
- package/src/components/DatametriaCheckbox.vue +8 -8
- package/src/components/DatametriaChip.vue +145 -149
- package/src/components/DatametriaContainer.vue +4 -4
- package/src/components/DatametriaDatePicker.vue +686 -68
- package/src/components/DatametriaDivider.vue +13 -13
- package/src/components/DatametriaFileUpload.vue +272 -140
- package/src/components/DatametriaGrid.vue +3 -3
- package/src/components/DatametriaInput.vue +15 -15
- package/src/components/DatametriaMenu.vue +604 -619
- package/src/components/DatametriaModal.vue +16 -16
- package/src/components/DatametriaNavbar.vue +230 -252
- package/src/components/DatametriaPasswordInput.vue +430 -0
- package/src/components/DatametriaProgress.vue +18 -18
- package/src/components/DatametriaRadio.vue +20 -20
- package/src/components/DatametriaSelect.vue +15 -15
- package/src/components/DatametriaSkeleton.vue +243 -239
- package/src/components/DatametriaSlider.vue +395 -407
- package/src/components/DatametriaSortableTable.vue +585 -0
- package/src/components/DatametriaSpinner.vue +7 -7
- package/src/components/DatametriaSwitch.vue +16 -16
- package/src/components/DatametriaTable.vue +14 -14
- package/src/components/DatametriaTextarea.vue +28 -28
- package/src/components/DatametriaTimePicker.vue +285 -285
- package/src/components/DatametriaToast.vue +176 -176
- package/src/components/DatametriaTooltip.vue +408 -408
- package/src/components/__tests__/DatametriaAlert.test.js +35 -35
- package/src/components/__tests__/DatametriaAlert.test.ts +190 -0
- package/src/components/__tests__/DatametriaAutocomplete.test.ts +180 -0
- package/src/components/__tests__/DatametriaAvatar.test.ts +152 -0
- package/src/components/__tests__/DatametriaBadge.test.js +29 -29
- package/src/components/__tests__/DatametriaBadge.test.ts +167 -0
- package/src/components/__tests__/DatametriaBreadcrumb.test.ts +75 -0
- package/src/components/__tests__/DatametriaButton.test.js +30 -30
- package/src/components/__tests__/DatametriaButton.test.ts +283 -0
- package/src/components/__tests__/DatametriaCard.test.ts +201 -0
- package/src/components/__tests__/DatametriaCheckbox.test.ts +47 -0
- package/src/components/__tests__/DatametriaChip.test.js +38 -38
- package/src/components/__tests__/DatametriaContainer.test.ts +52 -0
- package/src/components/__tests__/DatametriaDatePicker.test.ts +234 -0
- package/src/components/__tests__/DatametriaDivider.test.ts +54 -0
- package/src/components/__tests__/DatametriaFileUpload.test.ts +291 -0
- package/src/components/__tests__/DatametriaGrid.test.ts +31 -0
- package/src/components/__tests__/DatametriaInput.test.ts +72 -0
- package/src/components/__tests__/DatametriaMenu.test.ts +366 -0
- package/src/components/__tests__/DatametriaModal.test.ts +86 -0
- package/src/components/__tests__/DatametriaNavbar.test.js +48 -48
- package/src/components/__tests__/DatametriaNavbar.test.ts +203 -0
- package/src/components/__tests__/DatametriaPasswordInput.test.js +305 -0
- package/src/components/__tests__/DatametriaProgress.test.ts +90 -0
- package/src/components/__tests__/DatametriaRadio.test.ts +77 -0
- package/src/components/__tests__/DatametriaSelect.test.ts +77 -0
- package/src/components/__tests__/DatametriaSlider.test.ts +261 -0
- package/src/components/__tests__/DatametriaSortableTable.test.js +168 -0
- package/src/components/__tests__/DatametriaSpinner.test.ts +156 -0
- package/src/components/__tests__/DatametriaSwitch.test.ts +64 -0
- package/src/components/__tests__/DatametriaTable.test.ts +97 -0
- package/src/components/__tests__/DatametriaTextarea.test.ts +66 -0
- package/src/components/__tests__/DatametriaToast.test.js +48 -48
- package/src/components/__tests__/DatametriaToast.test.ts +99 -0
- package/src/composables/useAccessibilityScale.ts +94 -94
- package/src/composables/useBreakpoints.ts +82 -82
- package/src/composables/useHapticFeedback.ts +439 -439
- package/src/composables/useRipple.ts +218 -218
- package/src/index.ts +68 -61
- package/src/stories/Variants.stories.js +95 -95
- package/src/styles/design-tokens.css +623 -623
- package/src/theme/ThemeProvider.vue +96 -0
- package/src/theme/__tests__/ThemeProvider.test.ts +208 -0
- package/src/theme/__tests__/constants.test.ts +31 -0
- package/src/theme/__tests__/presets.test.ts +166 -0
- package/src/theme/__tests__/tokens.test.ts +155 -0
- package/src/theme/__tests__/types.test.ts +153 -0
- package/src/theme/__tests__/useTheme.test.ts +146 -0
- package/src/theme/constants.ts +14 -0
- package/src/theme/index.ts +12 -0
- package/src/theme/presets/datametria.ts +94 -0
- package/src/theme/presets/default.ts +94 -0
- package/src/theme/presets/index.ts +8 -0
- package/src/theme/tokens/colors.ts +28 -0
- package/src/theme/tokens/index.ts +47 -0
- package/src/theme/tokens/spacing.ts +21 -0
- package/src/theme/tokens/typography.ts +35 -0
- package/src/theme/types.ts +111 -0
- package/src/theme/useTheme.ts +28 -0
- package/src/types/index.ts +19 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme System Types
|
|
3
|
+
* @author Vander Loto - CTO DATAMETRIA
|
|
4
|
+
* @date 13/11/2025
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export interface ColorTokens {
|
|
8
|
+
primary: string
|
|
9
|
+
secondary: string
|
|
10
|
+
success: string
|
|
11
|
+
warning: string
|
|
12
|
+
error: string
|
|
13
|
+
info: string
|
|
14
|
+
neutral: {
|
|
15
|
+
50: string
|
|
16
|
+
100: string
|
|
17
|
+
200: string
|
|
18
|
+
300: string
|
|
19
|
+
400: string
|
|
20
|
+
500: string
|
|
21
|
+
600: string
|
|
22
|
+
700: string
|
|
23
|
+
800: string
|
|
24
|
+
900: string
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface TypographyTokens {
|
|
29
|
+
fontFamily: {
|
|
30
|
+
sans: string
|
|
31
|
+
mono: string
|
|
32
|
+
}
|
|
33
|
+
fontSize: {
|
|
34
|
+
xs: string
|
|
35
|
+
sm: string
|
|
36
|
+
base: string
|
|
37
|
+
lg: string
|
|
38
|
+
xl: string
|
|
39
|
+
'2xl': string
|
|
40
|
+
'3xl': string
|
|
41
|
+
'4xl': string
|
|
42
|
+
}
|
|
43
|
+
fontWeight: {
|
|
44
|
+
normal: number
|
|
45
|
+
medium: number
|
|
46
|
+
semibold: number
|
|
47
|
+
bold: number
|
|
48
|
+
}
|
|
49
|
+
lineHeight: {
|
|
50
|
+
tight: number
|
|
51
|
+
normal: number
|
|
52
|
+
relaxed: number
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export interface SpacingTokens {
|
|
57
|
+
0: string
|
|
58
|
+
1: string
|
|
59
|
+
2: string
|
|
60
|
+
3: string
|
|
61
|
+
4: string
|
|
62
|
+
6: string
|
|
63
|
+
8: string
|
|
64
|
+
12: string
|
|
65
|
+
16: string
|
|
66
|
+
20: string
|
|
67
|
+
24: string
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export interface RadiusTokens {
|
|
71
|
+
none: string
|
|
72
|
+
sm: string
|
|
73
|
+
md: string
|
|
74
|
+
lg: string
|
|
75
|
+
xl: string
|
|
76
|
+
full: string
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface ShadowTokens {
|
|
80
|
+
none: string
|
|
81
|
+
sm: string
|
|
82
|
+
md: string
|
|
83
|
+
lg: string
|
|
84
|
+
xl: string
|
|
85
|
+
'2xl': string
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface TransitionTokens {
|
|
89
|
+
fast: string
|
|
90
|
+
base: string
|
|
91
|
+
slow: string
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export interface ThemeTokens {
|
|
95
|
+
colors: ColorTokens
|
|
96
|
+
typography: TypographyTokens
|
|
97
|
+
spacing: SpacingTokens
|
|
98
|
+
radius: RadiusTokens
|
|
99
|
+
shadows: ShadowTokens
|
|
100
|
+
transitions: TransitionTokens
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface Theme {
|
|
104
|
+
name: string
|
|
105
|
+
tokens: ThemeTokens
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export interface ThemeConfig {
|
|
109
|
+
theme: Theme
|
|
110
|
+
prefix?: string
|
|
111
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useTheme Composable
|
|
3
|
+
* @author Vander Loto - CTO DATAMETRIA
|
|
4
|
+
* @date 13/11/2025
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { inject } from 'vue'
|
|
8
|
+
import type { ComputedRef } from 'vue'
|
|
9
|
+
import type { Theme } from './types'
|
|
10
|
+
import { THEME_INJECTION_KEY } from './constants'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Access the current theme from ThemeProvider
|
|
14
|
+
* @throws Error if used outside ThemeProvider
|
|
15
|
+
* @returns Current theme object (reactive)
|
|
16
|
+
*/
|
|
17
|
+
export function useTheme(): ComputedRef<Theme> {
|
|
18
|
+
const themeRef = inject<ComputedRef<Theme>>(THEME_INJECTION_KEY)
|
|
19
|
+
|
|
20
|
+
if (!themeRef) {
|
|
21
|
+
throw new Error(
|
|
22
|
+
'useTheme must be used within a ThemeProvider. ' +
|
|
23
|
+
'Wrap your component tree with <ThemeProvider :theme="yourTheme">'
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return themeRef
|
|
28
|
+
}
|
package/src/types/index.ts
CHANGED
|
@@ -32,3 +32,22 @@ export interface CardProps {
|
|
|
32
32
|
title?: string
|
|
33
33
|
padding?: boolean
|
|
34
34
|
}
|
|
35
|
+
|
|
36
|
+
export interface TableColumn {
|
|
37
|
+
key: string
|
|
38
|
+
label: string
|
|
39
|
+
width?: string
|
|
40
|
+
sortable?: boolean
|
|
41
|
+
filterable?: boolean
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export interface SortableTableProps {
|
|
45
|
+
columns: TableColumn[]
|
|
46
|
+
data: Record<string, any>[]
|
|
47
|
+
selectable?: boolean
|
|
48
|
+
searchable?: boolean
|
|
49
|
+
filterable?: boolean
|
|
50
|
+
paginated?: boolean
|
|
51
|
+
pageSize?: number
|
|
52
|
+
pageSizeOptions?: number[]
|
|
53
|
+
}
|