@iyulab/modern-app 0.18.9 → 0.18.10

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/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.18.10] - 2026-09-01
4
+
5
+ ### Fixed
6
+
7
+ - **`0.18.9`'s `JSX.IntrinsicElements` fix didn't actually reach consumers who
8
+ deep-import these components** (`import '@iyulab/modern-app/dist/components/
9
+ MasterDetailLayout.js'` and similar for `InfoField`/`PageHeader`/`EmptyState`/
10
+ `GroupBox`/`InfoSection`/`ActionBar`). The augmentation lived in a separate
11
+ file pulled in only via a side-effect-only type import, which the
12
+ declaration bundler stripped from each component's published `.d.ts` as
13
+ "unused". Each component's JSX augmentation now lives directly in its own
14
+ source file instead, so it survives declaration bundling regardless of
15
+ import path. Verified against the actual published tarball this time
16
+ (`npm pack`), not just the local workspace.
17
+
3
18
  ## [0.18.9] - 2026-08-31
4
19
 
5
20
  ### Fixed
@@ -1,4 +1,5 @@
1
1
  import { StyledElement } from '../internals/StyledElement.js';
2
+ import { default as React } from 'react';
2
3
  type ElementParts = 'host' | 'danger' | 'main';
3
4
  /**
4
5
  * 푸터 액션 바 — 상세·편집 화면 맨 아래의 같은 골격.
@@ -42,4 +43,13 @@ declare global {
42
43
  'u-action-bar': ActionBar;
43
44
  }
44
45
  }
46
+ declare module 'react' {
47
+ namespace JSX {
48
+ interface IntrinsicElements {
49
+ 'u-action-bar': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & {
50
+ sticky?: boolean;
51
+ };
52
+ }
53
+ }
54
+ }
45
55
  export {};
@@ -1,4 +1,5 @@
1
1
  import { StyledElement } from '../internals/StyledElement.js';
2
+ import { default as React } from 'react';
2
3
  type ElementParts = 'host' | 'icon' | 'title' | 'description' | 'actions';
3
4
  /**
4
5
  * 빈 상태 — 목록·검색 결과가 비었을 때.
@@ -49,4 +50,16 @@ declare global {
49
50
  'u-empty-state': EmptyState;
50
51
  }
51
52
  }
53
+ declare module 'react' {
54
+ namespace JSX {
55
+ interface IntrinsicElements {
56
+ 'u-empty-state': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & {
57
+ variant?: 'no-data' | 'no-results';
58
+ title?: string;
59
+ description?: string;
60
+ locale?: string;
61
+ };
62
+ }
63
+ }
64
+ }
52
65
  export {};
@@ -1,4 +1,5 @@
1
1
  import { StyledElement } from '../internals/StyledElement.js';
2
+ import { default as React } from 'react';
2
3
  type ElementParts = 'host' | 'header' | 'title' | 'actions' | 'body';
3
4
  /**
4
5
  * 그룹 박스 — 제목이 붙은 카드. LOB 상세 화면의 기본 단위다.
@@ -40,4 +41,15 @@ declare global {
40
41
  'u-group-box': GroupBox;
41
42
  }
42
43
  }
44
+ declare module 'react' {
45
+ namespace JSX {
46
+ interface IntrinsicElements {
47
+ 'u-group-box': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & {
48
+ title?: string;
49
+ divider?: boolean;
50
+ flush?: boolean;
51
+ };
52
+ }
53
+ }
54
+ }
43
55
  export {};
@@ -1,4 +1,5 @@
1
1
  import { StyledElement } from '../internals/StyledElement.js';
2
+ import { default as React } from 'react';
2
3
  type ElementParts = 'host' | 'label' | 'value' | 'trend';
3
4
  export type InfoFieldFormat = 'number' | 'currency' | 'date';
4
5
  export type InfoFieldSize = 'default' | 'lg';
@@ -92,4 +93,24 @@ declare global {
92
93
  'u-info-field': InfoField;
93
94
  }
94
95
  }
96
+ declare module 'react' {
97
+ namespace JSX {
98
+ interface IntrinsicElements {
99
+ 'u-info-field': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & {
100
+ label?: string;
101
+ value?: string;
102
+ blank?: string;
103
+ numeric?: boolean;
104
+ format?: InfoFieldFormat;
105
+ currency?: string;
106
+ size?: InfoFieldSize;
107
+ trend?: InfoFieldTrend;
108
+ /** 프로퍼티는 `trendLabel`이지만 Lit 기본 속성명 규칙(소문자화, kebab
109
+ * 아님)상 실제 HTML 속성명은 `trendlabel`이다. */
110
+ trendlabel?: string;
111
+ tone?: InfoFieldTone;
112
+ };
113
+ }
114
+ }
115
+ }
95
116
  export {};
@@ -1,4 +1,5 @@
1
1
  import { StyledElement } from '../internals/StyledElement.js';
2
+ import { default as React } from 'react';
2
3
  type ElementParts = 'host' | 'grid';
3
4
  /**
4
5
  * 정보 섹션 — `u-info-field` 들의 반응형 그리드.
@@ -28,4 +29,13 @@ declare global {
28
29
  'u-info-section': InfoSection;
29
30
  }
30
31
  }
32
+ declare module 'react' {
33
+ namespace JSX {
34
+ interface IntrinsicElements {
35
+ 'u-info-section': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & {
36
+ min?: number | string;
37
+ };
38
+ }
39
+ }
40
+ }
31
41
  export {};
@@ -1,5 +1,6 @@
1
1
  import { PropertyValues } from 'lit';
2
2
  import { StyledElement } from '../internals/StyledElement.js';
3
+ import { default as React } from 'react';
3
4
  type ElementParts = 'host' | 'master' | 'divider' | 'detail' | 'detail-close';
4
5
  /**
5
6
  * master›detail 반응형 split-pane 셸.
@@ -67,4 +68,15 @@ declare global {
67
68
  'u-master-detail-layout': MasterDetailLayout;
68
69
  }
69
70
  }
71
+ declare module 'react' {
72
+ namespace JSX {
73
+ interface IntrinsicElements {
74
+ 'u-master-detail-layout': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & {
75
+ 'master-size'?: string;
76
+ 'overlay-breakpoint'?: number | string;
77
+ locale?: string;
78
+ };
79
+ }
80
+ }
81
+ }
70
82
  export {};
@@ -1,4 +1,5 @@
1
1
  import { StyledElement } from '../internals/StyledElement.js';
2
+ import { default as React } from 'react';
2
3
  type ElementParts = 'host' | 'back' | 'heading' | 'title' | 'subtitle' | 'status' | 'actions';
3
4
  /**
4
5
  * 페이지 헤더 — 모든 LOB 화면 최상단의 같은 골격.
@@ -50,4 +51,17 @@ declare global {
50
51
  'u-page-header': PageHeader;
51
52
  }
52
53
  }
54
+ declare module 'react' {
55
+ namespace JSX {
56
+ interface IntrinsicElements {
57
+ 'u-page-header': React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & {
58
+ title?: string;
59
+ subtitle?: string;
60
+ back?: string;
61
+ 'back-label'?: string;
62
+ locale?: string;
63
+ };
64
+ }
65
+ }
66
+ }
53
67
  export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@iyulab/modern-app",
3
3
  "description": "web-framework by iyulab based on lit-element",
4
- "version": "0.18.9",
4
+ "version": "0.18.10",
5
5
  "keywords": [
6
6
  "iyulab",
7
7
  "web-framework",
@@ -51,7 +51,7 @@
51
51
  }
52
52
  },
53
53
  "scripts": {
54
- "preversion": "node ../../scripts/preversion-check.mjs",
54
+ "preversion": "node -e \"if(require('fs').existsSync('../../scripts/preversion-check.mjs'))require('child_process').execFileSync('node',['../../scripts/preversion-check.mjs'],{stdio:'inherit'})\"",
55
55
  "test": "vitest run",
56
56
  "test:watch": "vitest",
57
57
  "start": "vite",
@@ -1,60 +0,0 @@
1
- import { default as React } from 'react';
2
- import { InfoFieldFormat, InfoFieldSize, InfoFieldTrend, InfoFieldTone } from '../components/InfoField.js';
3
- type BaseElementProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
4
- interface InfoFieldElementProps extends BaseElementProps {
5
- label?: string;
6
- value?: string;
7
- blank?: string;
8
- numeric?: boolean;
9
- format?: InfoFieldFormat;
10
- currency?: string;
11
- size?: InfoFieldSize;
12
- trend?: InfoFieldTrend;
13
- /** 프로퍼티는 `trendLabel`이지만 Lit 기본 속성명 규칙(소문자화, kebab 아님)상
14
- * 실제 HTML 속성명은 `trendlabel`이다 — 하이픈을 넣으면 반영되지 않는다. */
15
- trendlabel?: string;
16
- tone?: InfoFieldTone;
17
- }
18
- interface PageHeaderElementProps extends BaseElementProps {
19
- title?: string;
20
- subtitle?: string;
21
- back?: string;
22
- 'back-label'?: string;
23
- locale?: string;
24
- }
25
- interface EmptyStateElementProps extends BaseElementProps {
26
- variant?: 'no-data' | 'no-results';
27
- title?: string;
28
- description?: string;
29
- locale?: string;
30
- }
31
- interface GroupBoxElementProps extends BaseElementProps {
32
- title?: string;
33
- divider?: boolean;
34
- flush?: boolean;
35
- }
36
- interface InfoSectionElementProps extends BaseElementProps {
37
- min?: number | string;
38
- }
39
- interface ActionBarElementProps extends BaseElementProps {
40
- sticky?: boolean;
41
- }
42
- interface MasterDetailLayoutElementProps extends BaseElementProps {
43
- 'master-size'?: string;
44
- 'overlay-breakpoint'?: number | string;
45
- locale?: string;
46
- }
47
- declare module 'react' {
48
- namespace JSX {
49
- interface IntrinsicElements {
50
- 'u-info-field': InfoFieldElementProps;
51
- 'u-page-header': PageHeaderElementProps;
52
- 'u-empty-state': EmptyStateElementProps;
53
- 'u-group-box': GroupBoxElementProps;
54
- 'u-info-section': InfoSectionElementProps;
55
- 'u-action-bar': ActionBarElementProps;
56
- 'u-master-detail-layout': MasterDetailLayoutElementProps;
57
- }
58
- }
59
- }
60
- export {};