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
@@ -0,0 +1,31 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './Footer.css';
5
+
6
+ /**
7
+ * Footer layout component
8
+ */
9
+ export const Footer = ({ children, primary, ...props }) => {
10
+ const mode = primary ? 'footer--primary' : 'footer--secondary';
11
+ return (
12
+ <div className={['footer', mode].join(' ')} {...props}>
13
+ {children}
14
+ </div>
15
+ );
16
+ };
17
+
18
+ Footer.propTypes = {
19
+ /**
20
+ * Primary style for the layout
21
+ */
22
+ primary: PropTypes.bool,
23
+ /**
24
+ * Children components to be rendered inside the layout
25
+ */
26
+ children: PropTypes.node.isRequired,
27
+ };
28
+
29
+ Footer.defaultProps = {
30
+ primary: false,
31
+ };
@@ -0,0 +1,28 @@
1
+
2
+ import { Footer } from './Footer';
3
+
4
+ // Storybook configuration for Footer component
5
+ export default {
6
+ title: 'Layouts/NavigationAndMenus/Footer',
7
+ component: Footer,
8
+ parameters: {
9
+ layout: 'fullscreen',
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 Footer layout.',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ primary: false,
26
+ children: 'This is a secondary Footer layout.',
27
+ },
28
+ };
@@ -2,7 +2,7 @@
2
2
  import React from 'react';
3
3
  import './Grid.css'; // Import the component-specific styles
4
4
 
5
- const Grid = ({ children, columns = 3, gap = '10px' }) => {
5
+ export const Grid = ({ children, columns = 3, gap = '10px' }) => {
6
6
  const gridStyle = {
7
7
  display: 'grid',
8
8
  gridTemplateColumns: `repeat(${columns}, 1fr)`,
@@ -10,6 +10,4 @@ const Grid = ({ children, columns = 3, gap = '10px' }) => {
10
10
  };
11
11
 
12
12
  return <div style={gridStyle} className="grid-container">{children}</div>;
13
- };
14
-
15
- export default Grid;
13
+ };
@@ -1,26 +1,28 @@
1
- // src/stories/Layout/Grid/Grid.stories.jsx
2
- import React from 'react';
3
- import Grid from './Grid';
4
1
 
2
+ import { Grid } from './Grid';
3
+
4
+ // Storybook configuration for Grid component
5
5
  export default {
6
- title: 'Layout/Grid',
6
+ title: 'Layouts/Grid/Grid',
7
7
  component: Grid,
8
+ parameters: {
9
+ layout: 'fullscreen',
10
+ },
8
11
  argTypes: {
9
- columns: { control: 'number', defaultValue: 3 },
10
- gap: { control: 'text', defaultValue: '10px' },
12
+ children: { control: 'text' },
11
13
  },
12
14
  };
13
15
 
14
- const Template = (args) => (
15
- <Grid {...args}>
16
- <div style={{ backgroundColor: '#FFDDC1', padding: '20px' }}>Item 1</div>
17
- <div style={{ backgroundColor: '#FEC8D8', padding: '20px' }}>Item 2</div>
18
- <div style={{ backgroundColor: '#D4A5A5', padding: '20px' }}>Item 3</div>
19
- </Grid>
20
- );
16
+ export const Primary = {
17
+ args: {
18
+ primary: true,
19
+ children: 'This is a primary Grid layout.',
20
+ },
21
+ };
21
22
 
22
- export const Default = Template.bind({});
23
- Default.args = {
24
- columns: 3,
25
- gap: '10px',
26
- };
23
+ export const Secondary = {
24
+ args: {
25
+ primary: false,
26
+ children: 'This is a secondary Grid layout.',
27
+ },
28
+ };
@@ -0,0 +1,16 @@
1
+
2
+ .header {
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ padding: 16px;
6
+ gap: 8px;
7
+ border: 1px solid #ddd;
8
+ }
9
+
10
+ .header--primary {
11
+ background-color: #e3f2fd;
12
+ }
13
+
14
+ .header--secondary {
15
+ background-color: #fff;
16
+ }
@@ -0,0 +1,31 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './Header.css';
5
+
6
+ /**
7
+ * Header layout component
8
+ */
9
+ export const Header = ({ children, primary, ...props }) => {
10
+ const mode = primary ? 'header--primary' : 'header--secondary';
11
+ return (
12
+ <div className={['header', mode].join(' ')} {...props}>
13
+ {children}
14
+ </div>
15
+ );
16
+ };
17
+
18
+ Header.propTypes = {
19
+ /**
20
+ * Primary style for the layout
21
+ */
22
+ primary: PropTypes.bool,
23
+ /**
24
+ * Children components to be rendered inside the layout
25
+ */
26
+ children: PropTypes.node.isRequired,
27
+ };
28
+
29
+ Header.defaultProps = {
30
+ primary: false,
31
+ };
@@ -0,0 +1,28 @@
1
+
2
+ import { Header } from './Header';
3
+
4
+ // Storybook configuration for Header component
5
+ export default {
6
+ title: 'Layouts/NavigationAndMenus/Header',
7
+ component: Header,
8
+ parameters: {
9
+ layout: 'fullscreen',
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 Header layout.',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ primary: false,
26
+ children: 'This is a secondary Header layout.',
27
+ },
28
+ };
@@ -0,0 +1,16 @@
1
+
2
+ .herobanner {
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ padding: 16px;
6
+ gap: 8px;
7
+ border: 1px solid #ddd;
8
+ }
9
+
10
+ .herobanner--primary {
11
+ background-color: #e3f2fd;
12
+ }
13
+
14
+ .herobanner--secondary {
15
+ background-color: #fff;
16
+ }
@@ -0,0 +1,31 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './HeroBanner.css';
5
+
6
+ /**
7
+ * HeroBanner layout component
8
+ */
9
+ export const HeroBanner = ({ children, primary, ...props }) => {
10
+ const mode = primary ? 'herobanner--primary' : 'herobanner--secondary';
11
+ return (
12
+ <div className={['herobanner', mode].join(' ')} {...props}>
13
+ {children}
14
+ </div>
15
+ );
16
+ };
17
+
18
+ HeroBanner.propTypes = {
19
+ /**
20
+ * Primary style for the layout
21
+ */
22
+ primary: PropTypes.bool,
23
+ /**
24
+ * Children components to be rendered inside the layout
25
+ */
26
+ children: PropTypes.node.isRequired,
27
+ };
28
+
29
+ HeroBanner.defaultProps = {
30
+ primary: false,
31
+ };
@@ -0,0 +1,28 @@
1
+
2
+ import { HeroBanner } from './HeroBanner';
3
+
4
+ // Storybook configuration for HeroBanner component
5
+ export default {
6
+ title: 'Layouts/HeroSections/HeroBanner',
7
+ component: HeroBanner,
8
+ parameters: {
9
+ layout: 'fullscreen',
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 HeroBanner layout.',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ primary: false,
26
+ children: 'This is a secondary HeroBanner layout.',
27
+ },
28
+ };
@@ -0,0 +1,16 @@
1
+
2
+ .heroimagevideo {
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ padding: 16px;
6
+ gap: 8px;
7
+ border: 1px solid #ddd;
8
+ }
9
+
10
+ .heroimagevideo--primary {
11
+ background-color: #e3f2fd;
12
+ }
13
+
14
+ .heroimagevideo--secondary {
15
+ background-color: #fff;
16
+ }
@@ -0,0 +1,31 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './HeroImageVideo.css';
5
+
6
+ /**
7
+ * HeroImageVideo layout component
8
+ */
9
+ export const HeroImageVideo = ({ children, primary, ...props }) => {
10
+ const mode = primary ? 'heroimagevideo--primary' : 'heroimagevideo--secondary';
11
+ return (
12
+ <div className={['heroimagevideo', mode].join(' ')} {...props}>
13
+ {children}
14
+ </div>
15
+ );
16
+ };
17
+
18
+ HeroImageVideo.propTypes = {
19
+ /**
20
+ * Primary style for the layout
21
+ */
22
+ primary: PropTypes.bool,
23
+ /**
24
+ * Children components to be rendered inside the layout
25
+ */
26
+ children: PropTypes.node.isRequired,
27
+ };
28
+
29
+ HeroImageVideo.defaultProps = {
30
+ primary: false,
31
+ };
@@ -0,0 +1,28 @@
1
+
2
+ import { HeroImageVideo } from './HeroImageVideo';
3
+
4
+ // Storybook configuration for HeroImageVideo component
5
+ export default {
6
+ title: 'Layouts/HeroSections/HeroImageVideo',
7
+ component: HeroImageVideo,
8
+ parameters: {
9
+ layout: 'fullscreen',
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 HeroImageVideo layout.',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ primary: false,
26
+ children: 'This is a secondary HeroImageVideo layout.',
27
+ },
28
+ };
@@ -0,0 +1,16 @@
1
+
2
+ .pagination {
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ padding: 16px;
6
+ gap: 8px;
7
+ border: 1px solid #ddd;
8
+ }
9
+
10
+ .pagination--primary {
11
+ background-color: #e3f2fd;
12
+ }
13
+
14
+ .pagination--secondary {
15
+ background-color: #fff;
16
+ }
@@ -0,0 +1,31 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './Pagination.css';
5
+
6
+ /**
7
+ * Pagination layout component
8
+ */
9
+ export const Pagination = ({ children, primary, ...props }) => {
10
+ const mode = primary ? 'pagination--primary' : 'pagination--secondary';
11
+ return (
12
+ <div className={['pagination', mode].join(' ')} {...props}>
13
+ {children}
14
+ </div>
15
+ );
16
+ };
17
+
18
+ Pagination.propTypes = {
19
+ /**
20
+ * Primary style for the layout
21
+ */
22
+ primary: PropTypes.bool,
23
+ /**
24
+ * Children components to be rendered inside the layout
25
+ */
26
+ children: PropTypes.node.isRequired,
27
+ };
28
+
29
+ Pagination.defaultProps = {
30
+ primary: false,
31
+ };
@@ -0,0 +1,28 @@
1
+
2
+ import { Pagination } from './Pagination';
3
+
4
+ // Storybook configuration for Pagination component
5
+ export default {
6
+ title: 'Layouts/NavigationAndMenus/Pagination',
7
+ component: Pagination,
8
+ parameters: {
9
+ layout: 'fullscreen',
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 Pagination layout.',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ primary: false,
26
+ children: 'This is a secondary Pagination layout.',
27
+ },
28
+ };
@@ -0,0 +1,16 @@
1
+
2
+ .section {
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ padding: 16px;
6
+ gap: 8px;
7
+ border: 1px solid #ddd;
8
+ }
9
+
10
+ .section--primary {
11
+ background-color: #e3f2fd;
12
+ }
13
+
14
+ .section--secondary {
15
+ background-color: #fff;
16
+ }
@@ -0,0 +1,31 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './Section.css';
5
+
6
+ /**
7
+ * Section layout component
8
+ */
9
+ export const Section = ({ children, primary, ...props }) => {
10
+ const mode = primary ? 'section--primary' : 'section--secondary';
11
+ return (
12
+ <div className={['section', mode].join(' ')} {...props}>
13
+ {children}
14
+ </div>
15
+ );
16
+ };
17
+
18
+ Section.propTypes = {
19
+ /**
20
+ * Primary style for the layout
21
+ */
22
+ primary: PropTypes.bool,
23
+ /**
24
+ * Children components to be rendered inside the layout
25
+ */
26
+ children: PropTypes.node.isRequired,
27
+ };
28
+
29
+ Section.defaultProps = {
30
+ primary: false,
31
+ };
@@ -0,0 +1,28 @@
1
+
2
+ import { Section } from './Section';
3
+
4
+ // Storybook configuration for Section component
5
+ export default {
6
+ title: 'Layouts/Section/Section',
7
+ component: Section,
8
+ parameters: {
9
+ layout: 'fullscreen',
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 Section layout.',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ primary: false,
26
+ children: 'This is a secondary Section layout.',
27
+ },
28
+ };
@@ -0,0 +1,16 @@
1
+
2
+ .sidebar {
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ padding: 16px;
6
+ gap: 8px;
7
+ border: 1px solid #ddd;
8
+ }
9
+
10
+ .sidebar--primary {
11
+ background-color: #e3f2fd;
12
+ }
13
+
14
+ .sidebar--secondary {
15
+ background-color: #fff;
16
+ }
@@ -0,0 +1,71 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import './Sidebar.css';
4
+
5
+ export const Sidebar = ({
6
+ links = [], // Default value for links
7
+ logo = null, // Default value for logo
8
+ userControls = null, // Default value for userControls
9
+ styleOverrides = {}, // Default value for styleOverrides
10
+ }) => {
11
+ const style = {};
12
+
13
+ // Map of styleOverrides keys to CSS variable names
14
+ const cssVariableMap = {
15
+ sidebarBackgroundColor: '--sidebar-background-color',
16
+ sidebarBorderColor: '--sidebar-border-color',
17
+ sidebarPadding: '--sidebar-padding',
18
+ sidebarWidth: '--sidebar-width',
19
+ logoMarginBottom: '--sidebar-logo-margin-bottom',
20
+ itemMargin: '--sidebar-item-margin',
21
+ linkColor: '--sidebar-link-color',
22
+ linkPadding: '--sidebar-link-padding',
23
+ linkHoverBackgroundColor: '--sidebar-link-hover-background-color',
24
+ linkHoverBorderRadius: '--sidebar-link-hover-border-radius',
25
+ controlsMarginTop: '--sidebar-controls-margin-top',
26
+ };
27
+
28
+ // Set CSS variables based on styleOverrides
29
+ Object.keys(styleOverrides).forEach((key) => {
30
+ const cssVar = cssVariableMap[key];
31
+ if (cssVar) {
32
+ style[cssVar] = styleOverrides[key];
33
+ }
34
+ });
35
+
36
+ return (
37
+ <aside className="sidebar" style={style}>
38
+ <div className="sidebar__logo">
39
+ {logo}
40
+ </div>
41
+ <ul className="sidebar__links">
42
+ {links.map((link, index) => (
43
+ <li key={index} className="sidebar__item">
44
+ <a
45
+ href={link.url}
46
+ className={`sidebar__link ${link.isActive ? 'sidebar__link--active' : ''}`}
47
+ >
48
+ {link.label}
49
+ </a>
50
+ </li>
51
+ ))}
52
+ </ul>
53
+ <div className="sidebar__controls">
54
+ {userControls}
55
+ </div>
56
+ </aside>
57
+ );
58
+ };
59
+
60
+ Sidebar.propTypes = {
61
+ links: PropTypes.arrayOf(
62
+ PropTypes.shape({
63
+ url: PropTypes.string.isRequired,
64
+ label: PropTypes.string.isRequired,
65
+ isActive: PropTypes.bool,
66
+ })
67
+ ),
68
+ logo: PropTypes.node,
69
+ userControls: PropTypes.node,
70
+ styleOverrides: PropTypes.object,
71
+ };
@@ -0,0 +1,28 @@
1
+
2
+ import { Sidebar } from './Sidebar';
3
+
4
+ // Storybook configuration for Sidebar component
5
+ export default {
6
+ title: 'Layouts/ContentOrganization/Sidebar',
7
+ component: Sidebar,
8
+ parameters: {
9
+ layout: 'fullscreen',
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 Sidebar layout.',
20
+ },
21
+ };
22
+
23
+ export const Secondary = {
24
+ args: {
25
+ primary: false,
26
+ children: 'This is a secondary Sidebar layout.',
27
+ },
28
+ };
@@ -0,0 +1,16 @@
1
+
2
+ .tabs {
3
+ display: flex;
4
+ flex-wrap: wrap;
5
+ padding: 16px;
6
+ gap: 8px;
7
+ border: 1px solid #ddd;
8
+ }
9
+
10
+ .tabs--primary {
11
+ background-color: #e3f2fd;
12
+ }
13
+
14
+ .tabs--secondary {
15
+ background-color: #fff;
16
+ }
@@ -0,0 +1,31 @@
1
+
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import './Tabs.css';
5
+
6
+ /**
7
+ * Tabs layout component
8
+ */
9
+ export const Tabs = ({ children, primary, ...props }) => {
10
+ const mode = primary ? 'tabs--primary' : 'tabs--secondary';
11
+ return (
12
+ <div className={['tabs', mode].join(' ')} {...props}>
13
+ {children}
14
+ </div>
15
+ );
16
+ };
17
+
18
+ Tabs.propTypes = {
19
+ /**
20
+ * Primary style for the layout
21
+ */
22
+ primary: PropTypes.bool,
23
+ /**
24
+ * Children components to be rendered inside the layout
25
+ */
26
+ children: PropTypes.node.isRequired,
27
+ };
28
+
29
+ Tabs.defaultProps = {
30
+ primary: false,
31
+ };