diff --git a/web/app/(commonLayout)/apps/Apps.tsx b/web/app/(commonLayout)/apps/Apps.tsx index b11b0da6a0..3c6c3458ce 100644 --- a/web/app/(commonLayout)/apps/Apps.tsx +++ b/web/app/(commonLayout)/apps/Apps.tsx @@ -4,7 +4,7 @@ import { useEffect } from 'react' import AppCard from './AppCard' import NewAppCard from './NewAppCard' import { useAppContext } from '@/context/app-context' - +import EmojiPicker from '@/app/components/base/emoji-picker' const Apps = () => { const { apps, mutateApps } = useAppContext() @@ -13,10 +13,12 @@ const Apps = () => { }, []) return ( + <> + ) } diff --git a/web/app/components/base/emoji-picker/index.tsx b/web/app/components/base/emoji-picker/index.tsx new file mode 100644 index 0000000000..ee8e4476fb --- /dev/null +++ b/web/app/components/base/emoji-picker/index.tsx @@ -0,0 +1,155 @@ +'use client' + +declare global { + namespace JSX { + interface IntrinsicElements { + 'em-emoji': React.DetailedHTMLProps< + React.HTMLAttributes, + HTMLElement + >; + } + } +} + +import data from '@emoji-mart/data' +import { init } from 'emoji-mart' + +// import AppIcon from '@/app/components/base/app-icon' +import cn from 'classnames' + +import Button from '@/app/components/base/button' +import s from './style.module.css' +import { useState, FC } from 'react' +import { + MagnifyingGlassIcon +} from '@heroicons/react/24/outline' +import React from 'react' + +init({ data }) + +const backgroundColors = [ + '#FFEAD5', + '#E4FBCC', + '#D3F8DF', + '#E0F2FE', + + '#E0EAFF', + '#EFF1F5', + '#FBE8FF', + '#FCE7F6', + + '#FEF7C3', + '#E6F4D7', + '#D5F5F6', + '#D1E9FF', + + '#D1E0FF', + '#D5D9EB', + '#ECE9FE', + '#FFE4E8', +] + +interface IColorSelectProps { + selectedEmoji: string + onSelect: (color: string) => void +} +const ColorSelect: FC = ( + { selectedEmoji, onSelect } +) => { + const [selectBackground, setSelectBackground] = useState(backgroundColors[0]); + return
+ +

Choose Style

+
+ {backgroundColors.map((color) => { + return
{ + setSelectBackground(color) + onSelect(color) + }} + > +
+ +
+
+ })} +
+
+} +interface IEmojiSelectProps { + onSelect?: (emoji: any) => void +} + +const EmojiSelect: FC = ({ + onSelect +}) => { + + const { categories, emojis } = data as any + console.log(categories, emojis); + return
+ {categories.map((category: any) => { + return
+

{category.id}

+
+ {category.emojis.map((emoji: any) => { + return
{ + onSelect && onSelect(emoji) + }} + > +
+ +
+
+ })} + +
+
+ })} +
+} + +const EmojiPicker: FC = () => { + const [selectedEmoji, setSelectedEmoji] = useState('') + const [selectBackground, setSelectBackground] = useState('') + + const Elem = () => { + return
+
+
+
+
+ +
+ { + setSelectedEmoji(itm) + }} /> +
+ setSelectBackground(color)} /> +
+ +
+
+ } + + return <> + + +} +export default EmojiPicker diff --git a/web/app/components/base/emoji-picker/style.module.css b/web/app/components/base/emoji-picker/style.module.css new file mode 100644 index 0000000000..5facb3560a --- /dev/null +++ b/web/app/components/base/emoji-picker/style.module.css @@ -0,0 +1,12 @@ +.container { + display: flex; + flex-direction: column; + align-items: flex-start; + width: 362px; + max-height: 552px; + + border: 0.5px solid #EAECF0; + box-shadow: 0px 12px 16px -4px rgba(16, 24, 40, 0.08), 0px 4px 6px -2px rgba(16, 24, 40, 0.03); + border-radius: 12px; + background: #fff; +} diff --git a/web/package.json b/web/package.json index c9138c20fe..1037ee6f67 100644 --- a/web/package.json +++ b/web/package.json @@ -10,6 +10,7 @@ "fix": "next lint --fix" }, "dependencies": { + "@emoji-mart/data": "^1.1.2", "@formatjs/intl-localematcher": "^0.2.32", "@headlessui/react": "^1.7.13", "@heroicons/react": "^2.0.16", @@ -33,6 +34,7 @@ "dayjs": "^1.11.7", "echarts": "^5.4.1", "echarts-for-react": "^3.0.2", + "emoji-mart": "^5.5.2", "eslint": "8.36.0", "eslint-config-next": "13.2.4", "i18next": "^22.4.13",