this.gui 1.0.11 → 1.0.13

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 (266) hide show
  1. package/package.json +5 -2
  2. package/src/App.jsx +31 -0
  3. package/src/MDXEditor.jsx +32 -0
  4. package/src/MdxProvider.jsx +20 -0
  5. package/src/Theme.jsx +28 -0
  6. package/src/components/CodeBlock.jsx +22 -0
  7. package/src/components/ComponentFactory.jsx +36 -0
  8. package/src/components/ComponentRegistry.js +21 -0
  9. package/src/index.mdx +154 -0
  10. package/src/main.jsx +18 -0
  11. package/src/scripts/generateComponents.js +166 -0
  12. package/src/scripts/logASCIIArt.js +12 -0
  13. package/src/scripts/postinstall.js +64 -0
  14. package/src/scripts/verifyMolecules.js +158 -0
  15. package/src/scripts/verify_and_install_atoms.js +211 -0
  16. package/src/stories/Atoms/Alert/Alert.css +29 -0
  17. package/src/stories/Atoms/Alert/Alert.jsx +41 -0
  18. package/src/stories/Atoms/Alert/Alert.stories.jsx +41 -0
  19. package/src/stories/Atoms/Audio/Audio.css +29 -0
  20. package/src/stories/Atoms/Audio/Audio.jsx +41 -0
  21. package/src/stories/Atoms/Audio/Audio.stories.jsx +41 -0
  22. package/src/stories/Atoms/Badge/Badge.css +29 -0
  23. package/src/stories/Atoms/Badge/Badge.jsx +41 -0
  24. package/src/stories/Atoms/Badge/Badge.stories.jsx +41 -0
  25. package/src/stories/Atoms/Button/Button.css +70 -0
  26. package/src/stories/Atoms/Button/Button.jsx +98 -0
  27. package/src/stories/Atoms/Button/Button.stories.jsx +54 -0
  28. package/src/stories/Atoms/Caption/Caption.css +29 -0
  29. package/src/stories/Atoms/Caption/Caption.jsx +41 -0
  30. package/src/stories/Atoms/Caption/Caption.stories.jsx +41 -0
  31. package/src/stories/Atoms/Checkbox/Checkbox.css +29 -0
  32. package/src/stories/Atoms/Checkbox/Checkbox.jsx +41 -0
  33. package/src/stories/Atoms/Checkbox/Checkbox.stories.jsx +41 -0
  34. package/src/stories/Atoms/Container/Container.css +29 -0
  35. package/src/stories/Atoms/Container/Container.jsx +41 -0
  36. package/src/stories/Atoms/Container/Container.stories.jsx +41 -0
  37. package/src/stories/Atoms/Divider/Divider.css +29 -0
  38. package/src/stories/Atoms/Divider/Divider.jsx +41 -0
  39. package/src/stories/Atoms/Divider/Divider.stories.jsx +41 -0
  40. package/src/stories/Atoms/Heading/Heading.css +29 -0
  41. package/src/stories/Atoms/Heading/Heading.jsx +41 -0
  42. package/src/stories/Atoms/Heading/Heading.stories.jsx +41 -0
  43. package/src/stories/Atoms/Icon/Icon.css +48 -0
  44. package/src/stories/Atoms/Icon/Icon.jsx +51 -0
  45. package/src/stories/Atoms/Icon/Icon.stories.jsx +72 -0
  46. package/src/stories/Atoms/Image/Image.css +29 -0
  47. package/src/stories/Atoms/Image/Image.jsx +41 -0
  48. package/src/stories/Atoms/Image/Image.stories.jsx +41 -0
  49. package/src/stories/Atoms/Label/Label.css +29 -0
  50. package/src/stories/Atoms/Label/Label.jsx +41 -0
  51. package/src/stories/Atoms/Label/Label.stories.jsx +41 -0
  52. package/src/stories/Atoms/Link/Link.css +29 -0
  53. package/src/stories/Atoms/Link/Link.jsx +41 -0
  54. package/src/stories/Atoms/Link/Link.stories.jsx +41 -0
  55. package/src/stories/Atoms/Loader/Loader.css +29 -0
  56. package/src/stories/Atoms/Loader/Loader.jsx +41 -0
  57. package/src/stories/Atoms/Loader/Loader.stories.jsx +41 -0
  58. package/src/stories/Atoms/Paragraph/Paragraph.css +29 -0
  59. package/src/stories/Atoms/Paragraph/Paragraph.jsx +41 -0
  60. package/src/stories/Atoms/Paragraph/Paragraph.stories.jsx +41 -0
  61. package/src/stories/Atoms/ProgressBar/ProgressBar.css +29 -0
  62. package/src/stories/Atoms/ProgressBar/ProgressBar.jsx +41 -0
  63. package/src/stories/Atoms/ProgressBar/ProgressBar.stories.jsx +41 -0
  64. package/src/stories/Atoms/RadioButton/RadioButton.css +29 -0
  65. package/src/stories/Atoms/RadioButton/RadioButton.jsx +41 -0
  66. package/src/stories/Atoms/RadioButton/RadioButton.stories.jsx +41 -0
  67. package/src/stories/Atoms/RangeInput/RangeInput.css +29 -0
  68. package/src/stories/Atoms/RangeInput/RangeInput.jsx +41 -0
  69. package/src/stories/Atoms/RangeInput/RangeInput.stories.jsx +41 -0
  70. package/src/stories/Atoms/Select/Select.css +29 -0
  71. package/src/stories/Atoms/Select/Select.jsx +41 -0
  72. package/src/stories/Atoms/Select/Select.stories.jsx +41 -0
  73. package/src/stories/Atoms/Slider/Slider.css +29 -0
  74. package/src/stories/Atoms/Slider/Slider.jsx +41 -0
  75. package/src/stories/Atoms/Slider/Slider.stories.jsx +41 -0
  76. package/src/stories/Atoms/Snackbar/Snackbar.css +29 -0
  77. package/src/stories/Atoms/Snackbar/Snackbar.jsx +41 -0
  78. package/src/stories/Atoms/Snackbar/Snackbar.stories.jsx +41 -0
  79. package/src/stories/Atoms/Spacer/Spacer.css +29 -0
  80. package/src/stories/Atoms/Spacer/Spacer.jsx +41 -0
  81. package/src/stories/Atoms/Spacer/Spacer.stories.jsx +41 -0
  82. package/src/stories/Atoms/Spinner/Spinner.css +29 -0
  83. package/src/stories/Atoms/Spinner/Spinner.jsx +41 -0
  84. package/src/stories/Atoms/Spinner/Spinner.stories.jsx +41 -0
  85. package/src/stories/Atoms/Tag/Tag.css +29 -0
  86. package/src/stories/Atoms/Tag/Tag.jsx +41 -0
  87. package/src/stories/Atoms/Tag/Tag.stories.jsx +41 -0
  88. package/src/stories/Atoms/TextArea/TextArea.css +29 -0
  89. package/src/stories/Atoms/TextArea/TextArea.jsx +41 -0
  90. package/src/stories/Atoms/TextArea/TextArea.stories.jsx +41 -0
  91. package/src/stories/Atoms/TextInput/TextInput.css +29 -0
  92. package/src/stories/Atoms/TextInput/TextInput.jsx +41 -0
  93. package/src/stories/Atoms/TextInput/TextInput.stories.jsx +41 -0
  94. package/src/stories/Atoms/Toggle/Toggle.css +29 -0
  95. package/src/stories/Atoms/Toggle/Toggle.jsx +41 -0
  96. package/src/stories/Atoms/Toggle/Toggle.stories.jsx +41 -0
  97. package/src/stories/Atoms/Tooltip/Tooltip.css +29 -0
  98. package/src/stories/Atoms/Tooltip/Tooltip.jsx +41 -0
  99. package/src/stories/Atoms/Tooltip/Tooltip.stories.jsx +41 -0
  100. package/src/stories/Atoms/Video/Video.css +29 -0
  101. package/src/stories/Atoms/Video/Video.jsx +41 -0
  102. package/src/stories/Atoms/Video/Video.stories.jsx +41 -0
  103. package/src/stories/Atoms/index.js +65 -0
  104. package/src/stories/Atoms/meta_Atoms.js +46 -0
  105. package/src/stories/Components.js +198 -0
  106. package/src/stories/Components.md +189 -0
  107. package/src/stories/Getting Started.mdx +239 -0
  108. package/src/stories/Layouts/Grid/Grid.css +4 -0
  109. package/src/stories/Layouts/Grid/Grid.jsx +15 -0
  110. package/src/stories/Layouts/Grid/Grid.stories.jsx +26 -0
  111. package/src/stories/Layouts/Layout.js +28 -0
  112. package/src/stories/MDX.mdx +118 -0
  113. package/src/stories/Miscellaneous/Miscellaneous.js +24 -0
  114. package/src/stories/Molecules/Accordion/Accordion.css +4 -0
  115. package/src/stories/Molecules/Accordion/Accordion.jsx +25 -0
  116. package/src/stories/Molecules/Accordion/Accordion.stories.jsx +20 -0
  117. package/src/stories/Molecules/AudioPlayer/AudioPlayer.css +4 -0
  118. package/src/stories/Molecules/AudioPlayer/AudioPlayer.jsx +25 -0
  119. package/src/stories/Molecules/AudioPlayer/AudioPlayer.stories.jsx +20 -0
  120. package/src/stories/Molecules/AvatarWithName/AvatarWithName.css +4 -0
  121. package/src/stories/Molecules/AvatarWithName/AvatarWithName.jsx +25 -0
  122. package/src/stories/Molecules/AvatarWithName/AvatarWithName.stories.jsx +20 -0
  123. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.css +4 -0
  124. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.jsx +25 -0
  125. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.stories.jsx +20 -0
  126. package/src/stories/Molecules/ButtonGroup/ButtonGroup.css +4 -0
  127. package/src/stories/Molecules/ButtonGroup/ButtonGroup.jsx +25 -0
  128. package/src/stories/Molecules/ButtonGroup/ButtonGroup.stories.jsx +20 -0
  129. package/src/stories/Molecules/Card/Card.css +4 -0
  130. package/src/stories/Molecules/Card/Card.jsx +25 -0
  131. package/src/stories/Molecules/Card/Card.stories.jsx +20 -0
  132. package/src/stories/Molecules/ComparisonTable/ComparisonTable.css +4 -0
  133. package/src/stories/Molecules/ComparisonTable/ComparisonTable.jsx +25 -0
  134. package/src/stories/Molecules/ComparisonTable/ComparisonTable.stories.jsx +20 -0
  135. package/src/stories/Molecules/DataTable/DataTable.css +4 -0
  136. package/src/stories/Molecules/DataTable/DataTable.jsx +25 -0
  137. package/src/stories/Molecules/DataTable/DataTable.stories.jsx +20 -0
  138. package/src/stories/Molecules/FileUpload/FileUpload.css +4 -0
  139. package/src/stories/Molecules/FileUpload/FileUpload.jsx +25 -0
  140. package/src/stories/Molecules/FileUpload/FileUpload.stories.jsx +20 -0
  141. package/src/stories/Molecules/FormField/FormField.css +4 -0
  142. package/src/stories/Molecules/FormField/FormField.jsx +25 -0
  143. package/src/stories/Molecules/FormField/FormField.stories.jsx +20 -0
  144. package/src/stories/Molecules/Header/Header.css +35 -0
  145. package/src/stories/Molecules/Header/Header.jsx +76 -0
  146. package/src/stories/Molecules/Header/Header.stories.jsx +28 -0
  147. package/src/stories/Molecules/IconButton/IconButton.css +4 -0
  148. package/src/stories/Molecules/IconButton/IconButton.jsx +25 -0
  149. package/src/stories/Molecules/IconButton/IconButton.stories.jsx +20 -0
  150. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.css +4 -0
  151. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.jsx +25 -0
  152. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.stories.jsx +20 -0
  153. package/src/stories/Molecules/InputGroup/InputGroup.css +4 -0
  154. package/src/stories/Molecules/InputGroup/InputGroup.jsx +25 -0
  155. package/src/stories/Molecules/InputGroup/InputGroup.stories.jsx +20 -0
  156. package/src/stories/Molecules/InputWithLabel/InputWithLabel.css +4 -0
  157. package/src/stories/Molecules/InputWithLabel/InputWithLabel.jsx +25 -0
  158. package/src/stories/Molecules/InputWithLabel/InputWithLabel.stories.jsx +20 -0
  159. package/src/stories/Molecules/List/List.css +4 -0
  160. package/src/stories/Molecules/List/List.jsx +25 -0
  161. package/src/stories/Molecules/List/List.stories.jsx +20 -0
  162. package/src/stories/Molecules/MediaCard/MediaCard.css +4 -0
  163. package/src/stories/Molecules/MediaCard/MediaCard.jsx +25 -0
  164. package/src/stories/Molecules/MediaCard/MediaCard.stories.jsx +20 -0
  165. package/src/stories/Molecules/Modal/Modal.css +4 -0
  166. package/src/stories/Molecules/Modal/Modal.jsx +25 -0
  167. package/src/stories/Molecules/Modal/Modal.stories.jsx +20 -0
  168. package/src/stories/Molecules/Molecules.js +44 -0
  169. package/src/stories/Molecules/Navbar/Navbar.css +87 -0
  170. package/src/stories/Molecules/Navbar/Navbar.jsx +87 -0
  171. package/src/stories/Molecules/Navbar/Navbar.stories.jsx +20 -0
  172. package/src/stories/Molecules/Notification/Notification.css +4 -0
  173. package/src/stories/Molecules/Notification/Notification.jsx +25 -0
  174. package/src/stories/Molecules/Notification/Notification.stories.jsx +20 -0
  175. package/src/stories/Molecules/PricingTable/PricingTable.css +4 -0
  176. package/src/stories/Molecules/PricingTable/PricingTable.jsx +25 -0
  177. package/src/stories/Molecules/PricingTable/PricingTable.stories.jsx +20 -0
  178. package/src/stories/Molecules/SearchBar/SearchBar.css +4 -0
  179. package/src/stories/Molecules/SearchBar/SearchBar.jsx +25 -0
  180. package/src/stories/Molecules/SearchBar/SearchBar.stories.jsx +20 -0
  181. package/src/stories/Molecules/SelectTheme/SelectTheme.css +25 -0
  182. package/src/stories/Molecules/SelectTheme/SelectTheme.jsx +44 -0
  183. package/src/stories/Molecules/SelectTheme/SelectTheme.stories.jsx +25 -0
  184. package/src/stories/Molecules/Sidebar/Sidebar.css +4 -0
  185. package/src/stories/Molecules/Sidebar/Sidebar.jsx +25 -0
  186. package/src/stories/Molecules/Sidebar/Sidebar.stories.jsx +20 -0
  187. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.css +4 -0
  188. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.jsx +25 -0
  189. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.stories.jsx +20 -0
  190. package/src/stories/Molecules/index.js +57 -0
  191. package/src/stories/Organisms/Organisms.js +39 -0
  192. package/src/stories/Organisms/Profile/UserFriends/UserFriends.context.jsx +15 -0
  193. package/src/stories/Organisms/Profile/UserFriends/UserFriends.css +4 -0
  194. package/src/stories/Organisms/Profile/UserFriends/UserFriends.jsx +13 -0
  195. package/src/stories/Organisms/Profile/UserFriends/UserFriends.stories.jsx +26 -0
  196. package/src/stories/Organisms/Profile/UserPosts/UserPosts.context.jsx +15 -0
  197. package/src/stories/Organisms/Profile/UserPosts/UserPosts.css +4 -0
  198. package/src/stories/Organisms/Profile/UserPosts/UserPosts.jsx +13 -0
  199. package/src/stories/Organisms/Profile/UserPosts/UserPosts.stories.jsx +26 -0
  200. package/src/stories/Organisms/Profile/UserProfile/UserProfile.context.jsx +15 -0
  201. package/src/stories/Organisms/Profile/UserProfile/UserProfile.css +4 -0
  202. package/src/stories/Organisms/Profile/UserProfile/UserProfile.jsx +13 -0
  203. package/src/stories/Organisms/Profile/UserProfile/UserProfile.stories.jsx +26 -0
  204. package/src/stories/Pages/Page/Page.css +69 -0
  205. package/src/stories/Pages/Page/Page.jsx +69 -0
  206. package/src/stories/Pages/Page/Page.stories.js +26 -0
  207. package/src/stories/Pages/Page/Pages.js +31 -0
  208. package/src/stories/Templates/Templates.js +27 -0
  209. package/src/stories/assets/accessibility.png +0 -0
  210. package/src/stories/assets/accessibility.svg +1 -0
  211. package/src/stories/assets/addon-library.png +0 -0
  212. package/src/stories/assets/assets.png +0 -0
  213. package/src/stories/assets/avif-test-image.avif +0 -0
  214. package/src/stories/assets/context.png +0 -0
  215. package/src/stories/assets/discord.svg +1 -0
  216. package/src/stories/assets/docs.png +0 -0
  217. package/src/stories/assets/figma-plugin.png +0 -0
  218. package/src/stories/assets/github.svg +1 -0
  219. package/src/stories/assets/share.png +0 -0
  220. package/src/stories/assets/styling.png +0 -0
  221. package/src/stories/assets/testing.png +0 -0
  222. package/src/stories/assets/theming.png +0 -0
  223. package/src/stories/assets/tutorials.svg +1 -0
  224. package/src/stories/assets/youtube.svg +1 -0
  225. package/src/styles/Header.modules.css +32 -0
  226. package/src/styles/global.css +59 -0
  227. package/src/themes/ThemeProvider.jsx +36 -0
  228. package/src/themes/Themes.js +44 -0
  229. package/src/themes/dark.js +22 -0
  230. package/src/themes/light.js +22 -0
  231. package/src/themes/typ/Readme.md +4 -0
  232. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-700.woff2 +0 -0
  233. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-700italic.woff2 +0 -0
  234. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-italic.woff2 +0 -0
  235. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-regular.woff2 +0 -0
  236. package/src/themes/typ/github.css +416 -0
  237. package/src/themes/typ/gothic/GUST e-foundry License.txt +29 -0
  238. package/src/themes/typ/gothic/didact-gothic-c-ext.woff2 +0 -0
  239. package/src/themes/typ/gothic/didact-gothic-c.woff2 +0 -0
  240. package/src/themes/typ/gothic/texgyreadventor-bold.woff +0 -0
  241. package/src/themes/typ/gothic/texgyreadventor-bolditalic.woff +0 -0
  242. package/src/themes/typ/gothic/texgyreadventor-italic.woff +0 -0
  243. package/src/themes/typ/gothic/texgyreadventor-regular.woff +0 -0
  244. package/src/themes/typ/gothic.css +410 -0
  245. package/src/themes/typ/newsprint/pt-serif-v11-latin-700.woff2 +0 -0
  246. package/src/themes/typ/newsprint/pt-serif-v11-latin-700italic.woff2 +0 -0
  247. package/src/themes/typ/newsprint/pt-serif-v11-latin-italic.woff2 +0 -0
  248. package/src/themes/typ/newsprint/pt-serif-v11-latin-regular.woff2 +0 -0
  249. package/src/themes/typ/newsprint.css +622 -0
  250. package/src/themes/typ/night/codeblock.dark.css +113 -0
  251. package/src/themes/typ/night/credit.html +1 -0
  252. package/src/themes/typ/night/cursor.png +0 -0
  253. package/src/themes/typ/night/cursor@2x.png +0 -0
  254. package/src/themes/typ/night/mermaid.dark.css +7 -0
  255. package/src/themes/typ/night/sourcemode.dark.css +38 -0
  256. package/src/themes/typ/night.css +1032 -0
  257. package/src/themes/typ/pixyll/lato-v14-latin-300.woff +0 -0
  258. package/src/themes/typ/pixyll/lato-v14-latin-300italic.woff +0 -0
  259. package/src/themes/typ/pixyll/lato-v14-latin-900.woff +0 -0
  260. package/src/themes/typ/pixyll/lato-v14-latin-900italic.woff +0 -0
  261. package/src/themes/typ/pixyll/merriweather-v19-latin-300.woff +0 -0
  262. package/src/themes/typ/pixyll/merriweather-v19-latin-300italic.woff +0 -0
  263. package/src/themes/typ/pixyll/merriweather-v19-latin-700.woff +0 -0
  264. package/src/themes/typ/pixyll/merriweather-v19-latin-700italic.woff +0 -0
  265. package/src/themes/typ/pixyll.css +528 -0
  266. package/src/themes/typ/whitey.css +299 -0
@@ -0,0 +1,29 @@
1
+
2
+ .heading {
3
+ padding: 16px;
4
+ border-radius: 8px;
5
+ background-color: #f0f0f0;
6
+ border: 1px solid #ddd;
7
+ }
8
+
9
+ .heading--primary {
10
+ background-color: #e3f2fd;
11
+ border-color: #1e88e5;
12
+ }
13
+
14
+ .heading--secondary {
15
+ background-color: #fff;
16
+ border-color: #ccc;
17
+ }
18
+
19
+ .heading--small {
20
+ padding: 8px;
21
+ }
22
+
23
+ .heading--medium {
24
+ padding: 16px;
25
+ }
26
+
27
+ .heading--large {
28
+ padding: 32px;
29
+ }
@@ -0,0 +1,41 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './Heading.css';
5
+
6
+ /**
7
+ * Heading component for user interaction
8
+ */
9
+ export const Heading = ({ primary, size, children, ...props }) => {
10
+ const mode = primary ? 'heading--primary' : 'heading--secondary';
11
+ return (
12
+ <div
13
+ className={['heading', `heading--${size}`, mode].join(' ')}
14
+ {...props}
15
+ >
16
+ {children}
17
+ </div>
18
+ );
19
+ };
20
+
21
+ Heading.propTypes = {
22
+ /**
23
+ * Is this the primary style for the component?
24
+ */
25
+ primary: PropTypes.bool,
26
+ /**
27
+ * Size of the component
28
+ */
29
+ size: PropTypes.oneOf(['small', 'medium', 'large']),
30
+ /**
31
+ * Content to be rendered inside the component
32
+ */
33
+ children: PropTypes.node.isRequired,
34
+ };
35
+
36
+ Heading.defaultProps = {
37
+ primary: false,
38
+ size: 'medium',
39
+ };
40
+
41
+ export default Heading;
@@ -0,0 +1,41 @@
1
+
2
+ import { Heading } from './Heading';
3
+
4
+ // Storybook configuration for Heading component
5
+ export default {
6
+ title: 'Atoms/Text/Heading',
7
+ component: Heading,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ argTypes: {
12
+ children: { control: 'text' },
13
+ },
14
+ };
15
+
16
+ export const Primary = {
17
+ args: {
18
+ primary: true,
19
+ children: 'This is a primary Heading',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ children: 'This is a secondary Heading',
26
+ },
27
+ };
28
+
29
+ export const Large = {
30
+ args: {
31
+ size: 'large',
32
+ children: 'This is a large Heading',
33
+ },
34
+ };
35
+
36
+ export const Small = {
37
+ args: {
38
+ size: 'small',
39
+ children: 'This is a small Heading',
40
+ },
41
+ };
@@ -0,0 +1,48 @@
1
+ /* src/stories/atoms/Interactive/Icon/Icon.css */
2
+
3
+ /* Base styles for the Icon component */
4
+ .icon {
5
+ display: inline-block;
6
+ vertical-align: middle;
7
+ }
8
+
9
+ /* Sizes */
10
+ .icon--small {
11
+ width: 16px;
12
+ height: 16px;
13
+ }
14
+
15
+ .icon--medium {
16
+ width: 24px;
17
+ height: 24px;
18
+ }
19
+
20
+ .icon--large {
21
+ width: 32px;
22
+ height: 32px;
23
+ }
24
+
25
+ /* Colors */
26
+ .icon--primary {
27
+ fill: #1e88e5;
28
+ }
29
+
30
+ .icon--secondary {
31
+ fill: #757575;
32
+ }
33
+
34
+ .icon--success {
35
+ fill: #43a047;
36
+ }
37
+
38
+ .icon--danger {
39
+ fill: #e53935;
40
+ }
41
+
42
+ .icon--warning {
43
+ fill: #fdd835;
44
+ }
45
+
46
+ .icon--info {
47
+ fill: #039be5;
48
+ }
@@ -0,0 +1,51 @@
1
+ // src/stories/atoms/Interactive/Icon/Icon.jsx
2
+
3
+ import React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import './Icon.css';
6
+
7
+ /**
8
+ * Icon component for displaying SVG icons
9
+ */
10
+ export const Icon = ({ name, size, color, ...props }) => {
11
+ const sizeClass = size ? `icon--${size}` : '';
12
+ const colorClass = color ? `icon--${color}` : '';
13
+
14
+ return (
15
+ <svg
16
+ className={['icon', sizeClass, colorClass].join(' ').trim()}
17
+ {...props}
18
+ >
19
+ <use xlinkHref={`#icon-${name}`} />
20
+ </svg>
21
+ );
22
+ };
23
+
24
+ Icon.propTypes = {
25
+ /**
26
+ * Name of the icon (should correspond to an existing SVG symbol)
27
+ */
28
+ name: PropTypes.string.isRequired,
29
+ /**
30
+ * Size of the icon
31
+ */
32
+ size: PropTypes.oneOf(['small', 'medium', 'large']),
33
+ /**
34
+ * Color variant of the icon
35
+ */
36
+ color: PropTypes.oneOf([
37
+ 'primary',
38
+ 'secondary',
39
+ 'success',
40
+ 'danger',
41
+ 'warning',
42
+ 'info',
43
+ ]),
44
+ };
45
+
46
+ Icon.defaultProps = {
47
+ size: 'medium',
48
+ color: 'primary',
49
+ };
50
+
51
+ export default Icon;
@@ -0,0 +1,72 @@
1
+ // src/stories/atoms/Interactive/Icon/Icon.stories.jsx
2
+
3
+ import React from 'react';
4
+ import { Icon } from './Icon';
5
+
6
+ export default {
7
+ title: 'Atoms/Media/Icon',
8
+ component: Icon,
9
+ parameters: {
10
+ layout: 'centered',
11
+ },
12
+ argTypes: {
13
+ name: {
14
+ control: 'text',
15
+ description: 'Name of the icon symbol to use.',
16
+ },
17
+ size: {
18
+ control: 'select',
19
+ options: ['small', 'medium', 'large'],
20
+ description: 'Size of the icon.',
21
+ },
22
+ color: {
23
+ control: 'select',
24
+ options: ['primary', 'secondary', 'success', 'danger', 'warning', 'info'],
25
+ description: 'Color variant of the icon.',
26
+ },
27
+ },
28
+ };
29
+
30
+ const Template = (args) => <Icon {...args} />;
31
+
32
+ export const Primary = Template.bind({});
33
+ Primary.args = {
34
+ name: 'home', // Replace 'home' with an actual icon name
35
+ size: 'medium',
36
+ color: 'primary',
37
+ };
38
+
39
+ export const Secondary = Template.bind({});
40
+ Secondary.args = {
41
+ name: 'settings',
42
+ size: 'medium',
43
+ color: 'secondary',
44
+ };
45
+
46
+ export const Success = Template.bind({});
47
+ Success.args = {
48
+ name: 'check',
49
+ size: 'medium',
50
+ color: 'success',
51
+ };
52
+
53
+ export const Danger = Template.bind({});
54
+ Danger.args = {
55
+ name: 'error',
56
+ size: 'medium',
57
+ color: 'danger',
58
+ };
59
+
60
+ export const Large = Template.bind({});
61
+ Large.args = {
62
+ name: 'star',
63
+ size: 'large',
64
+ color: 'primary',
65
+ };
66
+
67
+ export const Small = Template.bind({});
68
+ Small.args = {
69
+ name: 'search',
70
+ size: 'small',
71
+ color: 'primary',
72
+ };
@@ -0,0 +1,29 @@
1
+
2
+ .image {
3
+ padding: 16px;
4
+ border-radius: 8px;
5
+ background-color: #f0f0f0;
6
+ border: 1px solid #ddd;
7
+ }
8
+
9
+ .image--primary {
10
+ background-color: #e3f2fd;
11
+ border-color: #1e88e5;
12
+ }
13
+
14
+ .image--secondary {
15
+ background-color: #fff;
16
+ border-color: #ccc;
17
+ }
18
+
19
+ .image--small {
20
+ padding: 8px;
21
+ }
22
+
23
+ .image--medium {
24
+ padding: 16px;
25
+ }
26
+
27
+ .image--large {
28
+ padding: 32px;
29
+ }
@@ -0,0 +1,41 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './Image.css';
5
+
6
+ /**
7
+ * Image component for user interaction
8
+ */
9
+ export const Image = ({ primary, size, children, ...props }) => {
10
+ const mode = primary ? 'image--primary' : 'image--secondary';
11
+ return (
12
+ <div
13
+ className={['image', `image--${size}`, mode].join(' ')}
14
+ {...props}
15
+ >
16
+ {children}
17
+ </div>
18
+ );
19
+ };
20
+
21
+ Image.propTypes = {
22
+ /**
23
+ * Is this the primary style for the component?
24
+ */
25
+ primary: PropTypes.bool,
26
+ /**
27
+ * Size of the component
28
+ */
29
+ size: PropTypes.oneOf(['small', 'medium', 'large']),
30
+ /**
31
+ * Content to be rendered inside the component
32
+ */
33
+ children: PropTypes.node.isRequired,
34
+ };
35
+
36
+ Image.defaultProps = {
37
+ primary: false,
38
+ size: 'medium',
39
+ };
40
+
41
+ export default Image;
@@ -0,0 +1,41 @@
1
+
2
+ import { Image } from './Image';
3
+
4
+ // Storybook configuration for Image component
5
+ export default {
6
+ title: 'Atoms/Media/Image',
7
+ component: Image,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ argTypes: {
12
+ children: { control: 'text' },
13
+ },
14
+ };
15
+
16
+ export const Primary = {
17
+ args: {
18
+ primary: true,
19
+ children: 'This is a primary Image',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ children: 'This is a secondary Image',
26
+ },
27
+ };
28
+
29
+ export const Large = {
30
+ args: {
31
+ size: 'large',
32
+ children: 'This is a large Image',
33
+ },
34
+ };
35
+
36
+ export const Small = {
37
+ args: {
38
+ size: 'small',
39
+ children: 'This is a small Image',
40
+ },
41
+ };
@@ -0,0 +1,29 @@
1
+
2
+ .label {
3
+ padding: 16px;
4
+ border-radius: 8px;
5
+ background-color: #f0f0f0;
6
+ border: 1px solid #ddd;
7
+ }
8
+
9
+ .label--primary {
10
+ background-color: #e3f2fd;
11
+ border-color: #1e88e5;
12
+ }
13
+
14
+ .label--secondary {
15
+ background-color: #fff;
16
+ border-color: #ccc;
17
+ }
18
+
19
+ .label--small {
20
+ padding: 8px;
21
+ }
22
+
23
+ .label--medium {
24
+ padding: 16px;
25
+ }
26
+
27
+ .label--large {
28
+ padding: 32px;
29
+ }
@@ -0,0 +1,41 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './Label.css';
5
+
6
+ /**
7
+ * Label component for user interaction
8
+ */
9
+ export const Label = ({ primary, size, children, ...props }) => {
10
+ const mode = primary ? 'label--primary' : 'label--secondary';
11
+ return (
12
+ <div
13
+ className={['label', `label--${size}`, mode].join(' ')}
14
+ {...props}
15
+ >
16
+ {children}
17
+ </div>
18
+ );
19
+ };
20
+
21
+ Label.propTypes = {
22
+ /**
23
+ * Is this the primary style for the component?
24
+ */
25
+ primary: PropTypes.bool,
26
+ /**
27
+ * Size of the component
28
+ */
29
+ size: PropTypes.oneOf(['small', 'medium', 'large']),
30
+ /**
31
+ * Content to be rendered inside the component
32
+ */
33
+ children: PropTypes.node.isRequired,
34
+ };
35
+
36
+ Label.defaultProps = {
37
+ primary: false,
38
+ size: 'medium',
39
+ };
40
+
41
+ export default Label;
@@ -0,0 +1,41 @@
1
+
2
+ import { Label } from './Label';
3
+
4
+ // Storybook configuration for Label component
5
+ export default {
6
+ title: 'Atoms/Text/Label',
7
+ component: Label,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ argTypes: {
12
+ children: { control: 'text' },
13
+ },
14
+ };
15
+
16
+ export const Primary = {
17
+ args: {
18
+ primary: true,
19
+ children: 'This is a primary Label',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ children: 'This is a secondary Label',
26
+ },
27
+ };
28
+
29
+ export const Large = {
30
+ args: {
31
+ size: 'large',
32
+ children: 'This is a large Label',
33
+ },
34
+ };
35
+
36
+ export const Small = {
37
+ args: {
38
+ size: 'small',
39
+ children: 'This is a small Label',
40
+ },
41
+ };
@@ -0,0 +1,29 @@
1
+
2
+ .link {
3
+ padding: 16px;
4
+ border-radius: 8px;
5
+ background-color: #f0f0f0;
6
+ border: 1px solid #ddd;
7
+ }
8
+
9
+ .link--primary {
10
+ background-color: #e3f2fd;
11
+ border-color: #1e88e5;
12
+ }
13
+
14
+ .link--secondary {
15
+ background-color: #fff;
16
+ border-color: #ccc;
17
+ }
18
+
19
+ .link--small {
20
+ padding: 8px;
21
+ }
22
+
23
+ .link--medium {
24
+ padding: 16px;
25
+ }
26
+
27
+ .link--large {
28
+ padding: 32px;
29
+ }
@@ -0,0 +1,41 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './Link.css';
5
+
6
+ /**
7
+ * Link component for user interaction
8
+ */
9
+ export const Link = ({ primary, size, children, ...props }) => {
10
+ const mode = primary ? 'link--primary' : 'link--secondary';
11
+ return (
12
+ <div
13
+ className={['link', `link--${size}`, mode].join(' ')}
14
+ {...props}
15
+ >
16
+ {children}
17
+ </div>
18
+ );
19
+ };
20
+
21
+ Link.propTypes = {
22
+ /**
23
+ * Is this the primary style for the component?
24
+ */
25
+ primary: PropTypes.bool,
26
+ /**
27
+ * Size of the component
28
+ */
29
+ size: PropTypes.oneOf(['small', 'medium', 'large']),
30
+ /**
31
+ * Content to be rendered inside the component
32
+ */
33
+ children: PropTypes.node.isRequired,
34
+ };
35
+
36
+ Link.defaultProps = {
37
+ primary: false,
38
+ size: 'medium',
39
+ };
40
+
41
+ export default Link;
@@ -0,0 +1,41 @@
1
+
2
+ import { Link } from './Link';
3
+
4
+ // Storybook configuration for Link component
5
+ export default {
6
+ title: 'Atoms/Interactive/Link',
7
+ component: Link,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ argTypes: {
12
+ children: { control: 'text' },
13
+ },
14
+ };
15
+
16
+ export const Primary = {
17
+ args: {
18
+ primary: true,
19
+ children: 'This is a primary Link',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ children: 'This is a secondary Link',
26
+ },
27
+ };
28
+
29
+ export const Large = {
30
+ args: {
31
+ size: 'large',
32
+ children: 'This is a large Link',
33
+ },
34
+ };
35
+
36
+ export const Small = {
37
+ args: {
38
+ size: 'small',
39
+ children: 'This is a small Link',
40
+ },
41
+ };
@@ -0,0 +1,29 @@
1
+
2
+ .loader {
3
+ padding: 16px;
4
+ border-radius: 8px;
5
+ background-color: #f0f0f0;
6
+ border: 1px solid #ddd;
7
+ }
8
+
9
+ .loader--primary {
10
+ background-color: #e3f2fd;
11
+ border-color: #1e88e5;
12
+ }
13
+
14
+ .loader--secondary {
15
+ background-color: #fff;
16
+ border-color: #ccc;
17
+ }
18
+
19
+ .loader--small {
20
+ padding: 8px;
21
+ }
22
+
23
+ .loader--medium {
24
+ padding: 16px;
25
+ }
26
+
27
+ .loader--large {
28
+ padding: 32px;
29
+ }
@@ -0,0 +1,41 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './Loader.css';
5
+
6
+ /**
7
+ * Loader component for user interaction
8
+ */
9
+ export const Loader = ({ primary, size, children, ...props }) => {
10
+ const mode = primary ? 'loader--primary' : 'loader--secondary';
11
+ return (
12
+ <div
13
+ className={['loader', `loader--${size}`, mode].join(' ')}
14
+ {...props}
15
+ >
16
+ {children}
17
+ </div>
18
+ );
19
+ };
20
+
21
+ Loader.propTypes = {
22
+ /**
23
+ * Is this the primary style for the component?
24
+ */
25
+ primary: PropTypes.bool,
26
+ /**
27
+ * Size of the component
28
+ */
29
+ size: PropTypes.oneOf(['small', 'medium', 'large']),
30
+ /**
31
+ * Content to be rendered inside the component
32
+ */
33
+ children: PropTypes.node.isRequired,
34
+ };
35
+
36
+ Loader.defaultProps = {
37
+ primary: false,
38
+ size: 'medium',
39
+ };
40
+
41
+ export default Loader;