Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
6a58fa9
[UI] 슬라이더 컴포넌트 마크업 구조 수정 (@base-ui/react 호환)
seonghobae Sep 4, 2026
c10a605
test(ui): require named slider thumb anatomy
seonghobae Sep 4, 2026
4efece4
fix(ui): preserve slider thumb semantics
seonghobae Sep 4, 2026
11460d0
docs(storybook): label slider interaction
seonghobae Sep 4, 2026
63cb76d
fix(ui): bound slider orientation and focus state
seonghobae Sep 4, 2026
5ddb8aa
docs(storybook): document slider exports
seonghobae Sep 4, 2026
ba2d640
test(ui): bound slider disabled and range contracts
seonghobae Sep 4, 2026
2a4cb14
fix(ui): enforce single-thumb slider state
seonghobae Sep 4, 2026
579b90f
[UI] 슬라이더 컴포넌트 마크업 구조 수정 (@base-ui/react 호환)
seonghobae Sep 5, 2026
468afc6
test(ui): restore Slider accessibility contract
seonghobae Sep 5, 2026
3c70532
fix(ui): restore accessible Slider contract
seonghobae Sep 5, 2026
cfe5062
fix(ui): restore Slider Storybook contract
seonghobae Sep 5, 2026
ed5f8d9
[UI] 슬라이더 컴포넌트 마크업 구조 수정 (@base-ui/react 호환)
seonghobae Sep 6, 2026
60e5d0d
test(ui): restore slider accessibility contract RED
seonghobae Sep 6, 2026
5731efa
fix(ui): restore slider input accessibility boundary
seonghobae Sep 6, 2026
416f948
fix(ui): keep slider story on canonical accessible surface
seonghobae Sep 6, 2026
c3ee2fd
test(ui): require full-height slider pointer target RED
seonghobae Sep 6, 2026
4b4e6fa
fix(ui): keep slider spatial target at 24 CSS px
seonghobae Sep 6, 2026
317a586
[UI] 슬라이더 컴포넌트 마크업 구조 수정 (@base-ui/react 호환)
seonghobae Sep 6, 2026
48d28a0
[UI] 슬라이더 컴포넌트 마크업 구조 수정 (@base-ui/react 호환)
seonghobae Sep 6, 2026
a32b59e
[UI] 슬라이더 컴포넌트 마크업 구조 수정 (@base-ui/react 호환)
seonghobae Sep 6, 2026
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: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

### Added

- `@base-ui/react/slider` 기반의 `Slider` 컴포넌트를 UI 패키지에 추가하고, 해당 컴포넌트에 대한 렌더링 테스트 및 스토리북(`Slider.stories.tsx`) 설정을 반영했습니다.

- Name tonight's first playable range on the ready rehearsal map and tell the player to check that span on their instrument before the section.
- Display the analyzed song tempo (BPM) as a badge in the rehearsal workspace.
- 각 합주 역할(Role)별 개인 연습 진행도를 0~100% 범위로 기록 및 시각화할 수 있는 연습 진척도(`practiceProgress`) 트래커 기능 추가. UI 컨트롤(슬라이더 및 +/- 버튼)과 한/영 다국어 지원 포함.
Expand Down
18 changes: 18 additions & 0 deletions apps/desktop/src/components/ui/slider.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import type { Meta, StoryObj } from "@storybook/react"

import { Slider } from "./slider"

const meta = {
title: "UI/Slider",
component: Slider,
parameters: { layout: "centered" },
args: {
defaultValue: 50,
className: "w-[60vw]"
Comment thread
seonghobae marked this conversation as resolved.
},
} satisfies Meta<typeof Slider>

export default meta
type Story = StoryObj<typeof meta>

export const Default: Story = {}
39 changes: 39 additions & 0 deletions apps/desktop/src/components/ui/slider.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import * as React from "react"
import { Slider as SliderPrimitive } from "@base-ui/react/slider"

import { cn } from "@/lib/utils"

/** Render a styled slider that preserves Base UI accessibility behavior. */
function Slider({
className,
...props
}: React.ComponentProps<typeof SliderPrimitive.Root>) {
return (
<SliderPrimitive.Root
data-slot="slider"
className={cn(
"relative flex w-full touch-none select-none items-center",
className
)}
{...props}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
>
<SliderPrimitive.Control className="flex w-full items-center">
<SliderPrimitive.Track
data-slot="slider-track"
className="relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20"
>
<SliderPrimitive.Indicator
data-slot="slider-indicator"
className="h-full bg-primary"
/>
</SliderPrimitive.Track>
<SliderPrimitive.Thumb
data-slot="slider-thumb"
className="block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"
/>
</SliderPrimitive.Control>
</SliderPrimitive.Root>
)
}

export { Slider }
11 changes: 11 additions & 0 deletions apps/desktop/src/components/ui/ui-added.test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { render, screen, waitFor } from "@testing-library/react"
import { describe, expect, it } from "vitest"

import { Slider } from "./slider"
import {
Table,
TableBody,
Expand Down Expand Up @@ -246,3 +247,13 @@ describe("added ui primitives (runtime render)", () => {
expect(await screen.findByText("분석 준비 완료")).toBeTruthy()
})
})

describe("Slider component", () => {
it("Slider mounts with track, indicator and thumb", () => {
const { container } = render(<Slider defaultValue={50} aria-label="vol" />)
expect(container.querySelector('[data-slot="slider"]')).toBeTruthy()
expect(container.querySelector('[data-slot="slider-track"]')).toBeTruthy()
expect(container.querySelector('[data-slot="slider-indicator"]')).toBeTruthy()
expect(container.querySelector('[data-slot="slider-thumb"]')).toBeTruthy()
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -1275,9 +1275,7 @@ def test_workflow_concurrency_cancels_only_superseded_pr_heads() -> None:
workflow = (workflows_dir / workflow_name).read_text(encoding="utf-8")
assert "concurrency:" in workflow, workflow_name
assert "cancel-in-progress: false" in workflow, workflow_name
assert "contents: read" in workflow or "permissions: read-all" in workflow, (
workflow_name
)
assert "contents: read" in workflow or "permissions: read-all" in workflow, workflow_name

assert "pull_request:" not in (workflows_dir / "release.yml").read_text(encoding="utf-8")

Expand Down
Loading