@iyulab/components 1.22.0 โ 1.24.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.
- package/CHANGELOG.md +242 -0
- package/LICENSE +1 -1
- package/README.md +33 -1
- package/dist/components/UOverlayElement.d.ts +18 -0
- package/dist/components/UOverlayElement.js +24 -0
- package/dist/components/badge/UBadge.d.ts +5 -0
- package/dist/components/badge/UBadge.js +9 -0
- package/dist/components/badge/UBadge.styles.js +6 -0
- package/dist/components/dialog/UDialog.styles.js +1 -1
- package/dist/components/drawer/UDrawer.styles.js +1 -1
- package/dist/components/expander/UExpander.d.ts +38 -0
- package/dist/components/expander/UExpander.js +78 -0
- package/dist/components/expander/UExpander.styles.d.ts +1 -0
- package/dist/components/expander/UExpander.styles.js +95 -0
- package/dist/components/field/UField.styles.js +15 -0
- package/dist/components/icon/UIcon.d.ts +17 -4
- package/dist/components/icon/UIcon.js +9 -6
- package/dist/components/panel/UPanel.d.ts +0 -2
- package/dist/components/panel/UPanel.js +0 -5
- package/dist/components/skeleton/USkeleton.d.ts +7 -0
- package/dist/components/skeleton/USkeleton.js +7 -1
- package/dist/components/skeleton/USkeleton.styles.js +64 -0
- package/dist/components/tab-panel/UTabPanel.d.ts +4 -2
- package/dist/components/tab-panel/UTabPanel.js +0 -5
- package/dist/components/tag/UTag.d.ts +7 -0
- package/dist/components/tag/UTag.js +10 -1
- package/dist/components/tag/UTag.styles.js +4 -0
- package/dist/components/text/UText.d.ts +38 -0
- package/dist/components/text/UText.js +45 -0
- package/dist/components/text/UText.styles.d.ts +1 -0
- package/dist/components/text/UText.styles.js +91 -0
- package/dist/components/tree/UTree.d.ts +4 -2
- package/dist/components/tree/UTree.js +0 -5
- package/dist/components/tree-item/UTreeItem.d.ts +4 -1
- package/dist/components/tree-item/UTreeItem.js +0 -5
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/dist/react/UExpander.d.ts +16 -0
- package/dist/react/UExpander.js +13 -0
- package/dist/react/UText.d.ts +12 -0
- package/dist/react/UText.js +10 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.js +2 -0
- package/dist/utilities/Dialog.js +1 -1
- package/dist/utilities/Locale.d.ts +34 -0
- package/dist/utilities/Locale.js +43 -6
- package/dist/utilities/Theme.d.ts +37 -0
- package/dist/utilities/Theme.js +65 -0
- package/dist/utilities/accent.d.ts +52 -0
- package/dist/utilities/accent.js +127 -0
- package/dist/utilities/icons.js +1 -1
- package/dist/utilities/statusIcon.d.ts +31 -0
- package/dist/utilities/statusIcon.js +34 -0
- package/package.json +5 -3
- package/skills/iyulab-components/SKILL.md +4 -1
- package/skills/iyulab-components/references/components/badge.md +2 -1
- package/skills/iyulab-components/references/components/button.md +3 -1
- package/skills/iyulab-components/references/components/copy-button.md +80 -0
- package/skills/iyulab-components/references/components/drawer.md +30 -0
- package/skills/iyulab-components/references/components/expander.md +70 -0
- package/skills/iyulab-components/references/components/icon.md +12 -0
- package/skills/iyulab-components/references/components/input.md +6 -0
- package/skills/iyulab-components/references/components/panel.md +6 -4
- package/skills/iyulab-components/references/components/skeleton.md +12 -0
- package/skills/iyulab-components/references/components/tab-panel.md +4 -5
- package/skills/iyulab-components/references/components/tag.md +18 -1
- package/skills/iyulab-components/references/components/text.md +79 -0
- package/skills/iyulab-components/references/components/textarea.md +5 -0
- package/skills/iyulab-components/references/components/tree.md +2 -4
- package/skills/iyulab-components/references/usage.md +73 -2
- package/skills/iyulab-components/references/utilities/theme.md +23 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,247 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.24.0] - 2026-08-04
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- ๐ด**`u-text` โ ์๋ฏธ ํ์ดํฌ๊ทธ๋ํผ ์ค์ผ์ผ(7๋จ)์ ๋งํฌ์
์์ ์ฐ๋ ์๋ฆฌ.**
|
|
8
|
+
์ํธ๋ `1.21.0` ๋ถํฐ ๋จ๋ง๋ค **ํฌ๊ธฐยท๊ตต๊ธฐยทํ๊ฐยท์๊ฐ** ๋ค ๊ฐ์ ๊ฐ๊ณ ์์์ง๋ง **๊ทธ ๋จ์
|
|
9
|
+
์ ์ฉํ๋ ์ปดํฌ๋ํธ๊ฐ ์์๋ค** โ ์๋น์๊ฐ ์ค์ผ์ผ์ ์ฐ๋ ค๋ฉด ์๊ธฐ CSS ์์ ํ ํฐ์ ์ง์
|
|
10
|
+
์ฐธ์กฐํด์ผ ํ๊ณ , ๊ทธ๋ฌ๋ฉด ยซ์ปดํฌ๋ํธ๋ง์ผ๋ก ํ๋ฉด์ ์ง๋๋คยป๊ฐ ๊ทธ ์๋ฆฌ์์ ๊นจ์ก๋ค.
|
|
11
|
+
โ ์ฐ๋ฆฌ๊ฐ ์ค ๊ฒ์ **๊ฐ**์ด๊ณ ํ์ํ๋ ๊ฒ์ **์๋ฆฌ**๋ค.
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<u-text level="1" variant="display">๋ฌธ์ ์ ๋ชฉ</u-text>
|
|
15
|
+
<u-text variant="subtitle" tone="weak">ํ ์ค ์ค๋ช
</u-text>
|
|
16
|
+
<u-text>๋ณธ๋ฌธ</u-text>
|
|
17
|
+
<u-text variant="caption" tone="weak">๋ณด์กฐ ๋ฌธ๊ตฌ</u-text>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
โ
**์๊ฐ ์ถ(`variant`)๊ณผ ์๋ฏธ ์ถ(`level`)์ด ๋
๋ฆฝ**์ด๋ค โ `level` ์ ์ฃผ๋ฉด ์๋ ๋ฃจํธ์ ์ค์
|
|
21
|
+
`<h1>`~`<h6>` ์ ๋ ๋ํด heading ์ผ๋ก ์ฝํ๊ณ (์ฌ๋กฏ ํ
์คํธ๊ฐ ์ ๊ทผ๊ฐ๋ฅ ์ด๋ฆ), ์ฃผ์ง ์์ผ๋ฉด
|
|
22
|
+
`<p>` ๋ค. ๊ทธ๋์ *"ํ์ด์ง์ ๋ ๋ฒ์งธ ์ ๋ชฉ์ด ์๊ฐ์ ์ผ๋ก ๊ฐ์ฅ ํฐ"* ๋ฐฐ์น๊ฐ ๋งํฌ์
์
|
|
23
|
+
๊ฑฐ์ง๋ง์ํค์ง ์๊ณ ํํ๋๋ค.
|
|
24
|
+
|
|
25
|
+
โ **`tone` ์ ์ค๋ฆฝ ๊ฐ์กฐ ์ถ์ด๋ค**(`default`ยท`weak`ยท`strong`ยท`inverse`) โ ์ญํ ์์ด
|
|
26
|
+
์๋๋ค. ์๋น ํ๋ฉด ์ค์ธก์์ ๋์จ ์ ๋ค์ฏ ์ค ์
์ด ์ด ์ถ์ด์๊ณ ๋๋จธ์ง ๋์ **๋งํฌ**์
|
|
27
|
+
**์ฝ์์ ๋ฐ์ค**๋ผ ์ด ์ปดํฌ๋ํธ์ ์ถ์ด ์๋์๋ค.
|
|
28
|
+
|
|
29
|
+
โ **๊ฐ์ ์๋ก ์ ์ํ์ง ์๋๋ค** โ 7๋จ ร 4์์ฑ์ ์ํธ์์ ์ฝ๊ธฐ๋ง ํ๋ค. ํ๊ท 12๊ฑด์ด
|
|
30
|
+
*"์ด๋ค ํฌ๊ธฐ์ธ๊ฐ"* ๊ฐ ์๋๋ผ ***"์ํธ๊ฐ ๋งํ ๊ทธ ๊ฐ์ ์ฐ๋๊ฐ"*** ๋ฅผ ์ฐ๋ค.
|
|
31
|
+
๊ฐ์ ์ด์ ๋ก `overline` ์ `text-transform: uppercase` ๋ฅผ **๋ถ์ด์ง ์์๋ค** โ ๊ด์ต์ด๊ธด ํ๋
|
|
32
|
+
์๋น์๊ฐ ์ด ๊ธ์๋ฅผ ๋ฐ๊พธ๊ณ , CJK ์๋ ํจ๊ณผ๊ฐ ์์ด **๊ฐ์ ๋จ์ด ์ธ์ด์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณด์ธ๋ค.**
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- ๐ด**`u-field` ์์ ์ปจํธ๋กค์ด ํ๋ ํญ์ ์ฑ์ฐ์ง ์์ ํผ ๊ฒฉ์๊ฐ ์ด๊ธ๋ฌ๋ค.** ์ค์ธก: ๊ฐ์ 231px
|
|
37
|
+
์นธ ์์์ `u-input` 202 ยท `u-select` 71/92/108 ยท `u-textarea` 168 โ **์ค๋ฅธ์ชฝ ๋์ด ๋ค์ฏ
|
|
38
|
+
๊ตฐ๋ฐ์์ ๋ค ๋ฌ๋๋ค.** ์ปจํธ๋กค ์์ ์ ๊ธฐ๋ณธ๊ฐ(`inline-block`)์ ์ณ์ง๋ง, `u-field` ๋ก ๊ฐ์ผ
|
|
39
|
+
์๊ฐ ๊ทธ๊ฒ์ **ํผ์ ํ ์นธ**์ด๋ค โ ๋ผ๋ฒจยท์ค๋ช
ยท๊ฒ์ฆ ๋ฌธ๊ตฌ์ ๋ฐฐ์น๋ฅผ ์ฑ
์์ง๋ ์ด ์ปดํฌ๋ํธ๊ฐ
|
|
40
|
+
ํญ๋ ํจ๊ป ์ ํ๋ค(`::slotted(*) { width: 100% }`).
|
|
41
|
+
โ ์๋น์๊ฐ ์ธ๋ผ์ธ `style` ๋ก ํญ์ ์ฃผ๋ฉด ๊ทธ์ชฝ์ด ์ด๊ธด๋ค.
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
- **`u-icon[fallback]`** โ ์ด๋ฆยทURL ์ด ํด์๋์ง ์์ ๋ ๋์ ๊ทธ๋ฆด SVG ์๋ฌธ.
|
|
46
|
+
ยซ์์ด์ฝ์ด ์ ๋ณด์ธ๋คยป๊ฐ **ยซ๋๋ฅผ ๊ฒ์ด ์๋คยป** ๊ฐ ๋๋ ์๋ฆฌ๊ฐ ์๋ค(์ ํ ์ฌ์ด๋๋ฐ์ ๋ฉ๋ด ํญ๋ชฉ).
|
|
47
|
+
ํด์ ์คํจ๋ ์ด๋ฆ ๋ฏธ์ง์ ยท 404 ยท SVG ํ์ฑ ์คํจ๋ฅผ **๋ชจ๋** ํฌํจํ๋ค.
|
|
48
|
+
|
|
49
|
+
### Documentation
|
|
50
|
+
|
|
51
|
+
- ๐ด**`Theme.accent(seed)` ๊ฐ `primary` ์ญํ ํ ํฐ **7์ข
์ค 6์ข
**๋ง ์ธํ
ํ๋ค๋ ๊ฒ์ ๋ช
์ํ๋ค.**
|
|
52
|
+
`--u-primary-bg-color`(`u-tag` ์ `--tag-hue-surface` ๊ฐ ์ฝ๋ ยซ๊ธ์๋ฅผ ์น๋ ์
์ ๋ฉดยป)๋
|
|
53
|
+
์ํธ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋จ์ผ๋ฏ๋ก, **์๋๋ง ๋ฃ์ผ๋ฉด ํ๊ทธยท์ ํ๋ ํ ๊ฐ์ ์
์ ๋ฉด์ด ํ๋์ผ๋ก ๋จ๋๋ค.**
|
|
54
|
+
์ค์ธก๋ ์ฆ์์ด *"๋ฒํผ์ ๋ธ๋๋์ธ๋ฐ ์ ํ๋ ํ ํ์ ํ๋"* ์ด๋ค.
|
|
55
|
+
โ `usage.md` ๋ธ๋๋ ์ ์ **7์ข
ํ**์ ํ ์ค ํด๋ฒ์, `Theme.accent` JSDoc ์ ๊ฐ์ ๋ด์ฉ์ ์ ์๋ค.
|
|
56
|
+
|
|
57
|
+
โ **ํ์์ ๋ถ์ด์ง ์์ ์ด์ **: ์ด ํ ํฐ์ `info`ยท`success`ยท`danger`ยท`warning` ๊ณผ ํ ์ธํธ๋ก
|
|
58
|
+
**5๊ณ์ด ร 2ํ
๋ง = 10๊ฐ ๊ฐ์ด ์์ผ๋ก ์ง์ง์ด์ ธ** ์๊ณ , ๋ ํ
๋ง๊ฐ ๊ฐ์ ๊ณ์ฝ์ ์ฐ์ง ์๋๋ค
|
|
59
|
+
(๋ฐํ ๋๋น๋น ์ค์ธก โ ๋ผ์ดํธ **1.142** ยท ๋คํฌ **1.030**). ๋์ถ์์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ํ๋ ํธ
|
|
60
|
+
๊ฐ ๊ฒฐ์ ์ด๋ผ ๋ณ๋ ํ๋จ์ด ํ์ํ๋ค.
|
|
61
|
+
|
|
62
|
+
๋ธ๋ผ์ฐ์ ํ๊ท 2๊ฑด์ด ์ด ๋ฌธ์๊ฐ ์ฐธ์ธ์ง ์ฐ๋ค โ **๊ฒฐ์์ ๊ณ ์ ํ๋ ๊ฒ์ด ์๋๋ผ**, ๋์ค์ ํ์์ด
|
|
63
|
+
๋ถ์ผ๋ฉด ๊ทธ ํ
์คํธ๊ฐ ๋ค์งํ๋ฉด์ ๋ฌธ์๋ ๊ณ ์น๋ผ๊ณ ์๋ฆฐ๋ค.
|
|
64
|
+
|
|
65
|
+
## [1.23.0] - 2026-08-04
|
|
66
|
+
|
|
67
|
+
### Added
|
|
68
|
+
|
|
69
|
+
- **`u-expander` โ ์ ๋ชฉ์ ๋๋ฌ ๋ณธ๋ฌธ์ ์ ๊ณ ํด๋ ๋์คํด๋ก์ .**
|
|
70
|
+
|
|
71
|
+
```html
|
|
72
|
+
<u-expander label="๋ฐฐ์ก ์ ๋ณด" open>
|
|
73
|
+
<p>๋ณธ๋ฌธ</p>
|
|
74
|
+
</u-expander>
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
ํค๋๋ **๋ค์ดํฐ๋ธ `<button>`** ์ด๋ผ Enter/Spaceยทํฌ์ปค์ค ์์๊ฐ ๊ทธ๋๋ก ๋ฐ๋ผ์จ๋ค. ๋์ด ์ ํ์
|
|
78
|
+
grid ํธ๋(`0fr` โ `1fr`)์ด๋ผ ์ฝํ
์ธ ๋์ด๋ฅผ JS ๋ก ์ฌ์ง ์์ผ๋ฉฐ, `prefers-reduced-motion:
|
|
79
|
+
reduce` ์์ ๋ฉ์ถ๋ค(์ ํ/ํผ์นจ์ ๊ฒฐ๊ณผ๋ ์ ์ง ์ํ์์๋ ๊ทธ๋๋ก ์ฝํ๋ฏ๋ก ์ด ์ ํ์ ์ฅ์์ด๋ค).
|
|
80
|
+
|
|
81
|
+
โ **์ ํ์ ์์ ์ ๋์ด๊ฐ ์๋๋ผ ยซ๋๋ฌ ๋ถ๊ฐยป๋ค** โ `overflow: hidden` ๋ง์ผ๋ก ์ ์ผ๋ฉด ํ๋ฉด์์
|
|
82
|
+
์ฌ๋ผ์ง ์ฝํ
์ธ ๊ฐ **์ ๊ทผ์ฑ ํธ๋ฆฌ์ ํญ ์์์ ๊ทธ๋๋ก ๋จ๋๋ค.** `visibility` ๋ฅผ ํจ๊ป ์ฎ๊ฒจ
|
|
83
|
+
์ ํ ๋ณธ๋ฌธ์ด ํฌ์ปค์ค๋ฅผ ๋ฐ์ง ๋ชปํ๊ฒ ํ๋ค(ํ๊ท ํ
์คํธ๊ฐ ์ด ์กฐ๊ฑด๋ง ๋ฐ๋ก ์ฐ๋ค).
|
|
84
|
+
|
|
85
|
+
### Changed
|
|
86
|
+
|
|
87
|
+
- **์ฝ์ ์ง๋จ ๋ฌธ๊ตฌ๊ฐ ์์ด๋ก ์ด์ฃผํ๋ค** โ ํ ํฐ ์ํธ ๋ถ์ฌ ๊ฒฝ๊ณ ยท `[Dialog]` ํ์ ์คํจ ยท
|
|
88
|
+
`[IconRegistry]` ๋ฆฌ์กธ๋ธ ์คํจ. ํ๋ฉด ๋ฌธ์์ด์ด ์๋๋ผ **๊ฐ๋ฐ์ ๋๋ฉด ์ง๋จ**์ด๊ณ , ๊ฒ์ ๊ฐ๋ฅ์ฑ๊ณผ
|
|
89
|
+
์ด์ ์ฌํ ๊ณต์ ์์ ์์ด๊ฐ ์ ๋ฆฌํ๋ค๋ ํ๋จ์ด๋ค(๋ก์ผ์ผ ๋ ์ง์คํธ๋ฆฌ์ ๋ฃ์ง ์๋๋ค โ ์ฌ์ฉ์๊ฐ
|
|
90
|
+
์ฝ๋ ๋ฌธ์์ด์ด ์๋๋ค). ๋ฌธ๊ตฌ๋ฅผ ํ๋ณ์์ผ๋ก ์ฐ๋ ํ
์คํธ๊ฐ ์๋ค๋ฉด *"๋ฌด์์ ๋งํ๋๊ฐ"* ๋ก ์ขํ ๊ฒ.
|
|
91
|
+
|
|
92
|
+
### Removed
|
|
93
|
+
|
|
94
|
+
- ๐ด**ํ ๋ฒ๋ ๋์ํ ์ ์๋ ์ ์ธ 3์ข
์ ๊ฑท์๋ค.** ์ ๋ถ ยซ์ ์ธ + ๋ฌธ์ยป๋ง ์๊ณ ๊ทธ ๊ฐ์ ์ฝ๋
|
|
95
|
+
์ฝ๋๊ฐ **์ด๋์๋ ์์๋ค**(์ ์ ๊ฒ์). ๋์์ด ์์์ผ๋ฏ๋ก **๊นจ์ง ๋์๋ ์๋ค.**
|
|
96
|
+
|
|
97
|
+
| ์ ๊ฑฐ | ๋ฌธ์๊ฐ ์ฝ์ํ๋ ๊ฒ | ๋์ฒด |
|
|
98
|
+
|---|---|---|
|
|
99
|
+
| `u-panel[collapsible]` | *"Allow the panel to collapse"* | **`u-expander`**(์) |
|
|
100
|
+
| `u-tab-panel[editable]` | *"Allow adding/removing tabs"* | ์์ โ ํญ ์ถ๊ฐ/์ญ์ ๋ ์๋น์๊ฐ ์ฌ๋กฏ์ ์ง์ ๋ค๋ฃฌ๋ค |
|
|
101
|
+
| `u-tree[droppable]` ยท `u-tree-item[droppable]` | *"Enable drop" / "Accepts drops"* | ์์ โ ์๋ ์ฐธ์กฐ |
|
|
102
|
+
|
|
103
|
+
โ **`draggable` ์ ๋จ๋๋ค** โ ๊ทธ๊ฒ์ ๋ค์ดํฐ๋ธ ์ ์ญ ์์ฑ์ด๋ผ ๋ธ๋ผ์ฐ์ ๊ฐ ๋๋๊ทธ ์์ฒด๋
|
|
104
|
+
์ผ ์ค๋ค. ๋ค๋ง ๋ฌธ์๊ฐ *"Allow reordering tabs by drag"*ยท*"Enable drag"* ๋ก **์ฌ์ ๋ ฌ/๋๋กญ
|
|
105
|
+
๊ธฐ๋ฅ์ ์ฝ์**ํ๊ณ ์์๊ณ ๊ทธ๋ฐ ์ฝ๋๋ ์กด์ฌํ ์ ์ด ์๋ค โ **๋ฌธ์๋ฅผ ์ฌ์ค๋ก ์ ์ **ํ๋ค
|
|
106
|
+
(*"native drag attribute โ no built-in reordering"*). ๋๋๊ทธ ์ฌ์ ๋ ฌยทํธ๋ฆฌ ๋๋กญ์ ์์๊ฐ
|
|
107
|
+
๋ชจ์ด๋ฉด ๊ธฐ๋ฅ์ผ๋ก ์ค๊ณํ๋ค.
|
|
108
|
+
|
|
109
|
+
- **`Locale.namespace()` โ ์์ ํจํค์ง๊ฐ ์๊ธฐ ํ๋ฉด ๋ฌธ์์ด์ ๋ด์ ์๋ฆฌ.**
|
|
110
|
+
|
|
111
|
+
```ts
|
|
112
|
+
const t = Locale.namespace<'empty' | 'loading'>('u-data-view');
|
|
113
|
+
t.register('en', { empty: 'No data', loading: 'Loadingโฆ' });
|
|
114
|
+
t.register('ko', { empty: '๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค' });
|
|
115
|
+
t.text('empty'); // ํ์ฑ ๋ก์ผ์ผ ๊ธฐ์ค
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
์ข
์ ์ `Locale.register`/`getValue` ๋ **๊ฒ์ฆ ๋ฉ์์ง 9ํค์ ๋ซํ ์ ๋์จ**(`LocaleMessageKey`)๋ง
|
|
119
|
+
๋ฐ๋๋ค. ์์ ํจํค์ง์ ํ๋ฉด ๋ฌธ์์ด์ ๊ทธ ์ ๋์จ์ ์๊ณ , ๋ฃ์ผ๋ฉด ๊ธฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋น์
|
|
120
|
+
๋๋ฉ์ธ ์ดํ๊ฐ ์์ธ๋ค. โ ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ ํจํค์ง๊ฐ **์๊ธฐ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์์ผ๋ก ๋ง๋ค๊ฑฐ๋**
|
|
121
|
+
๋ฌธ์์ด์ ํ๋์ฝ๋ฉํด ์๋ค.
|
|
122
|
+
|
|
123
|
+
โ **์์ ๊ฐ์ฐ์ด๋ค** โ `LocaleMessageKey`ยท`register`ยท`getValue` ์ธ ์๊ทธ๋์ฒ๋ฅผ ํ๋๋
|
|
124
|
+
๊ฑด๋๋ฆฌ์ง ์๋๋ค. ํค ์ ๋์จ์ **์๋น์๊ฐ** ์ ๋ค๋ฆญ์ผ๋ก ์ ํ๋ฏ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํค์
์ ์ปค์ง์ง ์๋๋ค.
|
|
125
|
+
|
|
126
|
+
์กฐํ ์ฌ์ฌ(์ ํ ์ผ์น โ base ์ธ์ด โ `en`)๊ณผ `{name}` ์นํ์ ๊ฒ์ฆ ๋ฉ์์ง์ **๊ฐ์ ๊ตฌํ์
|
|
127
|
+
๊ณต์ ํ๋ค** โ ๋ ๋ฒ๋ก ๋๋ฉด ํ์ชฝ๋ง ๊ณ ์ณ์ง๋ค. ์ฌ์ฌ์ ์๋ ํค๋ **ํค ์์ฒด**๋ฅผ ๋๋ ค์ค๋ค
|
|
128
|
+
(์กฐ์ฉํ ๋น ๋ฌธ์์ด์ด ๋๋ ๊ฒ๋ณด๋ค ํ๋ฉด์ ๋๋ฌ๋๋ ํธ์ด ๋ซ๋ค).
|
|
129
|
+
|
|
130
|
+
- **`Theme.accent(seed)` โ ๋ธ๋๋ ์ ํ๋๋ก `--u-primary-*` ๋จํ๋ฅผ ๋ง๋ ๋ค.**
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
Theme.accent('#6A1B9A'); // ๋จํ 5๋จ + ๋ฉด ์ ๊ธ์์์ด ๊ณ์ฐ๋๋ค
|
|
134
|
+
Theme.accent(null); // ํด์ โ ์ํธ ๊ธฐ๋ณธ๊ฐ์ผ๋ก
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
์ข
์ ์๋ ์๋น์๊ฐ ๋จํ๋ฅผ **์์ผ๋ก ์ด ์ค ์ ์๊ณ **, ๊ทธ ๊ฐ์ด ๋๋น ๊ณ์ฝ์ ๋ง์กฑํ๋์ง๋
|
|
138
|
+
์๋ฌด๊ฒ๋ ํ์ธํ์ง ์์๋ค. ์ด์ **๊ณ์ฐํด์** ๋ฃ๋๋ค โ ๋ฉด ์ ๊ธ์ 4.5 ยท ๋ฐํ ์ ๊ธ์ 4.5 ยท
|
|
139
|
+
`-strong` โ `-color` ๊ตฌ๋ถ 1.20 ยท ๊ทธ๋ํฝ 3.0.
|
|
140
|
+
|
|
141
|
+
โ **CSS `color-mix()` ๋ง์ผ๋ก๋ ์ ๋๋ค** โ ๊ณ ์ ๋น์จ์ ๋ฐ์ ์๋์์ ๊นจ์ง๋ค(๋
ธ๋์
|
|
142
|
+
`-strong` ์ด ๋ฐํ ๋๋น **2.21**, ๊ธฐ์ค 4.5). ๋ชฉํ ๋๋น๊น์ง ์์ผ๋ ค๋ฉด ๋๋น๋ฅผ **๊ณ์ฐ**ํด์ผ
|
|
143
|
+
ํ๊ณ CSS ์๋ ๊ทธ ์๋จ์ด ์๋ค. โ ๊ณ์ฐ์ JS, ๊ฒฐ๊ณผ๋ง ์ปค์คํ
ํ๋กํผํฐ๋ก.
|
|
144
|
+
|
|
145
|
+
โ **ํ
๋ง๊ฐ ๋ฐ๋๋ฉด ๋ค์ ๊ณ์ฐ๋๋ค** โ ๋๋น ๋ชฉํ๊ฐ ยซ๋ฐํ ๊ธฐ์คยป์ด๋ผ ๋ผ์ดํธ์ ๋คํฌ๋ ๊ฐ์
|
|
146
|
+
์๋์์ **๋ค๋ฅธ ๋จํ**๋ฅผ ๊ฐ๋๋ค. ๋ฐํ์ ๊ณ์ฐ ์์ ์ `--u-bg-color` ๋ฅผ ์ฝ์ผ๋ฏ๋ก ์๋น์๊ฐ
|
|
147
|
+
๋ฐํ์ ๋ฎ์์ผ๋ฉด ๊ทธ ๊ฐ์ด ๊ธฐ์ค์ด ๋๋ค.
|
|
148
|
+
|
|
149
|
+
- **`u-skeleton` ์ `lines` โ ์ฌ๋ฌ ์ค ์๋ฆฌํ์์.**
|
|
150
|
+
|
|
151
|
+
```html
|
|
152
|
+
<u-skeleton lines="3" height="1em"></u-skeleton> <!-- ๋ง๋ 3๊ฐ ยท ๋ง์ง๋ง ์ค์ ์งง๊ฒ -->
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
์ข
์ ์๋ ๋ชฉ๋ก ํ ์คยท๋ฌธ๋จ ์๋ฆฌํ์์๋ฅผ ๋ง๋ค ๋ **ํญ๋ง ๋ค๋ฅธ ๋ง๋๋ฅผ ์์ผ๋ก ๋ฐ๋ณต**ํด์ผ ํ๋ค
|
|
156
|
+
(์ด ๋ฆฌํฌ ์์์๋ง 12์ฌ์ฉ์ฒ). ๋ง์ง๋ง ์ค์ ์งง๊ฒ ๊ทธ๋ฆฌ๋ ๊ฒ์ ์ฅ์์ด ์๋๋ผ **๋ฌธ๋จ์ ๋**์
|
|
157
|
+
๋ํ๋ด๋ ์ ํธ๋ค(`--skeleton-last-line-width`, ๊ธฐ๋ณธ 60%). ์ค ๊ฐ๊ฒฉ์
|
|
158
|
+
`--skeleton-line-gap`(๊ธฐ๋ณธ `0.5em`).
|
|
159
|
+
|
|
160
|
+
โ **๋จ์ผ ๋ง๋์ ๋ชจ์์ ๋ฐ๋์ง ์๋๋ค** โ `lines` ๊ฐ ์์ผ๋ฉด ์ข
์ ๊ณผ ์์ ํ ๊ฐ๊ณ , ํ๊ท
|
|
161
|
+
ํ
์คํธ๊ฐ ๊ทธ ๊ณ์ฝ์ ๊ฐ์ํ๋ค. `pulse`/`shimmer` ๋ ์ค๋ง๋ค ์ ์ฉ๋๋ฉฐ `prefers-reduced-motion`
|
|
162
|
+
์์ ํจ๊ป ๋ฉ์ถ๋ค.
|
|
163
|
+
|
|
164
|
+
- **์ค๋ฒ๋ ์ด๊ฐ ์ด๋ฆด ๋ `autofocus` ๋ฅผ ์กด์คํ๊ณ , ์์ผ๋ฉด ์ฒซ ์
๋ ฅ์ผ๋ก ๊ฐ๋ค** (`u-dialog`ยท`u-drawer`).
|
|
165
|
+
|
|
166
|
+
```html
|
|
167
|
+
<u-drawer closable>
|
|
168
|
+
<span slot="header">์ฃผ๋ฌธ ํธ์ง</span>
|
|
169
|
+
<u-input label="์๋" autofocus></u-input> <!-- ์ฌ๊ธฐ๋ก ๊ฐ๋ค -->
|
|
170
|
+
</u-drawer>
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
์ข
์ ์๋ `focus-trap` ์ ๊ธฐ๋ณธ๊ฐ(**์ฒซ tabbable ๋
ธ๋**)์ ๋งก๊ฒจ์ ธ ์์๋ค. ๊ทธ ๊ฒฐ๊ณผ โด`autofocus`
|
|
174
|
+
๊ฐ **๋ฌด์๋๊ณ **(focus-trap ์ ๊ทธ ์์ฑ์ ๋ณด์ง ์๋๋ค) โต**๋ฒํผ์ด ๋งํฌ์
์์ ์์ผ๋ฉด ๋ฒํผ์ด
|
|
175
|
+
ํฌ์ปค์ค๋ฅผ ๊ฐ์ ธ๊ฐ๋ค**(ํ์ธ/์ทจ์๊ฐ ๋จผ์ ์ค๋ ๋ค์ด์ผ๋ก๊ทธ๊ฐ ๊ทธ ๋ชจ์์ด๋ค โ ์ค์ธก: ์
๋ ฅ์ด ์๋๋ผ
|
|
176
|
+
์ฒซ ๋ฒํผ). โ ์์๋ฅผ ๊ณ์ฝ์ผ๋ก ๊ณ ์ ํ๋ค: `[autofocus]` โ ์ฒซ ์
๋ ฅ ์ปจํธ๋กค โ ์ฒซ tabbable.
|
|
177
|
+
|
|
178
|
+
โ **์๊ฐ์ ๋ณํ๊ฐ ์์ ์ ์๋ค** โ ๋ฒํผ์ด ์์ ์ค๋ ๋ค์ด์ผ๋ก๊ทธ๋ ์ด์ **์
๋ ฅ**์์ ์์ํ๋ค.
|
|
179
|
+
๊ธฐ์กด ๋์์ ์ํ๋ฉด ๊ทธ ๋ฒํผ์ `autofocus` ๋ฅผ ์ค๋ค.
|
|
180
|
+
|
|
181
|
+
- **`u-tag`ยท`u-badge` ์ `icon` โ ์ํ๊ฐ ยซ์ ์์ด๋ยป ๊ตฌ๋ถ๋๋ค.**
|
|
182
|
+
|
|
183
|
+
```html
|
|
184
|
+
<u-tag color="danger" icon>์คํจ</u-tag> <!-- โ ์ํ ์์ด์ฝ -->
|
|
185
|
+
<u-tag color="success" icon>์๋ฃ</u-tag> <!-- โ ์ํ ์์ด์ฝ -->
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
๋๋น ๊ณ์ฝ(1.20.0)์ ๊ฐ ์ํ์์ด **์๊ธฐ ๋ฐํ์์ ์ฝํ๋๊ฐ**๋ฅผ ์งํค์ง๋ง *๊ตฌ๋ณ๋๋๊ฐ* ๋ ์งํค์ง
|
|
189
|
+
์๋๋ค โ ์๊ฐ ์ด์(๋จ์ฑ ์ฝ 8%)์ด๋ ํ๋ฐฑ ์ธ์์์๋ ยซ์ฑ๊ณตยป๊ณผ ยซ์คํจยป๊ฐ ๊ฐ์ ํ์ ์์ฝ์ด ๋๋ค.
|
|
190
|
+
์ญํ ์ ์ถฉ๋ ๊ฒ์ฌ๊ฐ **์ ๊ณต๊ฐ์์**(ฮE) ์ธ์ด ๊ตฌ๋ถ์ ์ด ์ถ์ **๋ชจ์ ๊ณต๊ฐ์์** ์ธ์ด๋ค.
|
|
191
|
+
|
|
192
|
+
โ **์๋ฏธ๊ฐ ์๋ ์์๋ ๊ทธ๋ฆฌ์ง ์๋๋ค** โ ์ฅ์ ์ถ(`blue`ยท`purple` โฆ)์ *์ ์์ฒด*๋ฅผ ๋ปํ๊ณ
|
|
193
|
+
`neutral`ยท`primary` ๋ ์ํ๊ฐ ์๋๋ค. ์๋ ์๋ฏธ๋ฅผ ์์ด์ฝ์ผ๋ก ์ง์ด๋ด๋ฉด ๊ทธ ์์ด์ฝ์ด **์๋ชป๋
|
|
194
|
+
์ ๋ณด๋ฅผ ๋๋ฅธ๋ค**. `u-badge variant="dot"` ๋ ์ฝํ
์ธ ๋ฅผ ๋ ๋ํ์ง ์์ผ๋ฏ๋ก ๋์์ด ์๋๋ค.
|
|
195
|
+
|
|
196
|
+
โ **๋ ๋๋ ๊ฐ์ฐ์ด๋ค** โ `icon` ์ ์ฃผ์ง ์์ผ๋ฉด ์ข
์ ๊ทธ๋๋ก๋ค. ์์ด์ฝ์ **๋ด์ฅ ๋ฒ๋ค**์์ ์ค๋ฏ๋ก
|
|
197
|
+
๋คํธ์ํฌ๋ฅผ ํ์ง ์๋๋ค(์คํ๋ผ์ธ์์๋ ๊ทธ๋ ค์ง๋ค).
|
|
198
|
+
|
|
199
|
+
โ **๋ค๋ง ๋ฒ๋ค ํฌ๊ธฐ๋ ๊ฐ์ฐ์ด ์๋๋ค** โ `u-tag`ยท`u-badge` ๊ฐ `u-icon` ์ import ํ๊ณ , ๋ด๋ถ
|
|
200
|
+
์์ด์ฝ ๋ฒ๋ค์ **๋น๋ ์์ eager glob** ์ด๋ค. ๊ทธ๋์ `dist/components/tag/UTag.js` ๋ง deep
|
|
201
|
+
import ํ๋ ์๋น์๋ ์ด์ `UIcon`(2.3 KB)๊ณผ ๋ด์ฅ SVG ์ธํธ(**~9.8 KB**, 19์ข
)๋ฅผ ํจ๊ป ๋ฐ๋๋ค.
|
|
202
|
+
์ ์ฒด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๋ ์๋น์์๊ฒ๋ ๋ณํ๊ฐ ์๋ค(์ด๋ฏธ ํฌํจ๋ผ ์๋ค).
|
|
203
|
+
|
|
204
|
+
- **`u-skeleton` ์ `pulse`/`shimmer` ๊ฐ `prefers-reduced-motion: reduce` ์์ ๋ฉ์ถ๋ค.**
|
|
205
|
+
|
|
206
|
+
โ **์คํผ๋๋ ๊ทธ๋๋ก ๋๋ค** โ ๊ฐ๋ฆผ๊ธธ์ *๋ฉ์ถ๋ ๋ง๋*๊ฐ ์๋๋ผ **์ด๋ ์์ง์์ด ์๋ฏธ๋ฅผ
|
|
207
|
+
๋๋ฅด๋๊ฐ**์๋ค. ์คํผ๋์ ํ์ ์ **์ ํธ**๋ผ ์ฃฝ์ด๋ฉด ์งํ ์ฌ๋ถ๋ฅผ ์ ์ ์๋ค(WCAG 2.2.2 ๋
|
|
208
|
+
๋ก๋ฉ ํ์์ฒ๋ผ ์์ง์์ด ๋ณธ์ง์ธ ๊ฒ์ ์์ธ๋ก ๋๋ค). ์ค์ผ๋ ํค์ **๊ธฐ๋ณธ๊ฐ์ด ์ด๋ฏธ ์ ์ **์ด๊ณ
|
|
209
|
+
์ ์งํ ๋ธ๋ก์ด ยซ๋ก๋ฉ ์คยป์ ๊ทธ๋๋ก ๋๋ฅด๋ฏ๋ก `pulse`/`shimmer` ๋ ์ฅ์์ด๋ค.
|
|
210
|
+
|
|
211
|
+
โ ์ํธ์ reduce ๊ท์น(`--u-duration-*: 0ms`)์ **`animation` ์ ์ฐ๋ ์๋ฆฌ์ ๋ฟ์ง ์๋๋ค** โ
|
|
212
|
+
์ง์์๊ฐ ์ถ์ ๊ฒฝ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ์ปดํฌ๋ํธ์์ ๋ช
์์ ์ผ๋ก ๋ฉ์ถ๋ค.
|
|
213
|
+
|
|
214
|
+
### Changed
|
|
215
|
+
|
|
216
|
+
- โ **`u-dialog`ยท`u-drawer` ์ ๋ชฉ์ด 2px ์์์ง๋ค** โ `18px` ๋ฆฌํฐ๋ด โ `--u-text-subtitle-size`(16px).
|
|
217
|
+
|
|
218
|
+
์ข
์ ์๋ *๋ค์ด์ผ๋ก๊ทธ ์ ๋ชฉ 18 ยท ์ผ๋ฟ ์ ๋ชฉ 16* ์ผ๋ก **๊ฐ์ ์๊ณ๊ฐ ๋ ๊ฐ**์ด์๋ค. 18px ๋
|
|
219
|
+
ํ์
์ค์ผ์ผ 7๋จ์ **์๋ ๋จ**์ด๋ผ ๋ฆฌํฐ๋ด๋ก๋ง ์กด์ฌํ ์ ์์๊ณ , ๊ทธ๋์ ์๋น์๊ฐ ์ค์ผ์ผ์
|
|
220
|
+
์กฐ์จํด๋ ์ด ๋ ์๋ฆฌ๋ ๋ฐ๋ผ์ค์ง ์์๋ค.
|
|
221
|
+
|
|
222
|
+
โ **๋จ์ ๋๋ฆฌ์ง ์์๋ค** โ 18px ๋ฅผ ์๊ตฌํ๋ ํ์ดํฌ ์๋ฆฌ๋ ์ ์ **๋๋ฟ**์ด๊ณ (`u-copy-button`
|
|
223
|
+
์ 18px ๋ ์์ด์ฝ ํฌ๊ธฐ๋ค), ๋จ์ผ ์์๋ก ์ถ์ ๋๋ฆฌ๋ ๊ฒ์ ์ ์ ํ์ฅ์ด๋ค. ๊ฐ์ ํจํค์ง์
|
|
224
|
+
`u-alert` ๊ฐ ์ด๋ฏธ `subtitle` ์ ์ฐ๊ณ ์์ด **์ ๋ก๋ฅผ ๋ฐ๋๋ค**.
|
|
225
|
+
|
|
226
|
+
โ **ํค๋์ ๋ซ๊ธฐ ๋ฒํผ์ `font-size: inherit` ์ด๋ผ ํจ๊ป 2px ์์์ง๋ค.**
|
|
227
|
+
|
|
228
|
+
`tests/build/type-scale.test.ts` ๊ฐ *"์ ๋ชฉ ์๊ณ๋ฅผ ๊ฐ์ง ์ปดํฌ๋ํธ๊ฐ ๊ฐ์ ๋จ์ ์ฝ๋๊ฐ"* ๋ฅผ
|
|
229
|
+
๋์กฐํ๋ค โ ๋ฆฌํฐ๋ด๋ก ๋ค์ ๊ฐ๋ผ์ง๋ฉด ๋ฐํํ๋ค.
|
|
230
|
+
|
|
231
|
+
### Fixed
|
|
232
|
+
|
|
233
|
+
- **์ญํ ์์ ยซ์๋ฏธ ์ถฉ๋ยป ๊ฒ์ฌ๋ฅผ ๋๋ค**(`tests/build/role-color-collision.test.ts`).
|
|
234
|
+
๋๋น ๊ฒ์ฌ๋ ๊ฐ ์ญํ ์์ **์๊ธฐ ๋ฐํ์ ๋ํด** ์ฌ๋ฏ๋ก *"์ ์ฅ(primary)๊ณผ ์ญ์ (danger)๊ฐ
|
|
235
|
+
๊ฐ์ ์"* ์ธ ์ํ๋ **์์ชฝ ๋ค ํต๊ณผํ๋ค** โ ๋๋น๋ *์ฝํ๋๊ฐ*๋ฅผ ๋ฌป์ง *๊ตฌ๋ณ๋๋๊ฐ*๋ฅผ ๋ฌป์ง
|
|
236
|
+
์๋๋ค. ์ด์ ์ญํ ๋ผ๋ฆฌ์ ๊ฑฐ๋ฆฌ๋ฅผ CIELAB ฮE ๋ก ์ฐ๋ค(์๊ณ 20).
|
|
237
|
+
|
|
238
|
+
โ **`primary` ์ `info` ๋ ๊ธฐ๋ณธ๊ฐ์ด ์๋์ ์ผ๋ก ๊ฐ์ผ๋ฏ๋ก ๋ฉด์ **๋ค(๋ธ๋๋ฉ์ `primary` ๋ง
|
|
239
|
+
๋ฐ๊พผ๋ค). ๋ฉด์ ์์ **๊ทผ๊ฑฐ๊ฐ ์ํธ ์ฃผ์์ ๋จ์ ์๋์ง**๋ ํจ๊ป ์ฐ๋ค โ ๊ทผ๊ฑฐ ์๋ ๋ฉด์ ๊ฐ
|
|
240
|
+
์์ด๋ฉด ๊ฒ์ฌ๊ฐ ์๋ฌด๊ฒ๋ ์งํค์ง ์๊ฒ ๋๋ค.
|
|
241
|
+
|
|
242
|
+
์ค์ธก: ๋ฉด์ ์์ ๋บ ์ต์ ๊ฑฐ๋ฆฌ๊ฐ **38.7**(๋ผ์ดํธ `-strong` ์ warning/danger)์ด๋ผ ์ ์์ ์ธ
|
|
243
|
+
๋จํ ์กฐ์จ์๋ ๋ฐํํ์ง ์๋๋ค.
|
|
244
|
+
|
|
3
245
|
## [1.22.0] - 2026-08-03
|
|
4
246
|
|
|
5
247
|
### Added
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -76,7 +76,7 @@ npx skills add ./node_modules/@iyulab/components
|
|
|
76
76
|
|
|
77
77
|
**Navigation** โ `u-menu`, `u-menu-item`, `u-tab-panel`, `u-breadcrumb`, `u-breadcrumb-item`, `u-tree`, `u-tree-item`
|
|
78
78
|
|
|
79
|
-
**Layout & Display** โ `u-avatar`, `u-card`, `u-carousel`, `u-divider`, `u-icon`, `u-panel`, `u-split-panel`, `u-tag`
|
|
79
|
+
**Layout & Display** โ `u-avatar`, `u-card`, `u-carousel`, `u-divider`, `u-icon`, `u-panel`, `u-split-panel`, `u-tag`, `u-text`
|
|
80
80
|
|
|
81
81
|
## Theming
|
|
82
82
|
|
|
@@ -104,6 +104,38 @@ Theme.set('system');
|
|
|
104
104
|
|
|
105
105
|
์์ธํ ๋ด์ฉ์ [docs/theming.md](./docs/theming.md)๋ฅผ ์ฐธ๊ณ ํ์ธ์.
|
|
106
106
|
|
|
107
|
+
## Localization
|
|
108
|
+
|
|
109
|
+
๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ **์ค์ค๋ก ์์ฑํ๋ ๋ฌธ์์ด**(๊ฒ์ฆ ๋ฉ์์ง)์ ๋ด์ฅ ๋ก์ผ์ผ 14์ข
์ ๊ฐ๊ณ ์์ผ๋ฉฐ,
|
|
110
|
+
ํ์ฑ ๋ก์ผ์ผ ํ๋๋ก ์ ๋ถ ๋ฐ๋ผ์ต๋๋ค.
|
|
111
|
+
|
|
112
|
+
```ts
|
|
113
|
+
import { Locale } from '@iyulab/components';
|
|
114
|
+
|
|
115
|
+
Locale.set('ko'); // ํ์ฑ ๋ก์ผ์ผ
|
|
116
|
+
Locale.register('nl', { valueMissing: 'โฆ' }); // ๊ฒ์ฆ ๋ฉ์์ง override
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### ๋ค์์คํ์ด์ค โ ์์ ํจํค์งยท์ฑ์ ๋ฌธ์์ด (1.23.0~)
|
|
120
|
+
|
|
121
|
+
๊ฒ์ฆ ๋ฉ์์ง ํค์
์ **๋ซํ ์์ต๋๋ค**(9ํค). ๊ทธ ์์ ์๊ธฐ ๋ฌธ์์ด์ ๋ด์ผ๋ ค๋ฉด ๋ค์์คํ์ด์ค๋ฅผ
|
|
122
|
+
์๋๋ค โ ํค ์ ๋์จ์ **์ฐ๋ ์ชฝ์ด** ์ ํ๋ฏ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํค์
์ ์ปค์ง์ง ์์ต๋๋ค.
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
const t = Locale.namespace<'empty' | 'loading'>('u-data-view');
|
|
126
|
+
|
|
127
|
+
t.register('en', { empty: 'No data', loading: 'Loadingโฆ' }); // ๊ธฐ๋ณธ์ ์์ด
|
|
128
|
+
t.register('ko', { empty: '๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค' }); // ํ์ํ ์ธ์ด๋ง ์ถ๊ฐ
|
|
129
|
+
|
|
130
|
+
t.text('empty'); // ํ์ฑ ๋ก์ผ์ผ ๊ธฐ์ค
|
|
131
|
+
t.text('greet', { who: 'Ann' }); // {name} ์นํ
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
- ์กฐํ ์ฌ์ฌ์ ๊ฒ์ฆ ๋ฉ์์ง์ ๊ฐ์ต๋๋ค: **์ ํ ์ผ์น โ base ์ธ์ด(`ko-KR` โ `ko`) โ `en`**.
|
|
135
|
+
- ๊ฐ์ ์ด๋ฆ์ ๋ค์์คํ์ด์ค๋ **๊ฐ์ ์ ์ฅ์**๋ฅผ ๊ฐ๋ฆฌํต๋๋ค(๋ชจ๋ ์ด๋์ ๋ง๋ค์ด๋ ๋ฉ๋๋ค).
|
|
136
|
+
- ์ฌ์ฌ์ ์๋ ํค๋ **ํค ์์ฒด**๋ฅผ ๋๋ ค์ค๋๋ค โ ์กฐ์ฉํ ๋น ๋ฌธ์์ด์ด ๋์ง ์์ต๋๋ค.
|
|
137
|
+
- `Locale.set()` ํ๋๋ก ๊ฒ์ฆ ๋ฉ์์ง์ ๋ค์์คํ์ด์ค๊ฐ ํจ๊ป ์ ํ๋ฉ๋๋ค.
|
|
138
|
+
|
|
107
139
|
## Documentation
|
|
108
140
|
|
|
109
141
|
| ๋ฌธ์ | ๋ด์ฉ |
|
|
@@ -65,6 +65,24 @@ export declare abstract class UOverlayElement extends UElement {
|
|
|
65
65
|
requestClose(source: string): void;
|
|
66
66
|
/** ์ค๋ฒ๋ ์ด๊ฐ ์ด๋ฆด ๋ ์ค์ ์ ์ ์ฉํฉ๋๋ค. */
|
|
67
67
|
private setup;
|
|
68
|
+
/**
|
|
69
|
+
* ์ด๋ฆด ๋ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์์๋ฅผ ์ ํ๋ค โ **์
๋ ฅ์ ๋จผ์ ๋ณธ๋ค.**
|
|
70
|
+
*
|
|
71
|
+
* ์์: `[autofocus]` โ ์ฒซ ์
๋ ฅ ์ปจํธ๋กค โ (์์ผ๋ฉด) focus-trap ๊ธฐ๋ณธ๊ฐ(์ฒซ tabbable).
|
|
72
|
+
*
|
|
73
|
+
* ๐ด**๋ ๋ถ๊ธฐ๊ฐ ยซ๊ฐ๊ฐยป ๋ฌด์์ ํ๋์ง ๋๋๋ ค ์ฌ์ ๊ฐ๋๋ค** โ ์ด ํจ์๋ ๊ทธ ๊ธฐ๋ก์ด๋ค.
|
|
74
|
+
*
|
|
75
|
+
* `[autofocus]` โ `u-drawer` ์์ ๊ฐ๋ฆฐ๋ค. `focus-trap` ์ ๊ทธ ์์ฑ์ ์กด์คํ์ง ์๋๋ค
|
|
76
|
+
* (v7 `getInitialFocusNode` ๋ ยซ์ฒซ tabbableยป ๋ก ํด๋ฐฑํ๋ค).
|
|
77
|
+
* ์ฒซ ์
๋ ฅ ์ฐ์ โ `u-dialog` ์์ ๊ฐ๋ฆฐ๋ค. ๋ฒํผ์ด DOM ์์์ ์์ด๋ฉด ๊ธฐ๋ณธ๊ฐ์ **๋ฒํผ**์
|
|
78
|
+
* ์ก๋๋ค(์ค์ธก: ์ ๊ฑฐํ๋ฉด `button#b1`, ๋ณต์ํ๋ฉด `input`).
|
|
79
|
+
*
|
|
80
|
+
* โ **`u-drawer` ๋ง์ผ๋ก๋ ๋ ๋ฒ์งธ ๋ถ๊ธฐ๋ฅผ ํ๋ณํ ์ ์์๋ค** โ ์ฌ๋กฏ ๋ฐฐ์น ๋๋ฌธ์ ๊ธฐ๋ณธ๊ฐ๋
|
|
81
|
+
* ์ฐ์ฐํ ์ฒซ ์
๋ ฅ์ ๋จ์ด์ง๋ค. *"๋๋๋ ค๋ ํต๊ณผํ๋ค"* ๋ฅผ *"์ด ์ฝ๋๋ ์๋ฌด๊ฒ๋ ์ ํ๋ค"* ๋ก
|
|
82
|
+
* ์ฝ์ ๋ปํ๊ณ , **ํ๋ณํ๋ ์
๋ ฅ์ ์ฐพ์ ๋ค์์ผ** ๊ฐ๋ ธ๋ค.
|
|
83
|
+
* (`tests/browser/overlay-initial-focus.browser.test.ts` ๊ฐ ๋ ๋ค ๊ฐ์ํ๋ค.)
|
|
84
|
+
*/
|
|
85
|
+
private resolveInitialFocus;
|
|
68
86
|
/** ์ค๋ฒ๋ ์ด๊ฐ ๋ซํ ๋ ์ค์ ์ ํด์ ํฉ๋๋ค. */
|
|
69
87
|
private cleanup;
|
|
70
88
|
/** host ์์ฒด๋ฅผ ํด๋ฆญํ ๊ฒฝ์ฐ(๋ฐฑ๋๋กญ)๋ง ๋ซ๊ธฐ ์์ฒญ */
|
|
@@ -102,12 +102,36 @@ var UOverlayElement = class extends UElement {
|
|
|
102
102
|
clickOutsideDeactivates: false,
|
|
103
103
|
allowOutsideClick: true,
|
|
104
104
|
fallbackFocus: this,
|
|
105
|
+
initialFocus: () => this.resolveInitialFocus(),
|
|
105
106
|
trapStack: OverlayManager.trapStack,
|
|
106
107
|
tabbableOptions: { getShadowRoot: true }
|
|
107
108
|
});
|
|
108
109
|
this.focusTrap.activate();
|
|
109
110
|
}
|
|
110
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* ์ด๋ฆด ๋ ํฌ์ปค์ค๋ฅผ ๋ฐ์ ์์๋ฅผ ์ ํ๋ค โ **์
๋ ฅ์ ๋จผ์ ๋ณธ๋ค.**
|
|
114
|
+
*
|
|
115
|
+
* ์์: `[autofocus]` โ ์ฒซ ์
๋ ฅ ์ปจํธ๋กค โ (์์ผ๋ฉด) focus-trap ๊ธฐ๋ณธ๊ฐ(์ฒซ tabbable).
|
|
116
|
+
*
|
|
117
|
+
* ๐ด**๋ ๋ถ๊ธฐ๊ฐ ยซ๊ฐ๊ฐยป ๋ฌด์์ ํ๋์ง ๋๋๋ ค ์ฌ์ ๊ฐ๋๋ค** โ ์ด ํจ์๋ ๊ทธ ๊ธฐ๋ก์ด๋ค.
|
|
118
|
+
*
|
|
119
|
+
* `[autofocus]` โ `u-drawer` ์์ ๊ฐ๋ฆฐ๋ค. `focus-trap` ์ ๊ทธ ์์ฑ์ ์กด์คํ์ง ์๋๋ค
|
|
120
|
+
* (v7 `getInitialFocusNode` ๋ ยซ์ฒซ tabbableยป ๋ก ํด๋ฐฑํ๋ค).
|
|
121
|
+
* ์ฒซ ์
๋ ฅ ์ฐ์ โ `u-dialog` ์์ ๊ฐ๋ฆฐ๋ค. ๋ฒํผ์ด DOM ์์์ ์์ด๋ฉด ๊ธฐ๋ณธ๊ฐ์ **๋ฒํผ**์
|
|
122
|
+
* ์ก๋๋ค(์ค์ธก: ์ ๊ฑฐํ๋ฉด `button#b1`, ๋ณต์ํ๋ฉด `input`).
|
|
123
|
+
*
|
|
124
|
+
* โ **`u-drawer` ๋ง์ผ๋ก๋ ๋ ๋ฒ์งธ ๋ถ๊ธฐ๋ฅผ ํ๋ณํ ์ ์์๋ค** โ ์ฌ๋กฏ ๋ฐฐ์น ๋๋ฌธ์ ๊ธฐ๋ณธ๊ฐ๋
|
|
125
|
+
* ์ฐ์ฐํ ์ฒซ ์
๋ ฅ์ ๋จ์ด์ง๋ค. *"๋๋๋ ค๋ ํต๊ณผํ๋ค"* ๋ฅผ *"์ด ์ฝ๋๋ ์๋ฌด๊ฒ๋ ์ ํ๋ค"* ๋ก
|
|
126
|
+
* ์ฝ์ ๋ปํ๊ณ , **ํ๋ณํ๋ ์
๋ ฅ์ ์ฐพ์ ๋ค์์ผ** ๊ฐ๋ ธ๋ค.
|
|
127
|
+
* (`tests/browser/overlay-initial-focus.browser.test.ts` ๊ฐ ๋ ๋ค ๊ฐ์ํ๋ค.)
|
|
128
|
+
*/
|
|
129
|
+
resolveInitialFocus() {
|
|
130
|
+
const explicit = this.querySelector("[autofocus]");
|
|
131
|
+
if (explicit) return explicit;
|
|
132
|
+
const control = this.querySelector("input, select, textarea, u-input, u-textarea, u-select, u-checkbox, u-radio, u-switch, u-slider");
|
|
133
|
+
if (control) return control;
|
|
134
|
+
}
|
|
111
135
|
/** ์ค๋ฒ๋ ์ด๊ฐ ๋ซํ ๋ ์ค์ ์ ํด์ ํฉ๋๋ค. */
|
|
112
136
|
cleanup() {
|
|
113
137
|
this.focusTrap?.deactivate();
|
|
@@ -22,6 +22,11 @@ export declare class UBadge extends UElement {
|
|
|
22
22
|
color: BadgeColor;
|
|
23
23
|
/** ๋ถ๋ชจ ์์ ๊ธฐ์ค ๋ฐฐ์น ์์น (์ค์ ์ position: absolute) */
|
|
24
24
|
anchor?: BadgeAnchor;
|
|
25
|
+
/**
|
|
26
|
+
* ์ํ๋ฅผ **์๊ณผ ๋ฌด๊ดํ๊ฒ** ๋๋ฅด๋ ์์ด์ฝ์ ๋ถ์
๋๋ค(`info`ยท`success`ยท`warning`ยท`danger`).
|
|
27
|
+
* ์๋ฏธ๊ฐ ์๋ ์(`neutral`ยท`primary`ยท์ฅ์ ์ถ)๊ณผ `variant="dot"` ์์๋ ๊ทธ๋ฆฌ์ง ์์ต๋๋ค.
|
|
28
|
+
*/
|
|
29
|
+
icon: boolean;
|
|
25
30
|
render(): import('lit-html').TemplateResult<1> | typeof nothing;
|
|
26
31
|
}
|
|
27
32
|
declare global {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { UElement } from "../UElement.js";
|
|
2
2
|
import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
|
|
3
3
|
import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
|
|
4
|
+
import "../icon/UIcon.js";
|
|
5
|
+
import { statusIcon } from "../../utilities/statusIcon.js";
|
|
4
6
|
import { styles } from "./UBadge.styles.js";
|
|
5
7
|
import { html, nothing } from "lit";
|
|
6
8
|
import { customElement, property } from "lit/decorators.js";
|
|
@@ -10,14 +12,17 @@ var UBadge = class UBadge extends UElement {
|
|
|
10
12
|
super(..._args);
|
|
11
13
|
this.variant = "pill";
|
|
12
14
|
this.color = "blue";
|
|
15
|
+
this.icon = false;
|
|
13
16
|
}
|
|
14
17
|
static {
|
|
15
18
|
this.styles = [super.styles, styles];
|
|
16
19
|
}
|
|
17
20
|
render() {
|
|
18
21
|
if (this.variant === "dot") return nothing;
|
|
22
|
+
const iconName = this.icon ? statusIcon(this.color) : void 0;
|
|
19
23
|
return html`
|
|
20
24
|
<div class="base" part="base">
|
|
25
|
+
${iconName ? html`<u-icon class="icon" part="icon" lib="internal" name=${iconName}></u-icon>` : nothing}
|
|
21
26
|
<slot name="prefix"></slot>
|
|
22
27
|
<slot></slot>
|
|
23
28
|
<slot name="suffix"></slot>
|
|
@@ -37,6 +42,10 @@ __decorate([property({
|
|
|
37
42
|
type: String,
|
|
38
43
|
reflect: true
|
|
39
44
|
}), __decorateMetadata("design:type", Object)], UBadge.prototype, "anchor", void 0);
|
|
45
|
+
__decorate([property({
|
|
46
|
+
type: Boolean,
|
|
47
|
+
reflect: true
|
|
48
|
+
}), __decorateMetadata("design:type", Object)], UBadge.prototype, "icon", void 0);
|
|
40
49
|
UBadge = __decorate([customElement("u-badge")], UBadge);
|
|
41
50
|
//#endregion
|
|
42
51
|
export { UBadge };
|
|
@@ -140,6 +140,12 @@ var styles = css`
|
|
|
140
140
|
transform: translate(-50%, 50%);
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
+
/* ์ํ ์์ด์ฝ โ prefix ์ฌ๋กฏ๊ณผ ๊ฐ์ ๊ฐ๊ฒฉ์ ์ด๋ค. */
|
|
144
|
+
.icon {
|
|
145
|
+
flex-shrink: 0;
|
|
146
|
+
margin-right: 0.25em;
|
|
147
|
+
}
|
|
148
|
+
|
|
143
149
|
/* === Slots === */
|
|
144
150
|
::slotted([slot="prefix"]) {
|
|
145
151
|
margin-right: 0.25em;
|
|
@@ -89,7 +89,7 @@ var styles = css`
|
|
|
89
89
|
justify-content: space-between;
|
|
90
90
|
gap: var(--u-space-sm, 8px);
|
|
91
91
|
padding: var(--u-space-md, 12px) var(--u-space-lg, 16px);
|
|
92
|
-
font-size:
|
|
92
|
+
font-size: var(--u-text-subtitle-size, 16px);
|
|
93
93
|
font-weight: 600;
|
|
94
94
|
line-height: 1.3;
|
|
95
95
|
border-bottom: 1px solid var(--u-border-color, #E0E0E0);
|
|
@@ -77,7 +77,7 @@ var styles = css`
|
|
|
77
77
|
justify-content: space-between;
|
|
78
78
|
gap: var(--u-space-sm, 8px);
|
|
79
79
|
padding: var(--u-space-md, 12px) var(--u-space-lg, 16px);
|
|
80
|
-
font-size:
|
|
80
|
+
font-size: var(--u-text-subtitle-size, 16px);
|
|
81
81
|
font-weight: 600;
|
|
82
82
|
line-height: 1.3;
|
|
83
83
|
border-bottom: 1px solid var(--u-border-color, #E0E0E0);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { UElement } from '../UElement.js';
|
|
2
|
+
/**
|
|
3
|
+
* ์ ๋ชฉ์ ๋๋ฌ ๋ณธ๋ฌธ์ ์ ๊ณ ํด๋ ๋์คํด๋ก์ (์ต์คํฌ๋) ์ปดํฌ๋ํธ์
๋๋ค.
|
|
4
|
+
*
|
|
5
|
+
* @slot - ํผ์ณค์ ๋ ๋ณด์ด๋ ๋ณธ๋ฌธ
|
|
6
|
+
* @slot header - ์ ๋ชฉ ์์ญ์ ํต์งธ๋ก ๋์ฒดํ๋ ์ฝํ
์ธ (`label` ๋ณด๋ค ์ฐ์ )
|
|
7
|
+
* @slot suffix - ์ ๋ชฉ ์ฐ์ธก์ ๋์ด๋ ์ฝํ
์ธ (์ํ ๋ฐฐ์งยท๋ณด์กฐ ์ก์
๋ฑ)
|
|
8
|
+
*
|
|
9
|
+
* @csspart header - ์ ๋ชฉ ๋ฒํผ ์์ญ
|
|
10
|
+
* @csspart icon - ํผ์นจ ํ์ ์์ด์ฝ
|
|
11
|
+
* @csspart label - ์ ๋ชฉ ํ
์คํธ ์์ญ
|
|
12
|
+
* @csspart content - ๋ณธ๋ฌธ์ ๊ฐ์ธ๋ ์์ญ
|
|
13
|
+
*
|
|
14
|
+
* @event expand - ํผ์ณ์ง ๋ ๋ฐ์ (์ทจ์ ๊ฐ๋ฅ)
|
|
15
|
+
* @event collapse - ์ ํ ๋ ๋ฐ์ (์ทจ์ ๊ฐ๋ฅ)
|
|
16
|
+
*/
|
|
17
|
+
export declare class UExpander extends UElement {
|
|
18
|
+
static styles: import('lit').CSSResultGroup[];
|
|
19
|
+
/** ํผ์นจ ์ฌ๋ถ */
|
|
20
|
+
open: boolean;
|
|
21
|
+
/** ๋นํ์ฑํ ์ฌ๋ถ */
|
|
22
|
+
disabled: boolean;
|
|
23
|
+
/** ์ ๋ชฉ ํ
์คํธ (`header` ์ฌ๋กฏ์ด ์์ผ๋ฉด ๊ทธ์ชฝ์ด ์ด๊น๋๋ค) */
|
|
24
|
+
label: string;
|
|
25
|
+
render(): import('lit-html').TemplateResult<1>;
|
|
26
|
+
/** ํผ์นฉ๋๋ค. `expand` ์ด๋ฒคํธ๊ฐ ์ทจ์๋๋ฉด ์๋ฌด ์ผ๋ ํ์ง ์๊ณ `false` ๋ฅผ ๋๋ ค์ค๋๋ค. */
|
|
27
|
+
expand(): boolean;
|
|
28
|
+
/** ์ ์ต๋๋ค. `collapse` ์ด๋ฒคํธ๊ฐ ์ทจ์๋๋ฉด ์๋ฌด ์ผ๋ ํ์ง ์๊ณ `false` ๋ฅผ ๋๋ ค์ค๋๋ค. */
|
|
29
|
+
collapse(): boolean;
|
|
30
|
+
/** ํ์ฌ ์ํ์ ๋ฐ๋๋ก ๋ฐ๊ฟ๋๋ค. */
|
|
31
|
+
toggle(): boolean;
|
|
32
|
+
private handleClick;
|
|
33
|
+
}
|
|
34
|
+
declare global {
|
|
35
|
+
interface HTMLElementTagNameMap {
|
|
36
|
+
'u-expander': UExpander;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { UElement } from "../UElement.js";
|
|
2
|
+
import __decorateMetadata from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorateMetadata.js";
|
|
3
|
+
import __decorate from "../../_virtual/_@oxc-project_runtime@0.142.0/helpers/esm/decorate.js";
|
|
4
|
+
import "../icon/UIcon.js";
|
|
5
|
+
import { styles } from "./UExpander.styles.js";
|
|
6
|
+
import { html } from "lit";
|
|
7
|
+
import { customElement, property } from "lit/decorators.js";
|
|
8
|
+
//#region src/components/expander/UExpander.ts
|
|
9
|
+
var UExpander = class UExpander extends UElement {
|
|
10
|
+
constructor(..._args) {
|
|
11
|
+
super(..._args);
|
|
12
|
+
this.open = false;
|
|
13
|
+
this.disabled = false;
|
|
14
|
+
this.label = "";
|
|
15
|
+
this.handleClick = () => {
|
|
16
|
+
this.toggle();
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
static {
|
|
20
|
+
this.styles = [super.styles, styles];
|
|
21
|
+
}
|
|
22
|
+
render() {
|
|
23
|
+
return html`
|
|
24
|
+
<div class="frame">
|
|
25
|
+
<button class="header" part="header" type="button"
|
|
26
|
+
aria-expanded=${this.open ? "true" : "false"}
|
|
27
|
+
aria-controls="content"
|
|
28
|
+
?disabled=${this.disabled}
|
|
29
|
+
@click=${this.handleClick}
|
|
30
|
+
>
|
|
31
|
+
<u-icon class="icon" part="icon" lib="internal" name="chevron-right"></u-icon>
|
|
32
|
+
<span class="label" part="label"><slot name="header">${this.label}</slot></span>
|
|
33
|
+
<slot name="suffix"></slot>
|
|
34
|
+
</button>
|
|
35
|
+
|
|
36
|
+
<div class="content" part="content" id="content" role="region">
|
|
37
|
+
<div class="inner">
|
|
38
|
+
<div class="body"><slot></slot></div>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
`;
|
|
43
|
+
}
|
|
44
|
+
/** ํผ์นฉ๋๋ค. `expand` ์ด๋ฒคํธ๊ฐ ์ทจ์๋๋ฉด ์๋ฌด ์ผ๋ ํ์ง ์๊ณ `false` ๋ฅผ ๋๋ ค์ค๋๋ค. */
|
|
45
|
+
expand() {
|
|
46
|
+
if (this.disabled || this.open) return false;
|
|
47
|
+
if (this.fire("expand")) {
|
|
48
|
+
this.open = true;
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
/** ์ ์ต๋๋ค. `collapse` ์ด๋ฒคํธ๊ฐ ์ทจ์๋๋ฉด ์๋ฌด ์ผ๋ ํ์ง ์๊ณ `false` ๋ฅผ ๋๋ ค์ค๋๋ค. */
|
|
54
|
+
collapse() {
|
|
55
|
+
if (this.disabled || !this.open) return false;
|
|
56
|
+
if (this.fire("collapse")) {
|
|
57
|
+
this.open = false;
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
/** ํ์ฌ ์ํ์ ๋ฐ๋๋ก ๋ฐ๊ฟ๋๋ค. */
|
|
63
|
+
toggle() {
|
|
64
|
+
return this.open ? this.collapse() : this.expand();
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
__decorate([property({
|
|
68
|
+
type: Boolean,
|
|
69
|
+
reflect: true
|
|
70
|
+
}), __decorateMetadata("design:type", Object)], UExpander.prototype, "open", void 0);
|
|
71
|
+
__decorate([property({
|
|
72
|
+
type: Boolean,
|
|
73
|
+
reflect: true
|
|
74
|
+
}), __decorateMetadata("design:type", Object)], UExpander.prototype, "disabled", void 0);
|
|
75
|
+
__decorate([property({ type: String }), __decorateMetadata("design:type", Object)], UExpander.prototype, "label", void 0);
|
|
76
|
+
UExpander = __decorate([customElement("u-expander")], UExpander);
|
|
77
|
+
//#endregion
|
|
78
|
+
export { UExpander };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const styles: import('lit').CSSResult;
|