@driveflux/ui 1.0.0-next.0

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.
Files changed (108) hide show
  1. package/.eslintrc.json +3 -0
  2. package/.swcrc +14 -0
  3. package/.turbo/turbo-build.log +6 -0
  4. package/CHANGELOG.md +12 -0
  5. package/dist/chakra.d.ts +2 -0
  6. package/dist/chakra.d.ts.map +1 -0
  7. package/dist/chakra.js +1 -0
  8. package/dist/cjs/chakra.js +18 -0
  9. package/dist/cjs/index.js +18 -0
  10. package/dist/cjs/modal/ModalProvider.js +254 -0
  11. package/dist/cjs/modal/components/EnhancedModalCustomWrapper.js +139 -0
  12. package/dist/cjs/modal/components/EnhancedModalFooter.js +167 -0
  13. package/dist/cjs/modal/components/MinimalModalContent.js +94 -0
  14. package/dist/cjs/modal/components/StandardModalContent.js +387 -0
  15. package/dist/cjs/modal/context.js +20 -0
  16. package/dist/cjs/modal/index.js +48 -0
  17. package/dist/cjs/modal/use-enhanced-modal.js +15 -0
  18. package/dist/cjs/package.json +3 -0
  19. package/dist/cjs/theme/colors.js +140 -0
  20. package/dist/cjs/theme/index.js +18 -0
  21. package/dist/cjs/toast/index.js +19 -0
  22. package/dist/cjs/toast/use-toast-result.js +255 -0
  23. package/dist/cjs/types.js +4 -0
  24. package/dist/cjs/utils/accessors.js +61 -0
  25. package/dist/cjs/utils/index.js +19 -0
  26. package/dist/cjs/utils/react.js +94 -0
  27. package/dist/index.d.ts +2 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +1 -0
  30. package/dist/modal/ModalProvider.d.ts +4 -0
  31. package/dist/modal/ModalProvider.d.ts.map +1 -0
  32. package/dist/modal/ModalProvider.js +239 -0
  33. package/dist/modal/components/EnhancedModalCustomWrapper.d.ts +9 -0
  34. package/dist/modal/components/EnhancedModalCustomWrapper.d.ts.map +1 -0
  35. package/dist/modal/components/EnhancedModalCustomWrapper.js +124 -0
  36. package/dist/modal/components/EnhancedModalFooter.d.ts +12 -0
  37. package/dist/modal/components/EnhancedModalFooter.d.ts.map +1 -0
  38. package/dist/modal/components/EnhancedModalFooter.js +157 -0
  39. package/dist/modal/components/MinimalModalContent.d.ts +11 -0
  40. package/dist/modal/components/MinimalModalContent.d.ts.map +1 -0
  41. package/dist/modal/components/MinimalModalContent.js +84 -0
  42. package/dist/modal/components/StandardModalContent.d.ts +11 -0
  43. package/dist/modal/components/StandardModalContent.d.ts.map +1 -0
  44. package/dist/modal/components/StandardModalContent.js +377 -0
  45. package/dist/modal/context.d.ts +62 -0
  46. package/dist/modal/context.d.ts.map +1 -0
  47. package/dist/modal/context.js +10 -0
  48. package/dist/modal/index.d.ts +7 -0
  49. package/dist/modal/index.d.ts.map +1 -0
  50. package/dist/modal/index.js +6 -0
  51. package/dist/modal/use-enhanced-modal.d.ts +3 -0
  52. package/dist/modal/use-enhanced-modal.d.ts.map +1 -0
  53. package/dist/modal/use-enhanced-modal.js +5 -0
  54. package/dist/theme/colors.d.ts +148 -0
  55. package/dist/theme/colors.d.ts.map +1 -0
  56. package/dist/theme/colors.js +130 -0
  57. package/dist/theme/index.d.ts +2 -0
  58. package/dist/theme/index.d.ts.map +1 -0
  59. package/dist/theme/index.js +1 -0
  60. package/dist/toast/index.d.ts +2 -0
  61. package/dist/toast/index.d.ts.map +1 -0
  62. package/dist/toast/index.js +1 -0
  63. package/dist/toast/use-toast-result.d.ts +30 -0
  64. package/dist/toast/use-toast-result.d.ts.map +1 -0
  65. package/dist/toast/use-toast-result.js +232 -0
  66. package/dist/types.d.ts +5 -0
  67. package/dist/types.d.ts.map +1 -0
  68. package/dist/types.js +1 -0
  69. package/dist/utils/accessors.d.ts +24 -0
  70. package/dist/utils/accessors.d.ts.map +1 -0
  71. package/dist/utils/accessors.js +28 -0
  72. package/dist/utils/index.d.ts +3 -0
  73. package/dist/utils/index.d.ts.map +1 -0
  74. package/dist/utils/index.js +2 -0
  75. package/dist/utils/react.d.ts +5 -0
  76. package/dist/utils/react.d.ts.map +1 -0
  77. package/dist/utils/react.js +32 -0
  78. package/index.cjs +1 -0
  79. package/index.d.ts +1 -0
  80. package/modal.cjs +1 -0
  81. package/modal.d.ts +1 -0
  82. package/package.json +68 -0
  83. package/src/chakra.ts +1 -0
  84. package/src/index.ts +1 -0
  85. package/src/modal/ModalProvider.tsx +142 -0
  86. package/src/modal/components/EnhancedModalCustomWrapper.tsx +39 -0
  87. package/src/modal/components/EnhancedModalFooter.tsx +51 -0
  88. package/src/modal/components/MinimalModalContent.tsx +24 -0
  89. package/src/modal/components/StandardModalContent.tsx +65 -0
  90. package/src/modal/context.tsx +81 -0
  91. package/src/modal/index.ts +7 -0
  92. package/src/modal/use-enhanced-modal.ts +7 -0
  93. package/src/theme/colors.ts +171 -0
  94. package/src/theme/index.ts +1 -0
  95. package/src/toast/index.ts +3 -0
  96. package/src/toast/use-toast-result.tsx +169 -0
  97. package/src/types.ts +22 -0
  98. package/src/utils/accessors.ts +64 -0
  99. package/src/utils/index.ts +2 -0
  100. package/src/utils/react.ts +32 -0
  101. package/theme.cjs +1 -0
  102. package/theme.d.ts +1 -0
  103. package/toast.cjs +1 -0
  104. package/toast.d.ts +1 -0
  105. package/tsconfig.json +14 -0
  106. package/tsconfig.tsbuildinfo +1 -0
  107. package/utils.cjs +1 -0
  108. package/utils.d.ts +1 -0
@@ -0,0 +1,142 @@
1
+ import isEmpty from 'lodash/isEmpty.js'
2
+ import { useCallback, useMemo, useState, type FC, type PropsWithChildren } from 'react'
3
+ import {
4
+ Modal,
5
+ ModalContent,
6
+ ModalOverlay,
7
+ useDisclosure
8
+ } from '../chakra.js'
9
+ import { isReactNode } from '../utils/react.js'
10
+ import MinimalModalContent from './components/MinimalModalContent.js'
11
+ import StandardModalContent from './components/StandardModalContent.js'
12
+ import { ModalContext, type ModalCloseOptions, type ModalContentConfig, type ModalContextState, type ModalControlProps, type ModalOpenOptions, type ModalOptions, type ModalUpdateOptions } from './context.js'
13
+
14
+ const getModalComponent = (modalContentConfig: ModalContentConfig, controls: ModalControlProps) => {
15
+ const otherProps = modalContentConfig.contentProps || {}
16
+ switch (modalContentConfig.type) {
17
+ case 'standard': {
18
+ return <StandardModalContent controls={controls} modalContentConfig={modalContentConfig} {...otherProps} />
19
+
20
+ }
21
+ case 'minimal':{
22
+ return <MinimalModalContent controls={controls} modalContentConfig={modalContentConfig} {...otherProps} />
23
+ }
24
+ case 'custom':
25
+ return isReactNode(modalContentConfig.content) ? modalContentConfig.content : <modalContentConfig.content open={open} close={close} {...otherProps} />
26
+ }
27
+ }
28
+
29
+ const isModalOpenOptions = (options?: ModalOpenOptions | ModalContentConfig): options is ModalOpenOptions => {
30
+ return (options as ModalOpenOptions)?.modalContentConfig !== undefined
31
+ }
32
+
33
+ const ModalProvider: FC<PropsWithChildren> = ({ children }) => {
34
+ const { isOpen, onClose: onCloseRaw, onOpen: onOpenRaw } = useDisclosure()
35
+ const [modalContentConfig, setModalContentConfig] = useState<ModalContentConfig | undefined>()
36
+ const [modalOptions, setModalOptions] = useState<ModalOptions | undefined>()
37
+ const [modalState, setModalState] = useState<any>()
38
+
39
+ const onClose = useCallback((options?: ModalCloseOptions) => {
40
+ onCloseRaw()
41
+
42
+ if (modalOptions?.onClose) {
43
+ modalOptions.onClose()
44
+ }
45
+
46
+ if (!options?.keepModalContentConfig) {
47
+ setModalContentConfig(undefined)
48
+ setModalOptions(undefined)
49
+ setModalState(undefined)
50
+ }
51
+ }, [modalOptions])
52
+
53
+ const onOpen = useCallback((modalContentConfigOrOptions?: ModalOpenOptions | ModalContentConfig) => {
54
+ let newModalContentConfig: ModalContentConfig | undefined
55
+ let newModalSate: any
56
+ let newModalOptions: ModalOptions | undefined
57
+ // Here, we know we're passing the global options object
58
+ if (isModalOpenOptions(modalContentConfigOrOptions)) {
59
+ newModalContentConfig = modalContentConfigOrOptions.modalContentConfig
60
+ newModalSate = modalContentConfigOrOptions.modalContentConfig.initialModalState
61
+ newModalOptions = modalContentConfigOrOptions
62
+ }
63
+ // we will set the state only when we're passing the modal content config. Maybe the modal
64
+ // was closed with keepModalContentConfig set to true, so we don't want to override the state
65
+ else if (modalContentConfigOrOptions) {
66
+ newModalContentConfig = modalContentConfigOrOptions
67
+ newModalSate = undefined
68
+ newModalOptions = undefined
69
+ }
70
+
71
+ setModalContentConfig((oldModalContentConfig) => {
72
+ const modalContentConfig = newModalContentConfig || oldModalContentConfig
73
+
74
+ if(modalContentConfig) {
75
+ onOpenRaw()
76
+ }
77
+
78
+ return modalContentConfig
79
+ })
80
+
81
+ setModalState(newModalSate)
82
+ setModalOptions(newModalOptions)
83
+ }, [])
84
+
85
+ const update = useCallback((updateOptions: ModalUpdateOptions) => {
86
+ if (!updateOptions || isEmpty(updateOptions)) {
87
+ return
88
+ }
89
+
90
+ setModalContentConfig((oldModalContentConfig) => {
91
+ if (!oldModalContentConfig) {
92
+ return oldModalContentConfig
93
+ }
94
+
95
+ return {
96
+ ...oldModalContentConfig,
97
+ ...updateOptions.modalContentConfig,
98
+ contentProps: {
99
+ ...updateOptions.contentProps,
100
+ ...oldModalContentConfig.contentProps,
101
+ }
102
+ }
103
+ })
104
+ }, [])
105
+
106
+ const state = useMemo((): ModalContextState => {
107
+ return {
108
+ isOpen,
109
+ // @ts-expect-error
110
+ open: onOpen,
111
+ close: onClose,
112
+ update,
113
+ modalState,
114
+ setModalState,
115
+ }
116
+ }, [onOpen, onClose, update, modalState, setModalState, isOpen])
117
+
118
+ const content = useMemo(() => modalContentConfig && getModalComponent(modalContentConfig, state), [modalContentConfig])
119
+
120
+ return (
121
+ <ModalContext.Provider value={state}>
122
+ {children}
123
+ {/* The modal is already rendered in a portal */}
124
+ <Modal
125
+ scrollBehavior={'inside'}
126
+ isCentered
127
+ blockScrollOnMount
128
+ closeOnOverlayClick
129
+ size={ modalContentConfig?.size || { base: 'full', md: '3xl' }}
130
+ isOpen={isOpen}
131
+ onClose={onClose}
132
+ >
133
+ <ModalOverlay />
134
+ <ModalContent borderRadius={0}>
135
+ {content}
136
+ </ModalContent>
137
+ </Modal>
138
+ </ModalContext.Provider>
139
+ )
140
+ }
141
+
142
+ export default ModalProvider
@@ -0,0 +1,39 @@
1
+ import IconClose from '@driveflux/icons/icons/IconClose'
2
+ import type { FC, PropsWithChildren, ReactNode } from 'react'
3
+ import { Button, HStack, Heading, Stack, type StackProps } from '../../chakra.js'
4
+ import { useEnhancedModal } from '../use-enhanced-modal.js'
5
+
6
+ type Props = {
7
+ title?: ReactNode
8
+ isCloseHidden?: boolean
9
+ } & StackProps
10
+
11
+ const EnhancedModalCustomWrapper: FC<PropsWithChildren<Props>> = ({ title, children, isCloseHidden, ...props }) => {
12
+ const { close } = useEnhancedModal()
13
+
14
+ return (
15
+ <Stack overflowY={'scroll'} px={'32px'} py={'24px'} spacing={'18px'} {...props}>
16
+ <HStack justifyContent={'space-between'}>
17
+ <Heading fontSize={'18px'} textTransform={'uppercase'}>
18
+ {title}
19
+ </Heading>
20
+ {!isCloseHidden && (
21
+ <Button
22
+ p={0}
23
+ variant={'unstyled'}
24
+ border={0}
25
+ w={'fit-content'}
26
+ onClick={() => {
27
+ close()
28
+ }}
29
+ >
30
+ <IconClose size={'28px'} />
31
+ </Button>
32
+ )}
33
+ </HStack>
34
+ {children}
35
+ </Stack>
36
+ )
37
+ }
38
+
39
+ export default EnhancedModalCustomWrapper
@@ -0,0 +1,51 @@
1
+ import { Trans } from '@lingui/macro'
2
+ import { FC, ReactNode } from 'react'
3
+ import { Button, ButtonProps, Stack, StackProps } from '../../chakra.js'
4
+ import { colors } from '../../theme/colors.js'
5
+ import { useEnhancedModal } from '../use-enhanced-modal.js'
6
+
7
+ type Props = {
8
+ sticky?: boolean
9
+ cancelProps?: ButtonProps
10
+ okProps?: ButtonProps
11
+ children?: ReactNode
12
+ suffix?: ReactNode
13
+ } & StackProps
14
+
15
+ const EnhancedModalFooter: FC<Props> = ({ sticky, cancelProps, okProps, children, suffix, ...props }) => {
16
+ const { close } = useEnhancedModal()
17
+
18
+ return (
19
+ <Stack
20
+ pos={{ base: 'absolute', md: sticky ? 'absolute' : 'static' }}
21
+ bottom={0}
22
+ left={0}
23
+ right={0}
24
+ py={'32px'}
25
+ px={{ base: '32px', md: sticky ? '32px' : '0' }}
26
+ borderTop={sticky ? `1px solid ${colors.primary2}` : ''}
27
+ background={colors.white}
28
+ spacing={'24px'}
29
+ zIndex={'sticky'}
30
+ {...props}
31
+ >
32
+ {children ? (
33
+ <Stack direction={{ base: 'column-reverse', md: 'row' }} spacing={'24px'}>
34
+ {children}
35
+ </Stack>
36
+ ) : (
37
+ <Stack direction={{ base: 'column-reverse', md: 'row' }} spacing={'24px'}>
38
+ <Button w={'full'} variant={'outline'} onClick={() => close()} {...cancelProps} fontSize={'10px'} fontWeight={'bold'} letterSpacing={'3px'}>
39
+ {cancelProps?.children ? cancelProps.children : <Trans>Cancel</Trans>}
40
+ </Button>
41
+ <Button w={'full'} {...okProps} fontSize={'10px'} fontWeight={'bold'} letterSpacing={'3px'}>
42
+ {okProps?.children ? okProps.children : <Trans>Confirm</Trans>}
43
+ </Button>
44
+ </Stack>
45
+ )}
46
+ {suffix}
47
+ </Stack>
48
+ )
49
+ }
50
+
51
+ export default EnhancedModalFooter
@@ -0,0 +1,24 @@
1
+ import { Fragment, type FC } from 'react'
2
+ import { Box, ModalBody, ModalCloseButton, ModalHeader } from '../../chakra.js'
3
+ import { isReactNode } from '../../utils/react.js'
4
+ import type { ModalContentConfig, ModalControlProps } from '../context.js'
5
+
6
+ type Props = {
7
+ controls: ModalControlProps
8
+ modalContentConfig: Extract<ModalContentConfig, { type: 'minimal' }>
9
+ }
10
+
11
+ const MinimalModalContent: FC<Props> = ({ controls: { open, close }, modalContentConfig, ...props }) => {
12
+ const Content = modalContentConfig.content
13
+
14
+ const Wrapper = modalContentConfig.noModalBody ? Fragment : ModalBody
15
+ return (
16
+ <>
17
+ {modalContentConfig.title ? <ModalHeader>{modalContentConfig.title}</ModalHeader> : <Box h={'32px'} />}
18
+ <ModalCloseButton />
19
+ <Wrapper>{isReactNode(Content) ? Content : <Content close={close} open={open} {...props} />}</Wrapper>
20
+ </>
21
+ )
22
+ }
23
+
24
+ export default MinimalModalContent
@@ -0,0 +1,65 @@
1
+ import { t } from '@lingui/macro'
2
+ import { useCallback, useState, type FC } from 'react'
3
+ import {
4
+ Button,
5
+ HStack,
6
+ ModalBody,
7
+ ModalCloseButton,
8
+ ModalFooter,
9
+ ModalHeader
10
+ } from '../../chakra.js'
11
+ import { isReactNode } from '../../utils/react.js'
12
+ import type { ModalContentConfig, ModalControlProps } from '../context.js'
13
+ import { useEnhancedModal } from '../use-enhanced-modal.js'
14
+
15
+ type Props = {
16
+ controls: ModalControlProps
17
+ modalContentConfig: Extract<ModalContentConfig, { type: 'standard' }>
18
+ }
19
+
20
+ const StandardModalContent: FC<Props> = ({ controls: { open, close }, modalContentConfig, ...props }) => {
21
+ const Content = modalContentConfig.content
22
+ const [isSaving, setIsSaving] = useState(false)
23
+ const { modalState } = useEnhancedModal()
24
+
25
+ const handleOK = useCallback(async () => {
26
+ setIsSaving(true)
27
+
28
+ if (modalContentConfig.onOk) {
29
+ try {
30
+ await modalContentConfig.onOk(modalState)
31
+ } finally {
32
+ setIsSaving(false)
33
+ }
34
+ }
35
+ close()
36
+ }, [modalContentConfig.onOk, close, modalState])
37
+
38
+ const handleCancel = useCallback(async () => {
39
+ if (modalContentConfig.onCancel) {
40
+ await modalContentConfig.onCancel()
41
+ }
42
+ close()
43
+ }, [modalContentConfig.onCancel, close])
44
+
45
+ return (
46
+ <>
47
+ <ModalHeader>{modalContentConfig.title}</ModalHeader>
48
+ <ModalCloseButton />
49
+ <ModalBody>
50
+ {isReactNode(Content) ? Content : <Content open={open} close={close} {...props} />}
51
+ </ModalBody>
52
+ <ModalFooter>
53
+ <HStack w={'full'} spacing={'6'}>
54
+ <Button isDisabled={isSaving} w={'full'} variant={'outline'} onClick={handleCancel}>{modalContentConfig.cancelText || t`Close`}</Button>
55
+ <Button isDisabled={modalContentConfig.isOkDisabled} isLoading={isSaving || modalContentConfig.isOkLoading} w={'full'} variant={'solid'} onClick={handleOK} colorScheme={modalContentConfig.okColorScheme}>
56
+ {modalContentConfig.okText || t`Ok`}
57
+ </Button>
58
+ </HStack>
59
+ </ModalFooter>
60
+ </>
61
+ )
62
+
63
+ }
64
+
65
+ export default StandardModalContent
@@ -0,0 +1,81 @@
1
+ import { createContext, type Dispatch, type FC, type ReactNode, type SetStateAction } from 'react'
2
+ import type { UnionToIntersection } from 'type-fest'
3
+ import type { ModalProps } from '../chakra.js'
4
+
5
+ export type ModalControlProps = {
6
+ open: () => void
7
+ close: () => void
8
+ }
9
+
10
+ export type StandardModaContentConfig<MS = any> = {
11
+ type: 'standard'
12
+ title?: string
13
+ okText?: string
14
+ okColorScheme?: string
15
+ onOk?: (modalState: MS) => void | Promise<void>
16
+ isOkDisabled?: boolean
17
+ isOkLoading?: boolean
18
+ cancelText?: string
19
+ onCancel?: () => void | Promise<void>
20
+ }
21
+
22
+ export type CustomModalContentConfig = {
23
+ type: 'custom'
24
+ }
25
+
26
+ export type MinimalModalContentConfig = {
27
+ type: 'minimal'
28
+ title?: string
29
+ noModalBody?: boolean
30
+ }
31
+
32
+ type CleanupModalContentConfig<T> = {
33
+ [K in keyof T as Exclude<K, 'type'>]: T[K]
34
+ };
35
+
36
+ type ModalContentConfigUnion<MS = any> = StandardModaContentConfig<MS> | CustomModalContentConfig | MinimalModalContentConfig
37
+ type ModalContentConfigIntersection<MS = any> = UnionToIntersection<CleanupModalContentConfig<ModalContentConfigUnion<MS>>>
38
+
39
+ export type ModalContentConfig<P extends object = {}, MS = any> = {
40
+ contentProps?: P
41
+ initialModalState?: MS
42
+ content: FC<Partial<ModalControlProps> & Omit<P, keyof ModalControlProps>> | ReactNode
43
+ size?: ModalProps['size']
44
+ } & ModalContentConfigUnion<MS>
45
+
46
+ export type ModalOptions = {
47
+ onClose?: () => void
48
+ }
49
+
50
+ export interface ModalOpenOptions<ExtraProps extends object = {}, MS = any> extends ModalOptions {
51
+ modalContentConfig: ModalContentConfig<ExtraProps, MS>
52
+ }
53
+
54
+ export interface ModalUpdateOptions<ExtraProps extends object = Record<string, any>, MS = any> {
55
+ contentProps?: ExtraProps
56
+ state?: MS
57
+ modalContentConfig?: ModalContentConfigIntersection<MS>
58
+ }
59
+
60
+ export interface ModalCloseOptions {
61
+ keepModalContentConfig?: boolean
62
+ }
63
+ export interface ModalContextState<ExtraProps extends object = any, MS = any> {
64
+ isOpen: boolean
65
+ open: <P extends ExtraProps, IMS extends MS = any>(options?: ModalOpenOptions<P, IMS> | ModalContentConfig<P, IMS>) => void
66
+ close: (options?: ModalCloseOptions) => void
67
+ update: (options: ModalUpdateOptions<ExtraProps>) => void
68
+ modalState?: MS
69
+ setModalState: Dispatch<SetStateAction<MS>>
70
+ }
71
+
72
+ const initialState: ModalContextState = {
73
+ isOpen: true,
74
+ open: () => {},
75
+ close: () => {},
76
+ update: () => {},
77
+ modalState: undefined,
78
+ setModalState: () => {},
79
+ }
80
+
81
+ export const ModalContext = createContext<ModalContextState>(initialState)
@@ -0,0 +1,7 @@
1
+ export { default as ModalProvider } from './ModalProvider.js'
2
+ export { default as EnhancedModalCustomWrapper } from './components/EnhancedModalCustomWrapper.js'
3
+ export { default as EnhancedModalFooter } from './components/EnhancedModalFooter.js'
4
+ export { default as MinimalModalContent } from './components/MinimalModalContent.js'
5
+ export * from './context.js'
6
+ export * from './use-enhanced-modal.js'
7
+
@@ -0,0 +1,7 @@
1
+ import { useContext, type Context } from 'react'
2
+ import type { ModalContextState } from './context.js'
3
+ import { ModalContext } from './context.js'
4
+
5
+ export const useEnhancedModal = <P extends object = any, MS = any>(): ModalContextState<P, MS> => {
6
+ return useContext<ModalContextState<P, MS>>(ModalContext as unknown as Context<ModalContextState<P, MS>>)
7
+ }
@@ -0,0 +1,171 @@
1
+ export const colors = {
2
+ /**
3
+ * #EFEFF0 Light Gray
4
+ */
5
+ primary1: '#EFEFF0',
6
+
7
+ /**
8
+ * #CACACA Gray
9
+ */
10
+ primary2: '#CACACA',
11
+
12
+ /**
13
+ * #585858 Dark Gray
14
+ */
15
+ primary3: '#585858',
16
+
17
+ /**
18
+ * #191919 Soft Black
19
+ */
20
+ primary4: '#191919',
21
+
22
+ /**
23
+ * #E55867 Red
24
+ */
25
+ accent4: '#E55867',
26
+
27
+ /**
28
+ * #ADE0EE Light Blue
29
+ */
30
+ links2: '#ADE0EE',
31
+
32
+ /**
33
+ * #50C8E8 Blue
34
+ */
35
+ links: '#50C8E8',
36
+
37
+ /**
38
+ * #E24657 Red
39
+ */
40
+ alert4: '#E24657',
41
+
42
+ /**
43
+ * #E24657 Red
44
+ */
45
+ danger: '#E24657',
46
+
47
+ /**
48
+ * #F4B25C Yellow
49
+ */
50
+ warning4: '#F4B25C',
51
+
52
+ /**
53
+ * #4FD9C2 Green
54
+ */
55
+ success4: '#4FD9C2',
56
+
57
+ /**
58
+ * #4FD9C2 Green
59
+ */
60
+ green: '#4FD9C2',
61
+
62
+ /**
63
+ * #3BD5BC Green
64
+ */
65
+ // green: '#3BD5BC',
66
+
67
+ /**
68
+ * #000000 Black
69
+ */
70
+ black: '#000000',
71
+
72
+ /**
73
+ * #ffffff White
74
+ */
75
+ white: '#ffffff',
76
+
77
+ /**
78
+ * #E6E6E6 Light Gray
79
+ */
80
+ whiteHover: '#E6E6E6',
81
+
82
+ /**
83
+ * #F4F4F4 Light Gray
84
+ */
85
+ placeholder: '#F4F4F4',
86
+
87
+ /**
88
+ * #F9F7D7 Light Yellow
89
+ */
90
+ highlight: '#F9F7D7',
91
+
92
+ primary: {
93
+ 25: '#fafafa',
94
+ 50: '#d6f5f0',
95
+ 100: '#98e6d6',
96
+ 200: '#191919',
97
+ 300: '#191919',
98
+ 400: '#3bd5bb',
99
+ 500: '#000000',
100
+ 600: '#000000',
101
+ 700: '#000000',
102
+ 800: '#000000',
103
+ 900: '#000000'
104
+ },
105
+
106
+ success: {
107
+ 50: '#d8f7f2',
108
+ 100: '#98e6d6',
109
+ 200: '#3bd5bc',
110
+ 300: '#4FD9C2',
111
+ 400: '#3bd5bb',
112
+ 500: '#3bd5bb',
113
+ 600: '#2EA692',
114
+ 700: '#00825c',
115
+ 800: '#00724d',
116
+ 900: '#005530'
117
+ },
118
+
119
+ accent: {
120
+ 50: '#fceaee',
121
+ 100: '#f8cad3',
122
+ 200: '#E55867',
123
+ 300: '#E55867',
124
+ 400: '#E24657',
125
+ 500: '#E24657',
126
+ 600: '#d8253f',
127
+ 700: '#c61a38',
128
+ 800: '#b91231',
129
+ 900: '#aa0026'
130
+ },
131
+
132
+ warning: {
133
+ 50: '#FDF0DE',
134
+ 100: '#F4B25C',
135
+ 200: '#F4B25C',
136
+ 300: '#F4B25C',
137
+ 400: '#F4B25C',
138
+ 500: '#F4B25C',
139
+ 600: '#BF7F2C',
140
+ 700: '#F4B25C',
141
+ 800: '#F4B25C',
142
+ 900: '#F4B25C'
143
+ },
144
+
145
+ info: {
146
+ 25: '#50C8E81A',
147
+ 50: '#CDF1FA',
148
+ 100: '#50C8E8',
149
+ 200: '#50C8E8',
150
+ 300: '#50C8E8',
151
+ 400: '#50C8E8',
152
+ 500: '#50C8E8',
153
+ 600: '#3EA5C0',
154
+ 700: '#50C8E8',
155
+ 800: '#50C8E8',
156
+ 900: '#50C8E8'
157
+ },
158
+
159
+ alert: {
160
+ 50: '#E24657',
161
+ 100: '#E24657',
162
+ 200: '#E24657',
163
+ 300: '#E24657',
164
+ 400: '#E24657',
165
+ 500: '#E24657',
166
+ 600: '#E24657',
167
+ 700: '#E24657',
168
+ 800: '#E24657',
169
+ 900: '#E24657',
170
+ }
171
+ }
@@ -0,0 +1 @@
1
+ export * from './colors'
@@ -0,0 +1,3 @@
1
+ export * from './use-toast-result.js';
2
+
3
+ // TODO: Add the ToastBox component here