{[...Array(NUM_FRAGMENTS)].map((e, i) => {
const loopStage = i + 1
return interactive ? (
diff --git a/package-lock.json b/package-lock.json
index 9139c0ec..f3cf9fe4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -20,8 +20,11 @@
"@radix-ui/react-tooltip": "^1.0.3",
"@svgr/webpack": "^6.2.0",
"@tiptap/extension-bubble-menu": "^2.0.3",
+ "@tiptap/extension-highlight": "^2.0.3",
"@tiptap/extension-link": "^2.0.3",
"@tiptap/extension-mention": "^2.0.3",
+ "@tiptap/extension-placeholder": "^2.0.3",
+ "@tiptap/extension-typography": "^2.0.3",
"@tiptap/extension-youtube": "^2.0.3",
"@tiptap/pm": "^2.0.3",
"@tiptap/react": "^2.0.3",
@@ -56,6 +59,7 @@
"react-lite-youtube-embed": "^2.3.52",
"react-scroll": "^1.8.5",
"react-string-replace": "^1.1.0",
+ "remixicon-react": "^1.0.0",
"resolve-url-loader": "^5.0.0",
"sanitize-html": "^2.8.1",
"sass": "^1.61.0",
@@ -7229,6 +7233,18 @@
"@tiptap/core": "^2.0.0"
}
},
+ "node_modules/@tiptap/extension-highlight": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-highlight/-/extension-highlight-2.0.3.tgz",
+ "integrity": "sha512-NrtibY8cZkIjZMQuHRrKd4php+plOvAoSo8g3uVFu275I/Ixt5HqJ53R4voCXs8W8BOBRs2HS2QX8Cjh79XhtA==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0"
+ }
+ },
"node_modules/@tiptap/extension-history": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.0.3.tgz",
@@ -7333,6 +7349,19 @@
"@tiptap/core": "^2.0.0"
}
},
+ "node_modules/@tiptap/extension-placeholder": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.0.3.tgz",
+ "integrity": "sha512-Z42jo0termRAf0S0L8oxrts94IWX5waU4isS2CUw8xCUigYyCFslkhQXkWATO1qRbjNFLKN2C9qvCgGf4UeBrw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0",
+ "@tiptap/pm": "^2.0.0"
+ }
+ },
"node_modules/@tiptap/extension-strike": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.0.3.tgz",
@@ -7357,6 +7386,18 @@
"@tiptap/core": "^2.0.0"
}
},
+ "node_modules/@tiptap/extension-typography": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@tiptap/extension-typography/-/extension-typography-2.0.3.tgz",
+ "integrity": "sha512-5U91O2dffYOvwenWG+zT1N/pnt+RppSlocxs1KaNWFLlI2fgzDTyUyjzygIHGmskStqay2MuvmPnfVABoC+1Gw==",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/ueberdosis"
+ },
+ "peerDependencies": {
+ "@tiptap/core": "^2.0.0"
+ }
+ },
"node_modules/@tiptap/extension-youtube": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@tiptap/extension-youtube/-/extension-youtube-2.0.3.tgz",
@@ -19306,6 +19347,14 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/remixicon-react": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/remixicon-react/-/remixicon-react-1.0.0.tgz",
+ "integrity": "sha512-KOXlc8EdKdujr2f/2idyFSQRjUB8p0HNiWZYBBzRsTRlTXFuSAFfnGq9culNjhCGmc92Jbtfr9OP0MXWvTMdsQ==",
+ "peerDependencies": {
+ "react": ">=0.14.0"
+ }
+ },
"node_modules/renderkid": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz",
diff --git a/package.json b/package.json
index e3d72855..840c3cef 100644
--- a/package.json
+++ b/package.json
@@ -27,8 +27,11 @@
"@radix-ui/react-tooltip": "^1.0.3",
"@svgr/webpack": "^6.2.0",
"@tiptap/extension-bubble-menu": "^2.0.3",
+ "@tiptap/extension-highlight": "^2.0.3",
"@tiptap/extension-link": "^2.0.3",
"@tiptap/extension-mention": "^2.0.3",
+ "@tiptap/extension-placeholder": "^2.0.3",
+ "@tiptap/extension-typography": "^2.0.3",
"@tiptap/extension-youtube": "^2.0.3",
"@tiptap/pm": "^2.0.3",
"@tiptap/react": "^2.0.3",
@@ -63,6 +66,7 @@
"react-lite-youtube-embed": "^2.3.52",
"react-scroll": "^1.8.5",
"react-string-replace": "^1.1.0",
+ "remixicon-react": "^1.0.0",
"resolve-url-loader": "^5.0.0",
"sanitize-html": "^2.8.1",
"sass": "^1.61.0",
diff --git a/pages/_app.tsx b/pages/_app.tsx
index 60381287..6f3c64eb 100644
--- a/pages/_app.tsx
+++ b/pages/_app.tsx
@@ -1,4 +1,5 @@
import { appWithTranslation } from 'next-i18next'
+import Head from 'next/head'
import Link from 'next/link'
import { useTranslation } from 'next-i18next'
import { get } from 'local-storage'
@@ -131,20 +132,28 @@ function MyApp({ Component, pageProps }: AppProps) {
}
return (
-
-
-
-
- {!appState.version ? (
- serverUnavailable()
- ) : (
-
- )}
-
-
-
-
-
+ <>
+
+
+
+
+
+
+
+ {!appState.version ? (
+ serverUnavailable()
+ ) : (
+
+ )}
+
+
+
+
+
+ >
)
}
diff --git a/pages/p/[party].tsx b/pages/p/[party].tsx
index 10b08b75..00bc379a 100644
--- a/pages/p/[party].tsx
+++ b/pages/p/[party].tsx
@@ -90,8 +90,8 @@ const PartyRoute: React.FC
= ({
break
}
- if (router.asPath !== '/new' && router.asPath !== '/')
- router.replace(path, undefined, { shallow: true })
+ // if (router.asPath !== '/new' && router.asPath !== '/')
+ // router.replace(path, undefined, { shallow: true })
}
// Set the initial data from props
diff --git a/public/icons/remix/list-ordered-2.svg b/public/icons/remix/list-ordered-2.svg
new file mode 100644
index 00000000..7ca71b79
--- /dev/null
+++ b/public/icons/remix/list-ordered-2.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/locales/en/common.json b/public/locales/en/common.json
index 149ded99..529fe5b0 100644
--- a/public/locales/en/common.json
+++ b/public/locales/en/common.json
@@ -557,6 +557,19 @@
"tokens": {
"remix": "Remixed"
},
+ "toolbar": {
+ "tooltips": {
+ "bold": "Bold",
+ "italic": "Italic",
+ "strike": "Strikethrough",
+ "highlight": "Highlight",
+ "link": "Add a link",
+ "youtube": "Add a Youtube video",
+ "heading": "Heading {{level}}",
+ "bulletList": "Bullet list",
+ "orderedList": "Numbered list"
+ }
+ },
"tooltips": {
"copy_url": "Copy the URL to this team",
"new": "Create a new team",
diff --git a/public/locales/ja/common.json b/public/locales/ja/common.json
index 94169382..8c9fe7e4 100644
--- a/public/locales/ja/common.json
+++ b/public/locales/ja/common.json
@@ -555,6 +555,19 @@
"tokens": {
"remix": "リミックスされた"
},
+ "toolbar": {
+ "tooltips": {
+ "bold": "太字",
+ "italic": "斜体",
+ "strike": "取り消し線",
+ "highlight": "ハイライト",
+ "link": "リンクを挿入",
+ "youtube": "Youtube動画を埋め込む",
+ "heading": "見出し {{level}}",
+ "bulletList": "箇条書き",
+ "orderedList": "番号リスト"
+ }
+ },
"tooltips": {
"copy_url": "この編成のURLをコピーする",
"new": "新しい編成を作成する",
diff --git a/styles/themes.scss b/styles/themes.scss
index 6ebab807..5f256bd6 100644
--- a/styles/themes.scss
+++ b/styles/themes.scss
@@ -63,6 +63,12 @@
--toolbar-item-text-hover: #{$toolbar--item--text--light--hover};
--toolbar-item-text-active: #{$toolbar--item--text--light--active};
+ // Light - Highlights
+ --highlight-bg: #{$highlight--bg--light};
+ --highlight-bg-hover: #{$highlight--bg--light--hover};
+ --highlight-text: #{$highlight--text--light};
+ --highlight-text-hover: #{$highlight--text--light--hover};
+
// Light - Placeholders
--placeholder-bound-bg: #{$placeholder--bound--bg--light};
--placeholder-bound-bg-hover: #{$placeholder--bound--bg--light--hover};
@@ -153,6 +159,14 @@
--grid-border-color: #{$grid--border--color--light};
// Light - Element theming
+ --null-bg: #{$null--bg--light};
+ --null-bg-hover: #{$null--bg--hover--light};
+ --null-text: #{$null--text--light};
+ --null-raid-text: #{$null--text--raid--light};
+ --null-text-hover: #{$null--text--hover--light};
+ --null-shadow: #{$null--shadow--light};
+ --null-shadow-hover: #{$null--shadow--light--hover};
+
--wind-bg: #{$wind--bg--light};
--wind-bg-hover: #{$wind--bg--hover--light};
--wind-text: #{$wind--text--light};
@@ -271,6 +285,12 @@
--toolbar-item-text-hover: #{$toolbar--item--text--dark--hover};
--toolbar-item-text-active: #{$toolbar--item--text--dark--active};
+ // Dark - Highlights
+ --highlight-bg: #{$highlight--bg--dark};
+ --highlight-bg-hover: #{$highlight--bg--dark--hover};
+ --highlight-text: #{$highlight--text--dark};
+ --highlight-text-hover: #{$highlight--text--dark--hover};
+
// Dark - Placeholders
--placeholder-bound-bg: #{$placeholder--bound--bg--dark};
--placeholder-bound-bg-hover: #{$placeholder--bound--bg--dark--hover};
@@ -361,6 +381,14 @@
--grid-border-color: #{$grid--border--color--dark};
// Dark - Element theming
+ --null-bg: #{$null--bg--dark};
+ --null-bg-hover: #{$null--bg--hover--dark};
+ --null-text: #{$null--text--dark};
+ --null-raid-text: #{$null--text--raid--dark};
+ --null-text-hover: #{$null--text--hover--dark};
+ --null-shadow: #{$null--shadow--dark};
+ --null-shadow-hover: #{$null--shadow--dark--hover};
+
--wind-bg: #{$wind--bg--dark};
--wind-bg-hover: #{$wind--bg--hover--dark};
--wind-text: #{$wind--text--dark};
diff --git a/styles/variables.scss b/styles/variables.scss
index 2b9ccd41..8877117a 100644
--- a/styles/variables.scss
+++ b/styles/variables.scss
@@ -79,6 +79,13 @@ $orange-75: #ffb461;
$orange-80: #facea7;
$orange-90: #ffebd9;
+// Yellow -- Highlights
+$yellow-10: #4d3703;
+$yellow-30: #956d11;
+$yellow-50: #c8a657;
+$yellow-70: #fedc8d;
+$yellow-90: #ffed4c;
+
// Colors -- Interface
$blue: #275dc5;
$red: #ff6161;
@@ -96,6 +103,7 @@ $accent--yellow--light: #c89d39;
$accent--yellow--dark: #f9cc64;
$yellow-text-10: #a39200;
$yellow-text-20: #ffed4c;
+$highlight-yellow: #ffed4c55;
$accent--yellow--00: #463805;
$accent--yellow--20: #7f6a00;
@@ -383,6 +391,19 @@ $toolbar--item--text--dark--hover: $grey-90;
$toolbar--item--text--light--active: $grey-100;
$toolbar--item--text--dark--active: $grey-00;
+// Color Definitions: Highlights
+$highlight--bg--light: $yellow-70;
+$highlight--bg--dark: $yellow-50;
+
+$highlight--bg--light--hover: $yellow-50;
+$highlight--bg--dark--hover: $yellow-70;
+
+$highlight--text--light: $yellow-30;
+$highlight--text--dark: $yellow-10;
+
+$highlight--text--light--hover: $yellow-10;
+$highlight--text--dark--hover: $yellow-30;
+
// Color Definitions: Element Toggle
$toggle--bg--light: $grey-90;
$toggle--bg--dark: $grey-15;
@@ -443,6 +464,28 @@ $wind--shadow--dark: fade-out($wind-text-20, 0.3);
$wind--shadow--light--hover: fade-out($wind-text-00, 0.3);
$wind--shadow--dark--hover: fade-out($wind-text-00, 0.3);
+// Color Definitions: Element / Null
+$null--bg--light: $grey-75;
+$null--bg--dark: $grey-40;
+
+$null--bg--hover--light: $grey-70;
+$null--bg--hover--dark: $grey-30;
+
+$null--text--light: $grey-40;
+$null--text--dark: $grey-90;
+
+$null--text--raid--light: $grey-40;
+$null--text--raid--dark: $grey-90;
+
+$null--text--hover--light: $grey-20;
+$null--text--hover--dark: $grey-90;
+
+$null--shadow--light: fade-out($grey-60, 0.3);
+$null--shadow--dark: fade-out($grey-25, 0.3);
+
+$null--shadow--light--hover: fade-out($grey-50, 0.3);
+$null--shadow--dark--hover: fade-out($grey-10, 0.3);
+
// Color Definitions: Element / Fire
$fire--bg--light: $fire-bg-10;
$fire--bg--dark: $fire-bg-10;
diff --git a/utils/api.tsx b/utils/api.tsx
index bd55cd0b..63ac5ba4 100644
--- a/utils/api.tsx
+++ b/utils/api.tsx
@@ -179,6 +179,17 @@ class Api {
}
})
}
+
+ updateTranscendence(resource: 'character'|'summon', id: string, value: number) {
+ const pluralized = resource + 's'
+ const resourceUrl = `${this.url}/${pluralized}/update_uncap`
+ return axios.post(resourceUrl, {
+ [resource]: {
+ id: id,
+ transcendence_step: value
+ }
+ })
+ }
userInfo(id: string) {
const resourceUrl = `${this.url}/users/info/${id}`