diff --git a/common/changes/pcln-design-system/feat-HTL-111103-drawer-component-additions_2024-11-05-14-34.json b/common/changes/pcln-design-system/feat-HTL-111103-drawer-component-additions_2024-11-05-14-34.json
new file mode 100644
index 000000000..e7073ef55
--- /dev/null
+++ b/common/changes/pcln-design-system/feat-HTL-111103-drawer-component-additions_2024-11-05-14-34.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "pcln-design-system",
+ "comment": "Drawer component custom header onboarding",
+ "type": "minor"
+ }
+ ],
+ "packageName": "pcln-design-system"
+}
\ No newline at end of file
diff --git a/common/changes/pcln-icons/feat-HTL-111103-drawer-component-additions_2024-11-05-14-34.json b/common/changes/pcln-icons/feat-HTL-111103-drawer-component-additions_2024-11-05-14-34.json
new file mode 100644
index 000000000..9f33a5928
--- /dev/null
+++ b/common/changes/pcln-icons/feat-HTL-111103-drawer-component-additions_2024-11-05-14-34.json
@@ -0,0 +1,10 @@
+{
+ "changes": [
+ {
+ "packageName": "pcln-icons",
+ "comment": "",
+ "type": "none"
+ }
+ ],
+ "packageName": "pcln-icons"
+}
\ No newline at end of file
diff --git a/packages/core/src/Drawer/Drawer.stories.tsx b/packages/core/src/Drawer/Drawer.stories.tsx
index c7d790e4e..b324950a7 100644
--- a/packages/core/src/Drawer/Drawer.stories.tsx
+++ b/packages/core/src/Drawer/Drawer.stories.tsx
@@ -1,11 +1,13 @@
import { Box } from '../Box/Box'
import { Flex } from '../Flex/Flex'
-import { Sparkle } from 'pcln-icons'
+import { Sparkle, ArrowLeft } from 'pcln-icons'
import { Drawer } from './Drawer'
import React, { useState } from 'react'
import { Text } from '../Text/Text'
import { Stamp } from '../Stamp/Stamp'
import { ChatMessageContainer } from '../ChatMessageContainer/ChatMessageContainer'
+import { DrawerHandle } from './Drawer.styled'
+import { Button } from '../Button/Button'
function DrawerStory(props) {
const [isOpen, setIsOpen] = useState(true)
@@ -41,6 +43,20 @@ const CustomPennyHeader = (
)
+const NeighborhoodsHeader = (
+
+
+
+
+
+
+
+
+
+)
+
const CustomPennyContent = (
(
{CustomPennyContent}
)
-export const WithCustomHeaderAndContent = (args) => (
+export const WithCustomHeadingAndContent = (args) => (
{CustomPennyContent}
)
+export const WithCustomHeading = (args) => (
+
+)
+
export const WithCloseButton = (args) => (
Drawer Content
diff --git a/packages/core/src/Drawer/Drawer.styled.tsx b/packages/core/src/Drawer/Drawer.styled.tsx
index 4d5a84b50..82fea8118 100644
--- a/packages/core/src/Drawer/Drawer.styled.tsx
+++ b/packages/core/src/Drawer/Drawer.styled.tsx
@@ -7,6 +7,7 @@ import { getPaletteColor } from '../utils'
import { Box } from '../Box/Box'
import { IconButton } from '../IconButton/IconButton'
import { PlacementOptions } from './Drawer'
+import { Absolute } from '../Absolute/Absolute'
const Component = React.forwardRef((props, ref: React.MutableRefObject) => (
@@ -67,3 +68,43 @@ export const HeaderButton = styled(IconButton)`
color: ${getPaletteColor('text.dark')};
}
`
+
+/**
+ * Data below is used for Drawer.stories.tsx
+ */
+export const Handle = styled.div`
+ /* Handle */
+
+ /* Auto layout */
+ display: flex;
+ flex-direction: row;
+ align-items: flex-start;
+ gap: 8px;
+
+ width: 48px;
+ height: 8px;
+
+ /* Background/Tint */
+ background: #d5dce4;
+ box-shadow: inset 0px 2px 2px rgba(0, 0, 0, 0.08);
+ border-radius: 999px;
+
+ /* Inside auto layout */
+ flex: none;
+ order: 0;
+ flex-grow: 0;
+ z-index: 0;
+`
+
+export const HandleContainer = styled(Absolute)`
+ /* Centers the handle wrt parent */
+ transform: translateX(-50%);
+ cursor: grab;
+ left: 50%;
+`
+
+export const DrawerHandle = () => (
+
+
+
+)
diff --git a/packages/core/src/Drawer/Drawer.tsx b/packages/core/src/Drawer/Drawer.tsx
index af3fd1267..e3f931882 100644
--- a/packages/core/src/Drawer/Drawer.tsx
+++ b/packages/core/src/Drawer/Drawer.tsx
@@ -13,8 +13,8 @@ import { theme } from '../theme'
export type PlacementOptions = 'top' | 'bottom' | 'right' | 'left'
export type DrawerProps = SpaceProps &
LayoutProps & {
- children?: string | React.ReactNode
- heading?: string | React.ReactNode
+ children?: React.ReactNode
+ heading?: React.ReactNode
isCollapsed?: boolean
isFloating?: boolean
isMobile?: boolean
diff --git a/packages/icons/src/index.js b/packages/icons/src/index.js
index 9c24adec1..9d20df89d 100644
--- a/packages/icons/src/index.js
+++ b/packages/icons/src/index.js
@@ -34,6 +34,7 @@ export { default as Calendar } from './Calendar.jsx'
export { default as CalendarCheck } from './CalendarCheck.jsx'
export { default as CalendarClock } from './CalendarClock.jsx'
export { default as CallEnd } from './CallEnd.jsx'
+export { default as CallReceive } from './CallReceive.jsx'
export { default as Cancel } from './Cancel.jsx'
export { default as CarAutomatic } from './CarAutomatic.jsx'
export { default as CarCircle } from './CarCircle.jsx'
@@ -197,7 +198,6 @@ export { default as PhoneAgent } from './PhoneAgent.jsx'
export { default as PhoneAgentWithCard } from './PhoneAgentWithCard.jsx'
export { default as PhoneDialPad } from './PhoneDialPad.jsx'
export { default as PhoneForwarded } from './PhoneForwarded.jsx'
-export { default as CallReceive } from './CallReceive.jsx'
export { default as PhoneLog } from './PhoneLog.jsx'
export { default as Picture } from './Picture.jsx'
export { default as PieChart } from './PieChart.jsx'