diff --git a/app/components/MobileMenu.tsx b/app/components/MobileMenu.tsx index f0edcc44..eec7889a 100644 --- a/app/components/MobileMenu.tsx +++ b/app/components/MobileMenu.tsx @@ -12,6 +12,7 @@ import { AccordionIcon, AccordionPanel, AccordionTitle, + Button, Drawer, DrawerContent, DrawerOverlay, @@ -78,11 +79,11 @@ const MobileMenu = () => { @@ -91,11 +92,9 @@ const MobileMenu = () => { setShowDrawer(!showDrawer)} isOpen={showDrawer} position="right"> - + diff --git a/app/docs/components/datePicker/variant/DateRangePicker.tsx b/app/docs/components/datePicker/variant/DateRangePicker.tsx index 5681e9e4..3ba3ef63 100644 --- a/app/docs/components/datePicker/variant/DateRangePicker.tsx +++ b/app/docs/components/datePicker/variant/DateRangePicker.tsx @@ -44,7 +44,7 @@ export const DatePickerComponent = () => { @@ -49,7 +49,7 @@ export const DrawerComponent = () => { Elevate your web projects with Keep React's 40+ customizable components. Access open-source resources for efficient development and bring your ideas to life with ease.

- diff --git a/app/docs/components/drawer/variant/DrawerPosition.tsx b/app/docs/components/drawer/variant/DrawerPosition.tsx index 99082e67..fe0505dd 100644 --- a/app/docs/components/drawer/variant/DrawerPosition.tsx +++ b/app/docs/components/drawer/variant/DrawerPosition.tsx @@ -30,7 +30,7 @@ const DrawerPosition = () => { Elevate your web projects with Keep React's 40+ customizable components. Access open-source resources for efficient development and bring your ideas to life with ease.

- @@ -73,7 +73,7 @@ export const DrawerComponent = () => { Elevate your web projects with Keep React's 40+ customizable components. Access open-source resources for efficient development and bring your ideas to life with ease.

- diff --git a/app/docs/components/dropdown/variant/CustomDropdown.tsx b/app/docs/components/dropdown/variant/CustomDropdown.tsx index 3646583a..7a96ddb5 100644 --- a/app/docs/components/dropdown/variant/CustomDropdown.tsx +++ b/app/docs/components/dropdown/variant/CustomDropdown.tsx @@ -1,4 +1,4 @@ -import { Avatar, Button, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from '../../../../src' +import { Avatar, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from '../../../../src' const dropdownData = [ { @@ -36,11 +36,7 @@ const dropdownData = [ const CustomDropdown = () => { return ( - - - + Dropdown {dropdownData.map((data) => ( @@ -61,16 +57,12 @@ const CustomDropdown = () => { } const CustomDropdownCode = ` -import { Avatar, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList ,Button } from 'keep-react' +import { Avatar, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from 'keep-react' export const DropdownComponent = () => { return ( - - - + Dropdown {dropdownData.map((data) => ( diff --git a/app/docs/components/dropdown/variant/DefaultDropdown.tsx b/app/docs/components/dropdown/variant/DefaultDropdown.tsx index 0f13a8c6..5d2896a7 100644 --- a/app/docs/components/dropdown/variant/DefaultDropdown.tsx +++ b/app/docs/components/dropdown/variant/DefaultDropdown.tsx @@ -1,13 +1,9 @@ -import { Button, Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from '../../../../src' +import { Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from '../../../../src' const DefaultDropdown = () => { return ( - - - + Dropdown Contacts @@ -26,16 +22,12 @@ const DefaultDropdown = () => { } const DefaultDropdownCode = ` -import { Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList, Button } from 'keep-react' +import { Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from 'keep-react' export const DropdownComponent = () => { return ( - - - + Dropdown Contacts diff --git a/app/docs/components/dropdown/variant/DropdownTrigger.tsx b/app/docs/components/dropdown/variant/DropdownTrigger.tsx index 3a641eb9..4dd2ab57 100644 --- a/app/docs/components/dropdown/variant/DropdownTrigger.tsx +++ b/app/docs/components/dropdown/variant/DropdownTrigger.tsx @@ -1,15 +1,11 @@ 'use client' import { ChartPieSlice, Copy, Pen, Phone, SignOut, UserCircle, Users } from 'phosphor-react' -import { Button, Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from '../../../../src' +import { Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from '../../../../src' const DropdownTrigger = () => { return ( - - - + Dropdown @@ -51,16 +47,12 @@ const DropdownTrigger = () => { const DropdownTriggerCode = ` 'use client' import { ChartPieSlice, Copy, Pen, Phone, SignOut, UserCircle, Users } from 'phosphor-react' -import { Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList, Button } from 'keep-react' +import { Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from 'keep-react' export const DropdownComponent = () => { return ( - - - + Dropdown diff --git a/app/docs/components/dropdown/variant/DropdownWithIcon.tsx b/app/docs/components/dropdown/variant/DropdownWithIcon.tsx index ee005af4..738c0e83 100644 --- a/app/docs/components/dropdown/variant/DropdownWithIcon.tsx +++ b/app/docs/components/dropdown/variant/DropdownWithIcon.tsx @@ -1,15 +1,11 @@ 'use client' import { ChartPieSlice, Copy, Pen, Phone, SignOut, UserCircle, Users } from 'phosphor-react' -import { Button, Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from '../../../../src' +import { Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList } from '../../../../src' const DropdownWithIcon = () => { return ( - - - + Dropdown @@ -51,16 +47,12 @@ const DropdownWithIcon = () => { const DropdownWithIconCode = ` 'use client' import { ChartPieSlice, Copy, Pen, Phone, SignOut, UserCircle, Users } from 'phosphor-react' -import { Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList, Button} from 'keep-react' +import { Divider, Dropdown, DropdownAction, DropdownContent, DropdownItem, DropdownList} from 'keep-react' export const DropdownComponent = () => { return ( - - - + Dropdown diff --git a/app/docs/components/sidebar/variant/SidebarWithIcon.tsx b/app/docs/components/sidebar/variant/SidebarWithIcon.tsx index 3e25d4e4..5d1cec88 100644 --- a/app/docs/components/sidebar/variant/SidebarWithIcon.tsx +++ b/app/docs/components/sidebar/variant/SidebarWithIcon.tsx @@ -38,7 +38,9 @@ const SidebarWithIcon = () => { - Home + + Home + @@ -46,7 +48,9 @@ const SidebarWithIcon = () => { - Dashboard + + Dashboard + @@ -54,7 +58,9 @@ const SidebarWithIcon = () => { - Projects + + Projects + @@ -62,7 +68,9 @@ const SidebarWithIcon = () => { - Tasks + + Tasks + @@ -70,7 +78,9 @@ const SidebarWithIcon = () => { - Reporting + + Reporting + @@ -78,7 +88,9 @@ const SidebarWithIcon = () => { - Users + + Users + @@ -86,7 +98,9 @@ const SidebarWithIcon = () => { - Support + + Support + @@ -94,7 +108,9 @@ const SidebarWithIcon = () => { - Settings + + Settings + @@ -105,7 +121,9 @@ const SidebarWithIcon = () => { - Log Out + + Log Out + @@ -154,7 +172,7 @@ export const SidebarComponent = () => { - Home + Home @@ -162,7 +180,7 @@ export const SidebarComponent = () => { - Dashboard + Dashboard @@ -170,7 +188,7 @@ export const SidebarComponent = () => { - Projects + Projects @@ -178,7 +196,7 @@ export const SidebarComponent = () => { - Tasks + Tasks @@ -186,7 +204,7 @@ export const SidebarComponent = () => { - Reporting + Reporting @@ -194,7 +212,7 @@ export const SidebarComponent = () => { - Users + Users @@ -202,7 +220,7 @@ export const SidebarComponent = () => { - Support + Support @@ -210,7 +228,7 @@ export const SidebarComponent = () => { - Settings + Settings @@ -221,7 +239,7 @@ export const SidebarComponent = () => { - Log Out + Log Out diff --git a/app/docs/components/tooltip/variant/DefaultTooltip.tsx b/app/docs/components/tooltip/variant/DefaultTooltip.tsx index 3d8eb5a2..0ddd3a40 100644 --- a/app/docs/components/tooltip/variant/DefaultTooltip.tsx +++ b/app/docs/components/tooltip/variant/DefaultTooltip.tsx @@ -6,7 +6,7 @@ const DefaultTooltip = () => { Tooltip -

Tooltips - Title here

+

Tooltips - Title here

@@ -21,7 +21,7 @@ export const TooltipComponent = () => { Tooltip -

Tooltips - Title here

+

Tooltips - Title here

) diff --git a/app/docs/components/tooltip/variant/TooltipPlacement.tsx b/app/docs/components/tooltip/variant/TooltipPlacement.tsx index c70d31c5..0b2ddedc 100644 --- a/app/docs/components/tooltip/variant/TooltipPlacement.tsx +++ b/app/docs/components/tooltip/variant/TooltipPlacement.tsx @@ -7,7 +7,7 @@ const TooltipPlacement = () => { Tooltip -

Tooltips - Title here

+

Tooltips - Title here

))} @@ -25,7 +25,7 @@ export const TooltipComponent = () => { Tooltip -

Tooltips - Title here

+

Tooltips - Title here

))} diff --git a/app/docs/components/tooltip/variant/TooltipTriggering.tsx b/app/docs/components/tooltip/variant/TooltipTriggering.tsx index ebbdf4fd..dc5f4555 100644 --- a/app/docs/components/tooltip/variant/TooltipTriggering.tsx +++ b/app/docs/components/tooltip/variant/TooltipTriggering.tsx @@ -7,7 +7,7 @@ const TooltipTriggering = () => { {trigger} -

Tooltips - Title here

+

Tooltips - Title here

))} @@ -25,7 +25,7 @@ export const TooltipComponent = () => { {trigger} -

Tooltips - Title here

+

Tooltips - Title here

))} diff --git a/app/docs/components/tooltip/variant/TooltipWithLargeText.tsx b/app/docs/components/tooltip/variant/TooltipWithLargeText.tsx index 306adf01..89cd3f32 100644 --- a/app/docs/components/tooltip/variant/TooltipWithLargeText.tsx +++ b/app/docs/components/tooltip/variant/TooltipWithLargeText.tsx @@ -6,8 +6,8 @@ const TooltipWithLargeText = () => { Tooltip -

Tooltips - Title here

-

+

Tooltips - Title here

+

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

@@ -24,8 +24,8 @@ export const TooltipComponent = () => { Tooltip -

Tooltips - Title here

-

+

Tooltips - Title here

+

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

diff --git a/app/docs/getting-started/dark-mode/Code/index.ts b/app/docs/getting-started/dark-mode/Code/index.ts index d15d5162..e8b9a7cd 100644 --- a/app/docs/getting-started/dark-mode/Code/index.ts +++ b/app/docs/getting-started/dark-mode/Code/index.ts @@ -182,7 +182,7 @@ const ThemeSwitcher = () => { }, []) return client ? ( - + + )} */} ) }) diff --git a/app/src/components/Checkbox/theme.ts b/app/src/components/Checkbox/theme.ts index ba4a66ec..4dd1e009 100644 --- a/app/src/components/Checkbox/theme.ts +++ b/app/src/components/Checkbox/theme.ts @@ -8,6 +8,8 @@ interface KeepCheckboxTheme { base: string rounded: string circle: string + checked: string + dashed: string } } } @@ -17,11 +19,15 @@ export const checkboxTheme: KeepCheckboxTheme = { base: 'peer absolute h-5 w-5 cursor-pointer opacity-0 peer-checked:before:h-2.5 peer-checked:before:w-2.5', }, button: { - base: 'flex h-5 w-5 items-center justify-center rounded border fill-white peer-checked:bg-metal-900 peer-disabled:opacity-50', + base: 'flex h-5 w-5 items-center justify-center rounded border fill-white peer-disabled:opacity-50', shape: { base: 'pointer-events-none relative flex h-5 w-5 cursor-pointer items-center justify-center border border-metal-200 dark:border-metal-25 opacity-100 peer-checked:border-metal-900 dark:peer-checked:border-metal-25 peer-checked:before:h-2.5 peer-checked:before:w-2.5 peer-checked:before:bg-metal-900 dark:peer-checked:before:bg-metal-25 peer-disabled:opacity-50', rounded: 'before:rounded-sm rounded', circle: 'before:rounded-full rounded-full', + checked: + 'pointer-events-none relative flex h-5 w-5 cursor-pointer items-center justify-center border border-metal-200 dark:border-metal-25 opacity-100 peer-checked:border-metal-900 dark:peer-checked:border-metal-25 peer-checked:before:content-checkedLight dark:peer-checked:before:content-checkedDark peer-disabled:opacity-50', + dashed: + 'pointer-events-none relative flex h-5 w-5 cursor-pointer items-center justify-center border border-metal-200 dark:border-metal-25 opacity-100 peer-checked:border-metal-900 dark:peer-checked:border-metal-25 peer-checked:before:content-dashedLight dark:peer-checked:before:content-dashedDark peer-disabled:opacity-50', }, }, } diff --git a/app/src/components/DatePicker/DatePicker.tsx b/app/src/components/DatePicker/DatePicker.tsx index 825f4abc..4725e2b6 100644 --- a/app/src/components/DatePicker/DatePicker.tsx +++ b/app/src/components/DatePicker/DatePicker.tsx @@ -10,14 +10,14 @@ const DatePicker = ({ className, classNames, showOutsideDays = true, ...props }: .day-range-end)]:rounded-r-xl [&:has(>.day-range-start)]:rounded-l-xl first:[&:has([aria-selected])]:rounded-l-xl last:[&:has([aria-selected])]:rounded-r-xl' : '[&:has([aria-selected])]:rounded-xl', ), - day: 'h-10 w-10 p-0 font-normal aria-selected:opacity-100 inline-flex items-center justify-center whitespace-nowrap rounded-lg text-body-4 font-medium ring-offset-metal-50` transition-colors focus-visible:outline-none focus-visible:ring focus-visible:ring-metal-50 focus-visible:ring-offset-1 disabled:pointer-events-none day-outside disabled:opacity-50 hover:bg-metal-50 dark:hover:bg-metal-800', + day: 'h-10 w-10 p-0 font-normal aria-selected:opacity-100 inline-flex items-center justify-center whitespace-nowrap rounded-lg text-body-4 font-medium ring-offset-metal-50 transition-colors focus-visible:outline-none focus-visible:ring focus-visible:ring-metal-50 focus-visible:ring-offset-1 disabled:pointer-events-none day-outside disabled:opacity-50 hover:bg-metal-50 dark:hover:bg-metal-800 text-metal-900 dark:text-white dark:aria-selected:text-metal-900', day_range_end: 'day-range-end', day_range_start: 'day-range-start', day_selected: - 'bg-metal-900 dark:bg-metal-800 text-white hover:bg-metal-800 hover:text-white focus:bg-metal-900 focus:text-white', - day_today: 'bg-metal-50 dark:bg-metal-800 dark:text-white text-metal-900', + 'bg-metal-900 dark:bg-white text-white hover:bg-metal-800 dark:hover:bg-white dark:text-metal-900 hover:text-white focus:bg-metal-900 focus:text-white ', + day_today: 'bg-metal-50 dark:bg-metal-800 dark:text-white text-metal-900 dark:aria-selected:text-metal-900', day_outside: - 'day-outside text-metal-300 aria-selected:text-metal-400 aria-selected:bg-metal-100 aria-selected:text-metal-400 dark:text-metal-600 dark:aria-selected:text-metal-400 dark:aria-selected:bg-metal-700', + 'day-outside !text-metal-300 aria-selected:text-metal-400 aria-selected:bg-metal-100 aria-selected:text-metal-400 dark:!text-metal-600 dark:aria-selected:!text-metal-300 dark:aria-selected:bg-metal-700', day_disabled: 'text-metal-100 opacity-50', - day_range_middle: 'aria-selected:bg-metal-50 aria-selected:text-metal-500 dark:aria-selected:bg-metal-700', + day_range_middle: + 'aria-selected:bg-metal-50 aria-selected:text-metal-500 dark:aria-selected:bg-metal-700 dark:aria-selected:!text-white', day_hidden: 'invisible', ...classNames, }} components={{ - IconLeft: () => ( - - - - ), - IconRight: () => ( - - - - ), + IconLeft: LeftIcon, + IconRight: RightIcon, }} {...props} /> @@ -64,4 +57,19 @@ const DatePicker = ({ className, classNames, showOutsideDays = true, ...props }: } DatePicker.displayName = 'DatePicker' +const RightIcon = () => { + return ( + + + + ) +} +const LeftIcon = () => { + return ( + + + + ) +} + export { DatePicker } diff --git a/app/src/components/Dropdown/Action.tsx b/app/src/components/Dropdown/Action.tsx index 5bd846a6..02f446bb 100644 --- a/app/src/components/Dropdown/Action.tsx +++ b/app/src/components/Dropdown/Action.tsx @@ -2,8 +2,8 @@ import { useMergeRefs } from '@floating-ui/react' import { HTMLAttributes, cloneElement, forwardRef, isValidElement } from 'react' import { cn } from '../../helpers/cn' +import { Button } from '../Button' import { useDropdownContext } from './Context' -import { dropdownTheme } from './theme' export interface DropdownActionProps extends HTMLAttributes { asChild?: boolean @@ -28,9 +28,14 @@ export const DropdownAction = forwardRef ) } return ( - + ) }, ) diff --git a/app/src/components/Dropdown/theme.ts b/app/src/components/Dropdown/theme.ts index 2aac36d4..af99fe72 100644 --- a/app/src/components/Dropdown/theme.ts +++ b/app/src/components/Dropdown/theme.ts @@ -1,12 +1,9 @@ interface DropdownInterface { - action: string root: string item: string } export const dropdownTheme: DropdownInterface = { - action: - 'inline-block cursor-pointer select-none rounded-lg border border-metal-200 dark:border-metal-900 dark:bg-metal-900 bg-metal-900 py-2 px-3.5 text-body-5 font-normal text-white', root: 'w-[16rem] rounded-xl border border-metal-100 dark:border-metal-800 bg-white dark:bg-metal-900 p-5 z-50 outline-none', item: 'flex cursor-pointer items-center gap-2 rounded p-2 text-body-4 font-medium text-metal-600 hover:bg-metal-25 dark:text-white dark:hover:bg-metal-800 transition-all duration-200', } diff --git a/app/src/components/Tooltip/Action.tsx b/app/src/components/Tooltip/Action.tsx index e70f5c5e..4081c79f 100644 --- a/app/src/components/Tooltip/Action.tsx +++ b/app/src/components/Tooltip/Action.tsx @@ -1,7 +1,7 @@ 'use client' import { useMergeRefs } from '@floating-ui/react' import { HTMLAttributes, cloneElement, forwardRef, isValidElement } from 'react' -import { cn } from '../../helpers/cn' +import { Button } from '../Button' import { useTooltipContext } from './Context' export interface TooltipActionProps extends HTMLAttributes { @@ -27,12 +27,9 @@ export const TooltipAction = forwardRef( ) } return ( - + ) }, ) diff --git a/app/src/components/Tooltip/Content.tsx b/app/src/components/Tooltip/Content.tsx index d680aa33..ed95bbf3 100644 --- a/app/src/components/Tooltip/Content.tsx +++ b/app/src/components/Tooltip/Content.tsx @@ -15,11 +15,25 @@ export interface floatingArrow extends HTMLAttributes { strokeWidth?: number children?: ReactNode className?: string + arrowClassName?: string } export const TooltipContent = forwardRef( ( - { children, className, width, height, tipRadius, staticOffset, fill = '#1C222B', stroke, strokeWidth, d, ...props }, + { + children, + className, + width, + height, + tipRadius, + staticOffset, + fill = '#1C222B', + stroke, + strokeWidth, + d, + arrowClassName, + ...props + }, ref: Ref, ) => { const { refs, floatingStyles, arrowRef, context, getFloatingProps, isOpen, showArrow } = useTooltipContext() @@ -27,7 +41,10 @@ export const TooltipContent = forwardRef( isOpen && (
@@ -40,9 +57,9 @@ export const TooltipContent = forwardRef( tipRadius={tipRadius} staticOffset={staticOffset} d={d} - fill={fill} stroke={stroke} strokeWidth={strokeWidth} + className={cn('fill-metal-900 dark:fill-white', arrowClassName)} /> )} {children} diff --git a/app/src/theme/keep-preset.ts b/app/src/theme/keep-preset.ts index b0c4ca52..c93652e8 100644 --- a/app/src/theme/keep-preset.ts +++ b/app/src/theme/keep-preset.ts @@ -214,7 +214,11 @@ module.exports = { 'keep-slide-up-back': 'slide-up-back 0.4s', }, content: { - img: 'url("/images/avatar/verify.svg")', + img: 'url("https://res.cloudinary.com/arif5577/image/upload/v1719144077/verify_uaqa85.svg")', + checkedLight: 'url("https://res.cloudinary.com/arif5577/image/upload/v1719146139/checkedLight_xwegqy.svg")', + checkedDark: 'url("https://res.cloudinary.com/arif5577/image/upload/v1719146139/checkedDark_g8gcjk.svg")', + dashedLight: 'url("https://res.cloudinary.com/arif5577/image/upload/v1719146139/dashedLight_whvevx.svg")', + dashedDark: 'url("https://res.cloudinary.com/arif5577/image/upload/v1719146139/dashedDark_vx3paq.svg")', }, }, }, diff --git a/data/blogs/keep-react-v1.4.0.md b/data/blogs/keep-react-v1.4.0.md index 6832c83e..20834aee 100644 --- a/data/blogs/keep-react-v1.4.0.md +++ b/data/blogs/keep-react-v1.4.0.md @@ -1,6 +1,6 @@ --- title: 'Keep React V1.4.0' -date: 'June 14, 2024' +date: 'June 24, 2024' description: 'Most of the component structures are changed but the UI looks the same as before. In v1.3.0, we used components with a (.) syntax, but now we can use components with detailed JSX tags like `AlertContainer`.' author: Md Ariful Islam slug: keep-react-v1.4.0 diff --git a/public/images/icon/checkedDark.svg b/public/images/icon/checkedDark.svg new file mode 100644 index 00000000..2fae91d5 --- /dev/null +++ b/public/images/icon/checkedDark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/icon/checkedLight.svg b/public/images/icon/checkedLight.svg new file mode 100644 index 00000000..844bad53 --- /dev/null +++ b/public/images/icon/checkedLight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/icon/dashedDark.svg b/public/images/icon/dashedDark.svg new file mode 100644 index 00000000..542e0d6d --- /dev/null +++ b/public/images/icon/dashedDark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/images/icon/dashedLight.svg b/public/images/icon/dashedLight.svg new file mode 100644 index 00000000..8c77a83a --- /dev/null +++ b/public/images/icon/dashedLight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/routes/routes.ts b/routes/routes.ts index ae1590fd..1ae5c111 100644 --- a/routes/routes.ts +++ b/routes/routes.ts @@ -465,6 +465,12 @@ export const quickAccessRoute: routerPath[] = [ href: '/docs/layout/column', target: '_self', }, + { + id: generatedID(), + name: 'Dark Mode', + href: '/docs/getting-started/dark-mode', + target: '_self', + }, ] export const layoutRoutes: routerPath[] = [