@iyulab/modern-app 0.19.6 → 0.20.0

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 (37) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +35 -0
  3. package/dist/_virtual/{_@oxc-project_runtime@0.149.0 → _@oxc-project_runtime@0.150.0}/helpers/esm/decorate.js +1 -1
  4. package/dist/_virtual/{_@oxc-project_runtime@0.149.0 → _@oxc-project_runtime@0.150.0}/helpers/esm/decorateMetadata.js +1 -1
  5. package/dist/components/ActionBar.js +2 -2
  6. package/dist/components/EmptyState.js +2 -2
  7. package/dist/components/GroupBox.js +2 -2
  8. package/dist/components/InfoField.js +2 -2
  9. package/dist/components/InfoSection.js +2 -2
  10. package/dist/components/MasterDetailLayout.js +2 -2
  11. package/dist/components/PageHeader.js +2 -2
  12. package/dist/components/SidebarButton.js +2 -2
  13. package/dist/components/SidebarGroup.js +2 -2
  14. package/dist/components/SidebarLink.js +2 -2
  15. package/dist/components/SidebarSection.js +2 -2
  16. package/dist/components/Wizard.js +2 -2
  17. package/dist/internals/StyledElement.js +2 -2
  18. package/dist/layouts/SidebarLayout.js +2 -2
  19. package/dist/react/ActionBar.d.ts +12 -0
  20. package/dist/react/ActionBar.js +10 -0
  21. package/dist/react/EmptyState.d.ts +12 -0
  22. package/dist/react/EmptyState.js +10 -0
  23. package/dist/react/GroupBox.d.ts +12 -0
  24. package/dist/react/GroupBox.js +10 -0
  25. package/dist/react/InfoField.d.ts +12 -0
  26. package/dist/react/InfoField.js +10 -0
  27. package/dist/react/InfoSection.d.ts +12 -0
  28. package/dist/react/InfoSection.js +10 -0
  29. package/dist/react/MasterDetailLayout.d.ts +13 -0
  30. package/dist/react/MasterDetailLayout.js +12 -0
  31. package/dist/react/PageHeader.d.ts +12 -0
  32. package/dist/react/PageHeader.js +10 -0
  33. package/dist/react/SidebarButton.d.ts +12 -0
  34. package/dist/react/SidebarButton.js +10 -0
  35. package/dist/react/index.d.ts +9 -0
  36. package/dist/react/index.js +9 -0
  37. package/package.json +10 -10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,47 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.20.0] - 2026-09-16
4
+
5
+ ### Added
6
+
7
+ - **React wrappers for the LOB content primitives**, published at `@iyulab/modern-app/react/<Name>.js`:
8
+ `PageHeader`, `InfoSection`, `InfoField`, `GroupBox`, `EmptyState`, `ActionBar`,
9
+ `MasterDetailLayout` and `SidebarButton`. Until now only `SidebarLayout` and `Wizard` were
10
+ wrapped, so a React consumer reaching for any of the others had no typed path to it and had to
11
+ declare the custom element in JSX by hand, once per element. The wrappers are generated by the
12
+ same generator `@iyulab/components` uses for its own components rather than a second copy of it,
13
+ so events and properties stay in step with the elements automatically, and a typed consumption
14
+ smoke test now runs as part of the build.
15
+ - `u-info-field`'s `value` stays `unknown` through the wrapper, so `null`, numbers and strings are
16
+ all accepted, matching the element and its documentation.
17
+
18
+ ### Changed
19
+
20
+ - **`@iyulab/modern-app/react` is now a superset of the per-component subpaths.** The barrel used to
21
+ be hand-curated and carried only `SidebarLayout`, `Wizard`, `ScreenObserver` and the sidebar
22
+ configuration types, so what a consumer got depended on which specifier they reached for: the
23
+ generated wrappers existed only under `@iyulab/modern-app/react/<Name>.js` and could not be
24
+ imported from the barrel at all. The barrel is now generated and re-exports the hand-written
25
+ wrappers alongside the generated ones, so every React export is reachable from one specifier.
26
+ Nothing was removed and no name changed: existing barrel imports keep working, and the
27
+ per-component subpaths are still published for importing one wrapper at a time. This matches how
28
+ `@iyulab/components` has always exposed its own React surface.
29
+
30
+ ## [0.19.7] - 2026-09-16
31
+
32
+ ### Changed
33
+
34
+ - **Follow `@iyulab/router` 0.14.0, which declares the outlet's own box model.** Until now the
35
+ route outlet the shell inserts had no `display` declaration, so it fell back to the default
36
+ `inline` — a box that stays in layout but does not pass a height down. The shell gives its
37
+ content area the full height, and that chain stopped at the outlet: a route screen asking for
38
+ `height: 100%` resolved against the shell instead, or not at all. Router 0.14.0 declares
39
+ `:where(u-outlet) { display: block; height: 100%; }`, and this release widens the dependency
40
+ range so the fix actually reaches apps that install the shell rather than the router directly
41
+ (a `^0.13.0` range does not admit 0.14.0 — semver treats a 0.x minor as a major).
42
+ Override either declaration from your own stylesheet without `!important`; the rule carries
43
+ zero specificity.
44
+
3
45
  ## [0.19.6] - 2026-09-15
4
46
 
5
47
  ### Fixed
package/README.md CHANGED
@@ -205,6 +205,41 @@ export function App() {
205
205
  }
206
206
  ```
207
207
 
208
+ ### The content primitives
209
+
210
+ The LOB content primitives are wrapped too. Everything React lives in the one barrel above —
211
+ the shell, the sidebar configuration types and every content primitive — so a single specifier is
212
+ enough:
213
+
214
+ ```tsx
215
+ import { PageHeader, InfoSection, InfoField } from '@iyulab/modern-app/react';
216
+ ```
217
+
218
+ Each wrapper is also published on its own subpath, for importing one at a time:
219
+
220
+ ```tsx
221
+ import { PageHeader } from '@iyulab/modern-app/react/PageHeader.js';
222
+ import { InfoSection } from '@iyulab/modern-app/react/InfoSection.js';
223
+ import { InfoField } from '@iyulab/modern-app/react/InfoField.js';
224
+
225
+ export function OrderSummary({ order }: { order: Order }) {
226
+ return (
227
+ <>
228
+ <PageHeader title="Order" subtitle={order.no} />
229
+ <InfoSection min={200}>
230
+ <InfoField label="Total" format="currency" currency="KRW" value={order.total} />
231
+ <InfoField label="Ordered at" format="date" value={order.orderedAt} />
232
+ </InfoSection>
233
+ </>
234
+ );
235
+ }
236
+ ```
237
+
238
+ Available: `PageHeader`, `InfoSection`, `InfoField`, `GroupBox`, `EmptyState`, `ActionBar`,
239
+ `MasterDetailLayout`, `SidebarButton`. They are generated from the elements themselves, so their
240
+ props and events follow the element rather than a second hand-written description of it. `InfoField`
241
+ keeps `value` as `unknown`, so `null`, numbers and strings all type-check.
242
+
208
243
  ## Accessibility
209
244
 
210
245
  The baseline is **WCAG 2.2**. The table lists what this package **measures in tests** — it is not a
@@ -1,4 +1,4 @@
1
- //#region \0@oxc-project+runtime@0.149.0/helpers/esm/decorate.js
1
+ //#region \0@oxc-project+runtime@0.150.0/helpers/esm/decorate.js
2
2
  function e(e, t, n, r) {
3
3
  var i = arguments.length, a = i < 3 ? t : r === null ? r = Object.getOwnPropertyDescriptor(t, n) : r, o;
4
4
  if (typeof Reflect == "object" && typeof Reflect.decorate == "function") a = Reflect.decorate(e, t, n, r);
@@ -1,4 +1,4 @@
1
- //#region \0@oxc-project+runtime@0.149.0/helpers/esm/decorateMetadata.js
1
+ //#region \0@oxc-project+runtime@0.150.0/helpers/esm/decorateMetadata.js
2
2
  function e(e, t) {
3
3
  if (typeof Reflect == "object" && typeof Reflect.metadata == "function") return Reflect.metadata(e, t);
4
4
  }
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { slotHasContent as r } from "../internals/slotted.js";
5
5
  import { styles as i } from "./ActionBar.styles.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { getLocaleStrings as r } from "../internals/locale.js";
5
5
  import { slotHasContent as i } from "../internals/slotted.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { slotHasContent as r } from "../internals/slotted.js";
5
5
  import { styles as i } from "./GroupBox.styles.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { styles as r } from "./InfoField.styles.js";
5
5
  import { html as i } from "lit";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { styles as r } from "./InfoSection.styles.js";
5
5
  import { html as i } from "lit";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { getLocaleStrings as r } from "../internals/locale.js";
5
5
  import { slotHasContent as i } from "../internals/slotted.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { getLocaleStrings as r } from "../internals/locale.js";
5
5
  import { slotHasContent as i } from "../internals/slotted.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { DEFAULT_NAV_ICON as r } from "../internals/nav-icon.js";
5
5
  import { styles as i } from "./SidebarButton.styles.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { DEFAULT_NAV_ICON as r } from "../internals/nav-icon.js";
5
5
  import { SidebarLink as i } from "./SidebarLink.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { DEFAULT_NAV_ICON as r } from "../internals/nav-icon.js";
5
5
  import { styles as i } from "./SidebarLink.styles.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { styles as r } from "./SidebarSection.styles.js";
5
5
  import { html as i } from "lit";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { StyledElement as n } from "../internals/StyledElement.js";
4
4
  import { getLocaleStrings as r } from "../internals/locale.js";
5
5
  import { styles as i } from "./Wizard.styles.js";
@@ -1,5 +1,5 @@
1
- import e from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
2
- import t from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
1
+ import e from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
2
+ import t from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
3
3
  import { property as n } from "lit/decorators.js";
4
4
  import { UElement as r } from "@iyulab/components/dist/components/UElement.js";
5
5
  //#region src/internals/StyledElement.ts
@@ -1,7 +1,7 @@
1
1
  import { app as e } from "../App.js";
2
2
  import { filterSidebarItems as t } from "./filterSidebarItems.js";
3
- import n from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorateMetadata.js";
4
- import r from "../_virtual/_@oxc-project_runtime@0.149.0/helpers/esm/decorate.js";
3
+ import n from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorateMetadata.js";
4
+ import r from "../_virtual/_@oxc-project_runtime@0.150.0/helpers/esm/decorate.js";
5
5
  import { StyledElement as i } from "../internals/StyledElement.js";
6
6
  import { getLocaleStrings as a } from "../internals/locale.js";
7
7
  import "../components/SidebarSection.js";
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { ActionBar as ActionBarElement } from '@iyulab/modern-app/dist/components/ActionBar.js';
3
+
4
+ export declare const ActionBar: React.ForwardRefExoticComponent<
5
+ Omit<Partial<ActionBarElement>, keyof React.HTMLAttributes<ActionBarElement>>
6
+ & Omit<React.HTMLAttributes<ActionBarElement>, never>
7
+ & React.RefAttributes<ActionBarElement>
8
+ & {
9
+ }
10
+ >;
11
+
12
+ export type ActionBarProps = React.ComponentProps<typeof ActionBar>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { ActionBar as ActionBarElement } from '@iyulab/modern-app/dist/components/ActionBar.js';
4
+
5
+ export const ActionBar = createComponent({
6
+ react: React,
7
+ tagName: 'u-action-bar',
8
+ elementClass: ActionBarElement,
9
+ events: {},
10
+ });
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { EmptyState as EmptyStateElement } from '@iyulab/modern-app/dist/components/EmptyState.js';
3
+
4
+ export declare const EmptyState: React.ForwardRefExoticComponent<
5
+ Omit<Partial<EmptyStateElement>, keyof React.HTMLAttributes<EmptyStateElement>>
6
+ & Omit<React.HTMLAttributes<EmptyStateElement>, never>
7
+ & React.RefAttributes<EmptyStateElement>
8
+ & {
9
+ }
10
+ >;
11
+
12
+ export type EmptyStateProps = React.ComponentProps<typeof EmptyState>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { EmptyState as EmptyStateElement } from '@iyulab/modern-app/dist/components/EmptyState.js';
4
+
5
+ export const EmptyState = createComponent({
6
+ react: React,
7
+ tagName: 'u-empty-state',
8
+ elementClass: EmptyStateElement,
9
+ events: {},
10
+ });
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { GroupBox as GroupBoxElement } from '@iyulab/modern-app/dist/components/GroupBox.js';
3
+
4
+ export declare const GroupBox: React.ForwardRefExoticComponent<
5
+ Omit<Partial<GroupBoxElement>, keyof React.HTMLAttributes<GroupBoxElement>>
6
+ & Omit<React.HTMLAttributes<GroupBoxElement>, never>
7
+ & React.RefAttributes<GroupBoxElement>
8
+ & {
9
+ }
10
+ >;
11
+
12
+ export type GroupBoxProps = React.ComponentProps<typeof GroupBox>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { GroupBox as GroupBoxElement } from '@iyulab/modern-app/dist/components/GroupBox.js';
4
+
5
+ export const GroupBox = createComponent({
6
+ react: React,
7
+ tagName: 'u-group-box',
8
+ elementClass: GroupBoxElement,
9
+ events: {},
10
+ });
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { InfoField as InfoFieldElement } from '@iyulab/modern-app/dist/components/InfoField.js';
3
+
4
+ export declare const InfoField: React.ForwardRefExoticComponent<
5
+ Omit<Partial<InfoFieldElement>, keyof React.HTMLAttributes<InfoFieldElement>>
6
+ & Omit<React.HTMLAttributes<InfoFieldElement>, never>
7
+ & React.RefAttributes<InfoFieldElement>
8
+ & {
9
+ }
10
+ >;
11
+
12
+ export type InfoFieldProps = React.ComponentProps<typeof InfoField>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { InfoField as InfoFieldElement } from '@iyulab/modern-app/dist/components/InfoField.js';
4
+
5
+ export const InfoField = createComponent({
6
+ react: React,
7
+ tagName: 'u-info-field',
8
+ elementClass: InfoFieldElement,
9
+ events: {},
10
+ });
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { InfoSection as InfoSectionElement } from '@iyulab/modern-app/dist/components/InfoSection.js';
3
+
4
+ export declare const InfoSection: React.ForwardRefExoticComponent<
5
+ Omit<Partial<InfoSectionElement>, keyof React.HTMLAttributes<InfoSectionElement>>
6
+ & Omit<React.HTMLAttributes<InfoSectionElement>, never>
7
+ & React.RefAttributes<InfoSectionElement>
8
+ & {
9
+ }
10
+ >;
11
+
12
+ export type InfoSectionProps = React.ComponentProps<typeof InfoSection>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { InfoSection as InfoSectionElement } from '@iyulab/modern-app/dist/components/InfoSection.js';
4
+
5
+ export const InfoSection = createComponent({
6
+ react: React,
7
+ tagName: 'u-info-section',
8
+ elementClass: InfoSectionElement,
9
+ events: {},
10
+ });
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { MasterDetailLayout as MasterDetailLayoutElement } from '@iyulab/modern-app/dist/components/MasterDetailLayout.js';
3
+
4
+ export declare const MasterDetailLayout: React.ForwardRefExoticComponent<
5
+ Omit<Partial<MasterDetailLayoutElement>, keyof React.HTMLAttributes<MasterDetailLayoutElement>>
6
+ & Omit<React.HTMLAttributes<MasterDetailLayoutElement>, 'onDetailClose'>
7
+ & React.RefAttributes<MasterDetailLayoutElement>
8
+ & {
9
+ onDetailClose?: (event: CustomEvent) => void;
10
+ }
11
+ >;
12
+
13
+ export type MasterDetailLayoutProps = React.ComponentProps<typeof MasterDetailLayout>;
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { MasterDetailLayout as MasterDetailLayoutElement } from '@iyulab/modern-app/dist/components/MasterDetailLayout.js';
4
+
5
+ export const MasterDetailLayout = createComponent({
6
+ react: React,
7
+ tagName: 'u-master-detail-layout',
8
+ elementClass: MasterDetailLayoutElement,
9
+ events: {
10
+ onDetailClose: 'detail-close',
11
+ },
12
+ });
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { PageHeader as PageHeaderElement } from '@iyulab/modern-app/dist/components/PageHeader.js';
3
+
4
+ export declare const PageHeader: React.ForwardRefExoticComponent<
5
+ Omit<Partial<PageHeaderElement>, keyof React.HTMLAttributes<PageHeaderElement>>
6
+ & Omit<React.HTMLAttributes<PageHeaderElement>, never>
7
+ & React.RefAttributes<PageHeaderElement>
8
+ & {
9
+ }
10
+ >;
11
+
12
+ export type PageHeaderProps = React.ComponentProps<typeof PageHeader>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { PageHeader as PageHeaderElement } from '@iyulab/modern-app/dist/components/PageHeader.js';
4
+
5
+ export const PageHeader = createComponent({
6
+ react: React,
7
+ tagName: 'u-page-header',
8
+ elementClass: PageHeaderElement,
9
+ events: {},
10
+ });
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { SidebarButton as SidebarButtonElement } from '@iyulab/modern-app/dist/components/SidebarButton.js';
3
+
4
+ export declare const SidebarButton: React.ForwardRefExoticComponent<
5
+ Omit<Partial<SidebarButtonElement>, keyof React.HTMLAttributes<SidebarButtonElement>>
6
+ & Omit<React.HTMLAttributes<SidebarButtonElement>, never>
7
+ & React.RefAttributes<SidebarButtonElement>
8
+ & {
9
+ }
10
+ >;
11
+
12
+ export type SidebarButtonProps = React.ComponentProps<typeof SidebarButton>;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createComponent } from '@lit/react';
3
+ import { SidebarButton as SidebarButtonElement } from '@iyulab/modern-app/dist/components/SidebarButton.js';
4
+
5
+ export const SidebarButton = createComponent({
6
+ react: React,
7
+ tagName: 'u-sidebar-button',
8
+ elementClass: SidebarButtonElement,
9
+ events: {},
10
+ });
@@ -0,0 +1,9 @@
1
+ export * from '@iyulab/modern-app/dist/react.js';
2
+ export { SidebarButton, SidebarButtonProps } from './SidebarButton';
3
+ export { PageHeader, PageHeaderProps } from './PageHeader';
4
+ export { MasterDetailLayout, MasterDetailLayoutProps } from './MasterDetailLayout';
5
+ export { InfoSection, InfoSectionProps } from './InfoSection';
6
+ export { InfoField, InfoFieldProps } from './InfoField';
7
+ export { GroupBox, GroupBoxProps } from './GroupBox';
8
+ export { EmptyState, EmptyStateProps } from './EmptyState';
9
+ export { ActionBar, ActionBarProps } from './ActionBar';
@@ -0,0 +1,9 @@
1
+ export * from '@iyulab/modern-app/dist/react.js';
2
+ export { SidebarButton } from './SidebarButton.js';
3
+ export { PageHeader } from './PageHeader.js';
4
+ export { MasterDetailLayout } from './MasterDetailLayout.js';
5
+ export { InfoSection } from './InfoSection.js';
6
+ export { InfoField } from './InfoField.js';
7
+ export { GroupBox } from './GroupBox.js';
8
+ export { EmptyState } from './EmptyState.js';
9
+ export { ActionBar } from './ActionBar.js';
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.19.6",
4
+ "version": "0.20.0",
5
5
  "keywords": [
6
6
  "iyulab",
7
7
  "web-framework",
@@ -41,10 +41,8 @@
41
41
  "types": "./dist/index.d.ts",
42
42
  "import": "./dist/index.js"
43
43
  },
44
- "./react": {
45
- "types": "./dist/react.d.ts",
46
- "import": "./dist/react.js"
47
- },
44
+ "./react": "./dist/react/index.js",
45
+ "./react/*": "./dist/react/*",
48
46
  "./dist/*": {
49
47
  "types": "./dist/*.d.ts",
50
48
  "import": "./dist/*"
@@ -55,17 +53,18 @@
55
53
  "test": "vitest run",
56
54
  "test:watch": "vitest",
57
55
  "start": "vite",
58
- "build": "npm run typecheck && vite build",
56
+ "build": "npm run typecheck && vite build && npm run test:react-types",
59
57
  "test:browser": "vitest run --project=browser",
60
- "typecheck": "tsc --noEmit"
58
+ "typecheck": "tsc --noEmit",
59
+ "test:react-types": "tsc -p tsconfig.react-smoke.json"
61
60
  },
62
61
  "dependencies": {
63
- "@iyulab/router": "^0.13.0",
62
+ "@iyulab/router": "^0.15.0",
64
63
  "i18next": "^26.3.6",
65
64
  "lit": "^3.3.3"
66
65
  },
67
66
  "peerDependencies": {
68
- "@iyulab/components": ">=1.40.3",
67
+ "@iyulab/components": ">=1.42.0",
69
68
  "@lit/react": ">=1.0.8",
70
69
  "react": ">=18.0.0"
71
70
  },
@@ -89,6 +88,7 @@
89
88
  "typescript": "^6.0.2",
90
89
  "vite": "^8.1.4",
91
90
  "vite-plugin-dts": "^5.0.3",
92
- "vitest": "^5.0.0"
91
+ "vitest": "^5.0.0",
92
+ "@iyulab/components": ">=1.42.0"
93
93
  }
94
94
  }