- {/*
ComposeDB Models
*/}
-
-
+
)
}
-const ExploreModelContainer = styled.div`
- margin-top: 25px;
- margin-bottom: 25px;
- .no-more {
- padding: 20px;
- text-align: center;
- color: gray;
- }
-
- .mobile-models-box {
- margin-bottom: 20px;
- }
-
+export const ExploreContainer = styled.div`
.title-box {
display: flex;
align-items: center;
- justify-content: end;
+ justify-content: start;
margin-bottom: 20px;
- .tools {
- display: flex;
- align-items: center;
- gap: 15px;
-
- > button {
- border-radius: 100px;
- background: #14171a;
- font-size: 14px;
- line-height: 20px;
- text-align: center;
- font-weight: 400;
- color: #a0aec0;
- text-transform: capitalize;
- background: #ffffff;
- font-weight: 500;
- color: #14171a;
- cursor: pointer;
- border: none;
- outline: none;
- /* width: 100px; */
- padding: 0 15px;
- height: 36px;
-
- &.star-btn {
- width: 52px;
- height: 40px;
-
- background: #1a1e23;
- border: 1px solid #39424c;
- border-radius: 100px;
- display: inline-flex;
- align-items: center;
- justify-items: center;
- }
- }
- }
- }
-
- .title {
- > span {
- font-size: 22px;
- font-weight: 700;
- line-height: 40px;
- }
-
- /* padding: 0 0 20px 0; */
- position: sticky;
- background-color: #14171a;
- top: 0;
- z-index: 100;
-
- display: flex;
- justify-content: space-between;
- align-items: center;
- font-weight: 700;
- font-size: 24px;
- line-height: 28px;
- font-style: italic;
-
- color: #ffffff;
- }
-
- .react-aria-Button {
- font-size: 18px;
}
`
diff --git a/packages/client/dashboard/src/hooks/useGuideSteps.ts b/packages/client/dashboard/src/hooks/useGuideSteps.ts
index b576d504..d04e70f3 100644
--- a/packages/client/dashboard/src/hooks/useGuideSteps.ts
+++ b/packages/client/dashboard/src/hooks/useGuideSteps.ts
@@ -100,28 +100,28 @@ export function useGuideStepsState(dapps: ClientDApp[], loadingDApps: boolean) {
useEffect(() => {
if (!validStep(1)) {
if (!validStep2SubStep(0)) {
- const isModelEditor = location.pathname.endsWith('model-editor')
+ const isModelEditor = location.pathname.endsWith('editor')
if (isModelEditor) {
completeStep2SubStep(0)
}
}
if (!validStep2SubStep(1)) {
- const isModelPlayground = location.pathname.endsWith('model-playground')
+ const isModelPlayground = location.pathname.endsWith('playground')
if (isModelPlayground) {
completeStep2SubStep(1)
}
}
if (!validStep2SubStep(2)) {
- const isModelSdk = location.pathname.endsWith('model-sdk')
+ const isModelSdk = location.pathname.endsWith('sdk')
if (isModelSdk) {
completeStep2SubStep(2)
}
}
if (!validStep2SubStep(3)) {
- const isStatistic = location.pathname.endsWith('statistic')
+ const isStatistic = location.pathname.endsWith('metrics')
if (isStatistic) {
completeStep2SubStep(3)
}
diff --git a/packages/client/dashboard/src/index.css b/packages/client/dashboard/src/index.css
deleted file mode 100644
index c8ae0f5a..00000000
--- a/packages/client/dashboard/src/index.css
+++ /dev/null
@@ -1,289 +0,0 @@
-body {
- margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
- 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
- sans-serif;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
- background: #14171a;
- color: #fff;
-}
-
-html,
-body,
-#root {
- font-family: 'Rubik';
-}
-
-a,
-a:hover {
- text-decoration: none;
-}
-
-code {
- font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
- monospace;
-}
-
-*::-webkit-scrollbar {
- display: none;
-}
-
-button {
- background: none;
- border: none;
- outline: none;
- cursor: pointer;
- &:disabled {
- cursor: default;
- }
-}
-
-.react-aria-ModalOverlay {
- position: fixed;
- top: 0;
- left: 0;
- width: 100vw;
- z-index: 100000;
- height: var(--visual-viewport-height);
- background: rgba(0 0 0 / 0.5);
- backdrop-filter: blur(12px);
- overflow: scroll;
-
- &[data-entering] {
- animation: fade 200ms;
- }
-
- &[data-exiting] {
- animation: fade 150ms reverse ease-in;
- }
-}
-
-.confirm-modal {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- height: 100%;
-}
-
-.react-aria-Modal {
- box-shadow: 0 8px 20px rgba(0 0 0 / 0.1);
- border-radius: 6px;
- background: var(--page-background);
- border: 1px solid var(--spectrum-global-color-gray-300);
- outline: none;
- padding: 30px;
- position: relative;
-
- &[data-entering] {
- animation: zoom 300ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
- }
-}
-
-@keyframes fade {
- from {
- opacity: 0;
- }
-
- to {
- opacity: 1;
- }
-}
-
-@keyframes zoom {
- from {
- transform: scale(0.8);
- }
-
- to {
- transform: scale(1);
- }
-}
-
-.react-aria-Dialog {
- outline: none;
-
- .react-aria-Heading {
- line-height: 1em;
- margin-top: 0;
- }
-
- .react-aria-Button {
- margin-top: 20px;
- }
-
- .favorite {
- margin: 0;
- }
-}
-
-.react-aria-Button {
- background: var(--spectrum-global-color-gray-50);
- border: 1px solid var(--spectrum-global-color-gray-400);
- border-radius: 4px;
- color: var(--spectrum-alias-text-color);
- appearance: none;
- vertical-align: middle;
- font-size: 1.2rem;
- text-align: center;
- margin: 0;
- outline: none;
- transition: border-color 200ms;
-
- &[data-hovered] {
- border-color: var(--spectrum-global-color-gray-500);
- }
-
- &[data-pressed] {
- box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.1);
- background: var(--spectrum-global-color-gray-100);
- border-color: var(--spectrum-global-color-gray-600);
- }
-
- &[data-focus-visible] {
- border-color: slateblue;
- box-shadow: 0 0 0 1px slateblue;
- }
-}
-
-.react-aria-TextField {
- margin-bottom: 8px;
-
- .react-aria-Label {
- display: inline-block;
- width: 5.357rem;
- }
-
- .react-aria-Input {
- font-size: 16px;
- }
-}
-
-/* Popover */
-.react-aria-Popover,
-.list-popover {
- background: #1b1e23;
- border: 1px solid #39424c;
- border-radius: 10px;
- z-index: 200;
- outline: none;
- width: 200px;
-
- &[data-placement='top'] {
- margin-bottom: 6px;
- --origin: translateY(8px);
- }
-
- &[data-placement='bottom'] {
- margin-top: 6px;
- --origin: translateY(-8px);
-
- & .react-aria-OverlayArrow svg {
- transform: rotate(180deg);
- }
- }
-
- &[data-placement='right'] {
- margin-left: 6px;
- --origin: translateX(-8px);
-
- & .react-aria-OverlayArrow svg {
- transform: rotate(90deg);
- }
- }
-
- &[data-placement='left'] {
- margin-right: 6px;
- --origin: translateX(8px);
-
- & .react-aria-OverlayArrow svg {
- transform: rotate(-90deg);
- }
- }
-
- &[data-entering] {
- animation: slide 200ms;
- }
-
- &[data-exiting] {
- animation: slide 200ms reverse ease-in;
- }
-}
-
-.react-aria-Popover a {
- text-decoration: none;
-}
-
-.react-aria-Popover .popover-item {
- color: #718096;
-}
-
-.react-aria-Popover .popover-item button {
- font-weight: 400;
- font-size: 16px;
- line-height: 19px;
- padding: 20px;
- color: inherit;
- margin: 0;
- padding: 20px;
- width: 100%;
- height: 100%;
- text-align: start;
-}
-
-.react-aria-Popover .popover-item:hover {
- color: #ffffff;
- background: #14171a;
- border-radius: 20px;
-}
-
-@keyframes slide {
- from {
- transform: var(--origin);
- opacity: 0;
- }
-
- to {
- transform: translateY(0);
- opacity: 1;
- }
-}
-
-.react-aria-Dialog {
- outline: none;
-}
-
-.react-aria-Button {
- background: var(--spectrum-global-color-gray-50);
- border: 1px solid var(--spectrum-global-color-gray-400);
- border-radius: 4px;
- color: var(--spectrum-alias-text-color);
- appearance: none;
- vertical-align: middle;
- font-size: 1.2rem;
- text-align: center;
- margin: 0;
- outline: none;
- padding: 6px;
- transition: border-color 200ms;
-
- &[data-hovered] {
- border-color: var(--spectrum-global-color-gray-500);
- }
-
- &[data-pressed] {
- box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.1);
- background: var(--spectrum-global-color-gray-100);
- border-color: var(--spectrum-global-color-gray-600);
- }
-
- &[data-focus-visible] {
- border-color: slateblue;
- box-shadow: 0 0 0 1px slateblue;
- }
-}
-
-@media (forced-colors: active) {
- .react-aria-Popover {}
-}
\ No newline at end of file
diff --git a/packages/client/dashboard/src/index.tsx b/packages/client/dashboard/src/index.tsx
index 26d7472d..42975897 100644
--- a/packages/client/dashboard/src/index.tsx
+++ b/packages/client/dashboard/src/index.tsx
@@ -1,19 +1,15 @@
import React from 'react'
import ReactDOM from 'react-dom/client'
import { BrowserRouter } from 'react-router-dom'
-
import App from './App'
import reportWebVitals from './reportWebVitals'
-import './index.css'
-import './styles/tab.css'
-import './styles/playground.css'
-import './styles/menu.css'
-import './styles/checkbox.css'
-import './styles/prism-vsc-dark-plus.css'
+import './styles/index.css'
+import './styles/react-aria/index.css'
import '@graphiql/plugin-explorer/dist/style.css'
import 'graphiql/graphiql.css'
+import './styles/prism-vsc-dark-plus.css'
const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement)
root.render(
diff --git a/packages/client/dashboard/src/styles/index.css b/packages/client/dashboard/src/styles/index.css
new file mode 100644
index 00000000..0fe8edad
--- /dev/null
+++ b/packages/client/dashboard/src/styles/index.css
@@ -0,0 +1,48 @@
+body {
+ margin: 0;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
+ 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
+ sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ background: #14171a;
+ color: #fff;
+}
+
+html,
+body,
+#root {
+ font-family: 'Rubik';
+}
+
+a,
+a:hover {
+ text-decoration: none;
+}
+
+code {
+ font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',
+ monospace;
+}
+
+*::-webkit-scrollbar {
+ display: none;
+}
+
+button {
+ background: none;
+ border: none;
+ outline: none;
+ cursor: pointer;
+ &:disabled {
+ cursor: default;
+ }
+}
+
+.confirm-modal {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ height: 100%;
+}
diff --git a/packages/client/dashboard/src/styles/playground.css b/packages/client/dashboard/src/styles/playground.css
deleted file mode 100644
index a7c7b818..00000000
--- a/packages/client/dashboard/src/styles/playground.css
+++ /dev/null
@@ -1,5 +0,0 @@
-.graphiql-container {
- height: 100%;
- width: 100%;
- }
-
\ No newline at end of file
diff --git a/packages/client/dashboard/src/styles/react-aria/button.css b/packages/client/dashboard/src/styles/react-aria/button.css
new file mode 100644
index 00000000..386f105b
--- /dev/null
+++ b/packages/client/dashboard/src/styles/react-aria/button.css
@@ -0,0 +1,25 @@
+.react-aria-Button {
+ background: var(--spectrum-global-color-gray-50);
+ border: 1px solid var(--spectrum-global-color-gray-400);
+ color: var(--spectrum-alias-text-color);
+ border-radius: 4px;
+ appearance: none;
+ vertical-align: middle;
+ font-size: 1.2rem;
+ text-align: center;
+ margin: 0;
+ outline: none;
+ padding: 0.286rem 0.857rem;
+
+ &[data-pressed] {
+ box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.1);
+ background: var(--spectrum-global-color-gray-100);
+ border-color: var(--spectrum-global-color-gray-500);
+ }
+
+ &[data-focus-visible] {
+ border-color: #14171a;
+ box-shadow: 0 0 0 1px #14171a;
+ }
+ }
+
\ No newline at end of file
diff --git a/packages/client/dashboard/src/styles/checkbox.css b/packages/client/dashboard/src/styles/react-aria/checkbox.css
similarity index 100%
rename from packages/client/dashboard/src/styles/checkbox.css
rename to packages/client/dashboard/src/styles/react-aria/checkbox.css
diff --git a/packages/client/dashboard/src/styles/react-aria/dialog.css b/packages/client/dashboard/src/styles/react-aria/dialog.css
new file mode 100644
index 00000000..abf39807
--- /dev/null
+++ b/packages/client/dashboard/src/styles/react-aria/dialog.css
@@ -0,0 +1,17 @@
+/* Dialog */
+.react-aria-Dialog {
+ outline: none;
+
+ .react-aria-Heading {
+ line-height: 1em;
+ margin-top: 0;
+ }
+
+ .react-aria-Button {
+ margin-top: 20px;
+ }
+
+ .favorite {
+ margin: 0;
+ }
+}
diff --git a/packages/client/dashboard/src/styles/react-aria/index.css b/packages/client/dashboard/src/styles/react-aria/index.css
new file mode 100644
index 00000000..5b3fddc3
--- /dev/null
+++ b/packages/client/dashboard/src/styles/react-aria/index.css
@@ -0,0 +1,10 @@
+
+@import "theme.css";
+@import "button.css";
+@import "checkbox.css";
+@import 'dialog.css';
+@import 'menu.css';
+@import 'modal.css';
+@import 'popover.css';
+@import 'tabs.css';
+@import 'textfield.css';
diff --git a/packages/client/dashboard/src/styles/menu.css b/packages/client/dashboard/src/styles/react-aria/menu.css
similarity index 76%
rename from packages/client/dashboard/src/styles/menu.css
rename to packages/client/dashboard/src/styles/react-aria/menu.css
index 27a2e61b..6fd7eff3 100644
--- a/packages/client/dashboard/src/styles/menu.css
+++ b/packages/client/dashboard/src/styles/react-aria/menu.css
@@ -1,28 +1,3 @@
-.react-aria-Button {
- background: var(--spectrum-global-color-gray-50);
- border: 1px solid var(--spectrum-global-color-gray-400);
- color: var(--spectrum-alias-text-color);
- border-radius: 4px;
- appearance: none;
- vertical-align: middle;
- font-size: 1.2rem;
- text-align: center;
- margin: 0;
- outline: none;
- padding: 0.286rem 0.857rem;
-
- &[data-pressed] {
- box-shadow: inset 0 1px 2px rgb(0 0 0 / 0.1);
- background: var(--spectrum-global-color-gray-100);
- border-color: var(--spectrum-global-color-gray-500);
- }
-
- &[data-focus-visible] {
- border-color: #14171a;
- box-shadow: 0 0 0 1px #14171a;
- }
- }
-
.react-aria-Menu {
--highlight-background: #14171a;
--highlight-foreground: white;
diff --git a/packages/client/dashboard/src/styles/react-aria/modal.css b/packages/client/dashboard/src/styles/react-aria/modal.css
new file mode 100644
index 00000000..55ee1c40
--- /dev/null
+++ b/packages/client/dashboard/src/styles/react-aria/modal.css
@@ -0,0 +1,54 @@
+/* Modal */
+.react-aria-ModalOverlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100vw;
+ z-index: 100000;
+ height: var(--visual-viewport-height);
+ background: rgba(0 0 0 / 0.5);
+ backdrop-filter: blur(12px);
+ overflow: scroll;
+
+ &[data-entering] {
+ animation: fade 200ms;
+ }
+
+ &[data-exiting] {
+ animation: fade 150ms reverse ease-in;
+ }
+}
+
+.react-aria-Modal {
+ box-shadow: 0 8px 20px rgba(0 0 0 / 0.1);
+ border-radius: 6px;
+ background: var(--page-background);
+ border: 1px solid var(--spectrum-global-color-gray-300);
+ outline: none;
+ padding: 30px;
+ position: relative;
+
+ &[data-entering] {
+ animation: zoom 300ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
+ }
+}
+
+@keyframes fade {
+ from {
+ opacity: 0;
+ }
+
+ to {
+ opacity: 1;
+ }
+}
+
+@keyframes zoom {
+ from {
+ transform: scale(0.8);
+ }
+
+ to {
+ transform: scale(1);
+ }
+}
diff --git a/packages/client/dashboard/src/styles/react-aria/popover.css b/packages/client/dashboard/src/styles/react-aria/popover.css
new file mode 100644
index 00000000..ccc9d2dd
--- /dev/null
+++ b/packages/client/dashboard/src/styles/react-aria/popover.css
@@ -0,0 +1,100 @@
+/* Popover */
+.react-aria-Popover,
+.list-popover {
+ background: #1b1e23;
+ border: 1px solid #39424c;
+ border-radius: 10px;
+ z-index: 200;
+ outline: none;
+ width: 200px;
+
+ &[data-placement='top'] {
+ margin-bottom: 6px;
+ --origin: translateY(8px);
+ }
+
+ &[data-placement='bottom'] {
+ margin-top: 6px;
+ --origin: translateY(-8px);
+
+ & .react-aria-OverlayArrow svg {
+ transform: rotate(180deg);
+ }
+ }
+
+ &[data-placement='right'] {
+ margin-left: 6px;
+ --origin: translateX(-8px);
+
+ & .react-aria-OverlayArrow svg {
+ transform: rotate(90deg);
+ }
+ }
+
+ &[data-placement='left'] {
+ margin-right: 6px;
+ --origin: translateX(8px);
+
+ & .react-aria-OverlayArrow svg {
+ transform: rotate(-90deg);
+ }
+ }
+
+ &[data-entering] {
+ animation: slide 200ms;
+ }
+
+ &[data-exiting] {
+ animation: slide 200ms reverse ease-in;
+ }
+}
+
+.react-aria-Popover a {
+ text-decoration: none;
+}
+
+.react-aria-Popover .popover-item {
+ color: #718096;
+}
+
+.react-aria-Popover .popover-item button {
+ font-weight: 400;
+ font-size: 16px;
+ line-height: 19px;
+ padding: 20px;
+ color: inherit;
+ margin: 0;
+ padding: 20px;
+ width: 100%;
+ height: 100%;
+ text-align: start;
+}
+
+.react-aria-Popover .popover-item:hover {
+ color: #ffffff;
+ background: #14171a;
+ border-radius: 20px;
+}
+
+@keyframes slide {
+ from {
+ transform: var(--origin);
+ opacity: 0;
+ }
+
+ to {
+ transform: translateY(0);
+ opacity: 1;
+ }
+}
+
+@media (forced-colors: active) {
+ .react-aria-Popover {}
+}
+
+:root {
+ --origin: translateY(8px);
+ --text-color-base: white;
+ --text-color: white;
+ --text-color-hover: white;
+}
\ No newline at end of file
diff --git a/packages/client/dashboard/src/styles/react-aria/tabs.css b/packages/client/dashboard/src/styles/react-aria/tabs.css
new file mode 100644
index 00000000..d8958d0e
--- /dev/null
+++ b/packages/client/dashboard/src/styles/react-aria/tabs.css
@@ -0,0 +1,66 @@
+/* Tabs */
+.react-aria-Tabs {
+ position: relative;
+ --text-color-base:black;
+ --highlight-background: white;
+ width: 100%;
+}
+
+.react-aria-TabList {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: center;
+
+ &[data-orientation=horizontal] {
+ border: 1px solid var(--border-color);
+ border-radius: 999px;
+ }
+}
+
+.react-aria-Tab {
+ padding: 10px 20px;
+ cursor: default;
+ outline: none;
+ position: relative;
+ color: var(--text-color-base);
+ transition: color 200ms;
+ --border-color: transparent;
+ forced-color-adjust: none;
+ border-radius: 999px;
+ a {
+ color: var(--text-color);
+ }
+
+ &[data-hovered],
+ &[data-focused] {
+ color: var(--text-color-hover);
+ }
+
+ &[data-selected] {
+ background-color: var(--highlight-background);
+ color: var(--text-color-base);
+ a {
+ color: var(--text-color-base);
+ }
+ }
+
+ &[data-disabled] {
+ color: var(--text-color-disabled);
+ &[data-selected] {
+ --border-color: var(--text-color-disabled);
+ }
+ }
+
+ &[data-focus-visible]:after {
+ content: '';
+ position: absolute;
+ inset: 4px;
+ border-radius: 4px;
+ border: 2px solid var(--focus-ring-color);
+ }
+}
+
+.react-aria-TabPanel {
+
+}
\ No newline at end of file
diff --git a/packages/client/dashboard/src/styles/react-aria/textfield.css b/packages/client/dashboard/src/styles/react-aria/textfield.css
new file mode 100644
index 00000000..66a6accd
--- /dev/null
+++ b/packages/client/dashboard/src/styles/react-aria/textfield.css
@@ -0,0 +1,13 @@
+/* TextField */
+.react-aria-TextField {
+ margin-bottom: 8px;
+
+ .react-aria-Label {
+ display: inline-block;
+ width: 5.357rem;
+ }
+
+ .react-aria-Input {
+ font-size: 16px;
+ }
+}
\ No newline at end of file
diff --git a/packages/client/dashboard/src/styles/react-aria/theme.css b/packages/client/dashboard/src/styles/react-aria/theme.css
new file mode 100644
index 00000000..5777da1f
--- /dev/null
+++ b/packages/client/dashboard/src/styles/react-aria/theme.css
@@ -0,0 +1,118 @@
+/* color themes for dark and light modes, generated with Leonardo.
+ * Light: https://leonardocolor.io/theme.html?name=Light&config=%7B%22baseScale%22%3A%22Gray%22%2C%22colorScales%22%3A%5B%7B%22name%22%3A%22Gray%22%2C%22colorKeys%22%3A%5B%22%23000000%22%5D%2C%22colorspace%22%3A%22RGB%22%2C%22ratios%22%3A%5B%22-1.12%22%2C%221.45%22%2C%222.05%22%2C%223.02%22%2C%224.54%22%2C%227%22%2C%2210.86%22%5D%2C%22smooth%22%3Afalse%7D%2C%7B%22name%22%3A%22Purple%22%2C%22colorKeys%22%3A%5B%22%235e30eb%22%5D%2C%22colorspace%22%3A%22RGB%22%2C%22ratios%22%3A%5B%22-1.12%22%2C%221.45%22%2C%222.05%22%2C%223.02%22%2C%224.54%22%2C%227%22%2C%2210.86%22%5D%2C%22smooth%22%3Afalse%7D%2C%7B%22name%22%3A%22Red%22%2C%22colorKeys%22%3A%5B%22%23e32400%22%5D%2C%22colorspace%22%3A%22RGB%22%2C%22ratios%22%3A%5B%22-1.12%22%2C%221.45%22%2C%222.05%22%2C%223.02%22%2C%224.54%22%2C%227%22%2C%2210.86%22%5D%2C%22smooth%22%3Afalse%7D%5D%2C%22lightness%22%3A98%2C%22contrast%22%3A1%2C%22saturation%22%3A100%2C%22formula%22%3A%22wcag2%22%7D */
+ :root {
+ --background-color: #f8f8f8;
+ --gray-50: #ffffff;
+ --gray-100: #d0d0d0;
+ --gray-200: #afafaf;
+ --gray-300: #8f8f8f;
+ --gray-400: #717171;
+ --gray-500: #555555;
+ --gray-600: #393939;
+ --purple-100: #d5c9fa;
+ --purple-200: #b8a3f6;
+ --purple-300: #997cf2;
+ --purple-400: #7a54ef;
+ --purple-500: #582ddc;
+ --purple-600: #3c1e95;
+ --red-100: #f7c4ba;
+ --red-200: #f29887;
+ --red-300: #eb664d;
+ --red-400: #de2300;
+ --red-500: #a81b00;
+ --red-600: #731200;
+ --highlight-hover: rgb(0 0 0 / 0.07);
+ --highlight-pressed: rgb(0 0 0 / 0.15);
+ }
+
+ /* Dark: https://leonardocolor.io/theme.html?name=Dark&config=%7B%22baseScale%22%3A%22Gray%22%2C%22colorScales%22%3A%5B%7B%22name%22%3A%22Gray%22%2C%22colorKeys%22%3A%5B%22%23000000%22%5D%2C%22colorspace%22%3A%22RGB%22%2C%22ratios%22%3A%5B%22-1.12%22%2C%221.45%22%2C%222.05%22%2C%223.02%22%2C%224.54%22%2C%227%22%2C%2210.86%22%5D%2C%22smooth%22%3Afalse%7D%2C%7B%22name%22%3A%22Purple%22%2C%22colorKeys%22%3A%5B%22%235e30eb%22%5D%2C%22colorspace%22%3A%22RGB%22%2C%22ratios%22%3A%5B%22-1.12%22%2C%221.45%22%2C%222.05%22%2C%223.02%22%2C%224.54%22%2C%227%22%2C%2210.86%22%5D%2C%22smooth%22%3Afalse%7D%2C%7B%22name%22%3A%22Red%22%2C%22colorKeys%22%3A%5B%22%23e32400%22%5D%2C%22colorspace%22%3A%22RGB%22%2C%22ratios%22%3A%5B%22-1.12%22%2C%221.45%22%2C%222.05%22%2C%223.02%22%2C%224.54%22%2C%227%22%2C%2210.86%22%5D%2C%22smooth%22%3Afalse%7D%5D%2C%22lightness%22%3A11%2C%22contrast%22%3A1%2C%22saturation%22%3A100%2C%22formula%22%3A%22wcag2%22%7D */
+ @media (prefers-color-scheme: dark) {
+ :root {
+ --background-color: #1d1d1d;
+ --gray-50: #101010;
+ --gray-100: #393939;
+ --gray-200: #4f4f4f;
+ --gray-300: #686868;
+ --gray-400: #848484;
+ --gray-500: #a7a7a7;
+ --gray-600: #cfcfcf;
+ --purple-100: #3c1e95;
+ --purple-200: #522acd;
+ --purple-300: #6f46ed;
+ --purple-400: #8e6ef1;
+ --purple-500: #b099f5;
+ --purple-600: #d5c8fa;
+ --red-100: #721200;
+ --red-200: #9c1900;
+ --red-300: #cc2000;
+ --red-400: #e95034;
+ --red-500: #f08c79;
+ --red-600: #f7c3ba;
+ --highlight-hover: rgb(255 255 255 / 0.1);
+ --highlight-pressed: rgb(255 255 255 / 0.2);
+ }
+ }
+
+ /* Semantic colors */
+ :root {
+ --focus-ring-color: var(--purple-400);
+ --text-color: var(--gray-600);
+ --text-color-base: var(--gray-500);
+ --text-color-hover: var(--gray-600);
+ --text-color-disabled: var(--gray-200);
+ --text-color-placeholder: var(--gray-400);
+ --link-color: var(--purple-500);
+ --link-color-secondary: var(--gray-500);
+ --link-color-pressed: var(--purple-600);
+ --border-color: var(--gray-300);
+ --border-color-hover: var(--gray-400);
+ --border-color-pressed: var(--gray-400);
+ --border-color-disabled: var(--gray-100);
+ --field-background: var(--gray-50);
+ --field-text-color: var(--gray-600);
+ --overlay-background: var(--gray-50);
+ --button-background: var(--gray-50);
+ --button-background-pressed: var(--background-color);
+ /* these colors are the same between light and dark themes
+ * to ensure contrast with the foreground color */
+ --highlight-background: #6f46ed; /* purple-300 from dark theme, 3.03:1 against background-color */
+ --highlight-background-pressed: #522acd; /* purple-200 from dark theme */
+ --highlight-background-invalid: #cc2000; /* red-300 from dark theme */
+ --highlight-foreground: white; /* 5.56:1 against highlight-background */
+ --highlight-foreground-pressed: #ddd;
+ --highlight-overlay: rgb(from #6f46ed r g b / 15%);
+ --invalid-color: var(--red-400);
+ --invalid-color-pressed: var(--red-500);
+ }
+
+ /* Windows high contrast mode overrides */
+ @media (forced-colors: active) {
+ :root {
+ --background-color: Canvas;
+ --focus-ring-color: Highlight;
+ --text-color: ButtonText;
+ --text-color-base: ButtonText;
+ --text-color-hover: ButtonText;
+ --text-color-disabled: GrayText;
+ --text-color-placeholder: ButtonText;
+ --link-color: LinkText;
+ --link-color-secondary: LinkText;
+ --link-color-pressed: LinkText;
+ --border-color: ButtonBorder;
+ --border-color-hover: ButtonBorder;
+ --border-color-pressed: ButtonBorder;
+ --border-color-disabled: GrayText;
+ --field-background: Field;
+ --field-text-color: FieldText;
+ --overlay-background: Canvas;
+ --button-background: ButtonFace;
+ --button-background-pressed: ButtonFace;
+ --highlight-background: Highlight;
+ --highlight-background-pressed: Highlight;
+ --highlight-background-invalid: LinkText;
+ --highlight-foreground: HighlightText;
+ --highlight-foreground-pressed: HighlightText;
+ --invalid-color: LinkText;
+ --invalid-color-pressed: LinkText;
+ }
+ }
\ No newline at end of file
diff --git a/packages/client/dashboard/src/styles/tab.css b/packages/client/dashboard/src/styles/tab.css
deleted file mode 100644
index a1f0cdf3..00000000
--- a/packages/client/dashboard/src/styles/tab.css
+++ /dev/null
@@ -1,153 +0,0 @@
-.react-aria-Tabs {
- --highlight-color: #fff;
- --text-color: var(--spectrum-global-color-gray-700);
- --text-color-hover: var(--spectrum-global-color-gray-800);
- --text-color-selected: var(--spectrum-global-color-gray-900);
- --text-color-disabled: var(--spectrum-alias-text-color-disabled);
-
- display: flex;
- height: 100%;
-
- &[data-orientation='horizontal'] {
- flex-direction: column;
- }
-
- &[data-orientation='vertical'] {
- flex-direction: row;
- }
-}
-
-.title-bar,
-.dapp-title-bar {
- display: flex;
- align-items: center;
- justify-content: space-between;
- border-bottom: 1px solid #39424c;
- position: sticky;
- top: 60px;
- z-index: 100;
- background-color: #14171a;
-}
-
-.dapp-title-bar {
- border-bottom: none;
- position: relative;
- top: 0;
-}
-
-.title-bar > span,
-.dapp-title-bar > span {
- font-style: italic;
- font-weight: 700;
- font-size: 24px;
- line-height: 28px;
- color: #ffffff;
-}
-
-.react-aria-TabList {
- display: flex;
-
- &[aria-orientation='horizontal'] {
- .react-aria-Tab {
- border-bottom: 3px solid var(--border-color, transparent);
- }
- }
-
- &[aria-orientation='vertical'] {
- flex-direction: column;
- /* border-right: 1px solid gray; */
-
- .react-aria-Tab {
- border-right: 3px solid var(--border-color, transparent);
- }
- }
-}
-
-.dapp-title-bar .react-aria-TabList {
- border: 1px solid #39424c;
- border-radius: 100px;
- padding: 2px;
-
- &[aria-orientation='horizontal'] {
- .react-aria-Tab {
- border-bottom: none;
- }
- }
-}
-
-.react-aria-Tab {
- padding: 10px;
- cursor: default;
- outline: none;
- position: relative;
- font-weight: 700;
- font-size: 18px;
- line-height: 21px;
- color: #718096;
- cursor: pointer;
- transition: color 200ms;
- padding: 20px 15px;
-
- &[data-hovered],
- &:focus {
- color: var(--text-color-hover);
- }
-
- &[aria-selected='true'] {
- --border-color: var(--highlight-color);
- color: var(--text-color-selected);
- }
-
- &[aria-disabled] {
- color: var(--text-color-disabled);
- &[aria-selected='true'] {
- --border-color: var(--text-color-disabled);
- }
- }
-
- &[data-focus-visible]:after {
- content: '';
- position: absolute;
- inset: 4px;
- border-radius: 4px;
- border: 2px solid var(--highlight-color);
- }
-}
-
-.dapp-title-bar .react-aria-Tab {
- padding: 6px 20px;
- font-weight: 400;
- font-size: 16px;
- line-height: 24px;
- &[aria-selected='true'] {
- color: #14171A;
- background-color: #FFFFFF;
- border-radius: 100px;
- }
-}
-
-.react-aria-TabPanel {
- margin-top: 4px;
- padding: 20px 0 0 0;
- border-radius: 4px;
- outline: none;
- flex-grow: 1;
-
- &[data-focus-visible] {
- box-shadow: inset 0 0 0 2px var(--highlight-color);
- }
-}
-
-@media (forced-colors: active) {
- .react-aria-Tabs {
- forced-color-adjust: none;
- color: CanvasText;
-
- --highlight-color: Highlight;
- --text-color: ButtonText;
- --text-color-hover: ButtonText;
- --text-color-selected: ButtonText;
- --text-color-disabled: GrayText;
- }
-}
-