frappe-ui 0.1.3 → 0.1.4
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/package.json +1 -1
- package/src/resources/documentResource.js +32 -1
- package/src/components/Avatar.stories.ts +0 -110
- package/src/components/Badge.stories.js +0 -149
- package/src/components/Button.stories.js +0 -173
- package/src/components/Divider.stories.ts +0 -110
- package/src/components/Dropdown.stories.ts +0 -73
- package/src/components/Progress.stories.js +0 -80
- package/src/components/Spinner.stories.ts +0 -13
- package/src/components/Switch.stories.js +0 -52
- package/src/components/TextInput.stories.ts +0 -143
- package/src/tokens/Color.vue +0 -194
- package/src/utils/tailwind.config.stories.js +0 -8
package/package.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { reactive } from 'vue'
|
|
1
|
+
import { reactive, watch } from 'vue'
|
|
2
2
|
import { getCacheKey, createResource } from './resources'
|
|
3
3
|
import {
|
|
4
4
|
updateRowInListResource,
|
|
@@ -39,6 +39,7 @@ export function createDocumentResource(options, vm) {
|
|
|
39
39
|
},
|
|
40
40
|
onSuccess(data) {
|
|
41
41
|
out.doc = transform(data)
|
|
42
|
+
out.originalDoc = JSON.parse(JSON.stringify(out.doc))
|
|
42
43
|
options.setValue?.onSuccess?.call(vm, data)
|
|
43
44
|
},
|
|
44
45
|
onError(error) {
|
|
@@ -55,6 +56,8 @@ export function createDocumentResource(options, vm) {
|
|
|
55
56
|
doctype: options.doctype,
|
|
56
57
|
name: options.name,
|
|
57
58
|
doc: null,
|
|
59
|
+
originalDoc: null,
|
|
60
|
+
isDirty: false,
|
|
58
61
|
auto: autoPropIsPassed ? options.auto : true,
|
|
59
62
|
get: createResource(
|
|
60
63
|
{
|
|
@@ -68,6 +71,7 @@ export function createDocumentResource(options, vm) {
|
|
|
68
71
|
onSuccess(data) {
|
|
69
72
|
saveLocal(cacheKey, data)
|
|
70
73
|
out.doc = transform(data)
|
|
74
|
+
out.originalDoc = JSON.parse(JSON.stringify(out.doc))
|
|
71
75
|
options.onSuccess?.call(vm, out.doc)
|
|
72
76
|
},
|
|
73
77
|
onError: options.onError,
|
|
@@ -82,6 +86,22 @@ export function createDocumentResource(options, vm) {
|
|
|
82
86
|
},
|
|
83
87
|
vm
|
|
84
88
|
),
|
|
89
|
+
save: createResource(
|
|
90
|
+
{
|
|
91
|
+
...setValueOptions,
|
|
92
|
+
makeParams() {
|
|
93
|
+
let values = JSON.parse(JSON.stringify(out.doc))
|
|
94
|
+
delete values.doctype
|
|
95
|
+
delete values.name
|
|
96
|
+
return {
|
|
97
|
+
doctype: out.doctype,
|
|
98
|
+
name: out.name,
|
|
99
|
+
fieldname: values,
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
vm
|
|
104
|
+
),
|
|
85
105
|
delete: createResource(
|
|
86
106
|
{
|
|
87
107
|
url: 'frappe.client.delete',
|
|
@@ -105,6 +125,17 @@ export function createDocumentResource(options, vm) {
|
|
|
105
125
|
setDoc,
|
|
106
126
|
})
|
|
107
127
|
|
|
128
|
+
// keep track of isDirty as doc changes
|
|
129
|
+
watch(
|
|
130
|
+
() => out.doc,
|
|
131
|
+
() => {
|
|
132
|
+
out.isDirty = JSON.stringify(out.doc) !== JSON.stringify(out.originalDoc)
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
deep: true,
|
|
136
|
+
}
|
|
137
|
+
)
|
|
138
|
+
|
|
108
139
|
for (let methodKey in options.whitelistedMethods) {
|
|
109
140
|
let methodOptions = options.whitelistedMethods[methodKey]
|
|
110
141
|
if (typeof methodOptions == 'string') {
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { Avatar } from '../index'
|
|
2
|
-
|
|
3
|
-
const IconOnline = {
|
|
4
|
-
template: `<svg xmlns="http://www.w3.org/2000/svg" class="h-full w-full text-green-500" viewBox="0 0 20 20" fill="currentColor"><circle cx="10" cy="10" r="10"/></svg>`,
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
const IconOffline = {
|
|
8
|
-
template: `<svg xmlns="http://www.w3.org/2000/svg" class="h-full w-full text-gray-500" viewBox="0 0 20 20" fill="currentColor"><circle cx="10" cy="10" r="10"/></svg>`,
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const IconSleep = {
|
|
12
|
-
template: `<svg class="h-full w-full" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
13
|
-
<rect width="18" height="18" rx="9" fill="white"/>
|
|
14
|
-
<path d="M16.9819 9.71993C16.9899 9.63114 16.8851 9.57883 16.8161 9.63536C15.7802 10.4848 14.4551 10.9946 13.0109 10.9946C9.69415 10.9946 7.00543 8.30585 7.00543 4.98914C7.00543 3.54495 7.51521 2.21982 8.36464 1.18388C8.42117 1.11495 8.36886 1.0101 8.28008 1.01809C4.19856 1.3855 1 4.8156 1 8.99276C1 13.415 4.58496 17 9.00724 17C13.1844 17 16.6145 13.8014 16.9819 9.71993Z" fill="#7C7C7C"/>
|
|
15
|
-
</svg>
|
|
16
|
-
`,
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const IconUser = {
|
|
20
|
-
template: `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
|
|
21
|
-
<path fill-rule="evenodd" d="M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z" clip-rule="evenodd" />
|
|
22
|
-
</svg>`,
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export default {
|
|
26
|
-
component: Avatar,
|
|
27
|
-
tags: ['autodocs'],
|
|
28
|
-
render: function (args, { argTypes }) {
|
|
29
|
-
return {
|
|
30
|
-
props: Object.keys(argTypes),
|
|
31
|
-
components: { Avatar },
|
|
32
|
-
template: `<Avatar v-bind="$props">
|
|
33
|
-
<template v-if="$props.default" #default>
|
|
34
|
-
<component :is="$props.default" />
|
|
35
|
-
</template>
|
|
36
|
-
<template v-if="$props.indicator" #indicator>
|
|
37
|
-
<component :is="$props.indicator" />
|
|
38
|
-
</template>
|
|
39
|
-
</Avatar>`,
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
argTypes: {
|
|
43
|
-
size: {
|
|
44
|
-
options: ['xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl'],
|
|
45
|
-
control: { type: 'inline-radio' },
|
|
46
|
-
},
|
|
47
|
-
shape: {
|
|
48
|
-
options: ['circle', 'square'],
|
|
49
|
-
control: { type: 'inline-radio' },
|
|
50
|
-
},
|
|
51
|
-
indicator: {
|
|
52
|
-
options: ['online', 'offline', 'sleep'],
|
|
53
|
-
mapping: {
|
|
54
|
-
online: IconOnline,
|
|
55
|
-
offline: IconOffline,
|
|
56
|
-
sleep: IconSleep,
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
default: {
|
|
60
|
-
options: ['user', 'none'],
|
|
61
|
-
mapping: {
|
|
62
|
-
none: null,
|
|
63
|
-
user: IconUser,
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
args: {
|
|
68
|
-
size: '3xl',
|
|
69
|
-
shape: 'circle',
|
|
70
|
-
},
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export const Normal = {
|
|
74
|
-
args: {
|
|
75
|
-
image: 'https://randomuser.me/api/portraits/women/1.jpg',
|
|
76
|
-
},
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export const SizeSmall = {
|
|
80
|
-
args: {
|
|
81
|
-
size: 'sm',
|
|
82
|
-
image: 'https://randomuser.me/api/portraits/women/2.jpg',
|
|
83
|
-
},
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
export const Label = {
|
|
87
|
-
args: {
|
|
88
|
-
label: 'A',
|
|
89
|
-
},
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export const RoundedSquare = {
|
|
93
|
-
args: {
|
|
94
|
-
shape: 'square',
|
|
95
|
-
image: 'https://randomuser.me/api/portraits/women/3.jpg',
|
|
96
|
-
},
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export const WithIndicator = {
|
|
100
|
-
args: {
|
|
101
|
-
indicator: 'online',
|
|
102
|
-
image: 'https://randomuser.me/api/portraits/women/4.jpg',
|
|
103
|
-
},
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
export const IconViaDefaultSlot = {
|
|
107
|
-
args: {
|
|
108
|
-
default: 'user',
|
|
109
|
-
},
|
|
110
|
-
}
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import { h } from 'vue'
|
|
2
|
-
import { Badge, FeatherIcon } from '../index'
|
|
3
|
-
|
|
4
|
-
let ActivityIcon = {
|
|
5
|
-
render() {
|
|
6
|
-
return h(FeatherIcon, {
|
|
7
|
-
name: 'activity',
|
|
8
|
-
class: 'h-3',
|
|
9
|
-
})
|
|
10
|
-
},
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
let prefixSuffixOptions = {
|
|
14
|
-
options: ['None', '1', '100', 'Icon'],
|
|
15
|
-
mapping: {
|
|
16
|
-
None: null,
|
|
17
|
-
Icon: ActivityIcon,
|
|
18
|
-
},
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export default {
|
|
22
|
-
component: Badge,
|
|
23
|
-
render: (args, { argTypes }) => ({
|
|
24
|
-
props: Object.keys(argTypes),
|
|
25
|
-
components: { Badge },
|
|
26
|
-
template: `<Badge v-bind="$props">
|
|
27
|
-
<template #prefix>
|
|
28
|
-
<template v-if="typeof $props.prefix == 'string'">{{ $props.prefix }}</template>
|
|
29
|
-
<component v-else :is="$props.prefix" />
|
|
30
|
-
</template>
|
|
31
|
-
<template #default>
|
|
32
|
-
<template v-if="typeof $props.default == 'string'">{{ $props.default }}</template>
|
|
33
|
-
<component v-else :is="$props.default" />
|
|
34
|
-
</template>
|
|
35
|
-
<template #suffix>
|
|
36
|
-
<template v-if="typeof $props.suffix == 'string'">{{ $props.suffix }}</template>
|
|
37
|
-
<component v-else :is="$props.suffix" />
|
|
38
|
-
</template>
|
|
39
|
-
</Badge>`,
|
|
40
|
-
}),
|
|
41
|
-
tags: ['autodocs'],
|
|
42
|
-
argTypes: {
|
|
43
|
-
prefix: prefixSuffixOptions,
|
|
44
|
-
suffix: prefixSuffixOptions,
|
|
45
|
-
default: {
|
|
46
|
-
control: 'text',
|
|
47
|
-
},
|
|
48
|
-
theme: {
|
|
49
|
-
options: ['gray', 'blue', 'green', 'orange', 'red'],
|
|
50
|
-
control: 'select',
|
|
51
|
-
},
|
|
52
|
-
size: {
|
|
53
|
-
options: ['sm', 'md', 'lg'],
|
|
54
|
-
control: 'select',
|
|
55
|
-
},
|
|
56
|
-
variant: {
|
|
57
|
-
options: ['solid', 'subtle', 'outline', 'ghost'],
|
|
58
|
-
control: 'select',
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
args: {
|
|
62
|
-
label: 'Gamma',
|
|
63
|
-
theme: 'gray',
|
|
64
|
-
size: 'md',
|
|
65
|
-
variant: 'solid',
|
|
66
|
-
},
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
export const Small = {
|
|
70
|
-
args: {
|
|
71
|
-
size: 'sm',
|
|
72
|
-
},
|
|
73
|
-
}
|
|
74
|
-
export const Medium = {
|
|
75
|
-
args: {
|
|
76
|
-
size: 'md',
|
|
77
|
-
},
|
|
78
|
-
}
|
|
79
|
-
export const Large = {
|
|
80
|
-
args: {
|
|
81
|
-
size: 'lg',
|
|
82
|
-
},
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export const Gray = {
|
|
86
|
-
args: {
|
|
87
|
-
theme: 'gray',
|
|
88
|
-
},
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export const Blue = {
|
|
92
|
-
args: {
|
|
93
|
-
theme: 'blue',
|
|
94
|
-
},
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export const Green = {
|
|
98
|
-
args: {
|
|
99
|
-
theme: 'green',
|
|
100
|
-
},
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export const Orange = {
|
|
104
|
-
args: {
|
|
105
|
-
theme: 'orange',
|
|
106
|
-
},
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
export const Red = {
|
|
110
|
-
args: {
|
|
111
|
-
theme: 'red',
|
|
112
|
-
},
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export const Solid = {
|
|
116
|
-
args: {
|
|
117
|
-
variant: 'solid',
|
|
118
|
-
},
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
export const Subtle = {
|
|
122
|
-
args: {
|
|
123
|
-
variant: 'subtle',
|
|
124
|
-
},
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export const Outline = {
|
|
128
|
-
args: {
|
|
129
|
-
variant: 'outline',
|
|
130
|
-
},
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export const Ghost = {
|
|
134
|
-
args: {
|
|
135
|
-
variant: 'ghost',
|
|
136
|
-
},
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export const Prefix = {
|
|
140
|
-
args: {
|
|
141
|
-
prefix: 'Icon',
|
|
142
|
-
},
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
export const Suffix = {
|
|
146
|
-
args: {
|
|
147
|
-
suffix: 'Icon',
|
|
148
|
-
},
|
|
149
|
-
}
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { h } from 'vue'
|
|
2
|
-
import { Button, FeatherIcon } from '../index'
|
|
3
|
-
|
|
4
|
-
let ActivityIcon = {
|
|
5
|
-
render() {
|
|
6
|
-
return h(FeatherIcon, {
|
|
7
|
-
name: 'activity',
|
|
8
|
-
class: 'h-3',
|
|
9
|
-
})
|
|
10
|
-
},
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
let prefixSuffixOptions = {
|
|
14
|
-
options: ['None', '1', '100', 'Icon'],
|
|
15
|
-
mapping: {
|
|
16
|
-
None: null,
|
|
17
|
-
Icon: ActivityIcon,
|
|
18
|
-
},
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export default {
|
|
22
|
-
component: Button,
|
|
23
|
-
render: (args, { argTypes }) => ({
|
|
24
|
-
props: Object.keys(argTypes),
|
|
25
|
-
components: { Button },
|
|
26
|
-
template: `<Button v-bind="$props">
|
|
27
|
-
<template #prefix>
|
|
28
|
-
<template v-if="typeof $props.prefix == 'string'">{{ $props.prefix }}</template>
|
|
29
|
-
<component v-else :is="$props.prefix" />
|
|
30
|
-
</template>
|
|
31
|
-
<template #default>
|
|
32
|
-
<template v-if="typeof $props.default == 'string'">{{ $props.default }}</template>
|
|
33
|
-
<component v-else :is="$props.default" />
|
|
34
|
-
</template>
|
|
35
|
-
<template #suffix>
|
|
36
|
-
<template v-if="typeof $props.suffix == 'string'">{{ $props.suffix }}</template>
|
|
37
|
-
<component v-else :is="$props.suffix" />
|
|
38
|
-
</template>
|
|
39
|
-
</Button>`,
|
|
40
|
-
}),
|
|
41
|
-
tags: ['autodocs'],
|
|
42
|
-
argTypes: {
|
|
43
|
-
prefix: prefixSuffixOptions,
|
|
44
|
-
suffix: prefixSuffixOptions,
|
|
45
|
-
icon: {
|
|
46
|
-
options: ['None', 'edit', 'plus'],
|
|
47
|
-
mapping: {
|
|
48
|
-
None: null,
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
default: {
|
|
52
|
-
control: 'text',
|
|
53
|
-
},
|
|
54
|
-
theme: {
|
|
55
|
-
options: ['gray', 'blue', 'green'],
|
|
56
|
-
control: 'inline-radio',
|
|
57
|
-
},
|
|
58
|
-
size: {
|
|
59
|
-
options: ['sm', 'md', 'lg', 'xl', '2xl'],
|
|
60
|
-
control: 'inline-radio',
|
|
61
|
-
},
|
|
62
|
-
variant: {
|
|
63
|
-
options: ['solid', 'subtle', 'outline', 'ghost'],
|
|
64
|
-
control: 'inline-radio',
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
args: {
|
|
68
|
-
label: 'Discover',
|
|
69
|
-
theme: 'gray',
|
|
70
|
-
size: 'md',
|
|
71
|
-
variant: 'solid',
|
|
72
|
-
},
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export const Small = {
|
|
76
|
-
args: {
|
|
77
|
-
size: 'sm',
|
|
78
|
-
},
|
|
79
|
-
}
|
|
80
|
-
export const Medium = {
|
|
81
|
-
args: {
|
|
82
|
-
size: 'md',
|
|
83
|
-
},
|
|
84
|
-
}
|
|
85
|
-
export const Large = {
|
|
86
|
-
args: {
|
|
87
|
-
size: 'lg',
|
|
88
|
-
},
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
export const ExtraLarge = {
|
|
92
|
-
args: {
|
|
93
|
-
size: 'xl',
|
|
94
|
-
},
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export const ExtraExtraLarge = {
|
|
98
|
-
args: {
|
|
99
|
-
size: '2xl',
|
|
100
|
-
},
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export const Gray = {
|
|
104
|
-
args: {
|
|
105
|
-
theme: 'gray',
|
|
106
|
-
},
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
export const Blue = {
|
|
110
|
-
args: {
|
|
111
|
-
theme: 'blue',
|
|
112
|
-
},
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export const Green = {
|
|
116
|
-
args: {
|
|
117
|
-
theme: 'green',
|
|
118
|
-
},
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
export const Red = {
|
|
122
|
-
args: {
|
|
123
|
-
theme: 'red',
|
|
124
|
-
},
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export const Solid = {
|
|
128
|
-
args: {
|
|
129
|
-
variant: 'solid',
|
|
130
|
-
},
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export const Subtle = {
|
|
134
|
-
args: {
|
|
135
|
-
variant: 'subtle',
|
|
136
|
-
},
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
export const Outline = {
|
|
140
|
-
args: {
|
|
141
|
-
variant: 'outline',
|
|
142
|
-
},
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
export const Ghost = {
|
|
146
|
-
args: {
|
|
147
|
-
variant: 'ghost',
|
|
148
|
-
},
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
export const Loading = {
|
|
152
|
-
args: {
|
|
153
|
-
loading: true,
|
|
154
|
-
},
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
export const Prefix = {
|
|
158
|
-
args: {
|
|
159
|
-
prefix: 'Icon',
|
|
160
|
-
},
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
export const Suffix = {
|
|
164
|
-
args: {
|
|
165
|
-
suffix: 'Icon',
|
|
166
|
-
},
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
export const Icon = {
|
|
170
|
-
args: {
|
|
171
|
-
icon: 'edit-2',
|
|
172
|
-
},
|
|
173
|
-
}
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { Divider, Badge } from '../index'
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
component: Divider,
|
|
5
|
-
tags: ['autodocs'],
|
|
6
|
-
render: (args, { argTypes }) => ({
|
|
7
|
-
props: Object.keys(argTypes),
|
|
8
|
-
components: { Divider },
|
|
9
|
-
template:
|
|
10
|
-
args.orientation == 'horizontal'
|
|
11
|
-
? `<Divider class="min-w-[300px]" v-bind="$props"/>`
|
|
12
|
-
: `<Divider class="min-h-[100px]" v-bind="$props"/>`,
|
|
13
|
-
}),
|
|
14
|
-
argTypes: {
|
|
15
|
-
orientation: {
|
|
16
|
-
options: ['horizontal', 'vertical'],
|
|
17
|
-
control: { type: 'select' },
|
|
18
|
-
},
|
|
19
|
-
position: {
|
|
20
|
-
options: ['start', 'center', 'end'],
|
|
21
|
-
control: 'select',
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
args: {
|
|
25
|
-
orientation: 'horizontal',
|
|
26
|
-
position: 'center',
|
|
27
|
-
flexItem: false,
|
|
28
|
-
},
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export const Horizontal = {
|
|
32
|
-
args: {
|
|
33
|
-
orientation: 'horizontal',
|
|
34
|
-
},
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export const Vertical = {
|
|
38
|
-
args: {
|
|
39
|
-
orientation: 'vertical',
|
|
40
|
-
},
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export const InFlexContainer = {
|
|
44
|
-
render: (args, { argTypes }) => ({
|
|
45
|
-
props: Object.keys(argTypes),
|
|
46
|
-
components: { Divider, Badge },
|
|
47
|
-
template: `
|
|
48
|
-
<div class="flex flex-row space-x-1">
|
|
49
|
-
<Badge variant="ghost" label="One" />
|
|
50
|
-
<Divider v-bind="$props" />
|
|
51
|
-
<Badge variant="ghost" label="Two" />
|
|
52
|
-
<Divider v-bind="$props" />
|
|
53
|
-
<Badge variant="ghost" label="Three" />
|
|
54
|
-
</div>
|
|
55
|
-
`,
|
|
56
|
-
}),
|
|
57
|
-
args: {
|
|
58
|
-
orientation: 'vertical',
|
|
59
|
-
flexItem: true,
|
|
60
|
-
},
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
export const HorizontalWithAction = {
|
|
64
|
-
args: {
|
|
65
|
-
action: {
|
|
66
|
-
label: 'Load More',
|
|
67
|
-
handler: () => {},
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export const WithActionLoading = {
|
|
73
|
-
args: {
|
|
74
|
-
action: {
|
|
75
|
-
label: 'Loading More',
|
|
76
|
-
handler: () => {},
|
|
77
|
-
loading: true,
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export const WithActionAtStart = {
|
|
83
|
-
args: {
|
|
84
|
-
position: 'start',
|
|
85
|
-
action: {
|
|
86
|
-
label: 'Load More',
|
|
87
|
-
handler: () => {},
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export const WithActionAtEnd = {
|
|
93
|
-
args: {
|
|
94
|
-
position: 'end',
|
|
95
|
-
action: {
|
|
96
|
-
label: 'Load More',
|
|
97
|
-
handler: () => {},
|
|
98
|
-
},
|
|
99
|
-
},
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
export const VerticalWithAction = {
|
|
103
|
-
args: {
|
|
104
|
-
orientation: 'vertical',
|
|
105
|
-
action: {
|
|
106
|
-
label: 'Load More',
|
|
107
|
-
handler: () => {},
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { Dropdown, Button, FeatherIcon } from '../index'
|
|
2
|
-
|
|
3
|
-
function getStory(code) {
|
|
4
|
-
return {
|
|
5
|
-
render: (args, { argTypes }) => ({
|
|
6
|
-
props: ['style'],
|
|
7
|
-
components: { Dropdown, FeatherIcon, Button },
|
|
8
|
-
template: code,
|
|
9
|
-
}),
|
|
10
|
-
parameters: {
|
|
11
|
-
docs: {
|
|
12
|
-
source: {
|
|
13
|
-
code,
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export default {
|
|
21
|
-
component: Dropdown,
|
|
22
|
-
tags: ['autodocs'],
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export const Basic = {
|
|
26
|
-
...getStory(`<Dropdown
|
|
27
|
-
:options="[
|
|
28
|
-
{ label: 'Edit Title', onClick: () => alert('Edit Title'), icon: 'edit' },
|
|
29
|
-
{ label: 'Manage Members', onClick: () => alert('Manage Members'), icon: 'users' },
|
|
30
|
-
{ label: 'Delete this project', onClick: () => alert('Delete this project'), icon: 'trash' },
|
|
31
|
-
]"
|
|
32
|
-
/>`),
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export const WithButtonProp = {
|
|
36
|
-
...getStory(`<Dropdown
|
|
37
|
-
:options="[
|
|
38
|
-
{ label: 'Edit Title', onClick: () => alert('Edit Title'), icon: 'edit' },
|
|
39
|
-
{ label: 'Manage Members', onClick: () => alert('Manage Members'), icon: 'users' },
|
|
40
|
-
{ label: 'Delete this project', onClick: () => alert('Delete this project'), icon: 'trash' },
|
|
41
|
-
]"
|
|
42
|
-
:button="{
|
|
43
|
-
label: 'Actions',
|
|
44
|
-
}"
|
|
45
|
-
/>`),
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export const WithCustomButtonAndGroups = {
|
|
49
|
-
...getStory(`<Dropdown
|
|
50
|
-
:options="[
|
|
51
|
-
{
|
|
52
|
-
group: 'Manage',
|
|
53
|
-
items: [
|
|
54
|
-
{ label: 'Edit Title', onClick: () => alert('Edit Title'), icon: 'edit' },
|
|
55
|
-
{ label: 'Manage Members', onClick: () => alert('Manage Members'), icon: 'users' },
|
|
56
|
-
]
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
group: 'Delete',
|
|
60
|
-
items: [
|
|
61
|
-
{ label: 'Delete users', onClick: () => alert('Delete users'), icon: 'edit' },
|
|
62
|
-
{ label: 'Delete this project', onClick: () => alert('Delete this project'), icon: 'trash' },
|
|
63
|
-
]
|
|
64
|
-
}
|
|
65
|
-
]"
|
|
66
|
-
>
|
|
67
|
-
<Button>
|
|
68
|
-
<template #icon>
|
|
69
|
-
<FeatherIcon name="more-horizontal" class="w-4 h-4" />
|
|
70
|
-
</template>
|
|
71
|
-
</Button>
|
|
72
|
-
</Dropdown>`),
|
|
73
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { Progress } from '../index'
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
component: Progress,
|
|
5
|
-
tags: ['autodocs'],
|
|
6
|
-
render: (args, { argTypes }) => ({
|
|
7
|
-
props: Object.keys(argTypes),
|
|
8
|
-
components: { Progress },
|
|
9
|
-
template: `<Progress v-bind="$props"/>`,
|
|
10
|
-
}),
|
|
11
|
-
argTypes: {
|
|
12
|
-
value: {
|
|
13
|
-
control: { type: 'number' },
|
|
14
|
-
},
|
|
15
|
-
size: {
|
|
16
|
-
options: ['sm', 'md', 'lg', 'xl'],
|
|
17
|
-
control: { type: 'select' },
|
|
18
|
-
},
|
|
19
|
-
},
|
|
20
|
-
args: {
|
|
21
|
-
value: 32,
|
|
22
|
-
size: 'md',
|
|
23
|
-
label: 'Progress',
|
|
24
|
-
hint: true,
|
|
25
|
-
},
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export const Small = {
|
|
29
|
-
args: {
|
|
30
|
-
size: 'sm',
|
|
31
|
-
},
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export const Medium = {
|
|
35
|
-
args: {
|
|
36
|
-
size: 'md',
|
|
37
|
-
},
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export const Large = {
|
|
41
|
-
args: {
|
|
42
|
-
size: 'lg',
|
|
43
|
-
},
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export const ExtraLarge = {
|
|
47
|
-
args: {
|
|
48
|
-
size: 'xl',
|
|
49
|
-
},
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export const WithOnlyLabel = {
|
|
53
|
-
args: {
|
|
54
|
-
label: 'Progress',
|
|
55
|
-
hint: false,
|
|
56
|
-
},
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export const WithOnlyHint = {
|
|
60
|
-
args: {
|
|
61
|
-
hint: true,
|
|
62
|
-
label: null,
|
|
63
|
-
},
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export const WithHintAndLabel = {
|
|
67
|
-
args: {
|
|
68
|
-
hint: true,
|
|
69
|
-
label: 'Progress',
|
|
70
|
-
},
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export const WithIntervals = {
|
|
74
|
-
args: {
|
|
75
|
-
value: 50,
|
|
76
|
-
hint: true,
|
|
77
|
-
label: 'Progress',
|
|
78
|
-
intervals: true,
|
|
79
|
-
},
|
|
80
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { Spinner } from '../index'
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
component: Spinner,
|
|
5
|
-
tags: ['autodocs'],
|
|
6
|
-
render: (args, { argTypes }) => ({
|
|
7
|
-
props: ['style'],
|
|
8
|
-
components: { Spinner },
|
|
9
|
-
template: `<Spinner v-bind="$props" class="w-10" />`,
|
|
10
|
-
}),
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export const Normal = {}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { Switch } from '../index'
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
component: Switch,
|
|
5
|
-
tags: ['autodocs'],
|
|
6
|
-
render: (args, { argTypes }) => ({
|
|
7
|
-
props: Object.keys(argTypes),
|
|
8
|
-
components: { Switch },
|
|
9
|
-
template: `<Switch v-bind="$props"/>`,
|
|
10
|
-
}),
|
|
11
|
-
argTypes: {
|
|
12
|
-
size: {
|
|
13
|
-
options: ['sm', 'md'],
|
|
14
|
-
control: { type: 'select' },
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
args: {
|
|
18
|
-
size: 'sm',
|
|
19
|
-
},
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export const Small = {
|
|
23
|
-
args: {
|
|
24
|
-
size: 'sm',
|
|
25
|
-
},
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export const Medium = {
|
|
29
|
-
args: {
|
|
30
|
-
size: 'md',
|
|
31
|
-
},
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export const Disabled = {
|
|
35
|
-
args: {
|
|
36
|
-
disabled: true,
|
|
37
|
-
},
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export const WithLabel = {
|
|
41
|
-
args: {
|
|
42
|
-
label: 'Switch Off',
|
|
43
|
-
},
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export const WithLabelAndDescription = {
|
|
47
|
-
args: {
|
|
48
|
-
label: 'Switch Off',
|
|
49
|
-
description:
|
|
50
|
-
'Used when the checkbox is selected and will use its value for the form submission.',
|
|
51
|
-
},
|
|
52
|
-
}
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { h } from 'vue'
|
|
2
|
-
import { FeatherIcon, TextInput } from '../index'
|
|
3
|
-
import AvatarVue from './Avatar.vue'
|
|
4
|
-
|
|
5
|
-
let ActivityIcon = {
|
|
6
|
-
render() {
|
|
7
|
-
return h(FeatherIcon, {
|
|
8
|
-
name: 'activity',
|
|
9
|
-
class: 'h-4',
|
|
10
|
-
})
|
|
11
|
-
},
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
let Avatar = {
|
|
15
|
-
render() {
|
|
16
|
-
return h(AvatarVue, {
|
|
17
|
-
src: 'https://randomuser.me/api/portraits/women/2.jpg',
|
|
18
|
-
size: 'xs',
|
|
19
|
-
})
|
|
20
|
-
},
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
let prefixSuffixOptions = {
|
|
24
|
-
options: ['None', '1', '100', 'Icon', 'Avatar'],
|
|
25
|
-
mapping: {
|
|
26
|
-
None: null,
|
|
27
|
-
Icon: ActivityIcon,
|
|
28
|
-
Avatar: Avatar,
|
|
29
|
-
},
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export default {
|
|
33
|
-
component: TextInput,
|
|
34
|
-
tags: ['autodocs'],
|
|
35
|
-
argTypes: {
|
|
36
|
-
type: {
|
|
37
|
-
options: [
|
|
38
|
-
'date',
|
|
39
|
-
'datetime-local',
|
|
40
|
-
'email',
|
|
41
|
-
'file',
|
|
42
|
-
'month',
|
|
43
|
-
'number',
|
|
44
|
-
'password',
|
|
45
|
-
'search',
|
|
46
|
-
'tel',
|
|
47
|
-
'text',
|
|
48
|
-
'time',
|
|
49
|
-
'url',
|
|
50
|
-
'week',
|
|
51
|
-
],
|
|
52
|
-
control: { type: 'select' },
|
|
53
|
-
},
|
|
54
|
-
size: {
|
|
55
|
-
options: ['sm', 'md', 'lg', 'xl'],
|
|
56
|
-
control: { type: 'inline-radio' },
|
|
57
|
-
},
|
|
58
|
-
variant: {
|
|
59
|
-
options: ['subtle', 'outline'],
|
|
60
|
-
control: { type: 'inline-radio' },
|
|
61
|
-
},
|
|
62
|
-
disabled: 'boolean',
|
|
63
|
-
prefix: prefixSuffixOptions,
|
|
64
|
-
suffix: prefixSuffixOptions,
|
|
65
|
-
},
|
|
66
|
-
args: {
|
|
67
|
-
size: 'sm',
|
|
68
|
-
variant: 'subtle',
|
|
69
|
-
placeholder: 'Type something...',
|
|
70
|
-
},
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export const Normal = {
|
|
74
|
-
args: {
|
|
75
|
-
type: 'text',
|
|
76
|
-
},
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export const WithPrefixIcon = {
|
|
80
|
-
args: {
|
|
81
|
-
prefix: 'Icon',
|
|
82
|
-
},
|
|
83
|
-
render: function (args, { argTypes }) {
|
|
84
|
-
return {
|
|
85
|
-
props: Object.keys(argTypes),
|
|
86
|
-
components: { TextInput },
|
|
87
|
-
template: `<TextInput v-bind="$props">
|
|
88
|
-
<template #prefix>
|
|
89
|
-
<template v-if="typeof $props.prefix == 'string'">{{ $props.prefix }}</template>
|
|
90
|
-
<component v-else-if="$props.prefix" :is="$props.prefix" />
|
|
91
|
-
</template>
|
|
92
|
-
</TextInput>`,
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export const WithSuffixIcon = {
|
|
98
|
-
args: {
|
|
99
|
-
suffix: 'Icon',
|
|
100
|
-
},
|
|
101
|
-
render: function (args, { argTypes }) {
|
|
102
|
-
return {
|
|
103
|
-
props: Object.keys(argTypes),
|
|
104
|
-
components: { TextInput },
|
|
105
|
-
template: `<TextInput v-bind="$props">
|
|
106
|
-
<template #suffix>
|
|
107
|
-
<template v-if="typeof $props.suffix == 'string'">{{ $props.suffix }}</template>
|
|
108
|
-
<component v-else-if="$props.suffix" :is="$props.suffix" />
|
|
109
|
-
</template>
|
|
110
|
-
</TextInput>`,
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
export const WithPrefixAvatar = {
|
|
116
|
-
args: {
|
|
117
|
-
prefix: 'Avatar',
|
|
118
|
-
},
|
|
119
|
-
render: WithPrefixIcon.render,
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export const WithPrefixAndSuffixIcon = {
|
|
123
|
-
args: {
|
|
124
|
-
prefix: 'Icon',
|
|
125
|
-
suffix: 'Icon',
|
|
126
|
-
},
|
|
127
|
-
render: function (args, { argTypes }) {
|
|
128
|
-
return {
|
|
129
|
-
props: Object.keys(argTypes),
|
|
130
|
-
components: { TextInput },
|
|
131
|
-
template: `<TextInput v-bind="$props">
|
|
132
|
-
<template #prefix>
|
|
133
|
-
<template v-if="typeof $props.prefix == 'string'">{{ $props.prefix }}</template>
|
|
134
|
-
<component v-else-if="$props.prefix" :is="$props.prefix" />
|
|
135
|
-
</template>
|
|
136
|
-
<template #suffix>
|
|
137
|
-
<template v-if="typeof $props.suffix == 'string'">{{ $props.suffix }}</template>
|
|
138
|
-
<component v-else-if="$props.suffix" :is="$props.suffix" />
|
|
139
|
-
</template>
|
|
140
|
-
</TextInput>`,
|
|
141
|
-
}
|
|
142
|
-
},
|
|
143
|
-
}
|
package/src/tokens/Color.vue
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="mb-4 space-y-2" v-for="color in colors">
|
|
3
|
-
<div class="text-base">{{ color }}</div>
|
|
4
|
-
<div class="flex space-x-1">
|
|
5
|
-
<div
|
|
6
|
-
v-for="shade in [
|
|
7
|
-
'50',
|
|
8
|
-
'100',
|
|
9
|
-
'200',
|
|
10
|
-
'300',
|
|
11
|
-
'400',
|
|
12
|
-
'500',
|
|
13
|
-
'600',
|
|
14
|
-
'700',
|
|
15
|
-
'800',
|
|
16
|
-
'900',
|
|
17
|
-
]"
|
|
18
|
-
class="h-8 w-8 rounded-md"
|
|
19
|
-
:class="colorShades[color][shade]"
|
|
20
|
-
></div>
|
|
21
|
-
</div>
|
|
22
|
-
</div>
|
|
23
|
-
</template>
|
|
24
|
-
<script>
|
|
25
|
-
export default {
|
|
26
|
-
name: 'Color',
|
|
27
|
-
computed: {
|
|
28
|
-
colors() {
|
|
29
|
-
return [
|
|
30
|
-
'gray',
|
|
31
|
-
'blue',
|
|
32
|
-
'green',
|
|
33
|
-
'red',
|
|
34
|
-
'orange',
|
|
35
|
-
'yellow',
|
|
36
|
-
'teal',
|
|
37
|
-
'violet',
|
|
38
|
-
'cyan',
|
|
39
|
-
'amber',
|
|
40
|
-
'pink',
|
|
41
|
-
'purple',
|
|
42
|
-
]
|
|
43
|
-
},
|
|
44
|
-
colorShades() {
|
|
45
|
-
return {
|
|
46
|
-
gray: {
|
|
47
|
-
50: 'bg-gray-50',
|
|
48
|
-
100: 'bg-gray-100',
|
|
49
|
-
200: 'bg-gray-200',
|
|
50
|
-
300: 'bg-gray-300',
|
|
51
|
-
400: 'bg-gray-400',
|
|
52
|
-
500: 'bg-gray-500',
|
|
53
|
-
600: 'bg-gray-600',
|
|
54
|
-
700: 'bg-gray-700',
|
|
55
|
-
800: 'bg-gray-800',
|
|
56
|
-
900: 'bg-gray-900',
|
|
57
|
-
},
|
|
58
|
-
blue: {
|
|
59
|
-
50: 'bg-blue-50',
|
|
60
|
-
100: 'bg-blue-100',
|
|
61
|
-
200: 'bg-blue-200',
|
|
62
|
-
300: 'bg-blue-300',
|
|
63
|
-
400: 'bg-blue-400',
|
|
64
|
-
500: 'bg-blue-500',
|
|
65
|
-
600: 'bg-blue-600',
|
|
66
|
-
700: 'bg-blue-700',
|
|
67
|
-
800: 'bg-blue-800',
|
|
68
|
-
900: 'bg-blue-900',
|
|
69
|
-
},
|
|
70
|
-
green: {
|
|
71
|
-
50: 'bg-green-50',
|
|
72
|
-
100: 'bg-green-100',
|
|
73
|
-
200: 'bg-green-200',
|
|
74
|
-
300: 'bg-green-300',
|
|
75
|
-
400: 'bg-green-400',
|
|
76
|
-
500: 'bg-green-500',
|
|
77
|
-
600: 'bg-green-600',
|
|
78
|
-
700: 'bg-green-700',
|
|
79
|
-
800: 'bg-green-800',
|
|
80
|
-
900: 'bg-green-900',
|
|
81
|
-
},
|
|
82
|
-
red: {
|
|
83
|
-
50: 'bg-red-50',
|
|
84
|
-
100: 'bg-red-100',
|
|
85
|
-
200: 'bg-red-200',
|
|
86
|
-
300: 'bg-red-300',
|
|
87
|
-
400: 'bg-red-400',
|
|
88
|
-
500: 'bg-red-500',
|
|
89
|
-
600: 'bg-red-600',
|
|
90
|
-
700: 'bg-red-700',
|
|
91
|
-
800: 'bg-red-800',
|
|
92
|
-
900: 'bg-red-900',
|
|
93
|
-
},
|
|
94
|
-
orange: {
|
|
95
|
-
50: 'bg-orange-50',
|
|
96
|
-
100: 'bg-orange-100',
|
|
97
|
-
200: 'bg-orange-200',
|
|
98
|
-
300: 'bg-orange-300',
|
|
99
|
-
400: 'bg-orange-400',
|
|
100
|
-
500: 'bg-orange-500',
|
|
101
|
-
600: 'bg-orange-600',
|
|
102
|
-
700: 'bg-orange-700',
|
|
103
|
-
800: 'bg-orange-800',
|
|
104
|
-
900: 'bg-orange-900',
|
|
105
|
-
},
|
|
106
|
-
yellow: {
|
|
107
|
-
50: 'bg-yellow-50',
|
|
108
|
-
100: 'bg-yellow-100',
|
|
109
|
-
200: 'bg-yellow-200',
|
|
110
|
-
300: 'bg-yellow-300',
|
|
111
|
-
400: 'bg-yellow-400',
|
|
112
|
-
500: 'bg-yellow-500',
|
|
113
|
-
600: 'bg-yellow-600',
|
|
114
|
-
700: 'bg-yellow-700',
|
|
115
|
-
800: 'bg-yellow-800',
|
|
116
|
-
900: 'bg-yellow-900',
|
|
117
|
-
},
|
|
118
|
-
teal: {
|
|
119
|
-
50: 'bg-teal-50',
|
|
120
|
-
100: 'bg-teal-100',
|
|
121
|
-
200: 'bg-teal-200',
|
|
122
|
-
300: 'bg-teal-300',
|
|
123
|
-
400: 'bg-teal-400',
|
|
124
|
-
500: 'bg-teal-500',
|
|
125
|
-
600: 'bg-teal-600',
|
|
126
|
-
700: 'bg-teal-700',
|
|
127
|
-
800: 'bg-teal-800',
|
|
128
|
-
900: 'bg-teal-900',
|
|
129
|
-
},
|
|
130
|
-
violet: {
|
|
131
|
-
50: 'bg-violet-50',
|
|
132
|
-
100: 'bg-violet-100',
|
|
133
|
-
200: 'bg-violet-200',
|
|
134
|
-
300: 'bg-violet-300',
|
|
135
|
-
400: 'bg-violet-400',
|
|
136
|
-
500: 'bg-violet-500',
|
|
137
|
-
600: 'bg-violet-600',
|
|
138
|
-
700: 'bg-violet-700',
|
|
139
|
-
800: 'bg-violet-800',
|
|
140
|
-
900: 'bg-violet-900',
|
|
141
|
-
},
|
|
142
|
-
cyan: {
|
|
143
|
-
50: 'bg-cyan-50',
|
|
144
|
-
100: 'bg-cyan-100',
|
|
145
|
-
200: 'bg-cyan-200',
|
|
146
|
-
300: 'bg-cyan-300',
|
|
147
|
-
400: 'bg-cyan-400',
|
|
148
|
-
500: 'bg-cyan-500',
|
|
149
|
-
600: 'bg-cyan-600',
|
|
150
|
-
700: 'bg-cyan-700',
|
|
151
|
-
800: 'bg-cyan-800',
|
|
152
|
-
900: 'bg-cyan-900',
|
|
153
|
-
},
|
|
154
|
-
amber: {
|
|
155
|
-
50: 'bg-amber-50',
|
|
156
|
-
100: 'bg-amber-100',
|
|
157
|
-
200: 'bg-amber-200',
|
|
158
|
-
300: 'bg-amber-300',
|
|
159
|
-
400: 'bg-amber-400',
|
|
160
|
-
500: 'bg-amber-500',
|
|
161
|
-
600: 'bg-amber-600',
|
|
162
|
-
700: 'bg-amber-700',
|
|
163
|
-
800: 'bg-amber-800',
|
|
164
|
-
900: 'bg-amber-900',
|
|
165
|
-
},
|
|
166
|
-
pink: {
|
|
167
|
-
50: 'bg-pink-50',
|
|
168
|
-
100: 'bg-pink-100',
|
|
169
|
-
200: 'bg-pink-200',
|
|
170
|
-
300: 'bg-pink-300',
|
|
171
|
-
400: 'bg-pink-400',
|
|
172
|
-
500: 'bg-pink-500',
|
|
173
|
-
600: 'bg-pink-600',
|
|
174
|
-
700: 'bg-pink-700',
|
|
175
|
-
800: 'bg-pink-800',
|
|
176
|
-
900: 'bg-pink-900',
|
|
177
|
-
},
|
|
178
|
-
purple: {
|
|
179
|
-
50: 'bg-purple-50',
|
|
180
|
-
100: 'bg-purple-100',
|
|
181
|
-
200: 'bg-purple-200',
|
|
182
|
-
300: 'bg-purple-300',
|
|
183
|
-
400: 'bg-purple-400',
|
|
184
|
-
500: 'bg-purple-500',
|
|
185
|
-
600: 'bg-purple-600',
|
|
186
|
-
700: 'bg-purple-700',
|
|
187
|
-
800: 'bg-purple-800',
|
|
188
|
-
900: 'bg-purple-900',
|
|
189
|
-
},
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
|
-
},
|
|
193
|
-
}
|
|
194
|
-
</script>
|