@beydesign/storybook 0.0.1 → 0.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 (234) hide show
  1. package/README.md +60 -40
  2. package/dist/App.js +161 -5
  3. package/dist/assets/animations/loading-animation.json +1 -0
  4. package/dist/index.d.ts +12 -2
  5. package/dist/index.js +12 -4
  6. package/dist/stories/Agent/AgentCard.d.ts +3 -0
  7. package/dist/stories/Agent/AgentCard.js +102 -0
  8. package/dist/stories/Agent/AgentCard.stories.d.ts +13 -0
  9. package/dist/stories/Agent/AgentCard.stories.js +303 -0
  10. package/dist/stories/Agent/AgentCardSkeleton.d.ts +2 -0
  11. package/dist/stories/Agent/AgentCardSkeleton.js +6 -0
  12. package/dist/stories/Agent/AgentCardSkeleton.stories.d.ts +13 -0
  13. package/dist/stories/Agent/AgentCardSkeleton.stories.js +101 -0
  14. package/dist/stories/Agent/CreateNewCard.d.ts +7 -0
  15. package/dist/stories/Agent/CreateNewCard.js +25 -0
  16. package/dist/stories/Agent/CreateNewCard.stories.d.ts +7 -0
  17. package/dist/stories/Agent/CreateNewCard.stories.js +23 -0
  18. package/dist/stories/Agent/index.d.ts +4 -0
  19. package/dist/stories/Agent/index.js +4 -0
  20. package/dist/stories/Agent/types.d.ts +96 -0
  21. package/dist/stories/Agent/types.js +7 -0
  22. package/dist/stories/Buttons/MainButton.d.ts +3 -0
  23. package/dist/stories/Buttons/MainButton.js +302 -0
  24. package/dist/stories/Buttons/MainButton.stories.d.ts +28 -0
  25. package/dist/stories/Buttons/MainButton.stories.js +299 -0
  26. package/dist/stories/Buttons/ToggleButtonGroup.d.ts +3 -0
  27. package/dist/stories/Buttons/ToggleButtonGroup.js +34 -0
  28. package/dist/stories/Buttons/ToggleButtonGroup.stories.d.ts +9 -0
  29. package/dist/stories/Buttons/ToggleButtonGroup.stories.js +78 -0
  30. package/dist/stories/Buttons/index.d.ts +3 -0
  31. package/dist/stories/Buttons/index.js +3 -0
  32. package/dist/stories/{types/button.d.ts → Buttons/types.d.ts} +37 -14
  33. package/dist/stories/{types/button.js → Buttons/types.js} +12 -2
  34. package/dist/stories/Credits/CreditsCard.d.ts +3 -0
  35. package/dist/stories/Credits/CreditsCard.js +53 -0
  36. package/dist/stories/Credits/CreditsCard.stories.d.ts +7 -0
  37. package/dist/stories/Credits/CreditsCard.stories.js +34 -0
  38. package/dist/stories/Credits/CreditsCardSkeleton.d.ts +3 -0
  39. package/dist/stories/Credits/CreditsCardSkeleton.js +30 -0
  40. package/dist/stories/Credits/CreditsCardSkeleton.stories.d.ts +7 -0
  41. package/dist/stories/Credits/CreditsCardSkeleton.stories.js +40 -0
  42. package/dist/stories/Credits/index.d.ts +3 -0
  43. package/dist/stories/Credits/index.js +3 -0
  44. package/dist/stories/Credits/types.d.ts +57 -0
  45. package/dist/stories/Credits/types.js +11 -0
  46. package/dist/stories/EntityCard/EntityCard.d.ts +3 -0
  47. package/dist/stories/EntityCard/EntityCard.js +22 -0
  48. package/dist/stories/EntityCard/EntityCard.stories.d.ts +10 -0
  49. package/dist/stories/EntityCard/EntityCard.stories.js +187 -0
  50. package/dist/stories/EntityCard/EntityCardSkeleton.d.ts +3 -0
  51. package/dist/stories/EntityCard/EntityCardSkeleton.js +9 -0
  52. package/dist/stories/EntityCard/EntityCardSkeleton.stories.d.ts +10 -0
  53. package/dist/stories/EntityCard/EntityCardSkeleton.stories.js +73 -0
  54. package/dist/stories/EntityCard/index.d.ts +3 -0
  55. package/dist/stories/EntityCard/index.js +3 -0
  56. package/dist/stories/EntityCard/types.d.ts +54 -0
  57. package/dist/stories/EntityCard/types.js +1 -0
  58. package/dist/stories/Form/AutoComplete.d.ts +3 -0
  59. package/dist/stories/Form/AutoComplete.js +163 -0
  60. package/dist/stories/Form/AutoComplete.stories.d.ts +6 -0
  61. package/dist/stories/Form/AutoComplete.stories.js +88 -0
  62. package/dist/stories/Form/Checkbox.d.ts +3 -0
  63. package/dist/stories/Form/Checkbox.js +65 -0
  64. package/dist/stories/Form/Checkbox.stories.d.ts +13 -0
  65. package/dist/stories/Form/Checkbox.stories.js +121 -0
  66. package/dist/stories/Form/Dropdown.d.ts +3 -0
  67. package/dist/stories/Form/Dropdown.js +183 -0
  68. package/dist/stories/Form/Dropdown.stories.d.ts +6 -0
  69. package/dist/stories/Form/Dropdown.stories.js +122 -0
  70. package/dist/stories/Form/FileUpload/FileUpload.d.ts +3 -0
  71. package/dist/stories/Form/FileUpload/FileUpload.js +128 -0
  72. package/dist/stories/Form/FileUpload/FileUpload.stories.d.ts +7 -0
  73. package/dist/stories/Form/FileUpload/FileUpload.stories.js +51 -0
  74. package/dist/stories/Form/FileUpload/FileUploading.d.ts +3 -0
  75. package/dist/stories/Form/FileUpload/FileUploading.js +49 -0
  76. package/dist/stories/Form/FileUpload/FileUploading.stories.d.ts +10 -0
  77. package/dist/stories/Form/FileUpload/FileUploading.stories.js +108 -0
  78. package/dist/stories/Form/FileUpload/UploadedFile.d.ts +3 -0
  79. package/dist/stories/Form/FileUpload/UploadedFile.js +12 -0
  80. package/dist/stories/Form/FileUpload/UploadedFile.stories.d.ts +7 -0
  81. package/dist/stories/Form/FileUpload/UploadedFile.stories.js +73 -0
  82. package/dist/stories/Form/FileUpload/index.d.ts +3 -0
  83. package/dist/stories/Form/FileUpload/index.js +3 -0
  84. package/dist/stories/Form/TextArea.d.ts +3 -0
  85. package/dist/stories/Form/TextArea.js +23 -0
  86. package/dist/stories/Form/TextArea.stories.d.ts +161 -0
  87. package/dist/stories/Form/TextArea.stories.js +142 -0
  88. package/dist/stories/Form/TextInput.d.ts +3 -0
  89. package/dist/stories/Form/TextInput.js +57 -0
  90. package/dist/stories/Form/TextInput.stories.d.ts +155 -0
  91. package/dist/stories/Form/TextInput.stories.js +155 -0
  92. package/dist/stories/Form/Toggle.d.ts +3 -0
  93. package/dist/stories/Form/Toggle.js +57 -0
  94. package/dist/stories/Form/Toggle.stories.d.ts +6 -0
  95. package/dist/stories/Form/Toggle.stories.js +79 -0
  96. package/dist/stories/Form/index.d.ts +8 -0
  97. package/dist/stories/Form/index.js +8 -0
  98. package/dist/stories/Form/types.d.ts +274 -0
  99. package/dist/stories/Form/types.js +46 -0
  100. package/dist/stories/Foundations/Colors.d.ts +2 -0
  101. package/dist/stories/Foundations/Colors.js +266 -0
  102. package/dist/stories/Foundations/Colors.stories.d.ts +6 -0
  103. package/dist/stories/Foundations/Colors.stories.js +15 -0
  104. package/dist/stories/Foundations/index.d.ts +1 -0
  105. package/dist/stories/Foundations/index.js +1 -0
  106. package/dist/stories/Navigation/ComplexHeader.d.ts +3 -0
  107. package/dist/stories/Navigation/ComplexHeader.js +21 -0
  108. package/dist/stories/Navigation/ComplexHeader.stories.d.ts +6 -0
  109. package/dist/stories/Navigation/ComplexHeader.stories.js +82 -0
  110. package/dist/stories/Navigation/Header.d.ts +3 -0
  111. package/dist/stories/Navigation/Header.js +9 -0
  112. package/dist/stories/Navigation/Header.stories.d.ts +7 -0
  113. package/dist/stories/Navigation/Header.stories.js +87 -0
  114. package/dist/stories/Navigation/NavItem.d.ts +3 -0
  115. package/dist/stories/Navigation/NavItem.js +66 -0
  116. package/dist/stories/Navigation/NavItem.stories.d.ts +14 -0
  117. package/dist/stories/Navigation/NavItem.stories.js +100 -0
  118. package/dist/stories/Navigation/ProcessHeader.d.ts +3 -0
  119. package/dist/stories/Navigation/ProcessHeader.js +11 -0
  120. package/dist/stories/Navigation/ProcessHeader.stories.d.ts +6 -0
  121. package/dist/stories/Navigation/ProcessHeader.stories.js +76 -0
  122. package/dist/stories/Navigation/Sidebar.d.ts +3 -0
  123. package/dist/stories/Navigation/Sidebar.js +115 -0
  124. package/dist/stories/Navigation/Sidebar.stories.d.ts +11 -0
  125. package/dist/stories/Navigation/Sidebar.stories.js +174 -0
  126. package/dist/stories/Navigation/index.d.ts +6 -0
  127. package/dist/stories/Navigation/index.js +6 -0
  128. package/dist/stories/Navigation/types.d.ts +186 -0
  129. package/dist/stories/Navigation/types.js +21 -0
  130. package/dist/stories/PlanCard/PlanCard.d.ts +3 -0
  131. package/dist/stories/PlanCard/PlanCard.js +13 -0
  132. package/dist/stories/PlanCard/PlanCard.stories.d.ts +9 -0
  133. package/dist/stories/PlanCard/PlanCard.stories.js +125 -0
  134. package/dist/stories/PlanCard/PlanCardSkeleton.d.ts +3 -0
  135. package/dist/stories/PlanCard/PlanCardSkeleton.js +6 -0
  136. package/dist/stories/PlanCard/PlanCardSkeleton.stories.d.ts +7 -0
  137. package/dist/stories/PlanCard/PlanCardSkeleton.stories.js +40 -0
  138. package/dist/stories/PlanCard/index.d.ts +3 -0
  139. package/dist/stories/PlanCard/index.js +3 -0
  140. package/dist/stories/PlanCard/types.d.ts +61 -0
  141. package/dist/stories/PlanCard/types.js +1 -0
  142. package/dist/stories/StripeProduct/StripeProduct.d.ts +3 -0
  143. package/dist/stories/StripeProduct/StripeProduct.js +24 -0
  144. package/dist/stories/StripeProduct/StripeProduct.stories.d.ts +10 -0
  145. package/dist/stories/StripeProduct/StripeProduct.stories.js +110 -0
  146. package/dist/stories/StripeProduct/StripeProductCardSkeleton.d.ts +3 -0
  147. package/dist/stories/StripeProduct/StripeProductCardSkeleton.js +6 -0
  148. package/dist/stories/StripeProduct/StripeProductCardSkeleton.stories.d.ts +16 -0
  149. package/dist/stories/StripeProduct/StripeProductCardSkeleton.stories.js +137 -0
  150. package/dist/stories/StripeProduct/index.d.ts +3 -0
  151. package/dist/stories/StripeProduct/index.js +3 -0
  152. package/dist/stories/StripeProduct/types.d.ts +56 -0
  153. package/dist/stories/StripeProduct/types.js +1 -0
  154. package/dist/stories/Typography/Typography.d.ts +3 -0
  155. package/dist/stories/Typography/Typography.js +22 -0
  156. package/dist/stories/Typography/Typography.stories.d.ts +25 -0
  157. package/dist/stories/Typography/Typography.stories.js +225 -0
  158. package/dist/stories/Typography/index.d.ts +2 -0
  159. package/dist/stories/Typography/index.js +2 -0
  160. package/dist/stories/Typography/types.d.ts +46 -0
  161. package/dist/stories/Typography/types.js +27 -0
  162. package/dist/stories/UI/Avatar.d.ts +3 -0
  163. package/dist/stories/UI/Avatar.js +76 -0
  164. package/dist/stories/UI/Avatar.stories.d.ts +8 -0
  165. package/dist/stories/UI/Avatar.stories.js +76 -0
  166. package/dist/stories/UI/Badge.d.ts +3 -0
  167. package/dist/stories/UI/Badge.js +118 -0
  168. package/dist/stories/UI/Badge.stories.d.ts +11 -0
  169. package/dist/stories/UI/Badge.stories.js +107 -0
  170. package/dist/stories/UI/CheckIcon.d.ts +3 -0
  171. package/dist/stories/UI/CheckIcon.js +36 -0
  172. package/dist/stories/UI/CheckIcon.stories.d.ts +7 -0
  173. package/dist/stories/UI/CheckIcon.stories.js +48 -0
  174. package/dist/stories/UI/FeatureBanner.d.ts +3 -0
  175. package/dist/stories/UI/FeatureBanner.js +34 -0
  176. package/dist/stories/UI/FeatureBanner.stories.d.ts +9 -0
  177. package/dist/stories/UI/FeatureBanner.stories.js +131 -0
  178. package/dist/stories/UI/HintBubble.d.ts +3 -0
  179. package/dist/stories/UI/HintBubble.js +28 -0
  180. package/dist/stories/UI/HintBubble.stories.d.ts +9 -0
  181. package/dist/stories/UI/HintBubble.stories.js +68 -0
  182. package/dist/stories/UI/Logo.d.ts +3 -0
  183. package/dist/stories/UI/Logo.js +60 -0
  184. package/dist/stories/UI/Logo.stories.d.ts +11 -0
  185. package/dist/stories/UI/Logo.stories.js +65 -0
  186. package/dist/stories/UI/Menu.d.ts +3 -0
  187. package/dist/stories/UI/Menu.js +56 -0
  188. package/dist/stories/UI/Menu.stories.d.ts +7 -0
  189. package/dist/stories/UI/Menu.stories.js +80 -0
  190. package/dist/stories/UI/ProgressIndicator.d.ts +3 -0
  191. package/dist/stories/UI/ProgressIndicator.js +35 -0
  192. package/dist/stories/UI/ProgressIndicator.stories.d.ts +10 -0
  193. package/dist/stories/UI/ProgressIndicator.stories.js +98 -0
  194. package/dist/stories/UI/PromoBanner.d.ts +3 -0
  195. package/dist/stories/UI/PromoBanner.js +34 -0
  196. package/dist/stories/UI/PromoBanner.stories.d.ts +9 -0
  197. package/dist/stories/UI/PromoBanner.stories.js +159 -0
  198. package/dist/stories/UI/SkeletonLoader.d.ts +3 -0
  199. package/dist/stories/UI/SkeletonLoader.js +19 -0
  200. package/dist/stories/UI/SkeletonLoader.stories.d.ts +8 -0
  201. package/dist/stories/UI/SkeletonLoader.stories.js +74 -0
  202. package/dist/stories/UI/Stepper.d.ts +3 -0
  203. package/dist/stories/UI/Stepper.js +67 -0
  204. package/dist/stories/UI/Stepper.stories.d.ts +6 -0
  205. package/dist/stories/UI/Stepper.stories.js +65 -0
  206. package/dist/stories/UI/Topbar.d.ts +3 -0
  207. package/dist/stories/UI/Topbar.js +9 -0
  208. package/dist/stories/UI/Topbar.stories.d.ts +6 -0
  209. package/dist/stories/UI/Topbar.stories.js +71 -0
  210. package/dist/stories/UI/index.d.ts +13 -0
  211. package/dist/stories/UI/index.js +13 -0
  212. package/dist/stories/UI/types.d.ts +398 -0
  213. package/dist/stories/UI/types.js +110 -0
  214. package/dist/utils/common.d.ts +2 -0
  215. package/dist/utils/common.js +20 -0
  216. package/dist/utils/icon.d.ts +6 -0
  217. package/dist/utils/icon.js +6 -0
  218. package/dist/utils/index.d.ts +3 -0
  219. package/dist/utils/index.js +3 -0
  220. package/dist/utils/typography.d.ts +14 -0
  221. package/dist/utils/typography.js +46 -0
  222. package/package.json +48 -42
  223. package/dist/stories/Button.d.ts +0 -4
  224. package/dist/stories/Button.js +0 -258
  225. package/dist/stories/Colors.d.ts +0 -5
  226. package/dist/stories/Colors.js +0 -9
  227. package/dist/stories/Header.d.ts +0 -12
  228. package/dist/stories/Header.js +0 -4
  229. package/dist/stories/Header.stories.d.ts +0 -18
  230. package/dist/stories/Header.stories.js +0 -26
  231. package/dist/stories/Page.d.ts +0 -3
  232. package/dist/stories/Page.js +0 -8
  233. package/dist/stories/Page.stories.d.ts +0 -12
  234. package/dist/stories/Page.stories.js +0 -24
@@ -0,0 +1,302 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { CircularProgress } from '@mui/material';
3
+ import styled from '@emotion/styled';
4
+ import { ButtonSize, ButtonHierarchy, ButtonState, ButtonShape, ButtonDisplayMode, ButtonType, } from './types';
5
+ import { Typography, TypographySize, TypographyWeight } from '../Typography';
6
+ import { getIconComponent } from '../../utils';
7
+ const StyledButton = styled.button `
8
+ text-transform: none;
9
+ padding: ${(props) => props.$displayIconMode === ButtonDisplayMode.Only
10
+ ? 'var(--spacing-tokens-size-in-px-spacing-spacing-md)'
11
+ : props.$sizeStyles.padding};
12
+ font-size: ${(props) => props.$sizeStyles.fontSize};
13
+ border-radius: ${(props) => props.$shape === ButtonShape.Square
14
+ ? 'var(--spacing-tokens-size-in-px-radius-radius-xs)'
15
+ : 'var(--spacing-tokens-size-in-px-spacing-spacing-11xl)'};
16
+ background: ${(props) => {
17
+ if (props.$destructive) {
18
+ if (props.$state === ButtonState.Disabled || props.$disabled)
19
+ return 'var(--color-background-bg-error-solid)';
20
+ return 'var(--color-background-bg-error)';
21
+ }
22
+ switch (props.$hierarchy) {
23
+ case ButtonHierarchy.Primary:
24
+ if (props.$state === ButtonState.Disabled || props.$disabled)
25
+ return 'var(--color-background-bg-button-disabled)';
26
+ return 'var(--color-background-bg-brand-primary)';
27
+ case ButtonHierarchy.PrimaryLemon:
28
+ if (props.$state === ButtonState.Disabled || props.$disabled)
29
+ return 'var(--color-background-bg-element)';
30
+ return 'var(--primitives-desktop-primary-brand-lemon-400)';
31
+ case ButtonHierarchy.Secondary:
32
+ if (props.$state === ButtonState.Disabled || props.$disabled)
33
+ return 'var(--color-background-bg-component-disabled)';
34
+ return 'var(--color-background-bg-component)';
35
+ case ButtonHierarchy.SecondaryColor:
36
+ if (props.$state === ButtonState.Disabled || props.$disabled)
37
+ return 'var(--color-background-bg-element)';
38
+ return 'var(--color-background-bg-component)';
39
+ case ButtonHierarchy.SecondaryTransparent:
40
+ if (props.$state === ButtonState.Disabled || props.$disabled)
41
+ return 'var(--color-background-bg-overlay-1)';
42
+ return 'var(--primitives-desktop-primary-transparent-violet-50)';
43
+ case ButtonHierarchy.Tertiary:
44
+ if (props.$state === ButtonState.Disabled || props.$disabled)
45
+ return 'var(--primitives-desktop-primary-white-0)';
46
+ return 'var(--primitives-desktop-primary-white-0)';
47
+ case ButtonHierarchy.TertiaryColor:
48
+ if (props.$state === ButtonState.Disabled || props.$disabled)
49
+ return 'var(--primitives-desktop-primary-white-0)';
50
+ return 'var(--primitives-desktop-primary-white-0)';
51
+ default:
52
+ return 'var(--color-background-bg-brand-primary)';
53
+ }
54
+ }};
55
+ color: ${(props) => {
56
+ if (props.$destructive) {
57
+ if (props.$state === ButtonState.Disabled || props.$disabled)
58
+ return 'var(--color-text-text-white)';
59
+ return 'var(--color-text-text-white)';
60
+ }
61
+ switch (props.$hierarchy) {
62
+ case ButtonHierarchy.Primary:
63
+ if (props.$state === ButtonState.Disabled || props.$disabled)
64
+ return 'var(--color-text-text-white)';
65
+ return 'var(--color-text-text-white)';
66
+ case ButtonHierarchy.PrimaryLemon:
67
+ if (props.$state === ButtonState.Disabled || props.$disabled)
68
+ return 'var(--color-text-text-subtle)';
69
+ return 'var(--color-text-text-title)';
70
+ case ButtonHierarchy.Secondary:
71
+ if (props.$state === ButtonState.Disabled || props.$disabled)
72
+ return 'var(--color-text-text-disabled)';
73
+ return 'var(--color-text-text-title)';
74
+ case ButtonHierarchy.SecondaryColor:
75
+ if (props.$state === ButtonState.Disabled || props.$disabled)
76
+ return 'var(--color-text-text-disabled)';
77
+ return 'var(--color-text-text-accent)';
78
+ case ButtonHierarchy.SecondaryTransparent:
79
+ if (props.$state === ButtonState.Disabled || props.$disabled)
80
+ return 'var(--color-text-text-white)';
81
+ return 'var(--color-text-text-white)';
82
+ case ButtonHierarchy.Tertiary:
83
+ if (props.$state === ButtonState.Disabled || props.$disabled)
84
+ return 'var(--color-text-text-disabled)';
85
+ return 'var(--color-text-text-title)';
86
+ case ButtonHierarchy.TertiaryColor:
87
+ if (props.$state === ButtonState.Disabled || props.$disabled)
88
+ return 'var(--color-text-text-disabled)';
89
+ return 'var(--color-text-text-accent)';
90
+ default:
91
+ return 'var(--color-text-text-white)';
92
+ }
93
+ }};
94
+ border: 1px solid
95
+ ${(props) => {
96
+ if (props.$destructive) {
97
+ if (props.$state === ButtonState.Disabled || props.$disabled)
98
+ return 'var(--color-border-border-disabled)';
99
+ return 'var(--color-background-bg-error)';
100
+ }
101
+ switch (props.$hierarchy) {
102
+ case ButtonHierarchy.Primary:
103
+ if (props.$state === ButtonState.Disabled || props.$disabled)
104
+ return 'var(--color-border-border-component)';
105
+ return 'var(--color-background-bg-brand-primary)';
106
+ case ButtonHierarchy.PrimaryLemon:
107
+ if (props.$state === ButtonState.Disabled || props.$disabled)
108
+ return 'var(--color-border-border-component)';
109
+ return 'var(--primitives-desktop-primary-brand-lemon-400)';
110
+ case ButtonHierarchy.Secondary:
111
+ if (props.$state === ButtonState.Disabled || props.$disabled)
112
+ return 'var(--color-border-border-component)';
113
+ return 'var(--color-border-border-component)';
114
+ case ButtonHierarchy.SecondaryColor:
115
+ if (props.$state === ButtonState.Disabled || props.$disabled)
116
+ return 'var(--color-border-border-component)';
117
+ return 'var(--color-border-border-brand)';
118
+ case ButtonHierarchy.SecondaryTransparent:
119
+ if (props.$state === ButtonState.Disabled || props.$disabled)
120
+ return 'var(--color-border-border-disabled)';
121
+ return 'var(--color-border-border-white)';
122
+ case ButtonHierarchy.Tertiary:
123
+ if (props.$state === ButtonState.Disabled || props.$disabled)
124
+ return 'var(--primitives-desktop-primary-white-0)';
125
+ return 'var(--primitives-desktop-primary-white-0)';
126
+ case ButtonHierarchy.TertiaryColor:
127
+ if (props.$state === ButtonState.Disabled || props.$disabled)
128
+ return 'var(--primitives-desktop-primary-white-0)';
129
+ return 'var(--primitives-desktop-primary-white-0)';
130
+ default:
131
+ return 'var(--color-background-bg-brand-primary)';
132
+ }
133
+ }};
134
+ display: flex;
135
+ align-items: center;
136
+ justify-content: center;
137
+ min-width: unset;
138
+ cursor: ${(props) => props.$state === ButtonState.Disabled || props.$disabled
139
+ ? 'not-allowed'
140
+ : 'pointer'};
141
+ pointer-events: ${(props) => props.$state === ButtonState.Disabled || props.$disabled ? 'none' : 'auto'};
142
+ transition: all 0.2s ease-in-out;
143
+
144
+ & > div {
145
+ gap: ${(props) => props.$sizeStyles.gap};
146
+ }
147
+
148
+ &:hover {
149
+ background: ${(props) => {
150
+ if (props.$destructive) {
151
+ return 'var(--primitives-desktop-primary-red-700)';
152
+ }
153
+ switch (props.$hierarchy) {
154
+ case ButtonHierarchy.Primary:
155
+ return 'var(--color-background-bg-brand-primary-hover)';
156
+ case ButtonHierarchy.PrimaryLemon:
157
+ return 'var(--primitives-desktop-primary-brand-lemon-500)';
158
+ case ButtonHierarchy.Secondary:
159
+ return 'var(--color-background-bg-card-highlight-hover)';
160
+ case ButtonHierarchy.SecondaryColor:
161
+ return 'var(--color-background-bg-card-highlight-hover)';
162
+ case ButtonHierarchy.SecondaryTransparent:
163
+ return 'var(--color-background-bg-brand-primary-hover)';
164
+ case ButtonHierarchy.Tertiary:
165
+ return 'var(--primitives-desktop-primary-white-40)';
166
+ case ButtonHierarchy.TertiaryColor:
167
+ return 'var(--color-background-bg-card-highlight-hover)';
168
+ default:
169
+ return 'var(--color-background-bg-brand-primary-hover)';
170
+ }
171
+ }};
172
+ border-color: ${(props) => {
173
+ if (props.$destructive) {
174
+ return 'var(--primitives-desktop-primary-red-700)';
175
+ }
176
+ switch (props.$hierarchy) {
177
+ case ButtonHierarchy.Primary:
178
+ return 'var(--color-background-bg-brand-primary-hover)';
179
+ case ButtonHierarchy.PrimaryLemon:
180
+ return 'var(--primitives-desktop-primary-brand-lemon-500)';
181
+ case ButtonHierarchy.Secondary:
182
+ return 'var(--color-background-bg-card-highlight-hover)';
183
+ case ButtonHierarchy.SecondaryColor:
184
+ return 'var(--color-background-bg-brand-primary-hover)';
185
+ case ButtonHierarchy.SecondaryTransparent:
186
+ return 'var(--primitives-desktop-primary-white-100)';
187
+ case ButtonHierarchy.Tertiary:
188
+ return 'var(--primitives-desktop-primary-white-0)';
189
+ case ButtonHierarchy.TertiaryColor:
190
+ return 'var(--primitives-desktop-primary-white-0)';
191
+ default:
192
+ return 'var(--color-background-bg-brand-primary-hover)';
193
+ }
194
+ }};
195
+ box-shadow: var(--global-shadows-shadow-xs-offset-x)
196
+ var(--global-shadows-shadow-xs-offset-y)
197
+ var(--global-shadows-shadow-xs-blur)
198
+ var(--global-shadows-shadow-xs-spread)
199
+ var(--global-shadows-shadow-xs-color);
200
+ }
201
+ `;
202
+ export const MainButton = ({ onClick, text, disabled = false, loading = false, type = ButtonType.Button, style, size = ButtonSize.xl, hierarchy = ButtonHierarchy.Primary, displayIcon, displayIconMode = ButtonDisplayMode.Default, state = ButtonState.Default, shape = ButtonShape.Square, destructive = false, showLeadingIcon = false, showTrailingIcon = false, leadingIcon = 'Circle', trailingIcon = 'Circle', testId, }) => {
203
+ const getIconSize = () => {
204
+ const sizes = {
205
+ [ButtonSize.xl]: 24,
206
+ [ButtonSize.lg]: 22,
207
+ [ButtonSize.md]: 20,
208
+ [ButtonSize.sm]: 18,
209
+ [ButtonSize.xs]: 16,
210
+ [ButtonSize.xxs]: 14,
211
+ };
212
+ return sizes[size] || sizes[ButtonSize.xl];
213
+ };
214
+ const getButtonSize = () => {
215
+ const sizes = {
216
+ [ButtonSize.xl]: {
217
+ padding: displayIconMode === ButtonDisplayMode.Only
218
+ ? 'var(--spacing-tokens-size-in-px-spacing-spacing-md)'
219
+ : 'var(--spacing-tokens-size-in-px-spacing-spacing-lg) var(--spacing-tokens-size-in-px-spacing-spacing-3xl)',
220
+ fontSize: 'var(--global-font-size-3)',
221
+ gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-sm)',
222
+ },
223
+ [ButtonSize.lg]: {
224
+ padding: displayIconMode === ButtonDisplayMode.Only
225
+ ? 'var(--spacing-tokens-size-in-px-spacing-spacing-md)'
226
+ : 'var(--spacing-tokens-size-in-px-spacing-spacing-lg) var(--spacing-tokens-size-in-px-spacing-spacing-2xl)',
227
+ fontSize: 'var(--global-font-size-3)',
228
+ gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-sm)',
229
+ },
230
+ [ButtonSize.md]: {
231
+ padding: displayIconMode === ButtonDisplayMode.Only
232
+ ? 'var(--spacing-tokens-size-in-px-spacing-spacing-md)'
233
+ : 'var(--spacing-tokens-size-in-px-spacing-spacing-md) var(--spacing-tokens-size-in-px-spacing-spacing-xl)',
234
+ fontSize: 'var(--global-font-size-2)',
235
+ gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-sm)',
236
+ },
237
+ [ButtonSize.sm]: {
238
+ padding: displayIconMode === ButtonDisplayMode.Only
239
+ ? 'var(--spacing-tokens-size-in-px-spacing-spacing-md)'
240
+ : 'var(--spacing-tokens-size-in-px-spacing-spacing-md) var(--spacing-tokens-size-in-px-spacing-spacing-xl)',
241
+ fontSize: 'var(--global-font-size-1)',
242
+ gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-xs)',
243
+ },
244
+ [ButtonSize.xs]: {
245
+ padding: displayIconMode === ButtonDisplayMode.Only
246
+ ? 'var(--spacing-tokens-size-in-px-spacing-spacing-md)'
247
+ : 'var(--spacing-tokens-size-in-px-spacing-spacing-md) var(--spacing-tokens-size-in-px-spacing-spacing-lg)',
248
+ fontSize: 'var(--global-font-size-1)',
249
+ gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-xs)',
250
+ },
251
+ [ButtonSize.xxs]: {
252
+ padding: displayIconMode === ButtonDisplayMode.Only
253
+ ? 'var(--spacing-tokens-size-in-px-spacing-spacing-sm)'
254
+ : 'var(--spacing-tokens-size-in-px-spacing-spacing-sm) var(--spacing-tokens-size-in-px-spacing-spacing-md)',
255
+ fontSize: 'var(--global-font-size-0)',
256
+ gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-xs)',
257
+ },
258
+ };
259
+ return sizes[size] || sizes[ButtonSize.xl];
260
+ };
261
+ const iconProps = {
262
+ size: getIconSize(),
263
+ color: disabled ? 'var(--color-text-text-disabled)' : 'currentColor',
264
+ weight: 'regular',
265
+ };
266
+ const sizeStyles = getButtonSize();
267
+ const renderContent = () => {
268
+ if (loading) {
269
+ return (_jsx(CircularProgress, { size: 24, sx: {
270
+ color: 'currentColor',
271
+ } }));
272
+ }
273
+ if (displayIconMode === ButtonDisplayMode.Only && displayIcon) {
274
+ return getIconComponent(displayIcon, iconProps);
275
+ }
276
+ const getTextSize = () => {
277
+ if (size === ButtonSize.xl)
278
+ return TypographySize.TextL;
279
+ if (size === ButtonSize.lg)
280
+ return TypographySize.TextM;
281
+ if (size === ButtonSize.md)
282
+ return TypographySize.TextS;
283
+ if (size === ButtonSize.sm)
284
+ return TypographySize.TextXS;
285
+ if (size === ButtonSize.xs)
286
+ return TypographySize.Text2XS;
287
+ if (size === ButtonSize.xxs)
288
+ return TypographySize.Text2XS;
289
+ return TypographySize.TextM;
290
+ };
291
+ return (_jsxs("div", { style: {
292
+ display: 'flex',
293
+ alignItems: 'center',
294
+ gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-sm)',
295
+ }, children: [showLeadingIcon &&
296
+ leadingIcon &&
297
+ getIconComponent(leadingIcon, iconProps), text && (_jsx(Typography, { size: getTextSize(), weight: TypographyWeight.SemiBold, children: text })), showTrailingIcon &&
298
+ trailingIcon &&
299
+ getIconComponent(trailingIcon, iconProps)] }));
300
+ };
301
+ return (_jsx(StyledButton, { onClick: onClick, type: type, disabled: state === ButtonState.Disabled || disabled, "$size": size, "$hierarchy": hierarchy, "$state": state, "$shape": shape, "$destructive": destructive, "$disabled": disabled, "$displayIconMode": displayIconMode, "$sizeStyles": sizeStyles, style: style, "data-testid": testId, children: renderContent() }));
302
+ };
@@ -0,0 +1,28 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { MainButton } from './MainButton';
3
+ declare const meta: Meta<typeof MainButton>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof MainButton>;
6
+ export declare const Primary: Story;
7
+ export declare const PrimaryLemon: Story;
8
+ export declare const Secondary: Story;
9
+ export declare const SecondaryColor: Story;
10
+ export declare const SecondaryTransparent: Story;
11
+ export declare const Tertiary: Story;
12
+ export declare const TertiaryColor: Story;
13
+ export declare const PrimaryHover: Story;
14
+ export declare const PrimaryDisabled: Story;
15
+ export declare const IconOnly: Story;
16
+ export declare const IconOnlyHover: Story;
17
+ export declare const IconOnlyDisabled: Story;
18
+ export declare const Destructive: Story;
19
+ export declare const DestructiveHover: Story;
20
+ export declare const DestructiveDisabled: Story;
21
+ export declare const Large: Story;
22
+ export declare const Medium: Story;
23
+ export declare const Small: Story;
24
+ export declare const ExtraSmall: Story;
25
+ export declare const ExtraExtraSmall: Story;
26
+ export declare const CircularButton: Story;
27
+ export declare const CircularButtonHover: Story;
28
+ export declare const CircularButtonDisabled: Story;
@@ -0,0 +1,299 @@
1
+ import { MainButton } from './MainButton';
2
+ import { ButtonHierarchy, ButtonSize, ButtonState, ButtonDisplayMode, ButtonShape, } from './types';
3
+ const meta = {
4
+ title: 'Design System/Components/Buttons/MainButton',
5
+ component: MainButton,
6
+ parameters: {
7
+ layout: 'centered',
8
+ design: {
9
+ type: 'figspec',
10
+ url: 'https://www.figma.com/design/mIhjz2yJjcpLlIqw6oUivt/Beyond-Presence?node-id=4339-3441&t=21PpejYhkGTLCVlu-4',
11
+ },
12
+ },
13
+ tags: ['autodocs'],
14
+ argTypes: {
15
+ text: {
16
+ control: 'text',
17
+ description: 'Button text content',
18
+ table: {
19
+ type: { summary: 'string' },
20
+ },
21
+ },
22
+ size: {
23
+ control: 'select',
24
+ options: ['xl', 'lg', 'md', 'sm', 'xs', 'xxs'],
25
+ description: 'Size of the button',
26
+ table: {
27
+ type: { summary: 'string' },
28
+ defaultValue: { summary: 'xl' },
29
+ },
30
+ },
31
+ hierarchy: {
32
+ control: 'select',
33
+ options: [
34
+ 'Primary',
35
+ 'Primary-lemon',
36
+ 'Secondary',
37
+ 'Secondary-color',
38
+ 'Secondary-transparent',
39
+ 'Tertiary',
40
+ 'Tertiary-color',
41
+ ],
42
+ description: 'Visual hierarchy of the button',
43
+ table: {
44
+ type: { summary: 'string' },
45
+ defaultValue: { summary: 'Primary' },
46
+ },
47
+ },
48
+ displayIcon: {
49
+ control: 'text',
50
+ description: 'Name of the display Phosphor icon (e.g., "Circle", "AndroidLogo", "Armchair")',
51
+ table: {
52
+ type: { summary: 'string' },
53
+ },
54
+ },
55
+ displayIconMode: {
56
+ control: 'select',
57
+ options: ['Default', 'Only'],
58
+ description: 'Icon display mode - Default shows text with icons, Only shows a single icon without text',
59
+ table: {
60
+ type: { summary: 'string' },
61
+ defaultValue: { summary: 'Default' },
62
+ },
63
+ },
64
+ state: {
65
+ control: 'select',
66
+ options: ['Default', 'Hover', 'Disabled'],
67
+ description: 'Current state of the button',
68
+ table: {
69
+ type: { summary: 'string' },
70
+ defaultValue: { summary: 'Default' },
71
+ },
72
+ },
73
+ shape: {
74
+ control: 'select',
75
+ options: ['Square', 'Circle'],
76
+ description: 'Shape of the button',
77
+ table: {
78
+ type: { summary: 'string' },
79
+ defaultValue: { summary: 'Square' },
80
+ },
81
+ },
82
+ destructive: {
83
+ control: 'boolean',
84
+ description: 'Whether the button is destructive',
85
+ table: {
86
+ type: { summary: 'boolean' },
87
+ defaultValue: { summary: 'false' },
88
+ },
89
+ },
90
+ loading: {
91
+ control: 'boolean',
92
+ description: 'Whether the button is in loading state',
93
+ table: {
94
+ type: { summary: 'boolean' },
95
+ defaultValue: { summary: 'false' },
96
+ },
97
+ },
98
+ showLeadingIcon: {
99
+ control: 'boolean',
100
+ description: 'Whether to show the leading icon',
101
+ table: {
102
+ type: { summary: 'boolean' },
103
+ defaultValue: { summary: 'true' },
104
+ },
105
+ },
106
+ showTrailingIcon: {
107
+ control: 'boolean',
108
+ description: 'Whether to show the trailing icon',
109
+ table: {
110
+ type: { summary: 'boolean' },
111
+ defaultValue: { summary: 'true' },
112
+ },
113
+ },
114
+ leadingIcon: {
115
+ control: 'text',
116
+ description: 'Name of the leading Phosphor icon (e.g., "Circle", "AndroidLogo", "Armchair")',
117
+ table: {
118
+ type: { summary: 'string' },
119
+ defaultValue: { summary: 'Circle' },
120
+ },
121
+ },
122
+ trailingIcon: {
123
+ control: 'text',
124
+ description: 'Name of the trailing Phosphor icon (e.g., "Circle", "AndroidLogo", "Armchair")',
125
+ table: {
126
+ type: { summary: 'string' },
127
+ defaultValue: { summary: 'Circle' },
128
+ },
129
+ },
130
+ },
131
+ };
132
+ export default meta;
133
+ export const Primary = {
134
+ args: {
135
+ text: 'Button',
136
+ size: ButtonSize.xl,
137
+ hierarchy: ButtonHierarchy.Primary,
138
+ displayIconMode: ButtonDisplayMode.Default,
139
+ state: ButtonState.Default,
140
+ shape: ButtonShape.Square,
141
+ destructive: false,
142
+ showLeadingIcon: true,
143
+ showTrailingIcon: true,
144
+ leadingIcon: 'Circle',
145
+ trailingIcon: 'Circle',
146
+ },
147
+ };
148
+ export const PrimaryLemon = {
149
+ args: {
150
+ ...Primary.args,
151
+ hierarchy: ButtonHierarchy.PrimaryLemon,
152
+ },
153
+ };
154
+ export const Secondary = {
155
+ args: {
156
+ ...Primary.args,
157
+ text: 'Button',
158
+ hierarchy: ButtonHierarchy.Secondary,
159
+ },
160
+ };
161
+ export const SecondaryColor = {
162
+ args: {
163
+ ...Primary.args,
164
+ text: 'Button',
165
+ hierarchy: ButtonHierarchy.SecondaryColor,
166
+ },
167
+ };
168
+ export const SecondaryTransparent = {
169
+ args: {
170
+ ...Primary.args,
171
+ text: 'Button',
172
+ hierarchy: ButtonHierarchy.SecondaryTransparent,
173
+ },
174
+ };
175
+ export const Tertiary = {
176
+ args: {
177
+ ...Primary.args,
178
+ text: 'Button',
179
+ hierarchy: ButtonHierarchy.Tertiary,
180
+ },
181
+ };
182
+ export const TertiaryColor = {
183
+ args: {
184
+ ...Primary.args,
185
+ text: 'Button',
186
+ hierarchy: ButtonHierarchy.TertiaryColor,
187
+ },
188
+ };
189
+ export const PrimaryHover = {
190
+ args: {
191
+ ...Primary.args,
192
+ state: ButtonState.Hover,
193
+ },
194
+ };
195
+ export const PrimaryDisabled = {
196
+ args: {
197
+ ...Primary.args,
198
+ state: ButtonState.Disabled,
199
+ },
200
+ };
201
+ export const IconOnly = {
202
+ args: {
203
+ displayIconMode: ButtonDisplayMode.Only,
204
+ displayIcon: 'AndroidLogo',
205
+ size: ButtonSize.xl,
206
+ hierarchy: ButtonHierarchy.Primary,
207
+ state: ButtonState.Default,
208
+ shape: ButtonShape.Square,
209
+ },
210
+ };
211
+ export const IconOnlyHover = {
212
+ args: {
213
+ ...IconOnly.args,
214
+ state: ButtonState.Hover,
215
+ },
216
+ };
217
+ export const IconOnlyDisabled = {
218
+ args: {
219
+ ...IconOnly.args,
220
+ state: ButtonState.Disabled,
221
+ },
222
+ };
223
+ export const Destructive = {
224
+ args: {
225
+ ...Primary.args,
226
+ text: 'Button',
227
+ destructive: true,
228
+ },
229
+ };
230
+ export const DestructiveHover = {
231
+ args: {
232
+ ...Destructive.args,
233
+ state: ButtonState.Hover,
234
+ },
235
+ };
236
+ export const DestructiveDisabled = {
237
+ args: {
238
+ ...Destructive.args,
239
+ state: ButtonState.Disabled,
240
+ },
241
+ };
242
+ export const Large = {
243
+ args: {
244
+ ...Primary.args,
245
+ size: ButtonSize.lg,
246
+ text: 'Button',
247
+ },
248
+ };
249
+ export const Medium = {
250
+ args: {
251
+ ...Primary.args,
252
+ size: ButtonSize.md,
253
+ text: 'Button',
254
+ },
255
+ };
256
+ export const Small = {
257
+ args: {
258
+ ...Primary.args,
259
+ size: ButtonSize.sm,
260
+ text: 'Button',
261
+ },
262
+ };
263
+ export const ExtraSmall = {
264
+ args: {
265
+ ...Primary.args,
266
+ size: ButtonSize.xs,
267
+ text: 'Button',
268
+ },
269
+ };
270
+ export const ExtraExtraSmall = {
271
+ args: {
272
+ ...Primary.args,
273
+ size: ButtonSize.xxs,
274
+ text: 'Button',
275
+ },
276
+ };
277
+ export const CircularButton = {
278
+ args: {
279
+ text: 'Button',
280
+ size: ButtonSize.xl,
281
+ hierarchy: ButtonHierarchy.Primary,
282
+ displayIconMode: ButtonDisplayMode.Only,
283
+ displayIcon: 'Circle',
284
+ shape: ButtonShape.Circle,
285
+ state: ButtonState.Default,
286
+ },
287
+ };
288
+ export const CircularButtonHover = {
289
+ args: {
290
+ ...CircularButton.args,
291
+ state: ButtonState.Hover,
292
+ },
293
+ };
294
+ export const CircularButtonDisabled = {
295
+ args: {
296
+ ...CircularButton.args,
297
+ state: ButtonState.Disabled,
298
+ },
299
+ };
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { ToggleButtonGroupProps } from './types';
3
+ export declare const ToggleButtonGroup: React.FC<ToggleButtonGroupProps>;
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { ToggleButtonGroupSize, ButtonHierarchy, ButtonSize, ButtonType, } from './types';
3
+ import { Box } from '@mui/material';
4
+ import { MainButton } from './MainButton';
5
+ export const ToggleButtonGroup = ({ onChange, options, selectedOption, disabled, size = ToggleButtonGroupSize.lg, style, }) => {
6
+ const selectedOptionStyle = {
7
+ backgroundColor: 'var(--color-background-bg-card-highlight-hover)',
8
+ color: 'var(--color-text-text-accent)',
9
+ };
10
+ const unselectedOptionStyle = {
11
+ backgroundColor: 'transparent',
12
+ };
13
+ const getButtonSize = () => {
14
+ switch (size) {
15
+ case ToggleButtonGroupSize.sm:
16
+ return ButtonSize.sm;
17
+ case ToggleButtonGroupSize.md:
18
+ return ButtonSize.md;
19
+ case ToggleButtonGroupSize.lg:
20
+ return ButtonSize.lg;
21
+ default:
22
+ return ButtonSize.md;
23
+ }
24
+ };
25
+ return (_jsx(Box, { display: "flex", flexDirection: "row", sx: {
26
+ borderRadius: 'var(--spacing-tokens-size-in-px-spacing-spacing-md)',
27
+ overflow: 'hidden',
28
+ backgroundColor: 'var(--color-background-bg-component)',
29
+ ...style,
30
+ }, gap: 'var(--spacing-tokens-size-in-px-spacing-spacing-xs)', padding: 'var(--spacing-tokens-size-in-px-spacing-spacing-xs)', border: `1px solid var(--color-border-border-component)`, width: 'fit-content', children: options.map((option) => {
31
+ const isSelected = option === selectedOption;
32
+ return (_jsx(MainButton, { text: option, onClick: () => onChange(option), size: getButtonSize(), hierarchy: ButtonHierarchy.Tertiary, type: ButtonType.Button, style: isSelected ? selectedOptionStyle : unselectedOptionStyle, disabled: disabled }, option));
33
+ }) }));
34
+ };
@@ -0,0 +1,9 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { ToggleButtonGroup } from './ToggleButtonGroup';
3
+ declare const meta: Meta<typeof ToggleButtonGroup>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof ToggleButtonGroup>;
6
+ export declare const Default: Story;
7
+ export declare const Size_SM: Story;
8
+ export declare const Size_MD: Story;
9
+ export declare const Size_LG: Story;