revotech-ui-kit 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (255) hide show
  1. package/dist/src/components/atoms/alert/alert.atom.d.ts +7 -0
  2. package/dist/src/components/atoms/card/card.atom.d.ts +10 -0
  3. package/dist/src/components/atoms/checkbox/checkbox.atom.d.ts +5 -0
  4. package/dist/src/components/atoms/combo-box/combo-box.atom.d.ts +5 -0
  5. package/dist/src/components/atoms/combo-box/combo-box.stories.d.ts +5 -6
  6. package/dist/src/components/atoms/command/command.stories.d.ts +11 -0
  7. package/dist/src/components/atoms/dialog/dialog-close.d.ts +5 -0
  8. package/dist/src/components/atoms/dialog/dialog.atom.d.ts +17 -1
  9. package/dist/src/components/atoms/dropdownMenu/dropdown-menu.atom.d.ts +19 -3
  10. package/dist/src/components/atoms/dropdownMenu/dropdownMenu.stories.d.ts +1 -0
  11. package/dist/src/components/atoms/index.d.ts +11 -5
  12. package/dist/src/components/atoms/label/label.atom.d.ts +5 -0
  13. package/dist/src/components/atoms/popover/popover.atom.d.ts +11 -1
  14. package/dist/src/components/atoms/textarea/textarea.atom.d.ts +16 -0
  15. package/dist/src/components/atoms/textarea/textarea.stories.d.ts +7 -0
  16. package/dist/src/components/atoms/textarea/textarea.styles.d.ts +1 -0
  17. package/dist/src/components/atoms/textarea/textarea.type.d.ts +11 -0
  18. package/dist/src/components/atoms/toggle/toggle.stories.d.ts +5 -6
  19. package/dist/src/components/molecules/breadCrumb/Breadcrumb-link.d.ts +7 -0
  20. package/dist/src/components/molecules/breadCrumb/breadCrumb.stories.d.ts +16 -0
  21. package/dist/src/components/molecules/breadCrumb/breadcrumb-ellipsis.d.ts +6 -0
  22. package/dist/src/components/molecules/breadCrumb/breadcrumb-item.d.ts +6 -0
  23. package/dist/src/components/molecules/breadCrumb/breadcrumb-list.d.ts +6 -0
  24. package/dist/src/components/molecules/breadCrumb/breadcrumb-separator.d.ts +6 -0
  25. package/dist/src/components/molecules/breadCrumb/breadcrumb-text.d.ts +6 -0
  26. package/dist/src/components/molecules/breadCrumb/breadcrumb.molecules.d.ts +6 -0
  27. package/dist/src/components/molecules/breadCrumb/breadcrumb.styles.d.ts +6 -0
  28. package/dist/src/components/molecules/index.d.ts +7 -1
  29. package/dist/src/components/molecules/toggle-group/defs.d.ts +37 -0
  30. package/dist/src/components/molecules/toggle-group/toggle-group-item.d.ts +17 -0
  31. package/dist/src/components/molecules/toggle-group/toggle-group.molecules.d.ts +19 -0
  32. package/dist/src/components/molecules/toggle-group/toggle-group.stories.d.ts +5 -0
  33. package/dist/src/components/molecules/toggle-group/toggle-group.style.d.ts +4 -0
  34. package/dist/src/index.d.ts +2 -4
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +1 -1
  37. package/dist/revotech-ui-kit.cjs +0 -2293
  38. package/dist/revotech-ui-kit.js +0 -5608
  39. package/dist/src/assets/icons/arrows.icon.js +0 -20
  40. package/dist/src/assets/icons/arrows.icon.js.map +0 -1
  41. package/dist/src/assets/icons/index.js +0 -4
  42. package/dist/src/assets/icons/index.js.map +0 -1
  43. package/dist/src/assets/icons/search.icon.js +0 -19
  44. package/dist/src/assets/icons/search.icon.js.map +0 -1
  45. package/dist/src/assets/icons/tick.icon.js +0 -20
  46. package/dist/src/assets/icons/tick.icon.js.map +0 -1
  47. package/dist/src/components/atoms/alert/alert-description.js +0 -18
  48. package/dist/src/components/atoms/alert/alert-description.js.map +0 -1
  49. package/dist/src/components/atoms/alert/alert-title.js +0 -20
  50. package/dist/src/components/atoms/alert/alert-title.js.map +0 -1
  51. package/dist/src/components/atoms/alert/alert.atom.js +0 -55
  52. package/dist/src/components/atoms/alert/alert.atom.js.map +0 -1
  53. package/dist/src/components/atoms/alert/alert.stories.js +0 -62
  54. package/dist/src/components/atoms/alert/alert.stories.js.map +0 -1
  55. package/dist/src/components/atoms/alert/alert.styles.js +0 -21
  56. package/dist/src/components/atoms/alert/alert.styles.js.map +0 -1
  57. package/dist/src/components/atoms/alert/alert.types.js +0 -2
  58. package/dist/src/components/atoms/alert/alert.types.js.map +0 -1
  59. package/dist/src/components/atoms/badge/badge.atom.js +0 -43
  60. package/dist/src/components/atoms/badge/badge.atom.js.map +0 -1
  61. package/dist/src/components/atoms/badge/badge.stories.js +0 -110
  62. package/dist/src/components/atoms/badge/badge.stories.js.map +0 -1
  63. package/dist/src/components/atoms/badge/badge.style.js +0 -17
  64. package/dist/src/components/atoms/badge/badge.style.js.map +0 -1
  65. package/dist/src/components/atoms/badge/badge.type.js +0 -2
  66. package/dist/src/components/atoms/badge/badge.type.js.map +0 -1
  67. package/dist/src/components/atoms/button/button.atom.js +0 -67
  68. package/dist/src/components/atoms/button/button.atom.js.map +0 -1
  69. package/dist/src/components/atoms/button/button.stories.js +0 -204
  70. package/dist/src/components/atoms/button/button.stories.js.map +0 -1
  71. package/dist/src/components/atoms/button/button.style.js +0 -24
  72. package/dist/src/components/atoms/button/button.style.js.map +0 -1
  73. package/dist/src/components/atoms/button/button.type.js +0 -2
  74. package/dist/src/components/atoms/button/button.type.js.map +0 -1
  75. package/dist/src/components/atoms/card/card-content.js +0 -17
  76. package/dist/src/components/atoms/card/card-content.js.map +0 -1
  77. package/dist/src/components/atoms/card/card-description.js +0 -17
  78. package/dist/src/components/atoms/card/card-description.js.map +0 -1
  79. package/dist/src/components/atoms/card/card-footer.js +0 -17
  80. package/dist/src/components/atoms/card/card-footer.js.map +0 -1
  81. package/dist/src/components/atoms/card/card-header.js +0 -17
  82. package/dist/src/components/atoms/card/card-header.js.map +0 -1
  83. package/dist/src/components/atoms/card/card-title.js +0 -17
  84. package/dist/src/components/atoms/card/card-title.js.map +0 -1
  85. package/dist/src/components/atoms/card/card.atom.js +0 -25
  86. package/dist/src/components/atoms/card/card.atom.js.map +0 -1
  87. package/dist/src/components/atoms/card/card.stories.js +0 -136
  88. package/dist/src/components/atoms/card/card.stories.js.map +0 -1
  89. package/dist/src/components/atoms/checkbox/checkbox.atom.js +0 -87
  90. package/dist/src/components/atoms/checkbox/checkbox.atom.js.map +0 -1
  91. package/dist/src/components/atoms/checkbox/checkbox.stories.js +0 -244
  92. package/dist/src/components/atoms/checkbox/checkbox.stories.js.map +0 -1
  93. package/dist/src/components/atoms/checkbox/checkbox.style.js +0 -3
  94. package/dist/src/components/atoms/checkbox/checkbox.style.js.map +0 -1
  95. package/dist/src/components/atoms/checkbox/checkbox.type.js +0 -2
  96. package/dist/src/components/atoms/checkbox/checkbox.type.js.map +0 -1
  97. package/dist/src/components/atoms/combo-box/combo-box-input.js +0 -47
  98. package/dist/src/components/atoms/combo-box/combo-box-input.js.map +0 -1
  99. package/dist/src/components/atoms/combo-box/combo-box-item.js +0 -85
  100. package/dist/src/components/atoms/combo-box/combo-box-item.js.map +0 -1
  101. package/dist/src/components/atoms/combo-box/combo-box-list.js +0 -67
  102. package/dist/src/components/atoms/combo-box/combo-box-list.js.map +0 -1
  103. package/dist/src/components/atoms/combo-box/combo-box.atom.js +0 -199
  104. package/dist/src/components/atoms/combo-box/combo-box.atom.js.map +0 -1
  105. package/dist/src/components/atoms/combo-box/combo-box.stories.js +0 -86
  106. package/dist/src/components/atoms/combo-box/combo-box.stories.js.map +0 -1
  107. package/dist/src/components/atoms/command-empty/command-empty.atom.js +0 -53
  108. package/dist/src/components/atoms/command-empty/command-empty.atom.js.map +0 -1
  109. package/dist/src/components/atoms/command-group/command-group.atom.js +0 -70
  110. package/dist/src/components/atoms/command-group/command-group.atom.js.map +0 -1
  111. package/dist/src/components/atoms/command-item/command-item.atom.js +0 -78
  112. package/dist/src/components/atoms/command-item/command-item.atom.js.map +0 -1
  113. package/dist/src/components/atoms/command-list/command-list.atom.js +0 -35
  114. package/dist/src/components/atoms/command-list/command-list.atom.js.map +0 -1
  115. package/dist/src/components/atoms/command-separator/command-separator.atom.js +0 -51
  116. package/dist/src/components/atoms/command-separator/command-separator.atom.js.map +0 -1
  117. package/dist/src/components/atoms/dialog/dialog-close.js +0 -46
  118. package/dist/src/components/atoms/dialog/dialog-close.js.map +0 -1
  119. package/dist/src/components/atoms/dialog/dialog-content.js +0 -72
  120. package/dist/src/components/atoms/dialog/dialog-content.js.map +0 -1
  121. package/dist/src/components/atoms/dialog/dialog-footer.js +0 -22
  122. package/dist/src/components/atoms/dialog/dialog-footer.js.map +0 -1
  123. package/dist/src/components/atoms/dialog/dialog-header.js +0 -40
  124. package/dist/src/components/atoms/dialog/dialog-header.js.map +0 -1
  125. package/dist/src/components/atoms/dialog/dialog-overly.js +0 -20
  126. package/dist/src/components/atoms/dialog/dialog-overly.js.map +0 -1
  127. package/dist/src/components/atoms/dialog/dialog-trigger.js +0 -53
  128. package/dist/src/components/atoms/dialog/dialog-trigger.js.map +0 -1
  129. package/dist/src/components/atoms/dialog/dialog.atom.js +0 -78
  130. package/dist/src/components/atoms/dialog/dialog.atom.js.map +0 -1
  131. package/dist/src/components/atoms/dialog/dialog.stories.js +0 -88
  132. package/dist/src/components/atoms/dialog/dialog.stories.js.map +0 -1
  133. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-checkbox-Item.js +0 -115
  134. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-checkbox-Item.js.map +0 -1
  135. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-content.js +0 -80
  136. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-content.js.map +0 -1
  137. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-group.js +0 -70
  138. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-group.js.map +0 -1
  139. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-item.js +0 -78
  140. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-item.js.map +0 -1
  141. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-radio-item.js +0 -116
  142. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-radio-item.js.map +0 -1
  143. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-seperator.js +0 -51
  144. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-seperator.js.map +0 -1
  145. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-shortcut.js +0 -20
  146. package/dist/src/components/atoms/dropdownMenu/dropdown-menu-shortcut.js.map +0 -1
  147. package/dist/src/components/atoms/dropdownMenu/dropdown-menu.atom.js +0 -77
  148. package/dist/src/components/atoms/dropdownMenu/dropdown-menu.atom.js.map +0 -1
  149. package/dist/src/components/atoms/dropdownMenu/dropdownMenu.stories.js +0 -211
  150. package/dist/src/components/atoms/dropdownMenu/dropdownMenu.stories.js.map +0 -1
  151. package/dist/src/components/atoms/dropdownMenu/dropdownMenu.style.js +0 -4
  152. package/dist/src/components/atoms/dropdownMenu/dropdownMenu.style.js.map +0 -1
  153. package/dist/src/components/atoms/index.js +0 -14
  154. package/dist/src/components/atoms/index.js.map +0 -1
  155. package/dist/src/components/atoms/input/input.atom.js +0 -93
  156. package/dist/src/components/atoms/input/input.atom.js.map +0 -1
  157. package/dist/src/components/atoms/input/input.stories.js +0 -382
  158. package/dist/src/components/atoms/input/input.stories.js.map +0 -1
  159. package/dist/src/components/atoms/input/input.styles.js +0 -2
  160. package/dist/src/components/atoms/input/input.styles.js.map +0 -1
  161. package/dist/src/components/atoms/input/input.type.js +0 -2
  162. package/dist/src/components/atoms/input/input.type.js.map +0 -1
  163. package/dist/src/components/atoms/label/label.atom.js +0 -67
  164. package/dist/src/components/atoms/label/label.atom.js.map +0 -1
  165. package/dist/src/components/atoms/label/label.stories.js +0 -85
  166. package/dist/src/components/atoms/label/label.stories.js.map +0 -1
  167. package/dist/src/components/atoms/label/label.style.js +0 -3
  168. package/dist/src/components/atoms/label/label.style.js.map +0 -1
  169. package/dist/src/components/atoms/popover/popover-content.js +0 -62
  170. package/dist/src/components/atoms/popover/popover-content.js.map +0 -1
  171. package/dist/src/components/atoms/popover/popover-trigger.js +0 -50
  172. package/dist/src/components/atoms/popover/popover-trigger.js.map +0 -1
  173. package/dist/src/components/atoms/popover/popover.atom.js +0 -40
  174. package/dist/src/components/atoms/popover/popover.atom.js.map +0 -1
  175. package/dist/src/components/atoms/popover/popover.stories.js +0 -69
  176. package/dist/src/components/atoms/popover/popover.stories.js.map +0 -1
  177. package/dist/src/components/atoms/popover/popover.style.js +0 -21
  178. package/dist/src/components/atoms/popover/popover.style.js.map +0 -1
  179. package/dist/src/components/atoms/popover/popover.types.js +0 -4
  180. package/dist/src/components/atoms/popover/popover.types.js.map +0 -1
  181. package/dist/src/components/atoms/toggle/defs.js +0 -30
  182. package/dist/src/components/atoms/toggle/defs.js.map +0 -1
  183. package/dist/src/components/atoms/toggle/toggle.atom.js +0 -72
  184. package/dist/src/components/atoms/toggle/toggle.atom.js.map +0 -1
  185. package/dist/src/components/atoms/toggle/toggle.stories.js +0 -189
  186. package/dist/src/components/atoms/toggle/toggle.stories.js.map +0 -1
  187. package/dist/src/components/atoms/toggle/toggle.style.js +0 -19
  188. package/dist/src/components/atoms/toggle/toggle.style.js.map +0 -1
  189. package/dist/src/components/command/command.d.ts +0 -56
  190. package/dist/src/components/command/command.js +0 -402
  191. package/dist/src/components/command/command.js.map +0 -1
  192. package/dist/src/components/command/command.stories.d.ts +0 -5
  193. package/dist/src/components/command/command.stories.js +0 -153
  194. package/dist/src/components/command/command.stories.js.map +0 -1
  195. package/dist/src/components/index.js +0 -3
  196. package/dist/src/components/index.js.map +0 -1
  197. package/dist/src/components/molecules/command/command.molecules.js +0 -27
  198. package/dist/src/components/molecules/command/command.molecules.js.map +0 -1
  199. package/dist/src/components/molecules/command-input/command-input.atom.js +0 -125
  200. package/dist/src/components/molecules/command-input/command-input.atom.js.map +0 -1
  201. package/dist/src/components/molecules/dropdownMenu/dropdownMenu.molecules.js +0 -2
  202. package/dist/src/components/molecules/dropdownMenu/dropdownMenu.molecules.js.map +0 -1
  203. package/dist/src/components/molecules/index.js +0 -2
  204. package/dist/src/components/molecules/index.js.map +0 -1
  205. package/dist/src/helpers/base-element.js +0 -62
  206. package/dist/src/helpers/base-element.js.map +0 -1
  207. package/dist/src/helpers/index.js +0 -4
  208. package/dist/src/helpers/index.js.map +0 -1
  209. package/dist/src/helpers/mouse-conroller.helper.js +0 -33
  210. package/dist/src/helpers/mouse-conroller.helper.js.map +0 -1
  211. package/dist/src/helpers/style.helpers.js +0 -6
  212. package/dist/src/helpers/style.helpers.js.map +0 -1
  213. package/dist/src/index.js +0 -5
  214. package/dist/src/index.js.map +0 -1
  215. package/dist/src/interfaces/actionable.interface.js +0 -2
  216. package/dist/src/interfaces/actionable.interface.js.map +0 -1
  217. package/dist/src/interfaces/atomic.interface.js +0 -2
  218. package/dist/src/interfaces/atomic.interface.js.map +0 -1
  219. package/dist/src/interfaces/changeable.interface.js +0 -2
  220. package/dist/src/interfaces/changeable.interface.js.map +0 -1
  221. package/dist/src/interfaces/child-support-atomic.interface.js +0 -2
  222. package/dist/src/interfaces/child-support-atomic.interface.js.map +0 -1
  223. package/dist/src/interfaces/index.js +0 -7
  224. package/dist/src/interfaces/index.js.map +0 -1
  225. package/dist/src/interfaces/intractable.interface.js +0 -2
  226. package/dist/src/interfaces/intractable.interface.js.map +0 -1
  227. package/dist/src/interfaces/variant.interface.js +0 -2
  228. package/dist/src/interfaces/variant.interface.js.map +0 -1
  229. package/dist/src/lib/index.js +0 -2
  230. package/dist/src/lib/index.js.map +0 -1
  231. package/dist/src/lib/next/next.lib.js +0 -2
  232. package/dist/src/lib/next/next.lib.js.map +0 -1
  233. package/dist/src/lib/react/react.lib.js +0 -16
  234. package/dist/src/lib/react/react.lib.js.map +0 -1
  235. package/dist/src/lib/tw-styles.js +0 -1956
  236. package/dist/src/lib/tw-styles.js.map +0 -1
  237. package/dist/src/styles/index.js +0 -2
  238. package/dist/src/styles/index.js.map +0 -1
  239. package/dist/src/styles/tw.styles.js +0 -2218
  240. package/dist/src/styles/tw.styles.js.map +0 -1
  241. package/dist/src/wc-ui-app.js +0 -88
  242. package/dist/src/wc-ui-app.js.map +0 -1
  243. package/dist/test/wc-ui-app.test.d.ts +0 -0
  244. package/dist/test/wc-ui-app.test.js +0 -18
  245. package/dist/test/wc-ui-app.test.js.map +0 -1
  246. package/dist/vite.config.d.ts +0 -2
  247. package/dist/vite.config.js +0 -29
  248. package/dist/vite.config.js.map +0 -1
  249. /package/dist/src/components/atoms/{command-empty → command}/command-empty.atom.d.ts +0 -0
  250. /package/dist/src/components/atoms/{command-group → command}/command-group.atom.d.ts +0 -0
  251. /package/dist/src/components/{molecules/command-input → atoms/command}/command-input.atom.d.ts +0 -0
  252. /package/dist/src/components/atoms/{command-item → command}/command-item.atom.d.ts +0 -0
  253. /package/dist/src/components/atoms/{command-list → command}/command-list.atom.d.ts +0 -0
  254. /package/dist/src/components/atoms/{command-separator → command}/command-separator.atom.d.ts +0 -0
  255. /package/dist/src/components/{molecules/command/command.molecules.d.ts → atoms/command/command.atom.d.ts} +0 -0
@@ -1,204 +0,0 @@
1
- import { html } from 'lit';
2
- import './button.atom';
3
- import { expect, within, fn, waitFor, userEvent } from '@storybook/test';
4
- import { Button } from './button.atom';
5
- const meta = {
6
- component: 'components/button',
7
- tags: ['autodocs'],
8
- argTypes: {
9
- variant: {
10
- control: {
11
- type: 'select',
12
- },
13
- options: [
14
- 'default',
15
- 'destructive',
16
- 'outline',
17
- 'secondary',
18
- 'ghost',
19
- 'link',
20
- ],
21
- defaultValue: 'default',
22
- description: 'Choose the visual style of the button.',
23
- table: {
24
- defaultValue: { summary: 'default' },
25
- },
26
- },
27
- size: {
28
- control: {
29
- type: 'select',
30
- },
31
- options: ['default', 'sm', 'lg', 'icon'],
32
- description: 'Choose the visual style of the button.',
33
- defaultValue: 'default',
34
- table: {
35
- defaultValue: { summary: 'default' },
36
- },
37
- },
38
- disabled: {
39
- control: 'boolean',
40
- description: 'Disable the button to prevent interactions.',
41
- table: {
42
- defaultValue: { summary: 'false' },
43
- },
44
- },
45
- label: {
46
- control: 'text',
47
- description: 'The text displayed on the button. Can also be a function returning the label dynamically.',
48
- type: 'string',
49
- table: {
50
- defaultValue: { summary: 'Button' },
51
- },
52
- },
53
- icon: {
54
- control: 'boolean',
55
- description: 'Add an icon before the button text.',
56
- table: {
57
- defaultValue: { summary: 'false' },
58
- },
59
- },
60
- animation: {
61
- control: 'boolean',
62
- description: 'Enable/disable icon animations.',
63
- table: {
64
- defaultValue: { summary: 'false' },
65
- },
66
- if: { arg: 'icon', neq: false },
67
- },
68
- click: {
69
- action: '',
70
- description: 'Triggered when the button is clicked. Receives the button instance as an argument.',
71
- table: {
72
- type: { summary: '(() => void)' },
73
- defaultValue: { summary: '-' },
74
- },
75
- },
76
- },
77
- };
78
- const testButtonBehavior = async (args, canvasElement, mockHandler) => {
79
- const canvas = within(canvasElement);
80
- const button = await waitFor(() => canvas.getByTestId('btn-id'));
81
- if (button.shadowRoot) {
82
- const innerButton = button.shadowRoot.querySelector('[data-testchild="children-id"]');
83
- // 1. Test: Button should have correct type attribute
84
- expect(innerButton).toHaveAttribute('type', 'button');
85
- // 2. Test: Button should handle click events when not disabled
86
- if (!args.disabled && innerButton) {
87
- await userEvent.click(innerButton);
88
- if (mockHandler) {
89
- expect(mockHandler).toHaveBeenCalled();
90
- }
91
- }
92
- // 3. Test: Button should not handle click events when disabled
93
- if (args.disabled) {
94
- expect(mockHandler).not.toHaveBeenCalled();
95
- }
96
- // 4. Test: Button should be disabled when the `disabled` prop is true
97
- if (args.disabled) {
98
- expect(innerButton).toBeDisabled();
99
- }
100
- else {
101
- expect(innerButton).not.toBeDisabled();
102
- }
103
- // 5. Test: Button should apply the correct variant classes
104
- const expectedClasses = Button.buttonVariants({
105
- variant: args.variant,
106
- size: args.size,
107
- className: '',
108
- });
109
- expect(innerButton).toHaveClass(expectedClasses);
110
- // 6. Test: Button should apply the correct size classes
111
- const expectedSizeClasses = Button.buttonVariants({
112
- variant: args.variant,
113
- size: args.size,
114
- className: '',
115
- });
116
- expect(innerButton).toHaveClass(expectedSizeClasses);
117
- }
118
- };
119
- export default meta;
120
- const mockOnClickHandler = fn(event => {
121
- console.log('Mock onClick handler called');
122
- });
123
- export const Buttons = {
124
- args: {
125
- label: 'Button',
126
- variant: 'default',
127
- size: 'default',
128
- disabled: false,
129
- icon: false,
130
- animation: false,
131
- },
132
- render: ({ label, variant, size, disabled, icon, animation }) => {
133
- console.log('disabled', disabled);
134
- if (disabled == true)
135
- return html `
136
- <rtg-button
137
- method="post"
138
- .click=${mockOnClickHandler}
139
- data-testid="btn-id"
140
- data-testchild="children-id"
141
- variant=${variant}
142
- size=${size}
143
- disabled=${true}
144
- >
145
- ${icon
146
- ? html `<iconify-icon
147
- class=${animation
148
- ? `${label ? 'mr-2 ' : ' '}animate-spin`
149
- : `${label ? 'mr-2 ' : ''}`}
150
- icon="mdi:home"
151
- ></iconify-icon>`
152
- : ''}
153
- ${label}</rtg-button
154
- >
155
- `;
156
- else if (disabled == false)
157
- return html `
158
- <rtg-button
159
- method="post"
160
- .click=${mockOnClickHandler}
161
- data-testid="btn-id"
162
- data-testchild="children-id"
163
- variant=${variant}
164
- size=${size}
165
- ?disabled=${false}
166
- >
167
- ${icon
168
- ? html `<iconify-icon
169
- class=${animation
170
- ? `${label ? 'mr-2 ' : ' '}animate-spin`
171
- : `${label ? 'mr-2 ' : ''}`}
172
- icon="mdi:home"
173
- ></iconify-icon>`
174
- : ''}
175
- ${label}</rtg-button
176
- >
177
- `;
178
- else
179
- return html `
180
- <rtg-button
181
- method="post"
182
- .click=${mockOnClickHandler}
183
- data-testid="btn-id"
184
- data-testchild="children-id"
185
- variant=${variant}
186
- size=${size}
187
- >
188
- ${icon
189
- ? html `<iconify-icon
190
- class=${animation
191
- ? `${label ? 'mr-2 ' : ' '}animate-spin`
192
- : `${label ? 'mr-2 ' : ''}`}
193
- icon="mdi:home"
194
- ></iconify-icon>`
195
- : ''}
196
- ${label}</rtg-button
197
- >
198
- `;
199
- },
200
- play: async ({ args, canvasElement }) => {
201
- await testButtonBehavior(args, canvasElement, mockOnClickHandler);
202
- },
203
- };
204
- //# sourceMappingURL=button.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.stories.js","sourceRoot":"","sources":["../../../../../src/components/atoms/button/button.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Meta, StoryObj } from '@storybook/web-components';\nimport { html } from 'lit';\nimport './button.atom';\nimport { expect, within, fn, waitFor, userEvent } from '@storybook/test';\nimport { Button } from './button.atom';\n\nconst meta: Meta = {\n component: 'components/button',\n tags: ['autodocs'],\n argTypes: {\n variant: {\n control: {\n type: 'select',\n },\n options: [\n 'default',\n 'destructive',\n 'outline',\n 'secondary',\n 'ghost',\n 'link',\n ],\n defaultValue: 'default',\n description: 'Choose the visual style of the button.',\n table: {\n defaultValue: { summary: 'default' },\n },\n },\n size: {\n control: {\n type: 'select',\n },\n options: ['default', 'sm', 'lg', 'icon'],\n description: 'Choose the visual style of the button.',\n defaultValue: 'default',\n table: {\n defaultValue: { summary: 'default' },\n },\n },\n disabled: {\n control: 'boolean',\n description: 'Disable the button to prevent interactions.',\n table: {\n defaultValue: { summary: 'false' },\n },\n },\n label: {\n control: 'text',\n description:\n 'The text displayed on the button. Can also be a function returning the label dynamically.',\n type: 'string',\n table: {\n defaultValue: { summary: 'Button' },\n },\n },\n icon: {\n control: 'boolean',\n description: 'Add an icon before the button text.',\n table: {\n defaultValue: { summary: 'false' },\n },\n },\n animation: {\n control: 'boolean',\n description: 'Enable/disable icon animations.',\n table: {\n defaultValue: { summary: 'false' },\n },\n if: { arg: 'icon', neq: false },\n },\n click: {\n action: '',\n description:\n 'Triggered when the button is clicked. Receives the button instance as an argument.',\n table: {\n type: { summary: '(() => void)' },\n defaultValue: { summary: '-' },\n },\n },\n },\n};\n\nconst testButtonBehavior = async (\n args: any,\n canvasElement: any,\n mockHandler: any\n) => {\n const canvas = within(canvasElement);\n const button = await waitFor(() => canvas.getByTestId('btn-id'));\n\n if (button.shadowRoot) {\n const innerButton = button.shadowRoot.querySelector(\n '[data-testchild=\"children-id\"]'\n );\n\n // 1. Test: Button should have correct type attribute\n expect(innerButton).toHaveAttribute('type', 'button');\n\n // 2. Test: Button should handle click events when not disabled\n if (!args.disabled && innerButton) {\n await userEvent.click(innerButton);\n if (mockHandler) {\n expect(mockHandler).toHaveBeenCalled();\n }\n }\n\n // 3. Test: Button should not handle click events when disabled\n if (args.disabled) {\n expect(mockHandler).not.toHaveBeenCalled();\n }\n\n // 4. Test: Button should be disabled when the `disabled` prop is true\n if (args.disabled) {\n expect(innerButton).toBeDisabled();\n } else {\n expect(innerButton).not.toBeDisabled();\n }\n\n // 5. Test: Button should apply the correct variant classes\n const expectedClasses = Button.buttonVariants({\n variant: args.variant,\n size: args.size,\n className: '',\n });\n expect(innerButton).toHaveClass(expectedClasses);\n\n // 6. Test: Button should apply the correct size classes\n const expectedSizeClasses = Button.buttonVariants({\n variant: args.variant,\n size: args.size,\n className: '',\n });\n expect(innerButton).toHaveClass(expectedSizeClasses);\n }\n};\n\nexport default meta;\ntype Story = StoryObj;\n\nconst mockOnClickHandler = fn(event => {\n console.log('Mock onClick handler called');\n});\n\nexport const Buttons: Story = {\n args: {\n label: 'Button',\n variant: 'default',\n size: 'default',\n disabled: false,\n icon: false,\n animation: false,\n },\n render: ({ label, variant, size, disabled, icon, animation }) => {\n console.log('disabled', disabled);\n if (disabled == true)\n return html`\n <rtg-button\n method=\"post\"\n .click=${mockOnClickHandler}\n data-testid=\"btn-id\"\n data-testchild=\"children-id\"\n variant=${variant}\n size=${size}\n disabled=${true}\n >\n ${icon\n ? html`<iconify-icon\n class=${animation\n ? `${label ? 'mr-2 ' : ' '}animate-spin`\n : `${label ? 'mr-2 ' : ''}`}\n icon=\"mdi:home\"\n ></iconify-icon>`\n : ''}\n ${label}</rtg-button\n >\n `;\n else if (disabled == false)\n return html`\n <rtg-button\n method=\"post\"\n .click=${mockOnClickHandler}\n data-testid=\"btn-id\"\n data-testchild=\"children-id\"\n variant=${variant}\n size=${size}\n ?disabled=${false}\n >\n ${icon\n ? html`<iconify-icon\n class=${animation\n ? `${label ? 'mr-2 ' : ' '}animate-spin`\n : `${label ? 'mr-2 ' : ''}`}\n icon=\"mdi:home\"\n ></iconify-icon>`\n : ''}\n ${label}</rtg-button\n >\n `;\n else\n return html`\n <rtg-button\n method=\"post\"\n .click=${mockOnClickHandler}\n data-testid=\"btn-id\"\n data-testchild=\"children-id\"\n variant=${variant}\n size=${size}\n >\n ${icon\n ? html`<iconify-icon\n class=${animation\n ? `${label ? 'mr-2 ' : ' '}animate-spin`\n : `${label ? 'mr-2 ' : ''}`}\n icon=\"mdi:home\"\n ></iconify-icon>`\n : ''}\n ${label}</rtg-button\n >\n `;\n },\n play: async ({ args, canvasElement }) => {\n await testButtonBehavior(args, canvasElement, mockOnClickHandler);\n },\n};\n"]}
@@ -1,24 +0,0 @@
1
- import { cva } from 'class-variance-authority';
2
- export const buttonStyle = cva('inline-flex items-center justify-center whitespace-nowrap rounded-sm text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50', {
3
- variants: {
4
- variant: {
5
- default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',
6
- destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',
7
- outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',
8
- secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',
9
- ghost: 'hover:bg-accent hover:text-accent-foreground',
10
- link: 'text-primary underline-offset-4 hover:underline',
11
- },
12
- size: {
13
- default: 'h-8 px-4 py-2',
14
- sm: 'h-7 rounded-sm px-3 text-xs',
15
- lg: 'h-9 rounded-sm px-8',
16
- icon: 'h-8 w-8',
17
- },
18
- },
19
- defaultVariants: {
20
- variant: 'default',
21
- size: 'default',
22
- },
23
- });
24
- //# sourceMappingURL=button.style.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.style.js","sourceRoot":"","sources":["../../../../../src/components/atoms/button/button.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAC5B,qOAAqO,EACrO;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EACL,+DAA+D;YACjE,WAAW,EACT,8EAA8E;YAChF,OAAO,EACL,0FAA0F;YAC5F,SAAS,EACP,wEAAwE;YAC1E,KAAK,EAAE,8CAA8C;YACrD,IAAI,EAAE,iDAAiD;SACxD;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,eAAe;YACxB,EAAE,EAAE,6BAA6B;YACjC,EAAE,EAAE,qBAAqB;YACzB,IAAI,EAAE,SAAS;SAChB;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,SAAS;KAChB;CACF,CACF,CAAC","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const buttonStyle = cva(\n 'inline-flex items-center justify-center whitespace-nowrap rounded-sm text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n default:\n 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n outline:\n 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',\n secondary:\n 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-8 px-4 py-2',\n sm: 'h-7 rounded-sm px-3 text-xs',\n lg: 'h-9 rounded-sm px-8',\n icon: 'h-8 w-8',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=button.type.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.type.js","sourceRoot":"","sources":["../../../../../src/components/atoms/button/button.type.ts"],"names":[],"mappings":"","sourcesContent":["export type ButtonVariant =\n | 'default'\n | 'destructive'\n | 'outline'\n | 'secondary'\n | 'ghost'\n | 'link';\nexport type ButtonSize = 'default' | 'sm' | 'lg' | 'icon';\n\nexport type ButtonType = 'button' | 'submit' | 'reset' | 'menu';\n"]}
@@ -1,17 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- import { TWStyles } from '../../../styles';
5
- let CardContent = class CardContent extends LitElement {
6
- render() {
7
- return html `
8
- <slot></slot>
9
- `;
10
- }
11
- };
12
- CardContent.styles = [css ``, TWStyles];
13
- CardContent = __decorate([
14
- customElement('rtg-card-content')
15
- ], CardContent);
16
- export { CardContent };
17
- //# sourceMappingURL=card-content.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card-content.js","sourceRoot":"","sources":["../../../../../src/components/atoms/card/card-content.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGpC,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAIzC,MAAM;QACJ,OAAO,IAAI,CAAA;;MAET,CAAC;IACL,CAAC;;AAPM,kBAAM,GAAG,CAAC,GAAG,CAAA,EAAE,EAAE,QAAQ,CAAC,AAApB,CAAqB;AADvB,WAAW;IADvB,aAAa,CAAC,kBAAkB,CAAC;GACrB,WAAW,CASvB","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { TWStyles } from '../../../styles';\n\n@customElement('rtg-card-content')\nexport class CardContent extends LitElement {\n static styles = [css``, TWStyles];\n\n\n render() {\n return html` \n <slot></slot>\n `;\n }\n}\n"]}
@@ -1,17 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- import { TWStyles } from '../../../styles';
5
- let CardDescription = class CardDescription extends LitElement {
6
- render() {
7
- return html `
8
- <slot></slot>
9
- `;
10
- }
11
- };
12
- CardDescription.styles = [css ``, TWStyles];
13
- CardDescription = __decorate([
14
- customElement('rtg-card-description')
15
- ], CardDescription);
16
- export { CardDescription };
17
- //# sourceMappingURL=card-description.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card-description.js","sourceRoot":"","sources":["../../../../../src/components/atoms/card/card-description.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGpC,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,UAAU;IAI7C,MAAM;QACJ,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;;AAPM,sBAAM,GAAG,CAAC,GAAG,CAAA,EAAE,EAAE,QAAQ,CAAC,AAApB,CAAqB;AADvB,eAAe;IAD3B,aAAa,CAAC,sBAAsB,CAAC;GACzB,eAAe,CAS3B","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { TWStyles } from '../../../styles';\n\n@customElement('rtg-card-description')\nexport class CardDescription extends LitElement {\n static styles = [css``, TWStyles];\n\n\n render() {\n return html`\n <slot></slot>\n `;\n }\n}\n"]}
@@ -1,17 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- import { TWStyles } from '../../../styles';
5
- let CardFooter = class CardFooter extends LitElement {
6
- render() {
7
- return html `
8
- <slot></slot>
9
- `;
10
- }
11
- };
12
- CardFooter.styles = [css ``, TWStyles];
13
- CardFooter = __decorate([
14
- customElement('rtg-card-footer')
15
- ], CardFooter);
16
- export { CardFooter };
17
- //# sourceMappingURL=card-footer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card-footer.js","sourceRoot":"","sources":["../../../../../src/components/atoms/card/card-footer.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGpC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAIxC,MAAM;QACJ,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;;AAPM,iBAAM,GAAG,CAAC,GAAG,CAAA,EAAE,EAAE,QAAQ,CAAC,AAApB,CAAqB;AADvB,UAAU;IADtB,aAAa,CAAC,iBAAiB,CAAC;GACpB,UAAU,CAStB","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { TWStyles } from '../../../styles';\n\n@customElement('rtg-card-footer')\nexport class CardFooter extends LitElement {\n static styles = [css``, TWStyles];\n\n\n render() {\n return html`\n <slot></slot> \n `;\n }\n}\n"]}
@@ -1,17 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- import { TWStyles } from '../../../styles';
5
- let CardHeader = class CardHeader extends LitElement {
6
- render() {
7
- return html `
8
- <slot></slot>
9
- `;
10
- }
11
- };
12
- CardHeader.styles = [css ``, TWStyles];
13
- CardHeader = __decorate([
14
- customElement('rtg-card-header')
15
- ], CardHeader);
16
- export { CardHeader };
17
- //# sourceMappingURL=card-header.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card-header.js","sourceRoot":"","sources":["../../../../../src/components/atoms/card/card-header.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGpC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,UAAU;IAIxC,MAAM;QACJ,OAAO,IAAI,CAAA;;IAEX,CAAC;IACH,CAAC;;AAPM,iBAAM,GAAG,CAAC,GAAG,CAAA,EAAE,EAAE,QAAQ,CAAC,AAApB,CAAqB;AADvB,UAAU;IADtB,aAAa,CAAC,iBAAiB,CAAC;GACpB,UAAU,CAStB","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { TWStyles } from '../../../styles';\n\n@customElement('rtg-card-header')\nexport class CardHeader extends LitElement {\n static styles = [css``, TWStyles];\n\n\n render() {\n return html`\n <slot></slot>\n `;\n }\n}\n"]}
@@ -1,17 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- import { TWStyles } from '../../../styles';
5
- let CardTitle = class CardTitle extends LitElement {
6
- render() {
7
- return html `
8
- <slot></slot>
9
- `;
10
- }
11
- };
12
- CardTitle.styles = [css ``, TWStyles];
13
- CardTitle = __decorate([
14
- customElement('rtg-card-title')
15
- ], CardTitle);
16
- export { CardTitle };
17
- //# sourceMappingURL=card-title.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card-title.js","sourceRoot":"","sources":["../../../../../src/components/atoms/card/card-title.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGpC,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,UAAU;IAIvC,MAAM;QACJ,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;;AAPM,gBAAM,GAAG,CAAC,GAAG,CAAA,EAAE,EAAE,QAAQ,CAAC,AAApB,CAAqB;AADvB,SAAS;IADrB,aAAa,CAAC,gBAAgB,CAAC;GACnB,SAAS,CASrB","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { TWStyles } from '../../../styles';\n\n@customElement('rtg-card-title')\nexport class CardTitle extends LitElement {\n static styles = [css``, TWStyles];\n\n\n render() {\n return html`\n <slot></slot>\n `;\n }\n}\n"]}
@@ -1,25 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- import { CardTitle } from './card-title';
5
- import { CardHeader } from './card-header';
6
- import { CardFooter } from './card-footer';
7
- import { CardDescription } from './card-description';
8
- import { CardContent } from './card-content';
9
- import { TWStyles } from '../../../styles';
10
- let Card = class Card extends LitElement {
11
- render() {
12
- return html `<div
13
- class="rounded-lg border bg-card text-card-foreground shadow-sm p-6"
14
- id="rtg-card-id"
15
- >
16
- <slot></slot>
17
- </div>`;
18
- }
19
- };
20
- Card.styles = [css ``, TWStyles];
21
- Card = __decorate([
22
- customElement('rtg-card')
23
- ], Card);
24
- export { Card, CardTitle, CardHeader, CardFooter, CardDescription, CardContent, };
25
- //# sourceMappingURL=card.atom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card.atom.js","sourceRoot":"","sources":["../../../../../src/components/atoms/card/card.atom.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,UAAU;IAG3B,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;WAKJ,CAAC;IACV,CAAC;;AATM,WAAM,GAAG,CAAC,GAAG,CAAA,EAAE,EAAE,QAAQ,CAAC,AAApB,CAAqB;AAD9B,IAAI;IADT,aAAa,CAAC,UAAU,CAAC;GACpB,IAAI,CAWT;AAED,OAAO,EACL,IAAI,EACJ,SAAS,EACT,UAAU,EACV,UAAU,EACV,eAAe,EACf,WAAW,GACZ,CAAC","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport { CardTitle } from './card-title';\nimport { CardHeader } from './card-header';\nimport { CardFooter } from './card-footer';\nimport { CardDescription } from './card-description';\nimport { CardContent } from './card-content';\nimport { TWStyles } from '../../../styles';\n\n@customElement('rtg-card')\nclass Card extends LitElement {\n static styles = [css``, TWStyles];\n\n render() {\n return html`<div\n class=\"rounded-lg border bg-card text-card-foreground shadow-sm p-6\"\n id=\"rtg-card-id\"\n >\n <slot></slot>\n </div>`;\n }\n}\n\nexport {\n Card,\n CardTitle,\n CardHeader,\n CardFooter,\n CardDescription,\n CardContent,\n};\n"]}
@@ -1,136 +0,0 @@
1
- import { html } from 'lit';
2
- import { expect, within, waitFor } from '@storybook/test';
3
- import './card.atom';
4
- export default {
5
- component: 'components/card',
6
- tags: ['autodocs'],
7
- };
8
- const testCardBehavior = async (args, canvasElement) => {
9
- const canvas = within(canvasElement);
10
- const card = await waitFor(() => canvas.getByTestId('card-id'));
11
- const cardHeader = await waitFor(() => canvas.getByTestId('card-header-id'));
12
- const cardTitle = await waitFor(() => canvas.getByTestId('card-title-id'));
13
- const cardDescription = await waitFor(() => canvas.getByTestId('card-description-id'));
14
- const cardContent = await waitFor(() => canvas.getByTestId('card-content-id'));
15
- const cardFooter = await waitFor(() => canvas.getByTestId('card-footer-id'));
16
- expect(card).toBeVisible();
17
- expect(cardHeader).toBeVisible();
18
- expect(cardTitle).toBeVisible();
19
- expect(cardDescription).toBeVisible();
20
- expect(cardContent).toBeVisible();
21
- expect(cardFooter).toBeVisible();
22
- if (card.shadowRoot) {
23
- const cardItem = await card.shadowRoot.getElementById('rtg-card-id');
24
- expect(cardItem).toHaveClass('rounded-lg border bg-card text-card-foreground shadow-sm p-6');
25
- }
26
- if (cardTitle) {
27
- expect(cardTitle.textContent).toContain('Create project');
28
- expect(cardTitle.tagName.toLowerCase()).toEqual('cardtitle');
29
- }
30
- if (cardDescription) {
31
- expect(cardDescription.textContent).toContain('Deploy your new project in one-click.');
32
- expect(cardDescription.tagName.toLowerCase()).toEqual('carddescription');
33
- }
34
- };
35
- export const Cards = {
36
- name: 'Cards',
37
- render: () => html `
38
- <rtg-card data-testid="card-id">
39
- <CardHeader data-testid="card-header-id">
40
- <CardTitle data-testid="card-title-id">
41
- <h3>Create project</h3>
42
- </CardTitle>
43
- <CardDescription data-testid="card-description-id">
44
- <p class="text-sm text-muted-foreground">
45
- Deploy your new project in one-click.
46
- </p>
47
- </CardDescription>
48
- </CardHeader>
49
- <CardContent data-testid="card-content-id">
50
- <form class="pt-4">
51
- <div class="grid w-full items-center gap-4">
52
- <div class="flex flex-col space-y-1.5">
53
- <label
54
- class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
55
- for="name"
56
- >Name</label
57
- ><input
58
- class="flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50"
59
- id="name"
60
- placeholder="Name of your project"
61
- />
62
- </div>
63
- <div class="flex flex-col space-y-1.5">
64
- <label
65
- class="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
66
- for="framework"
67
- >Framework</label
68
- ><button
69
- type="button"
70
- role="combobox"
71
- aria-controls="radix-:r2b:"
72
- aria-expanded="false"
73
- aria-autocomplete="none"
74
- dir="ltr"
75
- data-state="closed"
76
- data-placeholder=""
77
- class="flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&amp;>span]:line-clamp-1"
78
- id="framework"
79
- >
80
- <span style="pointer-events: none;">Select</span
81
- ><svg
82
- xmlns="http://www.w3.org/2000/svg"
83
- width="24"
84
- height="24"
85
- viewBox="0 0 24 24"
86
- fill="none"
87
- stroke="currentColor"
88
- stroke-width="2"
89
- stroke-linecap="round"
90
- stroke-linejoin="round"
91
- class="lucide lucide-chevron-down h-4 w-4 opacity-50"
92
- aria-hidden="true"
93
- >
94
- <path d="m6 9 6 6 6-6"></path>
95
- </svg></button
96
- ><select
97
- aria-hidden="true"
98
- tabindex="-1"
99
- style="position: absolute; border: 0px; width: 1px; height: 1px; padding: 0px; margin: -1px; overflow: hidden; clip: rect(0px, 0px, 0px, 0px); white-space: nowrap; overflow-wrap: normal;"
100
- >
101
- <option value=""></option>
102
- <option value="next">Next.js</option>
103
- <option value="sveltekit">SvelteKit</option>
104
- <option value="astro">Astro</option>
105
- <option value="nuxt">Nuxt.js</option>
106
- </select>
107
- </div>
108
- </div>
109
- </form>
110
- </CardContent>
111
- <CardFooter data-testid="card-footer-id">
112
- <div class="items-center pt-4 flex justify-between">
113
- <button
114
- class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2"
115
- >
116
- Cancel
117
- </button>
118
- <button
119
- class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2"
120
- >
121
- Deploy
122
- </button>
123
- </div>
124
- </CardFooter>
125
- </rtg-card>
126
- `,
127
- play: async ({ args, canvasElement }) => {
128
- try {
129
- await testCardBehavior(args, canvasElement);
130
- }
131
- catch (error) {
132
- console.error('An error occurred during the play function:', error);
133
- }
134
- },
135
- };
136
- //# sourceMappingURL=card.stories.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"card.stories.js","sourceRoot":"","sources":["../../../../../src/components/atoms/card/card.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import { html } from 'lit';\nimport type { Meta, StoryFn, StoryObj } from '@storybook/web-components';\nimport { expect, within, fn, waitFor, userEvent } from '@storybook/test';\nimport './card.atom';\n\nexport default {\n component: 'components/card',\n tags: ['autodocs'],\n} as Meta;\n\ntype Story = StoryObj;\n\nconst testCardBehavior = async (args: any, canvasElement: HTMLElement) => {\n const canvas = within(canvasElement);\n const card = await waitFor(() => canvas.getByTestId('card-id'));\n const cardHeader = await waitFor(() => canvas.getByTestId('card-header-id'));\n const cardTitle = await waitFor(() => canvas.getByTestId('card-title-id'));\n const cardDescription = await waitFor(() =>\n canvas.getByTestId('card-description-id')\n );\n const cardContent = await waitFor(() =>\n canvas.getByTestId('card-content-id')\n );\n const cardFooter = await waitFor(() => canvas.getByTestId('card-footer-id'));\n expect(card).toBeVisible();\n expect(cardHeader).toBeVisible();\n expect(cardTitle).toBeVisible();\n expect(cardDescription).toBeVisible();\n expect(cardContent).toBeVisible();\n expect(cardFooter).toBeVisible();\n\n if (card.shadowRoot) {\n const cardItem = await card.shadowRoot.getElementById('rtg-card-id');\n expect(cardItem).toHaveClass(\n 'rounded-lg border bg-card text-card-foreground shadow-sm p-6'\n );\n }\n if (cardTitle) {\n expect(cardTitle.textContent).toContain('Create project');\n expect(cardTitle.tagName.toLowerCase()).toEqual('cardtitle');\n }\n if (cardDescription) {\n expect(cardDescription.textContent).toContain(\n 'Deploy your new project in one-click.'\n );\n expect(cardDescription.tagName.toLowerCase()).toEqual('carddescription');\n }\n};\n\nexport const Cards: Story = {\n name: 'Cards',\n render: () => html`\n <rtg-card data-testid=\"card-id\">\n <CardHeader data-testid=\"card-header-id\">\n <CardTitle data-testid=\"card-title-id\">\n <h3>Create project</h3>\n </CardTitle>\n <CardDescription data-testid=\"card-description-id\">\n <p class=\"text-sm text-muted-foreground\">\n Deploy your new project in one-click.\n </p>\n </CardDescription>\n </CardHeader>\n <CardContent data-testid=\"card-content-id\">\n <form class=\"pt-4\">\n <div class=\"grid w-full items-center gap-4\">\n <div class=\"flex flex-col space-y-1.5\">\n <label\n class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n for=\"name\"\n >Name</label\n ><input\n class=\"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\"\n id=\"name\"\n placeholder=\"Name of your project\"\n />\n </div>\n <div class=\"flex flex-col space-y-1.5\">\n <label\n class=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n for=\"framework\"\n >Framework</label\n ><button\n type=\"button\"\n role=\"combobox\"\n aria-controls=\"radix-:r2b:\"\n aria-expanded=\"false\"\n aria-autocomplete=\"none\"\n dir=\"ltr\"\n data-state=\"closed\"\n data-placeholder=\"\"\n class=\"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&amp;>span]:line-clamp-1\"\n id=\"framework\"\n >\n <span style=\"pointer-events: none;\">Select</span\n ><svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"lucide lucide-chevron-down h-4 w-4 opacity-50\"\n aria-hidden=\"true\"\n >\n <path d=\"m6 9 6 6 6-6\"></path>\n </svg></button\n ><select\n aria-hidden=\"true\"\n tabindex=\"-1\"\n style=\"position: absolute; border: 0px; width: 1px; height: 1px; padding: 0px; margin: -1px; overflow: hidden; clip: rect(0px, 0px, 0px, 0px); white-space: nowrap; overflow-wrap: normal;\"\n >\n <option value=\"\"></option>\n <option value=\"next\">Next.js</option>\n <option value=\"sveltekit\">SvelteKit</option>\n <option value=\"astro\">Astro</option>\n <option value=\"nuxt\">Nuxt.js</option>\n </select>\n </div>\n </div>\n </form>\n </CardContent>\n <CardFooter data-testid=\"card-footer-id\">\n <div class=\"items-center pt-4 flex justify-between\">\n <button\n class=\"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 border border-input bg-background hover:bg-accent hover:text-accent-foreground h-10 px-4 py-2\"\n >\n Cancel\n </button>\n <button\n class=\"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2\"\n >\n Deploy\n </button>\n </div>\n </CardFooter>\n </rtg-card>\n `,\n play: async ({ args, canvasElement }) => {\n try {\n await testCardBehavior(args, canvasElement);\n } catch (error) {\n console.error('An error occurred during the play function:', error);\n }\n },\n};\n"]}