Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ Source-Available License 1.0을 따른다. compatibility canary는 비공개·
때만 만든다 (명세 §8):
`@devslab/dds-tokens` (✅ 2026-08-13) → `dds-css` v1 인벤토리 (Core 6종 ✅ 2026-08-13, +13종 ✅ 2026-08-15) →
AskLinq 적용 → `dds-icons` (✅ 2026-08-15) → `dds-solid` + `site-kit` → 안드로이드 네이티브 값·테마·모션
(0.6.0, 2026-11-12, Maven Central — 테마·모션·부품·아이콘). 0.7.0(2026-11-13, Maven Central)에서 화면 틀과 `dds-compose-testing` 꾸러미가 생겼다(D-052). RN·Ionic 패키지는 그 제품이 생길 때.
(0.6.0, 2026-11-12, Maven Central — 테마·모션·부품·아이콘). 0.7.0(2026-11-13, Maven Central)에서 화면 틀과 `dds-compose-testing` 꾸러미가 생겼다(D-052). 0.8.0(2026-11-13)에서 `DdsSegmentedControl`이 생겼다. RN·Ionic 패키지는 그 제품이 생길 때.

## 입력·선택·공유 달력 확장

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ Priorities live in [`docs/backlog.md`](docs/backlog.md). Packages are created
only when a consumer exists (spec §8):
`@devslab/dds-tokens` (✅ 2026-08-13) → `dds-css` v1 inventory (Core 6 ✅ 2026-08-13, +13 ✅ 2026-08-15) →
AskLinq adoption → `dds-icons` (✅ 2026-08-15) → `dds-solid` + `site-kit` → native Android values, theme and motion
(0.6.0, 2026-11-12, on Maven Central — theme, motion, components, icons). 0.7.0 (2026-11-13, on Maven Central) adds the screen frame and the `dds-compose-testing` artifact (D-052). RN and Ionic packages only when such a product exists.
(0.6.0, 2026-11-12, on Maven Central — theme, motion, components, icons). 0.7.0 (2026-11-13, on Maven Central) adds the screen frame and the `dds-compose-testing` artifact (D-052). 0.8.0 (2026-11-13) adds `DdsSegmentedControl`. RN and Ionic packages only when such a product exists.

## Input, choice and shared calendar additions

Expand Down
11 changes: 11 additions & 0 deletions android/CHANGELOG.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,17 @@
`kr.devslab:dds-android-tokens`, `kr.devslab:dds-compose`, 그리고 0.7.0부터 `kr.devslab:dds-compose-testing`은 한 버전을 쓰고, 웹 패키지와는
버전이 따로다(D-048). 릴리스는 `android-v<버전>` 태그로 낸다.

## 0.8.0 — 2026-11-13

**새로 생긴 것**

- **`DdsSegmentedControl`, `DdsSegment`** — 몇 개 안 되는 보기 중 하나를 고르는 부품. 웹 SegmentedControl의 터치
크기 그대로다: `bg.subtle` 트랙 + 1dp `border.strong` 선 + 둥글기 8, 안쪽과 칸 사이 2dp, 고른 칸은 `bg.default` 면 +
1dp 선 + 1단계 그림자 + 굵기 600. 트랙 50dp(터치 48 + 선), 칸의 면 44dp, 큰 글자 모드는 터치 56. 내용 폭(기본)은 굵은
폭을 늘 잡아 두어 골라도 이웃이 움직이지 않고, 넘치면 트랙 안에서 넘긴다. `fullWidth`는 폭을 똑같이 나누고 긴 라벨은
말줄임표. 라디오 그룹으로 읽힌다. `label`/`contentDescription`, `error`(선 색 + 문장 + 낭독), `readOnly`, `enabled`, 칸별
`enabled`. 가이드 §12. 첫 소비자는 Qooroo의 명함 종류 토글이다 — 앱의 사본 `DdsStyleSegmented`를 이것으로 바꾼다.

## 0.7.0 — 2026-11-13

화면 틀(D-052). 정산나우가 펼친 폰에서 찾았다. 화면마다 시작선이 달랐고(187, 147, 127dp, 또는 끝에서
Expand Down
13 changes: 13 additions & 0 deletions android/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,19 @@
`kr.devslab:dds-android-tokens`, `kr.devslab:dds-compose` and (from 0.7.0) `kr.devslab:dds-compose-testing` share one version,
separate from the web packages (D-048). Releases are cut by an `android-v<version>` tag.

## 0.8.0 — 2026-11-13

**New**

- **`DdsSegmentedControl`, `DdsSegment`** — one choice among a few visible options. The web SegmentedControl at its
touch size: a `bg.subtle` track with a 1dp `border.strong` edge and radius 8, 2dp inside and between segments, the
chosen one a `bg.default` face with a 1dp edge, a level-1 shadow and weight 600. The track is 50dp (48 of touch + the
edge), a face 44dp, and the touch height is 56 in large text mode. Content width (the default) always holds the bold
width, so choosing never moves a neighbour, and too many segments scroll inside the track; `fullWidth` shares the
width equally and ends a long label in an ellipsis. Read as a radio group. `label`/`contentDescription`, `error`
(edge color + a sentence + spoken), `readOnly`, `enabled`, and `enabled` per segment. Guide §12. The first consumer is
Qooroo's card-type toggle, whose in-app copy `DdsStyleSegmented` this replaces.

## 0.7.0 — 2026-11-13

The screen frame (D-052), from JeongsanNow on an unfolded phone: screens started on
Expand Down
6 changes: 3 additions & 3 deletions android/README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ dependencies {
}
```

0.7.0에서 화면 틀(가이드 §13)과 `dds-compose-testing` 꾸러미가 생겼다.
0.7.0에서 화면 틀(가이드 §13)과 `dds-compose-testing` 꾸러미가, 0.8.0에서 `DdsSegmentedControl`(가이드 §12)이 생겼다.

```kotlin
dependencies {
implementation("kr.devslab:dds-compose:0.7.0")
androidTestImplementation("kr.devslab:dds-compose-testing:0.7.0")
implementation("kr.devslab:dds-compose:0.8.0")
androidTestImplementation("kr.devslab:dds-compose-testing:0.8.0")
}
```

Expand Down
6 changes: 3 additions & 3 deletions android/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ dependencies {
}
```

0.7.0 adds the screen frame (guide §13) and the `dds-compose-testing` artifact:
0.7.0 adds the screen frame (guide §13) and the `dds-compose-testing` artifact, and 0.8.0 `DdsSegmentedControl` (guide §12):

```kotlin
dependencies {
implementation("kr.devslab:dds-compose:0.7.0")
androidTestImplementation("kr.devslab:dds-compose-testing:0.7.0")
implementation("kr.devslab:dds-compose:0.8.0")
androidTestImplementation("kr.devslab:dds-compose-testing:0.8.0")
}
```

Expand Down
20 changes: 20 additions & 0 deletions android/catalog/src/main/kotlin/kr/devslab/dds/catalog/Pages.kt
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ import kr.devslab.dds.compose.component.DdsMenuDivider
import kr.devslab.dds.compose.component.DdsMenuItem
import kr.devslab.dds.compose.component.DdsSearchField
import kr.devslab.dds.compose.component.DdsSelectField
import kr.devslab.dds.compose.component.DdsSegment
import kr.devslab.dds.compose.component.DdsSegmentedControl
import kr.devslab.dds.compose.component.DdsTabs
import kr.devslab.dds.compose.component.DdsToastHost
import kr.devslab.dds.compose.component.DdsValueRow
Expand Down Expand Up @@ -343,6 +345,8 @@ fun PartsPage() {
var query by rememberSaveable { mutableStateOf("") }
var bank by rememberSaveable { mutableStateOf<Int?>(null) }
var view by rememberSaveable { mutableStateOf(0) }
var kind by rememberSaveable { mutableStateOf("person") }
var period by rememberSaveable { mutableStateOf("week") }
var menu by remember { mutableStateOf(false) }
var sheet by rememberSaveable { mutableStateOf(false) }
val toasts = remember { SnackbarHostState() }
Expand Down Expand Up @@ -429,6 +433,22 @@ fun PartsPage() {
}
}
}
DdsSection(
"Segmented control",
description = "One choice among a few. The chosen width is kept in every state, so nothing shifts.",
) {
val kinds = listOf(DdsSegment("person", "개인"), DdsSegment("shop", "비즈니스"))
DdsSegmentedControl(kinds, kind, { kind = it }, label = "명함 종류", fullWidth = true)
DdsSegmentedControl(
listOf(DdsSegment("day", "일"), DdsSegment("week", "주"), DdsSegment("month", "월"), DdsSegment("year", "연", enabled = false)),
period,
{ period = it },
contentDescription = "기간",
)
DdsSegmentedControl(kinds, "shop", {}, contentDescription = "읽기 전용", readOnly = true)
DdsSegmentedControl(kinds, "person", {}, contentDescription = "비활성", enabled = false)
DdsSegmentedControl(kinds, "", {}, label = "필수 선택", fullWidth = true, error = "종류를 고르세요")
}
DdsSection("Choices") {
DdsCard {
DdsSwitch(notify, { notify = it }, label = "알림 받기", description = "서명이 끝나면 알려 드립니다")
Expand Down
Loading
Loading