this.gui 1.0.14 → 1.0.16

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 (259) hide show
  1. package/README.md +0 -39
  2. package/dist/style.css +1 -1
  3. package/dist/this-gui.es.js +3751 -1882
  4. package/dist/this-gui.umd.js +34 -22
  5. package/package.json +14 -12
  6. package/src/App.jsx +50 -21
  7. package/src/SiteBuilder.jsx +39 -0
  8. package/src/index.mdx +10 -0
  9. package/src/main.jsx +11 -14
  10. package/src/scripts/postinstall.js +28 -31
  11. package/src/scripts/verifyLayouts.js +175 -0
  12. package/src/scripts/verifyTemplates.js +154 -0
  13. package/src/stories/Atoms/Alert/Alert.css +196 -14
  14. package/src/stories/Atoms/Alert/Alert.jsx +43 -28
  15. package/src/stories/Atoms/Alert/Alert.stories.jsx +154 -28
  16. package/src/stories/Atoms/Audio/Audio.css +246 -16
  17. package/src/stories/Atoms/Audio/Audio.jsx +204 -29
  18. package/src/stories/Atoms/Audio/Audio.stories.jsx +178 -28
  19. package/src/stories/Atoms/Badge/Badge.css +234 -15
  20. package/src/stories/Atoms/Badge/Badge.jsx +44 -31
  21. package/src/stories/Atoms/Badge/Badge.stories.jsx +108 -29
  22. package/src/stories/Atoms/Button/Button.css +106 -45
  23. package/src/stories/Atoms/Button/Button.jsx +31 -82
  24. package/src/stories/Atoms/Button/Button.stories.jsx +170 -40
  25. package/src/stories/Atoms/Caption/Caption.css +156 -16
  26. package/src/stories/Atoms/Caption/Caption.jsx +62 -31
  27. package/src/stories/Atoms/Caption/Caption.stories.jsx +194 -28
  28. package/src/stories/Atoms/Checkbox/Checkbox.css +168 -15
  29. package/src/stories/Atoms/Checkbox/Checkbox.jsx +73 -31
  30. package/src/stories/Atoms/Checkbox/Checkbox.stories.jsx +98 -27
  31. package/src/stories/Atoms/Container/Container.css +75 -15
  32. package/src/stories/Atoms/Container/Container.jsx +41 -28
  33. package/src/stories/Atoms/Container/Container.stories.jsx +92 -29
  34. package/src/stories/Atoms/Divider/Divider.css +131 -13
  35. package/src/stories/Atoms/Divider/Divider.jsx +54 -33
  36. package/src/stories/Atoms/Divider/Divider.stories.jsx +93 -29
  37. package/src/stories/Atoms/Heading/Heading.css +99 -16
  38. package/src/stories/Atoms/Heading/Heading.jsx +57 -29
  39. package/src/stories/Atoms/Heading/Heading.stories.jsx +117 -28
  40. package/src/stories/Atoms/Icon/Icon.css +219 -27
  41. package/src/stories/Atoms/Icon/Icon.jsx +67 -38
  42. package/src/stories/Atoms/Icon/Icon.stories.jsx +156 -51
  43. package/src/stories/Atoms/Image/Image.css +231 -15
  44. package/src/stories/Atoms/Image/Image.jsx +166 -32
  45. package/src/stories/Atoms/Image/Image.stories.jsx +319 -28
  46. package/src/stories/Atoms/Label/Label.css +158 -16
  47. package/src/stories/Atoms/Label/Label.jsx +61 -31
  48. package/src/stories/Atoms/Label/Label.stories.jsx +167 -28
  49. package/src/stories/Atoms/Link/Link.css +58 -16
  50. package/src/stories/Atoms/Link/Link.jsx +73 -32
  51. package/src/stories/Atoms/Link/Link.stories.jsx +141 -29
  52. package/src/stories/Atoms/Loader/Loader.css +93 -16
  53. package/src/stories/Atoms/Loader/Loader.jsx +47 -30
  54. package/src/stories/Atoms/Loader/Loader.stories.jsx +86 -28
  55. package/src/stories/Atoms/Logo/Logo.css +94 -0
  56. package/src/stories/Atoms/Logo/Logo.jsx +53 -0
  57. package/src/stories/Atoms/Logo/Logo.stories.jsx +120 -0
  58. package/src/stories/Atoms/Paragraph/Paragraph.css +167 -16
  59. package/src/stories/Atoms/Paragraph/Paragraph.jsx +67 -31
  60. package/src/stories/Atoms/Paragraph/Paragraph.stories.jsx +130 -28
  61. package/src/stories/Atoms/ProgressBar/ProgressBar.css +115 -17
  62. package/src/stories/Atoms/ProgressBar/ProgressBar.jsx +30 -31
  63. package/src/stories/Atoms/ProgressBar/ProgressBar.stories.jsx +72 -27
  64. package/src/stories/Atoms/RadioButton/RadioButton.css +118 -17
  65. package/src/stories/Atoms/RadioButton/RadioButton.jsx +77 -31
  66. package/src/stories/Atoms/RadioButton/RadioButton.stories.jsx +99 -27
  67. package/src/stories/Atoms/Range/Range.css +169 -0
  68. package/src/stories/Atoms/Range/Range.jsx +87 -0
  69. package/src/stories/Atoms/Range/Range.stories.jsx +110 -0
  70. package/src/stories/Atoms/Select/Select.css +74 -16
  71. package/src/stories/Atoms/Select/Select.jsx +62 -30
  72. package/src/stories/Atoms/Select/Select.stories.jsx +95 -27
  73. package/src/stories/Atoms/Slider/Slider.css +77 -16
  74. package/src/stories/Atoms/Slider/Slider.jsx +119 -31
  75. package/src/stories/Atoms/Slider/Slider.stories.jsx +77 -28
  76. package/src/stories/Atoms/Snackbar/Snackbar.css +297 -13
  77. package/src/stories/Atoms/Snackbar/Snackbar.jsx +62 -31
  78. package/src/stories/Atoms/Snackbar/Snackbar.stories.jsx +63 -26
  79. package/src/stories/Atoms/Spacer/Spacer.css +101 -16
  80. package/src/stories/Atoms/Spacer/Spacer.jsx +26 -32
  81. package/src/stories/Atoms/Spacer/Spacer.stories.jsx +50 -30
  82. package/src/stories/Atoms/Spinner/Spinner.css +97 -16
  83. package/src/stories/Atoms/Spinner/Spinner.jsx +50 -26
  84. package/src/stories/Atoms/Spinner/Spinner.stories.jsx +47 -30
  85. package/src/stories/Atoms/Tag/Tag.css +97 -14
  86. package/src/stories/Atoms/Tag/Tag.jsx +58 -24
  87. package/src/stories/Atoms/Tag/Tag.stories.jsx +55 -29
  88. package/src/stories/Atoms/TextArea/TextArea.css +84 -15
  89. package/src/stories/Atoms/TextArea/TextArea.jsx +107 -31
  90. package/src/stories/Atoms/TextArea/TextArea.stories.jsx +24 -30
  91. package/src/stories/Atoms/TextInput/TextInput.css +89 -17
  92. package/src/stories/Atoms/TextInput/TextInput.jsx +118 -27
  93. package/src/stories/Atoms/TextInput/TextInput.stories.jsx +52 -25
  94. package/src/stories/Atoms/Toggle/Toggle.css +105 -17
  95. package/src/stories/Atoms/Toggle/Toggle.jsx +55 -28
  96. package/src/stories/Atoms/Toggle/Toggle.stories.jsx +23 -30
  97. package/src/stories/Atoms/Tooltip/Tooltip.css +367 -14
  98. package/src/stories/Atoms/Tooltip/Tooltip.jsx +32 -28
  99. package/src/stories/Atoms/Tooltip/Tooltip.stories.jsx +41 -31
  100. package/src/stories/Atoms/Video/Video.css +27 -18
  101. package/src/stories/Atoms/Video/Video.jsx +65 -29
  102. package/src/stories/Atoms/Video/Video.stories.jsx +29 -30
  103. package/src/stories/Atoms/index.js +5 -2
  104. package/src/stories/Atoms/meta_Atoms.js +3 -1
  105. package/src/stories/Layouts/Accordion/Accordion.css +16 -0
  106. package/src/stories/Layouts/Accordion/Accordion.jsx +31 -0
  107. package/src/stories/Layouts/Accordion/Accordion.stories.jsx +28 -0
  108. package/src/stories/Layouts/DropdownMenu/DropdownMenu.css +16 -0
  109. package/src/stories/Layouts/DropdownMenu/DropdownMenu.jsx +31 -0
  110. package/src/stories/Layouts/DropdownMenu/DropdownMenu.stories.jsx +28 -0
  111. package/src/stories/Layouts/Flexbox/Flexbox.css +16 -0
  112. package/src/stories/Layouts/Flexbox/Flexbox.jsx +11 -0
  113. package/src/stories/Layouts/Flexbox/Flexbox.stories.jsx +28 -0
  114. package/src/stories/Layouts/Footer/Footer.css +16 -0
  115. package/src/stories/Layouts/Footer/Footer.jsx +31 -0
  116. package/src/stories/Layouts/Footer/Footer.stories.jsx +28 -0
  117. package/src/stories/Layouts/Grid/Grid.jsx +2 -4
  118. package/src/stories/Layouts/Grid/Grid.stories.jsx +20 -18
  119. package/src/stories/Layouts/Header/Header.css +16 -0
  120. package/src/stories/Layouts/Header/Header.jsx +31 -0
  121. package/src/stories/Layouts/Header/Header.stories.jsx +28 -0
  122. package/src/stories/Layouts/HeroBanner/HeroBanner.css +16 -0
  123. package/src/stories/Layouts/HeroBanner/HeroBanner.jsx +31 -0
  124. package/src/stories/Layouts/HeroBanner/HeroBanner.stories.jsx +28 -0
  125. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.css +16 -0
  126. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.jsx +31 -0
  127. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.stories.jsx +28 -0
  128. package/src/stories/Layouts/Pagination/Pagination.css +16 -0
  129. package/src/stories/Layouts/Pagination/Pagination.jsx +31 -0
  130. package/src/stories/Layouts/Pagination/Pagination.stories.jsx +28 -0
  131. package/src/stories/Layouts/Section/Section.css +16 -0
  132. package/src/stories/Layouts/Section/Section.jsx +31 -0
  133. package/src/stories/Layouts/Section/Section.stories.jsx +28 -0
  134. package/src/stories/Layouts/Sidebar/Sidebar.css +16 -0
  135. package/src/stories/Layouts/Sidebar/Sidebar.jsx +71 -0
  136. package/src/stories/Layouts/Sidebar/Sidebar.stories.jsx +28 -0
  137. package/src/stories/Layouts/Tabs/Tabs.css +16 -0
  138. package/src/stories/Layouts/Tabs/Tabs.jsx +31 -0
  139. package/src/stories/Layouts/Tabs/Tabs.stories.jsx +28 -0
  140. package/src/stories/Layouts/index.js +31 -0
  141. package/src/stories/Layouts/meta_Layouts.js +31 -0
  142. package/src/stories/Molecules/Navbar/Navbar.css +63 -59
  143. package/src/stories/Molecules/Navbar/Navbar.jsx +43 -48
  144. package/src/stories/Molecules/Navbar/Navbar.stories.jsx +58 -8
  145. package/src/stories/Molecules/SearchBar/SearchBar.css +66 -1
  146. package/src/stories/Molecules/SearchBar/SearchBar.jsx +59 -11
  147. package/src/stories/Molecules/SearchBar/SearchBar.stories.jsx +16 -7
  148. package/src/stories/Molecules/SelectTheme/SelectTheme.jsx +16 -38
  149. package/src/stories/Molecules/SelectTheme/SelectTheme.stories.jsx +1 -2
  150. package/src/stories/Molecules/Sidebar/Sidebar.css +65 -2
  151. package/src/stories/Molecules/Sidebar/Sidebar.jsx +66 -11
  152. package/src/stories/Molecules/Sidebar/Sidebar.stories.jsx +20 -5
  153. package/src/stories/Templates/AdminDashboard/AdminDashboard.css +7 -0
  154. package/src/stories/Templates/AdminDashboard/AdminDashboard.jsx +24 -0
  155. package/src/stories/Templates/AdminDashboard/AdminDashboard.stories.jsx +20 -0
  156. package/src/stories/Templates/CallToAction/CallToAction.css +7 -0
  157. package/src/stories/Templates/CallToAction/CallToAction.jsx +24 -0
  158. package/src/stories/Templates/CallToAction/CallToAction.stories.jsx +20 -0
  159. package/src/stories/Templates/FeaturesList/FeaturesList.css +7 -0
  160. package/src/stories/Templates/FeaturesList/FeaturesList.jsx +24 -0
  161. package/src/stories/Templates/FeaturesList/FeaturesList.stories.jsx +20 -0
  162. package/src/stories/Templates/FormSection/FormSection.css +7 -0
  163. package/src/stories/Templates/FormSection/FormSection.jsx +24 -0
  164. package/src/stories/Templates/FormSection/FormSection.stories.jsx +20 -0
  165. package/src/stories/Templates/HeroSection/HeroSection.css +7 -0
  166. package/src/stories/Templates/HeroSection/HeroSection.jsx +24 -0
  167. package/src/stories/Templates/HeroSection/HeroSection.stories.jsx +20 -0
  168. package/src/stories/Templates/LocationInfo/LocationInfo.css +7 -0
  169. package/src/stories/Templates/LocationInfo/LocationInfo.jsx +24 -0
  170. package/src/stories/Templates/LocationInfo/LocationInfo.stories.jsx +20 -0
  171. package/src/stories/Templates/ProductPage/ProductPage.css +7 -0
  172. package/src/stories/Templates/ProductPage/ProductPage.jsx +24 -0
  173. package/src/stories/Templates/ProductPage/ProductPage.stories.jsx +20 -0
  174. package/src/stories/Templates/RegistrationPage/RegistrationPage.css +7 -0
  175. package/src/stories/Templates/RegistrationPage/RegistrationPage.jsx +24 -0
  176. package/src/stories/Templates/RegistrationPage/RegistrationPage.stories.jsx +20 -0
  177. package/src/stories/Templates/ShoppingCart/ShoppingCart.css +7 -0
  178. package/src/stories/Templates/ShoppingCart/ShoppingCart.jsx +24 -0
  179. package/src/stories/Templates/ShoppingCart/ShoppingCart.stories.jsx +20 -0
  180. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.css +7 -0
  181. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.jsx +24 -0
  182. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.stories.jsx +20 -0
  183. package/src/stories/Templates/SignInPage/SignInPage.css +7 -0
  184. package/src/stories/Templates/SignInPage/SignInPage.jsx +24 -0
  185. package/src/stories/Templates/SignInPage/SignInPage.stories.jsx +20 -0
  186. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.css +7 -0
  187. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.jsx +24 -0
  188. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.stories.jsx +20 -0
  189. package/src/stories/Templates/Testimonials/Testimonials.css +7 -0
  190. package/src/stories/Templates/Testimonials/Testimonials.jsx +24 -0
  191. package/src/stories/Templates/Testimonials/Testimonials.stories.jsx +20 -0
  192. package/src/stories/Templates/index.js +33 -0
  193. package/src/stories/Templates/{Templates.js → meta_Templates.js} +3 -1
  194. package/src/stories/assets/logo.png +0 -0
  195. package/src/stories/assets/logo.svg +106 -0
  196. package/src/stories/assets/test.svg +3 -0
  197. package/src/themes/README.md +301 -0
  198. package/src/themes/ThemeProvider.jsx +47 -22
  199. package/src/themes/styles/dracula/dark.css +0 -0
  200. package/src/themes/styles/dracula/light.css +0 -0
  201. package/src/themes/styles/github/dark.css +0 -0
  202. package/src/themes/styles/github/light.css +0 -0
  203. package/src/themes/styles/neurons/dark.css +247 -0
  204. package/src/themes/styles/neurons/light.css +280 -0
  205. package/dist/github-3688a83a.js +0 -5
  206. package/dist/gothic-94a7ecd6.js +0 -5
  207. package/dist/newsprint-32bf94d9.js +0 -5
  208. package/dist/night-4a954853.js +0 -5
  209. package/dist/pixyll-94de4610.js +0 -5
  210. package/dist/whitey-db68723e.js +0 -5
  211. package/src/MDXEditor.jsx +0 -32
  212. package/src/stories/Atoms/RangeInput/RangeInput.css +0 -29
  213. package/src/stories/Atoms/RangeInput/RangeInput.jsx +0 -41
  214. package/src/stories/Atoms/RangeInput/RangeInput.stories.jsx +0 -41
  215. package/src/stories/Components.md +0 -189
  216. package/src/stories/Layouts/Layout.js +0 -28
  217. package/src/styles/Header.modules.css +0 -32
  218. package/src/styles/global.css +0 -59
  219. package/src/themes/Themes.js +0 -44
  220. package/src/themes/dark.js +0 -22
  221. package/src/themes/light.js +0 -22
  222. package/src/themes/typ/Readme.md +0 -4
  223. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-700.woff2 +0 -0
  224. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-700italic.woff2 +0 -0
  225. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-italic.woff2 +0 -0
  226. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-regular.woff2 +0 -0
  227. package/src/themes/typ/github.css +0 -416
  228. package/src/themes/typ/gothic/GUST e-foundry License.txt +0 -29
  229. package/src/themes/typ/gothic/didact-gothic-c-ext.woff2 +0 -0
  230. package/src/themes/typ/gothic/didact-gothic-c.woff2 +0 -0
  231. package/src/themes/typ/gothic/texgyreadventor-bold.woff +0 -0
  232. package/src/themes/typ/gothic/texgyreadventor-bolditalic.woff +0 -0
  233. package/src/themes/typ/gothic/texgyreadventor-italic.woff +0 -0
  234. package/src/themes/typ/gothic/texgyreadventor-regular.woff +0 -0
  235. package/src/themes/typ/gothic.css +0 -410
  236. package/src/themes/typ/newsprint/pt-serif-v11-latin-700.woff2 +0 -0
  237. package/src/themes/typ/newsprint/pt-serif-v11-latin-700italic.woff2 +0 -0
  238. package/src/themes/typ/newsprint/pt-serif-v11-latin-italic.woff2 +0 -0
  239. package/src/themes/typ/newsprint/pt-serif-v11-latin-regular.woff2 +0 -0
  240. package/src/themes/typ/newsprint.css +0 -622
  241. package/src/themes/typ/night/codeblock.dark.css +0 -113
  242. package/src/themes/typ/night/credit.html +0 -1
  243. package/src/themes/typ/night/cursor.png +0 -0
  244. package/src/themes/typ/night/cursor@2x.png +0 -0
  245. package/src/themes/typ/night/mermaid.dark.css +0 -7
  246. package/src/themes/typ/night/sourcemode.dark.css +0 -38
  247. package/src/themes/typ/night.css +0 -1032
  248. package/src/themes/typ/pixyll/lato-v14-latin-300.woff +0 -0
  249. package/src/themes/typ/pixyll/lato-v14-latin-300italic.woff +0 -0
  250. package/src/themes/typ/pixyll/lato-v14-latin-900.woff +0 -0
  251. package/src/themes/typ/pixyll/lato-v14-latin-900italic.woff +0 -0
  252. package/src/themes/typ/pixyll/merriweather-v19-latin-300.woff +0 -0
  253. package/src/themes/typ/pixyll/merriweather-v19-latin-300italic.woff +0 -0
  254. package/src/themes/typ/pixyll/merriweather-v19-latin-700.woff +0 -0
  255. package/src/themes/typ/pixyll/merriweather-v19-latin-700italic.woff +0 -0
  256. package/src/themes/typ/pixyll.css +0 -528
  257. package/src/themes/typ/whitey.css +0 -299
  258. /package/src/stories/Molecules/{Molecules.js → meta_Molecules.js} +0 -0
  259. /package/src/stories/Organisms/{Organisms.js → meta_Organisms.js} +0 -0
@@ -1,29 +1,106 @@
1
+ /* src/stories/Atoms/Loader/Loader.css */
1
2
 
2
3
  .loader {
3
- padding: 16px;
4
- border-radius: 8px;
5
- background-color: #f0f0f0;
6
- border: 1px solid #ddd;
4
+ display: inline-flex;
5
+ align-items: center;
6
+ justify-content: center;
7
7
  }
8
8
 
9
- .loader--primary {
10
- background-color: #e3f2fd;
11
- border-color: #1e88e5;
9
+ .loader--spinner .loader__spinner {
10
+ border: 4px solid var(--loader-background-color, #f3f3f3);
11
+ border-top: 4px solid var(--loader-color, #1F877D);
12
+ border-radius: 50%;
13
+ width: var(--loader-size, 40px);
14
+ height: var(--loader-size, 40px);
15
+ animation: spin 1s linear infinite;
12
16
  }
13
17
 
14
- .loader--secondary {
15
- background-color: #fff;
16
- border-color: #ccc;
18
+ .loader--dots .loader__dots {
19
+ display: flex;
20
+ gap: 8px;
17
21
  }
18
22
 
19
- .loader--small {
20
- padding: 8px;
23
+ .loader--dots .loader__dot {
24
+ width: 12px;
25
+ height: 12px;
26
+ background-color: var(--loader-color, #1F877D);
27
+ border-radius: 50%;
28
+ animation: bounce 1.4s infinite ease-in-out both;
21
29
  }
22
30
 
23
- .loader--medium {
24
- padding: 16px;
31
+ .loader--dots .loader__dot:nth-child(1) {
32
+ animation-delay: -0.32s;
25
33
  }
26
34
 
27
- .loader--large {
28
- padding: 32px;
35
+ .loader--dots .loader__dot:nth-child(2) {
36
+ animation-delay: -0.16s;
37
+ }
38
+
39
+ .loader--bars .loader__bars {
40
+ display: flex;
41
+ gap: 4px;
42
+ }
43
+
44
+ .loader--bars .loader__bar {
45
+ width: 4px;
46
+ height: 20px;
47
+ background-color: var(--loader-color, #1F877D);
48
+ animation: stretch 1.2s infinite ease-in-out;
49
+ }
50
+
51
+ .loader--bars .loader__bar:nth-child(1) {
52
+ animation-delay: -0.24s;
53
+ }
54
+
55
+ .loader--bars .loader__bar:nth-child(2) {
56
+ animation-delay: -0.12s;
57
+ }
58
+
59
+ .loader--size-sm .loader__spinner {
60
+ width: 20px;
61
+ height: 20px;
62
+ border-width: 2px;
63
+ }
64
+
65
+ .loader--size-md .loader__spinner {
66
+ width: 40px;
67
+ height: 40px;
68
+ border-width: 4px;
69
+ }
70
+
71
+ .loader--size-lg .loader__spinner {
72
+ width: 60px;
73
+ height: 60px;
74
+ border-width: 6px;
75
+ }
76
+
77
+ .loader--custom {
78
+ --loader-color: var(--loader-color, #1F877D);
79
+ }
80
+
81
+ @keyframes spin {
82
+ to { transform: rotate(360deg); }
83
+ }
84
+
85
+ @keyframes bounce {
86
+ 0%, 80%, 100% { transform: scale(0); }
87
+ 40% { transform: scale(1); }
88
+ }
89
+
90
+ @keyframes stretch {
91
+ 0%, 40%, 100% { transform: scaleY(0.4); }
92
+ 20% { transform: scaleY(1); }
93
+ }
94
+
95
+ /* Color Variants */
96
+ .loader--primary .loader__spinner,
97
+ .loader--primary .loader__dot,
98
+ .loader--primary .loader__bar {
99
+ --loader-color: #1F877D;
100
+ }
101
+
102
+ .loader--secondary .loader__spinner,
103
+ .loader--secondary .loader__dot,
104
+ .loader--secondary .loader__bar {
105
+ --loader-color: #39a182;
29
106
  }
@@ -1,41 +1,58 @@
1
-
1
+ // src/stories/Atoms/Loader/Loader.jsx
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
+ import classNames from 'classnames';
4
5
  import './Loader.css';
5
6
 
6
- /**
7
- * Loader component for user interaction
8
- */
9
- export const Loader = ({ primary, size, children, ...props }) => {
10
- const mode = primary ? 'loader--primary' : 'loader--secondary';
7
+ export const Loader = ({
8
+ variant = 'spinner', // 'spinner', 'dots', 'bars'
9
+ color = 'primary', // 'primary', 'secondary', 'custom'
10
+ size = 'md', // 'sm', 'md', 'lg'
11
+ customColor,
12
+ className = '',
13
+ style = {},
14
+ ...props
15
+ }) => {
16
+ const loaderClasses = classNames('loader', className, {
17
+ [`loader--${variant}`]: variant,
18
+ [`loader--${color}`]: color && color !== 'custom',
19
+ [`loader--size-${size}`]: size,
20
+ });
21
+
22
+ const loaderStyle = color === 'custom' && customColor ? { ...style, '--loader-color': customColor } : style;
23
+
11
24
  return (
12
- <div
13
- className={['loader', `loader--${size}`, mode].join(' ')}
14
- {...props}
15
- >
16
- {children}
25
+ <div className={loaderClasses} style={loaderStyle} {...props}>
26
+ {variant === 'spinner' && <div className="loader__spinner"></div>}
27
+ {variant === 'dots' && (
28
+ <div className="loader__dots">
29
+ <div className="loader__dot"></div>
30
+ <div className="loader__dot"></div>
31
+ <div className="loader__dot"></div>
32
+ </div>
33
+ )}
34
+ {variant === 'bars' && (
35
+ <div className="loader__bars">
36
+ <div className="loader__bar"></div>
37
+ <div className="loader__bar"></div>
38
+ <div className="loader__bar"></div>
39
+ </div>
40
+ )}
17
41
  </div>
18
42
  );
19
43
  };
20
44
 
21
45
  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,
46
+ /** Variant of the loader */
47
+ variant: PropTypes.oneOf(['spinner', 'dots', 'bars']),
48
+ /** Color of the loader */
49
+ color: PropTypes.oneOf(['primary', 'secondary', 'custom']),
50
+ /** Custom color when color is set to 'custom' */
51
+ customColor: PropTypes.string,
52
+ /** Size of the loader */
53
+ size: PropTypes.oneOf(['sm', 'md', 'lg']),
54
+ /** Additional CSS classes */
55
+ className: PropTypes.string,
56
+ /** Inline styles */
57
+ style: PropTypes.object,
34
58
  };
35
-
36
- Loader.defaultProps = {
37
- primary: false,
38
- size: 'medium',
39
- };
40
-
41
- export default Loader;
@@ -1,41 +1,99 @@
1
-
1
+ // src/stories/Atoms/Loader/Loader.stories.jsx
2
+ import React from 'react';
2
3
  import { Loader } from './Loader';
4
+ import './Loader.css';
3
5
 
4
- // Storybook configuration for Loader component
5
6
  export default {
6
7
  title: 'Atoms/Feedback/Loader',
7
8
  component: Loader,
8
- parameters: {
9
- layout: 'centered',
10
- },
11
9
  argTypes: {
12
- children: { control: 'text' },
10
+ variant: {
11
+ control: {
12
+ type: 'select',
13
+ options: ['spinner', 'dots', 'bars'],
14
+ },
15
+ description: 'Variant of the loader.',
16
+ },
17
+ color: {
18
+ control: {
19
+ type: 'select',
20
+ options: ['primary', 'secondary', 'custom'],
21
+ },
22
+ description: 'Color of the loader.',
23
+ },
24
+ customColor: {
25
+ control: 'color',
26
+ description: 'Custom color when color is set to "custom".',
27
+ },
28
+ size: {
29
+ control: {
30
+ type: 'select',
31
+ options: ['sm', 'md', 'lg'],
32
+ },
33
+ description: 'Size of the loader.',
34
+ },
35
+ className: {
36
+ control: 'text',
37
+ description: 'Additional CSS classes.',
38
+ },
39
+ style: {
40
+ control: 'object',
41
+ description: 'Inline styles.',
42
+ },
13
43
  },
14
44
  };
15
45
 
16
- export const Primary = {
17
- args: {
18
- primary: true,
19
- children: 'This is a primary Loader',
20
- },
21
- };
46
+ /**
47
+ * Spinner - Primary - Medium
48
+ */
49
+ export const SpinnerPrimaryMedium = () => (
50
+ <Loader variant="spinner" color="primary" size="md" />
51
+ );
22
52
 
23
- export const Secondary = {
24
- args: {
25
- children: 'This is a secondary Loader',
26
- },
27
- };
53
+ /**
54
+ * Spinner - Secondary - Large
55
+ */
56
+ export const SpinnerSecondaryLarge = () => (
57
+ <Loader variant="spinner" color="secondary" size="lg" />
58
+ );
28
59
 
29
- export const Large = {
30
- args: {
31
- size: 'large',
32
- children: 'This is a large Loader',
33
- },
34
- };
60
+ /**
61
+ * Dots - Primary - Small
62
+ */
63
+ export const DotsPrimarySmall = () => (
64
+ <Loader variant="dots" color="primary" size="sm" />
65
+ );
35
66
 
36
- export const Small = {
37
- args: {
38
- size: 'small',
39
- children: 'This is a small Loader',
40
- },
67
+ /**
68
+ * Dots - Secondary - Medium
69
+ */
70
+ export const DotsSecondaryMedium = () => (
71
+ <Loader variant="dots" color="secondary" size="md" />
72
+ );
73
+
74
+ /**
75
+ * Bars - Primary - Medium
76
+ */
77
+ export const BarsPrimaryMedium = () => (
78
+ <Loader variant="bars" color="primary" size="md" />
79
+ );
80
+
81
+ /**
82
+ * Bars - Custom Color - Large
83
+ */
84
+ export const BarsCustomLarge = () => (
85
+ <Loader variant="bars" color="custom" customColor="#FF5733" size="lg" />
86
+ );
87
+
88
+ /**
89
+ * Interactive Loader
90
+ */
91
+ const Template = (args) => <Loader {...args} />;
92
+
93
+ export const InteractiveLoader = Template.bind({});
94
+ InteractiveLoader.args = {
95
+ variant: 'spinner',
96
+ color: 'primary',
97
+ size: 'md',
98
+ customColor: '#FF5733',
41
99
  };
@@ -0,0 +1,94 @@
1
+ /* src/stories/Atoms/Logo/Logo.css */
2
+
3
+ .logo {
4
+ display: inline-flex;
5
+ align-items: center;
6
+ justify-content: center;
7
+ }
8
+
9
+ .logo__image {
10
+ display: block;
11
+ width: 100%;
12
+ height: auto;
13
+ }
14
+
15
+ /* Size Variants */
16
+ .logo--size-xs {
17
+ width: 30px;
18
+ height: 30px;
19
+ }
20
+
21
+ .logo--size-sm {
22
+ width: 50px;
23
+ height: 50px;
24
+ }
25
+
26
+ .logo--size-md {
27
+ width: 100px;
28
+ height: 100px;
29
+ }
30
+
31
+ .logo--size-lg {
32
+ width: 150px;
33
+ height: 150px;
34
+ }
35
+
36
+ .logo--size-xl {
37
+ width: 200px;
38
+ height: 200px;
39
+ }
40
+
41
+ /* Shape Variants */
42
+ .logo--shape-normal {
43
+ border-radius: 0;
44
+ }
45
+
46
+ .logo--shape-rounded {
47
+ border-radius: 50%;
48
+ }
49
+
50
+ .logo--shape-squared {
51
+ border-radius: 8px;
52
+ }
53
+
54
+ /* Background Variants */
55
+ .logo--background-none {
56
+ background-color: transparent;
57
+ }
58
+
59
+ .logo--background-palette {
60
+ background-color: var(--palette-background-color, #f0f0f0);
61
+ }
62
+
63
+ .logo--background-custom {
64
+ background-color: var(--logo-background-color, transparent);
65
+ }
66
+
67
+ /* Responsive */
68
+ @media (max-width: 768px) {
69
+ .logo--size-xs {
70
+ width: 20px;
71
+ height: 20px;
72
+ }
73
+
74
+ .logo--size-sm {
75
+ width: 40px;
76
+ height: 40px;
77
+ }
78
+
79
+ .logo--size-md {
80
+ width: 80px;
81
+ height: 80px;
82
+ }
83
+
84
+ .logo--size-lg {
85
+ width: 120px;
86
+ height: 120px;
87
+ }
88
+
89
+ .logo--size-xl {
90
+ width: 160px;
91
+ height: 160px;
92
+ }
93
+ }
94
+
@@ -0,0 +1,53 @@
1
+ // src/stories/Atoms/Logo/Logo.jsx
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import classNames from 'classnames';
5
+ import './Logo.css';
6
+
7
+ export const Logo = ({
8
+ src,
9
+ alt = 'Logo',
10
+ size = 'md', // 'xs', 'sm', 'md', 'lg', 'xl'
11
+ shape = 'normal', // 'normal', 'rounded', 'squared'
12
+ background = 'none', // 'none', 'palette', 'custom'
13
+ customBackgroundColor,
14
+ className = '',
15
+ style = {},
16
+ ...props
17
+ }) => {
18
+ const logoClasses = classNames('logo', className, {
19
+ [`logo--size-${size}`]: size,
20
+ [`logo--shape-${shape}`]: shape,
21
+ [`logo--background-${background}`]: background,
22
+ });
23
+
24
+ const logoStyle =
25
+ background === 'custom' && customBackgroundColor
26
+ ? { ...style, '--logo-background-color': customBackgroundColor }
27
+ : style;
28
+
29
+ return (
30
+ <div className={logoClasses} style={logoStyle} {...props}>
31
+ <img src={src} alt={alt} className="logo__image" />
32
+ </div>
33
+ );
34
+ };
35
+
36
+ Logo.propTypes = {
37
+ /** Source URL or path of the logo image */
38
+ src: PropTypes.string.isRequired,
39
+ /** Alternative text for the logo */
40
+ alt: PropTypes.string,
41
+ /** Size of the logo */
42
+ size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
43
+ /** Shape of the logo */
44
+ shape: PropTypes.oneOf(['normal', 'rounded', 'squared']),
45
+ /** Background option */
46
+ background: PropTypes.oneOf(['none', 'palette', 'custom']),
47
+ /** Custom background color when background is set to 'custom' */
48
+ customBackgroundColor: PropTypes.string,
49
+ /** Additional CSS classes */
50
+ className: PropTypes.string,
51
+ /** Inline styles */
52
+ style: PropTypes.object,
53
+ };
@@ -0,0 +1,120 @@
1
+ // src/stories/Atoms/Logo/Logo.stories.jsx
2
+ import React from 'react';
3
+ import { Logo } from './Logo';
4
+ import './Logo.css';
5
+
6
+ export default {
7
+ title: 'Atoms/Media/Logo',
8
+ component: Logo,
9
+ argTypes: {
10
+ src: {
11
+ control: 'text',
12
+ description: 'Source URL or path of the logo image.',
13
+ },
14
+ alt: {
15
+ control: 'text',
16
+ description: 'Alternative text for the logo.',
17
+ },
18
+ size: {
19
+ control: {
20
+ type: 'select',
21
+ options: ['xs', 'sm', 'md', 'lg', 'xl'],
22
+ },
23
+ description: 'Size of the logo.',
24
+ },
25
+ shape: {
26
+ control: {
27
+ type: 'select',
28
+ options: ['normal', 'rounded', 'squared'],
29
+ },
30
+ description: 'Shape of the logo.',
31
+ },
32
+ background: {
33
+ control: {
34
+ type: 'select',
35
+ options: ['none', 'palette', 'custom'],
36
+ },
37
+ description: 'Background option.',
38
+ },
39
+ customBackgroundColor: {
40
+ control: 'color',
41
+ description: 'Custom background color when background is set to "custom".',
42
+ },
43
+ className: {
44
+ control: 'text',
45
+ description: 'Additional CSS classes.',
46
+ },
47
+ style: {
48
+ control: 'object',
49
+ description: 'Inline styles.',
50
+ },
51
+ },
52
+ };
53
+
54
+ /**
55
+ * Original Logo - Medium Size - Normal Shape - No Background
56
+ */
57
+ export const OriginalMediumNormalNoBg = () => (
58
+ <Logo
59
+ src="https://via.placeholder.com/150x150?text=Logo"
60
+ alt="Original Logo"
61
+ size="md"
62
+ shape="normal"
63
+ background="none"
64
+ />
65
+ );
66
+
67
+ /**
68
+ * Logo with Palette Background - Large Size - Rounded Shape
69
+ */
70
+ export const PaletteBackgroundLargeRounded = () => (
71
+ <Logo
72
+ src="https://via.placeholder.com/150x150?text=Logo"
73
+ alt="Logo with Palette Background"
74
+ size="lg"
75
+ shape="rounded"
76
+ background="palette"
77
+ />
78
+ );
79
+
80
+ /**
81
+ * Logo with Custom Background - Small Size - Squared Shape
82
+ */
83
+ export const CustomBackgroundSmallSquared = () => (
84
+ <Logo
85
+ src="https://via.placeholder.com/150x150?text=Logo"
86
+ alt="Logo with Custom Background"
87
+ size="sm"
88
+ shape="squared"
89
+ background="custom"
90
+ customBackgroundColor="#FF5733"
91
+ />
92
+ );
93
+
94
+ /**
95
+ * Original Logo - Extra Large Size - Rounded Shape - No Background
96
+ */
97
+ export const OriginalXLRoundedNoBg = () => (
98
+ <Logo
99
+ src="https://via.placeholder.com/150x150?text=Logo"
100
+ alt="Original XL Logo"
101
+ size="xl"
102
+ shape="rounded"
103
+ background="none"
104
+ />
105
+ );
106
+
107
+ /**
108
+ * Interactive Logo
109
+ */
110
+ const Template = (args) => <Logo {...args} />;
111
+
112
+ export const InteractiveLogo = Template.bind({});
113
+ InteractiveLogo.args = {
114
+ src: 'https://via.placeholder.com/150x150?text=Logo',
115
+ alt: 'Interactive Logo',
116
+ size: 'md',
117
+ shape: 'normal',
118
+ background: 'none',
119
+ customBackgroundColor: '#00FF00',
120
+ };