@iyulab/modern-app 0.2.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 (48) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +35 -0
  4. package/dist/app.d.ts +53 -0
  5. package/dist/app.js +111 -0
  6. package/dist/components/ProgressBar.d.ts +22 -0
  7. package/dist/components/ProgressBar.js +54 -0
  8. package/dist/components/ProgressBar.styles.d.ts +1 -0
  9. package/dist/components/ProgressBar.styles.js +31 -0
  10. package/dist/components/SidebarButton.d.ts +29 -0
  11. package/dist/components/SidebarButton.js +50 -0
  12. package/dist/components/SidebarButton.styles.d.ts +1 -0
  13. package/dist/components/SidebarButton.styles.js +62 -0
  14. package/dist/components/SidebarGroup.d.ts +35 -0
  15. package/dist/components/SidebarGroup.js +70 -0
  16. package/dist/components/SidebarGroup.styles.d.ts +1 -0
  17. package/dist/components/SidebarGroup.styles.js +93 -0
  18. package/dist/components/SidebarLink.d.ts +42 -0
  19. package/dist/components/SidebarLink.js +71 -0
  20. package/dist/components/SidebarLink.styles.d.ts +1 -0
  21. package/dist/components/SidebarLink.styles.js +58 -0
  22. package/dist/components/SidebarLogo.d.ts +33 -0
  23. package/dist/components/SidebarLogo.js +60 -0
  24. package/dist/components/SidebarLogo.styles.d.ts +1 -0
  25. package/dist/components/SidebarLogo.styles.js +53 -0
  26. package/dist/components/SidebarSection.d.ts +30 -0
  27. package/dist/components/SidebarSection.js +52 -0
  28. package/dist/components/SidebarSection.styles.d.ts +1 -0
  29. package/dist/components/SidebarSection.styles.js +44 -0
  30. package/dist/components/UnsafeContent.d.ts +16 -0
  31. package/dist/components/UnsafeContent.js +26 -0
  32. package/dist/components/UnsafeContent.styles.d.ts +1 -0
  33. package/dist/components/UnsafeContent.styles.js +9 -0
  34. package/dist/index.d.ts +4 -0
  35. package/dist/index.js +4 -0
  36. package/dist/internals/ExtendedBaseElement.d.ts +22 -0
  37. package/dist/internals/ExtendedBaseElement.js +59 -0
  38. package/dist/internals/observers.d.ts +10 -0
  39. package/dist/internals/observers.js +6 -0
  40. package/dist/layouts/SidebarLayout.d.ts +60 -0
  41. package/dist/layouts/SidebarLayout.js +183 -0
  42. package/dist/layouts/SidebarLayout.styles.d.ts +1 -0
  43. package/dist/layouts/SidebarLayout.styles.js +126 -0
  44. package/dist/layouts/SidebarLayout.types.d.ts +25 -0
  45. package/dist/types/AppConfigs.d.ts +54 -0
  46. package/dist/types/AppOptions.d.ts +12 -0
  47. package/dist/types/AppTypes.d.ts +6 -0
  48. package/package.json +53 -0
@@ -0,0 +1,93 @@
1
+ import { css as o } from "lit";
2
+ const e = o`
3
+ :host {
4
+ display: block;
5
+ }
6
+ :host([compact]) button {
7
+ justify-content: center;
8
+ padding: 8px;
9
+ }
10
+ :host([compact]) .label {
11
+ display: none;
12
+ }
13
+ :host([compact]) .toggler {
14
+ display: none;
15
+ }
16
+ :host([compact]) .items {
17
+ display: none;
18
+ }
19
+ :host(:not([compact])[collapsed]) .toggler {
20
+ transform: rotate(-90deg);
21
+ }
22
+ :host(:not([compact])[collapsed]) .items {
23
+ height: 0;
24
+ margin-top: 0;
25
+ opacity: 0;
26
+ }
27
+
28
+ .container {
29
+ display: flex;
30
+ flex-direction: column;
31
+ }
32
+
33
+ button {
34
+ all: unset;
35
+ position: relative;
36
+ display: flex;
37
+ flex-direction: row;
38
+ justify-content: space-between;
39
+ align-items: center;
40
+ gap: 12px;
41
+ width: 100%;
42
+ padding: 8px 12px;
43
+ color: var(--u-text-color);
44
+ font-family: inherit;
45
+ background: transparent;
46
+ border: none;
47
+ border-radius: 8px;
48
+ transition: all 0.2s ease;
49
+ cursor: pointer;
50
+ }
51
+ button:hover {
52
+ background-color: var(--u-bg-color-hover);
53
+ color: var(--u-text-color-hover);
54
+ }
55
+
56
+ .icon {
57
+ font-size: 20px;
58
+ color: inherit;
59
+ flex-shrink: 0;
60
+ }
61
+
62
+ .label {
63
+ flex: 1;
64
+ color: inherit;
65
+ font-size: 14px;
66
+ font-weight: 600;
67
+ line-height: 20px;
68
+ text-align: left;
69
+ overflow: hidden;
70
+ white-space: nowrap;
71
+ text-overflow: ellipsis;
72
+ }
73
+
74
+ .toggler {
75
+ font-size: 16px !important;
76
+ transition: transform 0.2s ease;
77
+ }
78
+
79
+ .items {
80
+ display: flex;
81
+ flex-direction: column;
82
+ margin-left: 32px;
83
+ margin-top: 4px;
84
+ gap: 4px;
85
+ overflow: hidden;
86
+ transition: all 0.3s ease;
87
+ border-left: 2px solid var(--u-border-color-weak);
88
+ padding-left: 8px;
89
+ }
90
+ `;
91
+ export {
92
+ e as styles
93
+ };
@@ -0,0 +1,42 @@
1
+ import { DirectiveResult } from 'lit/directive.js';
2
+ import { BaseElement } from '@iyulab/components/dist/components/BaseElement.js';
3
+ import { ExtendedBaseElement } from '../internals/ExtendedBaseElement.js';
4
+ import { StyleMap } from '../types/AppTypes.js';
5
+ type ElementParts = 'host' | 'base' | 'icon' | 'label';
6
+ /** 링크 항목 디폴트 타입 */
7
+ export interface SidebarLinkConfig {
8
+ type?: 'link';
9
+ icon?: string;
10
+ label: string | DirectiveResult;
11
+ href: string;
12
+ pattern?: string | URLPattern;
13
+ styles?: StyleMap<ElementParts>;
14
+ }
15
+ /**
16
+ * SidebarLink 컴포넌트는 계층형 네비게이션 아이템을 표시합니다.
17
+ * 아이콘, 레이블, 하위 아이템을 지원합니다.
18
+ */
19
+ export declare class SidebarLink extends ExtendedBaseElement<ElementParts> {
20
+ static styles: import('lit').CSSResultGroup[];
21
+ static dependencies: Record<string, typeof BaseElement>;
22
+ /** selected 상태 */
23
+ selected: boolean;
24
+ /** 콤팩트 모드 여부 */
25
+ compact: boolean;
26
+ /** 네비게이션 아이템 데이터 */
27
+ icon?: string;
28
+ /** 네비게이션 아이템 데이터 */
29
+ label?: string | DirectiveResult;
30
+ /** 네비게이션 링크 */
31
+ href?: string;
32
+ /** 네비게이션 패턴 매칭 */
33
+ pattern?: string | URLPattern;
34
+ connectedCallback(): void;
35
+ disconnectedCallback(): void;
36
+ render(): import('lit-html').TemplateResult<1>;
37
+ /** 라우트 변경 이벤트 핸들러 */
38
+ private handleRouteBegin;
39
+ /** 라우트 변경 이벤트 핸들러 */
40
+ private handleRouteDone;
41
+ }
42
+ export {};
@@ -0,0 +1,71 @@
1
+ import { html as l } from "lit";
2
+ import { property as t } from "lit/decorators.js";
3
+ import { Icon as c } from "@iyulab/components/dist/components/Icon/Icon.js";
4
+ import { ExtendedBaseElement as d } from "../internals/ExtendedBaseElement.js";
5
+ import { styles as h } from "./SidebarLink.styles.js";
6
+ var u = Object.defineProperty, n = (r, i, a, f) => {
7
+ for (var e = void 0, s = r.length - 1, p; s >= 0; s--)
8
+ (p = r[s]) && (e = p(i, a, e) || e);
9
+ return e && u(i, a, e), e;
10
+ };
11
+ class o extends d {
12
+ constructor() {
13
+ super(...arguments), this.selected = !1, this.compact = !1, this.handleRouteBegin = (i) => {
14
+ this.selected = !1;
15
+ }, this.handleRouteDone = (i) => {
16
+ this.pattern ||= this.href, this.pattern ? (this.pattern = typeof this.pattern == "string" ? new URLPattern(this.pattern, window.location.origin) : this.pattern, this.selected = this.pattern.test(i.routeInfo.path, window.location.origin)) : this.selected = !1;
17
+ };
18
+ }
19
+ static {
20
+ this.styles = [super.styles, h];
21
+ }
22
+ static {
23
+ this.dependencies = {
24
+ "u-icon": c
25
+ };
26
+ }
27
+ connectedCallback() {
28
+ super.connectedCallback(), window.addEventListener("route-begin", this.handleRouteBegin), window.addEventListener("route-done", this.handleRouteDone);
29
+ }
30
+ disconnectedCallback() {
31
+ window.removeEventListener("route-begin", this.handleRouteBegin), window.removeEventListener("route-done", this.handleRouteDone), super.disconnectedCallback();
32
+ }
33
+ render() {
34
+ return l`
35
+ <u-link part="base"
36
+ .href=${this.href || "#"}
37
+ ?compact=${this.compact}>
38
+ <u-icon part="icon"
39
+ ?hidden=${!this.icon}
40
+ ?remote=${!0}
41
+ .name=${this.icon}
42
+ ></u-icon>
43
+ <span part="label"
44
+ ?hidden=${this.compact}>
45
+ ${this.label}
46
+ </span>
47
+ </u-link>
48
+ `;
49
+ }
50
+ }
51
+ n([
52
+ t({ type: Boolean, reflect: !0 })
53
+ ], o.prototype, "selected");
54
+ n([
55
+ t({ type: Boolean })
56
+ ], o.prototype, "compact");
57
+ n([
58
+ t({ type: String })
59
+ ], o.prototype, "icon");
60
+ n([
61
+ t({ type: String })
62
+ ], o.prototype, "label");
63
+ n([
64
+ t({ type: String })
65
+ ], o.prototype, "href");
66
+ n([
67
+ t({ type: String })
68
+ ], o.prototype, "pattern");
69
+ export {
70
+ o as SidebarLink
71
+ };
@@ -0,0 +1 @@
1
+ export declare const styles: import('lit').CSSResult;
@@ -0,0 +1,58 @@
1
+ import { css as o } from "lit";
2
+ const r = o`
3
+ :host {
4
+ display: block;
5
+ border-radius: 8px;
6
+ color: var(--u-text-color);
7
+ text-decoration: none;
8
+ transition: all 0.2s ease;
9
+ cursor: pointer;
10
+ }
11
+ :host(:hover) {
12
+ color: var(--u-text-color-hover);
13
+ background-color: var(--u-bg-color-hover);
14
+ }
15
+ :host([selected]) {
16
+ color: var(--u-text-color-inverse);
17
+ background-color: var(--u-blue-600);
18
+ box-shadow: 0 1px 3px var(--u-shadow-weak);
19
+ }
20
+ :host([selected]:hover) {
21
+ color: var(--u-text-color-inverse);
22
+ background-color: var(--u-blue-700);
23
+ box-shadow: 0 2px 6px var(--u-shadow-normal);
24
+ }
25
+
26
+ u-link {
27
+ display: flex;
28
+ flex-direction: row;
29
+ justify-content: flex-start;
30
+ align-items: center;
31
+ gap: 12px;
32
+ padding: 8px 12px;
33
+ }
34
+ u-link[compact] {
35
+ justify-content: center;
36
+ padding: 8px;
37
+ }
38
+
39
+ u-icon {
40
+ color: inherit;
41
+ font-size: 20px;
42
+ flex-shrink: 0;
43
+ }
44
+
45
+ span {
46
+ flex: 1;
47
+ color: inherit;
48
+ font-size: 14px;
49
+ font-weight: 500;
50
+ line-height: 20px;
51
+ overflow: hidden;
52
+ white-space: nowrap;
53
+ text-overflow: ellipsis;
54
+ }
55
+ `;
56
+ export {
57
+ r as styles
58
+ };
@@ -0,0 +1,33 @@
1
+ import { DirectiveResult } from 'lit/directive.js';
2
+ import { BaseElement } from '@iyulab/components/dist/components/BaseElement.js';
3
+ import { ExtendedBaseElement } from '../internals/ExtendedBaseElement.js';
4
+ import { StyleMap } from '../types/AppTypes.js';
5
+ type ElementParts = 'host' | 'container' | 'image' | 'icon' | 'label';
6
+ /** 로고 설정 */
7
+ export interface SidebarLogoConfig {
8
+ type: 'image' | 'icon';
9
+ image?: string;
10
+ icon?: string;
11
+ label?: string | DirectiveResult;
12
+ styles?: StyleMap<ElementParts>;
13
+ onClick?: (e: MouseEvent) => void;
14
+ }
15
+ /**
16
+ * SidebarLogo 컴포넌트는 사이드바에 표시되는 로고를 나타냅니다.
17
+ */
18
+ export declare class SidebarLogo extends ExtendedBaseElement<ElementParts> {
19
+ static styles: import('lit').CSSResultGroup[];
20
+ static dependencies: Record<string, typeof BaseElement>;
21
+ /** 콤팩트 모드 여부 */
22
+ compact: boolean;
23
+ /** 로고 타입 */
24
+ type: 'image' | 'icon';
25
+ /** 로고 이미지 URL */
26
+ image?: string;
27
+ /** 로고 아이콘 svg 이름 */
28
+ icon?: string;
29
+ /** 로고 아이콘 텍스트 */
30
+ label?: string | DirectiveResult;
31
+ render(): import('lit-html').TemplateResult<1>;
32
+ }
33
+ export {};
@@ -0,0 +1,60 @@
1
+ import { nothing as m, html as n } from "lit";
2
+ import { property as e } from "lit/decorators.js";
3
+ import { Icon as l } from "@iyulab/components/dist/components/icon/Icon.js";
4
+ import { ExtendedBaseElement as y } from "../internals/ExtendedBaseElement.js";
5
+ import { styles as h } from "./SidebarLogo.styles.js";
6
+ var d = Object.defineProperty, i = (r, s, a, g) => {
7
+ for (var t = void 0, p = r.length - 1, c; p >= 0; p--)
8
+ (c = r[p]) && (t = c(s, a, t) || t);
9
+ return t && d(s, a, t), t;
10
+ };
11
+ class o extends y {
12
+ constructor() {
13
+ super(...arguments), this.compact = !1, this.type = "icon";
14
+ }
15
+ static {
16
+ this.styles = [super.styles, h];
17
+ }
18
+ static {
19
+ this.dependencies = {
20
+ "u-icon": l
21
+ };
22
+ }
23
+ render() {
24
+ return n`
25
+ <div class="container" part="container">
26
+ ${this.type === "image" && this.image ? n`
27
+ <img part="image"
28
+ src=${this.image}
29
+ alt="App Logo"
30
+ />` : this.type === "icon" && this.icon ? n`
31
+ <u-icon part="icon"
32
+ .remote=${!0}
33
+ .name=${this.icon}
34
+ ></u-icon>` : m}
35
+ <span part="label"
36
+ ?hidden=${this.compact || !this.label}>
37
+ ${this.label}
38
+ </span>
39
+ </div>
40
+ `;
41
+ }
42
+ }
43
+ i([
44
+ e({ type: Boolean })
45
+ ], o.prototype, "compact");
46
+ i([
47
+ e({ type: String })
48
+ ], o.prototype, "type");
49
+ i([
50
+ e({ type: String })
51
+ ], o.prototype, "image");
52
+ i([
53
+ e({ type: String })
54
+ ], o.prototype, "icon");
55
+ i([
56
+ e({ type: String })
57
+ ], o.prototype, "label");
58
+ export {
59
+ o as SidebarLogo
60
+ };
@@ -0,0 +1 @@
1
+ export declare const styles: import('lit').CSSResult;
@@ -0,0 +1,53 @@
1
+ import { css as e } from "lit";
2
+ const t = e`
3
+ :host {
4
+ display: block;
5
+ min-width: 0;
6
+ font-size: 32px;
7
+ color: var(--u-text-color);
8
+ user-select: none;
9
+ cursor: pointer;
10
+ transition: all 0.2s ease;
11
+ }
12
+ :host(:hover) {
13
+ color: var(--u-text-color-hover);
14
+ }
15
+ :host(:active) {
16
+ color: var(--u-text-color-active);
17
+ }
18
+
19
+ .container {
20
+ display: flex;
21
+ flex-direction: row;
22
+ align-items: center;
23
+ justify-content: flex-start;
24
+ overflow: hidden;
25
+ gap: 8px;
26
+ }
27
+
28
+ img {
29
+ width: 100%;
30
+ height: 1em;
31
+ object-fit: contain;
32
+ flex-shrink: 0;
33
+ }
34
+
35
+ u-icon {
36
+ font-size: 1em;
37
+ color: inherit;
38
+ flex-shrink: 0;
39
+ }
40
+
41
+ span {
42
+ font-size: 0.75em;
43
+ font-weight: 600;
44
+ line-height: inherit;
45
+ color: inherit;
46
+ overflow: hidden;
47
+ white-space: nowrap;
48
+ text-overflow: ellipsis;
49
+ }
50
+ `;
51
+ export {
52
+ t as styles
53
+ };
@@ -0,0 +1,30 @@
1
+ import { DirectiveResult } from 'lit/directive.js';
2
+ import { BaseElement } from '@iyulab/components/dist/components/BaseElement.js';
3
+ import { ExtendedBaseElement } from '../internals/ExtendedBaseElement.js';
4
+ import { SidebarLinkConfig } from './SidebarLink.js';
5
+ import { SidebarGroupConfig } from './SidebarGroup.js';
6
+ import { StyleMap } from '../types/AppTypes.js';
7
+ type ElementParts = 'host' | 'container' | 'header' | 'title' | 'subtitle' | 'items';
8
+ /** 섹션: 섹션 내에는 그룹 또는 링크들만 허용 */
9
+ export interface SidebarSectionConfig {
10
+ type: 'section';
11
+ title: string | DirectiveResult;
12
+ subTitle?: string | DirectiveResult;
13
+ items: (SidebarGroupConfig | SidebarLinkConfig)[];
14
+ styles?: StyleMap<ElementParts>;
15
+ }
16
+ /**
17
+ * SidebarSection 컴포넌트는 사이드바의 섹션 헤더를 표시합니다.
18
+ */
19
+ export declare class SidebarSection extends ExtendedBaseElement<ElementParts> {
20
+ static styles: import('lit').CSSResultGroup[];
21
+ static dependencies: Record<string, typeof BaseElement>;
22
+ /** 콤팩트 모드 여부 */
23
+ compact: boolean;
24
+ /** 네비게이션 아이템 데이터 */
25
+ mainTitle?: string | DirectiveResult;
26
+ /** 네비게이션 아이템 데이터 */
27
+ subTitle?: string | DirectiveResult;
28
+ render(): import('lit-html').TemplateResult<1>;
29
+ }
30
+ export {};
@@ -0,0 +1,52 @@
1
+ import { html as n } from "lit";
2
+ import { property as i } from "lit/decorators.js";
3
+ import { ExtendedBaseElement as d } from "../internals/ExtendedBaseElement.js";
4
+ import { styles as c } from "./SidebarSection.styles.js";
5
+ var m = Object.defineProperty, r = (e, a, o, h) => {
6
+ for (var t = void 0, s = e.length - 1, l; s >= 0; s--)
7
+ (l = e[s]) && (t = l(a, o, t) || t);
8
+ return t && m(a, o, t), t;
9
+ };
10
+ class p extends d {
11
+ constructor() {
12
+ super(...arguments), this.compact = !1;
13
+ }
14
+ static {
15
+ this.styles = [super.styles, c];
16
+ }
17
+ static {
18
+ this.dependencies = {};
19
+ }
20
+ render() {
21
+ return n`
22
+ <div class="container" part="container">
23
+ <div class="header" part="header"
24
+ ?hidden=${this.compact}>
25
+ <h3 class="title" part="title">
26
+ ${this.mainTitle}
27
+ </h3>
28
+ <p class="subtitle" part="subtitle"
29
+ ?hidden=${!this.subTitle}>
30
+ ${this.subTitle}
31
+ </p>
32
+ </div>
33
+
34
+ <div class="items" part="items">
35
+ <slot></slot>
36
+ </div>
37
+ </div>
38
+ `;
39
+ }
40
+ }
41
+ r([
42
+ i({ type: Boolean })
43
+ ], p.prototype, "compact");
44
+ r([
45
+ i({ type: String })
46
+ ], p.prototype, "mainTitle");
47
+ r([
48
+ i({ type: String })
49
+ ], p.prototype, "subTitle");
50
+ export {
51
+ p as SidebarSection
52
+ };
@@ -0,0 +1 @@
1
+ export declare const styles: import('lit').CSSResult;
@@ -0,0 +1,44 @@
1
+ import { css as e } from "lit";
2
+ const o = e`
3
+ :host {
4
+ display: block;
5
+ margin: 8px 0;
6
+ }
7
+
8
+ .container {
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 8px;
12
+ }
13
+
14
+ .header {
15
+ display: flex;
16
+ flex-direction: column;
17
+ gap: 2px;
18
+ padding: 8px 12px 4px;
19
+ }
20
+
21
+ .title {
22
+ font-size: 12px;
23
+ font-weight: 700;
24
+ color: var(--u-soft-text-color);
25
+ text-transform: uppercase;
26
+ letter-spacing: 0.5px;
27
+ margin: 0;
28
+ }
29
+
30
+ .subtitle {
31
+ font-size: 11px;
32
+ color: var(--u-text-color-disabled);
33
+ margin: 0;
34
+ }
35
+
36
+ .items {
37
+ display: flex;
38
+ flex-direction: column;
39
+ gap: 2px;
40
+ }
41
+ `;
42
+ export {
43
+ o as styles
44
+ };
@@ -0,0 +1,16 @@
1
+ import { BaseElement } from '@iyulab/components/dist/components/BaseElement.js';
2
+ /** Raw HTML content */
3
+ export interface UnsafeContentConfig {
4
+ type: 'content';
5
+ content: string;
6
+ }
7
+ /**
8
+ * 일반 HTML 콘텐츠를 표시하는 사이드바 컴포넌트
9
+ */
10
+ export declare class UnsafeContent extends BaseElement {
11
+ static styles: import('lit').CSSResultGroup[];
12
+ static dependencies: Record<string, typeof BaseElement>;
13
+ /** HTML 콘텐츠 */
14
+ content?: string;
15
+ render(): import('lit-html/directive.js').DirectiveResult<typeof import('lit-html/directives/unsafe-html.js').UnsafeHTMLDirective>;
16
+ }
@@ -0,0 +1,26 @@
1
+ import { property as i } from "lit/decorators.js";
2
+ import { unsafeHTML as p } from "lit/directives/unsafe-html.js";
3
+ import { BaseElement as f } from "@iyulab/components/dist/components/BaseElement.js";
4
+ import { styles as a } from "./UnsafeContent.styles.js";
5
+ var m = Object.defineProperty, l = (t, s, n, c) => {
6
+ for (var e = void 0, r = t.length - 1, o; r >= 0; r--)
7
+ (o = t[r]) && (e = o(s, n, e) || e);
8
+ return e && m(s, n, e), e;
9
+ };
10
+ class d extends f {
11
+ static {
12
+ this.styles = [super.styles, a];
13
+ }
14
+ static {
15
+ this.dependencies = {};
16
+ }
17
+ render() {
18
+ return p(this.content);
19
+ }
20
+ }
21
+ l([
22
+ i({ type: String })
23
+ ], d.prototype, "content");
24
+ export {
25
+ d as UnsafeContent
26
+ };
@@ -0,0 +1 @@
1
+ export declare const styles: import('lit').CSSResult;
@@ -0,0 +1,9 @@
1
+ import { css as s } from "lit";
2
+ const o = s`
3
+ :host {
4
+ display: contents;
5
+ }
6
+ `;
7
+ export {
8
+ o as styles
9
+ };
@@ -0,0 +1,4 @@
1
+ export type * from './types/AppConfigs.js';
2
+ export type * from './types/AppOptions.js';
3
+ export type * from './types/AppTypes.js';
4
+ export { app } from './app';
package/dist/index.js ADDED
@@ -0,0 +1,4 @@
1
+ import { app as r } from "./app.js";
2
+ export {
3
+ r as app
4
+ };
@@ -0,0 +1,22 @@
1
+ import { PropertyValues } from 'lit';
2
+ import { BaseElement } from '@iyulab/components/dist/components/BaseElement.js';
3
+ import { StyleMap } from '../types/AppTypes';
4
+ /**
5
+ * ExtendedBaseElement - BaseElement를 확장한 클래스
6
+ * - 부분별 스타일링 지원
7
+ */
8
+ export declare class ExtendedBaseElement<T extends string> extends BaseElement {
9
+ static styles: import('lit').CSSResultGroup;
10
+ static dependencies: Record<string, typeof BaseElement>;
11
+ /** 부분별 스타일 구성 */
12
+ styles?: StyleMap<T>;
13
+ protected updated(changedProperties: PropertyValues): void;
14
+ /**
15
+ * 현재 스타일 구성을 각 파트에 적용, host 포함
16
+ */
17
+ private applyToParts;
18
+ /**
19
+ * 스타일 객체를 개별 프로퍼티 단위로 적용 (camelCase / kebab-case / custom props 처리)
20
+ */
21
+ private assignToObject;
22
+ }