diff --git a/package-lock.json b/package-lock.json index de5ced528..e58b7e782 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,10 +22,14 @@ "packages/bruno-requests", "packages/bruno-filestore" ], + "dependencies": { + "ajv": "^8.17.1" + }, "devDependencies": { "@eslint/compat": "^1.3.2", "@faker-js/faker": "^7.6.0", "@jest/globals": "^29.2.0", + "@opencollection/types": "~0.5.0", "@playwright/test": "^1.51.1", "@rollup/plugin-json": "^6.1.0", "@storybook/addon-webpack5-compiler-babel": "^4.0.0", @@ -20879,6 +20883,15 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonschema": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz", + "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/jsprim": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", @@ -30447,6 +30460,7 @@ "json5": "^2.2.3", "jsonc-parser": "^3.2.1", "jsonpath-plus": "^10.3.0", + "jsonschema": "^1.5.0", "know-your-http-well": "^0.5.0", "linkify-it": "^5.0.0", "lodash": "^4.17.21", @@ -35259,7 +35273,6 @@ "devDependencies": { "@babel/preset-env": "^7.22.0", "@babel/preset-typescript": "^7.22.0", - "@opencollection/types": "~0.5.0", "@rollup/plugin-commonjs": "^23.0.2", "@rollup/plugin-json": "^6.1.0", "@rollup/plugin-node-resolve": "^15.0.1", diff --git a/package.json b/package.json index ed7a4bfe2..af7cfd05d 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "@eslint/compat": "^1.3.2", "@faker-js/faker": "^7.6.0", "@jest/globals": "^29.2.0", + "@opencollection/types": "~0.5.0", "@playwright/test": "^1.51.1", "@rollup/plugin-json": "^6.1.0", "@storybook/addon-webpack5-compiler-babel": "^4.0.0", @@ -61,6 +62,7 @@ "prettier:web": "npm run prettier --workspace=packages/bruno-app", "dev:electron": "npm run dev --workspace=packages/bruno-electron", "dev:electron:debug": "npm run debug --workspace=packages/bruno-electron", + "storybook": "npm run storybook --workspace=packages/bruno-app", "build:bruno-common": "npm run build --workspace=packages/bruno-common", "build:bruno-requests": "npm run build --workspace=packages/bruno-requests", "build:bruno-filestore": "npm run build --workspace=packages/bruno-filestore", @@ -96,5 +98,8 @@ "json-schema-typed": "8.0.1" } } + }, + "dependencies": { + "ajv": "^8.17.1" } } diff --git a/packages/bruno-app/package.json b/packages/bruno-app/package.json index 68642bbc0..b866aa15c 100644 --- a/packages/bruno-app/package.json +++ b/packages/bruno-app/package.json @@ -52,6 +52,7 @@ "json5": "^2.2.3", "jsonc-parser": "^3.2.1", "jsonpath-plus": "^10.3.0", + "jsonschema": "^1.5.0", "know-your-http-well": "^0.5.0", "linkify-it": "^5.0.0", "lodash": "^4.17.21", diff --git a/packages/bruno-app/src/components/AppTitleBar/StyledWrapper.js b/packages/bruno-app/src/components/AppTitleBar/StyledWrapper.js index c97cc72f3..028a116e3 100644 --- a/packages/bruno-app/src/components/AppTitleBar/StyledWrapper.js +++ b/packages/bruno-app/src/components/AppTitleBar/StyledWrapper.js @@ -246,12 +246,6 @@ const Wrapper = styled.div` color: white; } } - - .dropdown-item-active { - font-weight: 400 !important; - background-color: ${(props) => props.theme.dropdown.selectedBg} !important; - color: ${(props) => props.theme.dropdown.selectedColor} !important; - } `; export default Wrapper; diff --git a/packages/bruno-app/src/components/BodyModeSelector/StyledWrapper.js b/packages/bruno-app/src/components/BodyModeSelector/StyledWrapper.js index e810ef66d..202148456 100644 --- a/packages/bruno-app/src/components/BodyModeSelector/StyledWrapper.js +++ b/packages/bruno-app/src/components/BodyModeSelector/StyledWrapper.js @@ -19,7 +19,7 @@ const StyledWrapper = styled.div` } .selected-body-mode { - color: ${(props) => props.theme.colors.text.yellow}; + color: ${(props) => props.theme.brand}; } .dropdown-icon { diff --git a/packages/bruno-app/src/components/CollectionSettings/Overview/RequestsNotLoaded/StyledWrapper.js b/packages/bruno-app/src/components/CollectionSettings/Overview/RequestsNotLoaded/StyledWrapper.js index e9a9cd06f..2837918ce 100644 --- a/packages/bruno-app/src/components/CollectionSettings/Overview/RequestsNotLoaded/StyledWrapper.js +++ b/packages/bruno-app/src/components/CollectionSettings/Overview/RequestsNotLoaded/StyledWrapper.js @@ -5,9 +5,9 @@ const StyledWrapper = styled.div` background-color: ${(props) => props.theme.requestTabPanel.card.bg}; .title { - border-top: 1px solid ${(props) => props.theme.requestTabPanel.cardTable.border}; - border-left: 1px solid ${(props) => props.theme.requestTabPanel.cardTable.border}; - border-right: 1px solid ${(props) => props.theme.requestTabPanel.cardTable.border}; + border-top: 1px solid ${(props) => props.theme.border.BORDER0}; + border-left: 1px solid ${(props) => props.theme.border.BORDER0}; + border-right: 1px solid ${(props) => props.theme.border.BORDER0}; border-top-left-radius: 3px; border-top-right-radius: 3px; @@ -15,8 +15,8 @@ const StyledWrapper = styled.div` .table { thead { - background-color: ${(props) => props.theme.requestTabPanel.cardTable.table.thead.bg}; - color: ${(props) => props.theme.requestTabPanel.cardTable.table.thead.color}; + color: ${(props) => props.theme.table.thead.color} !important; + background: ${(props) => props.theme.sidebar.bg}; } } } diff --git a/packages/bruno-app/src/components/CollectionSettings/Script/StyledWrapper.js b/packages/bruno-app/src/components/CollectionSettings/Script/StyledWrapper.js index 03aed74aa..e9f18b1b8 100644 --- a/packages/bruno-app/src/components/CollectionSettings/Script/StyledWrapper.js +++ b/packages/bruno-app/src/components/CollectionSettings/Script/StyledWrapper.js @@ -8,7 +8,7 @@ const StyledWrapper = styled.div` } div.title { - color: var(--color-tab-inactive); + color: ${(props) => props.theme.colors.text.subtext0}; } `; diff --git a/packages/bruno-app/src/components/CollectionSettings/StyledWrapper.js b/packages/bruno-app/src/components/CollectionSettings/StyledWrapper.js index e1dcbf99a..6b2787ebf 100644 --- a/packages/bruno-app/src/components/CollectionSettings/StyledWrapper.js +++ b/packages/bruno-app/src/components/CollectionSettings/StyledWrapper.js @@ -7,7 +7,7 @@ const StyledWrapper = styled.div` border: none; border-bottom: solid 2px transparent; margin-right: ${(props) => props.theme.tabs.marginRight}; - color: var(--color-tab-inactive); + color: ${(props) => props.theme.colors.text.subtext0}; cursor: pointer; &:focus, diff --git a/packages/bruno-app/src/components/CollectionSettings/Vars/StyledWrapper.js b/packages/bruno-app/src/components/CollectionSettings/Vars/StyledWrapper.js index 26459a3c6..b70349101 100644 --- a/packages/bruno-app/src/components/CollectionSettings/Vars/StyledWrapper.js +++ b/packages/bruno-app/src/components/CollectionSettings/Vars/StyledWrapper.js @@ -4,7 +4,7 @@ const StyledWrapper = styled.div` max-width: 800px; div.title { - color: var(--color-tab-inactive); + color: ${(props) => props.theme.colors.text.subtext0}; } `; diff --git a/packages/bruno-app/src/components/Dropdown/StyledWrapper.js b/packages/bruno-app/src/components/Dropdown/StyledWrapper.js index 8eada99ab..2fb31284f 100644 --- a/packages/bruno-app/src/components/Dropdown/StyledWrapper.js +++ b/packages/bruno-app/src/components/Dropdown/StyledWrapper.js @@ -1,4 +1,5 @@ import styled from 'styled-components'; +import { rgba } from 'polished'; const Wrapper = styled.div` min-width: 160px; @@ -136,17 +137,21 @@ const Wrapper = styled.div` /* Active/selected state - applied to the currently selected item */ &.dropdown-item-active { - color: ${({ theme }) => theme.colors.text.yellow}; - background-color: ${({ theme }) => theme.dropdown.activeBg}; - font-weight: 500; + color: ${({ theme }) => theme.dropdown.selectedColor} !important; + background-color: ${({ theme }) => rgba(theme.dropdown.selectedColor, 0.07)} !important; .dropdown-icon { - color: ${({ theme }) => theme.colors.text.yellow}; + color: ${({ theme }) => theme.dropdown.selectedColor} !important; + } + + &:hover { + color: ${({ theme }) => theme.dropdown.selectedColor} !important; + background-color: ${({ theme }) => rgba(theme.dropdown.selectedColor, 0.07)} !important; } } /* Combined state - when active item is also focused */ &.dropdown-item-active.dropdown-item-focused { - background-color: ${({ theme }) => theme.dropdown.activeHoverBg}; + background-color: ${({ theme }) => rgba(theme.dropdown.selectedColor, 0.07)} !important; } /* Focus visible for accessibility */ diff --git a/packages/bruno-app/src/components/EditableTable/StyledWrapper.js b/packages/bruno-app/src/components/EditableTable/StyledWrapper.js index 1d3b7f4a7..98b307d97 100644 --- a/packages/bruno-app/src/components/EditableTable/StyledWrapper.js +++ b/packages/bruno-app/src/components/EditableTable/StyledWrapper.js @@ -9,7 +9,7 @@ const StyledWrapper = styled.div` .table-container { overflow-y: auto; border-radius: ${(props) => props.theme.border.radius.base}; - border: ${(props) => props.theme.workspace.environments.indentBorder}; + border: solid 1px ${(props) => props.theme.border.border0}; } table { @@ -31,8 +31,8 @@ const StyledWrapper = styled.div` padding: 5px 10px !important; border-top: none !important; border-left: none !important; - border-bottom: ${(props) => props.theme.workspace.environments.indentBorder}; - border-right: ${(props) => props.theme.workspace.environments.indentBorder}; + border-bottom: solid 1px ${(props) => props.theme.border.border0}; + border-right: solid 1px ${(props) => props.theme.border.border0}; vertical-align: middle; &:last-child { @@ -58,8 +58,8 @@ const StyledWrapper = styled.div` padding: 1px 10px !important; border-top: none !important; border-left: none !important; - border-bottom: ${(props) => props.theme.workspace.environments.indentBorder}; - border-right: ${(props) => props.theme.workspace.environments.indentBorder}; + border-bottom: solid 1px ${(props) => props.theme.border.border0}; + border-right: solid 1px ${(props) => props.theme.border.border0}; vertical-align: middle; &:last-child { diff --git a/packages/bruno-app/src/components/Environments/EnvironmentSelector/EnvironmentListContent/index.js b/packages/bruno-app/src/components/Environments/EnvironmentSelector/EnvironmentListContent/index.js index e343e4b4c..0c74c6d9b 100644 --- a/packages/bruno-app/src/components/Environments/EnvironmentSelector/EnvironmentListContent/index.js +++ b/packages/bruno-app/src/components/Environments/EnvironmentSelector/EnvironmentListContent/index.js @@ -33,7 +33,7 @@ const EnvironmentListContent = ({ {environments.map((env) => (
No gRPC messages available
-No gRPC messages available
+No WebSocket messages available
-No WebSocket messages available
+|
- {name}
-
-
- |
- ))}
-
|---|
+ {theme.mode === 'light' ? 'Light theme' : 'Dark theme'} — Base: {theme.base} +
+ ++ All 4 flavors: Latte, Frappé, Macchiato, Mocha +
+ {themes.map((theme) => ( ++ 14 accent colors with full hue coverage +
++ Warm → Cool progression across the color wheel +
++ Colors sorted by hue value (0° → 360°) +
+