sellmate-design-system-react 9.0.0-beta.83 → 9.0.0-beta.86

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.
@@ -1426,6 +1426,7 @@ tableRef.current.scrollToRow(row); // 복원
1426
1426
  | **`default`**(기본) | `#888888` | **대부분** — 닫기, 복사, 드래그, 펼치기, 행 삭제 |
1427
1427
  | `action` | `#025497` | 진입·추가처럼 **의미 있는 조작** — 편집 모드 진입, 항목 추가, 행 수정 |
1428
1428
  | `subAction` | `#5CB0F3` | `action` 다음 계층 — `action`·`default` 사이의 중의적 의미 + 부분 강조 |
1429
+ | `complete` | `#00973C` | **완료**를 나타내는 조작 — 완료 처리(`check`) 등 |
1429
1430
  | `danger` | `#E30000` | **되돌릴 수 없는 삭제** |
1430
1431
  | `inverse` | `#FFFFFF` | 어두운 배경 위 (GNB 접기 등) |
1431
1432
 
@@ -3365,14 +3366,17 @@ export default function SalesDashboardPage() {
3365
3366
  <SCard key={s.label} bordered className="flex flex-col gap-sd-4 p-sd-16">
3366
3367
  <span className="typo-body-sm-default text-fg-secondary">{s.label}</span>
3367
3368
  {/* 카드 안의 메인 수치는 typo-heading-xl — 제목에는 쓰지 않는다 (§2-1) */}
3368
- <span className="typo-heading-xl">
3369
+ <span className="typo-heading-xl text-right">
3369
3370
  {s.value.toLocaleString()}
3370
3371
  {s.unit}
3371
3372
  </span>
3372
- {/* 증감은 숫자 앞 부호와 색으로 함께 말한다 — 색만으로 뜻을 싣지 않는다 */}
3373
- <span className="typo-body-sm-default text-fg-tertiary">
3373
+ {/* 증감은 숫자 앞 부호와 색으로 함께 말한다 — 색만으로 뜻을 싣지 않는다.
3374
+ 문장 안 강조라 굵기는 typo-body-sm-medium 프리셋으로 준다 (§2-1) */}
3375
+ <span className="typo-body-sm-default text-right text-fg-tertiary">
3374
3376
  전기간 대비{' '}
3375
- <span className={s.change >= 0 ? 'text-fg-success' : 'text-fg-danger'}>
3377
+ <span
3378
+ className={`typo-body-sm-medium ${s.change >= 0 ? 'text-fg-success' : 'text-fg-danger'}`}
3379
+ >
3376
3380
  {s.change >= 0 ? '+' : ''}
3377
3381
  {s.change.toLocaleString()}%
3378
3382
  </span>
@@ -3383,16 +3387,20 @@ export default function SalesDashboardPage() {
3383
3387
 
3384
3388
  {/* 차트는 섹션 카드에 담는다. 차트 이름은 카드의 title 이 맡으므로 차트의 title 은 주지 않는다 —
3385
3389
  둘 다 주면 제목이 두 줄이 된다. 단위(unit)는 차트가 오른쪽 위에 적는다.
3386
- 한 페이지에 섹션 카드가 여럿이라 marker 를 켠다 (§4-5) */}
3390
+ 한 페이지 안의 카드 헤더(titleSize·배경)는 전부 같게 간다 (§4-5) */}
3387
3391
  {/* 날짜순 흐름이라 선 — 순서가 있는 항목의 추이 (§3-0 B). 항목(날짜)이 많아 한 줄을 다 쓴다 */}
3388
- <SSectionHeaderCard title="일별 매출" marker>
3392
+ <SSectionHeaderCard
3393
+ title="일별 매출"
3394
+ titleSize="sm"
3395
+ headerClassName="bg-bg-neutralBright!"
3396
+ padding="none"
3397
+ >
3389
3398
  <SLineChart
3390
3399
  categories={daily.categories}
3391
3400
  series={[{ name: '매출', data: daily.data }]}
3392
3401
  unit="원"
3393
3402
  area
3394
3403
  showLegend={false}
3395
- height={280}
3396
3404
  formatValue={won}
3397
3405
  // 차트는 "어느 쪽이 큰가" 까지만 답한다 — 정확한 값은 그날의 주문 목록에서 본다
3398
3406
  onPointClick={p => navigate(`/orders?date=${daily.dates[p.categoryIndex]}`)}
@@ -3401,26 +3409,36 @@ export default function SalesDashboardPage() {
3401
3409
 
3402
3410
  <div className="grid grid-cols-2 gap-sd-12">
3403
3411
  {/* 합계는 도넛 구멍이 아니라 카드 subtitle 에 적는다 (§3-0 B) */}
3404
- <SSectionHeaderCard title="판매처별 비중" marker subtitle={`합계 ${won(channelTotal)}`}>
3412
+ <SSectionHeaderCard
3413
+ title="판매처별 비중"
3414
+ titleSize="sm"
3415
+ subtitle={`합계 ${won(channelTotal)}`}
3416
+ padding="none"
3417
+ headerClassName="bg-bg-neutralBright!"
3418
+ >
3405
3419
  <SDonutChart
3406
3420
  data={channelShare}
3407
3421
  legendPosition="bottom"
3408
3422
  formatValue={won}
3409
3423
  // 그림은 폭만큼의 정사각형이다 — 칸을 다 채우면 옆 카드보다 훨씬 길어지므로
3410
3424
  // 화면 고유 치수로 폭을 묶는다 (§1-2)
3411
- className="mx-auto max-w-[280px]"
3425
+ className="mx-auto max-w-[310px]"
3412
3426
  />
3413
3427
  </SSectionHeaderCard>
3414
3428
 
3415
3429
  {/* 항목끼리 크기를 견주므로 막대. 상품명이 길어 가로 막대로 눕힌다 */}
3416
- <SSectionHeaderCard title="상품별 판매량 TOP 5" marker>
3430
+ <SSectionHeaderCard
3431
+ title="상품별 판매량 TOP 5"
3432
+ titleSize="sm"
3433
+ padding="none"
3434
+ headerClassName="bg-bg-neutralBright!"
3435
+ >
3417
3436
  <SBarChart
3418
3437
  categories={topProducts.categories}
3419
3438
  series={[{ name: '판매량', data: topProducts.data }]}
3420
3439
  unit="개"
3421
3440
  direction="horizontal"
3422
3441
  showLegend={false}
3423
- height={320}
3424
3442
  formatValue={v => `${v.toLocaleString()}개`}
3425
3443
  />
3426
3444
  </SSectionHeaderCard>
@@ -5457,7 +5475,7 @@ Tailwind 유틸리티는 아래 스케일에 있는 값만 사용한다. 리터
5457
5475
  | typo-field-sm-bold | 12px | 700 | 20px |
5458
5476
  | typo-field-md-default | 14px | 400 | 24px |
5459
5477
  | typo-field-md-medium | 14px | 500 | 24px |
5460
- | typo-field-md-bold | 14px | 700 | 24px |
5478
+ | typo-field-md-bold | 14px | 600 | 24px |
5461
5479
  | typo-field-lg-default | 16px | 400 | 26px |
5462
5480
  | typo-field-lg-medium | 16px | 500 | 26px |
5463
5481
  | typo-field-lg-bold | 16px | 700 | 26px |
@@ -8513,7 +8531,8 @@ export type SGhostButtonSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg';
8513
8531
  ### SGhostButtonIntent
8514
8532
 
8515
8533
  ```ts
8516
- export type SGhostButtonIntent = 'default' | 'danger' | 'action' | 'subAction' | 'inverse';
8534
+ export type SGhostButtonIntent =
8535
+ 'default' | 'danger' | 'action' | 'subAction' | 'complete' | 'inverse';
8517
8536
  ```
8518
8537
 
8519
8538
  ## Dependencies
@@ -10897,6 +10916,7 @@ export type SRadioValue = string | number | boolean;
10897
10916
  | `value?` | `string \| number \| null` | — | 현재 선택 값 |
10898
10917
  | `size?` | `SRadioButtonSize` | `'sm'` | 크기 |
10899
10918
  | `disabled?` | `boolean` | `false` | 전체 비활성 |
10919
+ | `readOnly?` | `boolean` | `false` | 읽기 전용. 선택 값을 보여주기만 하고 바꿀 수 없다. 모든 버튼이 readOnly 배경, 선택된 버튼만 readOnly 테두리·기본 글자색으로 구분하고 선택되지 않은 버튼의 글자는 disabled 색이다. 포커스·툴팁은 유지된다. `disabled`(그룹·옵션)가 함께 오면 disabled 가 우선한다. |
10900
10920
  | `name?` | `string` | — | input name 속성 |
10901
10921
  | `showTooltip?` | `boolean` | `false` | 옵션 호버 시 툴팁 노출. 문구는 옵션별 `tooltip` 으로 주며, 문구가 없는 옵션은 툴팁을 띄우지 않는다. 툴팁 타입은 `accent` 고정이다. |
10902
10922
  | `className?` | `string` | — | |
package/dist/llms.txt CHANGED
@@ -1427,6 +1427,7 @@ tableRef.current.scrollToRow(row); // 복원
1427
1427
  | **`default`**(기본) | `#888888` | **대부분** — 닫기, 복사, 드래그, 펼치기, 행 삭제 |
1428
1428
  | `action` | `#025497` | 진입·추가처럼 **의미 있는 조작** — 편집 모드 진입, 항목 추가, 행 수정 |
1429
1429
  | `subAction` | `#5CB0F3` | `action` 다음 계층 — `action`·`default` 사이의 중의적 의미 + 부분 강조 |
1430
+ | `complete` | `#00973C` | **완료**를 나타내는 조작 — 완료 처리(`check`) 등 |
1430
1431
  | `danger` | `#E30000` | **되돌릴 수 없는 삭제** |
1431
1432
  | `inverse` | `#FFFFFF` | 어두운 배경 위 (GNB 접기 등) |
1432
1433
 
@@ -3366,14 +3367,17 @@ export default function SalesDashboardPage() {
3366
3367
  <SCard key={s.label} bordered className="flex flex-col gap-sd-4 p-sd-16">
3367
3368
  <span className="typo-body-sm-default text-fg-secondary">{s.label}</span>
3368
3369
  {/* 카드 안의 메인 수치는 typo-heading-xl — 제목에는 쓰지 않는다 (§2-1) */}
3369
- <span className="typo-heading-xl">
3370
+ <span className="typo-heading-xl text-right">
3370
3371
  {s.value.toLocaleString()}
3371
3372
  {s.unit}
3372
3373
  </span>
3373
- {/* 증감은 숫자 앞 부호와 색으로 함께 말한다 — 색만으로 뜻을 싣지 않는다 */}
3374
- <span className="typo-body-sm-default text-fg-tertiary">
3374
+ {/* 증감은 숫자 앞 부호와 색으로 함께 말한다 — 색만으로 뜻을 싣지 않는다.
3375
+ 문장 안 강조라 굵기는 typo-body-sm-medium 프리셋으로 준다 (§2-1) */}
3376
+ <span className="typo-body-sm-default text-right text-fg-tertiary">
3375
3377
  전기간 대비{' '}
3376
- <span className={s.change >= 0 ? 'text-fg-success' : 'text-fg-danger'}>
3378
+ <span
3379
+ className={`typo-body-sm-medium ${s.change >= 0 ? 'text-fg-success' : 'text-fg-danger'}`}
3380
+ >
3377
3381
  {s.change >= 0 ? '+' : ''}
3378
3382
  {s.change.toLocaleString()}%
3379
3383
  </span>
@@ -3384,16 +3388,20 @@ export default function SalesDashboardPage() {
3384
3388
 
3385
3389
  {/* 차트는 섹션 카드에 담는다. 차트 이름은 카드의 title 이 맡으므로 차트의 title 은 주지 않는다 —
3386
3390
  둘 다 주면 제목이 두 줄이 된다. 단위(unit)는 차트가 오른쪽 위에 적는다.
3387
- 한 페이지에 섹션 카드가 여럿이라 marker 를 켠다 (§4-5) */}
3391
+ 한 페이지 안의 카드 헤더(titleSize·배경)는 전부 같게 간다 (§4-5) */}
3388
3392
  {/* 날짜순 흐름이라 선 — 순서가 있는 항목의 추이 (§3-0 B). 항목(날짜)이 많아 한 줄을 다 쓴다 */}
3389
- <SSectionHeaderCard title="일별 매출" marker>
3393
+ <SSectionHeaderCard
3394
+ title="일별 매출"
3395
+ titleSize="sm"
3396
+ headerClassName="bg-bg-neutralBright!"
3397
+ padding="none"
3398
+ >
3390
3399
  <SLineChart
3391
3400
  categories={daily.categories}
3392
3401
  series={[{ name: '매출', data: daily.data }]}
3393
3402
  unit="원"
3394
3403
  area
3395
3404
  showLegend={false}
3396
- height={280}
3397
3405
  formatValue={won}
3398
3406
  // 차트는 "어느 쪽이 큰가" 까지만 답한다 — 정확한 값은 그날의 주문 목록에서 본다
3399
3407
  onPointClick={p => navigate(`/orders?date=${daily.dates[p.categoryIndex]}`)}
@@ -3402,26 +3410,36 @@ export default function SalesDashboardPage() {
3402
3410
 
3403
3411
  <div className="grid grid-cols-2 gap-sd-12">
3404
3412
  {/* 합계는 도넛 구멍이 아니라 카드 subtitle 에 적는다 (§3-0 B) */}
3405
- <SSectionHeaderCard title="판매처별 비중" marker subtitle={`합계 ${won(channelTotal)}`}>
3413
+ <SSectionHeaderCard
3414
+ title="판매처별 비중"
3415
+ titleSize="sm"
3416
+ subtitle={`합계 ${won(channelTotal)}`}
3417
+ padding="none"
3418
+ headerClassName="bg-bg-neutralBright!"
3419
+ >
3406
3420
  <SDonutChart
3407
3421
  data={channelShare}
3408
3422
  legendPosition="bottom"
3409
3423
  formatValue={won}
3410
3424
  // 그림은 폭만큼의 정사각형이다 — 칸을 다 채우면 옆 카드보다 훨씬 길어지므로
3411
3425
  // 화면 고유 치수로 폭을 묶는다 (§1-2)
3412
- className="mx-auto max-w-[280px]"
3426
+ className="mx-auto max-w-[310px]"
3413
3427
  />
3414
3428
  </SSectionHeaderCard>
3415
3429
 
3416
3430
  {/* 항목끼리 크기를 견주므로 막대. 상품명이 길어 가로 막대로 눕힌다 */}
3417
- <SSectionHeaderCard title="상품별 판매량 TOP 5" marker>
3431
+ <SSectionHeaderCard
3432
+ title="상품별 판매량 TOP 5"
3433
+ titleSize="sm"
3434
+ padding="none"
3435
+ headerClassName="bg-bg-neutralBright!"
3436
+ >
3418
3437
  <SBarChart
3419
3438
  categories={topProducts.categories}
3420
3439
  series={[{ name: '판매량', data: topProducts.data }]}
3421
3440
  unit="개"
3422
3441
  direction="horizontal"
3423
3442
  showLegend={false}
3424
- height={320}
3425
3443
  formatValue={v => `${v.toLocaleString()}개`}
3426
3444
  />
3427
3445
  </SSectionHeaderCard>
@@ -5458,7 +5476,7 @@ Tailwind 유틸리티는 아래 스케일에 있는 값만 사용한다. 리터
5458
5476
  | typo-field-sm-bold | 12px | 700 | 20px |
5459
5477
  | typo-field-md-default | 14px | 400 | 24px |
5460
5478
  | typo-field-md-medium | 14px | 500 | 24px |
5461
- | typo-field-md-bold | 14px | 700 | 24px |
5479
+ | typo-field-md-bold | 14px | 600 | 24px |
5462
5480
  | typo-field-lg-default | 16px | 400 | 26px |
5463
5481
  | typo-field-lg-medium | 16px | 500 | 26px |
5464
5482
  | typo-field-lg-bold | 16px | 700 | 26px |
package/dist/styles.css CHANGED
@@ -1520,8 +1520,8 @@
1520
1520
  .w-sd-8 {
1521
1521
  width: var(--spacing-sd-8);
1522
1522
  }
1523
- .max-w-\[280px\] {
1524
- max-width: 280px;
1523
+ .max-w-\[310px\] {
1524
+ max-width: 310px;
1525
1525
  }
1526
1526
  .max-w-\[360px\] {
1527
1527
  max-width: 360px;
@@ -3210,6 +3210,9 @@
3210
3210
  .bg-bg-neutralBright {
3211
3211
  background-color: var(--color-bg-neutralBright);
3212
3212
  }
3213
+ .bg-bg-neutralBright\! {
3214
+ background-color: var(--color-bg-neutralBright) !important;
3215
+ }
3213
3216
  .bg-bg-neutralLight {
3214
3217
  background-color: var(--color-bg-neutralLight);
3215
3218
  }
@@ -7650,6 +7653,8 @@
7650
7653
  --cmp-ghostButton-group-gap: 4px;
7651
7654
  --cmp-ghostButton-subAction-content: #5CB0F3;
7652
7655
  --cmp-ghostButton-subAction-hover-bg: #5CB0F3;
7656
+ --cmp-ghostButton-complete-content: #00973C;
7657
+ --cmp-ghostButton-complete-hover-bg: #12B553;
7653
7658
  --cmp-textLink-sm-gap: 4px;
7654
7659
  --cmp-textLink-sm-icon: 16px;
7655
7660
  --cmp-textLink-md-gap: 8px;
@@ -7744,10 +7749,12 @@
7744
7749
  --cmp-radioButton-border-default: #CCCCCC;
7745
7750
  --cmp-radioButton-border-select: #0075FF;
7746
7751
  --cmp-radioButton-border-disabled: #CCCCCC;
7752
+ --cmp-radioButton-border-readOnly: #AAAAAA;
7747
7753
  --cmp-radioButton-bg-default: #FFFFFF;
7748
7754
  --cmp-radioButton-bg-hover: #0075FF;
7749
7755
  --cmp-radioButton-bg-select: #FFFFFF;
7750
7756
  --cmp-radioButton-bg-disabled: #E1E1E1;
7757
+ --cmp-radioButton-bg-readOnly: #EEEEEE;
7751
7758
  --cmp-radioButton-content-default: #555555;
7752
7759
  --cmp-radioButton-content-hover: #FFFFFF;
7753
7760
  --cmp-radioButton-content-select: #0075FF;
@@ -9309,7 +9316,7 @@
9309
9316
  .typo-field-md-bold {
9310
9317
  font-family: Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;
9311
9318
  font-size: 14px;
9312
- font-weight: 700;
9319
+ font-weight: 600;
9313
9320
  line-height: 24px;
9314
9321
  }
9315
9322
  .typo-field-lg-default {
package/dist/theme.css CHANGED
@@ -651,6 +651,8 @@
651
651
  --cmp-ghostButton-group-gap: 4px;
652
652
  --cmp-ghostButton-subAction-content: #5CB0F3;
653
653
  --cmp-ghostButton-subAction-hover-bg: #5CB0F3;
654
+ --cmp-ghostButton-complete-content: #00973C;
655
+ --cmp-ghostButton-complete-hover-bg: #12B553;
654
656
  --cmp-textLink-sm-gap: 4px;
655
657
  --cmp-textLink-sm-icon: 16px;
656
658
  --cmp-textLink-md-gap: 8px;
@@ -745,10 +747,12 @@
745
747
  --cmp-radioButton-border-default: #CCCCCC;
746
748
  --cmp-radioButton-border-select: #0075FF;
747
749
  --cmp-radioButton-border-disabled: #CCCCCC;
750
+ --cmp-radioButton-border-readOnly: #AAAAAA;
748
751
  --cmp-radioButton-bg-default: #FFFFFF;
749
752
  --cmp-radioButton-bg-hover: #0075FF;
750
753
  --cmp-radioButton-bg-select: #FFFFFF;
751
754
  --cmp-radioButton-bg-disabled: #E1E1E1;
755
+ --cmp-radioButton-bg-readOnly: #EEEEEE;
752
756
  --cmp-radioButton-content-default: #555555;
753
757
  --cmp-radioButton-content-hover: #FFFFFF;
754
758
  --cmp-radioButton-content-select: #0075FF;
@@ -2329,7 +2333,7 @@
2329
2333
  .typo-field-md-bold {
2330
2334
  font-family: Pretendard Variable, Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Segoe UI, Apple SD Gothic Neo, Noto Sans KR, Malgun Gothic, Apple Color Emoji, Segoe UI Emoji, sans-serif;
2331
2335
  font-size: 14px;
2332
- font-weight: 700;
2336
+ font-weight: 600;
2333
2337
  line-height: 24px;
2334
2338
  }
2335
2339
  .typo-field-lg-default {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sellmate-design-system-react",
3
- "version": "9.0.0-beta.83",
3
+ "version": "9.0.0-beta.86",
4
4
  "description": "Sellmate Design System — React (TypeScript + Tailwind v4) port",
5
5
  "license": "UNLICENSED",
6
6
  "keywords": [