@iyulab/components 0.3.0 → 1.0.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 (475) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/README.md +42 -236
  3. package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.js +9 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorateMetadata.js +6 -0
  5. package/dist/_virtual/_glob-assets_raw/bell-fill.svg.d37c41d9.js +4 -0
  6. package/dist/_virtual/_glob-assets_raw/check-circle-fill.svg.51c33a2a.js +4 -0
  7. package/dist/_virtual/_glob-assets_raw/check-lg.svg.371c5e78.js +4 -0
  8. package/dist/_virtual/_glob-assets_raw/chevron-down.svg.0ccd06ea.js +4 -0
  9. package/dist/_virtual/_glob-assets_raw/chevron-left.svg.b4601050.js +4 -0
  10. package/dist/_virtual/_glob-assets_raw/chevron-right.svg.0711bb67.js +4 -0
  11. package/dist/_virtual/_glob-assets_raw/chevron-up.svg.ed917211.js +4 -0
  12. package/dist/_virtual/_glob-assets_raw/dark.css.e8ac080d.js +4 -0
  13. package/dist/_virtual/_glob-assets_raw/dash-lg.svg.b40b8b3a.js +4 -0
  14. package/dist/_virtual/_glob-assets_raw/exclamation-circle-fill.svg.dc8c523e.js +4 -0
  15. package/dist/_virtual/_glob-assets_raw/exclamation-triangle-fill.svg.7949d2c7.js +4 -0
  16. package/dist/_virtual/_glob-assets_raw/eye-slash.svg.240afafa.js +4 -0
  17. package/dist/_virtual/_glob-assets_raw/eye.svg.2e5e9c4c.js +4 -0
  18. package/dist/_virtual/_glob-assets_raw/info-circle-fill.svg.6580071d.js +4 -0
  19. package/dist/_virtual/_glob-assets_raw/light.css.637cb2f8.js +4 -0
  20. package/dist/_virtual/_glob-assets_raw/plus-lg.svg.294e9073.js +4 -0
  21. package/dist/_virtual/_glob-assets_raw/search.svg.0ba2012d.js +4 -0
  22. package/dist/_virtual/_glob-assets_raw/star-fill.svg.f24b5a2d.js +4 -0
  23. package/dist/_virtual/_glob-assets_raw/star.svg.4af61468.js +4 -0
  24. package/dist/_virtual/_glob-assets_raw/three-dots-vertical.svg.9fee78c5.js +4 -0
  25. package/dist/_virtual/_glob-assets_raw/three-dots.svg.6a7a5b23.js +4 -0
  26. package/dist/_virtual/_glob-assets_raw/x-lg.svg.f34b882c.js +4 -0
  27. package/dist/components/UDataElement.d.ts +44 -0
  28. package/dist/components/UDataElement.js +101 -0
  29. package/dist/components/UDataElement.styles.js +95 -0
  30. package/dist/components/UElement.d.ts +54 -0
  31. package/dist/components/UElement.js +83 -0
  32. package/dist/components/UElement.styles.js +67 -0
  33. package/dist/components/UFloatingElement.d.ts +125 -0
  34. package/dist/components/UFloatingElement.js +238 -0
  35. package/dist/components/UFloatingElement.styles.d.ts +9 -0
  36. package/dist/components/UFloatingElement.styles.js +46 -0
  37. package/dist/components/UFormControlElement.d.ts +57 -0
  38. package/dist/components/UFormControlElement.js +68 -0
  39. package/dist/components/UFormControlElement.styles.js +14 -0
  40. package/dist/components/UOverlayElement.d.ts +66 -0
  41. package/dist/components/UOverlayElement.js +123 -0
  42. package/dist/components/UOverlayElement.styles.d.ts +1 -0
  43. package/dist/components/UOverlayElement.styles.js +35 -0
  44. package/dist/components/alert/UAlert.d.ts +58 -3
  45. package/dist/components/alert/UAlert.js +115 -4
  46. package/dist/components/alert/UAlert.styles.js +73 -48
  47. package/dist/components/avatar/UAvatar.d.ts +27 -0
  48. package/dist/components/avatar/UAvatar.js +42 -0
  49. package/dist/components/avatar/UAvatar.styles.d.ts +1 -0
  50. package/dist/components/avatar/UAvatar.styles.js +45 -0
  51. package/dist/components/badge/UBadge.d.ts +28 -0
  52. package/dist/components/badge/UBadge.js +40 -0
  53. package/dist/components/badge/UBadge.styles.d.ts +1 -0
  54. package/dist/components/badge/UBadge.styles.js +113 -0
  55. package/dist/components/breadcrumb/UBreadcrumb.d.ts +24 -0
  56. package/dist/components/breadcrumb/UBreadcrumb.js +65 -0
  57. package/dist/components/breadcrumb/UBreadcrumb.styles.d.ts +1 -0
  58. package/dist/components/breadcrumb/UBreadcrumb.styles.js +37 -0
  59. package/dist/components/breadcrumb-item/UBreadcrumbItem.d.ts +30 -0
  60. package/dist/components/breadcrumb-item/UBreadcrumbItem.js +52 -0
  61. package/dist/components/breadcrumb-item/UBreadcrumbItem.styles.d.ts +1 -0
  62. package/dist/components/breadcrumb-item/UBreadcrumbItem.styles.js +41 -0
  63. package/dist/components/button/UButton.d.ts +46 -3
  64. package/dist/components/button/UButton.js +104 -4
  65. package/dist/components/button/UButton.styles.js +121 -48
  66. package/dist/components/button-group/UButtonGroup.d.ts +28 -0
  67. package/dist/components/button-group/UButtonGroup.js +93 -0
  68. package/dist/components/button-group/UButtonGroup.styles.d.ts +1 -0
  69. package/dist/components/button-group/UButtonGroup.styles.js +34 -0
  70. package/dist/components/card/UCard.d.ts +30 -3
  71. package/dist/components/card/UCard.js +61 -4
  72. package/dist/components/card/UCard.styles.js +13 -12
  73. package/dist/components/carousel/UCarousel.d.ts +65 -3
  74. package/dist/components/carousel/UCarousel.js +219 -2
  75. package/dist/components/carousel/UCarousel.styles.js +32 -33
  76. package/dist/components/checkbox/UCheckbox.d.ts +39 -0
  77. package/dist/components/checkbox/UCheckbox.js +88 -0
  78. package/dist/components/checkbox/UCheckbox.styles.d.ts +1 -0
  79. package/dist/components/checkbox/UCheckbox.styles.js +211 -0
  80. package/dist/components/chip/UChip.d.ts +43 -0
  81. package/dist/components/chip/UChip.js +103 -0
  82. package/dist/components/chip/UChip.styles.d.ts +1 -0
  83. package/dist/components/chip/UChip.styles.js +31 -0
  84. package/dist/components/dialog/UDialog.d.ts +29 -2
  85. package/dist/components/dialog/UDialog.js +66 -4
  86. package/dist/components/dialog/UDialog.styles.js +90 -39
  87. package/dist/components/divider/UDivider.d.ts +27 -2
  88. package/dist/components/divider/UDivider.js +45 -4
  89. package/dist/components/divider/UDivider.styles.js +80 -10
  90. package/dist/components/drawer/UDrawer.d.ts +25 -3
  91. package/dist/components/drawer/UDrawer.js +54 -4
  92. package/dist/components/drawer/UDrawer.styles.js +67 -60
  93. package/dist/components/field/UField.d.ts +31 -0
  94. package/dist/components/field/UField.js +64 -0
  95. package/dist/components/field/UField.styles.d.ts +1 -0
  96. package/dist/components/field/UField.styles.js +47 -0
  97. package/dist/components/form/UForm.d.ts +38 -2
  98. package/dist/components/form/UForm.js +105 -4
  99. package/dist/components/form/UForm.styles.js +5 -5
  100. package/dist/components/icon/UIcon.d.ts +23 -4
  101. package/dist/components/icon/UIcon.js +55 -4
  102. package/dist/components/icon/UIcon.styles.js +5 -5
  103. package/dist/components/icon-button/UIconButton.d.ts +48 -0
  104. package/dist/components/icon-button/UIconButton.js +88 -0
  105. package/dist/components/icon-button/UIconButton.styles.d.ts +1 -0
  106. package/dist/components/icon-button/UIconButton.styles.js +24 -0
  107. package/dist/components/input/UInput.d.ts +95 -3
  108. package/dist/components/input/UInput.js +258 -2
  109. package/dist/components/input/UInput.styles.js +120 -86
  110. package/dist/components/menu/UMenu.d.ts +41 -3
  111. package/dist/components/menu/UMenu.js +178 -4
  112. package/dist/components/menu/UMenu.styles.js +16 -30
  113. package/dist/components/menu-item/UMenuItem.d.ts +48 -2
  114. package/dist/components/menu-item/UMenuItem.js +159 -2
  115. package/dist/components/menu-item/UMenuItem.styles.js +120 -34
  116. package/dist/components/option/UOption.d.ts +42 -0
  117. package/dist/components/option/UOption.js +64 -0
  118. package/dist/components/option/UOption.styles.d.ts +1 -0
  119. package/dist/components/option/UOption.styles.js +132 -0
  120. package/dist/components/panel/UPanel.d.ts +22 -0
  121. package/dist/components/panel/UPanel.js +36 -0
  122. package/dist/components/panel/UPanel.styles.d.ts +1 -0
  123. package/dist/components/panel/UPanel.styles.js +14 -0
  124. package/dist/components/popover/UPopover.d.ts +69 -0
  125. package/dist/components/popover/UPopover.js +235 -0
  126. package/dist/components/popover/UPopover.styles.d.ts +1 -0
  127. package/dist/components/popover/UPopover.styles.js +9 -0
  128. package/dist/components/progress-bar/UProgressBar.d.ts +46 -2
  129. package/dist/components/progress-bar/UProgressBar.js +94 -2
  130. package/dist/components/progress-bar/UProgressBar.styles.js +110 -36
  131. package/dist/components/progress-ring/UProgressRing.d.ts +46 -3
  132. package/dist/components/progress-ring/UProgressRing.js +152 -2
  133. package/dist/components/progress-ring/UProgressRing.styles.js +88 -25
  134. package/dist/components/radio/URadio.d.ts +41 -0
  135. package/dist/components/radio/URadio.js +151 -0
  136. package/dist/components/radio/URadio.styles.d.ts +1 -0
  137. package/dist/components/radio/URadio.styles.js +111 -0
  138. package/dist/components/rating/URating.d.ts +48 -0
  139. package/dist/components/rating/URating.js +196 -0
  140. package/dist/components/rating/URating.styles.d.ts +1 -0
  141. package/dist/components/rating/URating.styles.js +55 -0
  142. package/dist/components/select/USelect.d.ts +70 -0
  143. package/dist/components/select/USelect.js +315 -0
  144. package/dist/components/select/USelect.styles.d.ts +1 -0
  145. package/dist/components/select/USelect.styles.js +200 -0
  146. package/dist/components/skeleton/USkeleton.d.ts +27 -3
  147. package/dist/components/skeleton/USkeleton.js +37 -4
  148. package/dist/components/skeleton/USkeleton.styles.js +15 -18
  149. package/dist/components/slider/USlider.d.ts +88 -0
  150. package/dist/components/slider/USlider.js +286 -0
  151. package/dist/components/slider/USlider.styles.d.ts +1 -0
  152. package/dist/components/slider/USlider.styles.js +125 -0
  153. package/dist/components/spinner/USpinner.d.ts +23 -2
  154. package/dist/components/spinner/USpinner.js +37 -3
  155. package/dist/components/spinner/USpinner.styles.js +34 -13
  156. package/dist/components/split-panel/USplitPanel.d.ts +49 -2
  157. package/dist/components/split-panel/USplitPanel.js +239 -3
  158. package/dist/components/split-panel/USplitPanel.styles.js +47 -15
  159. package/dist/components/switch/USwitch.d.ts +43 -0
  160. package/dist/components/switch/USwitch.js +80 -0
  161. package/dist/components/switch/USwitch.styles.d.ts +1 -0
  162. package/dist/components/switch/USwitch.styles.js +191 -0
  163. package/dist/components/tab/UTab.d.ts +31 -0
  164. package/dist/components/tab/UTab.js +68 -0
  165. package/dist/components/tab/UTab.styles.d.ts +1 -0
  166. package/dist/components/tab/UTab.styles.js +46 -0
  167. package/dist/components/tab-panel/UTabPanel.d.ts +45 -0
  168. package/dist/components/tab-panel/UTabPanel.js +150 -0
  169. package/dist/components/tab-panel/UTabPanel.styles.d.ts +1 -0
  170. package/dist/components/tab-panel/UTabPanel.styles.js +201 -0
  171. package/dist/components/tag/UTag.d.ts +26 -3
  172. package/dist/components/tag/UTag.js +41 -4
  173. package/dist/components/tag/UTag.styles.js +206 -60
  174. package/dist/components/textarea/UTextarea.d.ts +65 -0
  175. package/dist/components/textarea/UTextarea.js +145 -0
  176. package/dist/components/textarea/UTextarea.styles.d.ts +1 -0
  177. package/dist/components/textarea/UTextarea.styles.js +157 -0
  178. package/dist/components/tooltip/UTooltip.d.ts +28 -2
  179. package/dist/components/tooltip/UTooltip.js +104 -4
  180. package/dist/components/tooltip/UTooltip.styles.js +10 -12
  181. package/dist/components/tree/UTree.d.ts +62 -2
  182. package/dist/components/tree/UTree.js +308 -3
  183. package/dist/components/tree/UTree.styles.js +13 -19
  184. package/dist/components/tree-item/UTreeItem.d.ts +61 -2
  185. package/dist/components/tree-item/UTreeItem.js +191 -2
  186. package/dist/components/tree-item/UTreeItem.styles.js +96 -37
  187. package/dist/events/CheckEvent.d.ts +7 -0
  188. package/dist/events/CollapseEvent.d.ts +7 -0
  189. package/dist/events/ExpandEvent.d.ts +7 -0
  190. package/dist/events/HideEvent.d.ts +7 -0
  191. package/dist/events/NavigateEvent.d.ts +7 -0
  192. package/dist/events/PickEvent.d.ts +18 -0
  193. package/dist/events/RemoveEvent.d.ts +7 -0
  194. package/dist/events/ShiftEvent.d.ts +16 -0
  195. package/dist/events/ShowEvent.d.ts +7 -0
  196. package/dist/index.d.ts +41 -8
  197. package/dist/index.js +56 -46
  198. package/dist/react/UAlert.d.ts +13 -0
  199. package/dist/{react-components → react}/UAlert.js +5 -2
  200. package/dist/react/UAvatar.d.ts +9 -0
  201. package/dist/react/UAvatar.js +10 -0
  202. package/dist/react/UBadge.d.ts +9 -0
  203. package/dist/react/UBadge.js +10 -0
  204. package/dist/react/UBreadcrumb.d.ts +9 -0
  205. package/dist/react/UBreadcrumb.js +10 -0
  206. package/dist/react/UBreadcrumbItem.d.ts +11 -0
  207. package/dist/react/UBreadcrumbItem.js +12 -0
  208. package/dist/{react-components → react}/UButton.d.ts +3 -2
  209. package/dist/{react-components → react}/UButton.js +2 -2
  210. package/dist/react/UButtonGroup.d.ts +9 -0
  211. package/dist/react/UButtonGroup.js +10 -0
  212. package/dist/{react-components → react}/UCard.d.ts +3 -2
  213. package/dist/{react-components → react}/UCard.js +2 -2
  214. package/dist/{react-components → react}/UCarousel.d.ts +3 -2
  215. package/dist/{react-components → react}/UCarousel.js +2 -2
  216. package/dist/react/UCheckbox.d.ts +9 -0
  217. package/dist/react/UCheckbox.js +10 -0
  218. package/dist/react/UChip.d.ts +13 -0
  219. package/dist/react/UChip.js +13 -0
  220. package/dist/{react-components → react}/UDialog.d.ts +3 -2
  221. package/dist/{react-components → react}/UDialog.js +2 -2
  222. package/dist/{react-components → react}/UDivider.d.ts +3 -2
  223. package/dist/{react-components → react}/UDivider.js +2 -2
  224. package/dist/{react-components → react}/UDrawer.d.ts +3 -2
  225. package/dist/{react-components → react}/UDrawer.js +2 -2
  226. package/dist/react/UField.d.ts +9 -0
  227. package/dist/react/UField.js +10 -0
  228. package/dist/react/UForm.d.ts +10 -0
  229. package/dist/{react-components → react}/UForm.js +4 -2
  230. package/dist/{react-components → react}/UIcon.d.ts +3 -2
  231. package/dist/{react-components → react}/UIcon.js +2 -2
  232. package/dist/react/UIconButton.d.ts +9 -0
  233. package/dist/react/UIconButton.js +10 -0
  234. package/dist/react/UInput.d.ts +11 -0
  235. package/dist/{react-components → react}/UInput.js +5 -2
  236. package/dist/react/UMenu.d.ts +10 -0
  237. package/dist/{react-components → react}/UMenu.js +4 -2
  238. package/dist/react/UMenuItem.d.ts +11 -0
  239. package/dist/{react-components → react}/UMenuItem.js +4 -2
  240. package/dist/react/UOption.d.ts +9 -0
  241. package/dist/react/UOption.js +10 -0
  242. package/dist/react/UPanel.d.ts +9 -0
  243. package/dist/react/UPanel.js +10 -0
  244. package/dist/react/UPopover.d.ts +11 -0
  245. package/dist/react/UPopover.js +13 -0
  246. package/dist/react/UProgressBar.d.ts +9 -0
  247. package/dist/{react-components → react}/UProgressBar.js +2 -2
  248. package/dist/react/UProgressRing.d.ts +9 -0
  249. package/dist/{react-components → react}/UProgressRing.js +2 -2
  250. package/dist/react/URadio.d.ts +10 -0
  251. package/dist/react/URadio.js +12 -0
  252. package/dist/react/URating.d.ts +10 -0
  253. package/dist/react/URating.js +12 -0
  254. package/dist/react/USelect.d.ts +10 -0
  255. package/dist/react/USelect.js +12 -0
  256. package/dist/{react-components → react}/USkeleton.d.ts +3 -2
  257. package/dist/{react-components → react}/USkeleton.js +2 -2
  258. package/dist/react/USlider.d.ts +10 -0
  259. package/dist/react/USlider.js +12 -0
  260. package/dist/{react-components → react}/USpinner.d.ts +3 -2
  261. package/dist/{react-components → react}/USpinner.js +2 -2
  262. package/dist/react/USplitPanel.d.ts +13 -0
  263. package/dist/{react-components → react}/USplitPanel.js +6 -2
  264. package/dist/react/USwitch.d.ts +10 -0
  265. package/dist/react/USwitch.js +12 -0
  266. package/dist/react/UTab.d.ts +11 -0
  267. package/dist/react/UTab.js +12 -0
  268. package/dist/react/UTabPanel.d.ts +9 -0
  269. package/dist/react/UTabPanel.js +10 -0
  270. package/dist/{react-components → react}/UTag.d.ts +3 -2
  271. package/dist/{react-components → react}/UTag.js +2 -2
  272. package/dist/react/UTextarea.d.ts +11 -0
  273. package/dist/react/UTextarea.js +13 -0
  274. package/dist/react/UTooltip.d.ts +11 -0
  275. package/dist/{react-components → react}/UTooltip.js +5 -2
  276. package/dist/react/UTree.d.ts +10 -0
  277. package/dist/{react-components → react}/UTree.js +4 -2
  278. package/dist/react/UTreeItem.d.ts +17 -0
  279. package/dist/{react-components → react}/UTreeItem.js +7 -2
  280. package/dist/{react-components → react}/index.d.ts +40 -27
  281. package/dist/{react-components → react}/index.js +40 -20
  282. package/dist/{assets/styles → styles}/dark.css +68 -3
  283. package/dist/{assets/styles → styles}/light.css +68 -3
  284. package/dist/utilities/BrowserStorage.d.ts +2 -1
  285. package/dist/utilities/BrowserStorage.js +69 -86
  286. package/dist/utilities/Dialog.d.ts +83 -0
  287. package/dist/utilities/Dialog.js +141 -0
  288. package/dist/utilities/OverlayManager.d.ts +37 -0
  289. package/dist/utilities/OverlayManager.js +68 -0
  290. package/dist/utilities/Theme.js +134 -141
  291. package/dist/utilities/Toast.d.ts +45 -0
  292. package/dist/utilities/Toast.js +114 -0
  293. package/dist/utilities/converters.d.ts +44 -1
  294. package/dist/utilities/converters.js +112 -14
  295. package/dist/utilities/elements.d.ts +23 -0
  296. package/dist/utilities/elements.js +67 -16
  297. package/dist/utilities/icons.d.ts +67 -0
  298. package/dist/utilities/icons.js +200 -0
  299. package/dist/utilities/sanitizers.d.ts +35 -0
  300. package/dist/utilities/sanitizers.js +75 -0
  301. package/package.json +24 -21
  302. package/plugins/vite-plugin-glob-resolve.d.ts +12 -0
  303. package/plugins/vite-plugin-glob-resolve.js +66 -0
  304. package/plugins/vite-plugin-react-wrapper.d.ts +12 -0
  305. package/plugins/vite-plugin-react-wrapper.js +206 -0
  306. package/skills/iyulab-components/SKILL.md +138 -0
  307. package/skills/iyulab-components/references/components/alert.md +74 -0
  308. package/skills/iyulab-components/references/components/avatar.md +41 -0
  309. package/skills/iyulab-components/references/components/badge.md +38 -0
  310. package/skills/iyulab-components/references/components/breadcrumb.md +75 -0
  311. package/skills/iyulab-components/references/components/button-group.md +38 -0
  312. package/skills/iyulab-components/references/components/button.md +56 -0
  313. package/skills/iyulab-components/references/components/card.md +53 -0
  314. package/skills/iyulab-components/references/components/carousel.md +63 -0
  315. package/skills/iyulab-components/references/components/checkbox.md +70 -0
  316. package/skills/iyulab-components/references/components/chip.md +64 -0
  317. package/skills/iyulab-components/references/components/dialog.md +71 -0
  318. package/skills/iyulab-components/references/components/divider.md +56 -0
  319. package/skills/iyulab-components/references/components/drawer.md +63 -0
  320. package/skills/iyulab-components/references/components/field.md +42 -0
  321. package/skills/iyulab-components/references/components/form.md +68 -0
  322. package/skills/iyulab-components/references/components/icon-button.md +56 -0
  323. package/skills/iyulab-components/references/components/icon.md +49 -0
  324. package/skills/iyulab-components/references/components/input.md +95 -0
  325. package/skills/iyulab-components/references/components/menu.md +106 -0
  326. package/skills/iyulab-components/references/components/option.md +70 -0
  327. package/skills/iyulab-components/references/components/panel.md +38 -0
  328. package/skills/iyulab-components/references/components/popover.md +62 -0
  329. package/skills/iyulab-components/references/components/progress-bar.md +61 -0
  330. package/skills/iyulab-components/references/components/progress-ring.md +58 -0
  331. package/skills/iyulab-components/references/components/radio.md +67 -0
  332. package/skills/iyulab-components/references/components/rating.md +74 -0
  333. package/skills/iyulab-components/references/components/select.md +86 -0
  334. package/skills/iyulab-components/references/components/skeleton.md +46 -0
  335. package/skills/iyulab-components/references/components/slider.md +89 -0
  336. package/skills/iyulab-components/references/components/spinner.md +47 -0
  337. package/skills/iyulab-components/references/components/split-panel.md +65 -0
  338. package/skills/iyulab-components/references/components/switch.md +81 -0
  339. package/skills/iyulab-components/references/components/tab-panel.md +93 -0
  340. package/skills/iyulab-components/references/components/tag.md +55 -0
  341. package/skills/iyulab-components/references/components/textarea.md +67 -0
  342. package/skills/iyulab-components/references/components/tooltip.md +58 -0
  343. package/skills/iyulab-components/references/components/tree.md +128 -0
  344. package/skills/iyulab-components/references/extensions/data.md +60 -0
  345. package/skills/iyulab-components/references/extensions/element.md +57 -0
  346. package/skills/iyulab-components/references/extensions/floating.md +60 -0
  347. package/skills/iyulab-components/references/extensions/form-control.md +79 -0
  348. package/skills/iyulab-components/references/extensions/overlay.md +76 -0
  349. package/skills/iyulab-components/references/usage.md +216 -0
  350. package/skills/iyulab-components/references/utilities/browser-storage.md +54 -0
  351. package/skills/iyulab-components/references/utilities/converters.md +42 -0
  352. package/skills/iyulab-components/references/utilities/dialog.md +75 -0
  353. package/skills/iyulab-components/references/utilities/elements.md +55 -0
  354. package/skills/iyulab-components/references/utilities/icons.md +53 -0
  355. package/skills/iyulab-components/references/utilities/overlay-manager.md +34 -0
  356. package/skills/iyulab-components/references/utilities/sanitizers.md +32 -0
  357. package/skills/iyulab-components/references/utilities/theme.md +45 -0
  358. package/skills/iyulab-components/references/utilities/toast.md +58 -0
  359. package/dist/assets/icons/arrow-down.svg.js +0 -3
  360. package/dist/assets/icons/arrow-repeat.svg.js +0 -3
  361. package/dist/assets/icons/arrow-up.svg.js +0 -3
  362. package/dist/assets/icons/ban.svg.js +0 -3
  363. package/dist/assets/icons/bell-fill.svg.js +0 -3
  364. package/dist/assets/icons/box-arrow-up-right.svg.js +0 -3
  365. package/dist/assets/icons/check-circle-fill.svg.js +0 -3
  366. package/dist/assets/icons/check-lg.svg.js +0 -3
  367. package/dist/assets/icons/chevron-down.svg.js +0 -3
  368. package/dist/assets/icons/chevron-left.svg.js +0 -3
  369. package/dist/assets/icons/chevron-right.svg.js +0 -3
  370. package/dist/assets/icons/chevron-up.svg.js +0 -3
  371. package/dist/assets/icons/copy.svg.js +0 -3
  372. package/dist/assets/icons/dash-lg.svg.js +0 -3
  373. package/dist/assets/icons/exclamation-circle-fill.svg.js +0 -3
  374. package/dist/assets/icons/exclamation-triangle-fill.svg.js +0 -3
  375. package/dist/assets/icons/eye-slash.svg.js +0 -3
  376. package/dist/assets/icons/eye.svg.js +0 -3
  377. package/dist/assets/icons/file-earmark.svg.js +0 -3
  378. package/dist/assets/icons/flag.svg.js +0 -3
  379. package/dist/assets/icons/globe.svg.js +0 -3
  380. package/dist/assets/icons/hand-thumbs-down-fill.svg.js +0 -3
  381. package/dist/assets/icons/hand-thumbs-down.svg.js +0 -3
  382. package/dist/assets/icons/hand-thumbs-up-fill.svg.js +0 -3
  383. package/dist/assets/icons/hand-thumbs-up.svg.js +0 -3
  384. package/dist/assets/icons/info-circle-fill.svg.js +0 -3
  385. package/dist/assets/icons/lightbulb-fill.svg.js +0 -3
  386. package/dist/assets/icons/lightbulb-off.svg.js +0 -3
  387. package/dist/assets/icons/lightbulb.svg.js +0 -3
  388. package/dist/assets/icons/mic-fill.svg.js +0 -3
  389. package/dist/assets/icons/mic-mute-fill.svg.js +0 -3
  390. package/dist/assets/icons/paperclip.svg.js +0 -3
  391. package/dist/assets/icons/pencil-square.svg.js +0 -3
  392. package/dist/assets/icons/plus-lg.svg.js +0 -3
  393. package/dist/assets/icons/search.svg.js +0 -3
  394. package/dist/assets/icons/share.svg.js +0 -3
  395. package/dist/assets/icons/stop-circle.svg.js +0 -3
  396. package/dist/assets/icons/tools.svg.js +0 -3
  397. package/dist/assets/icons/x-lg.svg.js +0 -3
  398. package/dist/assets/styles/dark.css.js +0 -3
  399. package/dist/assets/styles/light.css.js +0 -3
  400. package/dist/components/BaseElement.d.ts +0 -33
  401. package/dist/components/BaseElement.js +0 -59
  402. package/dist/components/BaseElement.styles.js +0 -28
  403. package/dist/components/FloatingElement.d.ts +0 -104
  404. package/dist/components/FloatingElement.js +0 -195
  405. package/dist/components/FloatingElement.styles.js +0 -23
  406. package/dist/components/ModalElement.d.ts +0 -70
  407. package/dist/components/ModalElement.js +0 -144
  408. package/dist/components/ModalElement.styles.js +0 -29
  409. package/dist/components/alert/UAlert.component.d.ts +0 -40
  410. package/dist/components/alert/UAlert.component.js +0 -146
  411. package/dist/components/button/UButton.component.d.ts +0 -23
  412. package/dist/components/button/UButton.component.js +0 -72
  413. package/dist/components/card/UCard.component.d.ts +0 -21
  414. package/dist/components/card/UCard.component.js +0 -66
  415. package/dist/components/carousel/UCarousel.component.d.ts +0 -67
  416. package/dist/components/carousel/UCarousel.component.js +0 -243
  417. package/dist/components/dialog/UDialog.component.d.ts +0 -17
  418. package/dist/components/dialog/UDialog.component.js +0 -70
  419. package/dist/components/divider/UDivider.component.d.ts +0 -10
  420. package/dist/components/divider/UDivider.component.js +0 -30
  421. package/dist/components/drawer/UDrawer.component.d.ts +0 -18
  422. package/dist/components/drawer/UDrawer.component.js +0 -64
  423. package/dist/components/form/UForm.component.d.ts +0 -24
  424. package/dist/components/form/UForm.component.js +0 -76
  425. package/dist/components/icon/UIcon.component.d.ts +0 -29
  426. package/dist/components/icon/UIcon.component.js +0 -57
  427. package/dist/components/input/UInput.component.d.ts +0 -92
  428. package/dist/components/input/UInput.component.js +0 -267
  429. package/dist/components/menu/UMenu.component.d.ts +0 -67
  430. package/dist/components/menu/UMenu.component.js +0 -338
  431. package/dist/components/menu-item/UMenuItem.component.d.ts +0 -25
  432. package/dist/components/menu-item/UMenuItem.component.js +0 -111
  433. package/dist/components/progress-bar/UProgressBar.component.d.ts +0 -27
  434. package/dist/components/progress-bar/UProgressBar.component.js +0 -99
  435. package/dist/components/progress-ring/UProgressRing.component.d.ts +0 -33
  436. package/dist/components/progress-ring/UProgressRing.component.js +0 -114
  437. package/dist/components/skeleton/USkeleton.component.d.ts +0 -22
  438. package/dist/components/skeleton/USkeleton.component.js +0 -58
  439. package/dist/components/spinner/USpinner.component.d.ts +0 -9
  440. package/dist/components/spinner/USpinner.component.js +0 -22
  441. package/dist/components/split-panel/USplitPanel.component.d.ts +0 -44
  442. package/dist/components/split-panel/USplitPanel.component.js +0 -185
  443. package/dist/components/tag/UTag.component.d.ts +0 -23
  444. package/dist/components/tag/UTag.component.js +0 -72
  445. package/dist/components/tooltip/UTooltip.component.d.ts +0 -27
  446. package/dist/components/tooltip/UTooltip.component.js +0 -88
  447. package/dist/components/tree/UTree.component.d.ts +0 -37
  448. package/dist/components/tree/UTree.component.js +0 -120
  449. package/dist/components/tree-item/UTreeItem.component.d.ts +0 -41
  450. package/dist/components/tree-item/UTreeItem.component.js +0 -161
  451. package/dist/events/UChangeEvent.d.ts +0 -6
  452. package/dist/events/UHideEvent.d.ts +0 -6
  453. package/dist/events/UInputEvent.d.ts +0 -6
  454. package/dist/events/UResizeEvent.d.ts +0 -6
  455. package/dist/events/USelectEvent.d.ts +0 -6
  456. package/dist/events/UShowEvent.d.ts +0 -6
  457. package/dist/react-components/UAlert.d.ts +0 -8
  458. package/dist/react-components/UForm.d.ts +0 -8
  459. package/dist/react-components/UInput.d.ts +0 -8
  460. package/dist/react-components/UMenu.d.ts +0 -8
  461. package/dist/react-components/UMenuItem.d.ts +0 -8
  462. package/dist/react-components/UProgressBar.d.ts +0 -8
  463. package/dist/react-components/UProgressRing.d.ts +0 -8
  464. package/dist/react-components/USplitPanel.d.ts +0 -8
  465. package/dist/react-components/UTooltip.d.ts +0 -8
  466. package/dist/react-components/UTree.d.ts +0 -8
  467. package/dist/react-components/UTreeItem.d.ts +0 -8
  468. package/dist/utilities/IconRegistry.d.ts +0 -40
  469. package/dist/utilities/IconRegistry.js +0 -119
  470. package/dist/utilities/Notifier.d.ts +0 -31
  471. package/dist/utilities/Notifier.js +0 -79
  472. package/dist/utilities/decorators.d.ts +0 -28
  473. /package/dist/components/{BaseElement.styles.d.ts → UDataElement.styles.d.ts} +0 -0
  474. /package/dist/components/{FloatingElement.styles.d.ts → UElement.styles.d.ts} +0 -0
  475. /package/dist/components/{ModalElement.styles.d.ts → UFormControlElement.styles.d.ts} +0 -0
@@ -0,0 +1,206 @@
1
+ import { resolve, join, relative, dirname, basename } from 'path';
2
+ import { readFileSync, writeFileSync, mkdirSync } from 'fs';
3
+ import { gzipSync } from 'zlib';
4
+ import { globSync } from 'glob';
5
+ /**
6
+ * Lit Element 컴포넌트를 React 래퍼로 자동 생성하는 Vite 플러그인
7
+ */
8
+ export default function reactWrapperPlugin(options) {
9
+ let rootDir;
10
+ let buildOutDir;
11
+ let outDir;
12
+ return {
13
+ name: 'vite-plugin-react-wrapper',
14
+ configResolved(config) {
15
+ rootDir = config.root;
16
+ buildOutDir = resolve(rootDir, config.build.outDir);
17
+ outDir = resolve(buildOutDir, options.output || 'react');
18
+ },
19
+ closeBundle() {
20
+ const log = (msg) => console.log(`\x1b[36m[react-wrapper]\x1b[0m ${msg}`);
21
+ log('Generating React wrappers...');
22
+ // 컴포넌트 수집
23
+ const inputPattern = (options.input || 'src/components') + '/**/*.ts';
24
+ const files = globSync(inputPattern, { cwd: rootDir, absolute: true });
25
+ const components = files.flatMap((f) => parseComponent(f));
26
+ if (components.length === 0) {
27
+ log('No components found.');
28
+ return;
29
+ }
30
+ // 출력 디렉토리 생성
31
+ mkdirSync(outDir, { recursive: true });
32
+ // 래퍼 생성
33
+ const generated = [];
34
+ for (const comp of components) {
35
+ generated.push(...writeWrapper(comp, outDir, buildOutDir));
36
+ }
37
+ generated.push(...writeIndex(components, outDir, buildOutDir));
38
+ // 결과 출력
39
+ generated.sort((a, b) => a.size - b.size);
40
+ for (const f of generated) {
41
+ const kb = (f.size / 1024).toFixed(2);
42
+ const gzKb = (f.gzipSize / 1024).toFixed(2);
43
+ const pad = ' '.repeat(Math.max(0, 50 - f.path.length));
44
+ console.log(`${f.path}${pad}${kb.padStart(6)} kB │ gzip: ${gzKb.padStart(6)} kB`);
45
+ }
46
+ log(`Generated ${components.length} React wrappers.`);
47
+ }
48
+ };
49
+ }
50
+ // --- 컴포넌트 파싱 ---
51
+ function parseComponent(filePath) {
52
+ const content = readFileSync(filePath, 'utf-8');
53
+ // @customElement('tag-name') 데코레이터 확인
54
+ const tagMatch = content.match(/@customElement\s*\(\s*['"]([^'"]+)['"]\s*\)/);
55
+ if (!tagMatch)
56
+ return [];
57
+ // export class ClassName 추출
58
+ const classMatch = content.match(/export\s+class\s+(\w+)/);
59
+ if (!classMatch)
60
+ return [];
61
+ const events = collectEvents(content);
62
+ return [{
63
+ className: classMatch[1],
64
+ tagName: tagMatch[1],
65
+ filePath,
66
+ events,
67
+ }];
68
+ }
69
+ function collectEvents(content) {
70
+ // import 구문에서 타입명 → 소스 경로 매핑 수집
71
+ // 예: import { ShowEventDetail } from '../../events/ShowEvent.js';
72
+ const typeImportMap = new Map();
73
+ for (const m of content.matchAll(/import\s+\{([^}]+)\}\s+from\s+['"]([^'"]+)['"]/g)) {
74
+ const importPath = m[2];
75
+ for (const name of m[1].split(',')) {
76
+ const typeName = name.replace(/type\s+/, '').trim();
77
+ if (typeName)
78
+ typeImportMap.set(typeName, importPath);
79
+ }
80
+ }
81
+ const eventMap = new Map();
82
+ // JSDoc @event 패턴: @event eventName
83
+ for (const m of content.matchAll(/@event\s+([\w-]+)/g)) {
84
+ if (!eventMap.has(m[1]))
85
+ eventMap.set(m[1], { detailType: 'unknown', importPath: '' });
86
+ }
87
+ // this.fire<DetailType>('eventName') 패턴 - 제네릭 타입 추출
88
+ for (const m of content.matchAll(/this\.fire\s*(?:<([^>]+)>)?\s*\(\s*['"]([\w-]+)['"]/g)) {
89
+ const detailType = m[1] || 'unknown';
90
+ const importPath = typeImportMap.get(detailType) || '';
91
+ eventMap.set(m[2], { detailType, importPath });
92
+ }
93
+ return Array.from(eventMap, ([name, { detailType, importPath }]) => ({
94
+ name,
95
+ reactName: toCamelEvent(name),
96
+ detailType,
97
+ importPath,
98
+ }));
99
+ }
100
+ /** kebab-case 이벤트명을 onCamelCase로 변환 (예: shift-start → onShiftStart) */
101
+ function toCamelEvent(name) {
102
+ return 'on' + name.split('-').map(s => s.charAt(0).toUpperCase() + s.slice(1)).join('');
103
+ }
104
+ function writeFile(filePath, content, buildOutDir) {
105
+ writeFileSync(filePath, content, 'utf-8');
106
+ return {
107
+ path: relative(buildOutDir, filePath).replace(/\\/g, '/'),
108
+ size: Buffer.byteLength(content, 'utf-8'),
109
+ gzipSize: gzipSync(content).length,
110
+ };
111
+ }
112
+ function computeImportPath(from, to) {
113
+ let rel = relative(dirname(from), to).replace(/\\/g, '/').replace(/\.ts$/, '');
114
+ if (!rel.startsWith('.'))
115
+ rel = './' + rel;
116
+ return rel;
117
+ }
118
+ function writeWrapper(comp, outDir, buildOutDir) {
119
+ const { className, tagName, events } = comp;
120
+ const jsPath = join(outDir, `${className}.js`);
121
+ const dtsPath = join(outDir, `${className}.d.ts`);
122
+ // 소스 파일의 빌드 출력 경로 추정 (src/ → 빌드 outDir 매핑)
123
+ const srcIndex = comp.filePath.replace(/\\/g, '/').indexOf('/src/');
124
+ const relFromSrc = srcIndex >= 0
125
+ ? comp.filePath.substring(srcIndex + 5).replace(/\\/g, '/').replace(/\.ts$/, '')
126
+ : basename(comp.filePath, '.ts');
127
+ const builtModulePath = resolve(buildOutDir, relFromSrc + '.js');
128
+ const importPath = computeImportPath(jsPath, builtModulePath);
129
+ // events 객체 생성
130
+ const eventsObj = events.length > 0
131
+ ? `{\n${events.map(e => ` ${e.reactName}: '${e.name}',`).join('\n')}\n }`
132
+ : '{}';
133
+ // .js
134
+ const js = `import React from 'react';
135
+ import { createComponent } from '@lit/react';
136
+ import { ${className} } from '${importPath}';
137
+
138
+ export const ${className} = createComponent({
139
+ react: React,
140
+ tagName: '${tagName}',
141
+ elementClass: ${className},
142
+ events: ${eventsObj},
143
+ });
144
+ `;
145
+ // .d.ts - import 구문 생성
146
+ const dtsImportPath = importPath.replace(/\.js$/, '');
147
+ const dtsImports = [
148
+ `import React from 'react';`,
149
+ `import { ${className} as ${className}Element } from '${dtsImportPath}';`,
150
+ ];
151
+ // 이벤트 detail 타입별 import - 소스 원본 경로 기준으로 빌드 경로 계산
152
+ const srcDir = dirname(comp.filePath);
153
+ const detailImportMap = new Map(); // 빌드경로 → [타입명]
154
+ for (const e of events) {
155
+ if (e.detailType === 'unknown' || !e.importPath)
156
+ continue;
157
+ // 소스 상대경로를 절대경로로 변환 후 빌드 경로 계산
158
+ const absEventSrc = resolve(srcDir, e.importPath).replace(/\\/g, '/');
159
+ const eventSrcIndex = absEventSrc.indexOf('/src/');
160
+ const relFromSrc = eventSrcIndex >= 0
161
+ ? absEventSrc.substring(eventSrcIndex + 5).replace(/\.js$/, '')
162
+ : '';
163
+ if (!relFromSrc)
164
+ continue;
165
+ const absEventBuilt = resolve(buildOutDir, relFromSrc);
166
+ const eventImportPath = computeImportPath(dtsPath, absEventBuilt + '.js').replace(/\.js$/, '');
167
+ const types = detailImportMap.get(eventImportPath) || [];
168
+ if (!types.includes(e.detailType))
169
+ types.push(e.detailType);
170
+ detailImportMap.set(eventImportPath, types);
171
+ }
172
+ for (const [path, types] of detailImportMap) {
173
+ dtsImports.push(`import { type ${types.join(', type ')} } from '${path}';`);
174
+ }
175
+ const eventTypes = events.length > 0
176
+ ? events.map(e => {
177
+ const type = e.detailType !== 'unknown' ? `CustomEvent<${e.detailType}>` : 'CustomEvent';
178
+ return ` ${e.reactName}?: (event: ${type}) => void;`;
179
+ }).join('\n') + '\n'
180
+ : '';
181
+ const dts = `${dtsImports.join('\n')}
182
+
183
+ export declare const ${className}: React.ForwardRefExoticComponent<
184
+ Partial<${className}Element> & React.HTMLAttributes<${className}Element> & {
185
+ ${eventTypes} }
186
+ >;
187
+
188
+ export type ${className}Props = React.ComponentProps<typeof ${className}>;
189
+ `;
190
+ return [
191
+ writeFile(jsPath, js, buildOutDir),
192
+ writeFile(dtsPath, dts, buildOutDir),
193
+ ];
194
+ }
195
+ function writeIndex(components, outDir, buildOutDir) {
196
+ const jsExports = components
197
+ .map(c => `export { ${c.className} } from './${c.className}.js';`)
198
+ .join('\n');
199
+ const dtsExports = components
200
+ .map(c => `export { ${c.className}, ${c.className}Props } from './${c.className}';`)
201
+ .join('\n');
202
+ return [
203
+ writeFile(join(outDir, 'index.js'), jsExports + '\n', buildOutDir),
204
+ writeFile(join(outDir, 'index.d.ts'), dtsExports + '\n', buildOutDir),
205
+ ];
206
+ }
@@ -0,0 +1,138 @@
1
+ ---
2
+ name: iyulab-components
3
+ description: Web component library built on Lit. Covers all u-* custom elements (buttons, forms, overlays, navigation, data display), utilities (Theme, Toast, Dialog, icons), and base classes for extension. Use when working with @iyulab/components package.
4
+ license: MIT
5
+ metadata:
6
+ author: iyulab
7
+ version: "1.0.0"
8
+ ---
9
+
10
+ # @iyulab/components
11
+
12
+ Web component library built on [Lit](https://lit.dev/). All components are custom elements (`u-*` tags) that work in any framework or vanilla HTML.
13
+
14
+ ## Quick Start
15
+
16
+ Install the package:
17
+
18
+ ```bash
19
+ npm install @iyulab/components
20
+ ```
21
+
22
+ Initialize theme and import all components:
23
+
24
+ ```ts
25
+ import { Theme } from '@iyulab/components';
26
+ import '@iyulab/components'; // registers all u-* custom elements
27
+
28
+ await Theme.init(); // optional — applies system/light/dark theme
29
+ ```
30
+
31
+ Import individual components (tree-shakable):
32
+
33
+ ```ts
34
+ import '@iyulab/components/dist/components/button/UButton.js';
35
+ import '@iyulab/components/dist/components/input/UInput.js';
36
+ ```
37
+
38
+ React wrappers (requires `@lit/react`):
39
+
40
+ ```ts
41
+ import { UButton, UInput } from '@iyulab/components/react';
42
+ ```
43
+
44
+ > For detailed guidance on theming, icon setup, and advanced usage, see [./references/usage.md](./references/usage.md).
45
+
46
+ ---
47
+
48
+ ## Components
49
+
50
+ ### Feedback
51
+
52
+ - [`u-alert`](./references/components/alert.md) — Closable message banner with status variants and auto-dismiss
53
+ - [`u-spinner`](./references/components/spinner.md) — Animated loading indicator
54
+ - [`u-skeleton`](./references/components/skeleton.md) — Placeholder shape shown while content loads
55
+ - [`u-progress-bar`](./references/components/progress-bar.md) — Linear progress indicator with buffer and segment support
56
+ - [`u-progress-ring`](./references/components/progress-ring.md) — Circular progress indicator
57
+
58
+ ### Buttons & Actions
59
+
60
+ - [`u-button`](./references/components/button.md) — Versatile button with multiple variants; renders as `<a>` when `href` is set
61
+ - [`u-icon-button`](./references/components/icon-button.md) — Square icon-only button with built-in tooltip
62
+ - [`u-button-group`](./references/components/button-group.md) — Groups buttons with shared variant and disabled state
63
+
64
+ ### Form Controls
65
+
66
+ - [`u-input`](./references/components/input.md) — Text input; combobox mode when `u-option` children are present
67
+ - [`u-textarea`](./references/components/textarea.md) — Multi-line text input with auto-resize and character counter
68
+ - [`u-select`](./references/components/select.md) — Dropdown select; single or multiple, with search
69
+ - [`u-checkbox`](./references/components/checkbox.md) — Checkbox with indeterminate state support
70
+ - [`u-radio`](./references/components/radio.md) — Radio group built from `u-option` children
71
+ - [`u-switch`](./references/components/switch.md) — Toggle switch
72
+ - [`u-slider`](./references/components/slider.md) — Range slider; single-thumb or dual-thumb (range) mode
73
+ - [`u-rating`](./references/components/rating.md) — Star/custom-symbol rating input
74
+ - [`u-field`](./references/components/field.md) — Layout wrapper providing label, description, and validation message
75
+ - [`u-form`](./references/components/form.md) — Form group with two-way model binding and validation
76
+ - [`u-option`](./references/components/option.md) — Selectable option item for `u-select`, `u-radio`, `u-input`
77
+
78
+ ### Overlay & Floating
79
+
80
+ - [`u-dialog`](./references/components/dialog.md) — Modal/non-modal dialog with configurable placement
81
+ - [`u-drawer`](./references/components/drawer.md) — Side-panel that slides in from any edge
82
+ - [`u-popover`](./references/components/popover.md) — Anchored floating panel with flexible trigger/dismiss policies
83
+ - [`u-tooltip`](./references/components/tooltip.md) — Hover/focus tooltip anchored to a target element
84
+
85
+ ### Navigation
86
+
87
+ - [`u-breadcrumb`](./references/components/breadcrumb.md) — Hierarchical location indicator
88
+ - [`u-breadcrumb-item`](./references/components/breadcrumb.md) — Individual breadcrumb link/label
89
+ - [`u-menu`](./references/components/menu.md) — Menu container with keyboard navigation and selection modes
90
+ - [`u-menu-item`](./references/components/menu.md) — Menu entry with optional sub-menu
91
+ - [`u-tab-panel`](./references/components/tab-panel.md) — Tab-based content switcher
92
+ - [`u-tab`](./references/components/tab-panel.md) — Individual tab button used inside `u-tab-panel`
93
+ - [`u-tree`](./references/components/tree.md) — Hierarchical tree with select, check, and drag-and-drop
94
+ - [`u-tree-item`](./references/components/tree.md) — Individual node inside `u-tree`
95
+
96
+ ### Layout & Display
97
+
98
+ - [`u-card`](./references/components/card.md) — Content card with media, header, and footer slots
99
+ - [`u-carousel`](./references/components/carousel.md) — Slide carousel with autoplay, navigation, and pagination
100
+ - [`u-split-panel`](./references/components/split-panel.md) — Resizable two-panel layout
101
+ - [`u-panel`](./references/components/panel.md) — General-purpose content panel with optional collapsing
102
+ - [`u-divider`](./references/components/divider.md) — Horizontal or vertical separator line
103
+
104
+ ### Data Display
105
+
106
+ - [`u-avatar`](./references/components/avatar.md) — User avatar with image, initials, or custom slot
107
+ - [`u-badge`](./references/components/badge.md) — Status badge; can be anchored on top of other elements
108
+ - [`u-chip`](./references/components/chip.md) — Selectable/removable chip tag
109
+ - [`u-tag`](./references/components/tag.md) — Non-interactive label tag
110
+ - [`u-icon`](./references/components/icon.md) — SVG icon from built-in or external icon library
111
+
112
+ ---
113
+
114
+ ## Utilities
115
+
116
+ - [`Theme`](./references/utilities/theme.md) — Apply and manage light/dark/system theme
117
+ - [`Toast`](./references/utilities/toast.md) — Programmatically show toast notifications
118
+ - [`Dialog`](./references/utilities/dialog.md) — Programmatically show alert/confirm/prompt dialogs
119
+ - [`IconRegistry`](./references/utilities/icons.md) — Register and resolve icon libraries
120
+ - [`BrowserStorage`](./references/utilities/browser-storage.md) — Unified localStorage / Cookie API
121
+ - [`converters`](./references/utilities/converters.md) — Lit property attribute converters (array, JSON, date, url…)
122
+ - [`sanitizers`](./references/utilities/sanitizers.md) — XSS-safe HTML/URL escape helpers
123
+ - [`elements`](./references/utilities/elements.md) — Shadow-DOM-aware DOM query helpers
124
+ - [`OverlayManager`](./references/utilities/overlay-manager.md) — Internal overlay stack and z-index manager
125
+
126
+ ---
127
+
128
+ ## Extensions
129
+
130
+ `@iyulab/components` exposes abstract base classes you can extend to build custom components that integrate seamlessly with the library's patterns (form association, overlays, floating positioning, etc.).
131
+
132
+ > See [./references/extensions/](./references/extensions/) for per-class details.
133
+
134
+ - [`UElement`](./references/extensions/element.md) — Root base for all components; provides `fire()`, `relay()`, `replace()` helpers
135
+ - [`UFormControlElement<T>`](./references/extensions/form-control.md) — Base for form-associated controls; handles `disabled`, `readonly`, `invalid`, validation lifecycle
136
+ - [`UFloatingElement`](./references/extensions/floating.md) — Base for anchored floating UI (popover, tooltip); wraps `@floating-ui/dom`
137
+ - [`UOverlayElement`](./references/extensions/overlay.md) — Base for full-screen overlays (dialog, drawer); manages focus-trap, scroll-lock, ESC/backdrop close
138
+ - [`UDataElement`](./references/extensions/data.md) — Base for data-driven components; auto-loads JSON from inline `<script type="application/json">`
@@ -0,0 +1,74 @@
1
+ # u-alert
2
+
3
+ ```ts
4
+ import '@iyulab/components/dist/components/alert/UAlert.js';
5
+ ```
6
+
7
+ **Tag:** `u-alert`
8
+
9
+ Closable message banner with status icons, auto-dismiss timer, and open/hide transition.
10
+
11
+ ```html
12
+ <u-alert status="success" closable open>
13
+ Your changes have been saved.
14
+ </u-alert>
15
+
16
+ <u-alert status="error" variant="outlined" open>
17
+ Failed to load data.
18
+ <u-button slot="footer" variant="solid">Retry</u-button>
19
+ </u-alert>
20
+ ```
21
+
22
+ ---
23
+
24
+ ## Slots
25
+
26
+ | Name | Description |
27
+ |------|-------------|
28
+ | *(default)* | Alert body content |
29
+ | `footer` | Bottom area (e.g. action buttons) |
30
+
31
+ ## Properties
32
+
33
+ | Property | Type | Default | Reflect | Description |
34
+ |----------|------|---------|---------|-------------|
35
+ | `open` | `boolean` | `false` | ✓ | Show/hide the alert |
36
+ | `closable` | `boolean` | `false` | ✓ | Show close button |
37
+ | `variant` | `'solid'\|'filled'\|'outlined'\|'glass'` | `'solid'` | ✓ | Visual style |
38
+ | `status` | `'error'\|'warning'\|'success'\|'info'\|'notice'` | — | ✓ | Status type; controls icon and color |
39
+ | `title` | `string` | `''` | — | Title label (falls back to status name) |
40
+ | `duration` | `number` | `0` | — | Auto-dismiss delay in ms; `0` disables |
41
+
42
+ ## Events
43
+
44
+ | Event | Cancelable | Description |
45
+ |-------|------------|-------------|
46
+ | `show` | ✓ | Fires before the alert becomes visible |
47
+ | `hide` | ✓ | Fires before the alert is hidden |
48
+
49
+ ## Methods
50
+
51
+ | Method | Returns | Description |
52
+ |--------|---------|-------------|
53
+ | `show()` | `boolean` | Opens the alert; returns `false` if cancelled |
54
+ | `hide()` | `boolean` | Closes the alert; returns `false` if cancelled |
55
+
56
+ ## CSS Parts
57
+
58
+ | Part | Description |
59
+ |------|-------------|
60
+ | `container` | Outer flex column wrapper |
61
+ | `header` | Row containing icon, title, and close button |
62
+ | `icon` | Status icon (hidden when `status` is unset) |
63
+ | `title` | Title text |
64
+ | `close-btn` | Close button (visible when `closable`) |
65
+ | `content` | Scrollable body area |
66
+ | `footer` | Footer slot wrapper |
67
+
68
+ ## CSS Custom Properties
69
+
70
+ | Property | Description |
71
+ |----------|-------------|
72
+ | `--alert-background-color` | Background color (auto-set by status) |
73
+ | `--alert-border-color` | Border color (auto-set by status) |
74
+ | `--alert-icon-color` | Icon color (auto-set by status) |
@@ -0,0 +1,41 @@
1
+ # u-avatar
2
+
3
+ ```ts
4
+ import '@iyulab/components/dist/components/avatar/UAvatar.js';
5
+ ```
6
+
7
+ **Tag:** `u-avatar`
8
+
9
+ Displays a user avatar as an image, initials label, or custom slot content.
10
+
11
+ ```html
12
+ <u-avatar image="/photo.jpg" label="Alice"></u-avatar>
13
+ <u-avatar label="AB" shape="square"></u-avatar>
14
+ <u-avatar outline>
15
+ <u-icon lib="tabler" name="user"></u-icon>
16
+ </u-avatar>
17
+ ```
18
+
19
+ ---
20
+
21
+ ## Slots
22
+
23
+ | Name | Description |
24
+ |------|-------------|
25
+ | *(default)* | Custom content shown when neither `image` nor `label` is set |
26
+
27
+ ## Properties
28
+
29
+ | Property | Type | Default | Reflect | Description |
30
+ |----------|------|---------|---------|-------------|
31
+ | `shape` | `'circle'\|'square'\|'rounded'` | `'circle'` | ✓ | Avatar shape |
32
+ | `outline` | `boolean` | `false` | ✓ | Show border ring |
33
+ | `image` | `string` | — | — | Image URL |
34
+ | `label` | `string` | — | — | Initials text (first 2 chars shown; used as `alt` for image) |
35
+
36
+ ## CSS Parts
37
+
38
+ | Part | Description |
39
+ |------|-------------|
40
+ | `image` | `<img>` element |
41
+ | `label` | Initials `<span>` element |
@@ -0,0 +1,38 @@
1
+ # u-badge
2
+
3
+ ```ts
4
+ import '@iyulab/components/dist/components/badge/UBadge.js';
5
+ ```
6
+
7
+ **Tag:** `u-badge`
8
+
9
+ Status badge for numbers, labels, or dot indicators. Use `anchor` to position it absolutely on a parent element.
10
+
11
+ ```html
12
+ <!-- Standalone -->
13
+ <u-badge color="red">5</u-badge>
14
+
15
+ <!-- Anchored on another element -->
16
+ <div style="position:relative; display:inline-block;">
17
+ <u-icon lib="tabler" name="bell"></u-icon>
18
+ <u-badge variant="dot" color="red" anchor="top-right"></u-badge>
19
+ </div>
20
+ ```
21
+
22
+ ---
23
+
24
+ ## Slots
25
+
26
+ | Name | Description |
27
+ |------|-------------|
28
+ | `prefix` | Content before the main label |
29
+ | *(default)* | Badge label (text or icon) |
30
+ | `suffix` | Content after the main label |
31
+
32
+ ## Properties
33
+
34
+ | Property | Type | Default | Reflect | Description |
35
+ |----------|------|---------|---------|-------------|
36
+ | `variant` | `'pill'\|'dot'\|'square'` | `'pill'` | ✓ | Shape variant; `dot` renders no content |
37
+ | `color` | `'neutral'\|'blue'\|'green'\|'yellow'\|'red'\|'orange'\|'teal'\|'cyan'\|'purple'\|'pink'` | `'neutral'` | ✓ | Badge color |
38
+ | `anchor` | `'top-right'\|'top-left'\|'bottom-right'\|'bottom-left'` | — | ✓ | Absolute anchor position relative to parent |
@@ -0,0 +1,75 @@
1
+ # u-breadcrumb / u-breadcrumb-item
2
+
3
+ ```ts
4
+ import '@iyulab/components/dist/components/breadcrumb/UBreadcrumb.js';
5
+ import '@iyulab/components/dist/components/breadcrumb-item/UBreadcrumbItem.js';
6
+ ```
7
+
8
+ **Tags:** `u-breadcrumb`, `u-breadcrumb-item`
9
+
10
+ Hierarchical location indicator. Compose `u-breadcrumb-item` elements inside `u-breadcrumb`.
11
+
12
+ ```html
13
+ <u-breadcrumb>
14
+ <u-breadcrumb-item href="/">Home</u-breadcrumb-item>
15
+ <u-breadcrumb-item href="/products">Products</u-breadcrumb-item>
16
+ <u-breadcrumb-item>Detail</u-breadcrumb-item>
17
+ </u-breadcrumb>
18
+
19
+ <!-- Custom separator -->
20
+ <u-breadcrumb>
21
+ <span slot="separator">/</span>
22
+ <u-breadcrumb-item href="/">Home</u-breadcrumb-item>
23
+ <u-breadcrumb-item>Page</u-breadcrumb-item>
24
+ </u-breadcrumb>
25
+ ```
26
+
27
+ ---
28
+
29
+ ## u-breadcrumb
30
+
31
+ ### Slots
32
+
33
+ | Name | Description |
34
+ |------|-------------|
35
+ | *(default)* | `u-breadcrumb-item` elements |
36
+ | `separator` | Custom separator content (default: chevron icon) |
37
+
38
+ ### CSS Parts
39
+
40
+ | Part | Description |
41
+ |------|-------------|
42
+ | `nav` | `<nav>` wrapper element |
43
+
44
+ ---
45
+
46
+ ## u-breadcrumb-item
47
+
48
+ ### Slots
49
+
50
+ | Name | Description |
51
+ |------|-------------|
52
+ | `prefix` | Content before the label |
53
+ | *(default)* | Item label |
54
+ | `suffix` | Content after the label |
55
+
56
+ ### Properties
57
+
58
+ | Property | Type | Default | Reflect | Description |
59
+ |----------|------|---------|---------|-------------|
60
+ | `disabled` | `boolean` | `false` | ✓ | Disable the item |
61
+ | `href` | `string` | — | — | Link URL; renders as `<a>` when set |
62
+ | `target` | `string` | — | — | Link `target` attribute |
63
+ | `rel` | `string` | — | — | Link `rel` attribute |
64
+
65
+ ### Events
66
+
67
+ | Event | Cancelable | Description |
68
+ |-------|------------|-------------|
69
+ | `navigate` | ✓ | Fires when the item is clicked |
70
+
71
+ ### CSS Parts
72
+
73
+ | Part | Description |
74
+ |------|-------------|
75
+ | `link` | Inner `<a>` or `<span>` element |
@@ -0,0 +1,38 @@
1
+ # u-button-group
2
+
3
+ ```ts
4
+ import '@iyulab/components/dist/components/button-group/UButtonGroup.js';
5
+ ```
6
+
7
+ **Tag:** `u-button-group`
8
+
9
+ Groups `u-button` or `u-icon-button` elements. Propagates `variant` and `disabled` to all child buttons automatically.
10
+
11
+ ```html
12
+ <u-button-group variant="outlined">
13
+ <u-button>Left</u-button>
14
+ <u-button>Center</u-button>
15
+ <u-button>Right</u-button>
16
+ </u-button-group>
17
+
18
+ <u-button-group vertical disabled>
19
+ <u-button>Top</u-button>
20
+ <u-button>Bottom</u-button>
21
+ </u-button-group>
22
+ ```
23
+
24
+ ---
25
+
26
+ ## Slots
27
+
28
+ | Name | Description |
29
+ |------|-------------|
30
+ | *(default)* | `u-button` or `u-icon-button` elements |
31
+
32
+ ## Properties
33
+
34
+ | Property | Type | Default | Reflect | Description |
35
+ |----------|------|---------|---------|-------------|
36
+ | `variant` | `'solid'\|'surface'\|'filled'\|'outlined'\|'ghost'\|'link'` | `'solid'` | ✓ | Variant propagated to all child buttons |
37
+ | `vertical` | `boolean` | `false` | ✓ | Stack buttons vertically |
38
+ | `disabled` | `boolean` | `false` | ✓ | Disable all child buttons |
@@ -0,0 +1,56 @@
1
+ # u-button
2
+
3
+ ```ts
4
+ import '@iyulab/components/dist/components/button/UButton.js';
5
+ ```
6
+
7
+ **Tag:** `u-button`
8
+
9
+ Versatile button with multiple visual variants. Renders as an `<a>` element when `href` is provided.
10
+
11
+ ```html
12
+ <u-button>Default</u-button>
13
+ <u-button variant="outlined">Outlined</u-button>
14
+ <u-button variant="ghost" loading>Loading</u-button>
15
+ <u-button href="https://example.com" target="_blank">Link</u-button>
16
+
17
+ <!-- With prefix/suffix icons -->
18
+ <u-button variant="solid">
19
+ <u-icon slot="prefix" lib="tabler" name="download"></u-icon>
20
+ Download
21
+ </u-button>
22
+ ```
23
+
24
+ ---
25
+
26
+ ## Slots
27
+
28
+ | Name | Description |
29
+ |------|-------------|
30
+ | *(default)* | Button label |
31
+ | `prefix` | Content before the label |
32
+ | `suffix` | Content after the label |
33
+ | `spinner` | Custom spinner shown when `loading` |
34
+
35
+ ## Properties
36
+
37
+ | Property | Type | Default | Reflect | Description |
38
+ |----------|------|---------|---------|-------------|
39
+ | `variant` | `'solid'\|'surface'\|'filled'\|'outlined'\|'ghost'\|'link'` | `'solid'` | ✓ | Visual style |
40
+ | `rounded` | `boolean` | `false` | ✓ | Pill-shaped border radius |
41
+ | `disabled` | `boolean` | `false` | ✓ | Disable the button |
42
+ | `loading` | `boolean` | `false` | ✓ | Show loading spinner; disables interaction |
43
+ | `type` | `'button'\|'submit'\|'reset'` | `'button'` | — | Button `type` attribute |
44
+ | `href` | `string` | — | — | Link URL (renders as `<a>`) |
45
+ | `target` | `string` | — | — | Link `target` |
46
+ | `rel` | `string` | — | — | Link `rel` |
47
+ | `download` | `string` | — | — | Download filename |
48
+
49
+ ## CSS Parts
50
+
51
+ | Part | Description |
52
+ |------|-------------|
53
+ | `button` | Inner `<button>` element |
54
+ | `link` | Inner `<a>` element (when `href` is set) |
55
+ | `content` | Content wrapper (prefix + label + suffix) |
56
+ | `mask` | Loading overlay mask |