hp-design-system 1.0.1 → 1.0.2

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 (236) hide show
  1. package/dist/assets/fonts/Quicksand-Bold.ttf +0 -0
  2. package/dist/assets/fonts/Quicksand-Light.ttf +0 -0
  3. package/dist/assets/fonts/Quicksand-Medium.ttf +0 -0
  4. package/dist/assets/fonts/Quicksand-Regular.ttf +0 -0
  5. package/dist/assets/fonts/Quicksand-SemiBold.ttf +0 -0
  6. package/dist/assets/icons/AA0010.svg +24 -0
  7. package/dist/assets/icons/AA0020.svg +22 -0
  8. package/dist/assets/icons/AA0030.svg +6 -0
  9. package/dist/assets/icons/AA0040.svg +20 -0
  10. package/dist/assets/icons/AA0050.svg +20 -0
  11. package/dist/assets/icons/AA0060.svg +29 -0
  12. package/dist/assets/icons/AA0070.svg +28 -0
  13. package/dist/assets/icons/AB0010.svg +24 -0
  14. package/dist/assets/icons/AB0020.svg +24 -0
  15. package/dist/assets/icons/AB0030.svg +2 -0
  16. package/dist/assets/icons/AB0040.svg +24 -0
  17. package/dist/assets/icons/AB0050.svg +37 -0
  18. package/dist/assets/icons/AC0010.svg +20 -0
  19. package/dist/assets/icons/AC0020.svg +25 -0
  20. package/dist/assets/icons/AC0030.svg +22 -0
  21. package/dist/assets/icons/AC0040.svg +20 -0
  22. package/dist/assets/icons/AD0010.svg +25 -0
  23. package/dist/assets/icons/AD0020.svg +2 -0
  24. package/dist/assets/icons/AD0030.svg +22 -0
  25. package/dist/assets/icons/AD0040.svg +27 -0
  26. package/dist/assets/icons/AD0050.svg +30 -0
  27. package/dist/assets/icons/AE0010.svg +22 -0
  28. package/dist/assets/icons/AE0020.svg +26 -0
  29. package/dist/assets/icons/AE0030.svg +20 -0
  30. package/dist/assets/icons/AE0040.svg +25 -0
  31. package/dist/assets/icons/AE0050.svg +12 -0
  32. package/dist/assets/icons/AE0060.svg +24 -0
  33. package/dist/assets/icons/AE0070.svg +23 -0
  34. package/dist/assets/icons/BA0010.svg +2 -0
  35. package/dist/assets/icons/BA0020.svg +2 -0
  36. package/dist/assets/icons/BA0030.svg +2 -0
  37. package/dist/assets/icons/BA0031.svg +2 -0
  38. package/dist/assets/icons/BA0040.svg +4 -0
  39. package/dist/assets/icons/BA0050.svg +4 -0
  40. package/dist/assets/icons/BB0010.svg +2 -0
  41. package/dist/assets/icons/BB0011.svg +2 -0
  42. package/dist/assets/icons/BB0012.svg +2 -0
  43. package/dist/assets/icons/BB0013.svg +2 -0
  44. package/dist/assets/icons/BB0020.svg +2 -0
  45. package/dist/assets/icons/BB0021.svg +2 -0
  46. package/dist/assets/icons/BB0022.svg +2 -0
  47. package/dist/assets/icons/BB0023.svg +2 -0
  48. package/dist/assets/icons/BB0030.svg +2 -0
  49. package/dist/assets/icons/BB0031.svg +2 -0
  50. package/dist/assets/icons/BB0032.svg +2 -0
  51. package/dist/assets/icons/BB0033.svg +2 -0
  52. package/dist/assets/icons/BB0040.svg +2 -0
  53. package/dist/assets/icons/BB0041.svg +2 -0
  54. package/dist/assets/icons/BB0042.svg +2 -0
  55. package/dist/assets/icons/BB0043.svg +2 -0
  56. package/dist/assets/icons/BB0050.svg +2 -0
  57. package/dist/assets/icons/BB0051.svg +2 -0
  58. package/dist/assets/icons/BB0052.svg +2 -0
  59. package/dist/assets/icons/BB0053.svg +2 -0
  60. package/dist/assets/icons/BB0060.svg +2 -0
  61. package/dist/assets/icons/BB0061.svg +2 -0
  62. package/dist/assets/icons/BB0062.svg +2 -0
  63. package/dist/assets/icons/BB0063.svg +2 -0
  64. package/dist/assets/icons/BB0070.svg +2 -0
  65. package/dist/assets/icons/BB0071.svg +2 -0
  66. package/dist/assets/icons/BB0072.svg +2 -0
  67. package/dist/assets/icons/BB0073.svg +2 -0
  68. package/dist/assets/icons/BB0080.svg +2 -0
  69. package/dist/assets/icons/BB0081.svg +2 -0
  70. package/dist/assets/icons/BB0082.svg +2 -0
  71. package/dist/assets/icons/BB0083.svg +2 -0
  72. package/dist/assets/icons/BB0090.svg +2 -0
  73. package/dist/assets/icons/BB0091.svg +2 -0
  74. package/dist/assets/icons/BB0092.svg +2 -0
  75. package/dist/assets/icons/BB0093.svg +2 -0
  76. package/dist/assets/icons/BB0100.svg +2 -0
  77. package/dist/assets/icons/BB0101.svg +2 -0
  78. package/dist/assets/icons/BB0102.svg +2 -0
  79. package/dist/assets/icons/BB0103.svg +2 -0
  80. package/dist/assets/icons/BB0110.svg +2 -0
  81. package/dist/assets/icons/BB0111.svg +2 -0
  82. package/dist/assets/icons/BB0112.svg +2 -0
  83. package/dist/assets/icons/BB0113.svg +2 -0
  84. package/dist/assets/icons/BB0120.svg +2 -0
  85. package/dist/assets/icons/BB0121.svg +2 -0
  86. package/dist/assets/icons/BB0122.svg +2 -0
  87. package/dist/assets/icons/BB0123.svg +2 -0
  88. package/dist/assets/icons/BB0130.svg +2 -0
  89. package/dist/assets/icons/BB0131.svg +2 -0
  90. package/dist/assets/icons/BB0132.svg +2 -0
  91. package/dist/assets/icons/BB0133.svg +2 -0
  92. package/dist/assets/icons/BB0140.svg +2 -0
  93. package/dist/assets/icons/BB0141.svg +2 -0
  94. package/dist/assets/icons/BB0142.svg +2 -0
  95. package/dist/assets/icons/BB0143.svg +2 -0
  96. package/dist/assets/icons/BB0150.svg +2 -0
  97. package/dist/assets/icons/BB0151.svg +2 -0
  98. package/dist/assets/icons/BB0152.svg +2 -0
  99. package/dist/assets/icons/BB0153.svg +2 -0
  100. package/dist/assets/icons/BB0160.svg +2 -0
  101. package/dist/assets/icons/BB0161.svg +2 -0
  102. package/dist/assets/icons/BB0162.svg +2 -0
  103. package/dist/assets/icons/BB0163.svg +2 -0
  104. package/dist/assets/icons/BC0010.svg +2 -0
  105. package/dist/assets/icons/BC0011.svg +2 -0
  106. package/dist/assets/icons/BC0012.svg +1 -0
  107. package/dist/assets/icons/BC0013.svg +2 -0
  108. package/dist/assets/icons/BC0014.svg +2 -0
  109. package/dist/assets/icons/BC0015.svg +4 -0
  110. package/dist/assets/icons/BC0016.svg +4 -0
  111. package/dist/assets/icons/BC0017.svg +4 -0
  112. package/dist/assets/icons/BC0018.svg +4 -0
  113. package/dist/assets/icons/BC0019.svg +1 -0
  114. package/dist/assets/icons/BC0020.svg +2 -0
  115. package/dist/assets/icons/BC0021.svg +4 -0
  116. package/dist/assets/icons/BD0010.svg +2 -0
  117. package/dist/assets/icons/BD0020.svg +2 -0
  118. package/dist/assets/icons/BD0030.svg +2 -0
  119. package/dist/assets/icons/BD0040.svg +2 -0
  120. package/dist/assets/icons/BD0043.svg +1 -0
  121. package/dist/assets/icons/BD0050.svg +2 -0
  122. package/dist/assets/icons/BD0051.svg +2 -0
  123. package/dist/assets/icons/BD0060.svg +2 -0
  124. package/dist/assets/icons/BD0070.svg +2 -0
  125. package/dist/assets/icons/BD0071.svg +2 -0
  126. package/dist/assets/icons/BD0080.svg +2 -0
  127. package/dist/assets/icons/BD0081.svg +4 -0
  128. package/dist/assets/icons/BD0082.svg +2 -0
  129. package/dist/assets/icons/BD0090.svg +4 -0
  130. package/dist/assets/icons/BD0100.svg +2 -0
  131. package/dist/assets/icons/BD0110.svg +2 -0
  132. package/dist/assets/icons/BD0120.svg +1 -0
  133. package/dist/assets/icons/BD0130.svg +2 -0
  134. package/dist/assets/icons/BE0010.svg +2 -0
  135. package/dist/assets/icons/BE0011.svg +2 -0
  136. package/dist/assets/icons/BE0012.svg +2 -0
  137. package/dist/assets/icons/BE0013.svg +2 -0
  138. package/dist/assets/icons/BE0020.svg +2 -0
  139. package/dist/assets/icons/BE0030.svg +2 -0
  140. package/dist/assets/icons/BE0031.svg +2 -0
  141. package/dist/assets/icons/BE0032.svg +2 -0
  142. package/dist/assets/icons/BE0033.svg +2 -0
  143. package/dist/assets/icons/BE0040.svg +2 -0
  144. package/dist/assets/icons/BE0041.svg +2 -0
  145. package/dist/assets/icons/BE0042.svg +2 -0
  146. package/dist/assets/icons/BE0043.svg +1 -0
  147. package/dist/assets/icons/BE0050.svg +2 -0
  148. package/dist/assets/icons/BE0051.svg +2 -0
  149. package/dist/assets/icons/BE0052.svg +2 -0
  150. package/dist/assets/icons/BE0053.svg +2 -0
  151. package/dist/assets/icons/BE0060.svg +2 -0
  152. package/dist/assets/icons/BE0070.svg +2 -0
  153. package/dist/assets/icons/BE0080.svg +2 -0
  154. package/dist/assets/icons/BE0090.svg +2 -0
  155. package/dist/assets/icons/BE0100.svg +2 -0
  156. package/dist/assets/icons/BE0110.svg +2 -0
  157. package/dist/assets/icons/BE0120.svg +2 -0
  158. package/dist/assets/icons/BE0130.svg +2 -0
  159. package/dist/assets/icons/BE0140.svg +2 -0
  160. package/dist/assets/icons/BE0150.svg +2 -0
  161. package/dist/assets/icons/BF0010.svg +2 -0
  162. package/dist/assets/icons/BF0011.svg +2 -0
  163. package/dist/assets/icons/BF0020.svg +2 -0
  164. package/dist/assets/icons/BF0021.svg +2 -0
  165. package/dist/assets/icons/BF0030.svg +2 -0
  166. package/dist/assets/icons/BF0031.svg +2 -0
  167. package/dist/assets/icons/BF0040.svg +2 -0
  168. package/dist/assets/icons/BF0050.svg +2 -0
  169. package/dist/assets/icons/BF0060.svg +2 -0
  170. package/dist/assets/icons/BF0061.svg +2 -0
  171. package/dist/assets/icons/BF0070.svg +2 -0
  172. package/dist/assets/icons/BF0080.svg +2 -0
  173. package/dist/assets/icons/BF0090.svg +2 -0
  174. package/dist/assets/icons/BF0100.svg +2 -0
  175. package/dist/assets/icons/BG0010.svg +2 -0
  176. package/dist/assets/icons/BG0011.svg +2 -0
  177. package/dist/assets/icons/BG0020.svg +2 -0
  178. package/dist/assets/icons/BG0030.svg +1 -0
  179. package/dist/assets/icons/BG0040.svg +1 -0
  180. package/dist/assets/icons/BG0050.svg +1 -0
  181. package/dist/assets/icons/BG0060.svg +2 -0
  182. package/dist/assets/icons/BG0070.svg +2 -0
  183. package/dist/assets/icons/CA0010.svg +9 -0
  184. package/dist/assets/icons/CA0020.svg +9 -0
  185. package/dist/assets/icons/CA0030.svg +9 -0
  186. package/dist/assets/icons/CA0040.svg +9 -0
  187. package/dist/assets/icons/CA0050.svg +9 -0
  188. package/dist/assets/icons/CA0060.svg +9 -0
  189. package/dist/assets/icons/CA0070.svg +9 -0
  190. package/dist/assets/icons/CA0080.svg +9 -0
  191. package/dist/assets/icons/CA0090.svg +9 -0
  192. package/dist/assets/icons/CA0100.svg +9 -0
  193. package/dist/assets/icons/CA0110.svg +9 -0
  194. package/dist/assets/icons/CA0120.svg +9 -0
  195. package/dist/assets/icons/CA0130.svg +9 -0
  196. package/dist/assets/icons/icons.json +192 -0
  197. package/dist/hp-design-system.es.js +255 -13
  198. package/dist/style.css +1 -0
  199. package/dist/types/components/button/Button.stories.d.ts +2 -2
  200. package/dist/types/components/button/Button.vue.d.ts +72 -4
  201. package/dist/types/components/icons/Icon/Icon.stories.d.ts +8 -0
  202. package/dist/types/components/icons/Icon/Icon.vue.d.ts +11 -0
  203. package/dist/types/components/icons/iconList/IconList.stories.d.ts +7 -0
  204. package/dist/types/components/icons/iconList/IconList.vue.d.ts +7 -0
  205. package/dist/types/components/icons/iconList/components/IconListButton.vue.d.ts +58 -0
  206. package/dist/types/components/index.d.ts +4 -1
  207. package/dist/types/components/inputs/checkbox/Checkbox.stories.d.ts +10 -0
  208. package/dist/types/components/inputs/checkbox/Checkbox.vue.d.ts +46 -0
  209. package/dist/types/components/teste/Teste.stories.d.ts +37 -0
  210. package/dist/types/components/teste/Teste.vue.d.ts +146 -0
  211. package/dist/types/main.d.ts +1 -0
  212. package/dist/types/views/tokens/Colors.d.ts +7 -0
  213. package/dist/types/views/tokens/Sizes.vue.d.ts +2 -0
  214. package/package.json +21 -6
  215. package/src/App.vue +26 -3
  216. package/src/assets/main.scss +10 -17
  217. package/src/assets/themes.scss +21 -0
  218. package/src/components/button/Button.stories.ts +21 -22
  219. package/src/components/button/Button.vue +93 -4
  220. package/src/components/icons/Icon/Icon.stories.ts +68 -0
  221. package/src/components/icons/Icon/Icon.vue +59 -0
  222. package/src/components/icons/iconList/IconList.stories.ts +51 -0
  223. package/src/components/icons/iconList/IconList.vue +172 -0
  224. package/src/components/icons/iconList/components/IconListButton.vue +71 -0
  225. package/src/components/index.ts +4 -1
  226. package/src/components/inputs/checkbox/Checkbox.scss +91 -0
  227. package/src/components/inputs/checkbox/Checkbox.stories.ts +100 -0
  228. package/src/components/inputs/checkbox/Checkbox.vue +53 -0
  229. package/src/components/teste/Teste.stories.ts +214 -0
  230. package/src/components/teste/Teste.vue +96 -0
  231. package/src/main.ts +2 -1
  232. package/src/shims-vue.d.ts +5 -0
  233. package/src/style.css +33 -67
  234. package/src/views/tokens/Colors.ts +7 -0
  235. package/src/views/tokens/Sizes.vue +0 -0
  236. package/dist/vite.svg +0 -1
@@ -0,0 +1,172 @@
1
+ <template>
2
+ <div :class="{ dark: isDarkMode }">
3
+ <h1>A - Brands</h1>
4
+
5
+ <h3>AA - Social Media</h3>
6
+ <IconListButton
7
+ :icons="socialMediaIcons"
8
+ :color="color"
9
+ :is-dark-mode="isDarkMode"
10
+ />
11
+
12
+ <h3>AB - Communication</h3>
13
+ <IconListButton
14
+ :icons="communicationIcons"
15
+ :color="color"
16
+ :is-dark-mode="isDarkMode"
17
+ />
18
+
19
+ <h3>AC - Tech</h3>
20
+ <IconListButton
21
+ :icons="techIcons"
22
+ :color="color"
23
+ :is-dark-mode="isDarkMode"
24
+ />
25
+
26
+ <h3>AD - Development</h3>
27
+ <IconListButton
28
+ :icons="developmentIcons"
29
+ :color="color"
30
+ :is-dark-mode="isDarkMode"
31
+ />
32
+
33
+ <h3>AE - Others</h3>
34
+ <IconListButton
35
+ :icons="otherBrandIcons"
36
+ :color="color"
37
+ :is-dark-mode="isDarkMode"
38
+ />
39
+
40
+ <h1>B - Digital</h1>
41
+
42
+ <h3>BA - Menu</h3>
43
+ <IconListButton
44
+ :icons="menuIcons"
45
+ :color="color"
46
+ :is-dark-mode="isDarkMode"
47
+ />
48
+
49
+ <h3>BB - Arrow</h3>
50
+ <IconListButton
51
+ :icons="arrowIcons"
52
+ :color="color"
53
+ :is-dark-mode="isDarkMode"
54
+ />
55
+
56
+ <h3>BC - User</h3>
57
+ <IconListButton
58
+ :icons="userIcons"
59
+ :color="color"
60
+ :is-dark-mode="isDarkMode"
61
+ />
62
+
63
+ <h3>BD - Tool</h3>
64
+ <IconListButton
65
+ :icons="toolsIcons"
66
+ :color="color"
67
+ :is-dark-mode="isDarkMode"
68
+ />
69
+
70
+ <h3>BE - Symbol</h3>
71
+ <IconListButton
72
+ :icons="symbolsIcons"
73
+ :color="color"
74
+ :is-dark-mode="isDarkMode"
75
+ />
76
+
77
+ <h3>BF - Action</h3>
78
+ <IconListButton
79
+ :icons="actionsIcons"
80
+ :color="color"
81
+ :is-dark-mode="isDarkMode"
82
+ />
83
+
84
+ <h3>BG - Others</h3>
85
+ <IconListButton
86
+ :icons="otherDigitalIcons"
87
+ :color="color"
88
+ :is-dark-mode="isDarkMode"
89
+ />
90
+
91
+ <h1>D - Places</h1>
92
+ <IconListButton
93
+ :icons="placeIcons"
94
+ :color="color"
95
+ :is-dark-mode="isDarkMode"
96
+ />
97
+
98
+ <!-- <h1>C - Objects</h1> -->
99
+ <!-- <h1>E - Company</h1> -->
100
+ </div>
101
+ </template>
102
+
103
+ <script setup>
104
+ import { computed } from 'vue'
105
+ import IconListButton from './components/IconListButton.vue'
106
+ import AllIcons from '../../../../public/assets/icons/icons.json'
107
+
108
+ const props = defineProps({
109
+ color: {
110
+ type: String,
111
+ default: '#757abf'
112
+ }
113
+ })
114
+
115
+ const isDarkMode = computed(() => {
116
+ const element = document.getElementsByClassName('docs-story')[0]
117
+ const backgroundColor = window.getComputedStyle(element).backgroundColor
118
+ return backgroundColor === 'rgb(51, 51, 51)'
119
+ })
120
+
121
+ const socialMediaIcons = computed(() =>
122
+ AllIcons.filter((name) => name.startsWith('AA')).sort()
123
+ )
124
+ const communicationIcons = computed(() =>
125
+ AllIcons.filter((name) => name.startsWith('AB')).sort()
126
+ )
127
+ const techIcons = computed(() =>
128
+ AllIcons.filter((name) => name.startsWith('AC')).sort()
129
+ )
130
+ const developmentIcons = computed(() =>
131
+ AllIcons.filter((name) => name.startsWith('AD')).sort()
132
+ )
133
+ const otherBrandIcons = computed(() =>
134
+ AllIcons.filter((name) => name.startsWith('AE')).sort()
135
+ )
136
+ const menuIcons = computed(() =>
137
+ AllIcons.filter((name) => name.startsWith('BA')).sort()
138
+ )
139
+ const arrowIcons = computed(() =>
140
+ AllIcons.filter((name) => name.startsWith('BB')).sort()
141
+ )
142
+ const userIcons = computed(() =>
143
+ AllIcons.filter((name) => name.startsWith('BC')).sort()
144
+ )
145
+ const toolsIcons = computed(() =>
146
+ AllIcons.filter((name) => name.startsWith('BD')).sort()
147
+ )
148
+ const symbolsIcons = computed(() =>
149
+ AllIcons.filter((name) => name.startsWith('BE')).sort()
150
+ )
151
+ const actionsIcons = computed(() =>
152
+ AllIcons.filter((name) => name.startsWith('BF')).sort()
153
+ )
154
+ const otherDigitalIcons = computed(() =>
155
+ AllIcons.filter((name) => name.startsWith('BG')).sort()
156
+ )
157
+ const placeIcons = computed(() =>
158
+ AllIcons.filter((name) => name.startsWith('C')).sort()
159
+ )
160
+ </script>
161
+
162
+ <style lang="scss" scoped>
163
+ .dark h1,
164
+ .dark h3 {
165
+ color: white;
166
+ }
167
+
168
+ h1,
169
+ h3 {
170
+ color: black;
171
+ }
172
+ </style>
@@ -0,0 +1,71 @@
1
+ <template>
2
+ <div style="display: flex; flex-wrap: wrap; gap: 16px">
3
+ <div v-for="(icon, id) in icons" :key="id" style="text-align: center">
4
+ <div
5
+ style="margin-top: 8px; display: flex; align-items: center; gap: 8px"
6
+ >
7
+ <button @click="copyToClipboard(icon)" class="icon-button">
8
+ <Icon :name="icon" size="lg" :color="color" />
9
+ <span :class="{ 'label-white': isDarkMode }">{{ icon }}</span>
10
+ </button>
11
+ </div>
12
+ </div>
13
+ </div>
14
+ </template>
15
+
16
+ <script lang="ts" setup>
17
+ import Icon from '../../Icon/Icon.vue'
18
+
19
+ defineProps({
20
+ isDarkMode: {
21
+ type: Boolean,
22
+ required: true
23
+ },
24
+ icons: {
25
+ type: Array<string>,
26
+ required: true
27
+ },
28
+ color: {
29
+ type: String,
30
+ required: true
31
+ }
32
+ })
33
+
34
+ const copyToClipboard = (text: string) => {
35
+ navigator.clipboard
36
+ .writeText(text)
37
+ .then(() => {
38
+ alert('Ícone copiado!')
39
+ })
40
+ .catch((error) => {
41
+ console.error('Failed to copy text: ', error)
42
+ })
43
+ }
44
+ </script>
45
+
46
+ <style scoped>
47
+ .icon-button {
48
+ width: 100px;
49
+ display: flex;
50
+ cursor: pointer;
51
+ border: none;
52
+ background-color: transparent;
53
+ flex-direction: column;
54
+ align-items: center;
55
+ gap: 12px;
56
+ transition: transform 0.2s ease-in-out;
57
+ }
58
+
59
+ .icon-button:hover {
60
+ transform: scale(1.1);
61
+ }
62
+
63
+ span {
64
+ font-family: 'Quicksand';
65
+ font-weight: 600;
66
+ }
67
+
68
+ .label-white {
69
+ color: white;
70
+ }
71
+ </style>
@@ -1,3 +1,6 @@
1
1
  import HpButton from './button/Button.vue'
2
+ import HpCheckbox from './inputs/checkbox/Checkbox.vue'
3
+ import HpIcon from './icons//Icon/Icon.vue'
4
+ import HpTeste from './teste/Teste.vue'
2
5
 
3
- export { HpButton }
6
+ export { HpButton, HpCheckbox, HpIcon, HpTeste }
@@ -0,0 +1,91 @@
1
+ .checkbox {
2
+ display: flex;
3
+ align-items: center;
4
+ flex-direction: row;
5
+ }
6
+
7
+ .checkbox .check {
8
+ -webkit-user-select: none;
9
+ user-select: none;
10
+ -webkit-tap-highlight-color: transparent;
11
+ cursor: pointer;
12
+ }
13
+ .checkbox .check span {
14
+ display: inline-block;
15
+ vertical-align: middle;
16
+ transform: translate3d(0, 0, 0);
17
+ }
18
+ .checkbox .check span:first-child {
19
+ position: relative;
20
+ width: 24px;
21
+ height: 24px;
22
+ border-radius: 50%;
23
+ transform: scale(1);
24
+ vertical-align: middle;
25
+ border: 1px solid rgb(255 255 255 / 10%);
26
+ transition: all 0.2s ease;
27
+ }
28
+ .checkbox .check span:first-child svg {
29
+ position: absolute;
30
+ z-index: 1;
31
+ top: 8px;
32
+ left: 6px;
33
+ fill: none;
34
+ stroke: var(--check-color, #f9f9f9);
35
+ stroke-width: 2;
36
+ stroke-linecap: round;
37
+ stroke-linejoin: round;
38
+ stroke-dasharray: 16px;
39
+ stroke-dashoffset: 16px;
40
+ transition: all 0.3s ease;
41
+ transition-delay: 0.1s;
42
+ transform: translate3d(0, 0, 0);
43
+ }
44
+ .checkbox .check span:first-child:before {
45
+ content: "";
46
+ width: 100%;
47
+ height: 100%;
48
+ background: var(--background-color, #8f44fd);
49
+ display: block;
50
+ transform: scale(0);
51
+ opacity: 1;
52
+ border-radius: 50%;
53
+ transition-delay: 0.2s;
54
+ }
55
+ .checkbox .check:hover span:first-child {
56
+ border-color: var(--border-color, #8f44fd);
57
+ }
58
+ .checkbox .input:checked + .check span:first-child {
59
+ border-color: var(--border-color, #8f44fd);
60
+ background: var(--background-color, #8f44fd);
61
+ animation: check 0.6s ease;
62
+ }
63
+ .checkbox .input:checked + .check span:first-child svg {
64
+ stroke-dashoffset: 0;
65
+ }
66
+ .checkbox .input:checked + .check span:first-child:before {
67
+ transform: scale(2.2);
68
+ opacity: 0;
69
+ transition: all 0.6s ease;
70
+ }
71
+ .checkbox .input:checked + .check span:last-child {
72
+ color: rgb(255 255 255 / 10%);
73
+ transition: all 0.3s ease;
74
+ }
75
+ .checkbox .input:checked + .check span:last-child:after {
76
+ transform: scaleX(1);
77
+ transition: all 0.3s ease;
78
+ }
79
+
80
+ @keyframes check {
81
+ 50% {
82
+ transform: scale(1.2);
83
+ }
84
+ }
85
+
86
+ .checkbox-label {
87
+ display: inline-block;
88
+ margin-left: 8px; // Ajuste conforme necessário
89
+ color: var(--check-color, #f9f9f9);
90
+ font-size: 14px; // Ajuste conforme necessário
91
+ }
@@ -0,0 +1,100 @@
1
+ import type { Meta, StoryFn } from '@storybook/vue3'
2
+ import HpCheckbox from './Checkbox.vue'
3
+
4
+ const meta: Meta = {
5
+ title: 'Componentes/Checkbox',
6
+ component: HpCheckbox,
7
+ argTypes: {
8
+ checked: {
9
+ control: {
10
+ type: 'boolean'
11
+ },
12
+ table: {
13
+ category: 'Propriedades',
14
+ type: {
15
+ summary: 'boolean'
16
+ },
17
+ defaultValue: { summary: 'false' }
18
+ },
19
+ description: 'Define se o checkbox está marcado'
20
+ },
21
+ label: {
22
+ control: {
23
+ type: 'text'
24
+ },
25
+ table: {
26
+ category: 'Propriedades',
27
+ type: {
28
+ summary: 'string'
29
+ },
30
+ defaultValue: { summary: '' }
31
+ },
32
+ description: 'Texto da label ao lado do checkbox'
33
+ },
34
+ backgroundColor: {
35
+ control: {
36
+ type: 'color'
37
+ },
38
+ table: {
39
+ category: 'Propriedades',
40
+ type: {
41
+ summary: 'string'
42
+ },
43
+ defaultValue: { summary: '#8f44fd' }
44
+ },
45
+ description: 'Cor de fundo do checkbox quando marcado'
46
+ },
47
+ checkColor: {
48
+ control: {
49
+ type: 'color'
50
+ },
51
+ table: {
52
+ category: 'Propriedades',
53
+ type: {
54
+ summary: 'string'
55
+ },
56
+ defaultValue: { summary: '#f9f9f9' }
57
+ },
58
+ description: 'Cor do check no checkbox'
59
+ },
60
+ borderColor: {
61
+ control: {
62
+ type: 'color'
63
+ },
64
+ table: {
65
+ category: 'Propriedades',
66
+ type: {
67
+ summary: 'string'
68
+ },
69
+ defaultValue: { summary: '#8f44fd' }
70
+ },
71
+ description: 'Cor da borda do checkbox'
72
+ }
73
+ }
74
+ }
75
+
76
+ export default meta
77
+
78
+ const Template: StoryFn<{
79
+ checked: boolean
80
+ label: string
81
+ backgroundColor: string
82
+ checkColor: string
83
+ borderColor: string
84
+ }> = (args) => ({
85
+ components: { HpCheckbox },
86
+ setup() {
87
+ return { args }
88
+ },
89
+ template:
90
+ '<HpCheckbox :checked="args.checked" :label="args.label" :backgroundColor="args.backgroundColor" :checkColor="args.checkColor" :borderColor="args.borderColor" />'
91
+ })
92
+
93
+ export const Example = Template.bind({})
94
+ Example.args = {
95
+ checked: false,
96
+ label: 'Label do Checkbox',
97
+ backgroundColor: '#8f44fd',
98
+ checkColor: '#f9f9f9',
99
+ borderColor: '#8f44fd'
100
+ }
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <div
3
+ class="checkbox"
4
+ :style="{
5
+ '--background-color': backgroundColor || '#8f44fd',
6
+ '--border-color': borderColor || '#8f44fd',
7
+ '--check-color': checkColor || '#f9f9f9'
8
+ }"
9
+ >
10
+ <input
11
+ class="input"
12
+ id="check"
13
+ :checked="checked"
14
+ type="checkbox"
15
+ style="display: none"
16
+ />
17
+ <label class="check" for="check">
18
+ <span>
19
+ <svg width="12px" height="9px" viewbox="0 0 12 9">
20
+ <polyline points="1 5 4 8 11 1"></polyline>
21
+ </svg>
22
+ </span>
23
+ </label>
24
+ <span class="checkbox-label">{{ label }}</span>
25
+ </div>
26
+ </template>
27
+
28
+ <script setup lang="ts">
29
+ defineProps({
30
+ checked: {
31
+ type: Boolean,
32
+ required: false
33
+ },
34
+ label: {
35
+ type: String,
36
+ required: false
37
+ },
38
+ backgroundColor: {
39
+ type: String,
40
+ required: false
41
+ },
42
+ checkColor: {
43
+ type: String,
44
+ required: false
45
+ },
46
+ borderColor: {
47
+ type: String,
48
+ required: false
49
+ }
50
+ })
51
+ </script>
52
+
53
+ <style lang="scss" scoped src="./Checkbox.scss" />
@@ -0,0 +1,214 @@
1
+ import type { Meta, StoryFn } from '@storybook/vue3'
2
+ import Teste from './Teste.vue'
3
+
4
+ const meta: Meta = {
5
+ title: 'Example/Teste',
6
+ component: Teste,
7
+ argTypes: {
8
+ textProp: {
9
+ control: 'text',
10
+ description: 'Texto exibido no componente',
11
+ table: {
12
+ category: 'Propriedades',
13
+ type: { summary: 'string' },
14
+ defaultValue: { summary: '' }
15
+ }
16
+ },
17
+ booleanProp: {
18
+ control: 'boolean',
19
+ description: 'Valor booleano para o componente',
20
+ table: {
21
+ category: 'Propriedades',
22
+ type: { summary: 'boolean' },
23
+ defaultValue: { summary: 'false' }
24
+ }
25
+ },
26
+ numberProp: {
27
+ control: 'number',
28
+ description: 'Valor numérico para o componente',
29
+ table: {
30
+ category: 'Propriedades',
31
+ type: { summary: 'number' },
32
+ defaultValue: { summary: '0' }
33
+ }
34
+ },
35
+ rangeProp: {
36
+ control: { type: 'range', min: 0, max: 100, step: 1 },
37
+ description: 'Valor dentro do intervalo definido',
38
+ table: {
39
+ category: 'Propriedades',
40
+ type: { summary: 'number' },
41
+ defaultValue: { summary: '0' }
42
+ }
43
+ },
44
+ radioProp: {
45
+ control: 'radio',
46
+ options: ['Option 1', 'Option 2', 'Option 3'],
47
+ description: 'Opção selecionada',
48
+ table: {
49
+ category: 'Propriedades',
50
+ type: { summary: 'string' },
51
+ defaultValue: { summary: 'Option 1' }
52
+ }
53
+ },
54
+ inlineRadioProp: {
55
+ control: 'inline-radio',
56
+ options: ['Option 1', 'Option 2', 'Option 3'],
57
+ description: 'Opção selecionada em linha',
58
+ table: {
59
+ category: 'Propriedades',
60
+ type: { summary: 'string' },
61
+ defaultValue: { summary: 'Option 1' }
62
+ }
63
+ },
64
+ checkProp: {
65
+ control: 'check',
66
+ options: ['Option 1', 'Option 2', 'Option 3'],
67
+ description: 'Opções selecionadas',
68
+ table: {
69
+ category: 'Propriedades',
70
+ type: { summary: 'string[]' },
71
+ defaultValue: { summary: '[]' }
72
+ }
73
+ },
74
+ inlineCheckProp: {
75
+ control: 'inline-check',
76
+ options: ['Option 1', 'Option 2', 'Option 3'],
77
+ description: 'Opções selecionadas em linha',
78
+ table: {
79
+ category: 'Propriedades',
80
+ type: { summary: 'string[]' },
81
+ defaultValue: { summary: '[]' }
82
+ }
83
+ },
84
+ selectProp: {
85
+ control: 'select',
86
+ options: ['Option 1', 'Option 2', 'Option 3'],
87
+ description: 'Opção selecionada',
88
+ table: {
89
+ category: 'Propriedades',
90
+ type: { summary: 'string' },
91
+ defaultValue: { summary: 'Option 1' }
92
+ }
93
+ },
94
+ multiSelectProp: {
95
+ control: 'multi-select',
96
+ options: ['Option 1', 'Option 2', 'Option 3'],
97
+ description: 'Opções selecionadas',
98
+ table: {
99
+ category: 'Propriedades',
100
+ type: { summary: 'string[]' },
101
+ defaultValue: { summary: '[]' }
102
+ }
103
+ },
104
+ objectProp: {
105
+ control: 'object',
106
+ description: 'Objeto para o componente',
107
+ table: {
108
+ category: 'Propriedades',
109
+ type: { summary: 'object' },
110
+ defaultValue: { summary: '{}' }
111
+ }
112
+ },
113
+ arrayProp: {
114
+ control: 'object',
115
+ description: 'Array para o componente',
116
+ table: {
117
+ category: 'Propriedades',
118
+ type: { summary: 'array' },
119
+ defaultValue: { summary: '[]' }
120
+ }
121
+ },
122
+ colorProp: {
123
+ control: 'color',
124
+ description: 'Cor em formato hexadecimal, rgb ou nome da cor',
125
+ table: {
126
+ category: 'Propriedades',
127
+ type: { summary: 'string' },
128
+ defaultValue: { summary: '#000000' }
129
+ }
130
+ },
131
+ dateProp: {
132
+ control: 'date',
133
+ description: 'Data no formato ISO',
134
+ table: {
135
+ category: 'Propriedades',
136
+ type: { summary: 'string' },
137
+ defaultValue: { summary: new Date().toISOString().substr(0, 10) }
138
+ }
139
+ },
140
+ fileProp: {
141
+ control: 'file',
142
+ description: 'Arquivo selecionado',
143
+ table: {
144
+ category: 'Propriedades',
145
+ type: { summary: 'File' },
146
+ defaultValue: { summary: 'null' }
147
+ }
148
+ }
149
+ }
150
+ }
151
+
152
+ export default meta
153
+
154
+ const Template: StoryFn<{
155
+ textProp: string
156
+ booleanProp: boolean
157
+ numberProp: number
158
+ rangeProp: number
159
+ radioProp: string
160
+ inlineRadioProp: string
161
+ checkProp: string[]
162
+ inlineCheckProp: string[]
163
+ selectProp: string
164
+ multiSelectProp: string[]
165
+ objectProp: Record<string, any>
166
+ arrayProp: any[]
167
+ colorProp: string
168
+ dateProp: string
169
+ fileProp: File | null
170
+ }> = (args) => ({
171
+ components: { Teste },
172
+ setup() {
173
+ return { args }
174
+ },
175
+ template: '<Teste v-bind="args" />'
176
+ })
177
+
178
+ export const Primary = Template.bind({})
179
+ Primary.args = {
180
+ textProp: 'Hello Storybook',
181
+ booleanProp: true,
182
+ numberProp: 42,
183
+ rangeProp: 50,
184
+ radioProp: 'Option 1',
185
+ inlineRadioProp: 'Option 1',
186
+ checkProp: ['Option 1', 'Option 3'],
187
+ inlineCheckProp: ['Option 1', 'Option 3'],
188
+ selectProp: 'Option 2',
189
+ multiSelectProp: ['Option 1', 'Option 2'],
190
+ objectProp: { key1: 'value1', key2: 'value2' },
191
+ arrayProp: ['Item 1', 'Item 2'],
192
+ colorProp: '#ff00ff',
193
+ dateProp: new Date().toISOString().substr(0, 10),
194
+ fileProp: null
195
+ }
196
+
197
+ export const Secondary = Template.bind({})
198
+ Secondary.args = {
199
+ textProp: 'Secondary Story',
200
+ booleanProp: false,
201
+ numberProp: 24,
202
+ rangeProp: 25,
203
+ radioProp: 'Option 2',
204
+ inlineRadioProp: 'Option 2',
205
+ checkProp: ['Option 2'],
206
+ inlineCheckProp: ['Option 2'],
207
+ selectProp: 'Option 1',
208
+ multiSelectProp: ['Option 2', 'Option 3'],
209
+ objectProp: { keyA: 'valueA', keyB: 'valueB' },
210
+ arrayProp: ['Item A', 'Item B'],
211
+ colorProp: '#00ff00',
212
+ dateProp: new Date().toISOString().substr(0, 10),
213
+ fileProp: null
214
+ }