├── .eslintignore ├── semantic-ui ├── site │ ├── modules │ │ ├── embed.variables │ │ ├── dimmer.overrides │ │ ├── embed.overrides │ │ ├── modal.overrides │ │ ├── modal.variables │ │ ├── nag.overrides │ │ ├── popup.overrides │ │ ├── rating.overrides │ │ ├── rating.variables │ │ ├── search.overrides │ │ ├── search.variables │ │ ├── shape.overrides │ │ ├── sticky.overrides │ │ ├── sticky.variables │ │ ├── tab.overrides │ │ ├── accordion.overrides │ │ ├── chatroom.overrides │ │ ├── checkbox.overrides │ │ ├── dimmer.variables │ │ ├── dropdown.overrides │ │ ├── nag.variables │ │ ├── popup.variables │ │ ├── progress.overrides │ │ ├── shape.variables │ │ ├── sidebar.overrides │ │ ├── sidebar.variables │ │ ├── tab.variables │ │ ├── transition.overrides │ │ ├── accordion.variables │ │ ├── chatroom.variables │ │ ├── checkbox.variables │ │ ├── dropdown.variables │ │ ├── progress.variables │ │ └── transition.variables │ ├── elements │ │ ├── flag.variables │ │ ├── flag.overrides │ │ ├── icon.overrides │ │ ├── image.overrides │ │ ├── input.overrides │ │ ├── label.overrides │ │ ├── rail.overrides │ │ ├── step.overrides │ │ ├── button.overrides │ │ ├── button.variables │ │ ├── container.overrides │ │ ├── divider.overrides │ │ ├── header.overrides │ │ ├── header.variables │ │ ├── icon.variables │ │ ├── image.variables │ │ ├── input.variables │ │ ├── label.variables │ │ ├── list.overrides │ │ ├── list.variables │ │ ├── loader.overrides │ │ ├── loader.variables │ │ ├── rail.variables │ │ ├── reveal.overrides │ │ ├── reveal.variables │ │ ├── segment.overrides │ │ ├── step.variables │ │ ├── container.variables │ │ ├── divider.variables │ │ └── segment.variables │ ├── collections │ │ ├── menu.overrides │ │ ├── form.overrides │ │ ├── grid.overrides │ │ ├── message.overrides │ │ ├── table.overrides │ │ ├── breadcrumb.overrides │ │ ├── breadcrumb.variables │ │ ├── form.variables │ │ ├── grid.variables │ │ ├── menu.variables │ │ ├── message.variables │ │ └── table.variables │ ├── globals │ │ ├── reset.overrides │ │ ├── site.overrides │ │ ├── reset.variables │ │ └── site.variables │ └── views │ │ ├── ad.overrides │ │ ├── ad.variables │ │ ├── card.overrides │ │ ├── card.variables │ │ ├── feed.overrides │ │ ├── feed.variables │ │ ├── item.overrides │ │ ├── item.variables │ │ ├── comment.overrides │ │ ├── comment.variables │ │ ├── statistic.overrides │ │ └── statistic.variables └── theme.config ├── .prettierignore ├── .github └── FUNDING.yml ├── public └── images │ ├── logo.png │ └── favicon │ ├── favicon.ico │ ├── apple-icon.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-96x96.png │ ├── ms-icon-70x70.png │ ├── ms-icon-144x144.png │ ├── ms-icon-150x150.png │ ├── ms-icon-310x310.png │ ├── android-icon-36x36.png │ ├── android-icon-48x48.png │ ├── android-icon-72x72.png │ ├── android-icon-96x96.png │ ├── apple-icon-114x114.png │ ├── apple-icon-120x120.png │ ├── apple-icon-144x144.png │ ├── apple-icon-152x152.png │ ├── apple-icon-180x180.png │ ├── apple-icon-57x57.png │ ├── apple-icon-60x60.png │ ├── apple-icon-72x72.png │ ├── apple-icon-76x76.png │ ├── android-icon-144x144.png │ ├── android-icon-192x192.png │ ├── apple-icon-precomposed.png │ ├── browserconfig.xml │ └── manifest.json ├── pages ├── index.jsx ├── private.jsx ├── api │ ├── hello.jsx │ ├── private │ │ └── hello.jsx │ └── auth │ │ └── [...nextauth].jsx ├── coming-soon.jsx └── _app.jsx ├── .vscode ├── extensions.json └── settings.json ├── next-env.d.ts ├── .babelrc ├── tsconfig.json ├── styles.css ├── middleware.js ├── amplify.yml ├── components ├── application │ ├── session │ │ ├── useSignOut.jsx │ │ ├── SessionDropdown.jsx │ │ └── SessionMenuItem.jsx │ ├── sidebar │ │ ├── LinkMenuItem.jsx │ │ ├── ScrollMenuItem.jsx │ │ ├── SidebarButton.jsx │ │ ├── PageMenuItem.jsx │ │ ├── SidebarLinks.jsx │ │ └── SidebarItems.jsx │ ├── layout │ │ ├── PageFooter.jsx │ │ └── PageHeader.jsx │ └── util │ │ ├── RenderIf.jsx │ │ └── ScrollTarget.jsx ├── page │ ├── HomePage.jsx │ └── PrivatePage.jsx └── content │ ├── ApiTest.jsx │ └── ApiQuery.jsx ├── .gitignore ├── test ├── sample.test.mjs └── entity.test.jsx ├── .env.local.template ├── env ├── .env.dev.local.template ├── .env.prod.local.template ├── .env.test.local.template ├── .env.prod ├── .env.dev └── .env.test ├── .env ├── state ├── store.mjs ├── pageSlice.mjs └── entitySlice.mjs ├── next.config.mjs ├── README.md ├── .eslintrc.json └── package.json /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/embed.variables: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .next/ 3 | build/ 4 | public/ 5 | *.code-workspace 6 | *.template -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [karmaniverous] 4 | -------------------------------------------------------------------------------- /public/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/logo.png -------------------------------------------------------------------------------- /semantic-ui/site/elements/flag.variables: -------------------------------------------------------------------------------- 1 | /*------------------- 2 | Flag Variables 3 | --------------------*/ 4 | -------------------------------------------------------------------------------- /public/images/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/favicon.ico -------------------------------------------------------------------------------- /public/images/favicon/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon.png -------------------------------------------------------------------------------- /public/images/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /public/images/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /public/images/favicon/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/favicon-96x96.png -------------------------------------------------------------------------------- /public/images/favicon/ms-icon-70x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/ms-icon-70x70.png -------------------------------------------------------------------------------- /semantic-ui/site/collections/menu.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ -------------------------------------------------------------------------------- /semantic-ui/site/elements/flag.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/icon.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/image.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/input.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/label.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/rail.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/step.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/globals/reset.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/globals/site.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/dimmer.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/embed.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/modal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/modal.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/nag.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/popup.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/rating.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/rating.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/search.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/search.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/shape.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/sticky.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/sticky.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/tab.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/ad.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/ad.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/card.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/card.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/feed.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/feed.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/item.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/item.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /public/images/favicon/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/ms-icon-144x144.png -------------------------------------------------------------------------------- /public/images/favicon/ms-icon-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/ms-icon-150x150.png -------------------------------------------------------------------------------- /public/images/favicon/ms-icon-310x310.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/ms-icon-310x310.png -------------------------------------------------------------------------------- /semantic-ui/site/collections/form.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/collections/grid.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/collections/message.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/collections/table.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/button.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/button.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/container.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/divider.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/header.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/header.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/icon.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/image.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/input.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/label.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/list.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/list.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/loader.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/loader.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/rail.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/reveal.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/reveal.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/segment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/step.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/globals/reset.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Global Variables 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/globals/site.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Global Variables 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/accordion.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/chatroom.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/checkbox.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/dimmer.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/dropdown.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/nag.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/popup.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/progress.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/shape.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/sidebar.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/sidebar.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/tab.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/transition.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/comment.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/comment.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/statistic.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/views/statistic.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /public/images/favicon/android-icon-36x36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/android-icon-36x36.png -------------------------------------------------------------------------------- /public/images/favicon/android-icon-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/android-icon-48x48.png -------------------------------------------------------------------------------- /public/images/favicon/android-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/android-icon-72x72.png -------------------------------------------------------------------------------- /public/images/favicon/android-icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/android-icon-96x96.png -------------------------------------------------------------------------------- /public/images/favicon/apple-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon-114x114.png -------------------------------------------------------------------------------- /public/images/favicon/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon-120x120.png -------------------------------------------------------------------------------- /public/images/favicon/apple-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon-144x144.png -------------------------------------------------------------------------------- /public/images/favicon/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon-152x152.png -------------------------------------------------------------------------------- /public/images/favicon/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon-180x180.png -------------------------------------------------------------------------------- /public/images/favicon/apple-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon-57x57.png -------------------------------------------------------------------------------- /public/images/favicon/apple-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon-60x60.png -------------------------------------------------------------------------------- /public/images/favicon/apple-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon-72x72.png -------------------------------------------------------------------------------- /public/images/favicon/apple-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon-76x76.png -------------------------------------------------------------------------------- /semantic-ui/site/collections/breadcrumb.overrides: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/collections/breadcrumb.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | Site Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/collections/form.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/collections/grid.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/collections/menu.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/collections/message.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/collections/table.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/container.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/divider.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/elements/segment.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/accordion.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/chatroom.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/checkbox.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/dropdown.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/progress.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /semantic-ui/site/modules/transition.variables: -------------------------------------------------------------------------------- 1 | /******************************* 2 | User Variable Overrides 3 | *******************************/ 4 | -------------------------------------------------------------------------------- /public/images/favicon/android-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/android-icon-144x144.png -------------------------------------------------------------------------------- /public/images/favicon/android-icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/android-icon-192x192.png -------------------------------------------------------------------------------- /public/images/favicon/apple-icon-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/karmaniverous/nextjs-template/HEAD/public/images/favicon/apple-icon-precomposed.png -------------------------------------------------------------------------------- /pages/index.jsx: -------------------------------------------------------------------------------- 1 | // component imports 2 | import HomePage from '../components/page/HomePage'; 3 | 4 | const HomeRoute = () => { 5 | return ; 6 | }; 7 | 8 | export default HomeRoute; 9 | -------------------------------------------------------------------------------- /pages/private.jsx: -------------------------------------------------------------------------------- 1 | // component imports 2 | import PrivatePage from '../components/page/PrivatePage'; 3 | 4 | const PrivateRoute = () => { 5 | return ; 6 | }; 7 | 8 | export default PrivateRoute; 9 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dbaeumer.vscode-eslint", 4 | "ms-vscode.vscode-typescript-next", 5 | "hbenl.vscode-mocha-test-adapter", 6 | "esbenp.prettier-vscode" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /pages/api/hello.jsx: -------------------------------------------------------------------------------- 1 | import { Logger } from '@karmaniverous/edge-logger'; 2 | const logger = new Logger({ maxLevel: process.env.LOG_LEVEL }); 3 | 4 | export default async (req, res) => { 5 | logger.debug('*** API hello ***', { req }); 6 | 7 | res.status(200).json({ message: 'Hello, world!' }); 8 | }; 9 | -------------------------------------------------------------------------------- /public/images/favicon/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | "@babel/preset-env", 4 | [ 5 | "@babel/preset-react", 6 | { 7 | "runtime": "automatic" 8 | } 9 | ] 10 | ], 11 | "plugins": [ 12 | "lodash", 13 | [ 14 | "module-extension", 15 | { 16 | "mjs": "" 17 | } 18 | ], 19 | "@babel/plugin-syntax-import-assertions" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/recommended/tsconfig.json", 3 | "compilerOptions": { 4 | "lib": ["dom", "dom.iterable", "esnext"], 5 | "allowJs": true, 6 | "noEmit": true, 7 | "incremental": true, 8 | "resolveJsonModule": true, 9 | "isolatedModules": true, 10 | "jsx": "preserve", 11 | "moduleResolution": "node" 12 | }, 13 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], 14 | "exclude": ["node_modules"] 15 | } 16 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.autofetch": true, 3 | "diffEditor.ignoreTrimWhitespace": false, 4 | "javascript.updateImportsOnFileMove.enabled": "always", 5 | "git.enableSmartCommit": true, 6 | "editor.formatOnSave": true, 7 | "editor.tabSize": 2, 8 | "editor.formatOnPaste": true, 9 | "editor.defaultFormatter": "esbenp.prettier-vscode", 10 | "javascript.preferences.importModuleSpecifierEnding": "minimal", 11 | "[markdown]": { 12 | "editor.wordWrap": "bounded" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /styles.css: -------------------------------------------------------------------------------- 1 | /* Burger button container. */ 2 | @media only screen and (max-width: 767px) { 3 | .burger-container { 4 | text-align: right; 5 | } 6 | } 7 | 8 | @media only screen and (min-width: 768px) and (max-width: 991px) { 9 | .burger-container { 10 | flex-direction: column; 11 | vertical-align: middle; 12 | align-self: center !important; 13 | } 14 | } 15 | 16 | /* Fix sticky sidebar menu */ 17 | .sidebar-menu { 18 | position: sticky; 19 | position: -webkit-sticky; 20 | top: 20px; 21 | } 22 | 23 | .pushable, 24 | .pusher { 25 | overflow: unset !important; 26 | } 27 | -------------------------------------------------------------------------------- /middleware.js: -------------------------------------------------------------------------------- 1 | import { withAuth } from 'next-auth/middleware'; 2 | 3 | import { Logger } from '@karmaniverous/edge-logger'; 4 | const logger = new Logger({ maxLevel: process.env.LOG_LEVEL }); 5 | 6 | export default withAuth( 7 | async (req, res) => { 8 | logger.debug('*** middleware withAuth ***', { req, res }); 9 | }, 10 | { 11 | callbacks: { 12 | authorized: (input) => { 13 | logger.debug('*** middleware authorized ***', { ...input }); 14 | return true; 15 | }, 16 | }, 17 | } 18 | ); 19 | 20 | export const config = { 21 | matcher: ['/private'], 22 | }; 23 | -------------------------------------------------------------------------------- /amplify.yml: -------------------------------------------------------------------------------- 1 | # prettier-ignore 2 | version: 1 3 | frontend: 4 | phases: 5 | preBuild: 6 | commands: 7 | - npm ci 8 | - echo -e "\n" >> .env 9 | - cat env/.env.$ENV >> .env 10 | - echo -e "\nENV=$ENV" >> .env 11 | - echo -e "\nNEXTAUTH_COGNITO_CLIENT_SECRET=$NEXTAUTH_COGNITO_CLIENT_SECRET" >> .env 12 | - echo -e "\nNEXTAUTH_SECRET=$NEXTAUTH_SECRET" >> .env 13 | build: 14 | commands: 15 | - npm run build 16 | artifacts: 17 | baseDirectory: .next 18 | files: 19 | - '**/*' 20 | cache: 21 | paths: 22 | - node_modules/**/* 23 | -------------------------------------------------------------------------------- /components/application/session/useSignOut.jsx: -------------------------------------------------------------------------------- 1 | // npm imports 2 | import { useRouter } from 'next/router'; 3 | import { signOut as nextAuthSignOut } from 'next-auth/react'; 4 | import { useCallback } from 'react'; 5 | import { useSelector } from 'react-redux'; 6 | 7 | const useSignOut = () => { 8 | // Get page state. 9 | const logoutUrl = useSelector((state) => state.page.logoutUrl); 10 | 11 | // Get router. 12 | const router = useRouter(); 13 | 14 | const signOut = useCallback(() => { 15 | nextAuthSignOut({ redirect: false }); 16 | router.push(logoutUrl); 17 | }, []); 18 | 19 | return { signOut }; 20 | }; 21 | 22 | export default useSignOut; 23 | -------------------------------------------------------------------------------- /pages/api/private/hello.jsx: -------------------------------------------------------------------------------- 1 | // npm imports 2 | import { getServerSession } from 'next-auth/next'; 3 | import { authOptions } from '../auth/[...nextauth]'; 4 | 5 | import { Logger } from '@karmaniverous/edge-logger'; 6 | const logger = new Logger({ maxLevel: process.env.LOG_LEVEL }); 7 | 8 | export default async (req, res) => { 9 | logger.debug('*** API private/hello ***', { req }); 10 | 11 | const session = await getServerSession(req, res, authOptions); 12 | logger.debug('*** API private/hello session ***', { session }); 13 | 14 | if (!session) { 15 | return res.status(401).json({ message: 'Unauthorized.' }); 16 | } 17 | 18 | res.status(200).json({ message: `Hello ${session.user.email}!` }); 19 | }; 20 | -------------------------------------------------------------------------------- /components/application/sidebar/LinkMenuItem.jsx: -------------------------------------------------------------------------------- 1 | // npm imports 2 | import PropTypes from 'prop-types'; 3 | import { Icon, Menu } from 'semantic-ui-react'; 4 | 5 | const LinkMenuItem = ({ children, icon, renderIf, target, ...props }) => { 6 | if (!renderIf) return null; 7 | 8 | return ( 9 | 14 | {icon ? : null} 15 | 16 | {children} 17 | 18 | ); 19 | }; 20 | 21 | LinkMenuItem.propTypes = { 22 | children: PropTypes.any, 23 | icon: PropTypes.string, 24 | renderIf: PropTypes.any, 25 | target: PropTypes.string, 26 | }; 27 | 28 | export default LinkMenuItem; 29 | -------------------------------------------------------------------------------- /components/application/layout/PageFooter.jsx: -------------------------------------------------------------------------------- 1 | // npm imports 2 | import { Menu, Segment } from 'semantic-ui-react'; 3 | 4 | // component imports 5 | import SidebarLinks from '../sidebar/SidebarLinks'; 6 | 7 | const PageFooter = () => { 8 | return ( 9 | 10 | 11 | {process.env.NEXT_PUBLIC_SITE_COPYRIGHT ? ( 12 | {process.env.NEXT_PUBLIC_SITE_COPYRIGHT} 13 | ) : null} 14 | 15 | 16 | 17 | 18 | 19 | 20 | ); 21 | }; 22 | 23 | export default PageFooter; 24 | -------------------------------------------------------------------------------- /components/application/sidebar/ScrollMenuItem.jsx: -------------------------------------------------------------------------------- 1 | // npm imports 2 | import PropTypes from 'prop-types'; 3 | import { useCallback } from 'react'; 4 | import { scroller } from 'react-scroll'; 5 | import { Menu } from 'semantic-ui-react'; 6 | 7 | const ScrollMenuItem = ({ children, name, ...props }) => { 8 | // Create scrolling callback. 9 | const doScroll = useCallback( 10 | (e, { name }) => scroller.scrollTo(name, { smooth: true }), 11 | [] 12 | ); 13 | 14 | return ( 15 | 16 | {children} 17 | 18 | ); 19 | }; 20 | 21 | ScrollMenuItem.propTypes = { 22 | children: PropTypes.any, 23 | name: PropTypes.string.isRequired, 24 | }; 25 | 26 | export default ScrollMenuItem; 27 | -------------------------------------------------------------------------------- /components/application/sidebar/SidebarButton.jsx: -------------------------------------------------------------------------------- 1 | // npm imports 2 | import { Button } from 'semantic-ui-react'; 3 | import { useSelector, useDispatch } from 'react-redux'; 4 | 5 | // redux imports 6 | import { setSidebarVisible } from '../../../state/pageSlice.mjs'; 7 | 8 | const SidebarButton = () => { 9 | // Get page state. 10 | const sidebarVisible = useSelector((state) => state.page.sidebarVisible); 11 | 12 | // Create dispatcher. 13 | const dispatch = useDispatch(); 14 | 15 | return ( 16 |