sh-ui-cli 0.52.0 → 0.52.2

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.
Files changed (89) hide show
  1. package/data/changelog/versions.json +25 -0
  2. package/data/registry/react/components/_smoke/vanilla-extract.test.ts +33 -0
  3. package/data/registry/react/components/input/styles.css.ts +6 -6
  4. package/data/registry/react/registry.json +35 -852
  5. package/package.json +2 -2
  6. package/src/api.d.ts +3 -4
  7. package/src/constants.js +9 -5
  8. package/src/create/plugins/pluginSchema.js +5 -3
  9. package/src/mcp.mjs +4 -3
  10. package/data/registry/react/components/accordion/index.vanilla-extract.tsx +0 -97
  11. package/data/registry/react/components/accordion/styles.css.ts +0 -131
  12. package/data/registry/react/components/avatar/index.vanilla-extract.tsx +0 -73
  13. package/data/registry/react/components/avatar/styles.css.ts +0 -68
  14. package/data/registry/react/components/badge/index.vanilla-extract.tsx +0 -40
  15. package/data/registry/react/components/badge/styles.css.ts +0 -71
  16. package/data/registry/react/components/breadcrumb/index.vanilla-extract.tsx +0 -152
  17. package/data/registry/react/components/breadcrumb/styles.css.ts +0 -95
  18. package/data/registry/react/components/calendar/index.vanilla-extract.tsx +0 -806
  19. package/data/registry/react/components/calendar/styles.css.ts +0 -250
  20. package/data/registry/react/components/carousel/index.vanilla-extract.tsx +0 -430
  21. package/data/registry/react/components/carousel/styles.css.ts +0 -169
  22. package/data/registry/react/components/checkbox/index.vanilla-extract.tsx +0 -96
  23. package/data/registry/react/components/checkbox/styles.css.ts +0 -74
  24. package/data/registry/react/components/code-editor/index.vanilla-extract.tsx +0 -230
  25. package/data/registry/react/components/code-editor/styles.css.ts +0 -97
  26. package/data/registry/react/components/code-panel/index.vanilla-extract.tsx +0 -191
  27. package/data/registry/react/components/code-panel/styles.css.ts +0 -151
  28. package/data/registry/react/components/color-picker/index.vanilla-extract.tsx +0 -467
  29. package/data/registry/react/components/color-picker/styles.css.ts +0 -169
  30. package/data/registry/react/components/combobox/index.vanilla-extract.tsx +0 -165
  31. package/data/registry/react/components/combobox/styles.css.ts +0 -174
  32. package/data/registry/react/components/context-menu/index.vanilla-extract.tsx +0 -251
  33. package/data/registry/react/components/context-menu/styles.css.ts +0 -167
  34. package/data/registry/react/components/date-picker/index.vanilla-extract.tsx +0 -520
  35. package/data/registry/react/components/date-picker/styles.css.ts +0 -111
  36. package/data/registry/react/components/dialog/index.vanilla-extract.tsx +0 -95
  37. package/data/registry/react/components/dialog/styles.css.ts +0 -140
  38. package/data/registry/react/components/dropdown-menu/index.vanilla-extract.tsx +0 -255
  39. package/data/registry/react/components/dropdown-menu/styles.css.ts +0 -175
  40. package/data/registry/react/components/file-upload/index.vanilla-extract.tsx +0 -487
  41. package/data/registry/react/components/file-upload/styles.css.ts +0 -193
  42. package/data/registry/react/components/form/index.vanilla-extract.tsx +0 -61
  43. package/data/registry/react/components/form/styles.css.ts +0 -56
  44. package/data/registry/react/components/header/index.vanilla-extract.tsx +0 -805
  45. package/data/registry/react/components/header/styles.css.ts +0 -413
  46. package/data/registry/react/components/label/index.vanilla-extract.tsx +0 -52
  47. package/data/registry/react/components/label/styles.css.ts +0 -141
  48. package/data/registry/react/components/markdown-editor/index.vanilla-extract.tsx +0 -119
  49. package/data/registry/react/components/markdown-editor/styles.css.ts +0 -231
  50. package/data/registry/react/components/menubar/index.vanilla-extract.tsx +0 -32
  51. package/data/registry/react/components/menubar/styles.css.ts +0 -53
  52. package/data/registry/react/components/numeric-input/index.vanilla-extract.tsx +0 -148
  53. package/data/registry/react/components/numeric-input/styles.css.ts +0 -65
  54. package/data/registry/react/components/page-toc/index.vanilla-extract.tsx +0 -174
  55. package/data/registry/react/components/page-toc/styles.css.ts +0 -97
  56. package/data/registry/react/components/pagination/index.vanilla-extract.tsx +0 -269
  57. package/data/registry/react/components/pagination/styles.css.ts +0 -113
  58. package/data/registry/react/components/popover/index.vanilla-extract.tsx +0 -113
  59. package/data/registry/react/components/popover/styles.css.ts +0 -78
  60. package/data/registry/react/components/progress/index.vanilla-extract.tsx +0 -54
  61. package/data/registry/react/components/progress/styles.css.ts +0 -53
  62. package/data/registry/react/components/radio/index.vanilla-extract.tsx +0 -65
  63. package/data/registry/react/components/radio/styles.css.ts +0 -79
  64. package/data/registry/react/components/rich-text-editor/index.vanilla-extract.tsx +0 -348
  65. package/data/registry/react/components/rich-text-editor/styles.css.ts +0 -243
  66. package/data/registry/react/components/select/index.vanilla-extract.tsx +0 -234
  67. package/data/registry/react/components/select/styles.css.ts +0 -225
  68. package/data/registry/react/components/separator/index.vanilla-extract.tsx +0 -46
  69. package/data/registry/react/components/separator/styles.css.ts +0 -24
  70. package/data/registry/react/components/sidebar/index.vanilla-extract.tsx +0 -1067
  71. package/data/registry/react/components/sidebar/styles.css.ts +0 -578
  72. package/data/registry/react/components/skeleton/index.vanilla-extract.tsx +0 -22
  73. package/data/registry/react/components/skeleton/styles.css.ts +0 -30
  74. package/data/registry/react/components/slider/index.vanilla-extract.tsx +0 -298
  75. package/data/registry/react/components/slider/styles.css.ts +0 -75
  76. package/data/registry/react/components/spinner/index.vanilla-extract.tsx +0 -38
  77. package/data/registry/react/components/spinner/styles.css.ts +0 -60
  78. package/data/registry/react/components/switch/index.vanilla-extract.tsx +0 -39
  79. package/data/registry/react/components/switch/styles.css.ts +0 -87
  80. package/data/registry/react/components/tabs/index.vanilla-extract.tsx +0 -91
  81. package/data/registry/react/components/tabs/styles.css.ts +0 -145
  82. package/data/registry/react/components/textarea/index.vanilla-extract.tsx +0 -23
  83. package/data/registry/react/components/textarea/styles.css.ts +0 -55
  84. package/data/registry/react/components/toast/index.vanilla-extract.tsx +0 -258
  85. package/data/registry/react/components/toast/styles.css.ts +0 -307
  86. package/data/registry/react/components/toggle/index.vanilla-extract.tsx +0 -131
  87. package/data/registry/react/components/toggle/styles.css.ts +0 -109
  88. package/data/registry/react/components/tooltip/index.vanilla-extract.tsx +0 -83
  89. package/data/registry/react/components/tooltip/styles.css.ts +0 -59
@@ -2,6 +2,31 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$description": "sh-ui 릴리즈 노트 단일 소스. docs(React)와 showcase(Flutter)가 함께 읽는다. 새 릴리즈마다 맨 앞에 추가.",
4
4
  "versions": [
5
+ {
6
+ "version": "0.52.2",
7
+ "date": "2026-05-04",
8
+ "title": "vanilla-extract rollback — 자동 변환 broken, PLANNED 로 후퇴",
9
+ "type": "patch",
10
+ "highlights": [
11
+ "**v0.50.0 의 vanilla-extract 자동 변환 회수** — `.module.css → .css.ts` 자동 변환 스크립트로 ship 했던 40 개 변종이 vanilla-extract 의 strict selector 규칙 (selectors 안 다른 클래스 reference 금지, `& > *` / `& .third-party` 같은 descendant 패턴 거부, mutual reference TDZ 등) 을 어겨 사용자 빌드 시 깨짐. 검증 인프라 (vitest + @vanilla-extract/vite-plugin) 도입 후 발견.",
12
+ "**vanilla-extract 를 SUPPORTED → PLANNED 로 되돌림** — `CSS_FRAMEWORKS_SUPPORTED` 에서 제거, `CSS_FRAMEWORKS_PLANNED` 로 이동. CLI/MCP/UI 모두 다시 \"곧 지원 예정\" 으로 안내. button/card/input 3 개 수동 작성 파일럿 변종은 그대로 유지 — `sh-ui.config.json` 을 직접 손대면 동작.",
13
+ "**input 파일럿 fix** — `affix > *` 규칙이 vanilla-extract selectors 키에 들어 있어 거부됐음. `globalStyle()` 로 빼서 수정. 이제 button/card/input 모두 검증 통과.",
14
+ "**검증 인프라 정착** — `packages/registry/react/components/_smoke/vanilla-extract.test.ts` — 모든 `styles.css.ts` 가 vanilla-extract 빌드 컨텍스트에서 정상 import 되는지 자동 검증. 향후 정식 rollout 때 회귀 가드.",
15
+ "사용자 영향: vanilla-extract 사용자는 거의 없을 것 (PLANNED 였다가 잠시 SUPPORTED 됐다 다시 PLANNED). plain · tailwind · css-modules 사용자에게는 변동 없음."
16
+ ],
17
+ "url": "https://github.com/sanghyeonKim0201/sh-ui/releases/tag/v0.52.2"
18
+ },
19
+ {
20
+ "version": "0.52.1",
21
+ "date": "2026-05-04",
22
+ "title": "zod v4 호환 + MCP describe 텍스트 최신화",
23
+ "type": "patch",
24
+ "highlights": [
25
+ "**zod 3 → 4 호환** — `packages/cli/src/create/plugins/pluginSchema.js` 의 `z.function().args().returns()` 패턴이 zod v4 에서 제거됨. 함수 시그니처는 런타임에 의미 있게 검증할 수 없으므로 `z.custom((val) => typeof val === 'function')` 으로 단순화. 사용자 영향 없음 — plugin manifest 의 `wrapExport` 가 함수인지만 확인하던 동작 그대로.",
26
+ "**MCP describe 텍스트 최신화** — `mcp.mjs` 의 `cssFramework` 옵션 안내가 `(향후 tailwind 등 추가 예정)` 으로 outdated 였음. 4 변종 모두 SUPPORTED 된 현재 상태로 갱신 — 각 옵션별 한 줄 설명 (plain/tailwind/css-modules/vanilla-extract) + fallback 안내."
27
+ ],
28
+ "url": "https://github.com/sanghyeonKim0201/sh-ui/releases/tag/v0.52.1"
29
+ },
5
30
  {
6
31
  "version": "0.52.0",
7
32
  "date": "2026-05-04",
@@ -0,0 +1,33 @@
1
+ /**
2
+ * vanilla-extract 자동 변환 검증 — 모든 styles.css.ts 파일이 정상 import 되는지.
3
+ *
4
+ * `style()` 호출은 vanilla-extract 빌드 플러그인 없이도 런타임에서 동작 (단순 문자열 반환).
5
+ * 다만 import 자체가 실패하거나 type 가 깨졌으면 vitest 가 잡는다.
6
+ *
7
+ * 새 변종 추가 시: `glob` 패턴으로 자동 발견되므로 별도 추가 불필요.
8
+ */
9
+ import { describe, it, expect } from "vitest";
10
+ import { existsSync, readdirSync } from "node:fs";
11
+ import { resolve } from "node:path";
12
+
13
+ const COMPONENTS_DIR = resolve(__dirname, "..");
14
+
15
+ const components = readdirSync(COMPONENTS_DIR, { withFileTypes: true })
16
+ .filter((d) => d.isDirectory() && d.name !== "_smoke")
17
+ .map((d) => d.name)
18
+ .filter((name) => existsSync(resolve(COMPONENTS_DIR, name, "styles.css.ts")));
19
+
20
+ describe("vanilla-extract — styles.css.ts 모듈 무결성", () => {
21
+ for (const name of components) {
22
+ it(`${name} loads without error`, async () => {
23
+ const mod = await import(`../${name}/styles.css.ts`);
24
+ const exports = Object.keys(mod).filter((k) => k !== "default");
25
+ expect(exports.length).toBeGreaterThan(0);
26
+ // 각 export 가 string (vanilla-extract style 함수 반환값) 또는 byKey 같은 record
27
+ for (const key of exports) {
28
+ const val = mod[key];
29
+ expect(typeof val === "string" || typeof val === "object").toBe(true);
30
+ }
31
+ });
32
+ }
33
+ });
@@ -1,4 +1,4 @@
1
- import { style } from "@vanilla-extract/css";
1
+ import { globalStyle, style } from "@vanilla-extract/css";
2
2
 
3
3
  export const input = style({
4
4
  display: "block",
@@ -105,12 +105,12 @@ export const affix = style({
105
105
  justifyContent: "center",
106
106
  color: "var(--foreground-muted)",
107
107
  pointerEvents: "none",
108
+ });
108
109
 
109
- selectors: {
110
- "& > *": {
111
- pointerEvents: "auto",
112
- },
113
- },
110
+ // vanilla-extract 의 selectors 키는 universal/element descendant (& > *) 도 허용 안 함.
111
+ // 자식 요소에 룰 적용하려면 globalStyle 로 빼야 함.
112
+ globalStyle(`${affix} > *`, {
113
+ pointerEvents: "auto",
114
114
  });
115
115
 
116
116
  export const affixPrefix = style({ left: "var(--space-3)" });