diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index bee8eae8..1b65abde 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -8,6 +8,17 @@ assignees: ''
---
**Description**
@@ -15,6 +26,7 @@ A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behaviour:
+
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
@@ -26,6 +38,9 @@ A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
+**Attempted Fixes**
+A list of things you have tried to fix the problem, including search engine links.
+
**System Details**
Please add the output of `wails doctor`.
diff --git a/website/docs/guides/troubleshooting.mdx b/website/docs/guides/troubleshooting.mdx
index 00f1d8dc..29f2427c 100644
--- a/website/docs/guides/troubleshooting.mdx
+++ b/website/docs/guides/troubleshooting.mdx
@@ -12,4 +12,16 @@ something similar to the following code:
//go:embed frontend/dist
var assets embed.FS
```
-Check that `frontend/dist` contains your application assets.
\ No newline at end of file
+Check that `frontend/dist` contains your application assets.
+
+## Mac application not valid
+
+If your built application looks like this in finder:
+
+
+
+
+
+it's likely that your application's `info.plist` is invalid. Update the file in `build/.app/Contents/info.plist`
+and check if the data is valid, EG check the binary name is correct. To persist the changes, copy the file back to
+the `build/darwin` directory.
\ No newline at end of file
diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js
index 2dd4752b..3db1c1d2 100644
--- a/website/docusaurus.config.js
+++ b/website/docusaurus.config.js
@@ -53,7 +53,7 @@ const darkCodeTheme = require("prism-react-renderer/themes/palenight");
"https://github.com/wailsapp/wails/edit/master/website/blog/",
},
theme: {
- customCss: require.resolve("./src/css/custom.css"),
+ customCss: [require.resolve("./src/css/custom.css"), require.resolve("./src/css/carousel.min.css")],
},
}),
],
@@ -167,6 +167,29 @@ const darkCodeTheme = require("prism-react-renderer/themes/palenight");
theme: lightCodeTheme,
darkTheme: darkCodeTheme,
},
+ algolia: {
+ // The application ID provided by Algolia
+ appId: 'AWTCNFZ4FF',
+
+ // Public API key: it is safe to commit it
+ apiKey: 'd6495e0dda237daa037967b3809e4089',
+
+ indexName: 'wails',
+
+ // Optional: see doc section below
+ contextualSearch: true,
+
+ // Optional: Specify domains where the navigation should occur through window.location instead on history.push. Useful when our Algolia config crawls multiple documentation sites and we want to navigate with window.location.href to them.
+ // externalUrlRegex: 'external\\.com|domain\\.com',
+
+ // Optional: Algolia search parameters
+ searchParameters: {},
+
+ // Optional: path for search page that enabled by default (`false` to disable it)
+ searchPagePath: 'false',
+
+ //... other Algolia params
+ },
}),
}
);
diff --git a/website/package.json b/website/package.json
index dac79dae..50a955ff 100644
--- a/website/package.json
+++ b/website/package.json
@@ -28,6 +28,7 @@
"react": "^17.0.1",
"react-contributors": "^1.1.2",
"react-dom": "^17.0.1",
+ "react-responsive-carousel": "^3.2.22",
"styled-components": "^5.3.1",
"url-loader": "^4.1.1"
},
diff --git a/website/src/css/carousel.min.css b/website/src/css/carousel.min.css
new file mode 100644
index 00000000..7a71d201
--- /dev/null
+++ b/website/src/css/carousel.min.css
@@ -0,0 +1,309 @@
+.carousel .control-arrow, .carousel.carousel-slider .control-arrow {
+ -webkit-transition: all .25s ease-in;
+ -moz-transition: all .25s ease-in;
+ -ms-transition: all .25s ease-in;
+ -o-transition: all .25s ease-in;
+ transition: all .25s ease-in;
+ opacity: .4;
+ filter: alpha(opacity=40);
+ position: absolute;
+ z-index: 2;
+ top: 20px;
+ background: none;
+ border: 0;
+ font-size: 32px;
+ cursor: pointer
+}
+
+.carousel .control-arrow:focus, .carousel .control-arrow:hover {
+ opacity: 1;
+ filter: alpha(opacity=100)
+}
+
+.carousel .control-arrow:before, .carousel.carousel-slider .control-arrow:before {
+ margin: 0 5px;
+ display: inline-block;
+ border-top: 8px solid transparent;
+ border-bottom: 8px solid transparent;
+ content: ''
+}
+
+.carousel .control-disabled.control-arrow {
+ opacity: 0;
+ filter: alpha(opacity=0);
+ cursor: inherit;
+ display: none
+}
+
+.carousel .control-prev.control-arrow {
+ left: 0
+}
+
+.carousel .control-prev.control-arrow:before {
+ border-right: 8px solid #fff
+}
+
+.carousel .control-next.control-arrow {
+ right: 0
+}
+
+.carousel .control-next.control-arrow:before {
+ border-left: 8px solid #fff
+}
+
+.carousel-root {
+ outline: none;
+ margin-left: 33%;
+}
+
+.carousel {
+ position: relative;
+ width: 100%
+}
+
+.carousel * {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box
+}
+
+.carousel img {
+ width: 100%;
+ display: inline-block;
+ pointer-events: none
+}
+
+.carousel .carousel {
+ position: relative
+}
+
+.carousel .control-arrow {
+ outline: 0;
+ border: 0;
+ background: none;
+ top: 50%;
+ margin-top: -13px;
+ font-size: 18px
+}
+
+.carousel .thumbs-wrapper {
+ margin: 20px;
+ overflow: hidden
+}
+
+.carousel .thumbs {
+ -webkit-transition: all .15s ease-in;
+ -moz-transition: all .15s ease-in;
+ -ms-transition: all .15s ease-in;
+ -o-transition: all .15s ease-in;
+ transition: all .15s ease-in;
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate3d(0, 0, 0);
+ -ms-transform: translate3d(0, 0, 0);
+ -o-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ position: relative;
+ list-style: none;
+ white-space: nowrap
+}
+
+.carousel .thumb {
+ -webkit-transition: border .15s ease-in;
+ -moz-transition: border .15s ease-in;
+ -ms-transition: border .15s ease-in;
+ -o-transition: border .15s ease-in;
+ transition: border .15s ease-in;
+ display: inline-block;
+ margin-right: 6px;
+ white-space: nowrap;
+ overflow: hidden;
+ border: 3px solid #fff;
+ padding: 2px
+}
+
+.carousel .thumb:focus {
+ border: 3px solid #ccc;
+ outline: none
+}
+
+.carousel .thumb.selected, .carousel .thumb:hover {
+ border: 3px solid #333
+}
+
+.carousel .thumb img {
+ vertical-align: top
+}
+
+.carousel.carousel-slider {
+ position: relative;
+ margin: 0;
+ overflow: hidden
+}
+
+.carousel.carousel-slider .control-arrow {
+ top: 0;
+ color: #fff;
+ font-size: 26px;
+ bottom: 0;
+ margin-top: 0;
+ padding: 5px
+}
+
+.carousel.carousel-slider .control-arrow:hover {
+ background: rgba(0, 0, 0, 0.2)
+}
+
+.carousel .slider-wrapper {
+ overflow: hidden;
+ margin: auto;
+ width: 101%;
+ -webkit-transition: height .15s ease-in;
+ -moz-transition: height .15s ease-in;
+ -ms-transition: height .15s ease-in;
+ -o-transition: height .15s ease-in;
+ transition: height .15s ease-in
+}
+
+.carousel .slider-wrapper.axis-horizontal .slider {
+ -ms-box-orient: horizontal;
+ display: -webkit-box;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: -moz-flex;
+ display: -webkit-flex;
+ display: flex
+}
+
+.carousel .slider-wrapper.axis-horizontal .slider .slide {
+ flex-direction: column;
+ flex-flow: column
+}
+
+.carousel .slider-wrapper.axis-vertical {
+ -ms-box-orient: horizontal;
+ display: -webkit-box;
+ display: -moz-box;
+ display: -ms-flexbox;
+ display: -moz-flex;
+ display: -webkit-flex;
+ display: flex
+}
+
+.carousel .slider-wrapper.axis-vertical .slider {
+ -webkit-flex-direction: column;
+ flex-direction: column
+}
+
+.carousel .slider {
+ margin: 0;
+ padding: 0;
+ position: relative;
+ list-style: none;
+ width: 100%
+}
+
+.carousel .slider.animated {
+ -webkit-transition: all .35s ease-in-out;
+ -moz-transition: all .35s ease-in-out;
+ -ms-transition: all .35s ease-in-out;
+ -o-transition: all .35s ease-in-out;
+ transition: all .35s ease-in-out
+}
+
+.carousel .slide {
+ min-width: 100%;
+ margin: 0;
+ position: relative;
+ text-align: center
+}
+
+.carousel .slide img {
+ width: 100%;
+ vertical-align: top;
+ border: 0
+}
+
+.carousel .slide iframe {
+ display: inline-block;
+ width: calc(100% - 80px);
+ margin: 0 40px 40px;
+ border: 0
+}
+
+.carousel .slide .legend {
+ -webkit-transition: all .5s ease-in-out;
+ -moz-transition: all .5s ease-in-out;
+ -ms-transition: all .5s ease-in-out;
+ -o-transition: all .5s ease-in-out;
+ transition: all .5s ease-in-out;
+ position: absolute;
+ bottom: 40px;
+ left: 50%;
+ margin-left: -45%;
+ width: 90%;
+ border-radius: 10px;
+ background: #000;
+ color: #fff;
+ padding: 10px;
+ font-size: 12px;
+ text-align: center;
+ opacity: 0.25;
+ -webkit-transition: opacity .35s ease-in-out;
+ -moz-transition: opacity .35s ease-in-out;
+ -ms-transition: opacity .35s ease-in-out;
+ -o-transition: opacity .35s ease-in-out;
+ transition: opacity .35s ease-in-out
+}
+
+.carousel .control-dots {
+ position: absolute;
+ bottom: 0;
+ margin: 10px 0;
+ padding: 0;
+ text-align: center;
+ width: 100%;
+ z-index: 1
+}
+
+@media (min-width: 960px) {
+ .carousel .control-dots {
+ bottom: 0
+ }
+}
+
+.carousel .control-dots .dot {
+ -webkit-transition: opacity .25s ease-in;
+ -moz-transition: opacity .25s ease-in;
+ -ms-transition: opacity .25s ease-in;
+ -o-transition: opacity .25s ease-in;
+ transition: opacity .25s ease-in;
+ opacity: .3;
+ filter: alpha(opacity=30);
+ box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.9);
+ background: #fff;
+ border-radius: 50%;
+ width: 8px;
+ height: 8px;
+ cursor: pointer;
+ display: inline-block;
+ margin: 0 8px
+}
+
+.carousel .control-dots .dot.selected, .carousel .control-dots .dot:hover {
+ opacity: 1;
+ filter: alpha(opacity=100)
+}
+
+.carousel .carousel-status {
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 5px;
+ font-size: 10px;
+ text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.9);
+ color: #fff
+}
+
+.carousel:hover .slide .legend {
+ opacity: 1
+}
diff --git a/website/src/pages/index.js b/website/src/pages/index.js
index 2c8b8c18..75c2f797 100644
--- a/website/src/pages/index.js
+++ b/website/src/pages/index.js
@@ -5,24 +5,47 @@ import Link from '@docusaurus/Link';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import styles from './index.module.css';
import HomepageFeatures from '../components/HomepageFeatures';
-
-import ThemedImage from '@theme/ThemedImage';
-import useBaseUrl from "@docusaurus/core/lib/client/exports/useBaseUrl";
import {translate} from '@docusaurus/Translate'; // i18n component
+var Carousel = require('react-responsive-carousel').Carousel;
function HomepageHeader() {
const {siteConfig} = useDocusaurusContext();
return (