@stn-uiux/pub-ui 0.1.76 → 0.1.77

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.
@@ -6,11 +6,11 @@ var STN_TYPE_SCALE_ROWS = [
6
6
  category: "Display",
7
7
  name: "Display 1",
8
8
  weights: "Medium, Bold",
9
- sizePx: 60,
10
- sizeRem: "4rem",
9
+ sizePx: 52,
10
+ sizeRem: "3.25rem",
11
11
  lineHeight: "130%",
12
12
  role: "\uCD5C\uC0C1\uC704 \uD5E4\uB4DC\uB77C\uC778 (PC\uAD8C\uC7A5)",
13
- pubSizeToken: "pub.font-size.60",
13
+ pubSizeToken: "pub.font-size.52",
14
14
  semanticToken: "pub.text.display.xlarge"
15
15
  },
16
16
  {
@@ -18,11 +18,11 @@ var STN_TYPE_SCALE_ROWS = [
18
18
  category: "Display",
19
19
  name: "Display 2",
20
20
  weights: "Medium, Bold",
21
- sizePx: 40,
22
- sizeRem: "2.67rem",
21
+ sizePx: 44,
22
+ sizeRem: "2.75rem",
23
23
  lineHeight: "130%",
24
24
  role: "\uBA54\uC778 \uD0C0\uC774\uD2C0 (PC \uAD8C\uC7A5)",
25
- pubSizeToken: "pub.font-size.40",
25
+ pubSizeToken: "pub.font-size.44",
26
26
  semanticToken: "pub.text.display.large"
27
27
  },
28
28
  {
@@ -30,11 +30,11 @@ var STN_TYPE_SCALE_ROWS = [
30
30
  category: "Display",
31
31
  name: "Display 3",
32
32
  weights: "Medium, Bold",
33
- sizePx: 36,
34
- sizeRem: "2.4rem",
33
+ sizePx: 40,
34
+ sizeRem: "2.5rem",
35
35
  lineHeight: "148%",
36
36
  role: "\uAC15\uC870\uD615 \uD5E4\uB4DC\uB77C\uC778",
37
- pubSizeToken: "pub.font-size.36",
37
+ pubSizeToken: "pub.font-size.40",
38
38
  semanticToken: "pub.text.display.medium"
39
39
  },
40
40
  {
@@ -137,6 +137,7 @@ var STN_TYPE_SCALE_ROWS = [
137
137
  lineHeight: "148% / 158%",
138
138
  role: "\uBCF8\uBB38 \uD14D\uC2A4\uD2B8",
139
139
  pubSizeToken: "pub.font-size.15",
140
+ semanticToken: "pub.text.body.medium-large",
140
141
  pubHtmlExample: "dashboard_map \xB7 GNB 1Depth \xB7 \uD14C\uC774\uBE14 \uD5E4\uB354"
141
142
  },
142
143
  {
@@ -253,6 +254,27 @@ var STN_TYPE_SCALE_ROWS = [
253
254
  pubHtmlExample: "dashboard_map \xB7 node_icon \uB77C\uBCA8 \xB7 gnb_alert \uD0DC\uADF8"
254
255
  }
255
256
  ];
257
+ var STN_TYPE_SCALE_CLASS = {
258
+ "display-1": { className: "stn-text-display-1", variant: "display-1" },
259
+ "display-2": { className: "stn-text-display-2", variant: "display-2" },
260
+ "display-3": { className: "stn-text-display-3", variant: "display-3" },
261
+ "heading-1": { className: "stn-text-heading-1", variant: "heading-1" },
262
+ "heading-2": { className: "stn-text-heading-2", variant: "heading-2" },
263
+ "heading-3": { className: "stn-text-heading-3", variant: "heading-3" },
264
+ "title-1": { className: "stn-text-title-1", variant: "title-1" },
265
+ "title-2": { className: "stn-text-title-2", variant: "title-2" },
266
+ "title-3": { className: "stn-text-title-3", variant: "title-3" },
267
+ "body-1": { className: "stn-text-body-1", variant: "body-1" },
268
+ "body-2": { className: "stn-text-body-2", variant: "body-2" },
269
+ "body-3": { className: "stn-text-body-3", variant: "body-3" },
270
+ "body-small": { className: "stn-text-body-small", variant: "body-small" },
271
+ "label-1": { className: "stn-text-label-1", variant: "label-1" },
272
+ "label-2": { className: "stn-text-label-2", variant: "label-2" },
273
+ "label-3": { className: "stn-text-label-3", variant: "label-3" },
274
+ "label-4": { className: "stn-text-label-4", variant: "label-4" },
275
+ "caption-large": { className: "stn-text-caption-large", variant: "caption-large" },
276
+ caption: { className: "stn-text-caption", variant: "caption" }
277
+ };
256
278
  var WEIGHT_LABEL = {
257
279
  300: "Regular",
258
280
  500: "Medium",
@@ -273,7 +295,8 @@ function typeScalePill(scaleName, sizePx, weight) {
273
295
  export {
274
296
  STN_TYPE_SCALE_INTRO,
275
297
  STN_TYPE_SCALE_ROWS,
298
+ STN_TYPE_SCALE_CLASS,
276
299
  resolveTypeScaleName,
277
300
  typeScalePill
278
301
  };
279
- //# sourceMappingURL=chunk-VC72NQIU.js.map
302
+ //# sourceMappingURL=chunk-EKPLU5KT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/data/stnTypeScale.ts"],"sourcesContent":["/**\n * Figma Type Scale — Display / Heading / Title / Body / Label / Caption\n * Pub HTML은 primitive(font-size·weight)로 조합하며, semantic samples는 일부만 시연합니다.\n */\n\nexport type StnTypeScaleCategory =\n | 'Display'\n | 'Heading'\n | 'Title'\n | 'Body'\n | 'Label'\n | 'Caption'\n | 'Pub extension'\n\nexport type StnTypeScaleRow = {\n id: string\n category: StnTypeScaleCategory\n name: string\n weights: string\n sizePx: number\n sizeRem: string\n lineHeight: string\n role: string\n pubSizeToken: string\n /** Tokens 탭 semantic (있으면) */\n semanticToken?: string\n /** dashboard_map.html 등 실제 화면 예 (있을 때만) */\n pubHtmlExample?: string\n}\n\nexport const STN_TYPE_SCALE_INTRO =\n 'Display, Heading, Title, Body, Label, Caption으로 정의한 6단계 위계에 맞게 조합하여 사용합니다.'\n\nexport const STN_TYPE_SCALE_ROWS: StnTypeScaleRow[] = [\n {\n id: 'display-1',\n category: 'Display',\n name: 'Display 1',\n weights: 'Medium, Bold',\n sizePx: 52,\n sizeRem: '3.25rem',\n lineHeight: '130%',\n role: '최상위 헤드라인 (PC권장)',\n pubSizeToken: 'pub.font-size.52',\n semanticToken: 'pub.text.display.xlarge',\n },\n {\n id: 'display-2',\n category: 'Display',\n name: 'Display 2',\n weights: 'Medium, Bold',\n sizePx: 44,\n sizeRem: '2.75rem',\n lineHeight: '130%',\n role: '메인 타이틀 (PC 권장)',\n pubSizeToken: 'pub.font-size.44',\n semanticToken: 'pub.text.display.large',\n },\n {\n id: 'display-3',\n category: 'Display',\n name: 'Display 3',\n weights: 'Medium, Bold',\n sizePx: 40,\n sizeRem: '2.5rem',\n lineHeight: '148%',\n role: '강조형 헤드라인',\n pubSizeToken: 'pub.font-size.40',\n semanticToken: 'pub.text.display.medium',\n },\n {\n id: 'heading-1',\n category: 'Heading',\n name: 'Heading 1',\n weights: 'Medium, Bold',\n sizePx: 32,\n sizeRem: '2.133rem',\n lineHeight: '148%',\n role: '페이지 상위 제목',\n pubSizeToken: 'pub.font-size.32',\n semanticToken: 'pub.text.heading.large',\n pubHtmlExample: 'dashboard_map · converged-header 페이지명',\n },\n {\n id: 'heading-2',\n category: 'Heading',\n name: 'Heading 2',\n weights: 'Medium, Bold',\n sizePx: 24,\n sizeRem: '1.6rem',\n lineHeight: '148%',\n role: '하위 제목',\n pubSizeToken: 'pub.font-size.24',\n semanticToken: 'pub.text.heading.medium',\n pubHtmlExample: 'dashboard_map · 장애 등급 수치(24px Bold)',\n },\n {\n id: 'heading-3',\n category: 'Heading',\n name: 'Heading 3',\n weights: 'Medium, Bold',\n sizePx: 22,\n sizeRem: '1.47rem',\n lineHeight: '148%',\n role: '소제목, 그룹 제목',\n pubSizeToken: 'pub.font-size.22',\n semanticToken: 'pub.text.heading.small',\n },\n {\n id: 'title-1',\n category: 'Title',\n name: 'Title 1',\n weights: 'Medium, Bold',\n sizePx: 20,\n sizeRem: '1.33rem',\n lineHeight: '148%',\n role: '콘텐츠 타이틀',\n pubSizeToken: 'pub.font-size.20',\n semanticToken: 'pub.text.title.large',\n pubHtmlExample: 'dashboard_map · 헤더 시계(#time)',\n },\n {\n id: 'title-2',\n category: 'Title',\n name: 'Title 2',\n weights: 'Medium, Semibold, Bold',\n sizePx: 18,\n sizeRem: '1.2rem',\n lineHeight: '148%',\n role: '서브 페이지 제목',\n pubSizeToken: 'pub.font-size.18',\n semanticToken: 'pub.text.title.medium',\n pubHtmlExample: 'alert_center · 모달 타이틀「알림센터」',\n },\n {\n id: 'title-3',\n category: 'Title',\n name: 'Title 3',\n weights: 'Medium',\n sizePx: 16,\n sizeRem: '1.07rem',\n lineHeight: '148%',\n role: '서브 타이틀 · 헤더',\n pubSizeToken: 'pub.font-size.16',\n semanticToken: 'pub.text.title.small',\n pubHtmlExample: 'stn-header · stn-widget 헤더',\n },\n {\n id: 'body-1',\n category: 'Body',\n name: 'Body 1',\n weights: 'Regular, Medium, Semibold, Bold',\n sizePx: 16,\n sizeRem: '1.07rem',\n lineHeight: '148% / 170%',\n role: '본문 텍스트 (PC 권장)',\n pubSizeToken: 'pub.font-size.16',\n semanticToken: 'pub.text.body.large',\n pubHtmlExample: 'dashboard_map · fault_table 본문 셀',\n },\n {\n id: 'body-2',\n category: 'Body',\n name: 'Body 2',\n weights: 'Regular, Medium, Semibold, Bold',\n sizePx: 15,\n sizeRem: '1rem',\n lineHeight: '148% / 158%',\n role: '본문 텍스트',\n pubSizeToken: 'pub.font-size.15',\n semanticToken: 'pub.text.body.medium-large',\n pubHtmlExample: 'dashboard_map · GNB 1Depth · 테이블 헤더',\n },\n {\n id: 'body-3',\n category: 'Body',\n name: 'Body 3',\n weights: 'Regular, Medium, Semibold, Bold',\n sizePx: 14,\n sizeRem: '0.933rem',\n lineHeight: '148% / 158%',\n role: '본문 소형 텍스트',\n pubSizeToken: 'pub.font-size.14',\n semanticToken: 'pub.text.body.medium',\n pubHtmlExample: 'Pub reset 기본 · 위젯 타이틀·GNB 하단·헤더 날짜',\n },\n {\n id: 'body-small',\n category: 'Body',\n name: 'Body Small',\n weights: 'Regular',\n sizePx: 13,\n sizeRem: '0.87rem',\n lineHeight: '148%',\n role: '본문 소형 · 입력·드롭다운·테이블',\n pubSizeToken: 'pub.font-size.13',\n semanticToken: 'pub.text.body.small',\n pubHtmlExample: 'stn-table · stn-dropdown · stn-text-field · stn-btn(sm)',\n },\n {\n id: 'label-1',\n category: 'Label',\n name: 'Label 1',\n weights: 'Medium',\n sizePx: 17,\n sizeRem: '1.133rem',\n lineHeight: '148%',\n role: '버튼 라벨 (PC 권장)',\n pubSizeToken: 'pub.font-size.17',\n semanticToken: 'pub.text.label.large',\n },\n {\n id: 'label-2',\n category: 'Label',\n name: 'Label 2',\n weights: 'SemiBold',\n sizePx: 15,\n sizeRem: '1rem',\n lineHeight: '148%',\n role: '버튼, 입력 폼',\n pubSizeToken: 'pub.font-size.15',\n semanticToken: 'pub.text.label.medium',\n },\n {\n id: 'label-3',\n category: 'Label',\n name: 'Label 3',\n weights: 'Medium, Semibold',\n sizePx: 13,\n sizeRem: '0.87rem',\n lineHeight: '148%',\n role: '입력 레이블',\n pubSizeToken: 'pub.font-size.13',\n semanticToken: 'pub.text.label.small',\n pubHtmlExample: 'dashboard_map · GNB 2Depth · 장애 요약',\n },\n {\n id: 'label-4',\n category: 'Label',\n name: 'Label 4',\n weights: 'Medium, Semibold, Bold',\n sizePx: 10,\n sizeRem: '0.625rem',\n lineHeight: 'Auto',\n role: '바텀 아이콘 레이블',\n pubSizeToken: 'pub.font-size.10',\n semanticToken: 'pub.text.label.xsmall',\n },\n {\n id: 'caption-large',\n category: 'Caption',\n name: 'Caption Large',\n weights: 'Regular',\n sizePx: 14,\n sizeRem: '0.933rem',\n lineHeight: '130%',\n role: '캡션 대형 · 로그인 카드 서브캡션',\n pubSizeToken: 'pub.font-size.14',\n semanticToken: 'pub.text.caption.large',\n pubHtmlExample: 'stn-login-card 서브캡션',\n },\n {\n id: 'caption',\n category: 'Caption',\n name: 'Caption',\n weights: 'Medium, SemiBold',\n sizePx: 12,\n sizeRem: '0.8rem',\n lineHeight: '148%',\n role: '툴팁, 보조 설명',\n pubSizeToken: 'pub.font-size.12',\n semanticToken: 'pub.text.caption.medium',\n pubHtmlExample: 'alert_center 목록 · dashboard_map 등급 라벨·위젯 소제목',\n },\n {\n id: 'pub-11',\n category: 'Pub extension',\n name: '11px (Pub)',\n weights: 'Bold',\n sizePx: 11,\n sizeRem: '0.73rem',\n lineHeight: '148%',\n role: '지도 노드·알림 등급 태그 등 Pub 전용',\n pubSizeToken: 'pub.font-size.11',\n pubHtmlExample: 'dashboard_map · node_icon 라벨 · gnb_alert 태그',\n },\n]\n\n/** Type Scale id → 유틸리티 클래스 (styles/foundations/stn-typography.css) · StnText variant */\nexport const STN_TYPE_SCALE_CLASS: Record<string, { className: string; variant: string }> = {\n 'display-1': { className: 'stn-text-display-1', variant: 'display-1' },\n 'display-2': { className: 'stn-text-display-2', variant: 'display-2' },\n 'display-3': { className: 'stn-text-display-3', variant: 'display-3' },\n 'heading-1': { className: 'stn-text-heading-1', variant: 'heading-1' },\n 'heading-2': { className: 'stn-text-heading-2', variant: 'heading-2' },\n 'heading-3': { className: 'stn-text-heading-3', variant: 'heading-3' },\n 'title-1': { className: 'stn-text-title-1', variant: 'title-1' },\n 'title-2': { className: 'stn-text-title-2', variant: 'title-2' },\n 'title-3': { className: 'stn-text-title-3', variant: 'title-3' },\n 'body-1': { className: 'stn-text-body-1', variant: 'body-1' },\n 'body-2': { className: 'stn-text-body-2', variant: 'body-2' },\n 'body-3': { className: 'stn-text-body-3', variant: 'body-3' },\n 'body-small': { className: 'stn-text-body-small', variant: 'body-small' },\n 'label-1': { className: 'stn-text-label-1', variant: 'label-1' },\n 'label-2': { className: 'stn-text-label-2', variant: 'label-2' },\n 'label-3': { className: 'stn-text-label-3', variant: 'label-3' },\n 'label-4': { className: 'stn-text-label-4', variant: 'label-4' },\n 'caption-large': { className: 'stn-text-caption-large', variant: 'caption-large' },\n caption: { className: 'stn-text-caption', variant: 'caption' },\n}\n\nconst WEIGHT_LABEL: Record<number, string> = {\n 300: 'Regular',\n 500: 'Medium',\n 700: 'Bold',\n}\n\n/** px(+weight) → Type Scale 이름 (가장 가까운 스케일) */\nexport function resolveTypeScaleName(sizePx: number, weight = 400): {\n scale: string\n weightLabel: string\n pill: string\n} {\n const w = weight >= 600 ? 700 : weight >= 500 ? 500 : 300\n const weightLabel = WEIGHT_LABEL[w] ?? `${weight}`\n const row =\n STN_TYPE_SCALE_ROWS.find((r) => r.sizePx === sizePx) ??\n STN_TYPE_SCALE_ROWS.find((r) => Math.abs(r.sizePx - sizePx) <= 1)\n const scale = row?.name ?? `${sizePx}px`\n const pill = `${scale} (${sizePx}, ${w})`\n return { scale, weightLabel, pill }\n}\n\n/** dashboard_map Use case — Type Scale 기준 라벨 */\nexport function typeScalePill(\n scaleName: string,\n sizePx: number,\n weight: number,\n): string {\n return `${scaleName} (${sizePx}, ${weight})`\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,9 @@
1
+ // src/data/stnPackageVersion.ts
2
+ var STN_UI_VERSION = "0.1.77";
3
+ var STN_UI_VERSION_LABEL = "v0.1.77";
4
+
5
+ export {
6
+ STN_UI_VERSION,
7
+ STN_UI_VERSION_LABEL
8
+ };
9
+ //# sourceMappingURL=chunk-RSKMNZIS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/data/stnPackageVersion.ts"],"sourcesContent":["/** Package version constants */\nexport const STN_UI_VERSION = '0.1.77'\nexport const STN_UI_VERSION_LABEL = 'v0.1.77'\n"],"mappings":";AACO,IAAM,iBAAiB;AACvB,IAAM,uBAAuB;","names":[]}
@@ -59,7 +59,7 @@ export { STN_THEME_SEMANTIC_DARK_ROWS, STN_THEME_SEMANTIC_LIGHT_ROWS, StnThemeSe
59
59
  export { STN_TOAST_DEMO_MSG, STN_TOAST_ICON_SLUG, STN_TOAST_INTRO, STN_TOAST_KINDS, STN_TOAST_REACT_USAGE, STN_TOAST_SETUP, STN_TOAST_TOKEN_ROWS, STN_TOAST_USAGE_HTML, StnToastKind } from './stnToast.js';
60
60
  export { STN_TOGGLE_BUTTON_PLAYGROUND_DEFAULT, STN_TOGGLE_BUTTON_PLAYGROUND_INTRO, STN_TOGGLE_BUTTON_PLAYGROUND_PROPERTIES, STN_TOGGLE_BUTTON_REACT_USAGE, STN_TOGGLE_BUTTON_USAGE_HTML, StnToggleButtonPlaygroundConfig, countToggleButtonPlaygroundCombinations, describeToggleButtonPlaygroundReact, listToggleButtonPlaygroundMatrix } from './stnToggleButton.js';
61
61
  export { STN_TREE_DEMO, STN_TREE_FIGMA, STN_TREE_INTRO, STN_TREE_PARTS, STN_TREE_PATTERN_PLAYGROUND_DEFAULT, STN_TREE_PATTERN_PLAYGROUND_PROPERTIES, STN_TREE_REACT_EXAMPLE, STN_TREE_SECTION_SIDE_FIGMA, STN_TREE_USAGE_HTML, StnTreeDemoNode, StnTreePatternPlaygroundConfig, describeTreePatternReact } from './stnTree.js';
62
- export { STN_TYPE_SCALE_INTRO, STN_TYPE_SCALE_ROWS, StnTypeScaleCategory, StnTypeScaleRow, resolveTypeScaleName, typeScalePill } from './stnTypeScale.js';
62
+ export { STN_TYPE_SCALE_CLASS, STN_TYPE_SCALE_INTRO, STN_TYPE_SCALE_ROWS, StnTypeScaleCategory, StnTypeScaleRow, resolveTypeScaleName, typeScalePill } from './stnTypeScale.js';
63
63
  export { STN_FONT_FAMILY_ROWS, STN_FONT_SIZE_ROWS, STN_FONT_WEIGHT_ROWS, STN_LINE_HEIGHT_ROWS, STN_TYPOGRAPHY_PRIMITIVE_GROUPS, STN_TYPOGRAPHY_SEMANTIC_ROWS, StnTypographyPrimitiveRow, StnTypographySemanticRow, typographyPrimitivesToJson, typographySemanticsToJson } from './stnTypography.js';
64
64
  export { STN_CARD_INTRO, STN_CARD_PADDINGS, STN_CARD_RADII, STN_CARD_SEVERITIES, STN_CARD_VARIANTS, StnCardPadding, StnCardRadius, StnCardSeverity, StnCardVariant } from './stnCard.js';
65
65
  export { STN_ALERT_CENTER_DASHBOARD_USAGE, STN_ALERT_CENTER_DASHBOARD_WIDGETS, STN_WIDGET_APPEARANCE_ROWS, STN_WIDGET_CHART_SLOT_HTML, STN_WIDGET_CHART_SLOT_REACT, STN_WIDGET_DISABILITY_STATUS_DEMO, STN_WIDGET_FIGMA, STN_WIDGET_FIGMA_DARK, STN_WIDGET_FIGMA_DARK_URL, STN_WIDGET_FIGMA_SHELL_HTML, STN_WIDGET_FIGMA_SHELL_REACT, STN_WIDGET_FIGMA_URL, STN_WIDGET_GRADE_ROW_DEMO, STN_WIDGET_HEADER_HTML, STN_WIDGET_HEADER_REACT, STN_WIDGET_INTRO, STN_WIDGET_KINDS, STN_WIDGET_SHELL_ROWS, STN_WIDGET_TOP5_BARS_DEMO, STN_WIDGET_TRAFFIC_BARS_DEMO, STN_WIDGET_USAGE, STN_WIDGET_USAGE_HTML, StnWidgetAppearance, StnWidgetAppearanceLegacy, StnWidgetAppearanceShell, StnWidgetAssetId, StnWidgetBackgroundMode, StnWidgetContentFamily, StnWidgetGradeRowGrade, StnWidgetKind, StnWidgetKindBodySlot, StnWidgetKindPreview, StnWidgetShell, buildStnWidgetKindUsage, getStnWidgetKind, isStnWidgetKindSlug, normalizeStnWidgetAppearance, resolveStnWidgetBackground, resolveStnWidgetKindAppearance, resolveStnWidgetKindBodySlot, stnWidgetSampleUrl } from './stnWidget.js';
@@ -10,11 +10,12 @@ import {
10
10
  listToggleButtonPlaygroundMatrix
11
11
  } from "../chunk-7AMA6OZ6.js";
12
12
  import {
13
+ STN_TYPE_SCALE_CLASS,
13
14
  STN_TYPE_SCALE_INTRO,
14
15
  STN_TYPE_SCALE_ROWS,
15
16
  resolveTypeScaleName,
16
17
  typeScalePill
17
- } from "../chunk-VC72NQIU.js";
18
+ } from "../chunk-EKPLU5KT.js";
18
19
  import {
19
20
  STN_FONT_FAMILY_ROWS,
20
21
  STN_FONT_SIZE_ROWS,
@@ -136,7 +137,7 @@ import {
136
137
  import {
137
138
  STN_UI_VERSION,
138
139
  STN_UI_VERSION_LABEL
139
- } from "../chunk-RY53LLWK.js";
140
+ } from "../chunk-RSKMNZIS.js";
140
141
  import {
141
142
  STN_PAGE_ENTER_MOTION_INTRO,
142
143
  STN_PAGE_ENTER_MOTION_ROWS,
@@ -891,6 +892,7 @@ export {
891
892
  STN_TREE_REACT_EXAMPLE,
892
893
  STN_TREE_SECTION_SIDE_FIGMA,
893
894
  STN_TREE_USAGE_HTML,
895
+ STN_TYPE_SCALE_CLASS,
894
896
  STN_TYPE_SCALE_INTRO,
895
897
  STN_TYPE_SCALE_ROWS,
896
898
  STN_TYPOGRAPHY_PRIMITIVE_GROUPS,
@@ -1,5 +1,5 @@
1
1
  /** Package version constants */
2
- declare const STN_UI_VERSION = "0.1.76";
3
- declare const STN_UI_VERSION_LABEL = "v0.1.76";
2
+ declare const STN_UI_VERSION = "0.1.77";
3
+ declare const STN_UI_VERSION_LABEL = "v0.1.77";
4
4
 
5
5
  export { STN_UI_VERSION, STN_UI_VERSION_LABEL };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  STN_UI_VERSION,
3
3
  STN_UI_VERSION_LABEL
4
- } from "../chunk-RY53LLWK.js";
4
+ } from "../chunk-RSKMNZIS.js";
5
5
  export {
6
6
  STN_UI_VERSION,
7
7
  STN_UI_VERSION_LABEL
@@ -20,6 +20,11 @@ type StnTypeScaleRow = {
20
20
  };
21
21
  declare const STN_TYPE_SCALE_INTRO = "Display, Heading, Title, Body, Label, Caption\uC73C\uB85C \uC815\uC758\uD55C 6\uB2E8\uACC4 \uC704\uACC4\uC5D0 \uB9DE\uAC8C \uC870\uD569\uD558\uC5EC \uC0AC\uC6A9\uD569\uB2C8\uB2E4.";
22
22
  declare const STN_TYPE_SCALE_ROWS: StnTypeScaleRow[];
23
+ /** Type Scale id → 유틸리티 클래스 (styles/foundations/stn-typography.css) · StnText variant */
24
+ declare const STN_TYPE_SCALE_CLASS: Record<string, {
25
+ className: string;
26
+ variant: string;
27
+ }>;
23
28
  /** px(+weight) → Type Scale 이름 (가장 가까운 스케일) */
24
29
  declare function resolveTypeScaleName(sizePx: number, weight?: number): {
25
30
  scale: string;
@@ -29,4 +34,4 @@ declare function resolveTypeScaleName(sizePx: number, weight?: number): {
29
34
  /** dashboard_map Use case — Type Scale 기준 라벨 */
30
35
  declare function typeScalePill(scaleName: string, sizePx: number, weight: number): string;
31
36
 
32
- export { STN_TYPE_SCALE_INTRO, STN_TYPE_SCALE_ROWS, type StnTypeScaleCategory, type StnTypeScaleRow, resolveTypeScaleName, typeScalePill };
37
+ export { STN_TYPE_SCALE_CLASS, STN_TYPE_SCALE_INTRO, STN_TYPE_SCALE_ROWS, type StnTypeScaleCategory, type StnTypeScaleRow, resolveTypeScaleName, typeScalePill };
@@ -1,10 +1,12 @@
1
1
  import {
2
+ STN_TYPE_SCALE_CLASS,
2
3
  STN_TYPE_SCALE_INTRO,
3
4
  STN_TYPE_SCALE_ROWS,
4
5
  resolveTypeScaleName,
5
6
  typeScalePill
6
- } from "../chunk-VC72NQIU.js";
7
+ } from "../chunk-EKPLU5KT.js";
7
8
  export {
9
+ STN_TYPE_SCALE_CLASS,
8
10
  STN_TYPE_SCALE_INTRO,
9
11
  STN_TYPE_SCALE_ROWS,
10
12
  resolveTypeScaleName,
package/dist/index.d.ts CHANGED
@@ -59,7 +59,7 @@ export { STN_THEME_SEMANTIC_DARK_ROWS, STN_THEME_SEMANTIC_LIGHT_ROWS, StnThemeSe
59
59
  export { STN_TOAST_DEMO_MSG, STN_TOAST_ICON_SLUG, STN_TOAST_INTRO, STN_TOAST_KINDS, STN_TOAST_REACT_USAGE, STN_TOAST_SETUP, STN_TOAST_TOKEN_ROWS, STN_TOAST_USAGE_HTML, StnToastKind } from './data/stnToast.js';
60
60
  export { STN_TOGGLE_BUTTON_PLAYGROUND_DEFAULT, STN_TOGGLE_BUTTON_PLAYGROUND_INTRO, STN_TOGGLE_BUTTON_PLAYGROUND_PROPERTIES, STN_TOGGLE_BUTTON_REACT_USAGE, STN_TOGGLE_BUTTON_USAGE_HTML, StnToggleButtonPlaygroundConfig, countToggleButtonPlaygroundCombinations, describeToggleButtonPlaygroundReact, listToggleButtonPlaygroundMatrix } from './data/stnToggleButton.js';
61
61
  export { STN_TREE_DEMO, STN_TREE_FIGMA, STN_TREE_INTRO, STN_TREE_PARTS, STN_TREE_PATTERN_PLAYGROUND_DEFAULT, STN_TREE_PATTERN_PLAYGROUND_PROPERTIES, STN_TREE_REACT_EXAMPLE, STN_TREE_SECTION_SIDE_FIGMA, STN_TREE_USAGE_HTML, StnTreeDemoNode, StnTreePatternPlaygroundConfig, describeTreePatternReact } from './data/stnTree.js';
62
- export { STN_TYPE_SCALE_INTRO, STN_TYPE_SCALE_ROWS, StnTypeScaleCategory, StnTypeScaleRow, resolveTypeScaleName, typeScalePill } from './data/stnTypeScale.js';
62
+ export { STN_TYPE_SCALE_CLASS, STN_TYPE_SCALE_INTRO, STN_TYPE_SCALE_ROWS, StnTypeScaleCategory, StnTypeScaleRow, resolveTypeScaleName, typeScalePill } from './data/stnTypeScale.js';
63
63
  export { STN_FONT_FAMILY_ROWS, STN_FONT_SIZE_ROWS, STN_FONT_WEIGHT_ROWS, STN_LINE_HEIGHT_ROWS, STN_TYPOGRAPHY_PRIMITIVE_GROUPS, STN_TYPOGRAPHY_SEMANTIC_ROWS, StnTypographyPrimitiveRow, StnTypographySemanticRow, typographyPrimitivesToJson, typographySemanticsToJson } from './data/stnTypography.js';
64
64
  export { STN_CARD_INTRO, STN_CARD_PADDINGS, STN_CARD_RADII, STN_CARD_SEVERITIES, STN_CARD_VARIANTS, StnCardPadding, StnCardRadius, StnCardSeverity, StnCardVariant } from './data/stnCard.js';
65
65
  export { STN_ALERT_CENTER_DASHBOARD_USAGE, STN_ALERT_CENTER_DASHBOARD_WIDGETS, STN_WIDGET_APPEARANCE_ROWS, STN_WIDGET_CHART_SLOT_HTML, STN_WIDGET_CHART_SLOT_REACT, STN_WIDGET_DISABILITY_STATUS_DEMO, STN_WIDGET_FIGMA, STN_WIDGET_FIGMA_DARK, STN_WIDGET_FIGMA_DARK_URL, STN_WIDGET_FIGMA_SHELL_HTML, STN_WIDGET_FIGMA_SHELL_REACT, STN_WIDGET_FIGMA_URL, STN_WIDGET_GRADE_ROW_DEMO, STN_WIDGET_HEADER_HTML, STN_WIDGET_HEADER_REACT, STN_WIDGET_INTRO, STN_WIDGET_KINDS, STN_WIDGET_SHELL_ROWS, STN_WIDGET_TOP5_BARS_DEMO, STN_WIDGET_TRAFFIC_BARS_DEMO, STN_WIDGET_USAGE, STN_WIDGET_USAGE_HTML, StnWidgetAppearance, StnWidgetAppearanceLegacy, StnWidgetAppearanceShell, StnWidgetAssetId, StnWidgetBackgroundMode, StnWidgetContentFamily, StnWidgetGradeRowGrade, StnWidgetKind, StnWidgetKindBodySlot, StnWidgetKindPreview, StnWidgetShell, buildStnWidgetKindUsage, getStnWidgetKind, isStnWidgetKindSlug, normalizeStnWidgetAppearance, resolveStnWidgetBackground, resolveStnWidgetKindAppearance, resolveStnWidgetKindBodySlot, stnWidgetSampleUrl } from './data/stnWidget.js';
package/dist/index.js CHANGED
@@ -15,11 +15,12 @@ import {
15
15
  listToggleButtonPlaygroundMatrix
16
16
  } from "./chunk-7AMA6OZ6.js";
17
17
  import {
18
+ STN_TYPE_SCALE_CLASS,
18
19
  STN_TYPE_SCALE_INTRO,
19
20
  STN_TYPE_SCALE_ROWS,
20
21
  resolveTypeScaleName,
21
22
  typeScalePill
22
- } from "./chunk-VC72NQIU.js";
23
+ } from "./chunk-EKPLU5KT.js";
23
24
  import {
24
25
  STN_FONT_FAMILY_ROWS,
25
26
  STN_FONT_SIZE_ROWS,
@@ -141,7 +142,7 @@ import {
141
142
  import {
142
143
  STN_UI_VERSION,
143
144
  STN_UI_VERSION_LABEL
144
- } from "./chunk-RY53LLWK.js";
145
+ } from "./chunk-RSKMNZIS.js";
145
146
  import {
146
147
  STN_PAGE_ENTER_MOTION_INTRO,
147
148
  STN_PAGE_ENTER_MOTION_ROWS,
@@ -896,6 +897,7 @@ export {
896
897
  STN_TREE_REACT_EXAMPLE,
897
898
  STN_TREE_SECTION_SIDE_FIGMA,
898
899
  STN_TREE_USAGE_HTML,
900
+ STN_TYPE_SCALE_CLASS,
899
901
  STN_TYPE_SCALE_INTRO,
900
902
  STN_TYPE_SCALE_ROWS,
901
903
  STN_TYPOGRAPHY_PRIMITIVE_GROUPS,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stn-uiux/pub-ui",
3
- "version": "0.1.76",
3
+ "version": "0.1.77",
4
4
  "description": "STN Pub design system — tokens, specs, and CSS for product HTML / React apps",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -0,0 +1,166 @@
1
+ @charset "utf-8";
2
+ /**
3
+ * STN Design System — Typography Utilities (Type Scale)
4
+ * Foundation › Typography 문서의 Type Scale 이름을 그대로 클래스화합니다.
5
+ * 모든 값은 --stn-text-* / --stn-font-* 시맨틱 토큰만 사용합니다.
6
+ *
7
+ * 사용: <h1 class="stn-text-heading-1">페이지 제목</h1>
8
+ * 수정자: .stn-text-weight-*, .stn-text-color-*, .stn-text-truncate
9
+ */
10
+
11
+ /* ── Display ───────────────────────────────────────────── */
12
+ .stn-text-display-1 {
13
+ font-family: var(--stn-font-display);
14
+ font-size: var(--stn-text-display-xlarge-size);
15
+ font-weight: var(--stn-text-display-xlarge-weight);
16
+ line-height: var(--stn-text-display-xlarge-line-height);
17
+ }
18
+ .stn-text-display-2 {
19
+ font-family: var(--stn-font-display);
20
+ font-size: var(--stn-text-display-large-size);
21
+ font-weight: var(--stn-text-display-large-weight);
22
+ line-height: var(--stn-text-display-large-line-height);
23
+ }
24
+ .stn-text-display-3 {
25
+ font-family: var(--stn-font-display);
26
+ font-size: var(--stn-text-display-medium-size);
27
+ font-weight: var(--stn-text-display-medium-weight);
28
+ line-height: var(--stn-text-display-medium-line-height);
29
+ }
30
+
31
+ /* ── Heading ───────────────────────────────────────────── */
32
+ .stn-text-heading-1 {
33
+ font-family: var(--stn-font-display);
34
+ font-size: var(--stn-text-heading-large-size);
35
+ font-weight: var(--stn-text-heading-large-weight);
36
+ line-height: var(--stn-text-heading-large-line-height);
37
+ }
38
+ .stn-text-heading-2 {
39
+ font-family: var(--stn-font-display);
40
+ font-size: var(--stn-text-heading-medium-size);
41
+ font-weight: var(--stn-text-heading-medium-weight);
42
+ line-height: var(--stn-text-heading-medium-line-height);
43
+ }
44
+ .stn-text-heading-3 {
45
+ font-family: var(--stn-font-display);
46
+ font-size: var(--stn-text-heading-small-size);
47
+ font-weight: var(--stn-text-heading-small-weight);
48
+ line-height: var(--stn-text-heading-small-line-height);
49
+ }
50
+
51
+ /* ── Title ─────────────────────────────────────────────── */
52
+ .stn-text-title-1 {
53
+ font-family: var(--stn-font-body);
54
+ font-size: var(--stn-text-title-large-size);
55
+ font-weight: var(--stn-text-title-large-weight);
56
+ line-height: var(--stn-text-title-large-line-height);
57
+ }
58
+ .stn-text-title-2 {
59
+ font-family: var(--stn-font-body);
60
+ font-size: var(--stn-text-title-medium-size);
61
+ font-weight: var(--stn-text-title-medium-weight);
62
+ line-height: var(--stn-text-title-medium-line-height);
63
+ }
64
+ .stn-text-title-3 {
65
+ font-family: var(--stn-font-body);
66
+ font-size: var(--stn-text-title-small-size);
67
+ font-weight: var(--stn-text-title-small-weight);
68
+ line-height: var(--stn-text-title-small-line-height);
69
+ }
70
+
71
+ /* ── Body ──────────────────────────────────────────────── */
72
+ .stn-text-body-1 {
73
+ font-family: var(--stn-font-body);
74
+ font-size: var(--stn-text-body-large-size);
75
+ font-weight: var(--stn-text-body-large-weight);
76
+ line-height: var(--stn-text-body-large-line-height);
77
+ }
78
+ .stn-text-body-2 {
79
+ font-family: var(--stn-font-body);
80
+ font-size: var(--stn-text-body-medium-large-size);
81
+ font-weight: var(--stn-text-body-medium-large-weight);
82
+ line-height: var(--stn-text-body-medium-large-line-height);
83
+ }
84
+ .stn-text-body-3 {
85
+ font-family: var(--stn-font-body);
86
+ font-size: var(--stn-text-body-medium-size);
87
+ font-weight: var(--stn-text-body-medium-weight);
88
+ line-height: var(--stn-text-body-medium-line-height);
89
+ }
90
+ .stn-text-body-small {
91
+ font-family: var(--stn-font-body);
92
+ font-size: var(--stn-text-body-small-size);
93
+ font-weight: var(--stn-text-body-small-weight);
94
+ line-height: var(--stn-text-body-small-line-height);
95
+ }
96
+
97
+ /* ── Label ─────────────────────────────────────────────── */
98
+ .stn-text-label-1 {
99
+ font-family: var(--stn-font-body);
100
+ font-size: var(--stn-text-label-large-size);
101
+ font-weight: var(--stn-text-label-large-weight);
102
+ line-height: var(--stn-text-label-large-line-height);
103
+ }
104
+ .stn-text-label-2 {
105
+ font-family: var(--stn-font-body);
106
+ font-size: var(--stn-text-label-medium-size);
107
+ font-weight: var(--stn-text-label-medium-weight);
108
+ line-height: var(--stn-text-label-medium-line-height);
109
+ }
110
+ .stn-text-label-3 {
111
+ font-family: var(--stn-font-body);
112
+ font-size: var(--stn-text-label-small-size);
113
+ font-weight: var(--stn-text-label-small-weight);
114
+ line-height: var(--stn-text-label-small-line-height);
115
+ }
116
+ .stn-text-label-4 {
117
+ font-family: var(--stn-font-body);
118
+ font-size: var(--stn-text-label-xsmall-size);
119
+ font-weight: var(--stn-text-label-xsmall-weight);
120
+ line-height: var(--stn-text-label-xsmall-line-height);
121
+ }
122
+
123
+ /* ── Caption ───────────────────────────────────────────── */
124
+ .stn-text-caption-large {
125
+ font-family: var(--stn-font-body);
126
+ font-size: var(--stn-text-caption-large-size);
127
+ font-weight: var(--stn-text-caption-large-weight);
128
+ line-height: var(--stn-text-caption-large-line-height);
129
+ }
130
+ .stn-text-caption {
131
+ font-family: var(--stn-font-body);
132
+ font-size: var(--stn-text-caption-medium-size);
133
+ font-weight: var(--stn-text-caption-medium-weight);
134
+ line-height: var(--stn-text-caption-medium-line-height);
135
+ }
136
+
137
+ /* ── Weight modifiers ──────────────────────────────────── */
138
+ .stn-text-weight-regular { font-weight: var(--stn-font-weight-regular); }
139
+ .stn-text-weight-medium { font-weight: var(--stn-font-weight-medium); }
140
+ .stn-text-weight-semibold { font-weight: var(--stn-font-weight-semibold); }
141
+ .stn-text-weight-bold { font-weight: var(--stn-font-weight-bold); }
142
+
143
+ /* ── Color modifiers ───────────────────────────────────── */
144
+ .stn-text-color-primary { color: var(--stn-text-primary); }
145
+ .stn-text-color-secondary { color: var(--stn-text-secondary); }
146
+ .stn-text-color-tertiary { color: var(--stn-text-tertiary); }
147
+ .stn-text-color-muted { color: var(--stn-text-muted); }
148
+ .stn-text-color-success { color: var(--stn-feedback-success); }
149
+ .stn-text-color-error { color: var(--stn-feedback-error); }
150
+ .stn-text-color-info { color: var(--stn-feedback-info); }
151
+ .stn-text-color-critical { color: var(--stn-grade-critical); }
152
+ .stn-text-color-major { color: var(--stn-grade-major); }
153
+ .stn-text-color-minor { color: var(--stn-grade-minor); }
154
+ .stn-text-color-warning { color: var(--stn-grade-warning); }
155
+
156
+ /* ── Layout helpers ────────────────────────────────────── */
157
+ .stn-text-truncate {
158
+ overflow: hidden;
159
+ text-overflow: ellipsis;
160
+ white-space: nowrap;
161
+ }
162
+ .stn-text-reset-margin { margin: 0; }
163
+ .stn-text-numeric {
164
+ font-family: var(--stn-font-number);
165
+ font-variant-numeric: tabular-nums;
166
+ }
@@ -26,6 +26,7 @@
26
26
 
27
27
  /* --- 2. Utils & Reset --- */
28
28
  @import './utils/reset.css';
29
+ @import './foundations/stn-typography.css';
29
30
 
30
31
  /* --- 3. Layouts (Pure Screen Skeletons) --- */
31
32
  @import './layouts/stn-layout.css';
@@ -9,13 +9,14 @@
9
9
  :root {
10
10
  --stn-font-display: var(--stn-font-family-pretendard);
11
11
  --stn-font-body: var(--stn-font-family-pretendard);
12
- --stn-text-display-xlarge-size: var(--stn-font-size-60);
12
+ --stn-font-number: var(--stn-font-family-pretendard);
13
+ --stn-text-display-xlarge-size: var(--stn-font-size-52);
13
14
  --stn-text-display-xlarge-weight: var(--stn-font-weight-bold);
14
15
  --stn-text-display-xlarge-line-height: var(--stn-line-height-reading-3);
15
- --stn-text-display-large-size: var(--stn-font-size-40);
16
+ --stn-text-display-large-size: var(--stn-font-size-44);
16
17
  --stn-text-display-large-weight: var(--stn-font-weight-bold);
17
18
  --stn-text-display-large-line-height: var(--stn-line-height-reading-3);
18
- --stn-text-display-medium-size: var(--stn-font-size-36);
19
+ --stn-text-display-medium-size: var(--stn-font-size-40);
19
20
  --stn-text-display-medium-weight: var(--stn-font-weight-bold);
20
21
  --stn-text-display-medium-line-height: var(--stn-line-height-default);
21
22
  --stn-text-heading-large-size: var(--stn-font-size-32);
@@ -39,6 +40,9 @@
39
40
  --stn-text-body-large-size: var(--stn-font-size-16);
40
41
  --stn-text-body-large-weight: var(--stn-font-weight-regular);
41
42
  --stn-text-body-large-line-height: var(--stn-line-height-default);
43
+ --stn-text-body-medium-large-size: var(--stn-font-size-15);
44
+ --stn-text-body-medium-large-weight: var(--stn-font-weight-regular);
45
+ --stn-text-body-medium-large-line-height: var(--stn-line-height-default);
42
46
  --stn-text-body-medium-size: var(--stn-font-size-14);
43
47
  --stn-text-body-medium-weight: var(--stn-font-weight-regular);
44
48
  --stn-text-body-medium-line-height: var(--stn-line-height-default);
@@ -9,9 +9,9 @@
9
9
  :root {
10
10
  --stn-font-family-pretendard: Pretendard, -apple-system, BlinkMacSystemFont, system-ui, 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic', sans-serif;
11
11
  --stn-font-size-base: 16px;
12
- --stn-font-size-60: calc(var(--stn-font-size-base) * 60 / 16);
13
- --stn-font-size-45: calc(var(--stn-font-size-base) * 45 / 16);
14
- --stn-font-size-42: calc(var(--stn-font-size-base) * 42 / 16);
12
+ --stn-font-size-52: calc(var(--stn-font-size-base) * 52 / 16);
13
+ --stn-font-size-48: calc(var(--stn-font-size-base) * 48 / 16);
14
+ --stn-font-size-44: calc(var(--stn-font-size-base) * 44 / 16);
15
15
  --stn-font-size-40: calc(var(--stn-font-size-base) * 40 / 16);
16
16
  --stn-font-size-36: calc(var(--stn-font-size-base) * 36 / 16);
17
17
  --stn-font-size-32: calc(var(--stn-font-size-base) * 32 / 16);
@@ -1,9 +0,0 @@
1
- // src/data/stnPackageVersion.ts
2
- var STN_UI_VERSION = "0.1.76";
3
- var STN_UI_VERSION_LABEL = "v0.1.76";
4
-
5
- export {
6
- STN_UI_VERSION,
7
- STN_UI_VERSION_LABEL
8
- };
9
- //# sourceMappingURL=chunk-RY53LLWK.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/data/stnPackageVersion.ts"],"sourcesContent":["/** Package version constants */\nexport const STN_UI_VERSION = '0.1.76'\nexport const STN_UI_VERSION_LABEL = 'v0.1.76'\n"],"mappings":";AACO,IAAM,iBAAiB;AACvB,IAAM,uBAAuB;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/data/stnTypeScale.ts"],"sourcesContent":["/**\n * Figma Type Scale — Display / Heading / Title / Body / Label / Caption\n * Pub HTML은 primitive(font-size·weight)로 조합하며, semantic samples는 일부만 시연합니다.\n */\n\nexport type StnTypeScaleCategory =\n | 'Display'\n | 'Heading'\n | 'Title'\n | 'Body'\n | 'Label'\n | 'Caption'\n | 'Pub extension'\n\nexport type StnTypeScaleRow = {\n id: string\n category: StnTypeScaleCategory\n name: string\n weights: string\n sizePx: number\n sizeRem: string\n lineHeight: string\n role: string\n pubSizeToken: string\n /** Tokens 탭 semantic (있으면) */\n semanticToken?: string\n /** dashboard_map.html 등 실제 화면 예 (있을 때만) */\n pubHtmlExample?: string\n}\n\nexport const STN_TYPE_SCALE_INTRO =\n 'Display, Heading, Title, Body, Label, Caption으로 정의한 6단계 위계에 맞게 조합하여 사용합니다.'\n\nexport const STN_TYPE_SCALE_ROWS: StnTypeScaleRow[] = [\n {\n id: 'display-1',\n category: 'Display',\n name: 'Display 1',\n weights: 'Medium, Bold',\n sizePx: 60,\n sizeRem: '4rem',\n lineHeight: '130%',\n role: '최상위 헤드라인 (PC권장)',\n pubSizeToken: 'pub.font-size.60',\n semanticToken: 'pub.text.display.xlarge',\n },\n {\n id: 'display-2',\n category: 'Display',\n name: 'Display 2',\n weights: 'Medium, Bold',\n sizePx: 40,\n sizeRem: '2.67rem',\n lineHeight: '130%',\n role: '메인 타이틀 (PC 권장)',\n pubSizeToken: 'pub.font-size.40',\n semanticToken: 'pub.text.display.large',\n },\n {\n id: 'display-3',\n category: 'Display',\n name: 'Display 3',\n weights: 'Medium, Bold',\n sizePx: 36,\n sizeRem: '2.4rem',\n lineHeight: '148%',\n role: '강조형 헤드라인',\n pubSizeToken: 'pub.font-size.36',\n semanticToken: 'pub.text.display.medium',\n },\n {\n id: 'heading-1',\n category: 'Heading',\n name: 'Heading 1',\n weights: 'Medium, Bold',\n sizePx: 32,\n sizeRem: '2.133rem',\n lineHeight: '148%',\n role: '페이지 상위 제목',\n pubSizeToken: 'pub.font-size.32',\n semanticToken: 'pub.text.heading.large',\n pubHtmlExample: 'dashboard_map · converged-header 페이지명',\n },\n {\n id: 'heading-2',\n category: 'Heading',\n name: 'Heading 2',\n weights: 'Medium, Bold',\n sizePx: 24,\n sizeRem: '1.6rem',\n lineHeight: '148%',\n role: '하위 제목',\n pubSizeToken: 'pub.font-size.24',\n semanticToken: 'pub.text.heading.medium',\n pubHtmlExample: 'dashboard_map · 장애 등급 수치(24px Bold)',\n },\n {\n id: 'heading-3',\n category: 'Heading',\n name: 'Heading 3',\n weights: 'Medium, Bold',\n sizePx: 22,\n sizeRem: '1.47rem',\n lineHeight: '148%',\n role: '소제목, 그룹 제목',\n pubSizeToken: 'pub.font-size.22',\n semanticToken: 'pub.text.heading.small',\n },\n {\n id: 'title-1',\n category: 'Title',\n name: 'Title 1',\n weights: 'Medium, Bold',\n sizePx: 20,\n sizeRem: '1.33rem',\n lineHeight: '148%',\n role: '콘텐츠 타이틀',\n pubSizeToken: 'pub.font-size.20',\n semanticToken: 'pub.text.title.large',\n pubHtmlExample: 'dashboard_map · 헤더 시계(#time)',\n },\n {\n id: 'title-2',\n category: 'Title',\n name: 'Title 2',\n weights: 'Medium, Semibold, Bold',\n sizePx: 18,\n sizeRem: '1.2rem',\n lineHeight: '148%',\n role: '서브 페이지 제목',\n pubSizeToken: 'pub.font-size.18',\n semanticToken: 'pub.text.title.medium',\n pubHtmlExample: 'alert_center · 모달 타이틀「알림센터」',\n },\n {\n id: 'title-3',\n category: 'Title',\n name: 'Title 3',\n weights: 'Medium',\n sizePx: 16,\n sizeRem: '1.07rem',\n lineHeight: '148%',\n role: '서브 타이틀 · 헤더',\n pubSizeToken: 'pub.font-size.16',\n semanticToken: 'pub.text.title.small',\n pubHtmlExample: 'stn-header · stn-widget 헤더',\n },\n {\n id: 'body-1',\n category: 'Body',\n name: 'Body 1',\n weights: 'Regular, Medium, Semibold, Bold',\n sizePx: 16,\n sizeRem: '1.07rem',\n lineHeight: '148% / 170%',\n role: '본문 텍스트 (PC 권장)',\n pubSizeToken: 'pub.font-size.16',\n semanticToken: 'pub.text.body.large',\n pubHtmlExample: 'dashboard_map · fault_table 본문 셀',\n },\n {\n id: 'body-2',\n category: 'Body',\n name: 'Body 2',\n weights: 'Regular, Medium, Semibold, Bold',\n sizePx: 15,\n sizeRem: '1rem',\n lineHeight: '148% / 158%',\n role: '본문 텍스트',\n pubSizeToken: 'pub.font-size.15',\n pubHtmlExample: 'dashboard_map · GNB 1Depth · 테이블 헤더',\n },\n {\n id: 'body-3',\n category: 'Body',\n name: 'Body 3',\n weights: 'Regular, Medium, Semibold, Bold',\n sizePx: 14,\n sizeRem: '0.933rem',\n lineHeight: '148% / 158%',\n role: '본문 소형 텍스트',\n pubSizeToken: 'pub.font-size.14',\n semanticToken: 'pub.text.body.medium',\n pubHtmlExample: 'Pub reset 기본 · 위젯 타이틀·GNB 하단·헤더 날짜',\n },\n {\n id: 'body-small',\n category: 'Body',\n name: 'Body Small',\n weights: 'Regular',\n sizePx: 13,\n sizeRem: '0.87rem',\n lineHeight: '148%',\n role: '본문 소형 · 입력·드롭다운·테이블',\n pubSizeToken: 'pub.font-size.13',\n semanticToken: 'pub.text.body.small',\n pubHtmlExample: 'stn-table · stn-dropdown · stn-text-field · stn-btn(sm)',\n },\n {\n id: 'label-1',\n category: 'Label',\n name: 'Label 1',\n weights: 'Medium',\n sizePx: 17,\n sizeRem: '1.133rem',\n lineHeight: '148%',\n role: '버튼 라벨 (PC 권장)',\n pubSizeToken: 'pub.font-size.17',\n semanticToken: 'pub.text.label.large',\n },\n {\n id: 'label-2',\n category: 'Label',\n name: 'Label 2',\n weights: 'SemiBold',\n sizePx: 15,\n sizeRem: '1rem',\n lineHeight: '148%',\n role: '버튼, 입력 폼',\n pubSizeToken: 'pub.font-size.15',\n semanticToken: 'pub.text.label.medium',\n },\n {\n id: 'label-3',\n category: 'Label',\n name: 'Label 3',\n weights: 'Medium, Semibold',\n sizePx: 13,\n sizeRem: '0.87rem',\n lineHeight: '148%',\n role: '입력 레이블',\n pubSizeToken: 'pub.font-size.13',\n semanticToken: 'pub.text.label.small',\n pubHtmlExample: 'dashboard_map · GNB 2Depth · 장애 요약',\n },\n {\n id: 'label-4',\n category: 'Label',\n name: 'Label 4',\n weights: 'Medium, Semibold, Bold',\n sizePx: 10,\n sizeRem: '0.625rem',\n lineHeight: 'Auto',\n role: '바텀 아이콘 레이블',\n pubSizeToken: 'pub.font-size.10',\n semanticToken: 'pub.text.label.xsmall',\n },\n {\n id: 'caption-large',\n category: 'Caption',\n name: 'Caption Large',\n weights: 'Regular',\n sizePx: 14,\n sizeRem: '0.933rem',\n lineHeight: '130%',\n role: '캡션 대형 · 로그인 카드 서브캡션',\n pubSizeToken: 'pub.font-size.14',\n semanticToken: 'pub.text.caption.large',\n pubHtmlExample: 'stn-login-card 서브캡션',\n },\n {\n id: 'caption',\n category: 'Caption',\n name: 'Caption',\n weights: 'Medium, SemiBold',\n sizePx: 12,\n sizeRem: '0.8rem',\n lineHeight: '148%',\n role: '툴팁, 보조 설명',\n pubSizeToken: 'pub.font-size.12',\n semanticToken: 'pub.text.caption.medium',\n pubHtmlExample: 'alert_center 목록 · dashboard_map 등급 라벨·위젯 소제목',\n },\n {\n id: 'pub-11',\n category: 'Pub extension',\n name: '11px (Pub)',\n weights: 'Bold',\n sizePx: 11,\n sizeRem: '0.73rem',\n lineHeight: '148%',\n role: '지도 노드·알림 등급 태그 등 Pub 전용',\n pubSizeToken: 'pub.font-size.11',\n pubHtmlExample: 'dashboard_map · node_icon 라벨 · gnb_alert 태그',\n },\n]\n\nconst WEIGHT_LABEL: Record<number, string> = {\n 300: 'Regular',\n 500: 'Medium',\n 700: 'Bold',\n}\n\n/** px(+weight) → Type Scale 이름 (가장 가까운 스케일) */\nexport function resolveTypeScaleName(sizePx: number, weight = 400): {\n scale: string\n weightLabel: string\n pill: string\n} {\n const w = weight >= 600 ? 700 : weight >= 500 ? 500 : 300\n const weightLabel = WEIGHT_LABEL[w] ?? `${weight}`\n const row =\n STN_TYPE_SCALE_ROWS.find((r) => r.sizePx === sizePx) ??\n STN_TYPE_SCALE_ROWS.find((r) => Math.abs(r.sizePx - sizePx) <= 1)\n const scale = row?.name ?? `${sizePx}px`\n const pill = `${scale} (${sizePx}, ${w})`\n return { scale, weightLabel, pill }\n}\n\n/** dashboard_map Use case — Type Scale 기준 라벨 */\nexport function typeScalePill(\n scaleName: string,\n sizePx: number,\n weight: number,\n): string {\n return `${scaleName} (${sizePx}, ${weight})`\n}\n"],"mappings":"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","names":[]}