mirror of
https://github.com/ajnart/homarr.git
synced 2025-11-02 19:45:54 +01:00
🚑 Hotfix Docker image with new NextJS version
This commit is contained in:
@@ -3,7 +3,6 @@ module.exports = {
|
|||||||
'mantine',
|
'mantine',
|
||||||
'plugin:@next/next/recommended',
|
'plugin:@next/next/recommended',
|
||||||
'plugin:jest/recommended',
|
'plugin:jest/recommended',
|
||||||
'plugin:storybook/recommended',
|
|
||||||
"eslint:recommended",
|
"eslint:recommended",
|
||||||
"plugin:@typescript-eslint/eslint-recommended",
|
"plugin:@typescript-eslint/eslint-recommended",
|
||||||
"plugin:@typescript-eslint/recommended"
|
"plugin:@typescript-eslint/recommended"
|
||||||
|
|||||||
103
.github/workflows/docker.yml
vendored
103
.github/workflows/docker.yml
vendored
@@ -1,6 +1,8 @@
|
|||||||
name: Master docker CI
|
name: Master CI
|
||||||
# Workflow to build and publish docker image
|
# This workflow uses actions that are not certified by GitHub.
|
||||||
|
# They are provided by a third-party and are governed by
|
||||||
|
# separate terms of service, privacy policy, and support
|
||||||
|
# documentation.
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [master]
|
branches: [master]
|
||||||
@@ -22,72 +24,46 @@ jobs:
|
|||||||
# Push image to GitHub Packages.
|
# Push image to GitHub Packages.
|
||||||
# See also https://docs.docker.com/docker-hub/builds/
|
# See also https://docs.docker.com/docker-hub/builds/
|
||||||
yarn_install_and_build:
|
yarn_install_and_build:
|
||||||
# Will run yarn install && yarn build
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Setup
|
|
||||||
uses: actions/setup-node@v3
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Get yarn cache directory path
|
|
||||||
# to help speed up build times
|
|
||||||
id: yarn-cache-dir-path
|
|
||||||
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
||||||
- name: Yarn cache
|
|
||||||
# to help speed up build times
|
|
||||||
uses: actions/cache@v3
|
|
||||||
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
|
|
||||||
with:
|
|
||||||
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
|
||||||
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
|
||||||
restore-keys: ${{ runner.os }}-yarn-
|
|
||||||
- name: Nextjs cache
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
|
|
||||||
path: |
|
|
||||||
~/.npm
|
|
||||||
${{ github.workspace }}/.next/cache
|
|
||||||
# Generate a new cache whenever packages or source files change.
|
|
||||||
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
|
|
||||||
# If source files changed but packages didn't, rebuild from a prior cache.
|
|
||||||
restore-keys: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
|
|
||||||
- run: yarn install --immutable
|
|
||||||
- run: yarn build
|
|
||||||
- name: Cache build output
|
|
||||||
# to copy needed files to docker build job
|
|
||||||
uses: actions/cache@v2
|
|
||||||
id: restore-build
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
./next.config.js
|
|
||||||
./pages/
|
|
||||||
./public/
|
|
||||||
./.next/static/
|
|
||||||
./.next/standalone/
|
|
||||||
./packages.json
|
|
||||||
key: ${{ github.sha }}
|
|
||||||
|
|
||||||
docker_image_build_and_push:
|
|
||||||
needs: [yarn_install_and_build]
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
packages: write
|
packages: write
|
||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
|
- name: Setup
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
- uses: actions/cache@v2
|
|
||||||
id: restore-build
|
- name: Get yarn cache directory path
|
||||||
|
id: yarn-cache-dir-path
|
||||||
|
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
|
||||||
|
|
||||||
|
- uses: actions/cache@v3
|
||||||
|
id: yarn-cache
|
||||||
with:
|
with:
|
||||||
|
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||||
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-yarn-
|
||||||
|
|
||||||
|
- name: Restore NextJS cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
|
||||||
path: |
|
path: |
|
||||||
./next.config.js
|
${{ github.workspace }}/.next/cache
|
||||||
./pages/
|
# Generate a new cache whenever packages or source files change.
|
||||||
./public/
|
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
|
||||||
./.next/static/
|
# If source files changed but packages didn't, rebuild from a prior cache.
|
||||||
./.next/standalone/
|
restore-keys: |
|
||||||
./packages.json
|
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
|
||||||
key: ${{ github.sha }}
|
|
||||||
|
- run: yarn install --immutable
|
||||||
|
|
||||||
|
- run: yarn build
|
||||||
|
|
||||||
- name: Docker meta
|
- name: Docker meta
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v4
|
uses: docker/metadata-action@v4
|
||||||
@@ -98,10 +74,13 @@ jobs:
|
|||||||
tags: |
|
tags: |
|
||||||
type=raw,value=latest
|
type=raw,value=latest
|
||||||
type=pep440,pattern={{version}}
|
type=pep440,pattern={{version}}
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v2
|
uses: docker/setup-qemu-action@v2
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
- name: Login to GHCR
|
- name: Login to GHCR
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
@@ -117,3 +96,5 @@ jobs:
|
|||||||
push: true
|
push: true
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|||||||
58
.github/workflows/docker_dev.yml
vendored
58
.github/workflows/docker_dev.yml
vendored
@@ -30,6 +30,9 @@ jobs:
|
|||||||
# See also https://docs.docker.com/docker-hub/builds/
|
# See also https://docs.docker.com/docker-hub/builds/
|
||||||
yarn_install_and_build:
|
yarn_install_and_build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
packages: write
|
||||||
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Setup
|
- name: Setup
|
||||||
@@ -40,67 +43,32 @@ jobs:
|
|||||||
|
|
||||||
- name: Get yarn cache directory path
|
- name: Get yarn cache directory path
|
||||||
id: yarn-cache-dir-path
|
id: yarn-cache-dir-path
|
||||||
run: echo "::set-output name=dir::$(yarn cache dir)"
|
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
|
||||||
|
|
||||||
- name: Yarn cache
|
- uses: actions/cache@v3
|
||||||
uses: actions/cache@v3
|
id: yarn-cache
|
||||||
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
|
|
||||||
with:
|
with:
|
||||||
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||||
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
|
||||||
restore-keys: ${{ runner.os }}-yarn-
|
restore-keys: |
|
||||||
|
${{ runner.os }}-yarn-
|
||||||
|
|
||||||
- name: Nextjs cache
|
- name: Restore NextJS cache
|
||||||
uses: actions/cache@v2
|
uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
|
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
|
||||||
path: |
|
path: |
|
||||||
~/.npm
|
|
||||||
${{ github.workspace }}/.next/cache
|
${{ github.workspace }}/.next/cache
|
||||||
# Generate a new cache whenever packages or source files change.
|
# Generate a new cache whenever packages or source files change.
|
||||||
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
|
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
|
||||||
# If source files changed but packages didn't, rebuild from a prior cache.
|
# If source files changed but packages didn't, rebuild from a prior cache.
|
||||||
restore-keys: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
|
restore-keys: |
|
||||||
|
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
|
||||||
|
|
||||||
- run: yarn install --immutable
|
- run: yarn install --immutable
|
||||||
|
|
||||||
- run: yarn build
|
- run: yarn build
|
||||||
|
|
||||||
- name: Cache build output
|
|
||||||
uses: actions/cache@v2
|
|
||||||
id: restore-build
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
./next.config.js
|
|
||||||
./pages/
|
|
||||||
./public/
|
|
||||||
./.next/static/
|
|
||||||
./.next/standalone/
|
|
||||||
./packages.json
|
|
||||||
key: ${{ github.sha }}
|
|
||||||
|
|
||||||
docker_image_build_and_push:
|
|
||||||
needs: [yarn_install_and_build]
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
packages: write
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- uses: actions/cache@v2
|
|
||||||
id: restore-build
|
|
||||||
with:
|
|
||||||
path: |
|
|
||||||
./next.config.js
|
|
||||||
./pages/
|
|
||||||
./public/
|
|
||||||
./.next/static/
|
|
||||||
./.next/standalone/
|
|
||||||
./packages.json
|
|
||||||
key: ${{ github.sha }}
|
|
||||||
|
|
||||||
- name: Docker meta
|
- name: Docker meta
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v4
|
uses: docker/metadata-action@v4
|
||||||
@@ -134,3 +102,5 @@ jobs:
|
|||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
cache-from: type=gha
|
||||||
|
cache-to: type=gha,mode=max
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
stories: ['../src/components/**/*.story.mdx', '../src/components/**/*.story.*'],
|
|
||||||
addons: [
|
|
||||||
'@storybook/addon-links',
|
|
||||||
'storybook-addon-mock/register',
|
|
||||||
'@storybook/addon-essentials',
|
|
||||||
],
|
|
||||||
typescript: {
|
|
||||||
check: false,
|
|
||||||
reactDocgen: false,
|
|
||||||
},
|
|
||||||
framework: '@storybook/react',
|
|
||||||
features: { emotionAlias: false },
|
|
||||||
webpackFinal: async (config, { configType }) => {
|
|
||||||
// `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
|
|
||||||
// You can change the configuration based on that.
|
|
||||||
// 'PRODUCTION' is used when building the static version of storybook.
|
|
||||||
|
|
||||||
// https://github.com/polkadot-js/extension/issues/621#issuecomment-759341776
|
|
||||||
// framer-motion uses the .mjs notation and we need to include it so that webpack will
|
|
||||||
// transpile it for us correctly (enables using a CJS module inside an ESM).
|
|
||||||
config.module.rules.push({
|
|
||||||
test: /\.mjs$/,
|
|
||||||
include: /node_modules/,
|
|
||||||
type: 'javascript/auto',
|
|
||||||
});
|
|
||||||
// Return the altered config
|
|
||||||
return config;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
import { MantineProvider, ColorSchemeProvider } from '@mantine/core';
|
|
||||||
import { NotificationsProvider } from '@mantine/notifications';
|
|
||||||
|
|
||||||
export const parameters = { layout: 'fullscreen' };
|
|
||||||
|
|
||||||
function ThemeWrapper(props: { children: React.ReactNode }) {
|
|
||||||
return (
|
|
||||||
<ColorSchemeProvider colorScheme="light" toggleColorScheme={() => {}}>
|
|
||||||
<MantineProvider withGlobalStyles withNormalizeCSS>
|
|
||||||
<NotificationsProvider>{props.children}</NotificationsProvider>
|
|
||||||
</MantineProvider>
|
|
||||||
</ColorSchemeProvider>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export const decorators = [(renderStory: Function) => <ThemeWrapper>{renderStory()}</ThemeWrapper>];
|
|
||||||
34
Dockerfile
34
Dockerfile
@@ -1,14 +1,28 @@
|
|||||||
FROM node:16-alpine
|
FROM node:16-alpine
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
ENV NODE_ENV production
|
|
||||||
COPY /next.config.js ./
|
|
||||||
COPY /public ./public
|
|
||||||
COPY /package.json ./package.json
|
|
||||||
# Automatically leverage output traces to reduce image size. https://nextjs.org/docs/advanced-features/output-file-tracing
|
|
||||||
COPY /.next/standalone ./
|
|
||||||
COPY /.next/static ./.next/static
|
|
||||||
EXPOSE 7575
|
|
||||||
ENV PORT 7575
|
|
||||||
RUN apk add tzdata
|
RUN apk add tzdata
|
||||||
VOLUME /app/data/configs
|
|
||||||
|
ENV NEXT_TELEMETRY_DISABLED 1
|
||||||
|
|
||||||
|
ENV NODE_ENV production
|
||||||
|
|
||||||
|
RUN addgroup --system --gid 1001 nodejs
|
||||||
|
RUN adduser --system --uid 1001 nextjs
|
||||||
|
|
||||||
|
COPY next.config.js ./
|
||||||
|
COPY public ./public
|
||||||
|
COPY package.json ./package.json
|
||||||
|
|
||||||
|
# Automatically leverage output traces to reduce image size
|
||||||
|
# https://nextjs.org/docs/advanced-features/output-file-tracing
|
||||||
|
COPY --chown=nextjs:nodejs .next/standalone ./
|
||||||
|
COPY --chown=nextjs:nodejs .next/static ./.next/static
|
||||||
|
|
||||||
|
USER nextjs
|
||||||
|
|
||||||
|
EXPOSE 7575
|
||||||
|
|
||||||
|
ENV PORT 7575
|
||||||
|
|
||||||
CMD ["node", "server.js"]
|
CMD ["node", "server.js"]
|
||||||
|
|||||||
17
package.json
17
package.json
@@ -2,6 +2,7 @@
|
|||||||
"name": "homarr",
|
"name": "homarr",
|
||||||
"version": "0.8.2",
|
"version": "0.8.2",
|
||||||
"description": "Homarr - A homepage for your server.",
|
"description": "Homarr - A homepage for your server.",
|
||||||
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/ajnart/homarr"
|
"url": "https://github.com/ajnart/homarr"
|
||||||
@@ -19,8 +20,6 @@
|
|||||||
"prettier:check": "prettier --check \"**/*.{ts,tsx}\"",
|
"prettier:check": "prettier --check \"**/*.{ts,tsx}\"",
|
||||||
"prettier:write": "prettier --write \"**/*.{ts,tsx}\"",
|
"prettier:write": "prettier --write \"**/*.{ts,tsx}\"",
|
||||||
"test": "npm run prettier:check && npm run lint && npm run typecheck && npm run jest",
|
"test": "npm run prettier:check && npm run lint && npm run typecheck && npm run jest",
|
||||||
"storybook": "start-storybook -p 7001",
|
|
||||||
"storybook:build": "build-storybook",
|
|
||||||
"ci": "yarn test && yarn lint --fix && yarn typecheck && yarn prettier:write"
|
"ci": "yarn test && yarn lint --fix && yarn typecheck && yarn prettier:write"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -42,14 +41,13 @@
|
|||||||
"@nivo/core": "^0.79.0",
|
"@nivo/core": "^0.79.0",
|
||||||
"@nivo/line": "^0.79.1",
|
"@nivo/line": "^0.79.1",
|
||||||
"@tabler/icons": "^1.76.0",
|
"@tabler/icons": "^1.76.0",
|
||||||
"add": "^2.0.6",
|
|
||||||
"axios": "^0.27.2",
|
"axios": "^0.27.2",
|
||||||
"cookies-next": "^2.1.1",
|
"cookies-next": "^2.1.1",
|
||||||
"dayjs": "^1.11.4",
|
"dayjs": "^1.11.4",
|
||||||
"dockerode": "^3.3.2",
|
"dockerode": "^3.3.2",
|
||||||
"framer-motion": "^6.5.1",
|
"framer-motion": "^6.5.1",
|
||||||
"js-file-download": "^0.4.12",
|
"js-file-download": "^0.4.12",
|
||||||
"next": "^12.2.3",
|
"next": "12.2.0",
|
||||||
"prism-react-renderer": "^1.3.5",
|
"prism-react-renderer": "^1.3.5",
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
@@ -58,10 +56,8 @@
|
|||||||
"yarn": "^1.22.19"
|
"yarn": "^1.22.19"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.18.9",
|
"@next/bundle-analyzer": "12.2.0",
|
||||||
"@next/bundle-analyzer": "^12.2.3",
|
"@next/eslint-plugin-next": "12.2.0",
|
||||||
"@next/eslint-plugin-next": "^12.2.3",
|
|
||||||
"@storybook/react": "^6.5.9",
|
|
||||||
"@types/dockerode": "^3.3.9",
|
"@types/dockerode": "^3.3.9",
|
||||||
"@types/node": "^18.0.6",
|
"@types/node": "^18.0.6",
|
||||||
"@types/react": "^18.0.15",
|
"@types/react": "^18.0.15",
|
||||||
@@ -77,14 +73,11 @@
|
|||||||
"eslint-plugin-jsx-a11y": "^6.6.1",
|
"eslint-plugin-jsx-a11y": "^6.6.1",
|
||||||
"eslint-plugin-react": "^7.30.1",
|
"eslint-plugin-react": "^7.30.1",
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"eslint-plugin-storybook": "^0.6.1",
|
|
||||||
"eslint-plugin-testing-library": "^5.5.1",
|
"eslint-plugin-testing-library": "^5.5.1",
|
||||||
"eslint-plugin-unused-imports": "^2.0.0",
|
"eslint-plugin-unused-imports": "^2.0.0",
|
||||||
"jest": "^28.1.3",
|
"jest": "^28.1.3",
|
||||||
"prettier": "^2.7.1",
|
"prettier": "^2.7.1",
|
||||||
"require-from-string": "^2.0.2",
|
"typescript": "^4.7.4"
|
||||||
"typescript": "^4.7.4",
|
|
||||||
"yarn-upgrade-all": "^0.7.1"
|
|
||||||
},
|
},
|
||||||
"packageManager": "yarn@3.2.1"
|
"packageManager": "yarn@3.2.1"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
import { SimpleGrid } from '@mantine/core';
|
|
||||||
import AppShelf from './AppShelf';
|
|
||||||
import { AppShelfItem } from './AppShelfItem';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
title: 'Item Shelf',
|
|
||||||
component: AppShelf,
|
|
||||||
args: {
|
|
||||||
service: {
|
|
||||||
name: 'qBittorrent',
|
|
||||||
url: 'http://',
|
|
||||||
icon: 'https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/qBittorrent/icon.png',
|
|
||||||
type: 'qBittorrent',
|
|
||||||
apiKey: '',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export const Default = (args: any) => <AppShelf {...args} />;
|
|
||||||
export const One = (args: any) => <AppShelfItem {...args} />;
|
|
||||||
export const Ten = (args: any) => (
|
|
||||||
<SimpleGrid>
|
|
||||||
{Array.from(Array(10)).map((_, i) => (
|
|
||||||
<AppShelfItem {...args} key={i} />
|
|
||||||
))}
|
|
||||||
</SimpleGrid>
|
|
||||||
);
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
import { SettingsMenuButton } from './SettingsMenu';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
title: ' menu',
|
|
||||||
args: {
|
|
||||||
opened: false,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export const Default = (args: any) => <SettingsMenuButton {...args} />;
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
import CalendarComponent from './CalendarModule';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
title: 'Calendar component',
|
|
||||||
};
|
|
||||||
|
|
||||||
export const Default = (args: any) => <CalendarComponent {...args} />;
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
import { RadarrMediaDisplay } from './MediaDisplay';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
title: 'Media display component',
|
|
||||||
args: {
|
|
||||||
media: {
|
|
||||||
title: 'Doctor Strange in the Multiverse of Madness',
|
|
||||||
originalTitle: 'Doctor Strange in the Multiverse of Madness',
|
|
||||||
originalLanguage: {
|
|
||||||
id: 1,
|
|
||||||
name: 'English',
|
|
||||||
},
|
|
||||||
secondaryYearSourceId: 0,
|
|
||||||
sortTitle: 'doctor strange in multiverse madness',
|
|
||||||
sizeOnDisk: 0,
|
|
||||||
status: 'announced',
|
|
||||||
overview:
|
|
||||||
'Doctor Strange, with the help of mystical allies both old and new, traverses the mind-bending and dangerous alternate realities of the Multiverse to confront a mysterious new adversary.',
|
|
||||||
inCinemas: '2022-05-04T00:00:00Z',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
coverType: 'poster',
|
|
||||||
url: 'https://image.tmdb.org/t/p/original/wRnbWt44nKjsFPrqSmwYki5vZtF.jpg',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
coverType: 'fanart',
|
|
||||||
url: 'https://image.tmdb.org/t/p/original/ndCSoasjIZAMMDIuMxuGnNWu4DU.jpg',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
website: 'https://www.marvel.com/movies/doctor-strange-in-the-multiverse-of-madness',
|
|
||||||
year: 2022,
|
|
||||||
hasFile: false,
|
|
||||||
youTubeTrailerId: 'aWzlQ2N6qqg',
|
|
||||||
studio: 'Marvel Studios',
|
|
||||||
path: '/config/Doctor Strange in the Multiverse of Madness (2022)',
|
|
||||||
qualityProfileId: 1,
|
|
||||||
monitored: true,
|
|
||||||
minimumAvailability: 'announced',
|
|
||||||
isAvailable: true,
|
|
||||||
folderName: '/config/Doctor Strange in the Multiverse of Madness (2022)',
|
|
||||||
runtime: 126,
|
|
||||||
cleanTitle: 'doctorstrangeinmultiversemadness',
|
|
||||||
imdbId: 'tt9419884',
|
|
||||||
tmdbId: 453395,
|
|
||||||
titleSlug: '453395',
|
|
||||||
certification: 'PG-13',
|
|
||||||
genres: ['Fantasy', 'Action', 'Adventure'],
|
|
||||||
tags: [],
|
|
||||||
added: '2022-04-29T20:52:33Z',
|
|
||||||
ratings: {
|
|
||||||
tmdb: {
|
|
||||||
votes: 0,
|
|
||||||
value: 0,
|
|
||||||
type: 'user',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
collection: {
|
|
||||||
name: 'Doctor Strange Collection',
|
|
||||||
tmdbId: 618529,
|
|
||||||
images: [],
|
|
||||||
},
|
|
||||||
id: 1,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export const Default = (args: any) => <RadarrMediaDisplay {...args} />;
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
import DateComponent from './DateModule';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
title: 'Date module',
|
|
||||||
};
|
|
||||||
|
|
||||||
export const Default = (args: any) => <DateComponent {...args} />;
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
import { serviceItem } from '../../../tools/types';
|
|
||||||
import PingComponent from './PingModule';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
title: 'Modules/Search bar',
|
|
||||||
};
|
|
||||||
|
|
||||||
const service: serviceItem = {
|
|
||||||
id: '1',
|
|
||||||
type: 'Other',
|
|
||||||
name: 'YouTube',
|
|
||||||
icon: 'https://cdn.jsdelivr.net/gh/walkxhub/dashboard-icons/png/youtube.png',
|
|
||||||
url: 'https://youtube.com/',
|
|
||||||
status: ['200'],
|
|
||||||
newTab: false,
|
|
||||||
};
|
|
||||||
|
|
||||||
export const Default = (args: any) => <PingComponent service={service} />;
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
import SearchBar from './SearchModule';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
title: 'Search bar',
|
|
||||||
config: {
|
|
||||||
searchBar: false,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export const Default = (args: any) => <SearchBar {...args} />;
|
|
||||||
Reference in New Issue
Block a user