From 33005922c9008e22bc8bc239fd17c3bb9be624a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Espino=20Garc=C3=ADa?= Date: Mon, 11 Nov 2024 11:06:08 +0100 Subject: [PATCH] Add component library (#28826) * Add component library * Fix lint and add different enable logic * Fix test * Address feedback and add background context * Fix lint --------- Co-authored-by: Mattermost Build --- .../component_library/component_library.scss | 17 +++ .../components/component_library/hooks.tsx | 114 ++++++++++++++++ .../components/component_library/index.tsx | 125 ++++++++++++++++++ .../component_library/section_notice.cl.tsx | 94 +++++++++++++ .../components/component_library/utils.tsx | 79 +++++++++++ webapp/channels/src/components/root/index.ts | 2 + .../src/components/root/root.test.tsx | 1 + webapp/channels/src/components/root/root.tsx | 7 + 8 files changed, 439 insertions(+) create mode 100644 webapp/channels/src/components/component_library/component_library.scss create mode 100644 webapp/channels/src/components/component_library/hooks.tsx create mode 100644 webapp/channels/src/components/component_library/index.tsx create mode 100644 webapp/channels/src/components/component_library/section_notice.cl.tsx create mode 100644 webapp/channels/src/components/component_library/utils.tsx diff --git a/webapp/channels/src/components/component_library/component_library.scss b/webapp/channels/src/components/component_library/component_library.scss new file mode 100644 index 0000000000..d15f20b3bb --- /dev/null +++ b/webapp/channels/src/components/component_library/component_library.scss @@ -0,0 +1,17 @@ +.clInput { + display: block; + margin-bottom: 20px; +} + +.clWrapper { + width: auto; + padding: 25px; +} + +.clCenterBackground { + background-color: var(--center-channel-bg); +} + +.clSidebarBackground { + background-color: var(--sidebar-bg); +} diff --git a/webapp/channels/src/components/component_library/hooks.tsx b/webapp/channels/src/components/component_library/hooks.tsx new file mode 100644 index 0000000000..dc81a560a0 --- /dev/null +++ b/webapp/channels/src/components/component_library/hooks.tsx @@ -0,0 +1,114 @@ +// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. +// See LICENSE.txt for license information. + +import React, {useCallback, useMemo, useState} from 'react'; + +import './component_library.scss'; + +type HookResult = [ + {[x: string]: T}, + JSX.Element, +] +export const useStringProp = ( + propName: string, + defaultValue: string, + isTextarea: boolean, +): HookResult => { + const [value, setValue] = useState(defaultValue); + const onChange = useCallback((e: React.ChangeEvent) => setValue(e.target.value), []); + const selector = useMemo(() => { + const input = isTextarea ? ( +