@dcrackel/hematournamentui 1.0.7 → 1.0.20

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.
Files changed (106) hide show
  1. package/.storybook/preview-head.html +3 -1
  2. package/dist/HemaTouranmentUI-lib.es.js +26609 -480
  3. package/dist/HemaTouranmentUI-lib.umd.js +183 -1
  4. package/dist/style.css +9 -0
  5. package/package/.eslintrc.js +18 -0
  6. package/package/.gitattributes +2 -0
  7. package/package/.prettierignore +1 -0
  8. package/package/.storybook/main.js +18 -0
  9. package/package/.storybook/mockRoutes.js +9 -0
  10. package/package/.storybook/preview-head.html +1 -0
  11. package/package/.storybook/preview.js +17 -0
  12. package/package/LICENSE +21 -0
  13. package/package/README.md +83 -0
  14. package/package/index.html +12 -0
  15. package/package/package.json +49 -0
  16. package/package/postcss.config.js +6 -0
  17. package/package/prettier.config.js +10 -0
  18. package/package/src/assets/default-tournament.png +0 -0
  19. package/package/src/index.js +15 -0
  20. package/package/src/main.js +2 -0
  21. package/package/src/mocks/fileMock.js +1 -0
  22. package/package/src/mocks/tournamentMock.js +34 -0
  23. package/package/src/stories/Configure.mdx +320 -0
  24. package/package/tailwind/output.css +1072 -0
  25. package/package/tailwind/tailwind.css +4 -0
  26. package/package/tailwind.config.js +25 -0
  27. package/package/vite.config.js +23 -0
  28. package/package.json +9 -2
  29. package/src/assets/select-tournament.png +0 -0
  30. package/src/index.js +20 -11
  31. package/src/stories/Atoms/Icon/BaseIcon.stories.js +54 -0
  32. package/src/stories/Atoms/Icon/BaseIcon.vue +47 -0
  33. package/src/stories/Atoms/Input/BaseInput.stories.js +28 -0
  34. package/src/stories/Atoms/Input/BaseInput.test.js +87 -0
  35. package/src/stories/Atoms/Input/BaseInput.vue +73 -0
  36. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.stories.js +31 -0
  37. package/src/stories/Atoms/RadioGroup/BaseRadioGroup.vue +49 -0
  38. package/src/stories/Atoms/Tag/BaseTag.stories.js +29 -0
  39. package/src/stories/Atoms/Tag/BaseTag.test.js +42 -0
  40. package/src/stories/Atoms/Tag/BaseTag.vue +57 -0
  41. package/src/stories/Atoms/Text/BaseText.stories.js +77 -0
  42. package/src/stories/Atoms/Text/BaseText.test.js +172 -0
  43. package/src/stories/Atoms/Text/BaseText.vue +170 -0
  44. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.stories.js +41 -0
  45. package/src/stories/Molecules/Breadcrumb/Admin/Breadcrumb.vue +31 -0
  46. package/src/stories/Molecules/Button/BaseButton.stories.js +76 -0
  47. package/src/stories/Molecules/Button/BaseButton.test.js +147 -0
  48. package/src/stories/Molecules/Button/BaseButton.vue +125 -0
  49. package/src/stories/Molecules/Cards/Detail/TournamentCardDetail.stories.js +33 -0
  50. package/src/stories/Molecules/Cards/Detail/TournamentCardDetail.vue +38 -0
  51. package/src/stories/Molecules/Cards/Header/TournamentCardHeader.stories.js +48 -0
  52. package/src/stories/Molecules/Cards/Header/TournamentCardHeader.vue +40 -0
  53. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +36 -0
  54. package/src/stories/Molecules/Filters/FilterAndSortBar/FilterAndSortBar.vue +49 -0
  55. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +32 -0
  56. package/src/stories/Molecules/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +46 -0
  57. package/src/stories/Organisms/AddressAutocomplete/AddressAutocomplete.stories.js +25 -0
  58. package/src/stories/Organisms/AddressAutocomplete/AddressAutocomplete.vue +51 -0
  59. package/src/stories/Organisms/DatePicker/DatePicker.stories.js +25 -0
  60. package/src/stories/Organisms/DatePicker/DatePicker.vue +62 -0
  61. package/src/stories/Organisms/DropDown/DropDownMenu.stories.js +34 -0
  62. package/src/stories/Organisms/DropDown/DropDownMenu.vue +51 -0
  63. package/src/stories/Organisms/Grid/GridContainer.stories.js +47 -0
  64. package/src/stories/Organisms/Grid/GridContainer.vue +108 -0
  65. package/src/stories/Organisms/ImageCropper/ImageCropper.stories.js +28 -0
  66. package/src/stories/Organisms/ImageCropper/ImageCropper.vue +86 -0
  67. package/src/stories/Organisms/TextBoxEditor/TextBoxEditor.stories.js +28 -0
  68. package/src/stories/Organisms/TextBoxEditor/TextBoxEditor.vue +97 -0
  69. package/src/stories/Organisms/TournamentCard/TournamentCard.stories.js +37 -0
  70. package/src/stories/Organisms/TournamentCard/TournamentCard.vue +35 -0
  71. package/src/stories/Templates/Forms/AddTournamentPageOne/AddTournamentPageOne.stories.js +25 -0
  72. package/src/stories/Templates/Forms/AddTournamentPageOne/AddTournamentPageOne.vue +136 -0
  73. package/src/stories/Templates/Menu/Admin/AdminLeftMenu.stories.js +28 -0
  74. package/src/stories/Templates/Menu/Admin/AdminLeftMenu.vue +57 -0
  75. package/tailwind/output.css +147 -7
  76. package/tailwind.config.js +28 -3
  77. /package/{src → package/src}/stories/Base/Button/BaseButton.stories.js +0 -0
  78. /package/{src → package/src}/stories/Base/Button/BaseButton.test.js +0 -0
  79. /package/{src → package/src}/stories/Base/Button/BaseButton.vue +0 -0
  80. /package/{src → package/src}/stories/Base/Input/BaseInput.stories.js +0 -0
  81. /package/{src → package/src}/stories/Base/Input/BaseInput.test.js +0 -0
  82. /package/{src → package/src}/stories/Base/Input/BaseInput.vue +0 -0
  83. /package/{src → package/src}/stories/Base/Tag/BaseTag.stories.js +0 -0
  84. /package/{src → package/src}/stories/Base/Tag/BaseTag.test.js +0 -0
  85. /package/{src → package/src}/stories/Base/Tag/BaseTag.vue +0 -0
  86. /package/{src → package/src}/stories/Base/Text/BaseText.stories.js +0 -0
  87. /package/{src → package/src}/stories/Base/Text/BaseText.test.js +0 -0
  88. /package/{src → package/src}/stories/Base/Text/BaseText.vue +0 -0
  89. /package/{src → package/src}/stories/Breadcrumb/Admin/Breadcrumb.stories.js +0 -0
  90. /package/{src → package/src}/stories/Breadcrumb/Admin/Breadcrumb.vue +0 -0
  91. /package/{src → package/src}/stories/Cards/TournamentCard/Detail/TournamentCardDetail.stories.js +0 -0
  92. /package/{src → package/src}/stories/Cards/TournamentCard/Detail/TournamentCardDetail.vue +0 -0
  93. /package/{src → package/src}/stories/Cards/TournamentCard/Header/TournamentCardHeader.stories.js +0 -0
  94. /package/{src → package/src}/stories/Cards/TournamentCard/Header/TournamentCardHeader.vue +0 -0
  95. /package/{src → package/src}/stories/Cards/TournamentCard/TournamentCard.stories.js +0 -0
  96. /package/{src → package/src}/stories/Cards/TournamentCard/TournamentCard.vue +0 -0
  97. /package/{src → package/src}/stories/Containers/Grid/GridContainer.stories.js +0 -0
  98. /package/{src → package/src}/stories/Containers/Grid/GridContainer.vue +0 -0
  99. /package/{src → package/src}/stories/Filters/FilterAndSortBar/FilterAndSortBar.stories.js +0 -0
  100. /package/{src → package/src}/stories/Filters/FilterAndSortBar/FilterAndSortBar.vue +0 -0
  101. /package/{src → package/src}/stories/Filters/FilterUpcomingPast/FilterUpcomingPast.stories.js +0 -0
  102. /package/{src → package/src}/stories/Filters/FilterUpcomingPast/FilterUpcomingPast.vue +0 -0
  103. /package/{src → package/src}/stories/Menu/Admin/AdminLeftMenu.stories.js +0 -0
  104. /package/{src → package/src}/stories/Menu/Admin/AdminLeftMenu.vue +0 -0
  105. /package/{src → package/src}/stories/Menu/DropDown/DropDownMenu.stories.js +0 -0
  106. /package/{src → package/src}/stories/Menu/DropDown/DropDownMenu.vue +0 -0
@@ -0,0 +1,77 @@
1
+ import BaseText from './BaseText.vue';
2
+ export default {
3
+ title: 'Atoms/BaseText',
4
+ component: BaseText,
5
+ tags: ['autodocs'],
6
+ argTypes: {
7
+ text: {
8
+ control: {
9
+ type: 'text',
10
+ defaultValue: 'Default Text'
11
+ }
12
+ },
13
+ size: {
14
+ control: {
15
+ type: 'select'
16
+ },
17
+ options: ['xs', 'small', 'medium', 'large', 'xl', '2xl', '3xl'],
18
+ defaultValue: 'medium'
19
+ },
20
+ weight: {
21
+ control: {
22
+ type: 'select'
23
+ },
24
+ options: ['light', 'normal', 'medium', 'semi-bold', 'bold', 'extra-bold'],
25
+ defaultValue: 'normal'
26
+ },
27
+ color: {
28
+ control: {
29
+ type: 'select'
30
+ },
31
+ options: ['neutral', 'quaternary', 'tertiary', 'secondary', 'primary', 'bright'],
32
+ defaultValue: 'primary'
33
+ },
34
+ hoverColor: {
35
+ control: {
36
+ type: 'select'
37
+ },
38
+ options: [
39
+ 'primary',
40
+ 'quaternary',
41
+ 'secondary',
42
+ 'tertiary',
43
+ 'neutral',
44
+ 'bright',
45
+ 'none'
46
+ ],
47
+ defaultValue: 'none'
48
+ }
49
+ }
50
+ };
51
+
52
+ export const Large = {
53
+ args: {
54
+ size: 'large',
55
+ text: 'Large Text'
56
+ }
57
+ };
58
+
59
+ export const Medium = {
60
+ args: {
61
+ size: 'medium',
62
+ text: 'Medium Text'
63
+ }
64
+ };
65
+ export const Small = {
66
+ args: {
67
+ size: 'small',
68
+ text: 'Small Text'
69
+ }
70
+ };
71
+
72
+ export const TextWithHover = {
73
+ args: {
74
+ ...Large.args,
75
+ hoverColor: 'bright'
76
+ }
77
+ };
@@ -0,0 +1,172 @@
1
+ import {mount} from "@vue/test-utils";
2
+ import {describe, expect, test, it} from "vitest";
3
+ import BaseText from './BaseText.vue';
4
+
5
+ describe('BaseText.vue', () => {
6
+ it('renders correctly with default props', () => {
7
+ const wrapper = mount(BaseText, {
8
+ props: {text: 'Test Text'}
9
+ });
10
+ expect(wrapper.text()).toBe('Test Text');
11
+ expect(wrapper.classes()).toContain('text-sm');
12
+ expect(wrapper.classes()).toContain('font-normal');
13
+ expect(wrapper.classes()).toContain('text-primary');
14
+ });
15
+
16
+ it('renders text, size, weight, and color based on props', () => {
17
+ const wrapper = mount(BaseText, {
18
+ props: {
19
+ text: 'Styled Text',
20
+ size: 'xl',
21
+ weight: 'bold',
22
+ color: 'secondary'
23
+ }
24
+ });
25
+ expect(wrapper.text()).toBe('Styled Text');
26
+ expect(wrapper.classes()).toContain('text-xl');
27
+ expect(wrapper.classes()).toContain('font-bold');
28
+ expect(wrapper.classes()).toContain('text-secondary');
29
+ });
30
+
31
+ it('computes classes based on multiple props', () => {
32
+ const wrapper = mount(BaseText, {
33
+ props: {
34
+ text: 'Complex Styled Text',
35
+ size: '2xl',
36
+ weight: 'extra-bold',
37
+ color: 'bright',
38
+ hoverColor: 'tertiary'
39
+ }
40
+ });
41
+ expect(wrapper.classes()).toContain('text-2xl');
42
+ expect(wrapper.classes()).toContain('font-extrabold');
43
+ expect(wrapper.classes()).toContain('text-bright');
44
+ expect(wrapper.classes()).toContain('hover:text-tertiary');
45
+ });
46
+
47
+ it('computes classes for hover primary', () => {
48
+ const wrapper = mount(BaseText, {
49
+ props: {
50
+ text: 'Complex Styled Text',
51
+ size: 'xs',
52
+ hoverColor: 'primary',
53
+ weight: 'light',
54
+ color: 'neutral'
55
+ }
56
+ });
57
+
58
+ expect(wrapper.classes()).toContain('text-xs');
59
+ expect(wrapper.classes()).toContain('font-light');
60
+ expect(wrapper.classes()).toContain('text-neutral');
61
+ expect(wrapper.classes()).toContain('hover:text-primary');
62
+ });
63
+
64
+ it('computes classes for hover secondary', () => {
65
+ const wrapper = mount(BaseText, {
66
+ props: {
67
+ text: 'Complex Styled Text',
68
+ size: 'md',
69
+ hoverColor: 'secondary',
70
+ weight: 'medium',
71
+ color: 'tertiary'
72
+ }
73
+ });
74
+
75
+ expect(wrapper.classes()).toContain('text-tertiary');
76
+ expect(wrapper.classes()).toContain('text-md');
77
+ expect(wrapper.classes()).toContain('font-medium');
78
+ expect(wrapper.classes()).toContain('hover:text-secondary');
79
+ });
80
+
81
+ it('computes classes for hover tertiary', () => {
82
+ const wrapper = mount(BaseText, {
83
+ props: {
84
+ text: 'Complex Styled Text',
85
+ size: 'lg',
86
+ hoverColor: 'tertiary',
87
+ weight: 'light',
88
+ color: 'tertiary'
89
+ }
90
+ });
91
+ expect(wrapper.classes()).toContain('text-tertiary');
92
+ expect(wrapper.classes()).toContain('text-lg');
93
+ expect(wrapper.classes()).toContain('font-light');
94
+ expect(wrapper.classes()).toContain('hover:text-tertiary');
95
+ });
96
+
97
+ it('computes classes for hover quaternary', () => {
98
+ const wrapper = mount(BaseText, {
99
+ props: {
100
+ text: 'Complex Styled Text',
101
+ weight: 'semi-bold',
102
+ size: '3xl',
103
+ hoverColor: 'quaternary',
104
+ color: 'quaternary'
105
+ }
106
+ });
107
+ expect(wrapper.classes()).toContain('text-quaternary');
108
+ expect(wrapper.classes()).toContain('text-3xl');
109
+ expect(wrapper.classes()).toContain('font-semibold');
110
+ expect(wrapper.classes()).toContain('hover:text-quaternary');
111
+ });
112
+
113
+ it('computes classes for hover neutral', () => {
114
+ const wrapper = mount(BaseText, {
115
+ props: {
116
+ text: 'Complex Styled Text',
117
+ hoverColor: 'neutral',
118
+ size: 'xs',
119
+ color: 'primary'
120
+ }
121
+ });
122
+ expect(wrapper.classes()).toContain('text-primary');
123
+ expect(wrapper.classes()).toContain('text-xs');
124
+ expect(wrapper.classes()).toContain('font-normal');
125
+ expect(wrapper.classes()).toContain('hover:text-neutral');
126
+ });
127
+
128
+ it('computes classes for hover neutral', () => {
129
+ const wrapper = mount(BaseText, {
130
+ props: {
131
+ text: 'Complex Styled Text',
132
+ hoverColor: 'bright',
133
+ color: 'primaryHighlight'
134
+ }
135
+ });
136
+ expect(wrapper.classes()).toContain('hover:text-bright');
137
+ expect(wrapper.classes()).toContain('text-primaryHighlight');
138
+ });
139
+
140
+ it('computes classes for hover neutral', () => {
141
+ const wrapper = mount(BaseText, {
142
+ props: {
143
+ text: 'Complex Styled Text',
144
+ hoverColor: 'none'
145
+ }
146
+ });
147
+ const hasHoverClass = wrapper.classes().some(className => className.startsWith('hover:'));
148
+ expect(hasHoverClass).toBeFalsy();
149
+ });
150
+
151
+ it('applies text-alarmText class when color is alarm', () => {
152
+ const wrapper = mount(BaseText, {
153
+ props: {
154
+ text: 'Alarm Text',
155
+ color: 'alarm'
156
+ }
157
+ });
158
+ expect(wrapper.classes()).toContain('text-alarmText');
159
+ });
160
+
161
+ it('applies text-alarm class when invalid is true', () => {
162
+ const wrapper = mount(BaseText, {
163
+ props: {
164
+ text: 'Invalid Text',
165
+ invalid: true
166
+ }
167
+ });
168
+ expect(wrapper.classes()).toContain('text-alarm');
169
+ });
170
+
171
+ });
172
+
@@ -0,0 +1,170 @@
1
+ <template>
2
+ <div :class="classes">{{ text }}</div>
3
+ </template>
4
+
5
+ <script>
6
+ import { computed } from 'vue';
7
+
8
+ export default {
9
+ name: 'BaseText',
10
+
11
+ props: {
12
+ text: {
13
+ type: String,
14
+ required: true,
15
+ default: ''
16
+ },
17
+ weight: {
18
+ type: String,
19
+ default: 'normal',
20
+ validator: function (value) {
21
+ return ['light', 'normal', 'medium', 'semi-bold', 'bold', 'extra-bold'].indexOf(value) !== -1;
22
+ }
23
+ },
24
+ size: {
25
+ type: String,
26
+ default: 'sm',
27
+ validator: function (value) {
28
+ return ['xs', 'sm', 'md', 'lg', 'xl', '2xl', '3xl'].indexOf(value) !== -1;
29
+ }
30
+ },
31
+ color: {
32
+ type: String,
33
+ default: 'primary',
34
+ validator: function (value) {
35
+ return ['neutral', 'quaternary', 'tertiary', 'secondary', 'primary', 'bright', 'primaryHighlight', 'alarm'].indexOf(value) !== -1;
36
+ }
37
+ },
38
+ invalid: {
39
+ type: Boolean,
40
+ default: false
41
+ },
42
+ hoverColor: {
43
+ type: String,
44
+ default: 'none',
45
+ validator: function (value) {
46
+ return (
47
+ [
48
+ 'primary',
49
+ 'secondary',
50
+ 'tertiary',
51
+ 'quaternary',
52
+ 'neutral',
53
+ 'bright',
54
+ 'none'
55
+ ].indexOf(value) !== -1
56
+ );
57
+ }
58
+ }
59
+ },
60
+ setup(props) {
61
+ return {
62
+ classes: computed(() => {
63
+ let baseClasses = '';
64
+
65
+ switch (props.color) {
66
+ case 'neutral':
67
+ baseClasses += ' text-neutral';
68
+ break;
69
+ case `tertiary`:
70
+ baseClasses += ' text-tertiary';
71
+ break;
72
+ case 'secondary':
73
+ baseClasses += ' text-secondary';
74
+ break;
75
+ case 'quaternary':
76
+ baseClasses += ' text-quaternary';
77
+ break;
78
+ case 'primary':
79
+ baseClasses += ' text-primary';
80
+ break;
81
+ case 'primaryHighlight':
82
+ baseClasses += ' text-primaryHighlight';
83
+ break;
84
+ case 'bright':
85
+ baseClasses += ' text-bright';
86
+ break;
87
+ case 'alarm':
88
+ baseClasses += ' text-alarmText';
89
+ break;
90
+ }
91
+
92
+ if (props.invalid) {
93
+ baseClasses = ' text-alarm';
94
+ }
95
+
96
+ switch (props.hoverColor) {
97
+ case 'neutral':
98
+ baseClasses += ' hover:text-neutral';
99
+ break;
100
+ case `tertiary`:
101
+ baseClasses += ' hover:text-tertiary';
102
+ break;
103
+ case 'secondary':
104
+ baseClasses += ' hover:text-secondary';
105
+ break;
106
+ case 'quaternary':
107
+ baseClasses += ' hover:text-quaternary';
108
+ break;
109
+ case 'primary':
110
+ baseClasses += ' hover:text-primary';
111
+ break;
112
+ case 'bright':
113
+ baseClasses += ' hover:text-bright';
114
+ break;
115
+ case 'none':
116
+ baseClasses += '';
117
+ break;
118
+ }
119
+
120
+ switch (props.weight) {
121
+ case 'light':
122
+ baseClasses += ' font-light';
123
+ break;
124
+ case 'normal':
125
+ baseClasses += ' font-normal';
126
+ break;
127
+ case 'medium':
128
+ baseClasses += ' font-medium';
129
+ break;
130
+ case 'semi-bold':
131
+ baseClasses += ' font-semibold';
132
+ break;
133
+ case 'bold':
134
+ baseClasses += ' font-bold';
135
+ break;
136
+ case 'extra-bold':
137
+ baseClasses += ' font-extrabold';
138
+ break;
139
+ }
140
+
141
+ switch (props.size) {
142
+ case 'xs':
143
+ baseClasses += ' text-xs';
144
+ break;
145
+ case 'sm':
146
+ baseClasses += ' text-sm';
147
+ break;
148
+ case 'md':
149
+ baseClasses += ' text-md';
150
+ break;
151
+ case 'lg':
152
+ baseClasses += ' text-lg';
153
+ break;
154
+ case 'xl':
155
+ baseClasses += ' text-xl';
156
+ break;
157
+ case '2xl':
158
+ baseClasses += ' text-2xl';
159
+ break;
160
+ case '3xl':
161
+ baseClasses += ' text-3xl';
162
+ break;
163
+ }
164
+ return baseClasses;
165
+ })
166
+ };
167
+ }
168
+ };
169
+
170
+ </script>
@@ -0,0 +1,41 @@
1
+ // Breadcrumb.stories.js
2
+ import Breadcrumb from './Breadcrumb.vue';
3
+ import { vueRouter } from 'storybook-vue3-router';
4
+ import mockRoutes from '../../../../../.storybook/mockRoutes.js';
5
+ import { action } from '@storybook/addon-actions';
6
+ export default {
7
+ title: 'Molecules/Admin/Breadcrumb',
8
+ component: Breadcrumb,
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ items: {
12
+ control: 'object',
13
+ description: 'Array of breadcrumb items'
14
+ },
15
+ },
16
+ };
17
+
18
+ export const Default = {
19
+ args: {
20
+ label: 'Sort By',
21
+ items: [
22
+ { text: 'Tournament', link: '/' },
23
+ { text: 'Event', link: '/event' },
24
+ { text: 'Pool', link: '' }
25
+ ],
26
+ selectedItem: {text: 'Text1', link: '/link1'},
27
+ props: {
28
+ onLinkClick: {
29
+ default: () => action('link-clicked')
30
+ }
31
+ },
32
+ }
33
+ };
34
+
35
+ Default.decorators = [vueRouter(mockRoutes)];
36
+
37
+ Default.parameters = {
38
+ actions: {
39
+ handles: ['click .breadcrumb-item router-link'],
40
+ },
41
+ };
@@ -0,0 +1,31 @@
1
+ <template>
2
+ <nav class="flex flex-row">
3
+ <div v-for="(item, index) in items" :key="index">
4
+ <BaseText v-if="index > 0" :text="' > '" size="lg" color="quaternary" class="mr-2" />
5
+ <BaseText v-if="!item.link" class="mr-2" :text="item.text" size="lg" color="quaternary" />
6
+ <router-link v-if="item.link" :to="item.link" @click.native="onLinkClick" class="mr-2">
7
+ <BaseText :text="item.text" size="lg" color="quaternary" hover-color="bright" class="underline" />
8
+ </router-link>
9
+ </div>
10
+ </nav>
11
+ </template>
12
+
13
+ <script>
14
+ import BaseText from "../../../Atoms/Text/BaseText.vue";
15
+
16
+ export default {
17
+ name: 'Breadcrumb',
18
+ components: {BaseText},
19
+ props: {
20
+ items: {
21
+ type: Array,
22
+ required: true,
23
+ default: () => []
24
+ },
25
+ onLinkClick: {
26
+ type: Function,
27
+ default: () => {}
28
+ }
29
+ }
30
+ };
31
+ </script>
@@ -0,0 +1,76 @@
1
+ import BaseButton from './BaseButton.vue';
2
+
3
+ export default {
4
+ title: 'Molecules/Button/BaseButton',
5
+ component: BaseButton,
6
+ tags: ['autodocs'],
7
+ argTypes: {
8
+ onClick: {},
9
+ size: {
10
+ control: {
11
+ type: 'select'
12
+ },
13
+ options: ['small', 'medium', 'large']
14
+ },
15
+ iconName: {
16
+ control: {
17
+ type: 'text'
18
+ },
19
+ defaultValue: ''
20
+ },
21
+ iconStyle: {
22
+ control: {
23
+ type: 'select'
24
+ },
25
+ options: ['fa-solid', 'fa-regular', 'fa-solid', 'fa-light', 'fa-thing'],
26
+ defaultValue: 'fa-solid'
27
+ },
28
+ type: {
29
+ control: {
30
+ type: 'select'
31
+ },
32
+ options: ['primary', 'secondary', 'tertiary', 'bright', 'admin']
33
+ }
34
+ }
35
+ };
36
+ export const Primary = {
37
+ args: {
38
+ type: 'primary',
39
+ label: 'Button'
40
+ }
41
+ };
42
+ export const PrimaryButtonWithIcon = {
43
+ args: {
44
+ type: 'primary',
45
+ label: 'Button',
46
+ iconName: 'fa-check'
47
+ }
48
+ };
49
+ export const Secondary = {
50
+ args: {
51
+ label: 'Button'
52
+ }
53
+ };
54
+ export const HighlightedButtonLarge = {
55
+ args: {
56
+ type: 'bright',
57
+ size: '3xl',
58
+ label: 'Button'
59
+ }
60
+ };
61
+ export const SmallTertiary = {
62
+ args: {
63
+ type: 'tertiary',
64
+ size: 'sm',
65
+ label: 'Button'
66
+ }
67
+ };
68
+
69
+ export const AdminMunuButton = {
70
+ args: {
71
+ type: 'admin',
72
+ size: 'md',
73
+ label: 'Admin Button',
74
+ hoverColor: 'highlightPrimary'
75
+ }
76
+ };