diff --git a/public/svg-icons/ColorPickerIcon.svg b/public/svg-icons/ColorPickerIcon.svg
new file mode 100644
index 000000000..4ea0671d3
--- /dev/null
+++ b/public/svg-icons/ColorPickerIcon.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/components/Icons/ColorPickerIcon.tsx b/src/components/Icons/ColorPickerIcon.tsx
new file mode 100644
index 000000000..fe5a7db34
--- /dev/null
+++ b/src/components/Icons/ColorPickerIcon.tsx
@@ -0,0 +1,13 @@
+/* eslint-disable */
+import React from 'react'
+
+const ColorPickerIcon: React.FC> = (props) => (
+
+)
+
+export default ColorPickerIcon
diff --git a/src/components/ModalsContainer/BlueprintModal/Body/Editor/ColorPickerPopover/ColorPickerPopoverView/ColorPicker/index.tsx b/src/components/ModalsContainer/BlueprintModal/Body/Editor/ColorPickerPopover/ColorPickerPopoverView/ColorPicker/index.tsx
new file mode 100644
index 000000000..a7dcafb90
--- /dev/null
+++ b/src/components/ModalsContainer/BlueprintModal/Body/Editor/ColorPickerPopover/ColorPickerPopoverView/ColorPicker/index.tsx
@@ -0,0 +1,52 @@
+/* eslint-disable no-nested-ternary */
+import styled from 'styled-components'
+import { Flex } from '~/components/common/Flex'
+
+import { colors } from '~/utils/colors'
+
+export const ColorPicker = () => (
+
+
+ this is color wrapper
+
+
+)
+
+const Wrapper = styled(Flex)`
+ flex: 1;
+
+ .title {
+ font-size: 20px;
+ color: ${colors.white};
+ font-family: Barlow;
+ font-size: 22px;
+ font-style: normal;
+ font-weight: 600;
+ line-height: normal;
+ }
+
+ .subtitle {
+ color: ${colors.GRAY3};
+ font-family: Barlow;
+ font-size: 13px;
+ font-style: normal;
+ font-weight: 400;
+ line-height: normal;
+ }
+
+ & .filters {
+ overflow-x: auto;
+ }
+
+ .load-more {
+ margin: 8px auto;
+ align-self: center;
+ }
+`
+
+const TableWrapper = styled(Flex)`
+ min-height: 0;
+ overflow: auto;
+ flex: 1;
+ width: 100%;
+`
diff --git a/src/components/ModalsContainer/BlueprintModal/Body/Editor/ColorPickerPopover/ColorPickerPopoverView/index.tsx b/src/components/ModalsContainer/BlueprintModal/Body/Editor/ColorPickerPopover/ColorPickerPopoverView/index.tsx
new file mode 100644
index 000000000..f2abc7eca
--- /dev/null
+++ b/src/components/ModalsContainer/BlueprintModal/Body/Editor/ColorPickerPopover/ColorPickerPopoverView/index.tsx
@@ -0,0 +1,125 @@
+import Tab from '@mui/material/Tab'
+import Tabs from '@mui/material/Tabs'
+import * as React from 'react'
+import styled from 'styled-components'
+import { Flex } from '~/components/common/Flex'
+import { colors } from '~/utils/colors'
+import { ColorPicker } from './ColorPicker'
+
+interface TabPanelProps {
+ children?: React.ReactNode
+ index: number
+ value: number
+}
+
+const TabPanel = (props: TabPanelProps) => {
+ const { children, value, index, ...other } = props
+
+ return value === index ? (
+
+ {children}
+
+ ) : null
+}
+
+function a11yProps(index: number) {
+ return {
+ id: `simple-tab-${index}`,
+ 'aria-controls': `simple-tabpanel-${index}`,
+ }
+}
+
+export const ColorPickerPopoverView = () => {
+ const [value, setValue] = React.useState(0)
+
+ const handleChange = (event: React.SyntheticEvent, newValue: number) => {
+ setValue(newValue)
+ }
+
+ const tabs = [{ label: 'Color', component: ColorPicker }]
+
+ return (
+
+
+ {tabs.map((tab, index) => (
+
+ ))}
+
+
+ {tabs.map((tab, index) => (
+
+
+
+ ))}
+
+ )
+}
+
+const StyledTabs = styled(Tabs)`
+ && {
+ background: ${colors.modalBg};
+ border-radius: 9px 9px 0 0;
+ .MuiTabs-indicator {
+ width: 40px;
+ background: ${colors.primaryBlue};
+ }
+ }
+`
+
+const StyledTab = styled(Tab)`
+ && {
+ padding: 20px 0 20px;
+ color: ${colors.GRAY6};
+ margin-left: 30px;
+ font-family: Barlow;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: 500;
+ &.Mui-selected {
+ color: ${colors.white};
+ }
+ }
+`
+
+const TabPanelWrapper = styled(Flex)`
+ display: flex;
+ flex: 1;
+ min-height: 572px;
+ padding: 20px 0;
+ max-height: 572px;
+ overflow: auto;
+
+ @media (max-width: 1024px) {
+ width: 100%;
+ min-height: 400px;
+ max-height: 400px;
+ }
+
+ @media (max-width: 768px) {
+ width: 100%;
+ min-height: 300px;
+ max-height: 300px;
+ }
+
+ @media (max-width: 480px) {
+ width: 100%;
+ min-height: 250px;
+ max-height: 250px;
+ }
+`
+
+const Wrapper = styled(Flex)`
+ min-height: 0;
+ flex: 1;
+ overflow: hidden;
+
+ @media (max-width: 768px) {
+ padding: 3px;
+ }
+`
diff --git a/src/components/ModalsContainer/BlueprintModal/Body/Editor/ColorPickerPopover/index.tsx b/src/components/ModalsContainer/BlueprintModal/Body/Editor/ColorPickerPopover/index.tsx
new file mode 100644
index 000000000..29adc7c6c
--- /dev/null
+++ b/src/components/ModalsContainer/BlueprintModal/Body/Editor/ColorPickerPopover/index.tsx
@@ -0,0 +1,36 @@
+import { ColorPickerPopoverView } from './ColorPickerPopoverView'
+import styled from 'styled-components'
+import { colors } from '~/utils'
+
+type Props = {
+ isOpen: boolean
+}
+
+export const ColorPickerPopover = ({ isOpen }: Props) => (
+
+
+
+
+
+)
+
+const ModalBackground = styled.div<{ isOpen: boolean }>`
+ display: ${(props) => (props.isOpen ? 'block' : 'none')};
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 2000;
+`
+
+const ModalContent = styled.div`
+ position: fixed;
+ top: 38%;
+ left: 34%;
+ transform: translate(-50%, -50%);
+ background: ${colors.BG1};
+ width: 300px;
+ height: 443px;
+ z-index: 1001;
+ border-radius: 8px;
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
+`
diff --git a/src/components/ModalsContainer/BlueprintModal/Body/Editor/index.tsx b/src/components/ModalsContainer/BlueprintModal/Body/Editor/index.tsx
index 03df72858..2b07fdf64 100644
--- a/src/components/ModalsContainer/BlueprintModal/Body/Editor/index.tsx
+++ b/src/components/ModalsContainer/BlueprintModal/Body/Editor/index.tsx
@@ -19,6 +19,8 @@ import { colors } from '~/utils'
import { CreateCustomNodeAttribute } from './CustomAttributesStep'
import MediaOptions from './MediaOptions'
import { convertAttributes, parsedObjProps, parseJson } from './utils'
+import ColorPickerIcon from '~/components/Icons/ColorPickerIcon'
+import { ColorPickerPopover } from './ColorPickerPopover'
const defaultValues = {
type: '',
@@ -209,6 +211,10 @@ export const Editor = ({
sourceLink: false,
})
+ const [isPopoverOpen, setPopoverOpen] = useState(!!selectedSchema)
+
+ const handleColorPickerPopover = () => setPopoverOpen(!isPopoverOpen)
+
useEffect(
() => () => {
reset()
@@ -244,6 +250,8 @@ export const Editor = ({
resetForm()
if (selectedSchema) {
+ setPopoverOpen(true)
+
setValue('type', selectedSchema.type as string)
setValue('parent', selectedSchema.parent)
@@ -473,7 +481,6 @@ export const Editor = ({
Select Parent
-
{
@@ -483,23 +490,32 @@ export const Editor = ({
options={parentOptions}
selectedValue={resolvedParentValue()}
/>
+
{displayParentError && A parent type must be selected}
+
Type name
-
+
+
+
+
+
+
+
+
>
@@ -510,18 +526,25 @@ export const Editor = ({
Name
-
+
+
+
+
+
+
+
+
@@ -601,6 +624,7 @@ export const Editor = ({
+
)
@@ -685,3 +709,25 @@ const HeaderText = styled(Text)`
text-align: left;
color: ${colors.white};
`
+
+const ColorPickerIconWrapper = styled.span`
+ width: 36px;
+ height: 36px;
+ border-radius: 6px;
+ margin-left: 12px;
+ color: ${colors.colorPickerThing};
+ background: ${colors.THING};
+ display: flex;
+ justify-content: center;
+ align-items: center;
+`
+
+const InputIconWrapper = styled(Flex)`
+ justify-content: space-between;
+ align-items: center;
+ flex-direction: row;
+`
+
+const InputWrapper = styled(Flex)`
+ width: 320px;
+`
diff --git a/src/utils/colors/index.tsx b/src/utils/colors/index.tsx
index 11eb9eb4c..2864808b5 100644
--- a/src/utils/colors/index.tsx
+++ b/src/utils/colors/index.tsx
@@ -5,6 +5,7 @@ export const colors = {
bluePressState: 'rgb(57, 97, 220)',
addAttributeBtn: 'rgba(107, 122, 141, 0.25)',
blueTextAccent: 'rgb(130, 180, 255)',
+ colorPickerThing: 'rgba(255, 158, 239, 1)',
body: 'rgb(21, 30, 39)',
boostBg1: 'rgb(32, 63, 62)',
budgetExplanationModalBg: 'rgb(21, 28, 35)',