Skip to content

Commit

Permalink
refactor: segmented-control
Browse files Browse the repository at this point in the history
- rename SegmentedControlSegment to SegmentedControlItem
- remove placeholder slot
- move indicator definition to root
  • Loading branch information
malangcat committed Feb 6, 2025
1 parent 0fd12aa commit 319ef61
Show file tree
Hide file tree
Showing 41 changed files with 612 additions and 437 deletions.
6 changes: 3 additions & 3 deletions docs/components/example/demo/article-detail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
import { Stack, Columns, Column, Box } from "seed-design/ui/layout";
import { Text } from "seed-design/ui/text";
import { Badge } from "seed-design/ui/badge";
import { SegmentedControl, SegmentedControlSegment } from "seed-design/ui/segmented-control";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";
import { Callout } from "seed-design/ui/callout";
import { TextField, TextFieldTextarea } from "seed-design/ui/text-field";
import { ErrorState } from "seed-design/ui/error-state";
Expand Down Expand Up @@ -98,9 +98,9 @@ const DemoArticleDetail: ActivityComponentType<"demo/article-detail"> = ({
/>
<SegmentedControl defaultValue={SEGMENTS[0].value} style={{ width: "100%" }}>
{SEGMENTS.map((tab) => (
<SegmentedControlSegment key={tab.value} value={tab.value}>
<SegmentedControlItem key={tab.value} value={tab.value}>
{tab.label}
</SegmentedControlSegment>
</SegmentedControlItem>
))}
</SegmentedControl>
<Box paddingY="s3">
Expand Down
6 changes: 3 additions & 3 deletions docs/components/example/segmented-control-disabled.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { SegmentedControl, SegmentedControlSegment } from "seed-design/ui/segmented-control";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";

export default function SegmentedControlPreview() {
return (
<SegmentedControl defaultValue="Hot" disabled aria-label="Sort by">
<SegmentedControlSegment value="Hot">Hot</SegmentedControlSegment>
<SegmentedControlSegment value="New">New</SegmentedControlSegment>
<SegmentedControlItem value="Hot">Hot</SegmentedControlItem>
<SegmentedControlItem value="New">New</SegmentedControlItem>
</SegmentedControl>
);
}
6 changes: 3 additions & 3 deletions docs/components/example/segmented-control-fixed-width.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { SegmentedControl, SegmentedControlSegment } from "seed-design/ui/segmented-control";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";

export default function SegmentedControlFixedWidth() {
return (
<SegmentedControl defaultValue="new" style={{ width: "600px" }} aria-label="Sort by">
<SegmentedControlSegment value="new">New</SegmentedControlSegment>
<SegmentedControlSegment value="hot">Hot</SegmentedControlSegment>
<SegmentedControlItem value="new">New</SegmentedControlItem>
<SegmentedControlItem value="hot">Hot</SegmentedControlItem>
</SegmentedControl>
);
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { SegmentedControl, SegmentedControlSegment } from "seed-design/ui/segmented-control";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";

export default function SegmentedControlLongLabelFixedWidth() {
return (
<SegmentedControl defaultValue="price" style={{ width: "600px" }} aria-label="정렬 기준">
<SegmentedControlSegment value="price">가격 높은 순</SegmentedControlSegment>
<SegmentedControlSegment value="discount">할인율 높은 순</SegmentedControlSegment>
<SegmentedControlSegment value="popularity">인기 많은 순</SegmentedControlSegment>
<SegmentedControlItem value="price">가격 높은 순</SegmentedControlItem>
<SegmentedControlItem value="discount">할인율 높은 순</SegmentedControlItem>
<SegmentedControlItem value="popularity">인기 많은 순</SegmentedControlItem>
</SegmentedControl>
);
}
8 changes: 4 additions & 4 deletions docs/components/example/segmented-control-long-label.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { SegmentedControl, SegmentedControlSegment } from "seed-design/ui/segmented-control";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";

export default function SegmentedControlLongLabel() {
return (
<SegmentedControl defaultValue="price" aria-label="정렬 기준">
<SegmentedControlSegment value="price">가격 높은 순</SegmentedControlSegment>
<SegmentedControlSegment value="discount">할인율 높은 순</SegmentedControlSegment>
<SegmentedControlSegment value="popularity">인기 많은 순</SegmentedControlSegment>
<SegmentedControlItem value="price">가격 높은 순</SegmentedControlItem>
<SegmentedControlItem value="discount">할인율 높은 순</SegmentedControlItem>
<SegmentedControlItem value="popularity">인기 많은 순</SegmentedControlItem>
</SegmentedControl>
);
}
6 changes: 3 additions & 3 deletions docs/components/example/segmented-control-preview.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { SegmentedControl, SegmentedControlSegment } from "seed-design/ui/segmented-control";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";

export default function SegmentedControlPreview() {
return (
<SegmentedControl defaultValue="Hot" aria-label="Sort by">
<SegmentedControlSegment value="Hot">Hot</SegmentedControlSegment>
<SegmentedControlSegment value="New">New</SegmentedControlSegment>
<SegmentedControlItem value="Hot">Hot</SegmentedControlItem>
<SegmentedControlItem value="New">New</SegmentedControlItem>
</SegmentedControl>
);
}
6 changes: 3 additions & 3 deletions docs/components/iconography/icon-segmented-control.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"use client";

import { SegmentedControl, SegmentedControlSegment } from "seed-design/ui/segmented-control";
import { SegmentedControl, SegmentedControlItem } from "seed-design/ui/segmented-control";
import { useIcon } from "./icon-context";

export const IconSegmentedControl = () => {
Expand All @@ -13,8 +13,8 @@ export const IconSegmentedControl = () => {
value={iconStyle}
aria-label="Sort by"
>
<SegmentedControlSegment value="monochrome">Monochrome</SegmentedControlSegment>
<SegmentedControlSegment value="multicolor">Multicolor</SegmentedControlSegment>
<SegmentedControlItem value="monochrome">Monochrome</SegmentedControlItem>
<SegmentedControlItem value="multicolor">Multicolor</SegmentedControlItem>
</SegmentedControl>
);
};
6 changes: 3 additions & 3 deletions docs/content/docs/react/components/segmented-control.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,11 @@ description: "이 문서는 정리 중이에요. 문의 내용은 #_design_core

</Callout>

### `SegmentedControlSegment`
### `SegmentedControlItem`

<ReactTypeTable
path="./registry/ui/segmented-control.tsx"
name="SegmentedControlSegmentProps"
name="SegmentedControlItemProps"
/>

## 예제
Expand All @@ -41,7 +41,7 @@ description: "이 문서는 정리 중이에요. 문의 내용은 #_design_core

### 최소 너비보다 넓은 옵션 레이블

Pill 형태의 `SegmentedControlSegment` 한 개는 86px의 최소 너비를 가져요. 제공한 옵션 중 이 너비를 초과하는 옵션이 있다면, 가장 긴 옵션의 너비에 모든 옵션의 너비가 맞춰져요.
Pill 형태의 `SegmentedControlItem` 한 개는 86px의 최소 너비를 가져요. 제공한 옵션 중 이 너비를 초과하는 옵션이 있다면, 가장 긴 옵션의 너비에 모든 옵션의 너비가 맞춰져요.

<ComponentExample name="segmented-control-long-label" />

Expand Down
107 changes: 107 additions & 0 deletions docs/public/rootage-next/components/segmented-control-item.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
{
"kind": "ComponentSpec",
"metadata": {
"id": "segmented-control-item",
"name": "Segmented Control Item"
},
"data": {
"id": "segmented-control-item",
"name": "Segmented Control Item",
"definitions": [
{
"variants": {},
"definitions": [
{
"states": [
"enabled"
],
"slots": {
"root": {
"height": {
"type": "dimension",
"value": "$dimension.s8"
},
"cornerRadius": {
"type": "dimension",
"value": "$radius.full"
},
"paddingX": {
"type": "dimension",
"value": "$dimension.s4"
},
"minWidth": {
"type": "dimension",
"value": {
"value": 86,
"unit": "px"
}
}
},
"label": {
"fontSize": {
"type": "dimension",
"value": "$font-size.s5"
},
"lineHeight": {
"type": "dimension",
"value": "$line-height.s5"
},
"fontWeight": {
"type": "number",
"value": "$font-weight.medium"
},
"color": {
"type": "color",
"value": "$color.fg.neutral-muted"
}
}
}
},
{
"states": [
"pressed"
],
"slots": {
"root": {
"color": {
"type": "color",
"value": "$color.bg.neutral-weak-pressed"
}
}
}
},
{
"states": [
"selected"
],
"slots": {
"label": {
"fontWeight": {
"type": "number",
"value": "$font-weight.bold"
},
"color": {
"type": "color",
"value": "$color.fg.neutral"
}
}
}
},
{
"states": [
"disabled"
],
"slots": {
"label": {
"color": {
"type": "color",
"value": "$color.fg.disabled"
}
}
}
}
]
}
]
}
}
42 changes: 42 additions & 0 deletions docs/public/rootage-next/components/segmented-control.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,48 @@
"type": "color",
"value": "$color.bg.neutral-weak"
}
},
"indicator": {
"color": {
"type": "color",
"value": "$color.bg.layer-default"
},
"cornerRadius": {
"type": "dimension",
"value": "$radius.full"
},
"shadow": {
"type": "shadow",
"value": [
{
"color": "#0000000d",
"offsetX": {
"value": 0,
"unit": "px"
},
"offsetY": {
"value": 1,
"unit": "px"
},
"blur": {
"value": 6,
"unit": "px"
},
"spread": {
"value": 0,
"unit": "px"
}
}
]
},
"transformDuration": {
"type": "duration",
"value": "$duration.s4"
},
"transformTimingFunction": {
"type": "cubicBezier",
"value": "$timing-function.easing"
}
}
}
}
Expand Down
41 changes: 41 additions & 0 deletions docs/public/rootage/components/segmented-control-item.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"kind": "ComponentSpec",
"metadata": {
"id": "segmented-control-item",
"name": "Segmented Control Item"
},
"data": {
"base": {
"enabled": {
"root": {
"height": "$dimension.s8",
"cornerRadius": "$radius.full",
"paddingX": "$dimension.s4",
"minWidth": "86px"
},
"label": {
"fontSize": "$font-size.s5",
"lineHeight": "$line-height.s5",
"fontWeight": "$font-weight.medium",
"color": "$color.fg.neutral-muted"
}
},
"pressed": {
"root": {
"color": "$color.bg.neutral-weak-pressed"
}
},
"selected": {
"label": {
"fontWeight": "$font-weight.bold",
"color": "$color.fg.neutral"
}
},
"disabled": {
"label": {
"color": "$color.fg.disabled"
}
}
}
}
}
18 changes: 18 additions & 0 deletions docs/public/rootage/components/segmented-control.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,24 @@
"padding": "$dimension.s1",
"cornerRadius": "$radius.full",
"color": "$color.bg.neutral-weak"
},
"indicator": {
"color": "$color.bg.layer-default",
"cornerRadius": "$radius.full",
"shadow": {
"type": "shadow",
"value": [
{
"offsetX": "0px",
"offsetY": "1px",
"blur": "6px",
"spread": "0px",
"color": "#0000000d"
}
]
},
"transformDuration": "$duration.s4",
"transformTimingFunction": "$timing-function.easing"
}
}
}
Expand Down
Loading

0 comments on commit 319ef61

Please sign in to comment.