diff --git a/src/components/ui/Separator/Separator.tsx b/src/components/ui/Separator/Separator.tsx index d4da64a61..b5e2e86be 100644 --- a/src/components/ui/Separator/Separator.tsx +++ b/src/components/ui/Separator/Separator.tsx @@ -1,6 +1,7 @@ import React from 'react'; import { customClassSwitcher } from '~/core'; import { clsx } from 'clsx'; +import { useComposeAttributes, useCreateDataAttribute } from '~/core/hooks/createDataAttribute'; const COMPONENT_NAME = 'Separator'; export type SeparatorProps = { @@ -8,18 +9,17 @@ export type SeparatorProps = { className?: string; customRootClass?: string; color?: string; + size?: string; props?: any; } & React.ComponentProps<'div'>; -const Separator = ({ orientation = 'horizontal', className, customRootClass, color = '', ...props } : SeparatorProps) => { +const Separator = ({ orientation = 'horizontal', className, customRootClass, color = '', size = '', ...props } : SeparatorProps) => { const rootClass = customClassSwitcher(customRootClass, COMPONENT_NAME); const orientationClass = orientation === 'vertical' ? `${rootClass}-vertical` : `${rootClass}-horizontal`; - const data_attributes: Record = {}; - - if (color) { - data_attributes['data-accent-color'] = color; - } - return
; + const dataAttributes = useCreateDataAttribute('separator', { size }); + const accentAttributes = useCreateDataAttribute('accent', { color }); + const composedAttributes = useComposeAttributes(dataAttributes(), accentAttributes()) + return
; }; Separator.displayName = COMPONENT_NAME; diff --git a/src/components/ui/Separator/stories/Separator.stories.tsx b/src/components/ui/Separator/stories/Separator.stories.tsx index a323e5b5d..b567f9d35 100644 --- a/src/components/ui/Separator/stories/Separator.stories.tsx +++ b/src/components/ui/Separator/stories/Separator.stories.tsx @@ -3,6 +3,8 @@ import Separator, { SeparatorProps } from '../Separator'; import SandboxEditor from '~/components/tools/SandboxEditor/SandboxEditor'; const textClasses = 'text-gray-950 text-sm font-light'; +const Sizes = ['small', 'medium', 'large', 'x-large']; + // More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export export default { title: 'Components/Separator', @@ -34,3 +36,56 @@ export const Color = { color: 'blue' } }; + +export const Size = () => { + return +
+

Separator Size

+
+
+
+ {Sizes.map((size, index) => { + return
+ +
+ })} +
+
+
; +}; + +const HorizontalTemplate = () => { + return ( + +
+

Horizontal Separator

+
Step 1
+ +
Step 2
+ +
Step 3
+
+
+ ) +} + +export const Horizontal = HorizontalTemplate.bind({}) + +const VerticalTemplate = () => { + return ( + +
+

Vertical Separator

+
+
Home
+ +
About
+ +
Contact
+
+
+
+ ) +} + +export const Vertical = VerticalTemplate.bind({}) diff --git a/styles/themes/components/separator.scss b/styles/themes/components/separator.scss index 1ed9315b5..700862f55 100644 --- a/styles/themes/components/separator.scss +++ b/styles/themes/components/separator.scss @@ -2,6 +2,22 @@ .rad-ui-separator { background-color: var(--rad-ui-color-gray-600); align-self: stretch; + + &[data-separator-size="small"]{ + max-width: 24rem; + } + + &[data-separator-size="medium"]{ + max-width: 28rem; + } + + &[data-separator-size="large"]{ + max-width: 32rem; + } + + &[data-separator-size="x-large"]{ + max-width: 36rem; + } } .rad-ui-separator[data-accent-color] {