From 77fa8ca1841633aeb76b9001d64c859a18e6b6bd Mon Sep 17 00:00:00 2001 From: Lanskikh Date: Tue, 7 Oct 2025 17:05:09 +0500 Subject: [PATCH] buttons, icons, input --- client/bun.lock | 3 + client/package.json | 1 + client/src/components/icons/AppsIcon.tsx | 28 +++++++++ client/src/components/icons/BellIcon.tsx | 15 +++++ client/src/components/icons/BookedIcon.tsx | 14 +++++ client/src/components/icons/BriefcaseIcon.tsx | 15 +++++ client/src/components/icons/CalendarIcon.tsx | 15 +++++ .../src/components/icons/ChatFilledIcon.tsx | 14 +++++ client/src/components/icons/ChatIcon.tsx | 15 +++++ client/src/components/icons/ChatTextIcon.tsx | 15 +++++ client/src/components/icons/CheckIcon.tsx | 14 +++++ .../src/components/icons/ChevronDownIcon.tsx | 15 +++++ .../src/components/icons/ChevronLeftIcon.tsx | 15 +++++ .../src/components/icons/ChevronRightIcon.tsx | 15 +++++ client/src/components/icons/ChevronUpIcon.tsx | 15 +++++ client/src/components/icons/ClientIcon.tsx | 22 +++++++ client/src/components/icons/ClockIcon.tsx | 15 +++++ client/src/components/icons/CloseIcon.tsx | 15 +++++ client/src/components/icons/CogFilledIcon.tsx | 14 +++++ client/src/components/icons/CogIcon.tsx | 20 +++++++ client/src/components/icons/CopyIcon.tsx | 21 +++++++ client/src/components/icons/CrownIcon.tsx | 12 ++++ .../components/icons/DocumentChartIcon.tsx | 15 +++++ client/src/components/icons/DownloadIcon.tsx | 15 +++++ client/src/components/icons/EditIcon.tsx | 15 +++++ .../src/components/icons/ExitFilledIcon.tsx | 12 ++++ .../src/components/icons/FullscreenIcon.tsx | 15 +++++ .../components/icons/HandRaisedFilledIcon.tsx | 12 ++++ .../src/components/icons/HandRaisedIcon.tsx | 15 +++++ .../icons/HandRaisedOffFilledIcon.tsx | 16 ++++++ .../components/icons/HandRaisedOffIcon.tsx | 12 ++++ .../src/components/icons/HearthFilledIcon.tsx | 12 ++++ .../src/components/icons/HomeFilledIcon.tsx | 12 ++++ client/src/components/icons/HomeIcon.tsx | 14 +++++ client/src/components/icons/LightningIcon.tsx | 12 ++++ client/src/components/icons/LinkIcon.tsx | 15 +++++ client/src/components/icons/LoaderIcon.tsx | 35 ++++++++++++ client/src/components/icons/MagicIcon.tsx | 12 ++++ client/src/components/icons/MailIcon.tsx | 15 +++++ client/src/components/icons/ManagersIcon.tsx | 36 ++++++++++++ .../components/icons/MicrophoneFilledIcon.tsx | 16 ++++++ .../src/components/icons/MicrophoneIcon.tsx | 15 +++++ .../icons/MicrophoneOffFilledIcon.tsx | 20 +++++++ .../components/icons/MicrophoneOffIcon.tsx | 19 +++++++ client/src/components/icons/MoreIcon.tsx | 15 +++++ .../src/components/icons/PhotoFilledIcon.tsx | 12 ++++ client/src/components/icons/PinIcon.tsx | 14 +++++ client/src/components/icons/PlusIcon.tsx | 15 +++++ client/src/components/icons/QRIcon.tsx | 14 +++++ .../src/components/icons/QuestionMarkIcon.tsx | 15 +++++ client/src/components/icons/RestartIcon.tsx | 14 +++++ client/src/components/icons/ScreenIcon.tsx | 22 +++++++ client/src/components/icons/SearchIcon.tsx | 22 +++++++ client/src/components/icons/SendIcon.tsx | 14 +++++ .../src/components/icons/ShareFilledIcon.tsx | 12 ++++ client/src/components/icons/ShareIcon.tsx | 15 +++++ client/src/components/icons/SortIcon.tsx | 12 ++++ client/src/components/icons/SoundIcon.tsx | 16 ++++++ client/src/components/icons/StartIcon.tsx | 13 +++++ client/src/components/icons/TrashIcon.tsx | 15 +++++ client/src/components/icons/UnlinkIcon.tsx | 13 +++++ .../src/components/icons/UsersFilledIcon.tsx | 18 ++++++ client/src/components/icons/UsersIcon.tsx | 15 +++++ .../src/components/icons/VideoFilledIcon.tsx | 12 ++++ client/src/components/icons/VideoIcon.tsx | 15 +++++ .../components/icons/VideoOffFilledIcon.tsx | 16 ++++++ client/src/components/icons/VideoOffIcon.tsx | 15 +++++ client/src/components/icons/WarningIcon.tsx | 12 ++++ .../src/components/icons/XMarkFilledIcon.tsx | 12 ++++ client/src/components/icons/XMarkIcon.tsx | 15 +++++ client/src/components/ui/Button.tsx | 57 +++++++++++++++++++ client/src/components/ui/ControlButton.tsx | 47 +++++++++++++++ .../components/ui/FloatingActionButton.tsx | 33 +++++++++++ client/src/components/ui/Input.tsx | 51 +++++++++++++++++ client/src/index.css | 50 ++++++++++++++++ client/tailwind.config.js | 11 ++-- 76 files changed, 1314 insertions(+), 6 deletions(-) create mode 100644 client/src/components/icons/AppsIcon.tsx create mode 100644 client/src/components/icons/BellIcon.tsx create mode 100644 client/src/components/icons/BookedIcon.tsx create mode 100644 client/src/components/icons/BriefcaseIcon.tsx create mode 100644 client/src/components/icons/CalendarIcon.tsx create mode 100644 client/src/components/icons/ChatFilledIcon.tsx create mode 100644 client/src/components/icons/ChatIcon.tsx create mode 100644 client/src/components/icons/ChatTextIcon.tsx create mode 100644 client/src/components/icons/CheckIcon.tsx create mode 100644 client/src/components/icons/ChevronDownIcon.tsx create mode 100644 client/src/components/icons/ChevronLeftIcon.tsx create mode 100644 client/src/components/icons/ChevronRightIcon.tsx create mode 100644 client/src/components/icons/ChevronUpIcon.tsx create mode 100644 client/src/components/icons/ClientIcon.tsx create mode 100644 client/src/components/icons/ClockIcon.tsx create mode 100644 client/src/components/icons/CloseIcon.tsx create mode 100644 client/src/components/icons/CogFilledIcon.tsx create mode 100644 client/src/components/icons/CogIcon.tsx create mode 100644 client/src/components/icons/CopyIcon.tsx create mode 100644 client/src/components/icons/CrownIcon.tsx create mode 100644 client/src/components/icons/DocumentChartIcon.tsx create mode 100644 client/src/components/icons/DownloadIcon.tsx create mode 100644 client/src/components/icons/EditIcon.tsx create mode 100644 client/src/components/icons/ExitFilledIcon.tsx create mode 100644 client/src/components/icons/FullscreenIcon.tsx create mode 100644 client/src/components/icons/HandRaisedFilledIcon.tsx create mode 100644 client/src/components/icons/HandRaisedIcon.tsx create mode 100644 client/src/components/icons/HandRaisedOffFilledIcon.tsx create mode 100644 client/src/components/icons/HandRaisedOffIcon.tsx create mode 100644 client/src/components/icons/HearthFilledIcon.tsx create mode 100644 client/src/components/icons/HomeFilledIcon.tsx create mode 100644 client/src/components/icons/HomeIcon.tsx create mode 100644 client/src/components/icons/LightningIcon.tsx create mode 100644 client/src/components/icons/LinkIcon.tsx create mode 100644 client/src/components/icons/LoaderIcon.tsx create mode 100644 client/src/components/icons/MagicIcon.tsx create mode 100644 client/src/components/icons/MailIcon.tsx create mode 100644 client/src/components/icons/ManagersIcon.tsx create mode 100644 client/src/components/icons/MicrophoneFilledIcon.tsx create mode 100644 client/src/components/icons/MicrophoneIcon.tsx create mode 100644 client/src/components/icons/MicrophoneOffFilledIcon.tsx create mode 100644 client/src/components/icons/MicrophoneOffIcon.tsx create mode 100644 client/src/components/icons/MoreIcon.tsx create mode 100644 client/src/components/icons/PhotoFilledIcon.tsx create mode 100644 client/src/components/icons/PinIcon.tsx create mode 100644 client/src/components/icons/PlusIcon.tsx create mode 100644 client/src/components/icons/QRIcon.tsx create mode 100644 client/src/components/icons/QuestionMarkIcon.tsx create mode 100644 client/src/components/icons/RestartIcon.tsx create mode 100644 client/src/components/icons/ScreenIcon.tsx create mode 100644 client/src/components/icons/SearchIcon.tsx create mode 100644 client/src/components/icons/SendIcon.tsx create mode 100644 client/src/components/icons/ShareFilledIcon.tsx create mode 100644 client/src/components/icons/ShareIcon.tsx create mode 100644 client/src/components/icons/SortIcon.tsx create mode 100644 client/src/components/icons/SoundIcon.tsx create mode 100644 client/src/components/icons/StartIcon.tsx create mode 100644 client/src/components/icons/TrashIcon.tsx create mode 100644 client/src/components/icons/UnlinkIcon.tsx create mode 100644 client/src/components/icons/UsersFilledIcon.tsx create mode 100644 client/src/components/icons/UsersIcon.tsx create mode 100644 client/src/components/icons/VideoFilledIcon.tsx create mode 100644 client/src/components/icons/VideoIcon.tsx create mode 100644 client/src/components/icons/VideoOffFilledIcon.tsx create mode 100644 client/src/components/icons/VideoOffIcon.tsx create mode 100644 client/src/components/icons/WarningIcon.tsx create mode 100644 client/src/components/icons/XMarkFilledIcon.tsx create mode 100644 client/src/components/icons/XMarkIcon.tsx create mode 100644 client/src/components/ui/Button.tsx create mode 100644 client/src/components/ui/ControlButton.tsx create mode 100644 client/src/components/ui/FloatingActionButton.tsx create mode 100644 client/src/components/ui/Input.tsx diff --git a/client/bun.lock b/client/bun.lock index d8fa90d..8abbecd 100644 --- a/client/bun.lock +++ b/client/bun.lock @@ -5,6 +5,7 @@ "name": "client", "dependencies": { "@tanstack/react-query": "^5.90.2", + "clsx": "^2.1.1", "ky": "^1.11.0", "react": "^19.1.1", "react-dom": "^19.1.1", @@ -278,6 +279,8 @@ "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], diff --git a/client/package.json b/client/package.json index 1c15b10..ed448bf 100644 --- a/client/package.json +++ b/client/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@tanstack/react-query": "^5.90.2", + "clsx": "^2.1.1", "ky": "^1.11.0", "react": "^19.1.1", "react-dom": "^19.1.1", diff --git a/client/src/components/icons/AppsIcon.tsx b/client/src/components/icons/AppsIcon.tsx new file mode 100644 index 0000000..590b9f1 --- /dev/null +++ b/client/src/components/icons/AppsIcon.tsx @@ -0,0 +1,28 @@ +function AppsIcon() { + return ( + + + + + + + + + ); +} + +export default AppsIcon; diff --git a/client/src/components/icons/BellIcon.tsx b/client/src/components/icons/BellIcon.tsx new file mode 100644 index 0000000..621a788 --- /dev/null +++ b/client/src/components/icons/BellIcon.tsx @@ -0,0 +1,15 @@ +function BellIcon() { + return ( + + + + ); +} + +export default BellIcon; diff --git a/client/src/components/icons/BookedIcon.tsx b/client/src/components/icons/BookedIcon.tsx new file mode 100644 index 0000000..6f7743e --- /dev/null +++ b/client/src/components/icons/BookedIcon.tsx @@ -0,0 +1,14 @@ +function BookedIcon() { + return ( + + + + ); +} + +export default BookedIcon; diff --git a/client/src/components/icons/BriefcaseIcon.tsx b/client/src/components/icons/BriefcaseIcon.tsx new file mode 100644 index 0000000..35f7048 --- /dev/null +++ b/client/src/components/icons/BriefcaseIcon.tsx @@ -0,0 +1,15 @@ +function BriefcaseIcon() { + return ( + + + + ); +} + +export default BriefcaseIcon; diff --git a/client/src/components/icons/CalendarIcon.tsx b/client/src/components/icons/CalendarIcon.tsx new file mode 100644 index 0000000..2ba1ea6 --- /dev/null +++ b/client/src/components/icons/CalendarIcon.tsx @@ -0,0 +1,15 @@ +function CalendarIcon() { + return ( + + + + ); +} + +export default CalendarIcon; diff --git a/client/src/components/icons/ChatFilledIcon.tsx b/client/src/components/icons/ChatFilledIcon.tsx new file mode 100644 index 0000000..31efb3f --- /dev/null +++ b/client/src/components/icons/ChatFilledIcon.tsx @@ -0,0 +1,14 @@ +function ChatFilledIcon() { + return ( + + + + ); +} + +export default ChatFilledIcon; diff --git a/client/src/components/icons/ChatIcon.tsx b/client/src/components/icons/ChatIcon.tsx new file mode 100644 index 0000000..a5d8606 --- /dev/null +++ b/client/src/components/icons/ChatIcon.tsx @@ -0,0 +1,15 @@ +function ChatIcon() { + return ( + + + + ); +} + +export default ChatIcon; diff --git a/client/src/components/icons/ChatTextIcon.tsx b/client/src/components/icons/ChatTextIcon.tsx new file mode 100644 index 0000000..19e863e --- /dev/null +++ b/client/src/components/icons/ChatTextIcon.tsx @@ -0,0 +1,15 @@ +function ChatTextIcon() { + return ( + + + + ); +} + +export default ChatTextIcon; diff --git a/client/src/components/icons/CheckIcon.tsx b/client/src/components/icons/CheckIcon.tsx new file mode 100644 index 0000000..3c810ba --- /dev/null +++ b/client/src/components/icons/CheckIcon.tsx @@ -0,0 +1,14 @@ +function CheckIcon() { + return ( + + + + ); +} + +export default CheckIcon; diff --git a/client/src/components/icons/ChevronDownIcon.tsx b/client/src/components/icons/ChevronDownIcon.tsx new file mode 100644 index 0000000..910014a --- /dev/null +++ b/client/src/components/icons/ChevronDownIcon.tsx @@ -0,0 +1,15 @@ +function ChevronDownIcon() { + return ( + + + + ); +} + +export default ChevronDownIcon; diff --git a/client/src/components/icons/ChevronLeftIcon.tsx b/client/src/components/icons/ChevronLeftIcon.tsx new file mode 100644 index 0000000..69bfa4f --- /dev/null +++ b/client/src/components/icons/ChevronLeftIcon.tsx @@ -0,0 +1,15 @@ +function ChevronLeftIcon() { + return ( + + + + ); +} + +export default ChevronLeftIcon; diff --git a/client/src/components/icons/ChevronRightIcon.tsx b/client/src/components/icons/ChevronRightIcon.tsx new file mode 100644 index 0000000..5509b35 --- /dev/null +++ b/client/src/components/icons/ChevronRightIcon.tsx @@ -0,0 +1,15 @@ +function ChevronRightIcon() { + return ( + + + + ); +} + +export default ChevronRightIcon; diff --git a/client/src/components/icons/ChevronUpIcon.tsx b/client/src/components/icons/ChevronUpIcon.tsx new file mode 100644 index 0000000..b7437c8 --- /dev/null +++ b/client/src/components/icons/ChevronUpIcon.tsx @@ -0,0 +1,15 @@ +function ChevronUpIcon() { + return ( + + + + ); +} + +export default ChevronUpIcon; diff --git a/client/src/components/icons/ClientIcon.tsx b/client/src/components/icons/ClientIcon.tsx new file mode 100644 index 0000000..c2221cc --- /dev/null +++ b/client/src/components/icons/ClientIcon.tsx @@ -0,0 +1,22 @@ +function ClientIcon() { + return ( + + + + + ); +} + +export default ClientIcon; diff --git a/client/src/components/icons/ClockIcon.tsx b/client/src/components/icons/ClockIcon.tsx new file mode 100644 index 0000000..be88000 --- /dev/null +++ b/client/src/components/icons/ClockIcon.tsx @@ -0,0 +1,15 @@ +function ClockIcon() { + return ( + + + + ); +} + +export default ClockIcon; diff --git a/client/src/components/icons/CloseIcon.tsx b/client/src/components/icons/CloseIcon.tsx new file mode 100644 index 0000000..52d93c3 --- /dev/null +++ b/client/src/components/icons/CloseIcon.tsx @@ -0,0 +1,15 @@ +function CloseIcon() { + return ( + + + + ); +} + +export default CloseIcon; diff --git a/client/src/components/icons/CogFilledIcon.tsx b/client/src/components/icons/CogFilledIcon.tsx new file mode 100644 index 0000000..9323009 --- /dev/null +++ b/client/src/components/icons/CogFilledIcon.tsx @@ -0,0 +1,14 @@ +function CogFilledIcon() { + return ( + + + + ); +} + +export default CogFilledIcon; diff --git a/client/src/components/icons/CogIcon.tsx b/client/src/components/icons/CogIcon.tsx new file mode 100644 index 0000000..7f1200b --- /dev/null +++ b/client/src/components/icons/CogIcon.tsx @@ -0,0 +1,20 @@ +function CogIcon() { + return ( + + + + + ); +} + +export default CogIcon; diff --git a/client/src/components/icons/CopyIcon.tsx b/client/src/components/icons/CopyIcon.tsx new file mode 100644 index 0000000..f2b923d --- /dev/null +++ b/client/src/components/icons/CopyIcon.tsx @@ -0,0 +1,21 @@ +function CopyIcon() { + return ( + + + + + ); +} + +export default CopyIcon; diff --git a/client/src/components/icons/CrownIcon.tsx b/client/src/components/icons/CrownIcon.tsx new file mode 100644 index 0000000..e32f8ba --- /dev/null +++ b/client/src/components/icons/CrownIcon.tsx @@ -0,0 +1,12 @@ +function CrownIcon() { + return ( + + + + ); +} + +export default CrownIcon; diff --git a/client/src/components/icons/DocumentChartIcon.tsx b/client/src/components/icons/DocumentChartIcon.tsx new file mode 100644 index 0000000..570df34 --- /dev/null +++ b/client/src/components/icons/DocumentChartIcon.tsx @@ -0,0 +1,15 @@ +function DocumentChartIcon() { + return ( + + + + ); +} + +export default DocumentChartIcon; diff --git a/client/src/components/icons/DownloadIcon.tsx b/client/src/components/icons/DownloadIcon.tsx new file mode 100644 index 0000000..bc36ed3 --- /dev/null +++ b/client/src/components/icons/DownloadIcon.tsx @@ -0,0 +1,15 @@ +function DownloadIcon() { + return ( + + + + ); +} + +export default DownloadIcon; diff --git a/client/src/components/icons/EditIcon.tsx b/client/src/components/icons/EditIcon.tsx new file mode 100644 index 0000000..590e215 --- /dev/null +++ b/client/src/components/icons/EditIcon.tsx @@ -0,0 +1,15 @@ +function EditIcon() { + return ( + + + + ); +} + +export default EditIcon; diff --git a/client/src/components/icons/ExitFilledIcon.tsx b/client/src/components/icons/ExitFilledIcon.tsx new file mode 100644 index 0000000..da6ad5f --- /dev/null +++ b/client/src/components/icons/ExitFilledIcon.tsx @@ -0,0 +1,12 @@ +function ExitFilledIcon() { + return ( + + + + ); +} + +export default ExitFilledIcon; diff --git a/client/src/components/icons/FullscreenIcon.tsx b/client/src/components/icons/FullscreenIcon.tsx new file mode 100644 index 0000000..2a20307 --- /dev/null +++ b/client/src/components/icons/FullscreenIcon.tsx @@ -0,0 +1,15 @@ +function FullscreenIcon() { + return ( + + + + ); +} + +export default FullscreenIcon; diff --git a/client/src/components/icons/HandRaisedFilledIcon.tsx b/client/src/components/icons/HandRaisedFilledIcon.tsx new file mode 100644 index 0000000..a2df6af --- /dev/null +++ b/client/src/components/icons/HandRaisedFilledIcon.tsx @@ -0,0 +1,12 @@ +function HandRaisedFilledIcon() { + return ( + + + + ); +} + +export default HandRaisedFilledIcon; diff --git a/client/src/components/icons/HandRaisedIcon.tsx b/client/src/components/icons/HandRaisedIcon.tsx new file mode 100644 index 0000000..66e3cbb --- /dev/null +++ b/client/src/components/icons/HandRaisedIcon.tsx @@ -0,0 +1,15 @@ +function HandRaisedIcon() { + return ( + + + + ); +} + +export default HandRaisedIcon; diff --git a/client/src/components/icons/HandRaisedOffFilledIcon.tsx b/client/src/components/icons/HandRaisedOffFilledIcon.tsx new file mode 100644 index 0000000..e853aa0 --- /dev/null +++ b/client/src/components/icons/HandRaisedOffFilledIcon.tsx @@ -0,0 +1,16 @@ +function HandRaisedOffFilledIcon() { + return ( + + + + + ); +} + +export default HandRaisedOffFilledIcon; diff --git a/client/src/components/icons/HandRaisedOffIcon.tsx b/client/src/components/icons/HandRaisedOffIcon.tsx new file mode 100644 index 0000000..64e247e --- /dev/null +++ b/client/src/components/icons/HandRaisedOffIcon.tsx @@ -0,0 +1,12 @@ +function HandRaisedOffFilledIcon() { + return ( + + + + ); +} + +export default HandRaisedOffFilledIcon; diff --git a/client/src/components/icons/HearthFilledIcon.tsx b/client/src/components/icons/HearthFilledIcon.tsx new file mode 100644 index 0000000..705698f --- /dev/null +++ b/client/src/components/icons/HearthFilledIcon.tsx @@ -0,0 +1,12 @@ +function HearthFilledIcon() { + return ( + + + + ); +} + +export default HearthFilledIcon; diff --git a/client/src/components/icons/HomeFilledIcon.tsx b/client/src/components/icons/HomeFilledIcon.tsx new file mode 100644 index 0000000..c803a04 --- /dev/null +++ b/client/src/components/icons/HomeFilledIcon.tsx @@ -0,0 +1,12 @@ +function HomeFilledIcon() { + return ( + + + + ); +} + +export default HomeFilledIcon; diff --git a/client/src/components/icons/HomeIcon.tsx b/client/src/components/icons/HomeIcon.tsx new file mode 100644 index 0000000..de4400b --- /dev/null +++ b/client/src/components/icons/HomeIcon.tsx @@ -0,0 +1,14 @@ +function HomeIcon() { + return ( + + + + ); +} + +export default HomeIcon; diff --git a/client/src/components/icons/LightningIcon.tsx b/client/src/components/icons/LightningIcon.tsx new file mode 100644 index 0000000..bbd610a --- /dev/null +++ b/client/src/components/icons/LightningIcon.tsx @@ -0,0 +1,12 @@ +function LightningIcon() { + return ( + + + + ); +} + +export default LightningIcon; diff --git a/client/src/components/icons/LinkIcon.tsx b/client/src/components/icons/LinkIcon.tsx new file mode 100644 index 0000000..98f109e --- /dev/null +++ b/client/src/components/icons/LinkIcon.tsx @@ -0,0 +1,15 @@ +function LinkIcon() { + return ( + + + + ); +} + +export default LinkIcon; diff --git a/client/src/components/icons/LoaderIcon.tsx b/client/src/components/icons/LoaderIcon.tsx new file mode 100644 index 0000000..beb5561 --- /dev/null +++ b/client/src/components/icons/LoaderIcon.tsx @@ -0,0 +1,35 @@ +function LoaderIcon() { + return ( + + + + +
+ + + + + + + + + + + ); +} + +export default LoaderIcon; diff --git a/client/src/components/icons/MagicIcon.tsx b/client/src/components/icons/MagicIcon.tsx new file mode 100644 index 0000000..4203355 --- /dev/null +++ b/client/src/components/icons/MagicIcon.tsx @@ -0,0 +1,12 @@ +function MagicIcon() { + return ( + + + + ); +} + +export default MagicIcon; diff --git a/client/src/components/icons/MailIcon.tsx b/client/src/components/icons/MailIcon.tsx new file mode 100644 index 0000000..c3def53 --- /dev/null +++ b/client/src/components/icons/MailIcon.tsx @@ -0,0 +1,15 @@ +function MailIcon() { + return ( + + + + ); +} + +export default MailIcon; diff --git a/client/src/components/icons/ManagersIcon.tsx b/client/src/components/icons/ManagersIcon.tsx new file mode 100644 index 0000000..d5a642c --- /dev/null +++ b/client/src/components/icons/ManagersIcon.tsx @@ -0,0 +1,36 @@ +function ManagersIcon() { + return ( + + + + + + + ); +} + +export default ManagersIcon; diff --git a/client/src/components/icons/MicrophoneFilledIcon.tsx b/client/src/components/icons/MicrophoneFilledIcon.tsx new file mode 100644 index 0000000..8b045ba --- /dev/null +++ b/client/src/components/icons/MicrophoneFilledIcon.tsx @@ -0,0 +1,16 @@ +function MicrophoneFilledIcon() { + return ( + + + + + ); +} + +export default MicrophoneFilledIcon; diff --git a/client/src/components/icons/MicrophoneIcon.tsx b/client/src/components/icons/MicrophoneIcon.tsx new file mode 100644 index 0000000..6a08aa1 --- /dev/null +++ b/client/src/components/icons/MicrophoneIcon.tsx @@ -0,0 +1,15 @@ +function MicrophoneIcon() { + return ( + + + + ); +} + +export default MicrophoneIcon; diff --git a/client/src/components/icons/MicrophoneOffFilledIcon.tsx b/client/src/components/icons/MicrophoneOffFilledIcon.tsx new file mode 100644 index 0000000..9b940db --- /dev/null +++ b/client/src/components/icons/MicrophoneOffFilledIcon.tsx @@ -0,0 +1,20 @@ +function MicrophoneOffFilledIcon() { + return ( + + + + + + ); +} + +export default MicrophoneOffFilledIcon; diff --git a/client/src/components/icons/MicrophoneOffIcon.tsx b/client/src/components/icons/MicrophoneOffIcon.tsx new file mode 100644 index 0000000..e9aeed0 --- /dev/null +++ b/client/src/components/icons/MicrophoneOffIcon.tsx @@ -0,0 +1,19 @@ +function MicrophoneOffIcon() { + return ( + + + + + ); +} + +export default MicrophoneOffIcon; diff --git a/client/src/components/icons/MoreIcon.tsx b/client/src/components/icons/MoreIcon.tsx new file mode 100644 index 0000000..6a0b702 --- /dev/null +++ b/client/src/components/icons/MoreIcon.tsx @@ -0,0 +1,15 @@ +function MoreIcon() { + return ( + + + + ); +} + +export default MoreIcon; diff --git a/client/src/components/icons/PhotoFilledIcon.tsx b/client/src/components/icons/PhotoFilledIcon.tsx new file mode 100644 index 0000000..0a45002 --- /dev/null +++ b/client/src/components/icons/PhotoFilledIcon.tsx @@ -0,0 +1,12 @@ +function PhotoFilledIcon() { + return ( + + + + ); +} + +export default PhotoFilledIcon; diff --git a/client/src/components/icons/PinIcon.tsx b/client/src/components/icons/PinIcon.tsx new file mode 100644 index 0000000..594613f --- /dev/null +++ b/client/src/components/icons/PinIcon.tsx @@ -0,0 +1,14 @@ +function PinIcon() { + return ( + + + + ); +} + +export default PinIcon; diff --git a/client/src/components/icons/PlusIcon.tsx b/client/src/components/icons/PlusIcon.tsx new file mode 100644 index 0000000..3aa50f2 --- /dev/null +++ b/client/src/components/icons/PlusIcon.tsx @@ -0,0 +1,15 @@ +function PlusIcon() { + return ( + + + + ); +} + +export default PlusIcon; diff --git a/client/src/components/icons/QRIcon.tsx b/client/src/components/icons/QRIcon.tsx new file mode 100644 index 0000000..3520db1 --- /dev/null +++ b/client/src/components/icons/QRIcon.tsx @@ -0,0 +1,14 @@ +function QRIcon() { + return ( + + + + ); +} + +export default QRIcon; diff --git a/client/src/components/icons/QuestionMarkIcon.tsx b/client/src/components/icons/QuestionMarkIcon.tsx new file mode 100644 index 0000000..001fa0d --- /dev/null +++ b/client/src/components/icons/QuestionMarkIcon.tsx @@ -0,0 +1,15 @@ +function QuestionMarkIcon() { + return ( + + + + ); +} + +export default QuestionMarkIcon; diff --git a/client/src/components/icons/RestartIcon.tsx b/client/src/components/icons/RestartIcon.tsx new file mode 100644 index 0000000..4476b3c --- /dev/null +++ b/client/src/components/icons/RestartIcon.tsx @@ -0,0 +1,14 @@ +function RestartIcon() { + return ( + + + + ); +} + +export default RestartIcon; diff --git a/client/src/components/icons/ScreenIcon.tsx b/client/src/components/icons/ScreenIcon.tsx new file mode 100644 index 0000000..d75d04a --- /dev/null +++ b/client/src/components/icons/ScreenIcon.tsx @@ -0,0 +1,22 @@ +function ScreenIcon() { + return ( + + + + + ); +} + +export default ScreenIcon; diff --git a/client/src/components/icons/SearchIcon.tsx b/client/src/components/icons/SearchIcon.tsx new file mode 100644 index 0000000..a549ca4 --- /dev/null +++ b/client/src/components/icons/SearchIcon.tsx @@ -0,0 +1,22 @@ +function SearchIcon() { + return ( + + + + + ); +} + +export default SearchIcon; diff --git a/client/src/components/icons/SendIcon.tsx b/client/src/components/icons/SendIcon.tsx new file mode 100644 index 0000000..a98093d --- /dev/null +++ b/client/src/components/icons/SendIcon.tsx @@ -0,0 +1,14 @@ +function SendIcon() { + return ( + + + + ); +} + +export default SendIcon; diff --git a/client/src/components/icons/ShareFilledIcon.tsx b/client/src/components/icons/ShareFilledIcon.tsx new file mode 100644 index 0000000..872bdc0 --- /dev/null +++ b/client/src/components/icons/ShareFilledIcon.tsx @@ -0,0 +1,12 @@ +function ShareFilledIcon() { + return ( + + + + ); +} + +export default ShareFilledIcon; diff --git a/client/src/components/icons/ShareIcon.tsx b/client/src/components/icons/ShareIcon.tsx new file mode 100644 index 0000000..db04a21 --- /dev/null +++ b/client/src/components/icons/ShareIcon.tsx @@ -0,0 +1,15 @@ +function ShareIcon() { + return ( + + + + ); +} + +export default ShareIcon; diff --git a/client/src/components/icons/SortIcon.tsx b/client/src/components/icons/SortIcon.tsx new file mode 100644 index 0000000..bca8e8c --- /dev/null +++ b/client/src/components/icons/SortIcon.tsx @@ -0,0 +1,12 @@ +function SortIcon() { + return ( + + + + ); +} + +export default SortIcon; diff --git a/client/src/components/icons/SoundIcon.tsx b/client/src/components/icons/SoundIcon.tsx new file mode 100644 index 0000000..f25ef87 --- /dev/null +++ b/client/src/components/icons/SoundIcon.tsx @@ -0,0 +1,16 @@ +function SoundIcon() { + return ( + + + + + ); +} + +export default SoundIcon; diff --git a/client/src/components/icons/StartIcon.tsx b/client/src/components/icons/StartIcon.tsx new file mode 100644 index 0000000..7c5a14f --- /dev/null +++ b/client/src/components/icons/StartIcon.tsx @@ -0,0 +1,13 @@ +function StartIcon() { + return ( + + + + + ); +} + +export default StartIcon; diff --git a/client/src/components/icons/TrashIcon.tsx b/client/src/components/icons/TrashIcon.tsx new file mode 100644 index 0000000..f66c612 --- /dev/null +++ b/client/src/components/icons/TrashIcon.tsx @@ -0,0 +1,15 @@ +function TrashIcon() { + return ( + + + + ); +} + +export default TrashIcon; diff --git a/client/src/components/icons/UnlinkIcon.tsx b/client/src/components/icons/UnlinkIcon.tsx new file mode 100644 index 0000000..71ac358 --- /dev/null +++ b/client/src/components/icons/UnlinkIcon.tsx @@ -0,0 +1,13 @@ +function UnlinkIcon() { + return ( + + + + + ); +} + +export default UnlinkIcon; diff --git a/client/src/components/icons/UsersFilledIcon.tsx b/client/src/components/icons/UsersFilledIcon.tsx new file mode 100644 index 0000000..7f3737b --- /dev/null +++ b/client/src/components/icons/UsersFilledIcon.tsx @@ -0,0 +1,18 @@ +function UsersFilledIcon() { + return ( + + + + + ); +} + +export default UsersFilledIcon; diff --git a/client/src/components/icons/UsersIcon.tsx b/client/src/components/icons/UsersIcon.tsx new file mode 100644 index 0000000..cdc4d4a --- /dev/null +++ b/client/src/components/icons/UsersIcon.tsx @@ -0,0 +1,15 @@ +function UsersIcon() { + return ( + + + + ); +} + +export default UsersIcon; diff --git a/client/src/components/icons/VideoFilledIcon.tsx b/client/src/components/icons/VideoFilledIcon.tsx new file mode 100644 index 0000000..552cf38 --- /dev/null +++ b/client/src/components/icons/VideoFilledIcon.tsx @@ -0,0 +1,12 @@ +function VideoFilledIcon() { + return ( + + + + ); +} + +export default VideoFilledIcon; diff --git a/client/src/components/icons/VideoIcon.tsx b/client/src/components/icons/VideoIcon.tsx new file mode 100644 index 0000000..58f0ed7 --- /dev/null +++ b/client/src/components/icons/VideoIcon.tsx @@ -0,0 +1,15 @@ +function VideoIcon() { + return ( + + + + ); +} + +export default VideoIcon; diff --git a/client/src/components/icons/VideoOffFilledIcon.tsx b/client/src/components/icons/VideoOffFilledIcon.tsx new file mode 100644 index 0000000..a48d5b5 --- /dev/null +++ b/client/src/components/icons/VideoOffFilledIcon.tsx @@ -0,0 +1,16 @@ +function VideoOffFilledIcon() { + return ( + + + + + ); +} + +export default VideoOffFilledIcon; diff --git a/client/src/components/icons/VideoOffIcon.tsx b/client/src/components/icons/VideoOffIcon.tsx new file mode 100644 index 0000000..cd3a055 --- /dev/null +++ b/client/src/components/icons/VideoOffIcon.tsx @@ -0,0 +1,15 @@ +function VideoOffIcon() { + return ( + + + + ); +} + +export default VideoOffIcon; diff --git a/client/src/components/icons/WarningIcon.tsx b/client/src/components/icons/WarningIcon.tsx new file mode 100644 index 0000000..fb79ca7 --- /dev/null +++ b/client/src/components/icons/WarningIcon.tsx @@ -0,0 +1,12 @@ +function WarningIcon() { + return ( + + + + ); +} + +export default WarningIcon; diff --git a/client/src/components/icons/XMarkFilledIcon.tsx b/client/src/components/icons/XMarkFilledIcon.tsx new file mode 100644 index 0000000..78e8a38 --- /dev/null +++ b/client/src/components/icons/XMarkFilledIcon.tsx @@ -0,0 +1,12 @@ +function XMarkFilledIcon() { + return ( + + + + ); +} + +export default XMarkFilledIcon; diff --git a/client/src/components/icons/XMarkIcon.tsx b/client/src/components/icons/XMarkIcon.tsx new file mode 100644 index 0000000..26f84ba --- /dev/null +++ b/client/src/components/icons/XMarkIcon.tsx @@ -0,0 +1,15 @@ +function XMarkIcon() { + return ( + + + + ); +} + +export default XMarkIcon; diff --git a/client/src/components/ui/Button.tsx b/client/src/components/ui/Button.tsx new file mode 100644 index 0000000..bbcd17f --- /dev/null +++ b/client/src/components/ui/Button.tsx @@ -0,0 +1,57 @@ +import clsx from "clsx"; + +interface ButtonProps extends React.ButtonHTMLAttributes { + children: React.ReactNode; + variant?: "critical" | "tertiary" | "secondary" | "primary" | "cta" | "menu"; + className?: string; + size?: "small" | "medium" | "large"; + ref?: React.RefObject; +} + +function Button({ + children, + variant = "primary", + className, + size = "medium", + ref, + type, + onClick, + ...props +}: ButtonProps) { + return ( + + ); +} + +export default Button; diff --git a/client/src/components/ui/ControlButton.tsx b/client/src/components/ui/ControlButton.tsx new file mode 100644 index 0000000..0530f66 --- /dev/null +++ b/client/src/components/ui/ControlButton.tsx @@ -0,0 +1,47 @@ +import clsx from "clsx"; + +interface ControlButtonProps + extends React.ButtonHTMLAttributes { + size: "small" | "large"; + icon: React.ReactNode; + enabled: boolean; +} + +function ControlButton({ + size, + enabled, + icon, + className, + onClick, + ...props +}: ControlButtonProps) { + return ( + + ); +} + +export default ControlButton; diff --git a/client/src/components/ui/FloatingActionButton.tsx b/client/src/components/ui/FloatingActionButton.tsx new file mode 100644 index 0000000..75f9641 --- /dev/null +++ b/client/src/components/ui/FloatingActionButton.tsx @@ -0,0 +1,33 @@ +import clsx from "clsx"; + +interface FloatingActionButtonProps + extends React.ButtonHTMLAttributes { + children: React.ReactNode; + variant: "default" | "critical"; +} + +function FloatingActionButton({ + children, + variant = "default", + className, + onClick, + ...props +}: FloatingActionButtonProps) { + return ( + + ); +} + +export default FloatingActionButton; diff --git a/client/src/components/ui/Input.tsx b/client/src/components/ui/Input.tsx new file mode 100644 index 0000000..d78ab43 --- /dev/null +++ b/client/src/components/ui/Input.tsx @@ -0,0 +1,51 @@ +import clsx from "clsx"; +import LoaderIcon from "../icons/LoaderIcon"; + +interface InputProps extends React.InputHTMLAttributes { + isLoading?: boolean; + errorMessage?: string; + isError?: boolean; + mask?: string; +} + +function Input({ + isError, + placeholder, + errorMessage, + isLoading, + children, + ...props +}: InputProps) { + return ( +
+ + {children} + {placeholder && ( + + {placeholder + (props.required ? "*" : "")} + + )} + {isError && ( +
+ {errorMessage} +
+ )} + {isLoading && ( +
+ +
+ )} +
+ ); +} + +export default Input; diff --git a/client/src/index.css b/client/src/index.css index b5c61c9..58b68c2 100644 --- a/client/src/index.css +++ b/client/src/index.css @@ -1,3 +1,53 @@ @tailwind base; @tailwind components; @tailwind utilities; + +body { + color: #141414; +} + +@layer utilities { + .title-l { + @apply text-2xl leading-[120%] tracking-[-0.02em]; + } + + .title-m { + @apply text-xl leading-[110%] tracking-[-0.02em]; + } + + .title-s { + @apply text-base leading-[110%] tracking-[-0.02em]; + } + + .text-m { + @apply text-base leading-[125%] tracking-[-0.02em]; + } + + .text-s { + @apply text-sm leading-[115%] tracking-[-0.02em]; + } + + /* .text-xs { + @apply text-xs leading-[110%] tracking-[-0.02em]; + } */ + + .button-m { + @apply text-sm leading-[115%] tracking-[-0.02em]; + } + + .button-s { + @apply text-xs leading-[130%] tracking-[-0.02em]; + } + + .caption-m { + @apply text-sm leading-[120%] tracking-[-0.02em]; + } + + .caption-s { + @apply text-xs leading-[120%] tracking-[-0.02em]; + } + + .caption-xs { + @apply text-[10px] leading-[110%] tracking-[-0.02em]; + } +} diff --git a/client/tailwind.config.js b/client/tailwind.config.js index d37737f..a350a14 100644 --- a/client/tailwind.config.js +++ b/client/tailwind.config.js @@ -1,12 +1,11 @@ /** @type {import('tailwindcss').Config} */ export default { - content: [ - "./index.html", - "./src/**/*.{js,ts,jsx,tsx}", - ], + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], theme: { extend: {}, + screens: { + "2xl": { min: "1440px" }, + }, }, plugins: [], -} - +};