this.gui 1.0.15 → 1.0.17
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.
- package/README.md +178 -49
- package/dist/style.css +1 -1
- package/dist/this-gui.es.js +4645 -1922
- package/dist/this-gui.umd.js +34 -22
- package/package.json +14 -14
- package/src/App.jsx +53 -21
- package/src/Page.jsx +28 -0
- package/src/SiteBuilder.jsx +39 -0
- package/src/example.json +43 -0
- package/src/index.mdx +10 -0
- package/src/main.jsx +11 -14
- package/src/scripts/ComponentRegistry.js +70 -0
- package/src/scripts/postinstall.js +40 -1
- package/src/scripts/renderComponents.js +11 -0
- package/src/stories/Atoms/Alert/Alert.css +196 -14
- package/src/stories/Atoms/Alert/Alert.jsx +43 -28
- package/src/stories/Atoms/Alert/Alert.stories.jsx +154 -28
- package/src/stories/Atoms/Audio/Audio.css +246 -16
- package/src/stories/Atoms/Audio/Audio.jsx +204 -29
- package/src/stories/Atoms/Audio/Audio.stories.jsx +178 -28
- package/src/stories/Atoms/Badge/Badge.css +235 -15
- package/src/stories/Atoms/Badge/Badge.jsx +44 -31
- package/src/stories/Atoms/Badge/Badge.stories.jsx +109 -29
- package/src/stories/Atoms/Button/Button.css +106 -45
- package/src/stories/Atoms/Button/Button.jsx +31 -82
- package/src/stories/Atoms/Button/Button.stories.jsx +170 -40
- package/src/stories/Atoms/Caption/Caption.css +156 -16
- package/src/stories/Atoms/Caption/Caption.jsx +62 -31
- package/src/stories/Atoms/Caption/Caption.stories.jsx +194 -28
- package/src/stories/Atoms/Checkbox/Checkbox.css +168 -15
- package/src/stories/Atoms/Checkbox/Checkbox.jsx +73 -31
- package/src/stories/Atoms/Checkbox/Checkbox.stories.jsx +98 -27
- package/src/stories/Atoms/Container/Container.css +75 -15
- package/src/stories/Atoms/Container/Container.jsx +41 -28
- package/src/stories/Atoms/Container/Container.stories.jsx +92 -29
- package/src/stories/Atoms/Divider/Divider.css +131 -13
- package/src/stories/Atoms/Divider/Divider.jsx +54 -33
- package/src/stories/Atoms/Divider/Divider.stories.jsx +93 -29
- package/src/stories/Atoms/Grid/Grid.css +160 -0
- package/src/stories/Atoms/Grid/Grid.jsx +43 -0
- package/src/stories/Atoms/Grid/Grid.stories.jsx +84 -0
- package/src/stories/Atoms/Heading/Heading.css +99 -16
- package/src/stories/Atoms/Heading/Heading.jsx +57 -29
- package/src/stories/Atoms/Heading/Heading.stories.jsx +117 -28
- package/src/stories/Atoms/Icon/Icon.css +219 -27
- package/src/stories/Atoms/Icon/Icon.jsx +67 -38
- package/src/stories/Atoms/Icon/Icon.stories.jsx +156 -51
- package/src/stories/Atoms/Image/Image.css +231 -15
- package/src/stories/Atoms/Image/Image.jsx +166 -32
- package/src/stories/Atoms/Image/Image.stories.jsx +319 -28
- package/src/stories/Atoms/Label/Label.css +158 -16
- package/src/stories/Atoms/Label/Label.jsx +61 -31
- package/src/stories/Atoms/Label/Label.stories.jsx +167 -28
- package/src/stories/Atoms/Link/Link.css +58 -16
- package/src/stories/Atoms/Link/Link.jsx +73 -32
- package/src/stories/Atoms/Link/Link.stories.jsx +141 -29
- package/src/stories/Atoms/Loader/Loader.css +93 -16
- package/src/stories/Atoms/Loader/Loader.jsx +47 -30
- package/src/stories/Atoms/Loader/Loader.stories.jsx +86 -28
- package/src/stories/Atoms/Logo/Logo.css +94 -0
- package/src/stories/Atoms/Logo/Logo.jsx +53 -0
- package/src/stories/Atoms/Logo/Logo.stories.jsx +120 -0
- package/src/stories/Atoms/Paragraph/Paragraph.css +167 -16
- package/src/stories/Atoms/Paragraph/Paragraph.jsx +67 -31
- package/src/stories/Atoms/Paragraph/Paragraph.stories.jsx +130 -28
- package/src/stories/Atoms/ProgressBar/ProgressBar.css +115 -17
- package/src/stories/Atoms/ProgressBar/ProgressBar.jsx +30 -31
- package/src/stories/Atoms/ProgressBar/ProgressBar.stories.jsx +72 -27
- package/src/stories/Atoms/RadioButton/RadioButton.css +118 -17
- package/src/stories/Atoms/RadioButton/RadioButton.jsx +77 -31
- package/src/stories/Atoms/RadioButton/RadioButton.stories.jsx +99 -27
- package/src/stories/Atoms/Range/Range.css +169 -0
- package/src/stories/Atoms/Range/Range.jsx +87 -0
- package/src/stories/Atoms/Range/Range.stories.jsx +110 -0
- package/src/stories/Atoms/Section/Section.css +268 -0
- package/src/stories/Atoms/Section/Section.jsx +63 -0
- package/src/stories/Atoms/Section/Section.stories.jsx +46 -0
- package/src/stories/Atoms/Select/Select.css +74 -16
- package/src/stories/Atoms/Select/Select.jsx +62 -30
- package/src/stories/Atoms/Select/Select.stories.jsx +95 -27
- package/src/stories/Atoms/Slider/Slider.css +77 -16
- package/src/stories/Atoms/Slider/Slider.jsx +119 -31
- package/src/stories/Atoms/Slider/Slider.stories.jsx +77 -28
- package/src/stories/Atoms/Snackbar/Snackbar.css +297 -13
- package/src/stories/Atoms/Snackbar/Snackbar.jsx +62 -31
- package/src/stories/Atoms/Snackbar/Snackbar.stories.jsx +63 -26
- package/src/stories/Atoms/Spacer/Spacer.css +101 -16
- package/src/stories/Atoms/Spacer/Spacer.jsx +26 -32
- package/src/stories/Atoms/Spacer/Spacer.stories.jsx +50 -30
- package/src/stories/Atoms/Spinner/Spinner.css +97 -16
- package/src/stories/Atoms/Spinner/Spinner.jsx +50 -26
- package/src/stories/Atoms/Spinner/Spinner.stories.jsx +47 -30
- package/src/stories/Atoms/Tag/Tag.css +97 -14
- package/src/stories/Atoms/Tag/Tag.jsx +58 -24
- package/src/stories/Atoms/Tag/Tag.stories.jsx +55 -29
- package/src/stories/Atoms/TextArea/TextArea.css +85 -15
- package/src/stories/Atoms/TextArea/TextArea.jsx +108 -31
- package/src/stories/Atoms/TextArea/TextArea.stories.jsx +25 -30
- package/src/stories/Atoms/TextInput/TextInput.css +90 -17
- package/src/stories/Atoms/TextInput/TextInput.jsx +119 -27
- package/src/stories/Atoms/TextInput/TextInput.stories.jsx +53 -25
- package/src/stories/Atoms/Toggle/Toggle.css +106 -17
- package/src/stories/Atoms/Toggle/Toggle.jsx +56 -28
- package/src/stories/Atoms/Toggle/Toggle.stories.jsx +24 -30
- package/src/stories/Atoms/Tooltip/Tooltip.css +368 -14
- package/src/stories/Atoms/Tooltip/Tooltip.jsx +33 -28
- package/src/stories/Atoms/Tooltip/Tooltip.stories.jsx +42 -31
- package/src/stories/Atoms/Video/Video.css +28 -18
- package/src/stories/Atoms/Video/Video.jsx +66 -29
- package/src/stories/Atoms/Video/Video.stories.jsx +30 -30
- package/src/stories/Atoms/index.js +9 -2
- package/src/stories/Atoms/meta_Atoms.js +6 -1
- package/src/stories/Layouts/Accordion/Accordion.css +293 -0
- package/src/stories/Layouts/Accordion/Accordion.jsx +74 -0
- package/src/stories/Layouts/Accordion/Accordion.stories.jsx +39 -0
- package/src/stories/Layouts/Flexbox/Flexbox.css +16 -0
- package/src/stories/Layouts/Flexbox/Flexbox.jsx +11 -0
- package/src/stories/Layouts/Flexbox/Flexbox.stories.jsx +28 -0
- package/src/stories/Layouts/Footer/Footer.css +16 -0
- package/src/stories/Layouts/Footer/Footer.jsx +31 -0
- package/src/stories/Layouts/Footer/Footer.stories.jsx +28 -0
- package/src/stories/Layouts/Header/Header.css +16 -0
- package/src/stories/Layouts/Header/Header.jsx +31 -0
- package/src/stories/Layouts/Header/Header.stories.jsx +28 -0
- package/src/stories/Layouts/HeroBanner/HeroBanner.css +16 -0
- package/src/stories/Layouts/HeroBanner/HeroBanner.jsx +31 -0
- package/src/stories/Layouts/HeroBanner/HeroBanner.stories.jsx +28 -0
- package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.css +16 -0
- package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.jsx +31 -0
- package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.stories.jsx +28 -0
- package/src/stories/Layouts/Pagination/Pagination.css +16 -0
- package/src/stories/Layouts/Pagination/Pagination.jsx +31 -0
- package/src/stories/Layouts/Pagination/Pagination.stories.jsx +28 -0
- package/src/stories/Layouts/Sidebar/Sidebar.css +16 -0
- package/src/stories/Layouts/Sidebar/Sidebar.jsx +71 -0
- package/src/stories/Layouts/Sidebar/Sidebar.stories.jsx +28 -0
- package/src/stories/Layouts/Tabs/Tabs.css +16 -0
- package/src/stories/Layouts/Tabs/Tabs.jsx +31 -0
- package/src/stories/Layouts/Tabs/Tabs.stories.jsx +28 -0
- package/src/stories/Layouts/index.js +25 -0
- package/src/stories/Layouts/meta_Layouts.js +28 -0
- package/src/stories/Molecules/Accordion/Accordion.css +1 -1
- package/src/stories/Molecules/Accordion/Accordion.jsx +1 -1
- package/src/stories/Molecules/Accordion/Accordion.stories.jsx +1 -1
- package/src/stories/Molecules/AudioPlayer/AudioPlayer.css +95 -2
- package/src/stories/Molecules/AudioPlayer/AudioPlayer.jsx +232 -13
- package/src/stories/Molecules/AudioPlayer/AudioPlayer.stories.jsx +46 -11
- package/src/stories/Molecules/AvatarWithName/AvatarWithName.css +128 -2
- package/src/stories/Molecules/AvatarWithName/AvatarWithName.jsx +69 -14
- package/src/stories/Molecules/AvatarWithName/AvatarWithName.stories.jsx +12 -12
- package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.css +145 -2
- package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.jsx +39 -13
- package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.stories.jsx +27 -11
- package/src/stories/Molecules/ButtonGroup/ButtonGroup.css +463 -2
- package/src/stories/Molecules/ButtonGroup/ButtonGroup.jsx +34 -12
- package/src/stories/Molecules/ButtonGroup/ButtonGroup.stories.jsx +36 -12
- package/src/stories/Molecules/Card/Card.css +39 -2
- package/src/stories/Molecules/Card/Card.jsx +80 -13
- package/src/stories/Molecules/Card/Card.stories.jsx +27 -13
- package/src/stories/Molecules/ComparisonTable/ComparisonTable.css +33 -2
- package/src/stories/Molecules/ComparisonTable/ComparisonTable.jsx +91 -12
- package/src/stories/Molecules/ComparisonTable/ComparisonTable.stories.jsx +73 -12
- package/src/stories/Molecules/Dropdown/Dropdown.css +192 -0
- package/src/stories/Molecules/Dropdown/Dropdown.jsx +96 -0
- package/src/stories/Molecules/Dropdown/Dropdown.stories.jsx +45 -0
- package/src/stories/Molecules/Navbar/Navbar.css +63 -59
- package/src/stories/Molecules/Navbar/Navbar.jsx +43 -48
- package/src/stories/Molecules/Navbar/Navbar.stories.jsx +58 -8
- package/src/stories/Molecules/SearchBar/SearchBar.css +66 -1
- package/src/stories/Molecules/SearchBar/SearchBar.jsx +59 -11
- package/src/stories/Molecules/SearchBar/SearchBar.stories.jsx +16 -7
- package/src/stories/Molecules/SelectTheme/SelectTheme.jsx +16 -38
- package/src/stories/Molecules/SelectTheme/SelectTheme.stories.jsx +1 -2
- package/src/stories/Molecules/Sidebar/Sidebar.css +65 -2
- package/src/stories/Molecules/Sidebar/Sidebar.jsx +66 -11
- package/src/stories/Molecules/Sidebar/Sidebar.stories.jsx +20 -5
- package/src/stories/Molecules/index.js +2 -1
- package/src/stories/Molecules/{Molecules.js → meta_Molecules.js} +6 -3
- package/src/stories/Templates/AdminDashboard/AdminDashboard.css +7 -0
- package/src/stories/Templates/AdminDashboard/AdminDashboard.jsx +24 -0
- package/src/stories/Templates/AdminDashboard/AdminDashboard.stories.jsx +20 -0
- package/src/stories/Templates/CallToAction/CallToAction.css +7 -0
- package/src/stories/Templates/CallToAction/CallToAction.jsx +24 -0
- package/src/stories/Templates/CallToAction/CallToAction.stories.jsx +20 -0
- package/src/stories/Templates/FeaturesList/FeaturesList.css +7 -0
- package/src/stories/Templates/FeaturesList/FeaturesList.jsx +24 -0
- package/src/stories/Templates/FeaturesList/FeaturesList.stories.jsx +20 -0
- package/src/stories/Templates/FormSection/FormSection.css +7 -0
- package/src/stories/Templates/FormSection/FormSection.jsx +24 -0
- package/src/stories/Templates/FormSection/FormSection.stories.jsx +20 -0
- package/src/stories/Templates/HeroSection/HeroSection.css +7 -0
- package/src/stories/Templates/HeroSection/HeroSection.jsx +24 -0
- package/src/stories/Templates/HeroSection/HeroSection.stories.jsx +20 -0
- package/src/stories/Templates/LocationInfo/LocationInfo.css +7 -0
- package/src/stories/Templates/LocationInfo/LocationInfo.jsx +24 -0
- package/src/stories/Templates/LocationInfo/LocationInfo.stories.jsx +20 -0
- package/src/stories/Templates/ProductPage/ProductPage.css +7 -0
- package/src/stories/Templates/ProductPage/ProductPage.jsx +24 -0
- package/src/stories/Templates/ProductPage/ProductPage.stories.jsx +20 -0
- package/src/stories/Templates/RegistrationPage/RegistrationPage.css +7 -0
- package/src/stories/Templates/RegistrationPage/RegistrationPage.jsx +24 -0
- package/src/stories/Templates/RegistrationPage/RegistrationPage.stories.jsx +20 -0
- package/src/stories/Templates/ShoppingCart/ShoppingCart.css +7 -0
- package/src/stories/Templates/ShoppingCart/ShoppingCart.jsx +24 -0
- package/src/stories/Templates/ShoppingCart/ShoppingCart.stories.jsx +20 -0
- package/src/stories/Templates/SidebarTopNav/SidebarTopNav.css +7 -0
- package/src/stories/Templates/SidebarTopNav/SidebarTopNav.jsx +24 -0
- package/src/stories/Templates/SidebarTopNav/SidebarTopNav.stories.jsx +20 -0
- package/src/stories/Templates/SignInPage/SignInPage.css +7 -0
- package/src/stories/Templates/SignInPage/SignInPage.jsx +24 -0
- package/src/stories/Templates/SignInPage/SignInPage.stories.jsx +20 -0
- package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.css +7 -0
- package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.jsx +24 -0
- package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.stories.jsx +20 -0
- package/src/stories/Templates/Testimonials/Testimonials.css +7 -0
- package/src/stories/Templates/Testimonials/Testimonials.jsx +24 -0
- package/src/stories/Templates/Testimonials/Testimonials.stories.jsx +20 -0
- package/src/stories/Templates/index.js +33 -0
- package/src/stories/Templates/{Templates.js → meta_Templates.js} +3 -1
- package/src/stories/assets/logo.png +0 -0
- package/src/stories/assets/logo.svg +106 -0
- package/src/stories/assets/test.svg +3 -0
- package/src/themes/README_Styles.md +301 -0
- package/src/themes/ThemeProvider.jsx +47 -22
- package/src/themes/styles/dracula/dark.css +0 -0
- package/src/themes/styles/dracula/light.css +0 -0
- package/src/themes/styles/github/dark.css +0 -0
- package/src/themes/styles/github/light.css +0 -0
- package/src/themes/styles/neurons/dark.css +247 -0
- package/src/themes/styles/neurons/light.css +280 -0
- package/dist/Styles.md +0 -446
- package/dist/context.md +0 -942
- package/dist/github-3688a83a.js +0 -5
- package/dist/gothic-94a7ecd6.js +0 -5
- package/dist/newsprint-32bf94d9.js +0 -5
- package/dist/night-4a954853.js +0 -5
- package/dist/pixyll-94de4610.js +0 -5
- package/dist/whitey-db68723e.js +0 -5
- package/src/MDXEditor.jsx +0 -32
- package/src/Theme.jsx +0 -28
- package/src/components/CodeBlock.jsx +0 -22
- package/src/components/ComponentFactory.jsx +0 -36
- package/src/components/ComponentRegistry.js +0 -21
- package/src/scripts/generateComponents.js +0 -166
- package/src/scripts/verifyMolecules.js +0 -158
- package/src/scripts/verify_and_install_atoms.js +0 -211
- package/src/stories/Atoms/RangeInput/RangeInput.css +0 -29
- package/src/stories/Atoms/RangeInput/RangeInput.jsx +0 -41
- package/src/stories/Atoms/RangeInput/RangeInput.stories.jsx +0 -41
- package/src/stories/Components.md +0 -189
- package/src/stories/Layouts/Grid/Grid.css +0 -4
- package/src/stories/Layouts/Grid/Grid.jsx +0 -15
- package/src/stories/Layouts/Grid/Grid.stories.jsx +0 -26
- package/src/stories/Layouts/Layout.js +0 -28
- package/src/styles/Header.modules.css +0 -32
- package/src/styles/global.css +0 -59
- package/src/themes/Themes.js +0 -44
- package/src/themes/dark.js +0 -22
- package/src/themes/light.js +0 -22
- package/src/themes/typ/Readme.md +0 -4
- package/src/themes/typ/github/open-sans-v17-latin-ext_latin-700.woff2 +0 -0
- package/src/themes/typ/github/open-sans-v17-latin-ext_latin-700italic.woff2 +0 -0
- package/src/themes/typ/github/open-sans-v17-latin-ext_latin-italic.woff2 +0 -0
- package/src/themes/typ/github/open-sans-v17-latin-ext_latin-regular.woff2 +0 -0
- package/src/themes/typ/github.css +0 -416
- package/src/themes/typ/gothic/GUST e-foundry License.txt +0 -29
- package/src/themes/typ/gothic/didact-gothic-c-ext.woff2 +0 -0
- package/src/themes/typ/gothic/didact-gothic-c.woff2 +0 -0
- package/src/themes/typ/gothic/texgyreadventor-bold.woff +0 -0
- package/src/themes/typ/gothic/texgyreadventor-bolditalic.woff +0 -0
- package/src/themes/typ/gothic/texgyreadventor-italic.woff +0 -0
- package/src/themes/typ/gothic/texgyreadventor-regular.woff +0 -0
- package/src/themes/typ/gothic.css +0 -410
- package/src/themes/typ/newsprint/pt-serif-v11-latin-700.woff2 +0 -0
- package/src/themes/typ/newsprint/pt-serif-v11-latin-700italic.woff2 +0 -0
- package/src/themes/typ/newsprint/pt-serif-v11-latin-italic.woff2 +0 -0
- package/src/themes/typ/newsprint/pt-serif-v11-latin-regular.woff2 +0 -0
- package/src/themes/typ/newsprint.css +0 -622
- package/src/themes/typ/night/codeblock.dark.css +0 -113
- package/src/themes/typ/night/credit.html +0 -1
- package/src/themes/typ/night/cursor.png +0 -0
- package/src/themes/typ/night/cursor@2x.png +0 -0
- package/src/themes/typ/night/mermaid.dark.css +0 -7
- package/src/themes/typ/night/sourcemode.dark.css +0 -38
- package/src/themes/typ/night.css +0 -1032
- package/src/themes/typ/pixyll/lato-v14-latin-300.woff +0 -0
- package/src/themes/typ/pixyll/lato-v14-latin-300italic.woff +0 -0
- package/src/themes/typ/pixyll/lato-v14-latin-900.woff +0 -0
- package/src/themes/typ/pixyll/lato-v14-latin-900italic.woff +0 -0
- package/src/themes/typ/pixyll/merriweather-v19-latin-300.woff +0 -0
- package/src/themes/typ/pixyll/merriweather-v19-latin-300italic.woff +0 -0
- package/src/themes/typ/pixyll/merriweather-v19-latin-700.woff +0 -0
- package/src/themes/typ/pixyll/merriweather-v19-latin-700italic.woff +0 -0
- package/src/themes/typ/pixyll.css +0 -528
- package/src/themes/typ/whitey.css +0 -299
- /package/src/stories/Organisms/{Organisms.js → meta_Organisms.js} +0 -0
package/dist/whitey-db68723e.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
const t = `html{font-size:19px}html,body{margin:auto;background:#fefefe;-webkit-font-smoothing:antialiased}body{font-family:Vollkorn,Palatino,Times;color:#333;line-height:1.4;text-align:justify}#write{max-width:960px;margin:0 auto 2em;line-height:1.53;padding-top:40px}@media only screen and (min-width: 1400px){#write{max-width:1100px}}@media print{html{font-size:13px}}#write>h1:first-child,h1{margin-top:1.6em;font-weight:400}h1{font-size:3em}h2{margin-top:2em;font-weight:400}h3{font-weight:400;font-style:italic;margin-top:3em}h1,h2,h3{text-align:center}h2:after{border-bottom:1px solid #2f2f2f;content:"";width:100px;display:block;margin:0 auto;height:1px}h1+h2,h2+h3{margin-top:.83em}p,.mathjax-block{margin-top:0;-webkit-hypens:auto;-moz-hypens:auto;-webkit-hyphens:auto;hyphens:auto}ul{list-style:square;padding-left:1.2em}ol{padding-left:1.2em}@media print{ol{padding-left:40px}}blockquote{margin-left:1em;padding-left:1em;border-left:1px solid #ddd}code,pre{font-family:Consolas,Menlo,Monaco,monospace,serif;font-size:.9em;background:white}.md-fences{margin-left:1em;padding-left:1em;border:1px solid #ddd;padding-bottom:8px;padding-top:6px;margin-bottom:1.5em}a{color:#2484c1;text-decoration:none}a:hover{text-decoration:underline}a img{border:none}h1 a,h1 a:hover{color:#333;text-decoration:none}hr{color:#ddd;height:1px;margin:2em 0;border-top:solid 1px #ddd;border-bottom:none;border-left:0;border-right:0}.ty-table-edit{background:#ededed;padding-top:4px}table{margin-bottom:1.333333rem}table th,table td{padding:8px;line-height:1.333333rem;vertical-align:top;border-top:1px solid #ddd}table th{font-weight:700}table thead th{vertical-align:bottom}table caption+thead tr:first-child th,table caption+thead tr:first-child td,table colgroup+thead tr:first-child th,table colgroup+thead tr:first-child td,table thead:first-child tr:first-child th,table thead:first-child tr:first-child td{border-top:0}table tbody+tbody{border-top:2px solid #ddd}.task-list{padding:0}.md-task-list-item{padding-left:1.6rem}.md-task-list-item>input:before{content:"√";display:inline-block;width:1.33333333rem;height:1.6rem;vertical-align:middle;text-align:center;color:#ddd;background-color:#fefefe}.md-task-list-item>input:checked:before,.md-task-list-item>input[checked]:before{color:inherit}.md-tag{color:inherit;font:inherit}#write pre.md-meta-block{min-height:35px;white-space:pre;background:#f8f8f8;border:0px;color:#999;width:100vw;max-width:calc(100% + 60px);margin-left:-30px;border-left:30px #f8f8f8 solid;border-right:30px #f8f8f8 solid;margin-bottom:2em;margin-top:-1.3333333333333rem;line-height:1.8em;font-size:.76em;padding:26px 1em 10px 0}.md-img-error.md-image>.md-meta{vertical-align:bottom}#write>h5.md-focus:before{top:2px}.md-toc{margin-top:40px}.md-toc-content{padding-bottom:20px}.outline-expander:before{color:inherit;font-size:14px;top:auto;content:"";font-family:FontAwesome}.outline-expander:hover:before,.outline-item-open>.outline-item>.outline-expander:before{content:""}#typora-source{font-family:Courier,monospace;color:#6a6a6a}.html-for-mac #typora-sidebar{box-shadow:0 6px 12px #0000002d}.cm-s-typora-default .cm-header,.cm-s-typora-default .cm-property,.CodeMirror.cm-s-typora-default div.CodeMirror-cursor{color:#428bca}.cm-s-typora-default .cm-atom,.cm-s-typora-default .cm-number{color:#777}.typora-node .file-list-item-parent-loc,.typora-node .file-list-item-time,.typora-node .file-list-item-summary{font-family:arial,sans-serif}.md-task-list-item>input{margin-left:-1.3em;margin-top:calc(1rem - 12px)}.md-mathjax-midline{background:#fafafa}.md-fences .code-tooltip{bottom:-2em!important}.dropdown-menu .divider{border-color:#e5e5e5}
|
|
2
|
-
`;
|
|
3
|
-
export {
|
|
4
|
-
t as default
|
|
5
|
-
};
|
package/src/MDXEditor.jsx
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
// this.GUI/src/MDXEditor.jsx
|
|
2
|
-
import React, { useState } from 'react';
|
|
3
|
-
import { MdxProvider } from './providers/MdxProvider';
|
|
4
|
-
import { ThemeProvider } from './providers/ThemeProvider';
|
|
5
|
-
import Editor from '@monaco-editor/react'; // Or any other MDX editor you prefer
|
|
6
|
-
|
|
7
|
-
const MDXEditor = () => {
|
|
8
|
-
const [content, setContent] = useState('# Your MDX here');
|
|
9
|
-
|
|
10
|
-
return (
|
|
11
|
-
<ThemeProvider>
|
|
12
|
-
<MdxProvider>
|
|
13
|
-
<div style={{ display: 'flex', height: '100vh' }}>
|
|
14
|
-
<Editor
|
|
15
|
-
height="100%"
|
|
16
|
-
defaultLanguage="mdx"
|
|
17
|
-
value={content}
|
|
18
|
-
onChange={(value) => setContent(value || '')}
|
|
19
|
-
/>
|
|
20
|
-
<div style={{ flex: 1, padding: '20px', overflow: 'auto' }}>
|
|
21
|
-
<MdxProvider>
|
|
22
|
-
{/* Live preview of the MDX content */}
|
|
23
|
-
{React.createElement(MdxProvider, {}, content)}
|
|
24
|
-
</MdxProvider>
|
|
25
|
-
</div>
|
|
26
|
-
</div>
|
|
27
|
-
</MdxProvider>
|
|
28
|
-
</ThemeProvider>
|
|
29
|
-
);
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export default MDXEditor;
|
package/src/Theme.jsx
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
// this.GUI/src/Theme.jsx
|
|
2
|
-
import React, { useState, useEffect } from 'react';
|
|
3
|
-
import { CssVarsProvider } from '@mui/joy/styles'; // Import MUI Joy's CssVarsProvider
|
|
4
|
-
import lightTheme from './themes/light'; // Import light theme
|
|
5
|
-
import darkTheme from './themes/dark'; // Import dark theme
|
|
6
|
-
|
|
7
|
-
const Theme = ({ children }) => {
|
|
8
|
-
const [theme, setTheme] = useState(localStorage.getItem('theme') || 'light');
|
|
9
|
-
|
|
10
|
-
useEffect(() => {
|
|
11
|
-
localStorage.setItem('theme', theme); // Persist theme preference in localStorage
|
|
12
|
-
}, [theme]);
|
|
13
|
-
|
|
14
|
-
const currentTheme = theme === 'dark' ? darkTheme : lightTheme;
|
|
15
|
-
|
|
16
|
-
return (
|
|
17
|
-
<CssVarsProvider theme={currentTheme}> {/* Wrap with the correct theme */}
|
|
18
|
-
<div>
|
|
19
|
-
<button onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}>
|
|
20
|
-
Toggle Theme
|
|
21
|
-
</button>
|
|
22
|
-
{children}
|
|
23
|
-
</div>
|
|
24
|
-
</CssVarsProvider>
|
|
25
|
-
);
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export default Theme;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// src/components/CodeBlock.jsx
|
|
2
|
-
|
|
3
|
-
import React from 'react';
|
|
4
|
-
import { Light as SyntaxHighlighter } from 'react-syntax-highlighter';
|
|
5
|
-
// Import the language(s) you need
|
|
6
|
-
import javascript from 'react-syntax-highlighter/dist/esm/languages/hljs/javascript';
|
|
7
|
-
// Import a syntax highlighting style
|
|
8
|
-
import { atomOneLight } from 'react-syntax-highlighter/dist/esm/styles/hljs';
|
|
9
|
-
|
|
10
|
-
SyntaxHighlighter.registerLanguage('javascript', javascript);
|
|
11
|
-
|
|
12
|
-
const CodeBlock = ({ className, children }) => {
|
|
13
|
-
const language = className ? className.replace('language-', '') : 'javascript';
|
|
14
|
-
|
|
15
|
-
return (
|
|
16
|
-
<SyntaxHighlighter language={language} style={atomOneLight}>
|
|
17
|
-
{children}
|
|
18
|
-
</SyntaxHighlighter>
|
|
19
|
-
);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
export default CodeBlock;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
// src/components/ComponentFactory.jsx
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import GUI from '../../index';
|
|
4
|
-
|
|
5
|
-
const ComponentFactory = ({ category, subcategory, componentName, ...props }) => {
|
|
6
|
-
const Category = GUI[category];
|
|
7
|
-
|
|
8
|
-
if (!Category) {
|
|
9
|
-
console.error(`Category "${category}" not found.`);
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
let Component;
|
|
14
|
-
|
|
15
|
-
if (subcategory) {
|
|
16
|
-
const Subcategory = Category[subcategory];
|
|
17
|
-
|
|
18
|
-
if (!Subcategory) {
|
|
19
|
-
console.error(`Subcategory "${subcategory}" not found in category "${category}".`);
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
Component = Subcategory[componentName];
|
|
24
|
-
} else {
|
|
25
|
-
Component = Category[componentName];
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (!Component) {
|
|
29
|
-
console.error(`Component "${componentName}" not found in category "${category}"${subcategory ? ` and subcategory "${subcategory}"` : ''}.`);
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return <Component {...props} />;
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
export default ComponentFactory;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// src/components/ComponentRegistry.js
|
|
2
|
-
import { Button } from '../stories/_Atomic/Button/Button';
|
|
3
|
-
import { Input } from '../stories/_Atomic/Input/Input';
|
|
4
|
-
// Import the Navbar component
|
|
5
|
-
import { Navbar } from '../stories/_Molecules/Navbar/Navbar';
|
|
6
|
-
// ... import other components
|
|
7
|
-
|
|
8
|
-
const ComponentRegistry = {
|
|
9
|
-
_Atomic: {
|
|
10
|
-
Button,
|
|
11
|
-
Input,
|
|
12
|
-
// ... other atomic components
|
|
13
|
-
},
|
|
14
|
-
_Molecules: {
|
|
15
|
-
Navbar,
|
|
16
|
-
// ... other molecule components
|
|
17
|
-
},
|
|
18
|
-
// ... other categories
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export default ComponentRegistry;
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
const components = {
|
|
2
|
-
"Atomic": {
|
|
3
|
-
"Text": ["Heading", "Paragraph", "Label", "Caption"],
|
|
4
|
-
"Interactive": [
|
|
5
|
-
"Button",
|
|
6
|
-
"Link",
|
|
7
|
-
"Icon",
|
|
8
|
-
"Checkbox",
|
|
9
|
-
"RadioButton",
|
|
10
|
-
"Toggle",
|
|
11
|
-
"TextInput",
|
|
12
|
-
"TextArea",
|
|
13
|
-
"Select",
|
|
14
|
-
"Slider",
|
|
15
|
-
"RangeInput"
|
|
16
|
-
],
|
|
17
|
-
"Media": ["Image", "Video", "Audio", "Icon"],
|
|
18
|
-
"Visual": [
|
|
19
|
-
"Divider",
|
|
20
|
-
"Spacer",
|
|
21
|
-
"Tooltip",
|
|
22
|
-
"Badge",
|
|
23
|
-
"Tag"
|
|
24
|
-
],
|
|
25
|
-
"Feedback": [
|
|
26
|
-
"Loader",
|
|
27
|
-
"Spinner",
|
|
28
|
-
"ProgressBar",
|
|
29
|
-
"Alert",
|
|
30
|
-
"Snackbar"
|
|
31
|
-
]
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
"Molecules": {
|
|
35
|
-
"FormElements": [
|
|
36
|
-
"InputGroup",
|
|
37
|
-
"InputWithLabel",
|
|
38
|
-
"SearchBar",
|
|
39
|
-
"FileUpload",
|
|
40
|
-
"FormField"
|
|
41
|
-
],
|
|
42
|
-
"ButtonsWithIcons": [
|
|
43
|
-
"IconButton",
|
|
44
|
-
"ButtonGroup"
|
|
45
|
-
],
|
|
46
|
-
"MediaMolecules": [
|
|
47
|
-
"ImageWithCaption",
|
|
48
|
-
"VideoWithDescription",
|
|
49
|
-
"AvatarWithName",
|
|
50
|
-
"AudioPlayer"
|
|
51
|
-
],
|
|
52
|
-
"FeedbackMolecules": [
|
|
53
|
-
"Notification",
|
|
54
|
-
"Modal"
|
|
55
|
-
]
|
|
56
|
-
},
|
|
57
|
-
|
|
58
|
-
"Organisms": {
|
|
59
|
-
"Forms": [
|
|
60
|
-
"SignInForm",
|
|
61
|
-
"RegistrationForm",
|
|
62
|
-
"ContactForm"
|
|
63
|
-
],
|
|
64
|
-
"ContentDisplay": [
|
|
65
|
-
"Card",
|
|
66
|
-
"MediaCard",
|
|
67
|
-
"List",
|
|
68
|
-
"Accordion"
|
|
69
|
-
],
|
|
70
|
-
"Navigation": [
|
|
71
|
-
"Navbar",
|
|
72
|
-
"Sidebar",
|
|
73
|
-
"Breadcrumbs"
|
|
74
|
-
],
|
|
75
|
-
"MediaCollections": [
|
|
76
|
-
"ImageGallery",
|
|
77
|
-
"VideoPlaylist",
|
|
78
|
-
"Carousel"
|
|
79
|
-
],
|
|
80
|
-
"Tables": [
|
|
81
|
-
"DataTable",
|
|
82
|
-
"PricingTable",
|
|
83
|
-
"ComparisonTable"
|
|
84
|
-
]
|
|
85
|
-
},
|
|
86
|
-
|
|
87
|
-
"Layout": {
|
|
88
|
-
"Grid": ["Grid"],
|
|
89
|
-
"Section": ["Section"],
|
|
90
|
-
"FlexboxLayout": ["Flexbox"],
|
|
91
|
-
"NavigationAndMenus": [
|
|
92
|
-
"Header",
|
|
93
|
-
"Footer",
|
|
94
|
-
"DropdownMenu",
|
|
95
|
-
"Pagination"
|
|
96
|
-
],
|
|
97
|
-
"ContentOrganization": [
|
|
98
|
-
"Sidebar",
|
|
99
|
-
"Tabs",
|
|
100
|
-
"Accordion"
|
|
101
|
-
],
|
|
102
|
-
"HeroSections": [
|
|
103
|
-
"HeroBanner",
|
|
104
|
-
"HeroImageVideo"
|
|
105
|
-
]
|
|
106
|
-
},
|
|
107
|
-
|
|
108
|
-
"Templates": {
|
|
109
|
-
"LandingPages": [
|
|
110
|
-
"HeroSection",
|
|
111
|
-
"FeaturesList",
|
|
112
|
-
"CallToAction",
|
|
113
|
-
"Testimonials"
|
|
114
|
-
],
|
|
115
|
-
"DashboardLayouts": [
|
|
116
|
-
"AdminDashboard",
|
|
117
|
-
"SidebarTopNav"
|
|
118
|
-
],
|
|
119
|
-
"ECommercePages": [
|
|
120
|
-
"ProductPage",
|
|
121
|
-
"ShoppingCart"
|
|
122
|
-
],
|
|
123
|
-
"AuthenticationPages": [
|
|
124
|
-
"SignInPage",
|
|
125
|
-
"RegistrationPage"
|
|
126
|
-
],
|
|
127
|
-
"ContactUsPages": [
|
|
128
|
-
"FormSection",
|
|
129
|
-
"LocationInfo",
|
|
130
|
-
"SocialMediaLinks"
|
|
131
|
-
]
|
|
132
|
-
},
|
|
133
|
-
|
|
134
|
-
"Pages": {
|
|
135
|
-
"HomePage": ["HomePage"],
|
|
136
|
-
"AboutUsPage": ["AboutUsPage"],
|
|
137
|
-
"ContactUsPage": ["ContactUsPage"],
|
|
138
|
-
"UserProfilePage": ["UserProfilePage"],
|
|
139
|
-
"ProductDetailPage": ["ProductDetailPage"],
|
|
140
|
-
"CheckoutPage": ["CheckoutPage"],
|
|
141
|
-
"BlogPage": ["BlogPage"],
|
|
142
|
-
"AdminDashboard": ["AdminDashboard"],
|
|
143
|
-
"SearchResultsPage": ["SearchResultsPage"]
|
|
144
|
-
},
|
|
145
|
-
|
|
146
|
-
"Miscellaneous": {
|
|
147
|
-
"TooltipsPopovers": [
|
|
148
|
-
"Tooltip",
|
|
149
|
-
"Popover"
|
|
150
|
-
],
|
|
151
|
-
"Overlays": [
|
|
152
|
-
"ModalWindow",
|
|
153
|
-
"Drawer"
|
|
154
|
-
],
|
|
155
|
-
"SearchComponents": [
|
|
156
|
-
"SearchBox",
|
|
157
|
-
"Autocomplete"
|
|
158
|
-
],
|
|
159
|
-
"MediaAndContentControls": [
|
|
160
|
-
"AudioControls",
|
|
161
|
-
"VideoControls",
|
|
162
|
-
"Filters"
|
|
163
|
-
],
|
|
164
|
-
"InteractiveMaps": ["Map"]
|
|
165
|
-
}
|
|
166
|
-
};
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
// verifyMolecules.js
|
|
2
|
-
|
|
3
|
-
import fs from 'fs';
|
|
4
|
-
import path from 'path';
|
|
5
|
-
import { fileURLToPath } from 'url';
|
|
6
|
-
import Molecules from '../stories/Molecules/Molecules.js'; // Import the Molecules constant
|
|
7
|
-
|
|
8
|
-
// Define __dirname for ES modules
|
|
9
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
-
const __dirname = path.dirname(__filename);
|
|
11
|
-
|
|
12
|
-
// Helper function to check if a file exists relative to the script's directory
|
|
13
|
-
const fileExists = (relativeFilePath) => {
|
|
14
|
-
const fullPath = path.resolve(__dirname, relativeFilePath);
|
|
15
|
-
return fs.existsSync(fullPath);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
// Default CSS template
|
|
19
|
-
const createDefaultCSSTemplate = (componentName) => `
|
|
20
|
-
.${componentName.toLowerCase()} {
|
|
21
|
-
/* Default styles for ${componentName} */
|
|
22
|
-
}
|
|
23
|
-
`;
|
|
24
|
-
|
|
25
|
-
// Default JSX template
|
|
26
|
-
const createDefaultJSX = (componentName) => `
|
|
27
|
-
import React from 'react';
|
|
28
|
-
import PropTypes from 'prop-types';
|
|
29
|
-
import './${componentName}.css';
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* ${componentName} component
|
|
33
|
-
*/
|
|
34
|
-
export const ${componentName} = (props) => {
|
|
35
|
-
return (
|
|
36
|
-
<div className="${componentName.toLowerCase()}" {...props}>
|
|
37
|
-
{/* Component implementation */}
|
|
38
|
-
</div>
|
|
39
|
-
);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
${componentName}.propTypes = {
|
|
43
|
-
// Define prop types here
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
${componentName}.defaultProps = {
|
|
47
|
-
// Define default props here
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export default ${componentName};
|
|
51
|
-
`;
|
|
52
|
-
|
|
53
|
-
// Default Storybook template
|
|
54
|
-
const createDefaultStorybookTemplate = (componentName, category) => `
|
|
55
|
-
import { ${componentName} } from './${componentName}';
|
|
56
|
-
|
|
57
|
-
// Storybook configuration for ${componentName} component
|
|
58
|
-
export default {
|
|
59
|
-
title: 'Molecules/${category}/${componentName}',
|
|
60
|
-
component: ${componentName},
|
|
61
|
-
parameters: {
|
|
62
|
-
layout: 'centered',
|
|
63
|
-
},
|
|
64
|
-
argTypes: {
|
|
65
|
-
// Define argTypes here
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
export const Default = {
|
|
70
|
-
args: {
|
|
71
|
-
// Define default args here
|
|
72
|
-
},
|
|
73
|
-
};
|
|
74
|
-
`;
|
|
75
|
-
|
|
76
|
-
// Helper function to write files
|
|
77
|
-
const writeFile = (filePath, content) => {
|
|
78
|
-
const fullPath = path.resolve(__dirname, filePath);
|
|
79
|
-
fs.mkdirSync(path.dirname(fullPath), { recursive: true });
|
|
80
|
-
fs.writeFileSync(fullPath, content, 'utf8');
|
|
81
|
-
console.log(`✅ Created: ${filePath}`);
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
// Function to verify each path and create missing files with default content
|
|
85
|
-
async function verifyPaths(component, paths, category) {
|
|
86
|
-
const missingFiles = []; // Initialize missingFiles array
|
|
87
|
-
|
|
88
|
-
for (const [key, filePath] of Object.entries(paths)) {
|
|
89
|
-
const componentName = component.name.trim();
|
|
90
|
-
const adjustedPath = path.join(
|
|
91
|
-
'..',
|
|
92
|
-
'stories',
|
|
93
|
-
'Molecules',
|
|
94
|
-
componentName,
|
|
95
|
-
filePath.replace('./', '')
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
if (!fileExists(adjustedPath)) {
|
|
99
|
-
console.log(`❌ Missing: ${adjustedPath}`);
|
|
100
|
-
missingFiles.push(adjustedPath);
|
|
101
|
-
|
|
102
|
-
// Automatically create the missing file with default content
|
|
103
|
-
if (key === 'css') {
|
|
104
|
-
writeFile(adjustedPath, createDefaultCSSTemplate(componentName));
|
|
105
|
-
} else if (key === 'jsx') {
|
|
106
|
-
writeFile(adjustedPath, createDefaultJSX(componentName));
|
|
107
|
-
} else if (key === 'stories') {
|
|
108
|
-
writeFile(adjustedPath, createDefaultStorybookTemplate(componentName, category));
|
|
109
|
-
}
|
|
110
|
-
} else {
|
|
111
|
-
console.log(`✅ Exists: ${adjustedPath}`);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
return missingFiles; // Return missingFiles array
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// Main function to handle installation and verification
|
|
119
|
-
async function installAndVerifyMolecules(Molecules) {
|
|
120
|
-
const missingFilesReport = [];
|
|
121
|
-
|
|
122
|
-
// Loop through each category (Navigation, FormElements, etc.)
|
|
123
|
-
for (const category of Object.keys(Molecules.Molecules)) {
|
|
124
|
-
console.log(`\nVerifying category: ${category}`);
|
|
125
|
-
|
|
126
|
-
// Loop through each component in the category
|
|
127
|
-
for (const component of Molecules.Molecules[category]) {
|
|
128
|
-
console.log(`\nVerifying component: ${component.name.trim()}`);
|
|
129
|
-
|
|
130
|
-
// Verify each path for the component and get missing files
|
|
131
|
-
const missingFiles = await verifyPaths(component, component.paths, category);
|
|
132
|
-
|
|
133
|
-
// If files are missing, report them
|
|
134
|
-
if (missingFiles.length > 0) {
|
|
135
|
-
missingFilesReport.push({
|
|
136
|
-
component: component.name.trim(),
|
|
137
|
-
missingFiles,
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// If there are missing files, summarize the report
|
|
144
|
-
if (missingFilesReport.length > 0) {
|
|
145
|
-
console.log('\nInstallation or verification required for the following components:');
|
|
146
|
-
missingFilesReport.forEach((report) => {
|
|
147
|
-
console.log(`\nComponent: ${report.component}`);
|
|
148
|
-
report.missingFiles.forEach((file) => {
|
|
149
|
-
console.log(` ❌ Missing file: ${file}`);
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
} else {
|
|
153
|
-
console.log('\nAll components verified successfully! ✅');
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Run the verification script
|
|
158
|
-
installAndVerifyMolecules(Molecules);
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
|
-
import Atomic from '../stories/_Atomic/Atomic.js'; // Import the Atomic constant
|
|
5
|
-
|
|
6
|
-
// Define __dirname for ES modules
|
|
7
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
-
const __dirname = path.dirname(__filename);
|
|
9
|
-
|
|
10
|
-
// Helper function to check if a file exists relative to the script's directory
|
|
11
|
-
const fileExists = (relativeFilePath) => {
|
|
12
|
-
const fullPath = path.resolve(__dirname, relativeFilePath);
|
|
13
|
-
return fs.existsSync(fullPath);
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
// Default CSS template
|
|
17
|
-
const createDefaultCSSTemplate = (componentName) => `
|
|
18
|
-
.${componentName.toLowerCase()} {
|
|
19
|
-
padding: 16px;
|
|
20
|
-
border-radius: 8px;
|
|
21
|
-
background-color: #f0f0f0;
|
|
22
|
-
border: 1px solid #ddd;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.${componentName.toLowerCase()}--primary {
|
|
26
|
-
background-color: #e3f2fd;
|
|
27
|
-
border-color: #1e88e5;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.${componentName.toLowerCase()}--secondary {
|
|
31
|
-
background-color: #fff;
|
|
32
|
-
border-color: #ccc;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.${componentName.toLowerCase()}--small {
|
|
36
|
-
padding: 8px;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.${componentName.toLowerCase()}--medium {
|
|
40
|
-
padding: 16px;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
.${componentName.toLowerCase()}--large {
|
|
44
|
-
padding: 32px;
|
|
45
|
-
}
|
|
46
|
-
`;
|
|
47
|
-
|
|
48
|
-
// Default JSX template
|
|
49
|
-
const createDefaultJSX = (componentName) => `
|
|
50
|
-
import React from 'react';
|
|
51
|
-
import PropTypes from 'prop-types';
|
|
52
|
-
import './${componentName}.css';
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* ${componentName} component for user interaction
|
|
56
|
-
*/
|
|
57
|
-
export const ${componentName} = ({ primary, size, children, ...props }) => {
|
|
58
|
-
const mode = primary ? '${componentName.toLowerCase()}--primary' : '${componentName.toLowerCase()}--secondary';
|
|
59
|
-
return (
|
|
60
|
-
<div
|
|
61
|
-
className={['${componentName.toLowerCase()}', \`${componentName.toLowerCase()}--\${size}\`, mode].join(' ')}
|
|
62
|
-
{...props}
|
|
63
|
-
>
|
|
64
|
-
{children}
|
|
65
|
-
</div>
|
|
66
|
-
);
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
${componentName}.propTypes = {
|
|
70
|
-
/**
|
|
71
|
-
* Is this the primary style for the component?
|
|
72
|
-
*/
|
|
73
|
-
primary: PropTypes.bool,
|
|
74
|
-
/**
|
|
75
|
-
* Size of the component
|
|
76
|
-
*/
|
|
77
|
-
size: PropTypes.oneOf(['small', 'medium', 'large']),
|
|
78
|
-
/**
|
|
79
|
-
* Content to be rendered inside the component
|
|
80
|
-
*/
|
|
81
|
-
children: PropTypes.node.isRequired,
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
${componentName}.defaultProps = {
|
|
85
|
-
primary: false,
|
|
86
|
-
size: 'medium',
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
export default ${componentName};
|
|
90
|
-
`;
|
|
91
|
-
// Default Storybook template
|
|
92
|
-
const createDefaultStorybookTemplate = (componentName) => `
|
|
93
|
-
import { ${componentName} } from './${componentName}';
|
|
94
|
-
|
|
95
|
-
// Storybook configuration for ${componentName} component
|
|
96
|
-
export default {
|
|
97
|
-
title: '_Atomic/${componentName}',
|
|
98
|
-
component: ${componentName},
|
|
99
|
-
parameters: {
|
|
100
|
-
layout: 'centered',
|
|
101
|
-
},
|
|
102
|
-
argTypes: {
|
|
103
|
-
children: { control: 'text' },
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
export const Primary = {
|
|
108
|
-
args: {
|
|
109
|
-
primary: true,
|
|
110
|
-
children: 'This is a primary ${componentName}',
|
|
111
|
-
},
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
export const Secondary = {
|
|
115
|
-
args: {
|
|
116
|
-
children: 'This is a secondary ${componentName}',
|
|
117
|
-
},
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
export const Large = {
|
|
121
|
-
args: {
|
|
122
|
-
size: 'large',
|
|
123
|
-
children: 'This is a large ${componentName}',
|
|
124
|
-
},
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
export const Small = {
|
|
128
|
-
args: {
|
|
129
|
-
size: 'small',
|
|
130
|
-
children: 'This is a small ${componentName}',
|
|
131
|
-
},
|
|
132
|
-
};
|
|
133
|
-
`;
|
|
134
|
-
|
|
135
|
-
// Helper function to write files
|
|
136
|
-
const writeFile = (filePath, content) => {
|
|
137
|
-
const fullPath = path.resolve(__dirname, filePath);
|
|
138
|
-
fs.mkdirSync(path.dirname(fullPath), { recursive: true });
|
|
139
|
-
fs.writeFileSync(fullPath, content, 'utf8');
|
|
140
|
-
console.log(`✅ Created: ${filePath}`);
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
// Function to verify each path and create missing files with default content
|
|
144
|
-
async function verifyPaths(component, paths) {
|
|
145
|
-
const missingFiles = []; // Initialize missingFiles array
|
|
146
|
-
|
|
147
|
-
for (const [key, filePath] of Object.entries(paths)) {
|
|
148
|
-
const categoryDir = component.name.trim().replace(' ', '');
|
|
149
|
-
const adjustedPath = path.join('..', 'stories', '_Atomic', categoryDir, filePath);
|
|
150
|
-
|
|
151
|
-
if (!fileExists(adjustedPath)) {
|
|
152
|
-
console.log(`❌ Missing: ${adjustedPath}`);
|
|
153
|
-
missingFiles.push(adjustedPath);
|
|
154
|
-
|
|
155
|
-
// Automatically create the missing file with default content
|
|
156
|
-
if (key === 'css') {
|
|
157
|
-
writeFile(adjustedPath, createDefaultCSSTemplate(component.name.trim()));
|
|
158
|
-
} else if (key === 'jsx') {
|
|
159
|
-
writeFile(adjustedPath, createDefaultJSX(component.name.trim()));
|
|
160
|
-
} else if (key === 'stories') {
|
|
161
|
-
writeFile(adjustedPath, createDefaultStorybookTemplate(component.name.trim()));
|
|
162
|
-
}
|
|
163
|
-
} else {
|
|
164
|
-
console.log(`✅ Exists: ${adjustedPath}`);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
return missingFiles; // Return missingFiles array
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// Main function to handle installation and verification
|
|
172
|
-
async function installAndVerifyAtomic(Atomic) {
|
|
173
|
-
const missingFilesReport = [];
|
|
174
|
-
|
|
175
|
-
// Loop through each category (Text, Interactive, etc.)
|
|
176
|
-
for (const category of Object.keys(Atomic.Atomic)) {
|
|
177
|
-
console.log(`\nVerifying category: ${category}`);
|
|
178
|
-
|
|
179
|
-
// Loop through each component in the category
|
|
180
|
-
for (const component of Atomic.Atomic[category]) {
|
|
181
|
-
console.log(`\nVerifying component: ${component.name}`);
|
|
182
|
-
|
|
183
|
-
// Verify each path for the component and get missing files
|
|
184
|
-
const missingFiles = await verifyPaths(component, component.paths);
|
|
185
|
-
|
|
186
|
-
// If files are missing, report them
|
|
187
|
-
if (missingFiles.length > 0) {
|
|
188
|
-
missingFilesReport.push({
|
|
189
|
-
component: component.name,
|
|
190
|
-
missingFiles,
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
// If there are missing files, summarize the report
|
|
197
|
-
if (missingFilesReport.length > 0) {
|
|
198
|
-
console.log("\nInstallation or verification required for the following components:");
|
|
199
|
-
missingFilesReport.forEach((report) => {
|
|
200
|
-
console.log(`\nComponent: ${report.component}`);
|
|
201
|
-
report.missingFiles.forEach((file) => {
|
|
202
|
-
console.log(` ❌ Missing file: ${file}`);
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
} else {
|
|
206
|
-
console.log("\nAll components verified successfully! ✅");
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
// Run the verification script
|
|
211
|
-
installAndVerifyAtomic(Atomic);
|