@stn-uiux/pub-ui 0.1.55 → 0.1.57
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-OKSQLPEC.js → chunk-AWJXDCX2.js} +143 -3
- package/dist/{chunk-NIMEKZW6.js.map → chunk-AWJXDCX2.js.map} +1 -1
- package/dist/chunk-QT4HHVZH.js +9 -0
- package/dist/chunk-QT4HHVZH.js.map +1 -0
- package/dist/chunk-XBFXX3D6.js +41 -0
- package/dist/chunk-XBFXX3D6.js.map +1 -0
- package/dist/cli.js +1 -2
- package/dist/cli.js.map +1 -1
- package/dist/data/index.d.ts +1 -1
- package/dist/data/index.js +5 -4
- package/dist/data/stnLayer0Background.js +1 -2
- package/dist/data/stnLayer0BackgroundAssets.d.ts +19 -15
- package/dist/data/stnLayer0BackgroundAssets.js +3 -2
- package/dist/data/stnLogin.js +1 -2
- package/dist/data/stnPackageVersion.d.ts +2 -2
- package/dist/data/stnPackageVersion.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +5 -4
- package/package.json +2 -1
- package/dist/chunk-DFXOZYYY.js +0 -68
- package/dist/chunk-DFXOZYYY.js.map +0 -1
- package/dist/chunk-NIMEKZW6.js +0 -150
- package/dist/chunk-OKSQLPEC.js.map +0 -1
- package/dist/chunk-ZLMVTZDK.js +0 -9
- package/dist/chunk-ZLMVTZDK.js.map +0 -1
- package/styles/@assets/images/layer0/dashboard-dark.png +0 -0
- package/styles/@assets/images/layer0/dashboard-light.png +0 -0
- package/styles/@assets/images/layer0/login-dark.png +0 -0
- package/styles/@assets/images/layer0/login-light.png +0 -0
- package/styles/@assets/images/layer0/map-dark.png +0 -0
- package/styles/@assets/images/layer0/map-light.png +0 -0
- package/styles/@assets/images/layer0/showroom-a-dark.png +0 -0
- package/styles/@assets/images/layer0/showroom-a-light.png +0 -0
- package/styles/@assets/images/layer0/showroom-b-dark.png +0 -0
- package/styles/@assets/images/layer0/showroom-b-light.png +0 -0
|
@@ -1 +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 loginBgDark from '../../styles/@assets/images/layer0/login-dark.png'\nimport loginBgLight from '../../styles/@assets/images/layer0/login-light.png'\n\nexport const STN_LOGIN_FIGMA = '40004209:78293'\n\nexport const STN_LOGIN_ASSETS = {\n backgroundLight: loginBgLight,\n backgroundDark: loginBgDark,\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":"
|
|
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 loginBgDark from '../../styles/@assets/images/layer0/login-dark.png'\nimport loginBgLight from '../../styles/@assets/images/layer0/login-light.png'\n\nexport const STN_LOGIN_FIGMA = '40004209:78293'\n\nexport const STN_LOGIN_ASSETS = {\n backgroundLight: loginBgLight,\n backgroundDark: loginBgDark,\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":";;;;;;;AAQO,IAAM,kBAAkB;AAExB,IAAM,mBAAmB;AAAA,EAC9B,iBAAiB;AAAA,EACjB,gBAAgB;AAClB;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":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data/stnPackageVersion.ts"],"sourcesContent":["/** Package version constants */\nexport const STN_UI_VERSION = '0.1.57'\nexport const STN_UI_VERSION_LABEL = 'v0.1.57'\n"],"mappings":";AACO,IAAM,iBAAiB;AACvB,IAAM,uBAAuB;","names":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// src/data/stnLayer0BackgroundAssets.ts
|
|
2
|
+
var STN_CDN_ASSET_BASE = "https://stn-design.vercel.app/images/layer0";
|
|
3
|
+
var STN_LAYER0_BACKGROUND_DEMO_IMAGES = {
|
|
4
|
+
dashboard: `${STN_CDN_ASSET_BASE}/dashboard-light.png`,
|
|
5
|
+
dashboardLight: `${STN_CDN_ASSET_BASE}/dashboard-light.png`,
|
|
6
|
+
dashboardDark: `${STN_CDN_ASSET_BASE}/dashboard-dark.png`,
|
|
7
|
+
showroomA: `${STN_CDN_ASSET_BASE}/showroom-a-light.png`,
|
|
8
|
+
showroomALight: `${STN_CDN_ASSET_BASE}/showroom-a-light.png`,
|
|
9
|
+
showroomADark: `${STN_CDN_ASSET_BASE}/showroom-a-dark.png`,
|
|
10
|
+
showroomB: `${STN_CDN_ASSET_BASE}/showroom-b-light.png`,
|
|
11
|
+
showroomBLight: `${STN_CDN_ASSET_BASE}/showroom-b-light.png`,
|
|
12
|
+
showroomBDark: `${STN_CDN_ASSET_BASE}/showroom-b-dark.png`,
|
|
13
|
+
mapLight: `${STN_CDN_ASSET_BASE}/map-light.png`,
|
|
14
|
+
mapDark: `${STN_CDN_ASSET_BASE}/map-dark.png`,
|
|
15
|
+
login: `${STN_CDN_ASSET_BASE}/login-light.png`,
|
|
16
|
+
loginLight: `${STN_CDN_ASSET_BASE}/login-light.png`,
|
|
17
|
+
loginDark: `${STN_CDN_ASSET_BASE}/login-dark.png`
|
|
18
|
+
};
|
|
19
|
+
var STN_LAYER0_BACKGROUND_ASSET_PATHS = {
|
|
20
|
+
dashboard: "@assets/images/layer0/dashboard-light.png",
|
|
21
|
+
dashboardLight: "@assets/images/layer0/dashboard-light.png",
|
|
22
|
+
dashboardDark: "@assets/images/layer0/dashboard-dark.png",
|
|
23
|
+
showroomA: "@assets/images/layer0/showroom-a-light.png",
|
|
24
|
+
showroomALight: "@assets/images/layer0/showroom-a-light.png",
|
|
25
|
+
showroomADark: "@assets/images/layer0/showroom-a-dark.png",
|
|
26
|
+
showroomB: "@assets/images/layer0/showroom-b-light.png",
|
|
27
|
+
showroomBLight: "@assets/images/layer0/showroom-b-light.png",
|
|
28
|
+
showroomBDark: "@assets/images/layer0/showroom-b-dark.png",
|
|
29
|
+
mapLight: "@assets/images/layer0/map-light.png",
|
|
30
|
+
mapDark: "@assets/images/layer0/map-dark.png",
|
|
31
|
+
login: "@assets/images/layer0/login-light.png",
|
|
32
|
+
loginLight: "@assets/images/layer0/login-light.png",
|
|
33
|
+
loginDark: "@assets/images/layer0/login-dark.png"
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export {
|
|
37
|
+
STN_CDN_ASSET_BASE,
|
|
38
|
+
STN_LAYER0_BACKGROUND_DEMO_IMAGES,
|
|
39
|
+
STN_LAYER0_BACKGROUND_ASSET_PATHS
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=chunk-XBFXX3D6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/data/stnLayer0BackgroundAssets.ts"],"sourcesContent":["/**\n * L0 preset images — Hosted on STN Official Vercel CDN for zero-setup & instant loading.\n */\nexport const STN_CDN_ASSET_BASE = 'https://stn-design.vercel.app/images/layer0'\n\nexport const STN_LAYER0_BACKGROUND_DEMO_IMAGES = {\n dashboard: `${STN_CDN_ASSET_BASE}/dashboard-light.png`,\n dashboardLight: `${STN_CDN_ASSET_BASE}/dashboard-light.png`,\n dashboardDark: `${STN_CDN_ASSET_BASE}/dashboard-dark.png`,\n showroomA: `${STN_CDN_ASSET_BASE}/showroom-a-light.png`,\n showroomALight: `${STN_CDN_ASSET_BASE}/showroom-a-light.png`,\n showroomADark: `${STN_CDN_ASSET_BASE}/showroom-a-dark.png`,\n showroomB: `${STN_CDN_ASSET_BASE}/showroom-b-light.png`,\n showroomBLight: `${STN_CDN_ASSET_BASE}/showroom-b-light.png`,\n showroomBDark: `${STN_CDN_ASSET_BASE}/showroom-b-dark.png`,\n mapLight: `${STN_CDN_ASSET_BASE}/map-light.png`,\n mapDark: `${STN_CDN_ASSET_BASE}/map-dark.png`,\n login: `${STN_CDN_ASSET_BASE}/login-light.png`,\n loginLight: `${STN_CDN_ASSET_BASE}/login-light.png`,\n loginDark: `${STN_CDN_ASSET_BASE}/login-dark.png`,\n} as const\n\n/** Pub CSS @assets 경로 — HTML·vanilla 소비자용 */\nexport const STN_LAYER0_BACKGROUND_ASSET_PATHS = {\n dashboard: '@assets/images/layer0/dashboard-light.png',\n dashboardLight: '@assets/images/layer0/dashboard-light.png',\n dashboardDark: '@assets/images/layer0/dashboard-dark.png',\n showroomA: '@assets/images/layer0/showroom-a-light.png',\n showroomALight: '@assets/images/layer0/showroom-a-light.png',\n showroomADark: '@assets/images/layer0/showroom-a-dark.png',\n showroomB: '@assets/images/layer0/showroom-b-light.png',\n showroomBLight: '@assets/images/layer0/showroom-b-light.png',\n showroomBDark: '@assets/images/layer0/showroom-b-dark.png',\n mapLight: '@assets/images/layer0/map-light.png',\n mapDark: '@assets/images/layer0/map-dark.png',\n login: '@assets/images/layer0/login-light.png',\n loginLight: '@assets/images/layer0/login-light.png',\n loginDark: '@assets/images/layer0/login-dark.png',\n} as const\n"],"mappings":";AAGO,IAAM,qBAAqB;AAE3B,IAAM,oCAAoC;AAAA,EAC/C,WAAW,GAAG,kBAAkB;AAAA,EAChC,gBAAgB,GAAG,kBAAkB;AAAA,EACrC,eAAe,GAAG,kBAAkB;AAAA,EACpC,WAAW,GAAG,kBAAkB;AAAA,EAChC,gBAAgB,GAAG,kBAAkB;AAAA,EACrC,eAAe,GAAG,kBAAkB;AAAA,EACpC,WAAW,GAAG,kBAAkB;AAAA,EAChC,gBAAgB,GAAG,kBAAkB;AAAA,EACrC,eAAe,GAAG,kBAAkB;AAAA,EACpC,UAAU,GAAG,kBAAkB;AAAA,EAC/B,SAAS,GAAG,kBAAkB;AAAA,EAC9B,OAAO,GAAG,kBAAkB;AAAA,EAC5B,YAAY,GAAG,kBAAkB;AAAA,EACjC,WAAW,GAAG,kBAAkB;AAClC;AAGO,IAAM,oCAAoC;AAAA,EAC/C,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,WAAW;AACb;","names":[]}
|
package/dist/cli.js
CHANGED
|
@@ -33,8 +33,7 @@ import {
|
|
|
33
33
|
import {
|
|
34
34
|
STN_LAYER0_BACKGROUND_USAGE
|
|
35
35
|
} from "./chunk-QAPQ4DB2.js";
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-OKSQLPEC.js";
|
|
36
|
+
import "./chunk-XBFXX3D6.js";
|
|
38
37
|
import {
|
|
39
38
|
STN_LAYOUT_LIST_VIEW_USAGE
|
|
40
39
|
} from "./chunk-7ASY5YJ6.js";
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/index.ts","../src/cli/runHelp.ts","../src/cli/resolveScaffold.ts","../src/cli/stnCliCatalog.ts"],"sourcesContent":["import { createRequire } from 'node:module'\nimport process from 'node:process'\n\nimport { runStnHelp } from './runHelp'\n\nconst require = createRequire(import.meta.url)\nconst { version } = require('../package.json') as { version: string }\n\nexport { runStnHelp } from './runHelp'\nexport { STN_CLI_CATALOG, listStnCliCatalog } from './stnCliCatalog'\nexport { resolveStnScaffold } from './resolveScaffold'\n\nexport async function runCli(argv: string[]): Promise<void> {\n const [, , command, ...rest] = argv\n\n if (command === 'help' || command === undefined) {\n await runStnHelp()\n return\n }\n\n if (command === '--version' || command === '-V') {\n console.log(version)\n return\n }\n\n console.error(`Unknown command: ${command}${rest.length ? ` ${rest.join(' ')}` : ''}`)\n console.error('Usage: npx @stn-uiux/pub-ui help')\n process.exitCode = 1\n}\n","import process from 'node:process'\nimport { existsSync } from 'node:fs'\nimport { mkdir, writeFile } from 'node:fs/promises'\nimport { dirname, join, resolve } from 'node:path'\n\nimport { confirm, input, select } from '@inquirer/prompts'\n\nimport { resolveStnScaffold } from './resolveScaffold'\nimport {\n listStnCliCatalog,\n STN_CLI_CATEGORY_LABELS,\n type StnCliCatalogItem,\n type StnCliCategory,\n} from './stnCliCatalog'\n\nconst CATEGORY_ORDER: StnCliCategory[] = ['component', 'pattern', 'layout']\n\nasync function pickCategory(): Promise<StnCliCategory> {\n return select({\n message: '무엇을 만들까요?',\n choices: CATEGORY_ORDER.map((value) => ({\n value,\n name: `${CATEGORY_ORDER.indexOf(value) + 1}. ${STN_CLI_CATEGORY_LABELS[value]}`,\n })),\n })\n}\n\nasync function pickItem(category: StnCliCategory): Promise<StnCliCatalogItem> {\n const items = listStnCliCatalog(category)\n return select({\n message: `${STN_CLI_CATEGORY_LABELS[category]} 선택`,\n choices: items.map((item) => ({\n value: item,\n name: item.label,\n description: item.docPath,\n })),\n })\n}\n\nasync function pickOutputPath(item: StnCliCatalogItem, cwd: string): Promise<string> {\n const defaultDir = join(cwd, 'src', 'pages')\n const defaultPath = join(defaultDir, item.defaultFileName)\n\n const answer = await input({\n message: '생성할 파일 경로',\n default: defaultPath,\n })\n\n return resolve(cwd, answer.trim() || defaultPath)\n}\n\nfunction printNextSteps(item: StnCliCatalogItem, filePath: string) {\n console.log('\\n✓ 생성 완료:', filePath)\n if (item.docPath) {\n console.log(' 문서:', item.docPath)\n }\n console.log('\\n다음 단계:')\n console.log(' 1. main.tsx 에 @stn-uiux/pub-ui/styles.css import 확인')\n console.log(' 2. StnProvider 로 앱 래핑')\n console.log(' 3. 라우터에 이 페이지 컴포넌트 연결')\n if (item.category === 'layout') {\n console.log(' 4. Playground 옵션 세부 조정은 문서 사이트에서 React/HTML 코드 복사')\n }\n}\n\nexport async function runStnHelp(cwd = process.cwd()): Promise<void> {\n console.log('STN Pub help — 컴포넌트 · 패턴 · 레이아웃 scaffold\\n')\n\n const category = await pickCategory()\n const item = await pickItem(category)\n const filePath = await pickOutputPath(item, cwd)\n\n if (existsSync(filePath)) {\n const overwrite = await confirm({\n message: `${filePath} 가 이미 있습니다. 덮어쓸까요?`,\n default: false,\n })\n if (!overwrite) {\n console.log('취소했습니다.')\n return\n }\n }\n\n const code = resolveStnScaffold(item.scaffoldKey)\n await mkdir(dirname(filePath), { recursive: true })\n await writeFile(filePath, code, 'utf8')\n\n printNextSteps(item, filePath)\n}\n","import { STN_ALERT_CENTER_USAGE } from '../data/stnAlertCenter'\nimport { STN_HEADER_USAGE } from '../data/stnHeader'\nimport { STN_DATE_PICKER_USAGE } from '../data/stnDatePicker'\nimport { STN_DROPDOWN_USAGE } from '../data/stnDropdown'\nimport { STN_SIDE_NAV_ITEM_USAGE, STN_SIDE_NAVIGATION_USAGE } from '../data/stnSideNavigation'\nimport { STN_LAYER0_BACKGROUND_USAGE } from '../data/stnLayer0Background'\nimport { STN_LAYER_ROLE_USAGE } from '../data/stnLayer'\nimport { STN_LAYOUT_LIST_VIEW_USAGE } from '../data/stnLayout'\nimport { STN_LOADING_SKELETON_USAGE } from '../data/stnLoadingSkeleton'\nimport { STN_POPUP_USAGE } from '../data/stnPopup'\nimport { STN_SCROLL_USAGE } from '../data/stnScroll'\nimport { STN_SEARCH_REQUIREMENT_USAGE } from '../data/stnSearchRequirement'\nimport { STN_TABLE_REACT_EXAMPLE } from '../data/stnTable'\nimport { STN_TOAST_REACT_USAGE } from '../data/stnToast'\nimport { STN_TREE_REACT_EXAMPLE } from '../data/stnTree'\nimport { STN_TEXT_FIELD_USAGE } from '../data/stnTextField'\nimport { STN_WIDGET_FIGMA_SHELL_REACT, STN_WIDGET_USAGE } from '../data/stnWidget'\n\nfunction wrapJsxPage(componentName: string, imports: string, body: string): string {\n return `/** Generated by \\`npx @stn-uiux/pub-ui help\\` */\n${imports}\n\nexport function ${componentName}() {\n${body}\n}\n`\n}\n\nconst SCAFFOLDS: Record<string, () => string> = {\n button: () =>\n wrapJsxPage(\n 'ButtonDemoPage',\n \"import { StnButton } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24, display: 'flex', gap: 8 }}>\n <StnButton variant=\"contained\" size=\"M\">레이블</StnButton>\n <StnButton variant=\"ghost\" size=\"S\">레이블</StnButton>\n <StnButton icon=\"line/settings\" aria-label=\"설정\" size=\"M\" />\n </div>\n )`,\n ),\n 'icon-button': () =>\n wrapJsxPage(\n 'IconButtonDemoPage',\n \"import { StnButton } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnButton icon=\"line/settings\" aria-label=\"설정\" size=\"M\" />\n </div>\n )`,\n ),\n toast: () => STN_TOAST_REACT_USAGE,\n 'progress-bar': () =>\n wrapJsxPage(\n 'ProgressBarDemoPage',\n \"import { StnProgressBar } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnProgressBar value={65} label=\"진행률\" />\n </div>\n )`,\n ),\n checkbox: () =>\n wrapJsxPage(\n 'CheckboxDemoPage',\n \"import { useState } from 'react'\\nimport { StnCheckbox } from '@stn-uiux/pub-ui-react'\",\n ` const [checked, setChecked] = useState(true)\n return (\n <div style={{ padding: 24 }}>\n <StnCheckbox checked={checked} onChange={setChecked} label=\"동의합니다\" />\n </div>\n )`,\n ),\n 'toggle-button': () =>\n wrapJsxPage(\n 'ToggleButtonDemoPage',\n \"import { StnToggleButton } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnToggleButton pressed={false}>토글</StnToggleButton>\n </div>\n )`,\n ),\n segmented: () =>\n wrapJsxPage(\n 'SegmentedDemoPage',\n \"import { useState } from 'react'\\nimport { StnSegmented } from '@stn-uiux/pub-ui-react'\",\n ` const [mode, setMode] = useState('normal')\n return (\n <div style={{ padding: 24 }}>\n <StnSegmented\n aria-label=\"로그인 방식\"\n value={mode}\n onChange={setMode}\n options={[\n { value: 'normal', label: '일반 로그인' },\n { value: 'social', label: '소셜 로그인' },\n ]}\n />\n </div>\n )`,\n ),\n radio: () =>\n wrapJsxPage(\n 'RadioDemoPage',\n \"import { useState } from 'react'\\nimport { StnRadioGroup } from '@stn-uiux/pub-ui-react'\",\n ` const [value, setValue] = useState('a')\n return (\n <div style={{ padding: 24 }}>\n <StnRadioGroup\n name=\"demo\"\n value={value}\n onChange={setValue}\n options={[\n { value: 'a', label: '옵션 A' },\n { value: 'b', label: '옵션 B' },\n ]}\n />\n </div>\n )`,\n ),\n switch: () =>\n wrapJsxPage(\n 'SwitchDemoPage',\n \"import { useState } from 'react'\\nimport { StnSwitch } from '@stn-uiux/pub-ui-react'\",\n ` const [on, setOn] = useState(true)\n return (\n <div style={{ padding: 24 }}>\n <StnSwitch checked={on} onChange={setOn} label=\"알림\" />\n </div>\n )`,\n ),\n slider: () =>\n wrapJsxPage(\n 'SliderDemoPage',\n \"import { useState } from 'react'\\nimport { StnSlider } from '@stn-uiux/pub-ui-react'\",\n ` const [value, setValue] = useState(40)\n return (\n <div style={{ padding: 24, maxWidth: 320 }}>\n <StnSlider value={value} onChange={setValue} min={0} max={100} />\n </div>\n )`,\n ),\n chip: () =>\n wrapJsxPage(\n 'ChipDemoPage',\n \"import { StnChip } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24, display: 'flex', gap: 8 }}>\n <StnChip grade=\"critical\" />\n <StnChip grade=\"major\" variant=\"border\" />\n </div>\n )`,\n ),\n 'side-nav-item': () => STN_SIDE_NAV_ITEM_USAGE,\n breadcrumb: () =>\n wrapJsxPage(\n 'BreadcrumbDemoPage',\n \"import { StnBreadcrumb } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnBreadcrumb\n size=\"md\"\n items={[\n { id: 'home', label: 'Home', href: '#' },\n { id: 'list', label: '목록', current: true },\n ]}\n />\n </div>\n )`,\n ),\n 'header-title': () =>\n wrapJsxPage(\n 'HeaderTitleDemoPage',\n \"import { StnHeaderTitle } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnHeaderTitle title=\"Network Topology\" showClock />\n </div>\n )`,\n ),\n dropdown: () => STN_DROPDOWN_USAGE,\n 'text-field': () => STN_TEXT_FIELD_USAGE,\n 'date-picker': () => STN_DATE_PICKER_USAGE,\n scroll: () => STN_SCROLL_USAGE,\n table: () => STN_TABLE_REACT_EXAMPLE,\n pagination: () =>\n wrapJsxPage(\n 'PaginationDemoPage',\n \"import { StnPagination } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnPagination page={1} count={8} onChange={() => {}} />\n </div>\n )`,\n ),\n widget: () => STN_WIDGET_FIGMA_SHELL_REACT,\n 'tree-node': () => STN_TREE_REACT_EXAMPLE,\n\n 'layer-l0': () => STN_LAYER0_BACKGROUND_USAGE,\n 'layer-l1': () => STN_LAYER_ROLE_USAGE,\n 'side-navigation': () => STN_SIDE_NAVIGATION_USAGE,\n 'alert-center': () => STN_ALERT_CENTER_USAGE,\n 'search-bar': () => STN_SEARCH_REQUIREMENT_USAGE,\n header: () => STN_HEADER_USAGE,\n background: () => STN_LAYER0_BACKGROUND_USAGE,\n popup: () => STN_POPUP_USAGE,\n 'data-table': () => STN_TABLE_REACT_EXAMPLE,\n tree: () => STN_TREE_REACT_EXAMPLE,\n 'loading-skeleton': () => STN_LOADING_SKELETON_USAGE,\n 'widget-pattern': () => STN_WIDGET_USAGE,\n\n login: () =>\n wrapJsxPage(\n 'LoginPage',\n \"import { LoginPageScaffold } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <LoginPageScaffold\n onLogin={(id, password) => {\n console.log(id, password)\n }}\n />\n )`,\n ),\n 'list-view': () => STN_LAYOUT_LIST_VIEW_USAGE,\n 'map-dashboard': () => `import {\n DashboardPageScaffold,\n StnHeader,\n StnSideNavigation,\n} from '@stn-uiux/pub-ui-react'\n\n/** Map Dashboard — /stn-design/layouts/dashboard/map Playground 기본 (SideNav · L1 헤더 · map-bg CSS) */\nexport function MapDashboardPage() {\n return (\n <DashboardPageScaffold\n shell=\"layer\"\n wrapClassName=\"stn-page--map-bg\"\n gnb={\n <StnSideNavigation>\n <StnSideNavigation.Header>\n <StnSideNavigation.Logo />\n <StnSideNavigation.Toggle />\n </StnSideNavigation.Header>\n <StnSideNavigation.Menu>\n <StnSideNavigation.Item label=\"메인 대시보드\" active />\n <StnSideNavigation.Item label=\"서버 모니터링\" />\n <StnSideNavigation.Item label=\"네트워크 분석\" />\n </StnSideNavigation.Menu>\n <StnSideNavigation.Spacer />\n <StnSideNavigation.Footer curved>\n <StnSideNavigation.Watermark />\n <StnSideNavigation.Item label=\"알림\" badge={12} />\n <StnSideNavigation.Item label=\"설정\" />\n </StnSideNavigation.Footer>\n </StnSideNavigation>\n }\n header={\n <StnHeader variant=\"widget\" />\n }\n mapMessage=\"Map Dashboard 캔버스\"\n mapNote=\"GIS / 맵 엔진 마운트 영역\"\n />\n )\n}`,\n 'topology-dashboard': () => `import {\n DashboardPageScaffold,\n StnHeader,\n StnSideNavigation,\n} from '@stn-uiux/pub-ui-react'\n\n/** Topology Dashboard — /stn-design/layouts/dashboard/topology Playground 기본 (SideNav · L1 헤더 · map-bg CSS) */\nexport function TopologyDashboardPage() {\n return (\n <DashboardPageScaffold\n shell=\"layer\"\n wrapClassName=\"stn-page--map-bg\"\n gnb={\n <StnSideNavigation>\n <StnSideNavigation.Header>\n <StnSideNavigation.Logo />\n <StnSideNavigation.Toggle />\n </StnSideNavigation.Header>\n <StnSideNavigation.Menu>\n <StnSideNavigation.Item label=\"메인 대시보드\" active />\n <StnSideNavigation.Item label=\"서버 모니터링\" />\n <StnSideNavigation.Item label=\"네트워크 분석\" />\n </StnSideNavigation.Menu>\n <StnSideNavigation.Spacer />\n <StnSideNavigation.Footer curved>\n <StnSideNavigation.Watermark />\n <StnSideNavigation.Item label=\"알림\" badge={12} />\n <StnSideNavigation.Item label=\"설정\" />\n </StnSideNavigation.Footer>\n </StnSideNavigation>\n }\n header={\n <StnHeader variant=\"widget\" />\n }\n mapMessage=\"Topology Dashboard 캔버스\"\n mapNote=\"네트워크 토폴로지 캔버스 마운트 영역\"\n />\n )\n}`,\n\n 'widget-grid': () => `import {\n DashboardPageScaffold,\n StnHeader,\n StnSideNavigation,\n StnWidget,\n} from '@stn-uiux/pub-ui-react'\n\n/** Widget Grid Board — /stn-design/layouts/dashboard/widget Playground 기본 (SideNav · L1 헤더 포함) */\nexport function WidgetGridDashboardPage() {\n return (\n <DashboardPageScaffold\n shell=\"layer\"\n gnb={\n <StnSideNavigation>\n <StnSideNavigation.Header>\n <StnSideNavigation.Logo />\n <StnSideNavigation.Toggle />\n </StnSideNavigation.Header>\n <StnSideNavigation.Menu>\n <StnSideNavigation.Item label=\"메인 대시보드\" active />\n <StnSideNavigation.Item label=\"서버 모니터링\" />\n <StnSideNavigation.Item label=\"네트워크 분석\" />\n </StnSideNavigation.Menu>\n <StnSideNavigation.Spacer />\n <StnSideNavigation.Footer curved>\n <StnSideNavigation.Watermark />\n <StnSideNavigation.Item label=\"알림\" badge={12} />\n <StnSideNavigation.Item label=\"설정\" />\n </StnSideNavigation.Footer>\n </StnSideNavigation>\n }\n header={\n <StnHeader variant=\"widget\" />\n }\n >\n <div>\n <div>\n <StnWidget title=\"장애 통계\" appearance=\"translucent\">\n <StnWidget.ChartSlot label=\"chart\" />\n </StnWidget>\n </div>\n <div>\n <StnWidget title=\"세션 현황\" appearance=\"translucent\">\n <StnWidget.ChartSlot label=\"chart\" />\n </StnWidget>\n </div>\n <div>\n <StnWidget title=\"모니터링\" appearance=\"translucent\">\n <StnWidget.ChartSlot label=\"chart\" />\n </StnWidget>\n </div>\n </div>\n </DashboardPageScaffold>\n )\n}`,\n}\n\nexport function resolveStnScaffold(scaffoldKey: string): string {\n const factory = SCAFFOLDS[scaffoldKey]\n if (!factory) {\n throw new Error(`Unknown scaffold: ${scaffoldKey}`)\n }\n const code = factory().trimEnd()\n return code.endsWith('\\n') ? code : `${code}\\n`\n}\n","export type StnCliCategory = 'component' | 'pattern' | 'layout'\n\nexport type StnCliCatalogItem = {\n id: string\n label: string\n category: StnCliCategory\n scaffoldKey: string\n /** 생성 파일 기본명 (예: ListViewPage.tsx) */\n defaultFileName: string\n docPath?: string\n}\n\n/** `npx @stn-uiux/pub-ui help` — 문서 사이트 nav와 동일한 선택지 */\nexport const STN_CLI_CATALOG: StnCliCatalogItem[] = [\n // —— Components ——\n { id: 'button', label: 'Button', category: 'component', scaffoldKey: 'button', defaultFileName: 'ButtonDemoPage.tsx', docPath: '/stn-design/components/button' },\n { id: 'toast', label: 'Toast', category: 'component', scaffoldKey: 'toast', defaultFileName: 'ToastDemoPage.tsx', docPath: '/stn-design/components/toast' },\n { id: 'progress-bar', label: 'Progress Bar', category: 'component', scaffoldKey: 'progress-bar', defaultFileName: 'ProgressBarDemoPage.tsx', docPath: '/stn-design/components/progress-bar' },\n { id: 'checkbox', label: 'Checkbox', category: 'component', scaffoldKey: 'checkbox', defaultFileName: 'CheckboxDemoPage.tsx', docPath: '/stn-design/components/checkbox' },\n { id: 'toggle-button', label: 'Toggle Button', category: 'component', scaffoldKey: 'toggle-button', defaultFileName: 'ToggleButtonDemoPage.tsx', docPath: '/stn-design/components/toggle-button' },\n { id: 'segmented', label: 'Segmented', category: 'component', scaffoldKey: 'segmented', defaultFileName: 'SegmentedDemoPage.tsx', docPath: '/stn-design/components/segmented' },\n { id: 'radio', label: 'Radio', category: 'component', scaffoldKey: 'radio', defaultFileName: 'RadioDemoPage.tsx', docPath: '/stn-design/components/radio' },\n { id: 'switch', label: 'Switch', category: 'component', scaffoldKey: 'switch', defaultFileName: 'SwitchDemoPage.tsx', docPath: '/stn-design/components/switch' },\n { id: 'slider', label: 'Slider', category: 'component', scaffoldKey: 'slider', defaultFileName: 'SliderDemoPage.tsx', docPath: '/stn-design/components/slider' },\n { id: 'chip', label: 'Chip', category: 'component', scaffoldKey: 'chip', defaultFileName: 'ChipDemoPage.tsx', docPath: '/stn-design/components/chip' },\n { id: 'side-nav-item', label: 'Side Nav Item', category: 'component', scaffoldKey: 'side-nav-item', defaultFileName: 'SideNavItemDemoPage.tsx', docPath: '/stn-design/components/side-nav-item' },\n { id: 'breadcrumb', label: 'Breadcrumb', category: 'component', scaffoldKey: 'breadcrumb', defaultFileName: 'BreadcrumbDemoPage.tsx', docPath: '/stn-design/components/breadcrumb' },\n { id: 'header-title', label: 'Header title', category: 'component', scaffoldKey: 'header-title', defaultFileName: 'HeaderTitleDemoPage.tsx', docPath: '/stn-design/components/header-title' },\n { id: 'dropdown', label: 'Dropdown', category: 'component', scaffoldKey: 'dropdown', defaultFileName: 'DropdownDemoPage.tsx', docPath: '/stn-design/components/dropdown' },\n { id: 'text-field', label: 'TextField', category: 'component', scaffoldKey: 'text-field', defaultFileName: 'TextFieldDemoPage.tsx', docPath: '/stn-design/components/text-field' },\n { id: 'date-picker', label: 'Date range picker', category: 'component', scaffoldKey: 'date-picker', defaultFileName: 'DatePickerDemoPage.tsx', docPath: '/stn-design/components/date-picker' },\n { id: 'indicator', label: 'System monitor · Theme', category: 'component', scaffoldKey: 'indicator', defaultFileName: 'IndicatorDemoPage.tsx', docPath: '/stn-design/components/indicator' },\n { id: 'scroll', label: 'Scroll', category: 'component', scaffoldKey: 'scroll', defaultFileName: 'ScrollDemoPage.tsx', docPath: '/stn-design/components/scroll' },\n { id: 'table', label: 'Table', category: 'component', scaffoldKey: 'table', defaultFileName: 'TableDemoPage.tsx', docPath: '/stn-design/components/table' },\n { id: 'table-pagination', label: 'Table · Pagination', category: 'component', scaffoldKey: 'pagination', defaultFileName: 'PaginationDemoPage.tsx', docPath: '/stn-design/components/table/pagination' },\n { id: 'widget', label: 'Widget', category: 'component', scaffoldKey: 'widget', defaultFileName: 'WidgetDemoPage.tsx', docPath: '/stn-design/components/widget' },\n { id: 'tree-node', label: 'Tree Node', category: 'component', scaffoldKey: 'tree-node', defaultFileName: 'TreeNodeDemoPage.tsx', docPath: '/stn-design/components/tree-node' },\n\n // —— Patterns ——\n { id: 'layer-l0', label: 'Layer · L0 Background', category: 'pattern', scaffoldKey: 'layer-l0', defaultFileName: 'Layer0BackgroundPattern.tsx', docPath: '/stn-design/layouts/layer/0' },\n { id: 'layer-l1', label: 'Layer · L1 Content', category: 'pattern', scaffoldKey: 'layer-l1', defaultFileName: 'Layer1ContentPattern.tsx', docPath: '/stn-design/layouts/layer/1' },\n { id: 'side-navigation', label: 'Side Navigation', category: 'pattern', scaffoldKey: 'side-navigation', defaultFileName: 'SideNavigationPatternPage.tsx', docPath: '/stn-design/pattern/side-navigation' },\n { id: 'alert-center', label: 'Alert center', category: 'pattern', scaffoldKey: 'alert-center', defaultFileName: 'AlertCenterPatternPage.tsx', docPath: '/stn-design/pattern/alert-center' },\n { id: 'search-bar', label: 'Search bar', category: 'pattern', scaffoldKey: 'search-bar', defaultFileName: 'SearchBarPatternPage.tsx', docPath: '/stn-design/pattern/search-bar' },\n { id: 'header', label: 'Header', category: 'pattern', scaffoldKey: 'header', defaultFileName: 'HeaderPatternPage.tsx', docPath: '/stn-design/pattern/header' },\n { id: 'background', label: 'Background', category: 'pattern', scaffoldKey: 'background', defaultFileName: 'BackgroundPatternPage.tsx', docPath: '/stn-design/layouts/layer/0' },\n { id: 'popup', label: 'Popup', category: 'pattern', scaffoldKey: 'popup', defaultFileName: 'PopupPatternPage.tsx', docPath: '/stn-design/pattern/popup' },\n { id: 'data-table', label: 'Data Table', category: 'pattern', scaffoldKey: 'data-table', defaultFileName: 'DataTablePatternPage.tsx', docPath: '/stn-design/pattern/data-table' },\n { id: 'tree', label: 'Tree', category: 'pattern', scaffoldKey: 'tree', defaultFileName: 'TreePatternPage.tsx', docPath: '/stn-design/pattern/tree' },\n { id: 'loading-skeleton', label: 'Loading skeleton', category: 'pattern', scaffoldKey: 'loading-skeleton', defaultFileName: 'LoadingSkeletonPatternPage.tsx', docPath: '/stn-design/pattern/loading-skeleton' },\n { id: 'widget-pattern', label: 'Widget', category: 'pattern', scaffoldKey: 'widget-pattern', defaultFileName: 'WidgetPatternPage.tsx', docPath: '/stn-design/pattern/widget' },\n\n // —— Layouts ——\n { id: 'login', label: 'Login', category: 'layout', scaffoldKey: 'login', defaultFileName: 'LoginPage.tsx', docPath: '/stn-design/layouts/login' },\n { id: 'list-view', label: 'List view', category: 'layout', scaffoldKey: 'list-view', defaultFileName: 'ListViewPage.tsx', docPath: '/stn-design/layouts/list-view' },\n { id: 'map-dashboard', label: 'Map Dashboard', category: 'layout', scaffoldKey: 'map-dashboard', defaultFileName: 'MapDashboardPage.tsx', docPath: '/stn-design/layouts/dashboard/map' },\n { id: 'topology-dashboard', label: 'Topology Dashboard', category: 'layout', scaffoldKey: 'topology-dashboard', defaultFileName: 'TopologyDashboardPage.tsx', docPath: '/stn-design/layouts/dashboard/topology' },\n { id: 'widget-grid', label: 'Widget Grid Board', category: 'layout', scaffoldKey: 'widget-grid', defaultFileName: 'WidgetGridDashboardPage.tsx', docPath: '/stn-design/layouts/dashboard/widget' },\n]\n\nexport const STN_CLI_CATEGORY_LABELS: Record<StnCliCategory, string> = {\n component: '컴포넌트',\n pattern: '패턴',\n layout: '레이아웃',\n}\n\nexport function listStnCliCatalog(category: StnCliCategory): StnCliCatalogItem[] {\n return STN_CLI_CATALOG.filter((item) => item.category === category)\n}\n\n"],"mappings":"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","names":["process","require","process"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli/index.ts","../src/cli/runHelp.ts","../src/cli/resolveScaffold.ts","../src/cli/stnCliCatalog.ts"],"sourcesContent":["import { createRequire } from 'node:module'\nimport process from 'node:process'\n\nimport { runStnHelp } from './runHelp'\n\nconst require = createRequire(import.meta.url)\nconst { version } = require('../package.json') as { version: string }\n\nexport { runStnHelp } from './runHelp'\nexport { STN_CLI_CATALOG, listStnCliCatalog } from './stnCliCatalog'\nexport { resolveStnScaffold } from './resolveScaffold'\n\nexport async function runCli(argv: string[]): Promise<void> {\n const [, , command, ...rest] = argv\n\n if (command === 'help' || command === undefined) {\n await runStnHelp()\n return\n }\n\n if (command === '--version' || command === '-V') {\n console.log(version)\n return\n }\n\n console.error(`Unknown command: ${command}${rest.length ? ` ${rest.join(' ')}` : ''}`)\n console.error('Usage: npx @stn-uiux/pub-ui help')\n process.exitCode = 1\n}\n","import process from 'node:process'\nimport { existsSync } from 'node:fs'\nimport { mkdir, writeFile } from 'node:fs/promises'\nimport { dirname, join, resolve } from 'node:path'\n\nimport { confirm, input, select } from '@inquirer/prompts'\n\nimport { resolveStnScaffold } from './resolveScaffold'\nimport {\n listStnCliCatalog,\n STN_CLI_CATEGORY_LABELS,\n type StnCliCatalogItem,\n type StnCliCategory,\n} from './stnCliCatalog'\n\nconst CATEGORY_ORDER: StnCliCategory[] = ['component', 'pattern', 'layout']\n\nasync function pickCategory(): Promise<StnCliCategory> {\n return select({\n message: '무엇을 만들까요?',\n choices: CATEGORY_ORDER.map((value) => ({\n value,\n name: `${CATEGORY_ORDER.indexOf(value) + 1}. ${STN_CLI_CATEGORY_LABELS[value]}`,\n })),\n })\n}\n\nasync function pickItem(category: StnCliCategory): Promise<StnCliCatalogItem> {\n const items = listStnCliCatalog(category)\n return select({\n message: `${STN_CLI_CATEGORY_LABELS[category]} 선택`,\n choices: items.map((item) => ({\n value: item,\n name: item.label,\n description: item.docPath,\n })),\n })\n}\n\nasync function pickOutputPath(item: StnCliCatalogItem, cwd: string): Promise<string> {\n const defaultDir = join(cwd, 'src', 'pages')\n const defaultPath = join(defaultDir, item.defaultFileName)\n\n const answer = await input({\n message: '생성할 파일 경로',\n default: defaultPath,\n })\n\n return resolve(cwd, answer.trim() || defaultPath)\n}\n\nfunction printNextSteps(item: StnCliCatalogItem, filePath: string) {\n console.log('\\n✓ 생성 완료:', filePath)\n if (item.docPath) {\n console.log(' 문서:', item.docPath)\n }\n console.log('\\n다음 단계:')\n console.log(' 1. main.tsx 에 @stn-uiux/pub-ui/styles.css import 확인')\n console.log(' 2. StnProvider 로 앱 래핑')\n console.log(' 3. 라우터에 이 페이지 컴포넌트 연결')\n if (item.category === 'layout') {\n console.log(' 4. Playground 옵션 세부 조정은 문서 사이트에서 React/HTML 코드 복사')\n }\n}\n\nexport async function runStnHelp(cwd = process.cwd()): Promise<void> {\n console.log('STN Pub help — 컴포넌트 · 패턴 · 레이아웃 scaffold\\n')\n\n const category = await pickCategory()\n const item = await pickItem(category)\n const filePath = await pickOutputPath(item, cwd)\n\n if (existsSync(filePath)) {\n const overwrite = await confirm({\n message: `${filePath} 가 이미 있습니다. 덮어쓸까요?`,\n default: false,\n })\n if (!overwrite) {\n console.log('취소했습니다.')\n return\n }\n }\n\n const code = resolveStnScaffold(item.scaffoldKey)\n await mkdir(dirname(filePath), { recursive: true })\n await writeFile(filePath, code, 'utf8')\n\n printNextSteps(item, filePath)\n}\n","import { STN_ALERT_CENTER_USAGE } from '../data/stnAlertCenter'\nimport { STN_HEADER_USAGE } from '../data/stnHeader'\nimport { STN_DATE_PICKER_USAGE } from '../data/stnDatePicker'\nimport { STN_DROPDOWN_USAGE } from '../data/stnDropdown'\nimport { STN_SIDE_NAV_ITEM_USAGE, STN_SIDE_NAVIGATION_USAGE } from '../data/stnSideNavigation'\nimport { STN_LAYER0_BACKGROUND_USAGE } from '../data/stnLayer0Background'\nimport { STN_LAYER_ROLE_USAGE } from '../data/stnLayer'\nimport { STN_LAYOUT_LIST_VIEW_USAGE } from '../data/stnLayout'\nimport { STN_LOADING_SKELETON_USAGE } from '../data/stnLoadingSkeleton'\nimport { STN_POPUP_USAGE } from '../data/stnPopup'\nimport { STN_SCROLL_USAGE } from '../data/stnScroll'\nimport { STN_SEARCH_REQUIREMENT_USAGE } from '../data/stnSearchRequirement'\nimport { STN_TABLE_REACT_EXAMPLE } from '../data/stnTable'\nimport { STN_TOAST_REACT_USAGE } from '../data/stnToast'\nimport { STN_TREE_REACT_EXAMPLE } from '../data/stnTree'\nimport { STN_TEXT_FIELD_USAGE } from '../data/stnTextField'\nimport { STN_WIDGET_FIGMA_SHELL_REACT, STN_WIDGET_USAGE } from '../data/stnWidget'\n\nfunction wrapJsxPage(componentName: string, imports: string, body: string): string {\n return `/** Generated by \\`npx @stn-uiux/pub-ui help\\` */\n${imports}\n\nexport function ${componentName}() {\n${body}\n}\n`\n}\n\nconst SCAFFOLDS: Record<string, () => string> = {\n button: () =>\n wrapJsxPage(\n 'ButtonDemoPage',\n \"import { StnButton } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24, display: 'flex', gap: 8 }}>\n <StnButton variant=\"contained\" size=\"M\">레이블</StnButton>\n <StnButton variant=\"ghost\" size=\"S\">레이블</StnButton>\n <StnButton icon=\"line/settings\" aria-label=\"설정\" size=\"M\" />\n </div>\n )`,\n ),\n 'icon-button': () =>\n wrapJsxPage(\n 'IconButtonDemoPage',\n \"import { StnButton } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnButton icon=\"line/settings\" aria-label=\"설정\" size=\"M\" />\n </div>\n )`,\n ),\n toast: () => STN_TOAST_REACT_USAGE,\n 'progress-bar': () =>\n wrapJsxPage(\n 'ProgressBarDemoPage',\n \"import { StnProgressBar } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnProgressBar value={65} label=\"진행률\" />\n </div>\n )`,\n ),\n checkbox: () =>\n wrapJsxPage(\n 'CheckboxDemoPage',\n \"import { useState } from 'react'\\nimport { StnCheckbox } from '@stn-uiux/pub-ui-react'\",\n ` const [checked, setChecked] = useState(true)\n return (\n <div style={{ padding: 24 }}>\n <StnCheckbox checked={checked} onChange={setChecked} label=\"동의합니다\" />\n </div>\n )`,\n ),\n 'toggle-button': () =>\n wrapJsxPage(\n 'ToggleButtonDemoPage',\n \"import { StnToggleButton } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnToggleButton pressed={false}>토글</StnToggleButton>\n </div>\n )`,\n ),\n segmented: () =>\n wrapJsxPage(\n 'SegmentedDemoPage',\n \"import { useState } from 'react'\\nimport { StnSegmented } from '@stn-uiux/pub-ui-react'\",\n ` const [mode, setMode] = useState('normal')\n return (\n <div style={{ padding: 24 }}>\n <StnSegmented\n aria-label=\"로그인 방식\"\n value={mode}\n onChange={setMode}\n options={[\n { value: 'normal', label: '일반 로그인' },\n { value: 'social', label: '소셜 로그인' },\n ]}\n />\n </div>\n )`,\n ),\n radio: () =>\n wrapJsxPage(\n 'RadioDemoPage',\n \"import { useState } from 'react'\\nimport { StnRadioGroup } from '@stn-uiux/pub-ui-react'\",\n ` const [value, setValue] = useState('a')\n return (\n <div style={{ padding: 24 }}>\n <StnRadioGroup\n name=\"demo\"\n value={value}\n onChange={setValue}\n options={[\n { value: 'a', label: '옵션 A' },\n { value: 'b', label: '옵션 B' },\n ]}\n />\n </div>\n )`,\n ),\n switch: () =>\n wrapJsxPage(\n 'SwitchDemoPage',\n \"import { useState } from 'react'\\nimport { StnSwitch } from '@stn-uiux/pub-ui-react'\",\n ` const [on, setOn] = useState(true)\n return (\n <div style={{ padding: 24 }}>\n <StnSwitch checked={on} onChange={setOn} label=\"알림\" />\n </div>\n )`,\n ),\n slider: () =>\n wrapJsxPage(\n 'SliderDemoPage',\n \"import { useState } from 'react'\\nimport { StnSlider } from '@stn-uiux/pub-ui-react'\",\n ` const [value, setValue] = useState(40)\n return (\n <div style={{ padding: 24, maxWidth: 320 }}>\n <StnSlider value={value} onChange={setValue} min={0} max={100} />\n </div>\n )`,\n ),\n chip: () =>\n wrapJsxPage(\n 'ChipDemoPage',\n \"import { StnChip } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24, display: 'flex', gap: 8 }}>\n <StnChip grade=\"critical\" />\n <StnChip grade=\"major\" variant=\"border\" />\n </div>\n )`,\n ),\n 'side-nav-item': () => STN_SIDE_NAV_ITEM_USAGE,\n breadcrumb: () =>\n wrapJsxPage(\n 'BreadcrumbDemoPage',\n \"import { StnBreadcrumb } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnBreadcrumb\n size=\"md\"\n items={[\n { id: 'home', label: 'Home', href: '#' },\n { id: 'list', label: '목록', current: true },\n ]}\n />\n </div>\n )`,\n ),\n 'header-title': () =>\n wrapJsxPage(\n 'HeaderTitleDemoPage',\n \"import { StnHeaderTitle } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnHeaderTitle title=\"Network Topology\" showClock />\n </div>\n )`,\n ),\n dropdown: () => STN_DROPDOWN_USAGE,\n 'text-field': () => STN_TEXT_FIELD_USAGE,\n 'date-picker': () => STN_DATE_PICKER_USAGE,\n scroll: () => STN_SCROLL_USAGE,\n table: () => STN_TABLE_REACT_EXAMPLE,\n pagination: () =>\n wrapJsxPage(\n 'PaginationDemoPage',\n \"import { StnPagination } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <div style={{ padding: 24 }}>\n <StnPagination page={1} count={8} onChange={() => {}} />\n </div>\n )`,\n ),\n widget: () => STN_WIDGET_FIGMA_SHELL_REACT,\n 'tree-node': () => STN_TREE_REACT_EXAMPLE,\n\n 'layer-l0': () => STN_LAYER0_BACKGROUND_USAGE,\n 'layer-l1': () => STN_LAYER_ROLE_USAGE,\n 'side-navigation': () => STN_SIDE_NAVIGATION_USAGE,\n 'alert-center': () => STN_ALERT_CENTER_USAGE,\n 'search-bar': () => STN_SEARCH_REQUIREMENT_USAGE,\n header: () => STN_HEADER_USAGE,\n background: () => STN_LAYER0_BACKGROUND_USAGE,\n popup: () => STN_POPUP_USAGE,\n 'data-table': () => STN_TABLE_REACT_EXAMPLE,\n tree: () => STN_TREE_REACT_EXAMPLE,\n 'loading-skeleton': () => STN_LOADING_SKELETON_USAGE,\n 'widget-pattern': () => STN_WIDGET_USAGE,\n\n login: () =>\n wrapJsxPage(\n 'LoginPage',\n \"import { LoginPageScaffold } from '@stn-uiux/pub-ui-react'\",\n ` return (\n <LoginPageScaffold\n onLogin={(id, password) => {\n console.log(id, password)\n }}\n />\n )`,\n ),\n 'list-view': () => STN_LAYOUT_LIST_VIEW_USAGE,\n 'map-dashboard': () => `import {\n DashboardPageScaffold,\n StnHeader,\n StnSideNavigation,\n} from '@stn-uiux/pub-ui-react'\n\n/** Map Dashboard — /stn-design/layouts/dashboard/map Playground 기본 (SideNav · L1 헤더 · map-bg CSS) */\nexport function MapDashboardPage() {\n return (\n <DashboardPageScaffold\n shell=\"layer\"\n wrapClassName=\"stn-page--map-bg\"\n gnb={\n <StnSideNavigation>\n <StnSideNavigation.Header>\n <StnSideNavigation.Logo />\n <StnSideNavigation.Toggle />\n </StnSideNavigation.Header>\n <StnSideNavigation.Menu>\n <StnSideNavigation.Item label=\"메인 대시보드\" active />\n <StnSideNavigation.Item label=\"서버 모니터링\" />\n <StnSideNavigation.Item label=\"네트워크 분석\" />\n </StnSideNavigation.Menu>\n <StnSideNavigation.Spacer />\n <StnSideNavigation.Footer curved>\n <StnSideNavigation.Watermark />\n <StnSideNavigation.Item label=\"알림\" badge={12} />\n <StnSideNavigation.Item label=\"설정\" />\n </StnSideNavigation.Footer>\n </StnSideNavigation>\n }\n header={\n <StnHeader variant=\"widget\" />\n }\n mapMessage=\"Map Dashboard 캔버스\"\n mapNote=\"GIS / 맵 엔진 마운트 영역\"\n />\n )\n}`,\n 'topology-dashboard': () => `import {\n DashboardPageScaffold,\n StnHeader,\n StnSideNavigation,\n} from '@stn-uiux/pub-ui-react'\n\n/** Topology Dashboard — /stn-design/layouts/dashboard/topology Playground 기본 (SideNav · L1 헤더 · map-bg CSS) */\nexport function TopologyDashboardPage() {\n return (\n <DashboardPageScaffold\n shell=\"layer\"\n wrapClassName=\"stn-page--map-bg\"\n gnb={\n <StnSideNavigation>\n <StnSideNavigation.Header>\n <StnSideNavigation.Logo />\n <StnSideNavigation.Toggle />\n </StnSideNavigation.Header>\n <StnSideNavigation.Menu>\n <StnSideNavigation.Item label=\"메인 대시보드\" active />\n <StnSideNavigation.Item label=\"서버 모니터링\" />\n <StnSideNavigation.Item label=\"네트워크 분석\" />\n </StnSideNavigation.Menu>\n <StnSideNavigation.Spacer />\n <StnSideNavigation.Footer curved>\n <StnSideNavigation.Watermark />\n <StnSideNavigation.Item label=\"알림\" badge={12} />\n <StnSideNavigation.Item label=\"설정\" />\n </StnSideNavigation.Footer>\n </StnSideNavigation>\n }\n header={\n <StnHeader variant=\"widget\" />\n }\n mapMessage=\"Topology Dashboard 캔버스\"\n mapNote=\"네트워크 토폴로지 캔버스 마운트 영역\"\n />\n )\n}`,\n\n 'widget-grid': () => `import {\n DashboardPageScaffold,\n StnHeader,\n StnSideNavigation,\n StnWidget,\n} from '@stn-uiux/pub-ui-react'\n\n/** Widget Grid Board — /stn-design/layouts/dashboard/widget Playground 기본 (SideNav · L1 헤더 포함) */\nexport function WidgetGridDashboardPage() {\n return (\n <DashboardPageScaffold\n shell=\"layer\"\n gnb={\n <StnSideNavigation>\n <StnSideNavigation.Header>\n <StnSideNavigation.Logo />\n <StnSideNavigation.Toggle />\n </StnSideNavigation.Header>\n <StnSideNavigation.Menu>\n <StnSideNavigation.Item label=\"메인 대시보드\" active />\n <StnSideNavigation.Item label=\"서버 모니터링\" />\n <StnSideNavigation.Item label=\"네트워크 분석\" />\n </StnSideNavigation.Menu>\n <StnSideNavigation.Spacer />\n <StnSideNavigation.Footer curved>\n <StnSideNavigation.Watermark />\n <StnSideNavigation.Item label=\"알림\" badge={12} />\n <StnSideNavigation.Item label=\"설정\" />\n </StnSideNavigation.Footer>\n </StnSideNavigation>\n }\n header={\n <StnHeader variant=\"widget\" />\n }\n >\n <div>\n <div>\n <StnWidget title=\"장애 통계\" appearance=\"translucent\">\n <StnWidget.ChartSlot label=\"chart\" />\n </StnWidget>\n </div>\n <div>\n <StnWidget title=\"세션 현황\" appearance=\"translucent\">\n <StnWidget.ChartSlot label=\"chart\" />\n </StnWidget>\n </div>\n <div>\n <StnWidget title=\"모니터링\" appearance=\"translucent\">\n <StnWidget.ChartSlot label=\"chart\" />\n </StnWidget>\n </div>\n </div>\n </DashboardPageScaffold>\n )\n}`,\n}\n\nexport function resolveStnScaffold(scaffoldKey: string): string {\n const factory = SCAFFOLDS[scaffoldKey]\n if (!factory) {\n throw new Error(`Unknown scaffold: ${scaffoldKey}`)\n }\n const code = factory().trimEnd()\n return code.endsWith('\\n') ? code : `${code}\\n`\n}\n","export type StnCliCategory = 'component' | 'pattern' | 'layout'\n\nexport type StnCliCatalogItem = {\n id: string\n label: string\n category: StnCliCategory\n scaffoldKey: string\n /** 생성 파일 기본명 (예: ListViewPage.tsx) */\n defaultFileName: string\n docPath?: string\n}\n\n/** `npx @stn-uiux/pub-ui help` — 문서 사이트 nav와 동일한 선택지 */\nexport const STN_CLI_CATALOG: StnCliCatalogItem[] = [\n // —— Components ——\n { id: 'button', label: 'Button', category: 'component', scaffoldKey: 'button', defaultFileName: 'ButtonDemoPage.tsx', docPath: '/stn-design/components/button' },\n { id: 'toast', label: 'Toast', category: 'component', scaffoldKey: 'toast', defaultFileName: 'ToastDemoPage.tsx', docPath: '/stn-design/components/toast' },\n { id: 'progress-bar', label: 'Progress Bar', category: 'component', scaffoldKey: 'progress-bar', defaultFileName: 'ProgressBarDemoPage.tsx', docPath: '/stn-design/components/progress-bar' },\n { id: 'checkbox', label: 'Checkbox', category: 'component', scaffoldKey: 'checkbox', defaultFileName: 'CheckboxDemoPage.tsx', docPath: '/stn-design/components/checkbox' },\n { id: 'toggle-button', label: 'Toggle Button', category: 'component', scaffoldKey: 'toggle-button', defaultFileName: 'ToggleButtonDemoPage.tsx', docPath: '/stn-design/components/toggle-button' },\n { id: 'segmented', label: 'Segmented', category: 'component', scaffoldKey: 'segmented', defaultFileName: 'SegmentedDemoPage.tsx', docPath: '/stn-design/components/segmented' },\n { id: 'radio', label: 'Radio', category: 'component', scaffoldKey: 'radio', defaultFileName: 'RadioDemoPage.tsx', docPath: '/stn-design/components/radio' },\n { id: 'switch', label: 'Switch', category: 'component', scaffoldKey: 'switch', defaultFileName: 'SwitchDemoPage.tsx', docPath: '/stn-design/components/switch' },\n { id: 'slider', label: 'Slider', category: 'component', scaffoldKey: 'slider', defaultFileName: 'SliderDemoPage.tsx', docPath: '/stn-design/components/slider' },\n { id: 'chip', label: 'Chip', category: 'component', scaffoldKey: 'chip', defaultFileName: 'ChipDemoPage.tsx', docPath: '/stn-design/components/chip' },\n { id: 'side-nav-item', label: 'Side Nav Item', category: 'component', scaffoldKey: 'side-nav-item', defaultFileName: 'SideNavItemDemoPage.tsx', docPath: '/stn-design/components/side-nav-item' },\n { id: 'breadcrumb', label: 'Breadcrumb', category: 'component', scaffoldKey: 'breadcrumb', defaultFileName: 'BreadcrumbDemoPage.tsx', docPath: '/stn-design/components/breadcrumb' },\n { id: 'header-title', label: 'Header title', category: 'component', scaffoldKey: 'header-title', defaultFileName: 'HeaderTitleDemoPage.tsx', docPath: '/stn-design/components/header-title' },\n { id: 'dropdown', label: 'Dropdown', category: 'component', scaffoldKey: 'dropdown', defaultFileName: 'DropdownDemoPage.tsx', docPath: '/stn-design/components/dropdown' },\n { id: 'text-field', label: 'TextField', category: 'component', scaffoldKey: 'text-field', defaultFileName: 'TextFieldDemoPage.tsx', docPath: '/stn-design/components/text-field' },\n { id: 'date-picker', label: 'Date range picker', category: 'component', scaffoldKey: 'date-picker', defaultFileName: 'DatePickerDemoPage.tsx', docPath: '/stn-design/components/date-picker' },\n { id: 'indicator', label: 'System monitor · Theme', category: 'component', scaffoldKey: 'indicator', defaultFileName: 'IndicatorDemoPage.tsx', docPath: '/stn-design/components/indicator' },\n { id: 'scroll', label: 'Scroll', category: 'component', scaffoldKey: 'scroll', defaultFileName: 'ScrollDemoPage.tsx', docPath: '/stn-design/components/scroll' },\n { id: 'table', label: 'Table', category: 'component', scaffoldKey: 'table', defaultFileName: 'TableDemoPage.tsx', docPath: '/stn-design/components/table' },\n { id: 'table-pagination', label: 'Table · Pagination', category: 'component', scaffoldKey: 'pagination', defaultFileName: 'PaginationDemoPage.tsx', docPath: '/stn-design/components/table/pagination' },\n { id: 'widget', label: 'Widget', category: 'component', scaffoldKey: 'widget', defaultFileName: 'WidgetDemoPage.tsx', docPath: '/stn-design/components/widget' },\n { id: 'tree-node', label: 'Tree Node', category: 'component', scaffoldKey: 'tree-node', defaultFileName: 'TreeNodeDemoPage.tsx', docPath: '/stn-design/components/tree-node' },\n\n // —— Patterns ——\n { id: 'layer-l0', label: 'Layer · L0 Background', category: 'pattern', scaffoldKey: 'layer-l0', defaultFileName: 'Layer0BackgroundPattern.tsx', docPath: '/stn-design/layouts/layer/0' },\n { id: 'layer-l1', label: 'Layer · L1 Content', category: 'pattern', scaffoldKey: 'layer-l1', defaultFileName: 'Layer1ContentPattern.tsx', docPath: '/stn-design/layouts/layer/1' },\n { id: 'side-navigation', label: 'Side Navigation', category: 'pattern', scaffoldKey: 'side-navigation', defaultFileName: 'SideNavigationPatternPage.tsx', docPath: '/stn-design/pattern/side-navigation' },\n { id: 'alert-center', label: 'Alert center', category: 'pattern', scaffoldKey: 'alert-center', defaultFileName: 'AlertCenterPatternPage.tsx', docPath: '/stn-design/pattern/alert-center' },\n { id: 'search-bar', label: 'Search bar', category: 'pattern', scaffoldKey: 'search-bar', defaultFileName: 'SearchBarPatternPage.tsx', docPath: '/stn-design/pattern/search-bar' },\n { id: 'header', label: 'Header', category: 'pattern', scaffoldKey: 'header', defaultFileName: 'HeaderPatternPage.tsx', docPath: '/stn-design/pattern/header' },\n { id: 'background', label: 'Background', category: 'pattern', scaffoldKey: 'background', defaultFileName: 'BackgroundPatternPage.tsx', docPath: '/stn-design/layouts/layer/0' },\n { id: 'popup', label: 'Popup', category: 'pattern', scaffoldKey: 'popup', defaultFileName: 'PopupPatternPage.tsx', docPath: '/stn-design/pattern/popup' },\n { id: 'data-table', label: 'Data Table', category: 'pattern', scaffoldKey: 'data-table', defaultFileName: 'DataTablePatternPage.tsx', docPath: '/stn-design/pattern/data-table' },\n { id: 'tree', label: 'Tree', category: 'pattern', scaffoldKey: 'tree', defaultFileName: 'TreePatternPage.tsx', docPath: '/stn-design/pattern/tree' },\n { id: 'loading-skeleton', label: 'Loading skeleton', category: 'pattern', scaffoldKey: 'loading-skeleton', defaultFileName: 'LoadingSkeletonPatternPage.tsx', docPath: '/stn-design/pattern/loading-skeleton' },\n { id: 'widget-pattern', label: 'Widget', category: 'pattern', scaffoldKey: 'widget-pattern', defaultFileName: 'WidgetPatternPage.tsx', docPath: '/stn-design/pattern/widget' },\n\n // —— Layouts ——\n { id: 'login', label: 'Login', category: 'layout', scaffoldKey: 'login', defaultFileName: 'LoginPage.tsx', docPath: '/stn-design/layouts/login' },\n { id: 'list-view', label: 'List view', category: 'layout', scaffoldKey: 'list-view', defaultFileName: 'ListViewPage.tsx', docPath: '/stn-design/layouts/list-view' },\n { id: 'map-dashboard', label: 'Map Dashboard', category: 'layout', scaffoldKey: 'map-dashboard', defaultFileName: 'MapDashboardPage.tsx', docPath: '/stn-design/layouts/dashboard/map' },\n { id: 'topology-dashboard', label: 'Topology Dashboard', category: 'layout', scaffoldKey: 'topology-dashboard', defaultFileName: 'TopologyDashboardPage.tsx', docPath: '/stn-design/layouts/dashboard/topology' },\n { id: 'widget-grid', label: 'Widget Grid Board', category: 'layout', scaffoldKey: 'widget-grid', defaultFileName: 'WidgetGridDashboardPage.tsx', docPath: '/stn-design/layouts/dashboard/widget' },\n]\n\nexport const STN_CLI_CATEGORY_LABELS: Record<StnCliCategory, string> = {\n component: '컴포넌트',\n pattern: '패턴',\n layout: '레이아웃',\n}\n\nexport function listStnCliCatalog(category: StnCliCategory): StnCliCatalogItem[] {\n return STN_CLI_CATALOG.filter((item) => item.category === category)\n}\n\n"],"mappings":"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","names":["process","require","process"]}
|
package/dist/data/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export { STN_ICONOGRAPHY_INTRO, STN_ICONOGRAPHY_PRIMITIVE_ROWS, STN_ICONOGRAPHY_
|
|
|
23
23
|
export { STN_INPUT_WIDTH_PRESETS, StnInputWidthPreset, StnInputWidthValue, StnResolvedInputWidth, isStnInputFullWidth, isStnInputWidthPreset, resolveStnInputWidth, toStnInputWidthPreset } from './stnInputWidth.js';
|
|
24
24
|
export { STN_ELEVATION_Z_INDEX, STN_LAYER_DIM_MODAL_HTML, STN_LAYER_INTRO, STN_LAYER_ROLE_ROWS, STN_LAYER_ROLE_TO_LEVEL, STN_LAYER_ROLE_USAGE, STN_LAYER_SURFACE_ROWS, StnElevationLevel, StnLayerRole, StnLayerSurface } from './stnLayer.js';
|
|
25
25
|
export { STN_LAYER0_BACKGROUND_FIGMA, STN_LAYER0_BACKGROUND_INTRO, STN_LAYER0_BACKGROUND_PLAYGROUND_PRESETS, STN_LAYER0_BACKGROUND_USAGE, STN_LAYER0_BACKGROUND_USAGE_HTML, STN_LAYER0_BACKGROUND_VARIANT_ROWS, STN_LAYER0_MAP_LIGHT_OVERLAY, StnLayer0BackgroundKind, StnLayer0BackgroundPlaygroundPresetId, StnLayer0BackgroundPreset } from './stnLayer0Background.js';
|
|
26
|
-
export { STN_LAYER0_BACKGROUND_ASSET_PATHS, STN_LAYER0_BACKGROUND_DEMO_IMAGES } from './stnLayer0BackgroundAssets.js';
|
|
26
|
+
export { STN_CDN_ASSET_BASE, STN_LAYER0_BACKGROUND_ASSET_PATHS, STN_LAYER0_BACKGROUND_DEMO_IMAGES } from './stnLayer0BackgroundAssets.js';
|
|
27
27
|
export { STN_ALERT_CENTER_PAGE_SCAFFOLD_USAGE, STN_LAYER_SHELL_USAGE, STN_LAYOUT_ALERT_CENTER_USAGE, STN_LAYOUT_CONTENT_ROWS, STN_LAYOUT_INTRO, STN_LAYOUT_LAYER_PAGE_TREE, STN_LAYOUT_LIST_LAYER_TABS, STN_LAYOUT_LIST_VIEW_BARE_USAGE, STN_LAYOUT_LIST_VIEW_INTRO, STN_LAYOUT_LIST_VIEW_USAGE, STN_LAYOUT_MAP_DASHBOARD_HEADER_USAGE, STN_LAYOUT_MAP_DASHBOARD_INTRO, STN_LAYOUT_MAP_DASHBOARD_USAGE, STN_LAYOUT_MAP_LAYER_TABS, STN_LAYOUT_PAGE_TREE, STN_LAYOUT_PLAYGROUND_TABS, STN_LAYOUT_RECIPES, STN_LAYOUT_REGION_ROWS, STN_LAYOUT_SCREEN_RECIPES, STN_LAYOUT_SHELL_USAGE, STN_LAYOUT_SLOT_USAGE, STN_LAYOUT_WHEN_TO_USE, STN_PAGE_SCAFFOLD_COMPOUND_USAGE, STN_PAGE_SCAFFOLD_INTRO, STN_PAGE_SCAFFOLD_KINDS, StnContentAreaModifier, StnLayoutListLayerTabId, StnLayoutMapLayerTabId, StnLayoutRegion, StnLayoutScreenKind, StnLnbSide, StnPageScaffoldKind, applyLnbSideToModifiers, pubContentAreaClasses, pubLayoutRegionClass } from './stnLayout.js';
|
|
28
28
|
export { STN_LIST_TABLE_FIGMA, STN_LIST_TABLE_FOOTER_MAX_ACTIONS, STN_LIST_TABLE_OPTION_ROWS, STN_LIST_TABLE_PAGE_SIZE_OPTIONS, StnListTableOptionRow } from './stnListTable.js';
|
|
29
29
|
export { STN_LOADING_SKELETON_COLORS, STN_LOADING_SKELETON_INTRO, STN_LOADING_SKELETON_PARTS, STN_LOADING_SKELETON_USAGE, STN_LOADING_SKELETON_USAGE_HTML } from './stnLoadingSkeleton.js';
|
package/dist/data/index.js
CHANGED
|
@@ -107,7 +107,7 @@ import {
|
|
|
107
107
|
STN_LOGIN_HTML,
|
|
108
108
|
STN_LOGIN_INTRO,
|
|
109
109
|
STN_LOGIN_USAGE
|
|
110
|
-
} from "../chunk-
|
|
110
|
+
} from "../chunk-AWJXDCX2.js";
|
|
111
111
|
import {
|
|
112
112
|
STN_MAP_DASHBOARD_OPTION_ROWS
|
|
113
113
|
} from "../chunk-3DAZMM4T.js";
|
|
@@ -125,7 +125,7 @@ import {
|
|
|
125
125
|
import {
|
|
126
126
|
STN_UI_VERSION,
|
|
127
127
|
STN_UI_VERSION_LABEL
|
|
128
|
-
} from "../chunk-
|
|
128
|
+
} from "../chunk-QT4HHVZH.js";
|
|
129
129
|
import {
|
|
130
130
|
STN_PAGE_ENTER_MOTION_INTRO,
|
|
131
131
|
STN_PAGE_ENTER_MOTION_ROWS,
|
|
@@ -414,10 +414,10 @@ import {
|
|
|
414
414
|
STN_LAYER0_MAP_LIGHT_OVERLAY
|
|
415
415
|
} from "../chunk-QAPQ4DB2.js";
|
|
416
416
|
import {
|
|
417
|
+
STN_CDN_ASSET_BASE,
|
|
417
418
|
STN_LAYER0_BACKGROUND_ASSET_PATHS,
|
|
418
419
|
STN_LAYER0_BACKGROUND_DEMO_IMAGES
|
|
419
|
-
} from "../chunk-
|
|
420
|
-
import "../chunk-OKSQLPEC.js";
|
|
420
|
+
} from "../chunk-XBFXX3D6.js";
|
|
421
421
|
import {
|
|
422
422
|
STN_ALERT_CENTER_PAGE_SCAFFOLD_USAGE,
|
|
423
423
|
STN_LAYER_SHELL_USAGE,
|
|
@@ -575,6 +575,7 @@ export {
|
|
|
575
575
|
STN_CARD_PADDINGS,
|
|
576
576
|
STN_CARD_RADII,
|
|
577
577
|
STN_CARD_VARIANTS,
|
|
578
|
+
STN_CDN_ASSET_BASE,
|
|
578
579
|
STN_CHART_INTRO,
|
|
579
580
|
STN_CHECKBOX_FIGMA,
|
|
580
581
|
STN_CHECKBOX_INTRO,
|
|
@@ -10,8 +10,7 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
STN_LAYER0_BACKGROUND_ASSET_PATHS,
|
|
12
12
|
STN_LAYER0_BACKGROUND_DEMO_IMAGES
|
|
13
|
-
} from "../chunk-
|
|
14
|
-
import "../chunk-OKSQLPEC.js";
|
|
13
|
+
} from "../chunk-XBFXX3D6.js";
|
|
15
14
|
export {
|
|
16
15
|
STN_LAYER0_BACKGROUND_ASSET_PATHS,
|
|
17
16
|
STN_LAYER0_BACKGROUND_DEMO_IMAGES,
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L0 preset images — Hosted on STN Official Vercel CDN for zero-setup & instant loading.
|
|
3
|
+
*/
|
|
4
|
+
declare const STN_CDN_ASSET_BASE = "https://stn-design.vercel.app/images/layer0";
|
|
1
5
|
declare const STN_LAYER0_BACKGROUND_DEMO_IMAGES: {
|
|
2
|
-
readonly dashboard:
|
|
3
|
-
readonly dashboardLight:
|
|
4
|
-
readonly dashboardDark:
|
|
5
|
-
readonly showroomA:
|
|
6
|
-
readonly showroomALight:
|
|
7
|
-
readonly showroomADark:
|
|
8
|
-
readonly showroomB:
|
|
9
|
-
readonly showroomBLight:
|
|
10
|
-
readonly showroomBDark:
|
|
11
|
-
readonly mapLight:
|
|
12
|
-
readonly mapDark:
|
|
13
|
-
readonly login:
|
|
14
|
-
readonly loginLight:
|
|
15
|
-
readonly loginDark:
|
|
6
|
+
readonly dashboard: "https://stn-design.vercel.app/images/layer0/dashboard-light.png";
|
|
7
|
+
readonly dashboardLight: "https://stn-design.vercel.app/images/layer0/dashboard-light.png";
|
|
8
|
+
readonly dashboardDark: "https://stn-design.vercel.app/images/layer0/dashboard-dark.png";
|
|
9
|
+
readonly showroomA: "https://stn-design.vercel.app/images/layer0/showroom-a-light.png";
|
|
10
|
+
readonly showroomALight: "https://stn-design.vercel.app/images/layer0/showroom-a-light.png";
|
|
11
|
+
readonly showroomADark: "https://stn-design.vercel.app/images/layer0/showroom-a-dark.png";
|
|
12
|
+
readonly showroomB: "https://stn-design.vercel.app/images/layer0/showroom-b-light.png";
|
|
13
|
+
readonly showroomBLight: "https://stn-design.vercel.app/images/layer0/showroom-b-light.png";
|
|
14
|
+
readonly showroomBDark: "https://stn-design.vercel.app/images/layer0/showroom-b-dark.png";
|
|
15
|
+
readonly mapLight: "https://stn-design.vercel.app/images/layer0/map-light.png";
|
|
16
|
+
readonly mapDark: "https://stn-design.vercel.app/images/layer0/map-dark.png";
|
|
17
|
+
readonly login: "https://stn-design.vercel.app/images/layer0/login-light.png";
|
|
18
|
+
readonly loginLight: "https://stn-design.vercel.app/images/layer0/login-light.png";
|
|
19
|
+
readonly loginDark: "https://stn-design.vercel.app/images/layer0/login-dark.png";
|
|
16
20
|
};
|
|
17
21
|
/** Pub CSS @assets 경로 — HTML·vanilla 소비자용 */
|
|
18
22
|
declare const STN_LAYER0_BACKGROUND_ASSET_PATHS: {
|
|
@@ -32,4 +36,4 @@ declare const STN_LAYER0_BACKGROUND_ASSET_PATHS: {
|
|
|
32
36
|
readonly loginDark: "@assets/images/layer0/login-dark.png";
|
|
33
37
|
};
|
|
34
38
|
|
|
35
|
-
export { STN_LAYER0_BACKGROUND_ASSET_PATHS, STN_LAYER0_BACKGROUND_DEMO_IMAGES };
|
|
39
|
+
export { STN_CDN_ASSET_BASE, STN_LAYER0_BACKGROUND_ASSET_PATHS, STN_LAYER0_BACKGROUND_DEMO_IMAGES };
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
|
+
STN_CDN_ASSET_BASE,
|
|
2
3
|
STN_LAYER0_BACKGROUND_ASSET_PATHS,
|
|
3
4
|
STN_LAYER0_BACKGROUND_DEMO_IMAGES
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-OKSQLPEC.js";
|
|
5
|
+
} from "../chunk-XBFXX3D6.js";
|
|
6
6
|
export {
|
|
7
|
+
STN_CDN_ASSET_BASE,
|
|
7
8
|
STN_LAYER0_BACKGROUND_ASSET_PATHS,
|
|
8
9
|
STN_LAYER0_BACKGROUND_DEMO_IMAGES
|
|
9
10
|
};
|
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.57";
|
|
3
|
+
declare const STN_UI_VERSION_LABEL = "v0.1.57";
|
|
4
4
|
|
|
5
5
|
export { STN_UI_VERSION, STN_UI_VERSION_LABEL };
|
package/dist/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export { STN_ICONOGRAPHY_INTRO, STN_ICONOGRAPHY_PRIMITIVE_ROWS, STN_ICONOGRAPHY_
|
|
|
23
23
|
export { STN_INPUT_WIDTH_PRESETS, StnInputWidthPreset, StnInputWidthValue, StnResolvedInputWidth, isStnInputFullWidth, isStnInputWidthPreset, resolveStnInputWidth, toStnInputWidthPreset } from './data/stnInputWidth.js';
|
|
24
24
|
export { STN_ELEVATION_Z_INDEX, STN_LAYER_DIM_MODAL_HTML, STN_LAYER_INTRO, STN_LAYER_ROLE_ROWS, STN_LAYER_ROLE_TO_LEVEL, STN_LAYER_ROLE_USAGE, STN_LAYER_SURFACE_ROWS, StnElevationLevel, StnLayerRole, StnLayerSurface } from './data/stnLayer.js';
|
|
25
25
|
export { STN_LAYER0_BACKGROUND_FIGMA, STN_LAYER0_BACKGROUND_INTRO, STN_LAYER0_BACKGROUND_PLAYGROUND_PRESETS, STN_LAYER0_BACKGROUND_USAGE, STN_LAYER0_BACKGROUND_USAGE_HTML, STN_LAYER0_BACKGROUND_VARIANT_ROWS, STN_LAYER0_MAP_LIGHT_OVERLAY, StnLayer0BackgroundKind, StnLayer0BackgroundPlaygroundPresetId, StnLayer0BackgroundPreset } from './data/stnLayer0Background.js';
|
|
26
|
-
export { STN_LAYER0_BACKGROUND_ASSET_PATHS, STN_LAYER0_BACKGROUND_DEMO_IMAGES } from './data/stnLayer0BackgroundAssets.js';
|
|
26
|
+
export { STN_CDN_ASSET_BASE, STN_LAYER0_BACKGROUND_ASSET_PATHS, STN_LAYER0_BACKGROUND_DEMO_IMAGES } from './data/stnLayer0BackgroundAssets.js';
|
|
27
27
|
export { STN_ALERT_CENTER_PAGE_SCAFFOLD_USAGE, STN_LAYER_SHELL_USAGE, STN_LAYOUT_ALERT_CENTER_USAGE, STN_LAYOUT_CONTENT_ROWS, STN_LAYOUT_INTRO, STN_LAYOUT_LAYER_PAGE_TREE, STN_LAYOUT_LIST_LAYER_TABS, STN_LAYOUT_LIST_VIEW_BARE_USAGE, STN_LAYOUT_LIST_VIEW_INTRO, STN_LAYOUT_LIST_VIEW_USAGE, STN_LAYOUT_MAP_DASHBOARD_HEADER_USAGE, STN_LAYOUT_MAP_DASHBOARD_INTRO, STN_LAYOUT_MAP_DASHBOARD_USAGE, STN_LAYOUT_MAP_LAYER_TABS, STN_LAYOUT_PAGE_TREE, STN_LAYOUT_PLAYGROUND_TABS, STN_LAYOUT_RECIPES, STN_LAYOUT_REGION_ROWS, STN_LAYOUT_SCREEN_RECIPES, STN_LAYOUT_SHELL_USAGE, STN_LAYOUT_SLOT_USAGE, STN_LAYOUT_WHEN_TO_USE, STN_PAGE_SCAFFOLD_COMPOUND_USAGE, STN_PAGE_SCAFFOLD_INTRO, STN_PAGE_SCAFFOLD_KINDS, StnContentAreaModifier, StnLayoutListLayerTabId, StnLayoutMapLayerTabId, StnLayoutRegion, StnLayoutScreenKind, StnLnbSide, StnPageScaffoldKind, applyLnbSideToModifiers, pubContentAreaClasses, pubLayoutRegionClass } from './data/stnLayout.js';
|
|
28
28
|
export { STN_LIST_TABLE_FIGMA, STN_LIST_TABLE_FOOTER_MAX_ACTIONS, STN_LIST_TABLE_OPTION_ROWS, STN_LIST_TABLE_PAGE_SIZE_OPTIONS, StnListTableOptionRow } from './data/stnListTable.js';
|
|
29
29
|
export { STN_LOADING_SKELETON_COLORS, STN_LOADING_SKELETON_INTRO, STN_LOADING_SKELETON_PARTS, STN_LOADING_SKELETON_USAGE, STN_LOADING_SKELETON_USAGE_HTML } from './data/stnLoadingSkeleton.js';
|
package/dist/index.js
CHANGED
|
@@ -112,7 +112,7 @@ import {
|
|
|
112
112
|
STN_LOGIN_HTML,
|
|
113
113
|
STN_LOGIN_INTRO,
|
|
114
114
|
STN_LOGIN_USAGE
|
|
115
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-AWJXDCX2.js";
|
|
116
116
|
import {
|
|
117
117
|
STN_MAP_DASHBOARD_OPTION_ROWS
|
|
118
118
|
} from "./chunk-3DAZMM4T.js";
|
|
@@ -130,7 +130,7 @@ import {
|
|
|
130
130
|
import {
|
|
131
131
|
STN_UI_VERSION,
|
|
132
132
|
STN_UI_VERSION_LABEL
|
|
133
|
-
} from "./chunk-
|
|
133
|
+
} from "./chunk-QT4HHVZH.js";
|
|
134
134
|
import {
|
|
135
135
|
STN_PAGE_ENTER_MOTION_INTRO,
|
|
136
136
|
STN_PAGE_ENTER_MOTION_ROWS,
|
|
@@ -419,10 +419,10 @@ import {
|
|
|
419
419
|
STN_LAYER0_MAP_LIGHT_OVERLAY
|
|
420
420
|
} from "./chunk-QAPQ4DB2.js";
|
|
421
421
|
import {
|
|
422
|
+
STN_CDN_ASSET_BASE,
|
|
422
423
|
STN_LAYER0_BACKGROUND_ASSET_PATHS,
|
|
423
424
|
STN_LAYER0_BACKGROUND_DEMO_IMAGES
|
|
424
|
-
} from "./chunk-
|
|
425
|
-
import "./chunk-OKSQLPEC.js";
|
|
425
|
+
} from "./chunk-XBFXX3D6.js";
|
|
426
426
|
import {
|
|
427
427
|
STN_ALERT_CENTER_PAGE_SCAFFOLD_USAGE,
|
|
428
428
|
STN_LAYER_SHELL_USAGE,
|
|
@@ -580,6 +580,7 @@ export {
|
|
|
580
580
|
STN_CARD_PADDINGS,
|
|
581
581
|
STN_CARD_RADII,
|
|
582
582
|
STN_CARD_VARIANTS,
|
|
583
|
+
STN_CDN_ASSET_BASE,
|
|
583
584
|
STN_CHART_INTRO,
|
|
584
585
|
STN_CHECKBOX_FIGMA,
|
|
585
586
|
STN_CHECKBOX_INTRO,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stn-uiux/pub-ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.57",
|
|
4
4
|
"description": "STN Pub design system — tokens, specs, and CSS for product HTML / React apps",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"dist",
|
|
14
14
|
"bin",
|
|
15
15
|
"styles",
|
|
16
|
+
"!styles/@assets/images/layer0",
|
|
16
17
|
"README.md",
|
|
17
18
|
"CHANGELOG.md"
|
|
18
19
|
],
|