this.gui 1.0.15 → 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 (258) 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/verifyLayouts.js +175 -0
  11. package/src/scripts/verifyTemplates.js +154 -0
  12. package/src/stories/Atoms/Alert/Alert.css +196 -14
  13. package/src/stories/Atoms/Alert/Alert.jsx +43 -28
  14. package/src/stories/Atoms/Alert/Alert.stories.jsx +154 -28
  15. package/src/stories/Atoms/Audio/Audio.css +246 -16
  16. package/src/stories/Atoms/Audio/Audio.jsx +204 -29
  17. package/src/stories/Atoms/Audio/Audio.stories.jsx +178 -28
  18. package/src/stories/Atoms/Badge/Badge.css +234 -15
  19. package/src/stories/Atoms/Badge/Badge.jsx +44 -31
  20. package/src/stories/Atoms/Badge/Badge.stories.jsx +108 -29
  21. package/src/stories/Atoms/Button/Button.css +106 -45
  22. package/src/stories/Atoms/Button/Button.jsx +31 -82
  23. package/src/stories/Atoms/Button/Button.stories.jsx +170 -40
  24. package/src/stories/Atoms/Caption/Caption.css +156 -16
  25. package/src/stories/Atoms/Caption/Caption.jsx +62 -31
  26. package/src/stories/Atoms/Caption/Caption.stories.jsx +194 -28
  27. package/src/stories/Atoms/Checkbox/Checkbox.css +168 -15
  28. package/src/stories/Atoms/Checkbox/Checkbox.jsx +73 -31
  29. package/src/stories/Atoms/Checkbox/Checkbox.stories.jsx +98 -27
  30. package/src/stories/Atoms/Container/Container.css +75 -15
  31. package/src/stories/Atoms/Container/Container.jsx +41 -28
  32. package/src/stories/Atoms/Container/Container.stories.jsx +92 -29
  33. package/src/stories/Atoms/Divider/Divider.css +131 -13
  34. package/src/stories/Atoms/Divider/Divider.jsx +54 -33
  35. package/src/stories/Atoms/Divider/Divider.stories.jsx +93 -29
  36. package/src/stories/Atoms/Heading/Heading.css +99 -16
  37. package/src/stories/Atoms/Heading/Heading.jsx +57 -29
  38. package/src/stories/Atoms/Heading/Heading.stories.jsx +117 -28
  39. package/src/stories/Atoms/Icon/Icon.css +219 -27
  40. package/src/stories/Atoms/Icon/Icon.jsx +67 -38
  41. package/src/stories/Atoms/Icon/Icon.stories.jsx +156 -51
  42. package/src/stories/Atoms/Image/Image.css +231 -15
  43. package/src/stories/Atoms/Image/Image.jsx +166 -32
  44. package/src/stories/Atoms/Image/Image.stories.jsx +319 -28
  45. package/src/stories/Atoms/Label/Label.css +158 -16
  46. package/src/stories/Atoms/Label/Label.jsx +61 -31
  47. package/src/stories/Atoms/Label/Label.stories.jsx +167 -28
  48. package/src/stories/Atoms/Link/Link.css +58 -16
  49. package/src/stories/Atoms/Link/Link.jsx +73 -32
  50. package/src/stories/Atoms/Link/Link.stories.jsx +141 -29
  51. package/src/stories/Atoms/Loader/Loader.css +93 -16
  52. package/src/stories/Atoms/Loader/Loader.jsx +47 -30
  53. package/src/stories/Atoms/Loader/Loader.stories.jsx +86 -28
  54. package/src/stories/Atoms/Logo/Logo.css +94 -0
  55. package/src/stories/Atoms/Logo/Logo.jsx +53 -0
  56. package/src/stories/Atoms/Logo/Logo.stories.jsx +120 -0
  57. package/src/stories/Atoms/Paragraph/Paragraph.css +167 -16
  58. package/src/stories/Atoms/Paragraph/Paragraph.jsx +67 -31
  59. package/src/stories/Atoms/Paragraph/Paragraph.stories.jsx +130 -28
  60. package/src/stories/Atoms/ProgressBar/ProgressBar.css +115 -17
  61. package/src/stories/Atoms/ProgressBar/ProgressBar.jsx +30 -31
  62. package/src/stories/Atoms/ProgressBar/ProgressBar.stories.jsx +72 -27
  63. package/src/stories/Atoms/RadioButton/RadioButton.css +118 -17
  64. package/src/stories/Atoms/RadioButton/RadioButton.jsx +77 -31
  65. package/src/stories/Atoms/RadioButton/RadioButton.stories.jsx +99 -27
  66. package/src/stories/Atoms/Range/Range.css +169 -0
  67. package/src/stories/Atoms/Range/Range.jsx +87 -0
  68. package/src/stories/Atoms/Range/Range.stories.jsx +110 -0
  69. package/src/stories/Atoms/Select/Select.css +74 -16
  70. package/src/stories/Atoms/Select/Select.jsx +62 -30
  71. package/src/stories/Atoms/Select/Select.stories.jsx +95 -27
  72. package/src/stories/Atoms/Slider/Slider.css +77 -16
  73. package/src/stories/Atoms/Slider/Slider.jsx +119 -31
  74. package/src/stories/Atoms/Slider/Slider.stories.jsx +77 -28
  75. package/src/stories/Atoms/Snackbar/Snackbar.css +297 -13
  76. package/src/stories/Atoms/Snackbar/Snackbar.jsx +62 -31
  77. package/src/stories/Atoms/Snackbar/Snackbar.stories.jsx +63 -26
  78. package/src/stories/Atoms/Spacer/Spacer.css +101 -16
  79. package/src/stories/Atoms/Spacer/Spacer.jsx +26 -32
  80. package/src/stories/Atoms/Spacer/Spacer.stories.jsx +50 -30
  81. package/src/stories/Atoms/Spinner/Spinner.css +97 -16
  82. package/src/stories/Atoms/Spinner/Spinner.jsx +50 -26
  83. package/src/stories/Atoms/Spinner/Spinner.stories.jsx +47 -30
  84. package/src/stories/Atoms/Tag/Tag.css +97 -14
  85. package/src/stories/Atoms/Tag/Tag.jsx +58 -24
  86. package/src/stories/Atoms/Tag/Tag.stories.jsx +55 -29
  87. package/src/stories/Atoms/TextArea/TextArea.css +84 -15
  88. package/src/stories/Atoms/TextArea/TextArea.jsx +107 -31
  89. package/src/stories/Atoms/TextArea/TextArea.stories.jsx +24 -30
  90. package/src/stories/Atoms/TextInput/TextInput.css +89 -17
  91. package/src/stories/Atoms/TextInput/TextInput.jsx +118 -27
  92. package/src/stories/Atoms/TextInput/TextInput.stories.jsx +52 -25
  93. package/src/stories/Atoms/Toggle/Toggle.css +105 -17
  94. package/src/stories/Atoms/Toggle/Toggle.jsx +55 -28
  95. package/src/stories/Atoms/Toggle/Toggle.stories.jsx +23 -30
  96. package/src/stories/Atoms/Tooltip/Tooltip.css +367 -14
  97. package/src/stories/Atoms/Tooltip/Tooltip.jsx +32 -28
  98. package/src/stories/Atoms/Tooltip/Tooltip.stories.jsx +41 -31
  99. package/src/stories/Atoms/Video/Video.css +27 -18
  100. package/src/stories/Atoms/Video/Video.jsx +65 -29
  101. package/src/stories/Atoms/Video/Video.stories.jsx +29 -30
  102. package/src/stories/Atoms/index.js +5 -2
  103. package/src/stories/Atoms/meta_Atoms.js +3 -1
  104. package/src/stories/Layouts/Accordion/Accordion.css +16 -0
  105. package/src/stories/Layouts/Accordion/Accordion.jsx +31 -0
  106. package/src/stories/Layouts/Accordion/Accordion.stories.jsx +28 -0
  107. package/src/stories/Layouts/DropdownMenu/DropdownMenu.css +16 -0
  108. package/src/stories/Layouts/DropdownMenu/DropdownMenu.jsx +31 -0
  109. package/src/stories/Layouts/DropdownMenu/DropdownMenu.stories.jsx +28 -0
  110. package/src/stories/Layouts/Flexbox/Flexbox.css +16 -0
  111. package/src/stories/Layouts/Flexbox/Flexbox.jsx +11 -0
  112. package/src/stories/Layouts/Flexbox/Flexbox.stories.jsx +28 -0
  113. package/src/stories/Layouts/Footer/Footer.css +16 -0
  114. package/src/stories/Layouts/Footer/Footer.jsx +31 -0
  115. package/src/stories/Layouts/Footer/Footer.stories.jsx +28 -0
  116. package/src/stories/Layouts/Grid/Grid.jsx +2 -4
  117. package/src/stories/Layouts/Grid/Grid.stories.jsx +20 -18
  118. package/src/stories/Layouts/Header/Header.css +16 -0
  119. package/src/stories/Layouts/Header/Header.jsx +31 -0
  120. package/src/stories/Layouts/Header/Header.stories.jsx +28 -0
  121. package/src/stories/Layouts/HeroBanner/HeroBanner.css +16 -0
  122. package/src/stories/Layouts/HeroBanner/HeroBanner.jsx +31 -0
  123. package/src/stories/Layouts/HeroBanner/HeroBanner.stories.jsx +28 -0
  124. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.css +16 -0
  125. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.jsx +31 -0
  126. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.stories.jsx +28 -0
  127. package/src/stories/Layouts/Pagination/Pagination.css +16 -0
  128. package/src/stories/Layouts/Pagination/Pagination.jsx +31 -0
  129. package/src/stories/Layouts/Pagination/Pagination.stories.jsx +28 -0
  130. package/src/stories/Layouts/Section/Section.css +16 -0
  131. package/src/stories/Layouts/Section/Section.jsx +31 -0
  132. package/src/stories/Layouts/Section/Section.stories.jsx +28 -0
  133. package/src/stories/Layouts/Sidebar/Sidebar.css +16 -0
  134. package/src/stories/Layouts/Sidebar/Sidebar.jsx +71 -0
  135. package/src/stories/Layouts/Sidebar/Sidebar.stories.jsx +28 -0
  136. package/src/stories/Layouts/Tabs/Tabs.css +16 -0
  137. package/src/stories/Layouts/Tabs/Tabs.jsx +31 -0
  138. package/src/stories/Layouts/Tabs/Tabs.stories.jsx +28 -0
  139. package/src/stories/Layouts/index.js +31 -0
  140. package/src/stories/Layouts/meta_Layouts.js +31 -0
  141. package/src/stories/Molecules/Navbar/Navbar.css +63 -59
  142. package/src/stories/Molecules/Navbar/Navbar.jsx +43 -48
  143. package/src/stories/Molecules/Navbar/Navbar.stories.jsx +58 -8
  144. package/src/stories/Molecules/SearchBar/SearchBar.css +66 -1
  145. package/src/stories/Molecules/SearchBar/SearchBar.jsx +59 -11
  146. package/src/stories/Molecules/SearchBar/SearchBar.stories.jsx +16 -7
  147. package/src/stories/Molecules/SelectTheme/SelectTheme.jsx +16 -38
  148. package/src/stories/Molecules/SelectTheme/SelectTheme.stories.jsx +1 -2
  149. package/src/stories/Molecules/Sidebar/Sidebar.css +65 -2
  150. package/src/stories/Molecules/Sidebar/Sidebar.jsx +66 -11
  151. package/src/stories/Molecules/Sidebar/Sidebar.stories.jsx +20 -5
  152. package/src/stories/Templates/AdminDashboard/AdminDashboard.css +7 -0
  153. package/src/stories/Templates/AdminDashboard/AdminDashboard.jsx +24 -0
  154. package/src/stories/Templates/AdminDashboard/AdminDashboard.stories.jsx +20 -0
  155. package/src/stories/Templates/CallToAction/CallToAction.css +7 -0
  156. package/src/stories/Templates/CallToAction/CallToAction.jsx +24 -0
  157. package/src/stories/Templates/CallToAction/CallToAction.stories.jsx +20 -0
  158. package/src/stories/Templates/FeaturesList/FeaturesList.css +7 -0
  159. package/src/stories/Templates/FeaturesList/FeaturesList.jsx +24 -0
  160. package/src/stories/Templates/FeaturesList/FeaturesList.stories.jsx +20 -0
  161. package/src/stories/Templates/FormSection/FormSection.css +7 -0
  162. package/src/stories/Templates/FormSection/FormSection.jsx +24 -0
  163. package/src/stories/Templates/FormSection/FormSection.stories.jsx +20 -0
  164. package/src/stories/Templates/HeroSection/HeroSection.css +7 -0
  165. package/src/stories/Templates/HeroSection/HeroSection.jsx +24 -0
  166. package/src/stories/Templates/HeroSection/HeroSection.stories.jsx +20 -0
  167. package/src/stories/Templates/LocationInfo/LocationInfo.css +7 -0
  168. package/src/stories/Templates/LocationInfo/LocationInfo.jsx +24 -0
  169. package/src/stories/Templates/LocationInfo/LocationInfo.stories.jsx +20 -0
  170. package/src/stories/Templates/ProductPage/ProductPage.css +7 -0
  171. package/src/stories/Templates/ProductPage/ProductPage.jsx +24 -0
  172. package/src/stories/Templates/ProductPage/ProductPage.stories.jsx +20 -0
  173. package/src/stories/Templates/RegistrationPage/RegistrationPage.css +7 -0
  174. package/src/stories/Templates/RegistrationPage/RegistrationPage.jsx +24 -0
  175. package/src/stories/Templates/RegistrationPage/RegistrationPage.stories.jsx +20 -0
  176. package/src/stories/Templates/ShoppingCart/ShoppingCart.css +7 -0
  177. package/src/stories/Templates/ShoppingCart/ShoppingCart.jsx +24 -0
  178. package/src/stories/Templates/ShoppingCart/ShoppingCart.stories.jsx +20 -0
  179. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.css +7 -0
  180. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.jsx +24 -0
  181. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.stories.jsx +20 -0
  182. package/src/stories/Templates/SignInPage/SignInPage.css +7 -0
  183. package/src/stories/Templates/SignInPage/SignInPage.jsx +24 -0
  184. package/src/stories/Templates/SignInPage/SignInPage.stories.jsx +20 -0
  185. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.css +7 -0
  186. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.jsx +24 -0
  187. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.stories.jsx +20 -0
  188. package/src/stories/Templates/Testimonials/Testimonials.css +7 -0
  189. package/src/stories/Templates/Testimonials/Testimonials.jsx +24 -0
  190. package/src/stories/Templates/Testimonials/Testimonials.stories.jsx +20 -0
  191. package/src/stories/Templates/index.js +33 -0
  192. package/src/stories/Templates/{Templates.js → meta_Templates.js} +3 -1
  193. package/src/stories/assets/logo.png +0 -0
  194. package/src/stories/assets/logo.svg +106 -0
  195. package/src/stories/assets/test.svg +3 -0
  196. package/src/themes/README.md +301 -0
  197. package/src/themes/ThemeProvider.jsx +47 -22
  198. package/src/themes/styles/dracula/dark.css +0 -0
  199. package/src/themes/styles/dracula/light.css +0 -0
  200. package/src/themes/styles/github/dark.css +0 -0
  201. package/src/themes/styles/github/light.css +0 -0
  202. package/src/themes/styles/neurons/dark.css +247 -0
  203. package/src/themes/styles/neurons/light.css +280 -0
  204. package/dist/github-3688a83a.js +0 -5
  205. package/dist/gothic-94a7ecd6.js +0 -5
  206. package/dist/newsprint-32bf94d9.js +0 -5
  207. package/dist/night-4a954853.js +0 -5
  208. package/dist/pixyll-94de4610.js +0 -5
  209. package/dist/whitey-db68723e.js +0 -5
  210. package/src/MDXEditor.jsx +0 -32
  211. package/src/stories/Atoms/RangeInput/RangeInput.css +0 -29
  212. package/src/stories/Atoms/RangeInput/RangeInput.jsx +0 -41
  213. package/src/stories/Atoms/RangeInput/RangeInput.stories.jsx +0 -41
  214. package/src/stories/Components.md +0 -189
  215. package/src/stories/Layouts/Layout.js +0 -28
  216. package/src/styles/Header.modules.css +0 -32
  217. package/src/styles/global.css +0 -59
  218. package/src/themes/Themes.js +0 -44
  219. package/src/themes/dark.js +0 -22
  220. package/src/themes/light.js +0 -22
  221. package/src/themes/typ/Readme.md +0 -4
  222. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-700.woff2 +0 -0
  223. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-700italic.woff2 +0 -0
  224. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-italic.woff2 +0 -0
  225. package/src/themes/typ/github/open-sans-v17-latin-ext_latin-regular.woff2 +0 -0
  226. package/src/themes/typ/github.css +0 -416
  227. package/src/themes/typ/gothic/GUST e-foundry License.txt +0 -29
  228. package/src/themes/typ/gothic/didact-gothic-c-ext.woff2 +0 -0
  229. package/src/themes/typ/gothic/didact-gothic-c.woff2 +0 -0
  230. package/src/themes/typ/gothic/texgyreadventor-bold.woff +0 -0
  231. package/src/themes/typ/gothic/texgyreadventor-bolditalic.woff +0 -0
  232. package/src/themes/typ/gothic/texgyreadventor-italic.woff +0 -0
  233. package/src/themes/typ/gothic/texgyreadventor-regular.woff +0 -0
  234. package/src/themes/typ/gothic.css +0 -410
  235. package/src/themes/typ/newsprint/pt-serif-v11-latin-700.woff2 +0 -0
  236. package/src/themes/typ/newsprint/pt-serif-v11-latin-700italic.woff2 +0 -0
  237. package/src/themes/typ/newsprint/pt-serif-v11-latin-italic.woff2 +0 -0
  238. package/src/themes/typ/newsprint/pt-serif-v11-latin-regular.woff2 +0 -0
  239. package/src/themes/typ/newsprint.css +0 -622
  240. package/src/themes/typ/night/codeblock.dark.css +0 -113
  241. package/src/themes/typ/night/credit.html +0 -1
  242. package/src/themes/typ/night/cursor.png +0 -0
  243. package/src/themes/typ/night/cursor@2x.png +0 -0
  244. package/src/themes/typ/night/mermaid.dark.css +0 -7
  245. package/src/themes/typ/night/sourcemode.dark.css +0 -38
  246. package/src/themes/typ/night.css +0 -1032
  247. package/src/themes/typ/pixyll/lato-v14-latin-300.woff +0 -0
  248. package/src/themes/typ/pixyll/lato-v14-latin-300italic.woff +0 -0
  249. package/src/themes/typ/pixyll/lato-v14-latin-900.woff +0 -0
  250. package/src/themes/typ/pixyll/lato-v14-latin-900italic.woff +0 -0
  251. package/src/themes/typ/pixyll/merriweather-v19-latin-300.woff +0 -0
  252. package/src/themes/typ/pixyll/merriweather-v19-latin-300italic.woff +0 -0
  253. package/src/themes/typ/pixyll/merriweather-v19-latin-700.woff +0 -0
  254. package/src/themes/typ/pixyll/merriweather-v19-latin-700italic.woff +0 -0
  255. package/src/themes/typ/pixyll.css +0 -528
  256. package/src/themes/typ/whitey.css +0 -299
  257. /package/src/stories/Molecules/{Molecules.js → meta_Molecules.js} +0 -0
  258. /package/src/stories/Organisms/{Organisms.js → meta_Organisms.js} +0 -0
@@ -1,29 +1,211 @@
1
+ /* src/stories/Atoms/Alert/Alert.css */
1
2
 
3
+ /* Base Alert Styles */
2
4
  .alert {
3
- padding: 16px;
4
- border-radius: 8px;
5
- background-color: #f0f0f0;
6
- border: 1px solid #ddd;
5
+ padding: var(--spacing-sm) var(--spacing-md);
6
+ border-radius: var(--border-radius);
7
+ font-family: var(--font-family);
8
+ font-size: var(--font-size-base);
9
+ display: flex;
10
+ align-items: center;
11
+ box-shadow: var(--box-shadow);
12
+ margin-bottom: var(--spacing-md);
13
+ transition:
14
+ background-color var(--transition-speed),
15
+ border-color var(--transition-speed),
16
+ color var(--transition-speed);
17
+
18
+ /* Default Colors (Primary Variant) */
19
+ background-color: var(--alert-bg-color, var(--primary-color));
20
+ color: var(--alert-text-color, var(--text-color-inverse));
21
+ border: 1px solid var(--alert-border-color, var(--primary-color));
22
+
23
+ /* Entrance Animation */
24
+ animation: fadeIn 0.3s ease-out;
7
25
  }
8
26
 
27
+ /* Primary Variant */
9
28
  .alert--primary {
10
- background-color: #e3f2fd;
11
- border-color: #1e88e5;
29
+ /* Primary Variant Colors */
30
+ --alert-bg-color: var(--primary-color);
31
+ --alert-text-color: var(--text-color-inverse);
32
+ --alert-border-color: var(--primary-color);
33
+
34
+ /* Hover Colors */
35
+ --alert-bg-hover-color: var(--primary-color-hover);
36
+ --alert-border-hover-color: var(--primary-color-hover);
12
37
  }
13
38
 
39
+ .alert--primary:hover {
40
+ background-color: var(--alert-bg-hover-color);
41
+ border-color: var(--alert-border-hover-color);
42
+ }
43
+
44
+ /* Secondary Variant */
14
45
  .alert--secondary {
15
- background-color: #fff;
16
- border-color: #ccc;
46
+ /* Secondary Variant Colors */
47
+ --alert-bg-color: transparent;
48
+ --alert-text-color: var(--secondary-color);
49
+ --alert-border-color: var(--secondary-color);
50
+
51
+ /* Hover Colors */
52
+ --alert-bg-hover-color: var(--secondary-color-hover);
53
+ --alert-border-hover-color: var(--secondary-color-hover);
54
+ --alert-text-hover-color: var(--text-color-inverse);
55
+ }
56
+
57
+ .alert--secondary:hover {
58
+ background-color: var(--alert-bg-hover-color);
59
+ color: var(--alert-text-hover-color);
60
+ border-color: var(--alert-border-hover-color);
61
+ }
62
+
63
+ /* Semantic Color Modifiers for Primary Variant */
64
+ .alert--primary.alert--info {
65
+ --alert-bg-color: var(--info-color);
66
+ --alert-border-color: var(--info-color);
67
+
68
+ /* Hover Colors */
69
+ --alert-bg-hover-color: var(--info-color-hover);
70
+ --alert-border-hover-color: var(--info-color-hover);
71
+ }
72
+
73
+ .alert--primary.alert--warning {
74
+ --alert-bg-color: var(--warning-color);
75
+ --alert-border-color: var(--warning-color);
76
+
77
+ /* Hover Colors */
78
+ --alert-bg-hover-color: var(--warning-color-hover);
79
+ --alert-border-hover-color: var(--warning-color-hover);
80
+ }
81
+
82
+ .alert--primary.alert--alert {
83
+ --alert-bg-color: var(--alert-color);
84
+ --alert-border-color: var(--alert-color);
85
+ --alert-text-color: var(--text-color); /* Dark text for readability */
86
+
87
+ /* Hover Colors */
88
+ --alert-bg-hover-color: var(--alert-color-hover);
89
+ --alert-border-hover-color: var(--alert-color-hover);
90
+ }
91
+
92
+ .alert--primary.alert--success {
93
+ --alert-bg-color: var(--success-color);
94
+ --alert-border-color: var(--success-color);
95
+
96
+ /* Hover Colors */
97
+ --alert-bg-hover-color: var(--success-color-hover);
98
+ --alert-border-hover-color: var(--success-color-hover);
99
+ }
100
+
101
+ .alert--primary.alert--neutral {
102
+ --alert-bg-color: var(--neutral-color);
103
+ --alert-border-color: var(--neutral-color);
104
+
105
+ /* Hover Colors */
106
+ --alert-bg-hover-color: var(--neutral-color-hover);
107
+ --alert-border-hover-color: var(--neutral-color-hover);
108
+ }
109
+
110
+ .alert--primary.alert--dark {
111
+ --alert-bg-color: var(--dark-color);
112
+ --alert-border-color: var(--dark-color);
113
+ --alert-text-color: var(--text-color-inverse); /* White text on dark background */
114
+
115
+ /* Hover Colors */
116
+ --alert-bg-hover-color: var(--dark-color-hover);
117
+ --alert-border-hover-color: var(--dark-color-hover);
17
118
  }
18
119
 
19
- .alert--small {
20
- padding: 8px;
120
+ /* Semantic Color Modifiers for Secondary Variant */
121
+ .alert--secondary.alert--info {
122
+ --alert-text-color: var(--info-color);
123
+ --alert-border-color: var(--info-color);
124
+
125
+ /* Hover Colors */
126
+ --alert-bg-hover-color: var(--info-color-hover);
127
+ --alert-border-hover-color: var(--info-color-hover);
21
128
  }
22
129
 
23
- .alert--medium {
24
- padding: 16px;
130
+ .alert--secondary.alert--warning {
131
+ --alert-text-color: var(--warning-color);
132
+ --alert-border-color: var(--warning-color);
133
+
134
+ /* Hover Colors */
135
+ --alert-bg-hover-color: var(--warning-color-hover);
136
+ --alert-border-hover-color: var(--warning-color-hover);
25
137
  }
26
138
 
27
- .alert--large {
28
- padding: 32px;
139
+ .alert--secondary.alert--alert {
140
+ --alert-text-color: var(--alert-color);
141
+ --alert-border-color: var(--alert-color);
142
+
143
+ /* Hover Colors */
144
+ --alert-bg-hover-color: var(--alert-color-hover);
145
+ --alert-border-hover-color: var(--alert-color-hover);
29
146
  }
147
+
148
+ .alert--secondary.alert--success {
149
+ --alert-text-color: var(--success-color);
150
+ --alert-border-color: var(--success-color);
151
+
152
+ /* Hover Colors */
153
+ --alert-bg-hover-color: var(--success-color-hover);
154
+ --alert-border-hover-color: var(--success-color-hover);
155
+ }
156
+
157
+ .alert--secondary.alert--neutral {
158
+ --alert-text-color: var(--neutral-color);
159
+ --alert-border-color: var(--neutral-color);
160
+
161
+ /* Hover Colors */
162
+ --alert-bg-hover-color: var(--neutral-color-hover);
163
+ --alert-border-hover-color: var(--neutral-color-hover);
164
+ }
165
+
166
+ .alert--secondary.alert--dark {
167
+ --alert-text-color: var(--dark-color);
168
+ --alert-border-color: var(--dark-color);
169
+
170
+ /* Hover Colors */
171
+ --alert-bg-hover-color: var(--dark-color-hover);
172
+ --alert-border-hover-color: var(--dark-color-hover);
173
+ }
174
+
175
+ /* Optional: Icon Styles */
176
+ .alert__icon {
177
+ margin-right: var(--spacing-sm);
178
+ font-size: 1.2em;
179
+ }
180
+
181
+ /* Optional: Close Button Styles */
182
+ .alert__close {
183
+ margin-left: auto;
184
+ background: none;
185
+ border: none;
186
+ color: inherit;
187
+ cursor: pointer;
188
+ font-size: 1.2em;
189
+ }
190
+
191
+ /* Dismissible Modifier */
192
+ .alert--dismissible {
193
+ padding-right: var(--spacing-md);
194
+ }
195
+
196
+ /* Keyframes for fade-in */
197
+ @keyframes fadeIn {
198
+ from {
199
+ opacity: 0;
200
+ transform: translateY(-10px);
201
+ }
202
+ to {
203
+ opacity: 1;
204
+ transform: translateY(0);
205
+ }
206
+ }
207
+
208
+ /* Apply animation to alert */
209
+ .alert {
210
+ animation: fadeIn 0.3s ease-out;
211
+ }
@@ -1,41 +1,56 @@
1
-
1
+ // src/stories/Atoms/Alert/Alert.jsx
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
- import './Alert.css';
4
+ import './Alert.css'; // Import the CSS styles
5
+
6
+ export const Alert = ({
7
+ variant = 'primary', // 'primary', 'secondary'
8
+ color, // 'info', 'warning', 'alert', 'success', 'neutral', 'dark'
9
+ children,
10
+ className = '',
11
+ style = {},
12
+ onClose, // Function to handle close action
13
+ dismissible = false, // If true, show close button
14
+ icon, // Optional icon element
15
+ ...props
16
+ }) => {
17
+ const variantClass = `alert--${variant}`;
18
+ const colorClass = color ? `alert--${color}` : '';
19
+ const dismissibleClass = dismissible ? 'alert--dismissible' : '';
20
+
21
+ const combinedClassName = `alert ${variantClass} ${colorClass} ${dismissibleClass} ${className}`.trim();
5
22
 
6
- /**
7
- * Alert component for user interaction
8
- */
9
- export const Alert = ({ primary, size, children, ...props }) => {
10
- const mode = primary ? 'alert--primary' : 'alert--secondary';
11
23
  return (
12
24
  <div
13
- className={['alert', `alert--${size}`, mode].join(' ')}
25
+ className={combinedClassName}
26
+ style={style}
27
+ role="alert"
28
+ aria-live="assertive"
14
29
  {...props}
15
30
  >
16
- {children}
31
+ {icon && <span className="alert__icon">{icon}</span>}
32
+ <span className="alert__content">{children}</span>
33
+ {dismissible && (
34
+ <button
35
+ className="alert__close"
36
+ onClick={onClose}
37
+ aria-label="Close Alert"
38
+ tabIndex="0"
39
+ >
40
+ &times;
41
+ </button>
42
+ )}
17
43
  </div>
18
44
  );
19
45
  };
20
46
 
21
47
  Alert.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
- */
48
+ variant: PropTypes.oneOf(['primary', 'secondary']),
49
+ color: PropTypes.oneOf(['info', 'warning', 'alert', 'success', 'neutral', 'dark']),
33
50
  children: PropTypes.node.isRequired,
34
- };
35
-
36
- Alert.defaultProps = {
37
- primary: false,
38
- size: 'medium',
39
- };
40
-
41
- export default Alert;
51
+ className: PropTypes.string,
52
+ style: PropTypes.object,
53
+ onClose: PropTypes.func,
54
+ dismissible: PropTypes.bool,
55
+ icon: PropTypes.node,
56
+ };
@@ -1,41 +1,167 @@
1
-
1
+ // src/stories/Atoms/Alert/Alert.stories.jsx
2
+ import React from 'react';
2
3
  import { Alert } from './Alert';
4
+ import './Alert.css'; // Import the CSS styles
3
5
 
4
- // Storybook configuration for Alert component
5
6
  export default {
6
7
  title: 'Atoms/Feedback/Alert',
7
8
  component: Alert,
8
- parameters: {
9
- layout: 'centered',
10
- },
11
9
  argTypes: {
12
- children: { control: 'text' },
10
+ variant: {
11
+ control: {
12
+ type: 'select',
13
+ options: ['primary', 'secondary'],
14
+ },
15
+ description: 'Variant of the alert.',
16
+ table: {
17
+ type: { summary: 'primary | secondary' },
18
+ defaultValue: { summary: 'primary' },
19
+ },
20
+ },
21
+ color: {
22
+ control: {
23
+ type: 'select',
24
+ options: ['info', 'warning', 'alert', 'success', 'neutral', 'dark'],
25
+ },
26
+ description: 'Semantic color of the alert.',
27
+ table: {
28
+ type: { summary: `'info' | 'warning' | 'alert' | 'success' | 'neutral' | 'dark'` },
29
+ },
30
+ },
31
+ children: {
32
+ control: 'text',
33
+ description: 'Content of the alert.',
34
+ table: {
35
+ type: { summary: 'node' },
36
+ },
37
+ },
38
+ dismissible: {
39
+ control: 'boolean',
40
+ description: 'If true, shows a close button to dismiss the alert.',
41
+ table: {
42
+ type: { summary: 'boolean' },
43
+ defaultValue: { summary: false },
44
+ },
45
+ },
46
+ onClose: {
47
+ action: 'closed',
48
+ description: 'Function called when the alert is dismissed.',
49
+ table: {
50
+ type: { summary: 'function' },
51
+ },
52
+ },
53
+ icon: {
54
+ control: 'none', // Typically, icons are not controlled via Storybook controls
55
+ description: 'Optional icon to display in the alert.',
56
+ table: {
57
+ type: { summary: 'node' },
58
+ },
59
+ },
60
+ className: {
61
+ control: 'text',
62
+ description: 'Additional CSS classes.',
63
+ table: {
64
+ type: { summary: 'string' },
65
+ },
66
+ },
67
+ style: {
68
+ control: 'object',
69
+ description: 'Inline styles.',
70
+ table: {
71
+ type: { summary: 'object' },
72
+ },
73
+ },
13
74
  },
14
75
  };
15
76
 
16
- export const Primary = {
17
- args: {
18
- primary: true,
19
- children: 'This is a primary Alert',
20
- },
21
- };
77
+ /**
78
+ *
79
+ * Shows default primary and secondary alerts without any semantic color.
80
+ */
81
+ export const DefaultAlerts = () => (
82
+ <div style={{ display: 'flex', gap: '10px', flexWrap: 'wrap' }}>
83
+ <Alert variant="primary">Primary Default Alert</Alert>
84
+ <Alert variant="secondary">Secondary Default Alert</Alert>
85
+ </div>
86
+ );
22
87
 
23
- export const Secondary = {
24
- args: {
25
- children: 'This is a secondary Alert',
26
- },
27
- };
88
+ /**
89
+ *
90
+ * Demonstrates primary alerts with all semantic colors.
91
+ */
92
+ export const PrimaryAlerts = () => (
93
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
94
+ <h3>Primary Alerts</h3>
95
+ {['info', 'warning', 'alert', 'success', 'neutral', 'dark'].map((color) => (
96
+ <Alert key={color} variant="primary" color={color}>
97
+ This is a {color} primary alert.
98
+ </Alert>
99
+ ))}
100
+ </div>
101
+ );
28
102
 
29
- export const Large = {
30
- args: {
31
- size: 'large',
32
- children: 'This is a large Alert',
33
- },
34
- };
103
+ /**
104
+ *
105
+ * Demonstrates secondary alerts with all semantic colors.
106
+ */
107
+ export const SecondaryAlerts = () => (
108
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
109
+ <h3>Secondary Alerts</h3>
110
+ {['info', 'warning', 'alert', 'success', 'neutral', 'dark'].map((color) => (
111
+ <Alert key={color} variant="secondary" color={color}>
112
+ This is a {color} secondary alert.
113
+ </Alert>
114
+ ))}
115
+ </div>
116
+ );
35
117
 
36
- export const Small = {
37
- args: {
38
- size: 'small',
39
- children: 'This is a small Alert',
40
- },
118
+ /**
119
+ *
120
+ * Demonstrates primary and secondary alerts that can be dismissed.
121
+ */
122
+ export const DismissibleAlerts = () => (
123
+ <div style={{ display: 'flex', flexDirection: 'column', gap: '20px' }}>
124
+ <h3>Dismissible Primary Alerts</h3>
125
+ {['info', 'warning', 'alert', 'success', 'neutral', 'dark'].map((color) => (
126
+ <Alert
127
+ key={color}
128
+ variant="primary"
129
+ color={color}
130
+ dismissible
131
+ onClose={() => alert(`Closed ${color} primary alert`)}
132
+ >
133
+ This is a {color} primary alert that can be dismissed.
134
+ </Alert>
135
+ ))}
136
+
137
+ <h3>Dismissible Secondary Alerts</h3>
138
+ {['info', 'warning', 'alert', 'success', 'neutral', 'dark'].map((color) => (
139
+ <Alert
140
+ key={color}
141
+ variant="secondary"
142
+ color={color}
143
+ dismissible
144
+ onClose={() => alert(`Closed ${color} secondary alert`)}
145
+ >
146
+ This is a {color} secondary alert that can be dismissed.
147
+ </Alert>
148
+ ))}
149
+ </div>
150
+ );
151
+
152
+
153
+ /**
154
+ * ### Interactive Playground
155
+ *
156
+ * Allows dynamic interaction with the alert props via Storybook controls.
157
+ */
158
+ const Template = (args) => <Alert {...args} />;
159
+
160
+ export const Playground = Template.bind({});
161
+ Playground.args = {
162
+ variant: 'primary',
163
+ color: 'info',
164
+ children: 'This is an interactive alert.',
165
+ dismissible: false,
41
166
  };
167
+ Playground.storyName = 'Interactive Playground';