@iyulab/modern-app 0.18.8 → 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 +29 -0
- package/dist/components/ActionBar.d.ts +10 -0
- package/dist/components/EmptyState.d.ts +13 -0
- package/dist/components/GroupBox.d.ts +12 -0
- package/dist/components/InfoField.d.ts +21 -0
- package/dist/components/InfoSection.d.ts +10 -0
- package/dist/components/MasterDetailLayout.d.ts +12 -0
- package/dist/components/PageHeader.d.ts +14 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
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
|
+
|
|
18
|
+
## [0.18.9] - 2026-08-31
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
- **JSX couldn't type-check `InfoField`, `PageHeader`, `EmptyState`, `GroupBox`,
|
|
23
|
+
`InfoSection`, `ActionBar`, or `MasterDetailLayout` in a `.tsx` consumer** —
|
|
24
|
+
these seven have no `/react` wrapper by design (plain
|
|
25
|
+
String/Number/Boolean properties work as a raw custom element in JSX on
|
|
26
|
+
both React 18 and 19), but only `HTMLElementTagNameMap` was declared for
|
|
27
|
+
them; `JSX.IntrinsicElements`, what `.tsx` actually checks against, never
|
|
28
|
+
was. Every one of them failed `TS2339` the moment a consumer wrote it in
|
|
29
|
+
JSX. Declared now, and pulled in from each component file itself (not just
|
|
30
|
+
the barrel), so a deep import for tree-shaking still sees it.
|
|
31
|
+
|
|
3
32
|
## [0.18.8] - 2026-08-30
|
|
4
33
|
|
|
5
34
|
### 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.
|
|
4
|
+
"version": "0.18.10",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iyulab",
|
|
7
7
|
"web-framework",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
53
|
"scripts": {
|
|
54
|
+
"preversion": "node -e \"if(require('fs').existsSync('../../scripts/preversion-check.mjs'))require('child_process').execFileSync('node',['../../scripts/preversion-check.mjs'],{stdio:'inherit'})\"",
|
|
54
55
|
"test": "vitest run",
|
|
55
56
|
"test:watch": "vitest",
|
|
56
57
|
"start": "vite",
|