@uniai-fe/uds-primitives 0.6.5 → 0.6.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/styles.css CHANGED
@@ -1962,6 +1962,17 @@
1962
1962
  color: var(--color-label-disabled);
1963
1963
  }
1964
1964
 
1965
+ .calendar-day:where([hidden]) {
1966
+ display: flex !important;
1967
+ visibility: hidden;
1968
+ pointer-events: none;
1969
+ }
1970
+
1971
+ .calendar-range-grid .calendar-day:where([data-outside=true]) {
1972
+ visibility: hidden;
1973
+ pointer-events: none;
1974
+ }
1975
+
1965
1976
  .calendar-day:where(:not([data-disabled=true],
1966
1977
  [data-selected=true],
1967
1978
  [data-focused=true],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uniai-fe/uds-primitives",
3
- "version": "0.6.5",
3
+ "version": "0.6.6",
4
4
  "description": "UNIAI Design System; Primitives Components Package",
5
5
  "type": "module",
6
6
  "private": false,
@@ -15,7 +15,7 @@
15
15
  "publishConfig": {
16
16
  "access": "public"
17
17
  },
18
- "packageManager": "pnpm@10.33.0",
18
+ "packageManager": "pnpm@10.33.2",
19
19
  "engines": {
20
20
  "node": ">=24",
21
21
  "pnpm": ">=10"
@@ -103,7 +103,7 @@
103
103
  "@uniai-fe/util-functions": "workspace:*",
104
104
  "eslint": "^9.39.2",
105
105
  "prettier": "^3.8.3",
106
- "react-hook-form": "^7.72.1",
106
+ "react-hook-form": "^7.73.1",
107
107
  "sass": "^1.99.0",
108
108
  "typescript": "5.9.3"
109
109
  }
@@ -1,6 +1,10 @@
1
1
  "use client";
2
2
 
3
- import { DatePicker, type DateStringValue } from "@mantine/dates";
3
+ import {
4
+ DatePicker,
5
+ DatesProvider,
6
+ type DateStringValue,
7
+ } from "@mantine/dates";
4
8
  import { dayjs } from "../../../init/dayjs";
5
9
  import { CalendarIcon } from "./Icon";
6
10
  import type { CalendarDatePickerProps, CalendarGridProps } from "../types";
@@ -34,6 +38,7 @@ export default function CalendarCore({
34
38
  // 기본 DatePicker 옵션/스타일 책임을 Calendar.Core에 고정한다.
35
39
  const resolvedDatePickerProps = {
36
40
  size: "sm" as const,
41
+ locale: "ko",
37
42
  firstDayOfWeek: 0 as const,
38
43
  weekendDays: [] as Array<0 | 1 | 2 | 3 | 4 | 5 | 6>,
39
44
  nextIcon: <CalendarIcon.Chevron.right />,
@@ -76,14 +81,24 @@ export default function CalendarCore({
76
81
  };
77
82
 
78
83
  return (
79
- <DatePicker
80
- className="calendar-grid"
81
- // Core는 SOT 단일 달력으로 고정한다.
82
- numberOfColumns={1}
83
- type="default"
84
- value={mapValueToPicker(value) as never}
85
- onChange={handleChange as never}
86
- {...resolvedDatePickerProps}
87
- />
84
+ <DatesProvider
85
+ settings={{
86
+ // 변경: 월별 week row 수를 6주로 고정해 popover 높이 변동을 막는다.
87
+ consistentWeeks: true,
88
+ locale: resolvedDatePickerProps.locale ?? "ko",
89
+ firstDayOfWeek: resolvedDatePickerProps.firstDayOfWeek ?? 0,
90
+ weekendDays: resolvedDatePickerProps.weekendDays ?? [],
91
+ }}
92
+ >
93
+ <DatePicker
94
+ className="calendar-grid"
95
+ // Core는 SOT 단일 달력으로 고정한다.
96
+ numberOfColumns={1}
97
+ type="default"
98
+ value={mapValueToPicker(value) as never}
99
+ onChange={handleChange as never}
100
+ {...resolvedDatePickerProps}
101
+ />
102
+ </DatesProvider>
88
103
  );
89
104
  }
@@ -1,6 +1,10 @@
1
1
  "use client";
2
2
 
3
- import { DatePicker, type DateStringValue } from "@mantine/dates";
3
+ import {
4
+ DatePicker,
5
+ DatesProvider,
6
+ type DateStringValue,
7
+ } from "@mantine/dates";
4
8
  import { dayjs } from "../../../../init/dayjs";
5
9
  import { CalendarIcon } from "../Icon";
6
10
  import type {
@@ -38,6 +42,7 @@ export default function CalendarRangeCore({
38
42
  // Range Core는 Figma의 2 calendar 구조에 맞춰 두 달을 한 패널에서 렌더링한다.
39
43
  const resolvedDatePickerProps = {
40
44
  size: "sm" as const,
45
+ locale: "ko",
41
46
  firstDayOfWeek: 0 as const,
42
47
  weekendDays: [] as Array<0 | 1 | 2 | 3 | 4 | 5 | 6>,
43
48
  nextIcon: <CalendarIcon.Chevron.right />,
@@ -49,6 +54,8 @@ export default function CalendarRangeCore({
49
54
  // 변경: Range header도 단일 Core와 같은 연도-월 순서 표기를 기본값으로 둔다.
50
55
  monthLabelFormat: "YYYY년 M월",
51
56
  ...safeDatePickerProps,
57
+ // 변경: hidden attribute로 인한 empty week row collapse를 막고 outside date는 CSS에서 숨긴다.
58
+ hideOutsideDates: false,
52
59
  // 변경: button은 period surface, span은 selected/today 날짜 레이어로 분리한다.
53
60
  renderDay: (date: DateStringValue) => (
54
61
  <span className="calendar-day-label">
@@ -80,13 +87,23 @@ export default function CalendarRangeCore({
80
87
  };
81
88
 
82
89
  return (
83
- <DatePicker
84
- className="calendar-grid calendar-range-grid"
85
- numberOfColumns={2}
86
- type="range"
87
- value={mapRangeValueToPicker(value)}
88
- onChange={handleChange}
89
- {...resolvedDatePickerProps}
90
- />
90
+ <DatesProvider
91
+ settings={{
92
+ // 변경: range 양쪽 month도 항상 6주 row로 렌더해 패널 높이를 고정한다.
93
+ consistentWeeks: true,
94
+ locale: resolvedDatePickerProps.locale ?? "ko",
95
+ firstDayOfWeek: resolvedDatePickerProps.firstDayOfWeek ?? 0,
96
+ weekendDays: resolvedDatePickerProps.weekendDays ?? [],
97
+ }}
98
+ >
99
+ <DatePicker
100
+ className="calendar-grid calendar-range-grid"
101
+ numberOfColumns={2}
102
+ type="range"
103
+ value={mapRangeValueToPicker(value)}
104
+ onChange={handleChange}
105
+ {...resolvedDatePickerProps}
106
+ />
107
+ </DatesProvider>
91
108
  );
92
109
  }
@@ -372,6 +372,19 @@
372
372
  color: var(--color-label-disabled);
373
373
  }
374
374
 
375
+ .calendar-day:where([hidden]) {
376
+ // 변경: range의 outside date hidden row도 6주 높이 계산에 참여시켜 month 전환 점프를 막는다.
377
+ display: flex !important;
378
+ visibility: hidden;
379
+ pointer-events: none;
380
+ }
381
+
382
+ .calendar-range-grid .calendar-day:where([data-outside="true"]) {
383
+ // 변경: range outside date는 hidden attribute 없이 공간만 유지한다.
384
+ visibility: hidden;
385
+ pointer-events: none;
386
+ }
387
+
375
388
  .calendar-day:where(
376
389
  :not(
377
390
  [data-disabled="true"],