@stn-uiux/pub-ui 0.1.75 → 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.
- package/dist/chunk-3CYSR7V4.js +149 -0
- package/dist/chunk-3CYSR7V4.js.map +1 -0
- package/dist/{chunk-VC72NQIU.js → chunk-EKPLU5KT.js} +33 -10
- package/dist/chunk-EKPLU5KT.js.map +1 -0
- package/dist/chunk-RSKMNZIS.js +9 -0
- package/dist/chunk-RSKMNZIS.js.map +1 -0
- package/dist/data/index.d.ts +1 -1
- package/dist/data/index.js +5 -3
- package/dist/data/stnLogin.d.ts +2 -2
- package/dist/data/stnLogin.js +2 -1
- package/dist/data/stnPackageVersion.d.ts +2 -2
- package/dist/data/stnPackageVersion.js +1 -1
- package/dist/data/stnTypeScale.d.ts +6 -1
- package/dist/data/stnTypeScale.js +3 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -3
- package/package.json +1 -1
- package/styles/foundations/stn-typography.css +166 -0
- package/styles/style-pub.css +1 -0
- package/styles/tokens/stn-typography-semantic.css +7 -3
- package/styles/tokens/stn-typography.css +3 -3
- package/dist/chunk-AWJXDCX2.js +0 -151
- package/dist/chunk-AWJXDCX2.js.map +0 -1
- package/dist/chunk-M4MX76BY.js +0 -9
- package/dist/chunk-M4MX76BY.js.map +0 -1
- package/dist/chunk-VC72NQIU.js.map +0 -1
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import {
|
|
2
|
+
STN_LAYER0_BACKGROUND_DEMO_IMAGES
|
|
3
|
+
} from "./chunk-NGUMR3D6.js";
|
|
4
|
+
|
|
5
|
+
// src/data/stnLogin.ts
|
|
6
|
+
var STN_LOGIN_FIGMA = "40004209:78293";
|
|
7
|
+
var STN_LOGIN_ASSETS = {
|
|
8
|
+
backgroundLight: STN_LAYER0_BACKGROUND_DEMO_IMAGES.loginLight,
|
|
9
|
+
backgroundDark: STN_LAYER0_BACKGROUND_DEMO_IMAGES.loginDark
|
|
10
|
+
};
|
|
11
|
+
var STN_LOGIN_INTRO = "\uB85C\uADF8\uC778 \uD398\uC774\uC9C0\uB294 LoginPageScaffold(\uD398\uC774\uC9C0) + StnLayer0BackgroundPreset(\uBC14\uB2E5) + StnLoginCard(\uCE74\uB4DC)\uC785\uB2C8\uB2E4. \uBC30\uACBD\xB7\uB85C\uACE0\uB294 \uAC01 \uCEF4\uD3EC\uB10C\uD2B8\uC758 variant\uB97C \uBC14\uAFD4 \uC7A1\uC2B5\uB2C8\uB2E4. onLogin\uB9CC \uB118\uAE30\uBA74 \uAE30\uBCF8 \uC870\uB9BD(login \uBC30\uACBD \xB7 \uAC00\uB85C XL \uB85C\uACE0)\uC774 \uB4E4\uC5B4\uAC11\uB2C8\uB2E4.";
|
|
12
|
+
var STN_LOGIN_USAGE = `import { useState, type FormEvent } from 'react'
|
|
13
|
+
import {
|
|
14
|
+
LoginPageScaffold,
|
|
15
|
+
StnLayer0BackgroundPreset,
|
|
16
|
+
StnLoginCard,
|
|
17
|
+
StnLoginBrandStack,
|
|
18
|
+
StnLoginFormStack,
|
|
19
|
+
StnLoginFormFields,
|
|
20
|
+
StnLoginFormLinks,
|
|
21
|
+
StnLoginTextField,
|
|
22
|
+
StnLogo,
|
|
23
|
+
StnSegmented,
|
|
24
|
+
StnButton,
|
|
25
|
+
} from '@stn-uiux/pub-ui-react'
|
|
26
|
+
|
|
27
|
+
function LoginPage() {
|
|
28
|
+
const [mode, setMode] = useState<'normal' | 'social'>('normal')
|
|
29
|
+
const [userId, setUserId] = useState('')
|
|
30
|
+
const [password, setPassword] = useState('')
|
|
31
|
+
|
|
32
|
+
function handleSubmit(e: FormEvent) {
|
|
33
|
+
e.preventDefault()
|
|
34
|
+
// \uB85C\uADF8\uC778 API \uD638\uCD9C
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return (
|
|
38
|
+
<LoginPageScaffold
|
|
39
|
+
layer0={<StnLayer0BackgroundPreset variant="login" />}
|
|
40
|
+
cardGlow={true}
|
|
41
|
+
>
|
|
42
|
+
<StnLoginCard
|
|
43
|
+
glow={true}
|
|
44
|
+
brand={
|
|
45
|
+
<StnLoginBrandStack>
|
|
46
|
+
<StnLogo variant="vertical" size="xl" />
|
|
47
|
+
<p className="stn-login-card__caption">Server Resource Monitoring</p>
|
|
48
|
+
</StnLoginBrandStack>
|
|
49
|
+
}
|
|
50
|
+
>
|
|
51
|
+
<StnLoginFormStack onSubmit={handleSubmit}>
|
|
52
|
+
<StnSegmented
|
|
53
|
+
aria-label="\uB85C\uADF8\uC778 \uBC29\uC2DD"
|
|
54
|
+
value={mode}
|
|
55
|
+
onChange={(v) => setMode(v as 'normal' | 'social')}
|
|
56
|
+
options={[
|
|
57
|
+
{ value: 'normal', label: '\uC77C\uBC18 \uB85C\uADF8\uC778' },
|
|
58
|
+
{ value: 'social', label: '\uC18C\uC15C \uB85C\uADF8\uC778' },
|
|
59
|
+
]}
|
|
60
|
+
/>
|
|
61
|
+
{mode === 'normal' && (
|
|
62
|
+
<StnLoginFormFields>
|
|
63
|
+
<StnLoginTextField
|
|
64
|
+
icon="line/user"
|
|
65
|
+
name="username"
|
|
66
|
+
autoComplete="username"
|
|
67
|
+
placeholder="\uC544\uC774\uB514"
|
|
68
|
+
value={userId}
|
|
69
|
+
onChange={(e) => setUserId(e.target.value)}
|
|
70
|
+
aria-label="\uC544\uC774\uB514"
|
|
71
|
+
/>
|
|
72
|
+
<StnLoginTextField
|
|
73
|
+
icon="line/lock"
|
|
74
|
+
type="password"
|
|
75
|
+
name="password"
|
|
76
|
+
autoComplete="current-password"
|
|
77
|
+
placeholder="\uBE44\uBC00\uBC88\uD638"
|
|
78
|
+
value={password}
|
|
79
|
+
onChange={(e) => setPassword(e.target.value)}
|
|
80
|
+
aria-label="\uBE44\uBC00\uBC88\uD638"
|
|
81
|
+
/>
|
|
82
|
+
</StnLoginFormFields>
|
|
83
|
+
)}
|
|
84
|
+
<StnButton type="submit" size="xl" fullWidth>
|
|
85
|
+
\uB85C\uADF8\uC778
|
|
86
|
+
</StnButton>
|
|
87
|
+
<StnLoginFormLinks>
|
|
88
|
+
<a href="#signup">\uD68C\uC6D0\uAC00\uC785</a>
|
|
89
|
+
<a href="#recover">\uC544\uC774\uB514 / \uBE44\uBC00\uBC88\uD638 \uCC3E\uAE30</a>
|
|
90
|
+
</StnLoginFormLinks>
|
|
91
|
+
</StnLoginFormStack>
|
|
92
|
+
</StnLoginCard>
|
|
93
|
+
</LoginPageScaffold>
|
|
94
|
+
)
|
|
95
|
+
}`;
|
|
96
|
+
var STN_LOGIN_HTML = `<div class="stn-wrap stn-page--login" data-stn-layer-mode="v2">
|
|
97
|
+
<div class="stn-layer0-bg image" aria-hidden="true"><!-- L0 login --></div>
|
|
98
|
+
<main class="stn-elev-1" data-stn-layer-role="content">
|
|
99
|
+
<div class="stn-login">
|
|
100
|
+
<div class="stn-login-card">
|
|
101
|
+
<div class="stn-login-card__brand">
|
|
102
|
+
<div class="stn-login-brand-stack">
|
|
103
|
+
<span class="stn-logo horizontal xl">
|
|
104
|
+
<img class="stn-logo__img light" src="/@assets/svg/brand/infomap-logo-full.png" alt="InfoMap SRM" />
|
|
105
|
+
<img class="stn-logo__img dark" src="/@assets/svg/brand/infomap-logo-full-dark.png" alt="" />
|
|
106
|
+
</span>
|
|
107
|
+
<p class="stn-login-card__caption">Server Resource Monitoring</p>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
<div class="stn-login-card__form">
|
|
111
|
+
<form class="stn-login-form-stack">
|
|
112
|
+
<div class="stn-segmented" role="radiogroup" aria-label="\uB85C\uADF8\uC778 \uBC29\uC2DD">
|
|
113
|
+
<button type="button" class="stn-segmented__item active" role="radio" aria-checked="true">\uC77C\uBC18 \uB85C\uADF8\uC778</button>
|
|
114
|
+
<button type="button" class="stn-segmented__item" role="radio" aria-checked="false">\uC18C\uC15C \uB85C\uADF8\uC778</button>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="stn-login-form-fields">
|
|
117
|
+
<div class="stn-login-text-field">
|
|
118
|
+
<span class="stn-icon-box md stn-login-text-field__icon-box" aria-hidden>
|
|
119
|
+
<span class="stn-icon stn-icon--masked" style="background-color: currentColor; width: 16px; height: 16px;"></span>
|
|
120
|
+
</span>
|
|
121
|
+
<input type="text" class="stn-login-text-field__control" placeholder="\uC544\uC774\uB514" autocomplete="username" />
|
|
122
|
+
</div>
|
|
123
|
+
<div class="stn-login-text-field">
|
|
124
|
+
<span class="stn-icon-box md stn-login-text-field__icon-box" aria-hidden>
|
|
125
|
+
<span class="stn-icon stn-icon--masked" style="background-color: currentColor; width: 16px; height: 16px;"></span>
|
|
126
|
+
</span>
|
|
127
|
+
<input type="password" class="stn-login-text-field__control" placeholder="\uBE44\uBC00\uBC88\uD638" autocomplete="current-password" />
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
<button type="submit" class="stn-btn contained xl full">\uB85C\uADF8\uC778</button>
|
|
131
|
+
<nav class="stn-login-form-links" aria-label="\uACC4\uC815 \uAD00\uB9AC \uB9C1\uD06C">
|
|
132
|
+
<a href="#signup">\uD68C\uC6D0\uAC00\uC785</a>
|
|
133
|
+
<a href="#recover">\uC544\uC774\uB514 / \uBE44\uBC00\uBC88\uD638 \uCC3E\uAE30</a>
|
|
134
|
+
</nav>
|
|
135
|
+
</form>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
</main>
|
|
140
|
+
</div>`;
|
|
141
|
+
|
|
142
|
+
export {
|
|
143
|
+
STN_LOGIN_FIGMA,
|
|
144
|
+
STN_LOGIN_ASSETS,
|
|
145
|
+
STN_LOGIN_INTRO,
|
|
146
|
+
STN_LOGIN_USAGE,
|
|
147
|
+
STN_LOGIN_HTML
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=chunk-3CYSR7V4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data/stnLogin.ts"],"sourcesContent":["/**\n * Pub login screen — Figma 40004209:78293\n * L0 image + L1 centered card · no L2 GNB\n */\n\nimport { STN_LAYER0_BACKGROUND_DEMO_IMAGES } from './stnLayer0BackgroundAssets'\n\nexport const STN_LOGIN_FIGMA = '40004209:78293'\n\nexport const STN_LOGIN_ASSETS = {\n backgroundLight: STN_LAYER0_BACKGROUND_DEMO_IMAGES.loginLight,\n backgroundDark: STN_LAYER0_BACKGROUND_DEMO_IMAGES.loginDark,\n} as const\n\nexport const STN_LOGIN_INTRO =\n '로그인 페이지는 LoginPageScaffold(페이지) + StnLayer0BackgroundPreset(바닥) + StnLoginCard(카드)입니다. 배경·로고는 각 컴포넌트의 variant를 바꿔 잡습니다. onLogin만 넘기면 기본 조립(login 배경 · 가로 XL 로고)이 들어갑니다.'\n\nexport const STN_LOGIN_USAGE = `import { useState, type FormEvent } from 'react'\nimport {\n LoginPageScaffold,\n StnLayer0BackgroundPreset,\n StnLoginCard,\n StnLoginBrandStack,\n StnLoginFormStack,\n StnLoginFormFields,\n StnLoginFormLinks,\n StnLoginTextField,\n StnLogo,\n StnSegmented,\n StnButton,\n} from '@stn-uiux/pub-ui-react'\n\nfunction LoginPage() {\n const [mode, setMode] = useState<'normal' | 'social'>('normal')\n const [userId, setUserId] = useState('')\n const [password, setPassword] = useState('')\n\n function handleSubmit(e: FormEvent) {\n e.preventDefault()\n // 로그인 API 호출\n }\n\n return (\n <LoginPageScaffold\n layer0={<StnLayer0BackgroundPreset variant=\"login\" />}\n cardGlow={true}\n >\n <StnLoginCard\n glow={true}\n brand={\n <StnLoginBrandStack>\n <StnLogo variant=\"vertical\" size=\"xl\" />\n <p className=\"stn-login-card__caption\">Server Resource Monitoring</p>\n </StnLoginBrandStack>\n }\n >\n <StnLoginFormStack onSubmit={handleSubmit}>\n <StnSegmented\n aria-label=\"로그인 방식\"\n value={mode}\n onChange={(v) => setMode(v as 'normal' | 'social')}\n options={[\n { value: 'normal', label: '일반 로그인' },\n { value: 'social', label: '소셜 로그인' },\n ]}\n />\n {mode === 'normal' && (\n <StnLoginFormFields>\n <StnLoginTextField\n icon=\"line/user\"\n name=\"username\"\n autoComplete=\"username\"\n placeholder=\"아이디\"\n value={userId}\n onChange={(e) => setUserId(e.target.value)}\n aria-label=\"아이디\"\n />\n <StnLoginTextField\n icon=\"line/lock\"\n type=\"password\"\n name=\"password\"\n autoComplete=\"current-password\"\n placeholder=\"비밀번호\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n aria-label=\"비밀번호\"\n />\n </StnLoginFormFields>\n )}\n <StnButton type=\"submit\" size=\"xl\" fullWidth>\n 로그인\n </StnButton>\n <StnLoginFormLinks>\n <a href=\"#signup\">회원가입</a>\n <a href=\"#recover\">아이디 / 비밀번호 찾기</a>\n </StnLoginFormLinks>\n </StnLoginFormStack>\n </StnLoginCard>\n </LoginPageScaffold>\n )\n}`\n\nexport const STN_LOGIN_HTML = `<div class=\"stn-wrap stn-page--login\" data-stn-layer-mode=\"v2\">\n <div class=\"stn-layer0-bg image\" aria-hidden=\"true\"><!-- L0 login --></div>\n <main class=\"stn-elev-1\" data-stn-layer-role=\"content\">\n <div class=\"stn-login\">\n <div class=\"stn-login-card\">\n <div class=\"stn-login-card__brand\">\n <div class=\"stn-login-brand-stack\">\n <span class=\"stn-logo horizontal xl\">\n <img class=\"stn-logo__img light\" src=\"/@assets/svg/brand/infomap-logo-full.png\" alt=\"InfoMap SRM\" />\n <img class=\"stn-logo__img dark\" src=\"/@assets/svg/brand/infomap-logo-full-dark.png\" alt=\"\" />\n </span>\n <p class=\"stn-login-card__caption\">Server Resource Monitoring</p>\n </div>\n </div>\n <div class=\"stn-login-card__form\">\n <form class=\"stn-login-form-stack\">\n <div class=\"stn-segmented\" role=\"radiogroup\" aria-label=\"로그인 방식\">\n <button type=\"button\" class=\"stn-segmented__item active\" role=\"radio\" aria-checked=\"true\">일반 로그인</button>\n <button type=\"button\" class=\"stn-segmented__item\" role=\"radio\" aria-checked=\"false\">소셜 로그인</button>\n </div>\n <div class=\"stn-login-form-fields\">\n <div class=\"stn-login-text-field\">\n <span class=\"stn-icon-box md stn-login-text-field__icon-box\" aria-hidden>\n <span class=\"stn-icon stn-icon--masked\" style=\"background-color: currentColor; width: 16px; height: 16px;\"></span>\n </span>\n <input type=\"text\" class=\"stn-login-text-field__control\" placeholder=\"아이디\" autocomplete=\"username\" />\n </div>\n <div class=\"stn-login-text-field\">\n <span class=\"stn-icon-box md stn-login-text-field__icon-box\" aria-hidden>\n <span class=\"stn-icon stn-icon--masked\" style=\"background-color: currentColor; width: 16px; height: 16px;\"></span>\n </span>\n <input type=\"password\" class=\"stn-login-text-field__control\" placeholder=\"비밀번호\" autocomplete=\"current-password\" />\n </div>\n </div>\n <button type=\"submit\" class=\"stn-btn contained xl full\">로그인</button>\n <nav class=\"stn-login-form-links\" aria-label=\"계정 관리 링크\">\n <a href=\"#signup\">회원가입</a>\n <a href=\"#recover\">아이디 / 비밀번호 찾기</a>\n </nav>\n </form>\n </div>\n </div>\n </div>\n </main>\n</div>`\n"],"mappings":";;;;;AAOO,IAAM,kBAAkB;AAExB,IAAM,mBAAmB;AAAA,EAC9B,iBAAiB,kCAAkC;AAAA,EACnD,gBAAgB,kCAAkC;AACpD;AAEO,IAAM,kBACX;AAEK,IAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqFxB,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
|
|
@@ -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:
|
|
10
|
-
sizeRem: "
|
|
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.
|
|
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:
|
|
22
|
-
sizeRem: "2.
|
|
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.
|
|
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:
|
|
34
|
-
sizeRem: "2.
|
|
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.
|
|
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-
|
|
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 @@
|
|
|
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":[]}
|
package/dist/data/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 './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';
|
package/dist/data/index.js
CHANGED
|
@@ -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-
|
|
18
|
+
} from "../chunk-EKPLU5KT.js";
|
|
18
19
|
import {
|
|
19
20
|
STN_FONT_FAMILY_ROWS,
|
|
20
21
|
STN_FONT_SIZE_ROWS,
|
|
@@ -118,7 +119,7 @@ import {
|
|
|
118
119
|
STN_LOGIN_HTML,
|
|
119
120
|
STN_LOGIN_INTRO,
|
|
120
121
|
STN_LOGIN_USAGE
|
|
121
|
-
} from "../chunk-
|
|
122
|
+
} from "../chunk-3CYSR7V4.js";
|
|
122
123
|
import {
|
|
123
124
|
STN_MAP_DASHBOARD_OPTION_ROWS
|
|
124
125
|
} from "../chunk-3DAZMM4T.js";
|
|
@@ -136,7 +137,7 @@ import {
|
|
|
136
137
|
import {
|
|
137
138
|
STN_UI_VERSION,
|
|
138
139
|
STN_UI_VERSION_LABEL
|
|
139
|
-
} from "../chunk-
|
|
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,
|
package/dist/data/stnLogin.d.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
declare const STN_LOGIN_FIGMA = "40004209:78293";
|
|
6
6
|
declare const STN_LOGIN_ASSETS: {
|
|
7
|
-
readonly backgroundLight:
|
|
8
|
-
readonly backgroundDark:
|
|
7
|
+
readonly backgroundLight: "https://stn-design.vercel.app/images/layer0/login-light.png";
|
|
8
|
+
readonly backgroundDark: "https://stn-design.vercel.app/images/layer0/login-dark.png";
|
|
9
9
|
};
|
|
10
10
|
declare const STN_LOGIN_INTRO = "\uB85C\uADF8\uC778 \uD398\uC774\uC9C0\uB294 LoginPageScaffold(\uD398\uC774\uC9C0) + StnLayer0BackgroundPreset(\uBC14\uB2E5) + StnLoginCard(\uCE74\uB4DC)\uC785\uB2C8\uB2E4. \uBC30\uACBD\u00B7\uB85C\uACE0\uB294 \uAC01 \uCEF4\uD3EC\uB10C\uD2B8\uC758 variant\uB97C \uBC14\uAFD4 \uC7A1\uC2B5\uB2C8\uB2E4. onLogin\uB9CC \uB118\uAE30\uBA74 \uAE30\uBCF8 \uC870\uB9BD(login \uBC30\uACBD \u00B7 \uAC00\uB85C XL \uB85C\uACE0)\uC774 \uB4E4\uC5B4\uAC11\uB2C8\uB2E4.";
|
|
11
11
|
declare const STN_LOGIN_USAGE = "import { useState, type FormEvent } from 'react'\nimport {\n LoginPageScaffold,\n StnLayer0BackgroundPreset,\n StnLoginCard,\n StnLoginBrandStack,\n StnLoginFormStack,\n StnLoginFormFields,\n StnLoginFormLinks,\n StnLoginTextField,\n StnLogo,\n StnSegmented,\n StnButton,\n} from '@stn-uiux/pub-ui-react'\n\nfunction LoginPage() {\n const [mode, setMode] = useState<'normal' | 'social'>('normal')\n const [userId, setUserId] = useState('')\n const [password, setPassword] = useState('')\n\n function handleSubmit(e: FormEvent) {\n e.preventDefault()\n // \uB85C\uADF8\uC778 API \uD638\uCD9C\n }\n\n return (\n <LoginPageScaffold\n layer0={<StnLayer0BackgroundPreset variant=\"login\" />}\n cardGlow={true}\n >\n <StnLoginCard\n glow={true}\n brand={\n <StnLoginBrandStack>\n <StnLogo variant=\"vertical\" size=\"xl\" />\n <p className=\"stn-login-card__caption\">Server Resource Monitoring</p>\n </StnLoginBrandStack>\n }\n >\n <StnLoginFormStack onSubmit={handleSubmit}>\n <StnSegmented\n aria-label=\"\uB85C\uADF8\uC778 \uBC29\uC2DD\"\n value={mode}\n onChange={(v) => setMode(v as 'normal' | 'social')}\n options={[\n { value: 'normal', label: '\uC77C\uBC18 \uB85C\uADF8\uC778' },\n { value: 'social', label: '\uC18C\uC15C \uB85C\uADF8\uC778' },\n ]}\n />\n {mode === 'normal' && (\n <StnLoginFormFields>\n <StnLoginTextField\n icon=\"line/user\"\n name=\"username\"\n autoComplete=\"username\"\n placeholder=\"\uC544\uC774\uB514\"\n value={userId}\n onChange={(e) => setUserId(e.target.value)}\n aria-label=\"\uC544\uC774\uB514\"\n />\n <StnLoginTextField\n icon=\"line/lock\"\n type=\"password\"\n name=\"password\"\n autoComplete=\"current-password\"\n placeholder=\"\uBE44\uBC00\uBC88\uD638\"\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n aria-label=\"\uBE44\uBC00\uBC88\uD638\"\n />\n </StnLoginFormFields>\n )}\n <StnButton type=\"submit\" size=\"xl\" fullWidth>\n \uB85C\uADF8\uC778\n </StnButton>\n <StnLoginFormLinks>\n <a href=\"#signup\">\uD68C\uC6D0\uAC00\uC785</a>\n <a href=\"#recover\">\uC544\uC774\uB514 / \uBE44\uBC00\uBC88\uD638 \uCC3E\uAE30</a>\n </StnLoginFormLinks>\n </StnLoginFormStack>\n </StnLoginCard>\n </LoginPageScaffold>\n )\n}";
|
package/dist/data/stnLogin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Package version constants */
|
|
2
|
-
declare const STN_UI_VERSION = "0.1.
|
|
3
|
-
declare const STN_UI_VERSION_LABEL = "v0.1.
|
|
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 };
|
|
@@ -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-
|
|
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-
|
|
23
|
+
} from "./chunk-EKPLU5KT.js";
|
|
23
24
|
import {
|
|
24
25
|
STN_FONT_FAMILY_ROWS,
|
|
25
26
|
STN_FONT_SIZE_ROWS,
|
|
@@ -123,7 +124,7 @@ import {
|
|
|
123
124
|
STN_LOGIN_HTML,
|
|
124
125
|
STN_LOGIN_INTRO,
|
|
125
126
|
STN_LOGIN_USAGE
|
|
126
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-3CYSR7V4.js";
|
|
127
128
|
import {
|
|
128
129
|
STN_MAP_DASHBOARD_OPTION_ROWS
|
|
129
130
|
} from "./chunk-3DAZMM4T.js";
|
|
@@ -141,7 +142,7 @@ import {
|
|
|
141
142
|
import {
|
|
142
143
|
STN_UI_VERSION,
|
|
143
144
|
STN_UI_VERSION_LABEL
|
|
144
|
-
} from "./chunk-
|
|
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,
|