@geoinsight/react-components 0.6.11 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types/components/accordion/accordion-button.d.ts +4 -0
- package/dist/cjs/types/components/accordion/accordion-content.d.ts +4 -0
- package/dist/cjs/types/components/accordion/accordion-item.d.ts +4 -0
- package/dist/cjs/types/components/accordion/accordion.d.ts +4 -0
- package/dist/cjs/types/components/accordion/index.d.ts +4 -0
- package/dist/cjs/types/components/accordion/index.stories.d.ts +6 -0
- package/dist/cjs/types/components/accordion/index.types.d.ts +34 -0
- package/dist/cjs/types/components/button/index.d.ts +5 -0
- package/dist/cjs/types/components/button/index.stories.d.ts +7 -0
- package/dist/cjs/types/components/button/index.types.d.ts +41 -0
- package/dist/cjs/types/components/form/FormInput.d.ts +4 -0
- package/dist/cjs/types/components/form/FormSelect.d.ts +4 -0
- package/dist/cjs/types/components/form/FormTextArea.d.ts +4 -0
- package/dist/cjs/types/components/form/index.d.ts +4 -0
- package/dist/cjs/types/components/form/index.stories.d.ts +7 -0
- package/dist/cjs/types/components/form/index.types.d.ts +45 -0
- package/dist/cjs/types/components/input/index.d.ts +4 -0
- package/dist/cjs/types/components/input/index.stories.d.ts +8 -0
- package/dist/cjs/types/components/input/index.types.d.ts +40 -0
- package/dist/cjs/types/components/loading/index.d.ts +4 -0
- package/dist/cjs/types/components/loading/index.stories.d.ts +6 -0
- package/dist/cjs/types/components/loading/index.types.d.ts +11 -0
- package/dist/cjs/types/components/modal/index.d.ts +4 -0
- package/dist/cjs/types/components/modal/index.stories.d.ts +6 -0
- package/dist/cjs/types/components/modal/index.types.d.ts +31 -0
- package/dist/cjs/types/components/select/index.d.ts +4 -0
- package/dist/cjs/types/components/select/index.stories.d.ts +7 -0
- package/dist/cjs/types/components/select/index.types.d.ts +30 -0
- package/dist/cjs/types/components/text-area/index.d.ts +5 -0
- package/dist/cjs/types/components/text-area/index.stories.d.ts +7 -0
- package/dist/cjs/types/components/text-area/index.types.d.ts +37 -0
- package/dist/cjs/types/context/accordion/index.d.ts +10 -0
- package/dist/cjs/types/context/loading/index.d.ts +24 -0
- package/dist/cjs/types/context/loading/index.stories.d.ts +8 -0
- package/dist/cjs/types/context/modal/index.d.ts +25 -0
- package/dist/cjs/types/context/modal/index.stories.d.ts +6 -0
- package/dist/cjs/types/context/theme/index.d.ts +18 -0
- package/dist/cjs/types/decorators/withColorScheme.d.ts +7 -0
- package/dist/cjs/types/decorators/withLoading.d.ts +2 -0
- package/dist/cjs/types/decorators/withModal.d.ts +2 -0
- package/dist/cjs/types/decorators/withWrapper.d.ts +2 -0
- package/dist/cjs/types/index.d.ts +15 -0
- package/dist/cjs/types/utils/palette.d.ts +1 -0
- package/dist/cjs/types/utils/recursive.d.ts +6 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types/components/accordion/accordion-button.d.ts +4 -0
- package/dist/esm/types/components/accordion/accordion-content.d.ts +4 -0
- package/dist/esm/types/components/accordion/accordion-item.d.ts +4 -0
- package/dist/esm/types/components/accordion/accordion.d.ts +4 -0
- package/dist/esm/types/components/accordion/index.d.ts +4 -0
- package/dist/esm/types/components/accordion/index.stories.d.ts +6 -0
- package/dist/esm/types/components/accordion/index.types.d.ts +34 -0
- package/dist/esm/types/components/button/index.d.ts +5 -0
- package/dist/esm/types/components/button/index.stories.d.ts +7 -0
- package/dist/esm/types/components/button/index.types.d.ts +41 -0
- package/dist/esm/types/components/form/FormInput.d.ts +4 -0
- package/dist/esm/types/components/form/FormSelect.d.ts +4 -0
- package/dist/esm/types/components/form/FormTextArea.d.ts +4 -0
- package/dist/esm/types/components/form/index.d.ts +4 -0
- package/dist/esm/types/components/form/index.stories.d.ts +7 -0
- package/dist/esm/types/components/form/index.types.d.ts +45 -0
- package/dist/esm/types/components/input/index.d.ts +4 -0
- package/dist/esm/types/components/input/index.stories.d.ts +8 -0
- package/dist/esm/types/components/input/index.types.d.ts +40 -0
- package/dist/esm/types/components/loading/index.d.ts +4 -0
- package/dist/esm/types/components/loading/index.stories.d.ts +6 -0
- package/dist/esm/types/components/loading/index.types.d.ts +11 -0
- package/dist/esm/types/components/modal/index.d.ts +4 -0
- package/dist/esm/types/components/modal/index.stories.d.ts +6 -0
- package/dist/esm/types/components/modal/index.types.d.ts +31 -0
- package/dist/esm/types/components/select/index.d.ts +4 -0
- package/dist/esm/types/components/select/index.stories.d.ts +7 -0
- package/dist/esm/types/components/select/index.types.d.ts +30 -0
- package/dist/esm/types/components/text-area/index.d.ts +5 -0
- package/dist/esm/types/components/text-area/index.stories.d.ts +7 -0
- package/dist/esm/types/components/text-area/index.types.d.ts +37 -0
- package/dist/esm/types/context/accordion/index.d.ts +10 -0
- package/dist/esm/types/context/loading/index.d.ts +24 -0
- package/dist/esm/types/context/loading/index.stories.d.ts +8 -0
- package/dist/esm/types/context/modal/index.d.ts +25 -0
- package/dist/esm/types/context/modal/index.stories.d.ts +6 -0
- package/dist/esm/types/context/theme/index.d.ts +18 -0
- package/dist/esm/types/decorators/withColorScheme.d.ts +7 -0
- package/dist/esm/types/decorators/withLoading.d.ts +2 -0
- package/dist/esm/types/decorators/withModal.d.ts +2 -0
- package/dist/esm/types/decorators/withWrapper.d.ts +2 -0
- package/dist/esm/types/index.d.ts +15 -0
- package/dist/esm/types/utils/palette.d.ts +1 -0
- package/dist/esm/types/utils/recursive.d.ts +6 -0
- package/package.json +2 -2
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import Modal from "../../components/modal";
|
|
3
|
+
type Modal = {
|
|
4
|
+
title?: React.ReactNode;
|
|
5
|
+
subtitle?: React.ReactNode;
|
|
6
|
+
content?: React.ReactNode;
|
|
7
|
+
hasCloseButton?: boolean;
|
|
8
|
+
footer?: React.ReactNode;
|
|
9
|
+
};
|
|
10
|
+
interface State extends Modal {
|
|
11
|
+
isModal: boolean;
|
|
12
|
+
}
|
|
13
|
+
type Context = {
|
|
14
|
+
state: State;
|
|
15
|
+
openModal: (modal?: Modal) => void;
|
|
16
|
+
closeModal: () => void;
|
|
17
|
+
};
|
|
18
|
+
type ModalProviderProps = {
|
|
19
|
+
children: React.ReactNode;
|
|
20
|
+
};
|
|
21
|
+
type UseModalProps = {};
|
|
22
|
+
declare const ModalContext: React.Context<Context | undefined>;
|
|
23
|
+
declare function ModalProvider({ children }: ModalProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
declare function useModal({}?: UseModalProps): Context;
|
|
25
|
+
export { ModalContext, ModalProvider, useModal };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DataPalette } from "data-palette";
|
|
2
|
+
import React from "react";
|
|
3
|
+
type DataTheme = "light" | "dark";
|
|
4
|
+
type State = {
|
|
5
|
+
dataTheme?: DataTheme;
|
|
6
|
+
switchDataTheme: (mode: DataTheme) => void;
|
|
7
|
+
dataPalette?: DataPalette;
|
|
8
|
+
switchDataPalette: (mode: DataPalette) => void;
|
|
9
|
+
};
|
|
10
|
+
type ThemeProviderProps = {
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
dataTheme?: DataTheme;
|
|
13
|
+
dataPalette?: DataPalette;
|
|
14
|
+
};
|
|
15
|
+
declare const ThemeContext: React.Context<State | undefined>;
|
|
16
|
+
declare function ThemeProvider({ children, dataTheme: dataThemeProp, dataPalette: dataPaletteProp, }: ThemeProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
declare function useTheme(): State;
|
|
18
|
+
export { ThemeContext, ThemeProvider, useTheme };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StoryContext, StoryFn } from "@storybook/react";
|
|
2
|
+
import "../styles/variables.css";
|
|
3
|
+
export declare const withColorScheme: (Story: StoryFn, context: StoryContext) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare const Wrapped: ({ Story, context, }: {
|
|
5
|
+
Story: StoryFn;
|
|
6
|
+
context: StoryContext;
|
|
7
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import "../src/styles/variables.css";
|
|
2
|
+
export { Accordion, AccordionItem, AccordionButton, AccordionContent } from "./components/accordion";
|
|
3
|
+
export { Button } from "./components/button";
|
|
4
|
+
export { Form } from "./components/form";
|
|
5
|
+
export { FormInput } from "./components/form/FormInput";
|
|
6
|
+
export { FormTextArea } from "./components/form/FormTextArea";
|
|
7
|
+
export { FormSelect } from "./components/form/FormSelect";
|
|
8
|
+
export { Input } from "./components/input";
|
|
9
|
+
export { Loading } from "./components/loading";
|
|
10
|
+
export { Modal } from "./components/modal";
|
|
11
|
+
export { Select } from "./components/select";
|
|
12
|
+
export { TextArea } from "./components/text-area";
|
|
13
|
+
export { LoadingContext, LoadingProvider, useLoading } from "./context/loading";
|
|
14
|
+
export { ModalContext, ModalProvider, useModal } from "./context/modal";
|
|
15
|
+
export { ThemeContext, ThemeProvider, useTheme } from "./context/theme";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const palette: readonly ["forest", "water", "earth"];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { ToggleArray } from "../components/accordion/index.types";
|
|
3
|
+
export declare function recursiveChildren(children: ReactNode | ReactNode[], i?: number): ReactNode;
|
|
4
|
+
export declare function recursiveToggle(children: ReactNode[], toggleArray: ToggleArray | undefined, i: number | undefined, props: {
|
|
5
|
+
expanded: "all" | "none" | "custom";
|
|
6
|
+
}): ToggleArray | undefined;
|
package/dist/esm/index.js
CHANGED
|
@@ -476,3 +476,4 @@ function useModal({} = {}) {
|
|
|
476
476
|
}
|
|
477
477
|
|
|
478
478
|
export { Accordion, AccordionButton, AccordionContent, AccordionItem, Button, Form, FormInput, FormSelect, FormTextArea, Input, Loading, LoadingContext, LoadingProvider, Modal, ModalContext, ModalProvider, Select, TextArea, ThemeContext, ThemeProvider, useLoading, useModal, useTheme };
|
|
479
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/utils/recursive.ts","../../src/context/accordion/index.tsx","../../src/components/accordion/accordion.tsx","../../src/components/accordion/accordion-item.tsx","../../src/components/button/index.tsx","../../src/context/theme/index.tsx","../../src/components/accordion/accordion-button.tsx","../../src/components/accordion/accordion-content.tsx","../../src/components/form/index.tsx","../../src/components/input/index.tsx","../../src/components/form/FormInput.tsx","../../src/components/text-area/index.tsx","../../src/components/form/FormTextArea.tsx","../../src/components/select/index.tsx","../../src/components/form/FormSelect.tsx","../../src/components/loading/index.tsx","../../src/components/modal/index.tsx","../../src/context/loading/index.tsx","../../src/context/modal/index.tsx"],"sourcesContent":["import { Children, ReactNode, cloneElement, isValidElement } from \"react\";\nimport { ToggleArray } from \"../components/accordion/index.types\";\n\nlet uniqueId = (function () {\n let num = 0;\n return function (prefix: string | number) {\n prefix = String(prefix) || '';\n num += 1;\n return prefix + num;\n }\n}\n ());\n\nexport function recursiveChildren(\n children: ReactNode | ReactNode[],\n i = 0\n): ReactNode {\n return Children.map(children, (child, index) => {\n if (!isValidElement(child)) {\n return child;\n }\n\n if (child.props.children) {\n return cloneElement(child, {\n ...child.props,\n children: recursiveChildren(child.props.children, i++),\n ...((child?.type as any)?.name === \"AccordionItem\" && {\n label: uniqueId(\"id_\")// `${(child?.type as any)?.name}-${index}-${i}`,\n }),\n });\n }\n });\n}\n\nexport function recursiveToggle(\n children: ReactNode[],\n toggleArray: ToggleArray = {},\n i = 0,\n props: { expanded: \"all\" | \"none\" | \"custom\" }\n) {\n if (\n (children && typeof children === \"string\") ||\n (Array.isArray(children) && typeof children[0] === \"string\")\n ) {\n return;\n }\n\n for (const child of children) {\n if (isValidElement(child)) {\n if ((child?.type as any)?.name === \"AccordionItem\" && child.props.label) {\n toggleArray[child.props.label] = {\n isToggle:\n props.expanded === \"all\"\n ? true\n : props.expanded === \"none\"\n ? false\n : props.expanded === \"custom\"\n ? child?.props.isExpanded\n : false,\n depth: i,\n paddingLeft: `${16 * i}px`,\n };\n }\n\n if (\n typeof child.props.children !== \"string\" &&\n child.props.children.find(\n (v: { type: { name: string } }) =>\n v?.type?.name === \"AccordionItem\"\n )\n ) {\n recursiveToggle(\n Array.isArray(child.props.children)\n ? child.props.children\n : [child.props.children],\n toggleArray,\n i + 1,\n props\n );\n }\n }\n }\n\n return toggleArray;\n}\n","import React, {\n Dispatch,\n ReactNode,\n SetStateAction,\n createContext,\n useContext,\n useMemo,\n useState,\n} from \"react\";\nimport { Accordion, ToggleArray } from \"../../components/accordion/index.types\";\nimport { recursiveChildren, recursiveToggle } from \"../../utils/recursive\";\n\ninterface State {\n toggle?: ToggleArray;\n setToggle: (prev: any) => void;\n}\n\nconst AccordionContext = createContext<State | undefined>(undefined);\n\nfunction AccordionProvider({ children, expanded = \"all\" }: Accordion) {\n const newChildren = useMemo(()=> recursiveChildren(children, 0), []);\n const [toggle, _setToggle] = useState(\n recursiveToggle(newChildren as ReactNode[], {}, 0, { expanded })\n );\n\n const setToggle = (prev: any) => {\n _setToggle(prev)\n };\n\n return (\n <AccordionContext.Provider value={{ toggle, setToggle }}>\n <div className=\"accordion\">{newChildren}</div>\n </AccordionContext.Provider>\n );\n}\n\nfunction useAccordion() {\n const context = useContext(AccordionContext);\n\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n\n return context;\n}\n\nexport { useAccordion, AccordionContext, AccordionProvider };\n","import \"./index.css\";\nimport { Accordion as AccordionProps } from \"./index.types\";\nimport { AccordionProvider } from \"../../context/accordion\";\n\nexport function Accordion({\n children,\n expanded = \"all\",\n // defaultValue,\n // selectValue,\n}: AccordionProps) {\n // const { dataTheme } = useTheme();\n\n return (\n <AccordionProvider expanded={expanded}>{children}</AccordionProvider>\n );\n}\n\nexport default Accordion;\n","import { Children, cloneElement } from \"react\";\nimport \"./index.css\";\nimport { AccordionItem as AccordionItemProps } from \"./index.types\";\nimport { useAccordion } from \"../../context/accordion\";\n\nexport function AccordionItem({\n children,\n label,\n isExpanded = false,\n}: AccordionItemProps) {\n const { toggle } = useAccordion();\n\n return (\n <div\n className=\"accordion-item\"\n style={{\n paddingLeft: toggle && label && toggle[label]?.paddingLeft,\n }}\n >\n {Children.map(children, (child) =>\n cloneElement(child as any, {\n toggle: toggle,\n // setToggle: setToggle,\n ...((child as any)?.type?.name !== \"AccordionItem\" && {\n label: label,\n }),\n isExpanded: isExpanded,\n })\n )}\n </div>\n );\n}\n\nexport default AccordionItem;\n","import clsx from \"clsx\";\nimport { ButtonAsButton, ButtonAsLink } from \"./index.types\";\nimport \"./index.css\";\nimport { ReactNode } from \"react\";\n\nconst Anchor = ({\n Custom,\n children,\n ...rest\n}: {\n Custom?: React.ComponentClass<any>;\n children?: ReactNode;\n}) =>\n Custom ? <Custom {...rest}>{children}</Custom> : <a {...rest}>{children}</a>;\n\nexport function Button({\n children = \"Click me\",\n className = \"\",\n icon = undefined,\n isNewWindow = false,\n mode = \"primary\",\n size = \"medium\",\n as = \"button\",\n CustomAnchor,\n ...rest\n}: ButtonAsButton | ButtonAsLink): JSX.Element {\n return as === \"link\" ? (\n <Anchor\n Custom={CustomAnchor}\n {...(isNewWindow && { target: \"_blank\" })}\n className={clsx(\n `button ${className}`,\n mode === \"secondary\" ? `button button__${mode}` : \"button__link\",\n `button__${size}`,\n )}\n {...(rest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {children}\n {icon}\n </Anchor>\n ) : (\n <button\n className={clsx(\n \"button\",\n `button__${mode}`,\n `button__${size}`,\n className\n )}\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n >\n {children}\n {icon}\n </button>\n );\n}\n\nexport default Button;\n","import { DataPalette } from \"data-palette\";\nimport React, {\n createContext,\n useContext,\n useEffect,\n useState,\n} from \"react\";\n\ntype DataTheme = \"light\" | \"dark\";\n\ntype State = {\n dataTheme?: DataTheme;\n switchDataTheme: (mode: DataTheme) => void;\n dataPalette?: DataPalette;\n switchDataPalette: (mode: DataPalette) => void;\n};\ntype ThemeProviderProps = {\n children: React.ReactNode;\n dataTheme?: DataTheme;\n dataPalette?: DataPalette;\n};\n\nconst ThemeContext = createContext<State | undefined>(undefined);\n\nfunction ThemeProvider({\n children,\n dataTheme: dataThemeProp,\n dataPalette: dataPaletteProp = \"water\",\n}: ThemeProviderProps) {\n const [dataTheme, setDataTheme] = useState<DataTheme>();\n const [dataPalette, setDataPalette] = useState<DataPalette>();\n\n useEffect(() => {\n if (dataPaletteProp) {\n switchDataPalette(dataPaletteProp);\n }\n }, [dataPaletteProp]);\n\n useEffect(() => {\n if (dataThemeProp) {\n switchDataTheme(dataThemeProp);\n }\n }, [dataThemeProp]);\n\n useEffect(() => {\n if (window.matchMedia) {\n if (localStorage.getItem(\"data-theme\")) {\n document.documentElement.setAttribute(\n \"data-theme\",\n localStorage.getItem(\"data-theme\") as string\n );\n setDataTheme(localStorage.getItem(\"data-theme\") as DataTheme);\n } else if (window.matchMedia(\"(prefers-color-scheme: dark)\").matches) {\n document.documentElement.setAttribute(\"data-theme\", \"dark\");\n setDataTheme(\"dark\");\n }\n }\n }, []);\n\n const switchDataTheme = (mode: DataTheme) => {\n document.documentElement.setAttribute(\"data-theme\", mode);\n setDataTheme(mode);\n localStorage.setItem(\"data-theme\", mode);\n };\n\n const switchDataPalette = (mode: DataPalette) => {\n document.documentElement.setAttribute(\"data-palette\", mode);\n setDataPalette(mode);\n localStorage.setItem(\"palette-theme\", mode);\n };\n\n return (\n <ThemeContext.Provider\n value={{ dataTheme, switchDataTheme, dataPalette, switchDataPalette }}\n >\n {children}\n </ThemeContext.Provider>\n );\n}\n\nfunction useTheme() {\n const context = useContext(ThemeContext);\n\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n\n return context;\n}\n\nexport { ThemeContext, ThemeProvider, useTheme };\n","import Button from \"../button\";\nimport \"./index.css\";\nimport { TfiAngleUp, TfiAngleDown } from \"react-icons/tfi\";\nimport {\n AccordionButton as AccordionButtonProps,\n Accordion as AccordionProps,\n ToggleArray,\n} from \"./index.types\";\nimport clsx from \"clsx\";\nimport { useAccordion } from \"../../context/accordion\";\nimport { useTheme } from \"../../context/theme\";\n\nexport function AccordionButton({\n children,\n is = \"link\",\n label,\n // toggle,\n // setToggle = (prev: any) => void,\n ...rest\n}: AccordionButtonProps) {\n const { dataTheme } = useTheme();\n const { toggle, setToggle } = useAccordion();\n\n const handleToggle = () => {\n setToggle((prev: ToggleArray | undefined): any => {\n if (label) {\n return {\n ...prev,\n [label]: {\n ...(prev && label && prev[label]),\n isToggle: prev && !prev[label].isToggle,\n },\n };\n } else {\n return prev;\n }\n });\n };\n\n return (\n <Button\n as={is}\n className={clsx(\n \"accordion-button\",\n `accordion-button__${is}`,\n `accordion-button__${is}--${dataTheme}`\n )}\n {...(is !== \"link\" && {\n icon:\n label && toggle && toggle[label].isToggle ? (\n <TfiAngleDown />\n ) : (\n <TfiAngleUp />\n ),\n })}\n {...(is !== \"link\" && { onClick: handleToggle })}\n {...rest}\n >\n {children}\n </Button>\n );\n}\n\nexport default AccordionButton;\n","import \"./index.css\";\nimport { AccordionContent as AccordionContentProps } from \"./index.types\";\n\nexport const AccordionContent = function AccordionContent({\n children,\n label,\n toggle,\n}: AccordionContentProps) {\n return (\n label &&\n toggle &&\n toggle[label].isToggle && (\n <div className=\"accordion-content\">{children}</div>\n )\n );\n};\n\nexport default AccordionContent;\n","import { Form as FormProps, ReactNodeControlled } from \"./index.types\";\nimport \"./index.css\";\nimport Button from \"../button\";\nimport { BsCheckCircleFill, BsXCircleFill } from \"react-icons/bs\";\nimport { Controller, FormProvider, useForm } from \"react-hook-form\";\nimport { Children, cloneElement, createElement, useEffect, useState } from \"react\";\n\n// how do I solve reseting the form outside the form\nexport function Form({\n children,\n onSubmit,\n submitButton = {\n label: \"Submit\",\n },\n initialState,\n ...rest\n}: FormProps) {\n const methods = useForm(initialState);\n const {\n formState: { isValid },\n } = methods;\n const [result, setResult] = useState<{\n message?: string;\n isSuccess: boolean;\n }>({\n message: \"\",\n isSuccess: false,\n });\n\n return (\n <FormProvider {...methods}>\n <form\n className=\"form\"\n onSubmit={methods.handleSubmit((data) => onSubmit(data, methods, setResult))}\n {...rest}\n >\n {children}\n {result.message && (\n <div className=\"form__message\">\n {result.isSuccess ? (\n <BsCheckCircleFill\n color=\"var(--color-success)\"\n size={48}\n ></BsCheckCircleFill>\n ) : (\n <BsXCircleFill\n color={\"var(--color-danger)\"}\n size={48}\n ></BsXCircleFill>\n )}\n {result.message}\n </div>\n )}\n <Button type=\"submit\" disabled={!isValid}>\n {submitButton.label}\n </Button>\n </form>\n </FormProvider>\n );\n}\n\nexport default Form;\n","import { Input as InputProps } from \"./index.types\";\nimport \"./index.css\";\nimport clsx from \"clsx\";\n\nexport function Input({\n inputClassName = \"\",\n classNameGroup = \"\",\n error = {\n is: false,\n message: \"\",\n },\n inputRef,\n styleGroup,\n placeholder = \"Insert value\",\n label,\n labelClass,\n icon,\n ...rest\n}: InputProps) {\n return (\n <div className={clsx(\"input-group\", classNameGroup)} style={styleGroup}>\n <div className=\"input__header\">\n {label && <label className={labelClass}>{label}</label>}\n {error && error.is && (\n <span className=\"input__header--error\">{error.message as any}</span>\n )}\n </div>\n <div className=\"input-subgroup\">\n {icon?.element && icon.position === \"left\" && (\n <div\n className={clsx(\"input__icon\", \"input__icon--left\", icon.className)}\n >\n {icon.element}\n </div>\n )}\n <input\n ref={inputRef}\n className={clsx(\n \"input\",\n error.is ? \"input--error\" : \"\",\n icon?.position === \"left\" && \"input--icon\",\n inputClassName\n )}\n placeholder={placeholder}\n {...rest}\n />\n {icon?.element && icon.position !== \"left\" && (\n <div\n className={clsx(\n \"input__icon\",\n \"input__icon--right\",\n // `input__icon--${icon.position || \"right\"}`,\n icon.className\n )}\n >\n {icon.element}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nexport default Input;\n","import \"./index.css\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport Input from \"../input\";\nimport { FormInputs } from \"./index.types\";\n\nexport function FormInput({ name, isRequired, error, defaultValue, ...rest }: FormInputs) {\n const { control } = useFormContext();\n return (\n <Controller\n name={name}\n control={control}\n rules={{\n ...(isRequired\n ? {\n required: (error?.message as any) || \"Field is required\",\n }\n : {}),\n }}\n render={({ field, fieldState: { error } }) => {\n return (\n <Input\n isRequired\n error={{\n is: !!error,\n message: error?.message,\n }}\n defaultValue={defaultValue}\n {...field}\n {...rest}\n />\n );\n }}\n />\n );\n}\n\nexport default FormInput;\n","import React, { MutableRefObject, useRef, useState } from \"react\";\nimport clsx from \"clsx\";\nimport { TbArrowsDiagonal2 } from \"react-icons/tb\";\nimport { TextArea as TextAreaProps } from \"./index.types\";\nimport \"./index.css\";\n\nexport function TextArea({\n className = \"\",\n disabled = true,\n hasToggleButton = true,\n hideHeight = \"5rem\",\n placeholder = \"Insert value\",\n showHeight = \"10rem\",\n style = {},\n textareaClassName = \"\",\n label,\n labelClass,\n error = {\n is: false,\n message: \"\",\n },\n ...rest\n}: TextAreaProps): JSX.Element {\n const ref = useRef() as MutableRefObject<HTMLTextAreaElement>;\n const [isShow, setIsShow] = useState<boolean>(false);\n\n const handleClickToggle = () => {\n if (ref && ref.current) {\n if (isShow) {\n ref.current.style.height = hideHeight;\n } else {\n ref.current.style.height = showHeight; //(48 + ref.current.scrollHeight) + 'px';\n }\n setIsShow((prev) => !prev);\n }\n };\n\n return (\n <div className={clsx(\"textarea\", className)} style={style}>\n <div className=\"textarea__header\">\n {label && <label className={labelClass}>{label}</label>}\n {error && error.is && (\n <span className=\"textarea__header--error\">\n {error.message as any}\n </span>\n )}\n </div>\n <textarea\n ref={ref}\n className={clsx(\n \"textarea__input\",\n error.is && \"textarea__input--error\",\n textareaClassName\n )}\n style={\n {\n height: hasToggleButton ? hideHeight : showHeight,\n } as React.CSSProperties\n }\n placeholder={placeholder}\n disabled={disabled}\n {...rest}\n />\n {hasToggleButton && (\n <button\n type=\"button\"\n className={clsx(\n \"textarea__button\",\n isShow && \"textarea__button--show\",\n error.is && \"textarea__button--error\",\n )}\n onClick={handleClickToggle}\n disabled={disabled}\n >\n <TbArrowsDiagonal2 size=\"1.5rem\" />\n </button>\n )}\n </div>\n );\n}\n\nexport default TextArea;\n","import \"./index.css\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport TextArea from \"../text-area\";\nimport { FormInputs } from \"./index.types\";\n\nexport function FormTextArea({ name, isRequired, error, ...rest }: FormInputs) {\n const { control } = useFormContext();\n return (\n <Controller\n name={name}\n control={control}\n rules={{\n ...(isRequired\n ? {\n required: (error?.message as any) || \"Field is required\",\n }\n : {}),\n }}\n render={({ field, fieldState: { error } }) => {\n return (\n <TextArea\n isRequired\n error={{\n is: !!error,\n message: error?.message,\n }}\n {...field}\n {...rest}\n />\n );\n }}\n />\n );\n}\n\nexport default FormTextArea;\n","import { useState } from \"react\";\nimport clsx from \"clsx\";\nimport { Select as SelectProps } from \"./index.types\";\nimport \"./index.css\";\nimport Button from \"../button\";\nimport { TfiAngleDown } from \"react-icons/tfi\";\nimport Input from \"../input\";\n\nexport function Select({\n inputClassName = \"\",\n classNameGroup = \"\",\n options,\n styleGroup,\n defaultValue,\n // inputProps,\n setFormSelected,\n clearError,\n resetForm,\n onFormBlur,\n handleSelect,\n ...rest\n}: SelectProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [value, setValue] = useState(defaultValue || (options && options[0]));\n const [filteredOptions, setFilteredOptions] = useState(options);\n const { name } = rest;\n\n const handleOpen = () => {\n setIsOpen(true);\n };\n\n const handleClose = () => {\n setIsOpen(false);\n };\n\n const handleInputClose = () => {\n if (onFormBlur) {\n onFormBlur();\n }\n setIsOpen(false);\n };\n\n const handleToggle = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleValueChange = (e: { target: { value: string } }) => {\n const { value } = e.target;\n setValue(value);\n // for autocomplete\n // const { value } = e.target;\n // setValue(value);\n };\n\n const handleSelectChange = (e: { target: { name: string } }) => {\n const { name: value } = e.target;\n\n if (setFormSelected) {\n setFormSelected(name, value);\n if(clearError) {\n clearError(name)\n }\n\n if(resetForm) {\n resetForm()\n }\n } else {\n setValue(value);\n }\n\n if (handleSelect) {\n handleSelect(value);\n }\n\n handleClose();\n };\n // for autocomplete\n // useEffect(() => {\n // if (value) {\n // console.log(filteredOptions);\n // setFilteredOptions((prev: string[]) => {\n // return options\n // .filter((option: string) => option.includes(value))\n // });\n // } else {\n // setFilteredOptions(options)\n // }\n // }, [value]);\n\n return (\n <div className={clsx(\"select-group\", classNameGroup)} style={styleGroup}>\n <Input\n inputClassName={clsx(\"select\", inputClassName)}\n value={value}\n placeholder=\"Select a value\"\n icon={{\n className: \"select__arrow\",\n element: (\n <Button\n type=\"button\"\n mode=\"icon\"\n className=\"select__arrow-button\"\n onClick={handleToggle}\n onBlur={handleClose}\n >\n <TfiAngleDown size={24} color=\"var(--color-black)\" />\n </Button>\n ),\n }}\n onFocus={handleOpen}\n onBlur={handleInputClose}\n onChange={handleValueChange}\n autoComplete=\"off\"\n {...rest}\n // name={inputProps?.name}\n // {...inputProps}\n />\n {isOpen && (\n <div className=\"select__box\">\n {(filteredOptions as string[]).map(\n (option: string, index: number) => (\n <Button\n key={`index-${index}`}\n type=\"button\"\n mode=\"secondary\"\n className=\"select__option\"\n name={option}\n onMouseDown={handleSelectChange as any}\n >\n {option}\n </Button>\n )\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport default Select;\n","import \"./index.css\";\nimport { Controller, useFormContext } from \"react-hook-form\";\nimport Select from \"../select\";\nimport { FormSelect as FormSelectProps } from \"./index.types\";\n\nexport function FormSelect({\n name,\n isRequired,\n error,\n fieldsToReset,\n ...rest\n}: FormSelectProps) {\n const { control, setValue, clearErrors, unregister, resetField } = useFormContext();\n return (\n <Controller\n name={name}\n control={control}\n rules={{\n ...(isRequired\n ? {\n required: (error?.message as any) || \"Field is required\",\n }\n : {}),\n }}\n render={({ field: { onBlur, ...restField }, fieldState: { error } }) => {\n return (\n <Select\n isRequired\n error={{\n is: !!error,\n message: error?.message,\n }}\n setFormSelected={setValue}\n resetForm={()=> fieldsToReset && fieldsToReset.map((field) => {\n setValue(field, undefined)\n unregister(field)\n })}\n clearError={clearErrors}\n onFormBlur={onBlur}\n {...restField}\n {...rest}\n />\n );\n }}\n />\n );\n}\n\nexport default FormSelect;\n","import { Loading as LoadingProps } from \"./index.types\";\nimport \"./index.css\";\n\nexport function Loading({ img, children }: LoadingProps) {\n return (\n <div className=\"loading\">\n <img src={img ? img : \"../../stories/assets/loading.gif\"} />\n {children}\n </div>\n );\n}\n\nexport default Loading;\n","import { IoClose } from \"react-icons/io5\";\nimport { Modal as ModalProps } from \"./index.types\";\nimport \"./index.css\";\nimport Button from \"../button\";\n\nexport function Modal({\n modalref,\n children,\n title,\n subtitle,\n footer,\n hasCloseButton = true,\n handleClose,\n}: ModalProps) {\n return (\n <>\n <div className=\"modal-overlay\" />\n <div ref={modalref} className=\"modal\">\n {hasCloseButton && (\n <Button\n mode=\"secondary\"\n className=\"modal__close\"\n size=\"small\"\n onClick={handleClose}\n >\n <IoClose />\n </Button>\n )}\n <div className=\"modal__content\">\n {title && (\n <div className=\"modal__header\">\n <h3>{title}</h3>\n <h6>{subtitle}</h6>\n </div>\n )}\n <div className=\"modal__children\">{children}</div>\n {footer && <div className=\"modal__footer\">{footer}</div>}\n </div>\n </div>\n </>\n );\n}\n\nexport default Modal;\n","import React, {\n ReactNode,\n RefObject,\n createContext,\n useContext,\n useEffect,\n useReducer,\n} from \"react\";\nimport Loading from \"../../components/loading\";\n\ntype Action = {\n type: \"set_ref\" | \"start_loading\" | \"stop_loading\" | \"set_message\";\n ref?: RefObject<ReactNode>;\n message?: string;\n};\ntype State = {\n isLoading: boolean;\n message?: string | React.ReactNode;\n ref?: RefObject<ReactNode>;\n};\ntype Context = {\n state: State;\n setRef: (ref: RefObject<ReactNode>) => void;\n setMessage: (message: string) => void;\n startLoading: () => void;\n stopLoading: () => void;\n};\ntype LoadingProviderProps = { children: React.ReactNode };\ntype UseLoadingProps = {\n ref?: RefObject<ReactNode>;\n message?: string;\n};\n\nconst LoadingContext = createContext<Context | undefined>(undefined);\n\nfunction loadingReducer(state: State, action: Action) {\n switch (action.type) {\n case \"set_ref\": {\n return { ...state, ref: action.ref };\n }\n case \"start_loading\": {\n return { ...state, isLoading: true };\n }\n case \"stop_loading\": {\n return { ...state, isLoading: false };\n }\n case \"set_message\": {\n return { ...state, message: action.message };\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n }\n}\n\nfunction LoadingProvider({ children }: LoadingProviderProps) {\n const [{ isLoading, message, ref }, dispatch] = useReducer(loadingReducer, {\n isLoading: false,\n message: \"Loading\",\n ref: undefined,\n });\n\n const setRef = (ref: RefObject<ReactNode>) => {\n dispatch({ type: \"set_ref\", ref });\n };\n\n const setMessage = (message: string) => {\n dispatch({ type: \"set_message\", message });\n };\n\n const startLoading = () => {\n dispatch({ type: \"start_loading\" });\n };\n\n const stopLoading = () => {\n dispatch({ type: \"stop_loading\" });\n };\n\n return (\n <LoadingContext.Provider\n value={{\n state: { ref, message, isLoading },\n setMessage,\n setRef,\n startLoading,\n stopLoading,\n }}\n >\n {!ref && <Loading>{message}</Loading>}\n {children}\n </LoadingContext.Provider>\n );\n}\n\nfunction useLoading({ ref, message }: UseLoadingProps = {}) {\n const context = useContext(LoadingContext);\n\n // only happens if there is an initial mode value.\n useEffect(() => {\n ref && context?.setRef(ref);\n message && context?.setMessage(message);\n }, []);\n\n if (context === undefined) {\n throw new Error(\"useLoading must be used within a LoadingProvider\");\n }\n\n return context;\n}\n\nexport { LoadingContext, LoadingProvider, useLoading };\n","import React, {\n ReactNode,\n RefObject,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useReducer,\n useRef,\n} from \"react\";\nimport Modal from \"../../components/modal\";\n// import Modal from \"../../components/Modal\";\n\ntype Modal = {\n title?: React.ReactNode;\n subtitle?: React.ReactNode;\n content?: React.ReactNode;\n hasCloseButton?: boolean;\n footer?: React.ReactNode;\n};\n\ntype Action = {\n type: \"open_modal\" | \"close_modal\";\n modal?: Modal;\n};\n\ninterface State extends Modal {\n isModal: boolean;\n}\n\ntype Context = {\n state: State;\n openModal: (modal?: Modal) => void;\n closeModal: () => void;\n};\n\ntype ModalProviderProps = { children: React.ReactNode };\n\ntype UseModalProps = {};\n\ninterface HTMLEvent extends Event {\n target: HTMLElement;\n}\n\nconst ModalContext = createContext<Context | undefined>(undefined);\n\nfunction modalReducer(state: State, action: Action) {\n switch (action.type) {\n case \"open_modal\": {\n return { ...state, ...action.modal, isModal: true };\n }\n case \"close_modal\": {\n return { ...state, isModal: false };\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`);\n }\n }\n}\n\nconst defaultState = {\n subtitle: undefined,\n title: undefined,\n content: undefined,\n hasCloseButton: true,\n footer: undefined,\n};\n\nfunction ModalProvider({ children }: ModalProviderProps) {\n const ref = useRef<HTMLDivElement>(null);\n const [state, dispatch] = useReducer(modalReducer, {\n isModal: false,\n ...defaultState,\n });\n\n const openModal = (modal?: Modal) => {\n dispatch({ type: \"open_modal\", modal });\n };\n\n const closeModal = () => {\n dispatch({ type: \"close_modal\" });\n };\n\n useEffect(() => {\n if (state.isModal) {\n const listener = (e: MouseEvent) => {\n if (\n state.isModal &&\n ref.current &&\n !ref.current.contains(e.target as Node)\n ) {\n closeModal();\n }\n };\n\n document.addEventListener(\"mousedown\", listener);\n return () => {\n document.removeEventListener(\"mousedown\", listener);\n };\n }\n }, [closeModal]);\n\n return (\n <ModalContext.Provider\n value={{\n state,\n openModal,\n closeModal,\n }}\n >\n {children}\n {state.isModal && (\n <Modal\n modalref={ref}\n title={state.title}\n footer={state.footer}\n handleClose={closeModal}\n subtitle={state.subtitle}\n >\n {state.content}\n </Modal>\n )}\n </ModalContext.Provider>\n );\n}\n\nfunction useModal({}: UseModalProps = {}) {\n const context = useContext(ModalContext);\n\n if (context === undefined) {\n throw new Error(\"useModal must be used within a ModalProvider\");\n }\n\n return context;\n}\n\nexport { ModalContext, ModalProvider, useModal };\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import "./index.css";
|
|
2
|
+
import { AccordionContent as AccordionContentProps } from "./index.types";
|
|
3
|
+
export declare const AccordionContent: ({ children, label, toggle, }: AccordionContentProps) => false | "" | import("react/jsx-runtime").JSX.Element | undefined;
|
|
4
|
+
export default AccordionContent;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { ButtonAsButton, ButtonAsLink } from "../button/index.types";
|
|
3
|
+
export interface Accordion {
|
|
4
|
+
/**
|
|
5
|
+
* Accordion children
|
|
6
|
+
*/
|
|
7
|
+
children: ReactNode | ReactNode[];
|
|
8
|
+
/**
|
|
9
|
+
* Expand all items
|
|
10
|
+
*/
|
|
11
|
+
expanded: "all" | "none" | "custom";
|
|
12
|
+
}
|
|
13
|
+
export interface ToggleArray {
|
|
14
|
+
[key: string]: {
|
|
15
|
+
depth: number;
|
|
16
|
+
isToggle: boolean;
|
|
17
|
+
paddingLeft?: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface AccordionItem {
|
|
21
|
+
children: ReactNode | ReactNode[];
|
|
22
|
+
label?: string;
|
|
23
|
+
isExpanded?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export type AccordionButton = ButtonAsButton & ButtonAsLink & {
|
|
26
|
+
is?: "button" | "link";
|
|
27
|
+
label?: string;
|
|
28
|
+
toggle?: ToggleArray;
|
|
29
|
+
};
|
|
30
|
+
export interface AccordionContent {
|
|
31
|
+
children: ReactNode | ReactNode[];
|
|
32
|
+
label?: string;
|
|
33
|
+
toggle?: ToggleArray;
|
|
34
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { ButtonAsButton, ButtonAsLink } from "./index.types";
|
|
3
|
+
import "./index.css";
|
|
4
|
+
export declare function Button({ children, className, icon, isNewWindow, mode, size, as, CustomAnchor, ...rest }: ButtonAsButton | ButtonAsLink): JSX.Element;
|
|
5
|
+
export default Button;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StoryObj, Meta } from "@storybook/react";
|
|
2
|
+
import { Button } from "./index";
|
|
3
|
+
declare const meta: Meta<typeof Button>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Button>;
|
|
6
|
+
export declare const Primary: Story;
|
|
7
|
+
export declare const Secondary: Story;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
type Mode = "primary" | "secondary" | "icon";
|
|
3
|
+
type Size = "small" | "medium" | "large";
|
|
4
|
+
export type ButtonAsButton = Base & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, keyof Base> & {
|
|
5
|
+
as?: "button";
|
|
6
|
+
};
|
|
7
|
+
export type ButtonAsLink = Base & Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, keyof Base> & {
|
|
8
|
+
as?: "link";
|
|
9
|
+
};
|
|
10
|
+
export interface Base {
|
|
11
|
+
/**
|
|
12
|
+
* What to put inside the button (string or html elements)
|
|
13
|
+
*/
|
|
14
|
+
children?: JSX.Element | string;
|
|
15
|
+
/**
|
|
16
|
+
* Custom css class name
|
|
17
|
+
*/
|
|
18
|
+
className?: string;
|
|
19
|
+
/**
|
|
20
|
+
* If you want to add an icon image next to the children. Needs to be an react html element.
|
|
21
|
+
*/
|
|
22
|
+
icon?: JSX.Element;
|
|
23
|
+
/**
|
|
24
|
+
* If you want to open a new window on the browser when you click the button. Only applies to html anchor elements.
|
|
25
|
+
*/
|
|
26
|
+
isNewWindow?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Css mode used to style the button.
|
|
29
|
+
*/
|
|
30
|
+
mode?: Mode;
|
|
31
|
+
/**
|
|
32
|
+
* Button size.
|
|
33
|
+
*/
|
|
34
|
+
size?: Size;
|
|
35
|
+
/**
|
|
36
|
+
* Button type.
|
|
37
|
+
*/
|
|
38
|
+
as?: "button" | "link";
|
|
39
|
+
CustomAnchor?: React.ComponentClass<any>;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { Form } from "./index";
|
|
3
|
+
declare const meta: Meta<typeof Form>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Form>;
|
|
6
|
+
export declare const InsertForm: Story;
|
|
7
|
+
export declare const UpdateForm: Story;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Dispatch, JSXElementConstructor, ReactElement, ReactNode, SetStateAction } from "react";
|
|
2
|
+
import { FieldError, FieldErrorsImpl, FieldValues, FormState, Merge } from "react-hook-form";
|
|
3
|
+
import { Input } from "../input/index.types";
|
|
4
|
+
import { TextArea } from "../text-area/index.types";
|
|
5
|
+
import { Select } from "../select/index.types";
|
|
6
|
+
export interface Form {
|
|
7
|
+
/**
|
|
8
|
+
* Custom css class name.
|
|
9
|
+
*/
|
|
10
|
+
className?: string;
|
|
11
|
+
children?: ReactNode | ReactNode[];
|
|
12
|
+
onSubmit: (data: FieldValues, setResult: SetResult) => void;
|
|
13
|
+
submitButton?: {
|
|
14
|
+
label: string;
|
|
15
|
+
};
|
|
16
|
+
initialState?: FormState<FieldValues>;
|
|
17
|
+
}
|
|
18
|
+
export interface ReactNodeControlled extends ReactElement<any, string | JSXElementConstructor<any>> {
|
|
19
|
+
props: ControlledInput;
|
|
20
|
+
}
|
|
21
|
+
export type ControlledInput = Input & TextArea & {
|
|
22
|
+
name: string;
|
|
23
|
+
error: string;
|
|
24
|
+
};
|
|
25
|
+
export type SetResult = Dispatch<SetStateAction<{
|
|
26
|
+
message?: string;
|
|
27
|
+
isSuccess: boolean;
|
|
28
|
+
}>>;
|
|
29
|
+
export interface FormInputs extends Input {
|
|
30
|
+
name: string;
|
|
31
|
+
isRequired?: boolean;
|
|
32
|
+
error?: {
|
|
33
|
+
message?: string | false | FieldError | Merge<FieldError, FieldErrorsImpl<any>> | undefined;
|
|
34
|
+
is?: boolean;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface FormSelect extends Select {
|
|
38
|
+
name: string;
|
|
39
|
+
isRequired?: boolean;
|
|
40
|
+
error?: {
|
|
41
|
+
message?: string | false | FieldError | Merge<FieldError, FieldErrorsImpl<any>> | undefined;
|
|
42
|
+
is?: boolean;
|
|
43
|
+
};
|
|
44
|
+
fieldsToReset?: string[];
|
|
45
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Input as InputProps } from "./index.types";
|
|
2
|
+
import "./index.css";
|
|
3
|
+
export declare function Input({ inputClassName, classNameGroup, error, inputRef, styleGroup, placeholder, label, labelClass, icon, ...rest }: InputProps): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default Input;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { Input } from "./index";
|
|
3
|
+
declare const meta: Meta<typeof Input>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Input>;
|
|
6
|
+
export declare const Primary: Story;
|
|
7
|
+
export declare const Error: Story;
|
|
8
|
+
export declare const Search: Story;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { dataTheme } from "data-theme";
|
|
2
|
+
import { CSSProperties, ReactNode, Ref } from "react";
|
|
3
|
+
import { FieldError, FieldErrorsImpl, Merge } from "react-hook-form";
|
|
4
|
+
export interface Input extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
5
|
+
/**
|
|
6
|
+
* Custom css class name.
|
|
7
|
+
*/
|
|
8
|
+
inputClassName?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Custom css class name for group wrapper.
|
|
11
|
+
*/
|
|
12
|
+
classNameGroup?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Data theme for the html. `${themes}`
|
|
15
|
+
*/
|
|
16
|
+
paletteTheme?: dataTheme;
|
|
17
|
+
/**
|
|
18
|
+
* Error message to show when input has an error.
|
|
19
|
+
*/
|
|
20
|
+
error?: {
|
|
21
|
+
message?: string | false | FieldError | Merge<FieldError, FieldErrorsImpl<any>> | undefined;
|
|
22
|
+
is?: boolean;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Ref react elemnt to use
|
|
26
|
+
*/
|
|
27
|
+
inputRef?: Ref<HTMLInputElement>;
|
|
28
|
+
/**
|
|
29
|
+
* Style input group wrapper
|
|
30
|
+
*/
|
|
31
|
+
styleGroup?: CSSProperties;
|
|
32
|
+
isRequired?: boolean;
|
|
33
|
+
label?: string;
|
|
34
|
+
labelClass?: string;
|
|
35
|
+
icon?: {
|
|
36
|
+
className?: string;
|
|
37
|
+
element?: ReactNode;
|
|
38
|
+
position?: "right" | "left";
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface Modal {
|
|
3
|
+
/**
|
|
4
|
+
* Children
|
|
5
|
+
*/
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Modal footer
|
|
9
|
+
*/
|
|
10
|
+
footer?: React.ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Close click function
|
|
13
|
+
*/
|
|
14
|
+
handleClose?: any;
|
|
15
|
+
/**
|
|
16
|
+
* Modal close button
|
|
17
|
+
*/
|
|
18
|
+
hasCloseButton?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Modal body ref
|
|
21
|
+
*/
|
|
22
|
+
modalref?: React.LegacyRef<HTMLDivElement>;
|
|
23
|
+
/**
|
|
24
|
+
* Subtitle of the modal
|
|
25
|
+
*/
|
|
26
|
+
subtitle?: React.ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* Title of the modal
|
|
29
|
+
*/
|
|
30
|
+
title?: React.ReactNode;
|
|
31
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Select as SelectProps } from "./index.types";
|
|
2
|
+
import "./index.css";
|
|
3
|
+
export declare function Select({ inputClassName, classNameGroup, options, styleGroup, defaultValue, setFormSelected, clearError, resetForm, onFormBlur, handleSelect, ...rest }: SelectProps): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export default Select;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { Select } from "./index";
|
|
3
|
+
declare const meta: Meta<typeof Select>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof Select>;
|
|
6
|
+
export declare const Primary: Story;
|
|
7
|
+
export declare const Error: Story;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CSSProperties } from "react";
|
|
2
|
+
import { dataTheme } from "data-theme";
|
|
3
|
+
export interface Select extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
4
|
+
/**
|
|
5
|
+
* Custom css class name.
|
|
6
|
+
*/
|
|
7
|
+
inputClassName?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Custom css class name for group wrapper.
|
|
10
|
+
*/
|
|
11
|
+
classNameGroup?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Data theme for the html. `${themes}`
|
|
14
|
+
*/
|
|
15
|
+
paletteTheme?: dataTheme;
|
|
16
|
+
/**
|
|
17
|
+
* Error message to show when input has an error.
|
|
18
|
+
*/
|
|
19
|
+
options?: string[];
|
|
20
|
+
/**
|
|
21
|
+
* Style input group wrapper
|
|
22
|
+
*/
|
|
23
|
+
styleGroup?: CSSProperties;
|
|
24
|
+
defaultValue?: string;
|
|
25
|
+
setFormSelected?: any;
|
|
26
|
+
clearError?: any;
|
|
27
|
+
resetForm?: any;
|
|
28
|
+
onFormBlur?: any;
|
|
29
|
+
handleSelect?: any;
|
|
30
|
+
}
|