@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,128 @@
1
+ # u-tree / u-tree-item
2
+
3
+ ```ts
4
+ import '@iyulab/components/dist/components/tree/UTree.js';
5
+ import '@iyulab/components/dist/components/tree-item/UTreeItem.js';
6
+ ```
7
+
8
+ **Tags:** `u-tree`, `u-tree-item`
9
+
10
+ Hierarchical tree with support for selection, checkboxes, cascade check, and drag-and-drop.
11
+
12
+ ```html
13
+ <u-tree selectable checkable check-cascade>
14
+ <u-tree-item value="root" expanded>
15
+ Root
16
+ <u-tree-item value="child1">Child 1</u-tree-item>
17
+ <u-tree-item value="child2">
18
+ Child 2
19
+ <u-tree-item value="leaf1">Leaf</u-tree-item>
20
+ </u-tree-item>
21
+ </u-tree-item>
22
+ </u-tree>
23
+ ```
24
+
25
+ ---
26
+
27
+ ## u-tree
28
+
29
+ ### Slots
30
+
31
+ | Name | Description |
32
+ |------|-------------|
33
+ | *(default)* | `u-tree-item` elements |
34
+ | `expand-icon` | Custom expand icon |
35
+ | `collapse-icon` | Custom collapse icon |
36
+
37
+ ### Properties
38
+
39
+ | Property | Type | Default | Reflect | Description |
40
+ |----------|------|---------|---------|-------------|
41
+ | `selectable` | `boolean` | `false` | ✓ | Enable item selection |
42
+ | `selectMultiple` | `boolean` | `false` | ✓ | Allow multiple items selected |
43
+ | `selectLeaf` | `boolean` | `false` | ✓ | Only leaf nodes are selectable |
44
+ | `checkable` | `boolean` | `false` | ✓ | Show checkboxes |
45
+ | `checkCascade` | `boolean` | `false` | ✓ | Parent/child checkbox cascade |
46
+ | `draggable` | `boolean` | `false` | ✓ | Enable drag |
47
+ | `droppable` | `boolean` | `false` | ✓ | Enable drop |
48
+ | `trigger` | `'item'\|'icon'` | `'item'` | — | Click target to expand/collapse |
49
+
50
+ ### Events
51
+
52
+ | Event | Description |
53
+ |-------|-------------|
54
+ | `change` | Fires when selection or check state changes |
55
+
56
+ ### Methods
57
+
58
+ | Method | Description |
59
+ |--------|-------------|
60
+ | `expandAll()` | Expand all items |
61
+ | `collapseAll()` | Collapse all items |
62
+ | `expand(value)` | Expand item by value |
63
+ | `collapse(value)` | Collapse item by value |
64
+ | `toggle(value)` | Toggle item by value |
65
+ | `getItem(value)` | Get `UTreeItem` by value |
66
+ | `getItems(fn)` | Get items matching a filter function |
67
+ | `mapItems(fn)` | Apply a function to all items |
68
+
69
+ ### CSS Custom Properties
70
+
71
+ | Property | Description |
72
+ |----------|-------------|
73
+ | `--tree-indent-size` | Indentation per depth level |
74
+ | `--tree-indent-guide-offset` | Guide line offset |
75
+ | `--tree-indent-guide-width` | Guide line width |
76
+ | `--tree-indent-guide-style` | Guide line CSS border-style |
77
+ | `--tree-indent-guide-color` | Guide line color |
78
+
79
+ ---
80
+
81
+ ## u-tree-item
82
+
83
+ ### Slots
84
+
85
+ | Name | Description |
86
+ |------|-------------|
87
+ | `prefix` | Leading content |
88
+ | *(default)* | Item label |
89
+ | `suffix` | Trailing content |
90
+
91
+ ### Properties
92
+
93
+ | Property | Type | Default | Reflect | Description |
94
+ |----------|------|---------|---------|-------------|
95
+ | `value` | `string` | `''` | — | Unique identifier |
96
+ | `disabled` | `boolean` | `false` | ✓ | Disable the item |
97
+ | `expanded` | `boolean` | `false` | ✓ | Show children |
98
+ | `selectable` | `boolean` | `false` | ✓ | This item can be selected |
99
+ | `checkable` | `boolean` | `false` | ✓ | Show checkbox |
100
+ | `loading` | `boolean` | `false` | ✓ | Loading state (async children) |
101
+ | `draggable` | `boolean` | `false` | ✓ | Draggable |
102
+ | `droppable` | `boolean` | `false` | ✓ | Accepts drops |
103
+ | `trigger` | `'item'\|'icon'` | `'item'` | — | Expand trigger target |
104
+
105
+ ### Events
106
+
107
+ | Event | Description |
108
+ |-------|-------------|
109
+ | `expand` | Item is expanded |
110
+ | `collapse` | Item is collapsed |
111
+ | `pick` | Item is selected |
112
+ | `check` | Item checkbox toggled |
113
+
114
+ ### Methods
115
+
116
+ | Method | Returns | Description |
117
+ |--------|---------|-------------|
118
+ | `expand()` | `boolean` | Expand this item |
119
+ | `collapse()` | `boolean` | Collapse this item |
120
+ | `toggle()` | `boolean` | Toggle expand/collapse |
121
+
122
+ ### CSS Parts
123
+
124
+ | Part | Description |
125
+ |------|-------------|
126
+ | `header` | Item header row (icon + label + suffix) |
127
+ | `content` | Label content area |
128
+ | `subtree` | Children container |
@@ -0,0 +1,60 @@
1
+ # UDataElement
2
+
3
+ ```ts
4
+ import { UDataElement } from '@iyulab/components';
5
+ ```
6
+
7
+ Base class for data-driven components that load their initial data from an inline `<script type="application/json">` tag in the light DOM.
8
+
9
+ ## When to extend
10
+
11
+ Use when you want to declare component data directly in HTML without JavaScript, or when server-rendering initial state into the page.
12
+
13
+ ```ts
14
+ import { UDataElement } from '@iyulab/components';
15
+ import { customElement } from 'lit/decorators.js';
16
+ import { html } from 'lit';
17
+
18
+ @customElement('my-list')
19
+ export class MyList extends UDataElement {
20
+ private items: string[] = [];
21
+
22
+ protected override async load(data?: unknown) {
23
+ if (Array.isArray(data)) {
24
+ this.items = data as string[];
25
+ }
26
+ }
27
+
28
+ render() {
29
+ return html`
30
+ <ul>${this.items.map(i => html`<li>${i}</li>`)}</ul>
31
+ `;
32
+ }
33
+ }
34
+ ```
35
+
36
+ ```html
37
+ <my-list>
38
+ <script type="application/json">
39
+ ["Item A", "Item B", "Item C"]
40
+ </script>
41
+ </my-list>
42
+ ```
43
+
44
+ ## Static Methods
45
+
46
+ | Method | Returns | Description |
47
+ |--------|---------|-------------|
48
+ | `buildHTML(json, attrs?)` | `string` | Build a safe inline HTML string with JSON data embedded in a `<script type="application/json">` child |
49
+
50
+ ```ts
51
+ const html = MyList.buildHTML(['Item A', 'Item B'], { class: 'my-list' });
52
+ // → '<my-list class="my-list"><script type="application/json">["Item A","Item B"]</script></my-list>'
53
+ ```
54
+
55
+ ## Protected Methods
56
+
57
+ | Method | Returns | Description |
58
+ |--------|---------|-------------|
59
+ | `load(data?)` | `Promise<void>` | Called with the parsed JSON data after the element connects; override to handle data |
60
+ | `error(error)` | `Promise<void>` | Called when JSON parsing fails; override to handle errors |
@@ -0,0 +1,57 @@
1
+ # UElement
2
+
3
+ ```ts
4
+ import { UElement } from '@iyulab/components';
5
+ ```
6
+
7
+ Root base class for all `@iyulab/components` components. Extends `LitElement` with event helpers and render utilities.
8
+
9
+ ## When to extend
10
+
11
+ Extend `UElement` for any custom component that doesn't need form association or overlay/floating behavior.
12
+
13
+ ```ts
14
+ import { UElement } from '@iyulab/components';
15
+ import { customElement, property } from 'lit/decorators.js';
16
+ import { html } from 'lit';
17
+
18
+ @customElement('my-badge')
19
+ export class MyBadge extends UElement {
20
+ @property() label = '';
21
+
22
+ render() {
23
+ return html`<span>${this.label}</span>`;
24
+ }
25
+ }
26
+ ```
27
+
28
+ ## Protected API
29
+
30
+ | Method | Signature | Description |
31
+ |--------|-----------|-------------|
32
+ | `fire` | `fire<T>(name, options?): boolean` | Dispatch a `CustomEvent` on the host. `bubbles`, `composed`, `cancelable` are `true` by default. Returns `false` if the event was cancelled. |
33
+ | `relay` | `relay(event, options?): void` | Re-dispatch a native DOM event from the host (stops original event, re-fires as new). Useful for surfacing inner element events to light DOM. |
34
+ | `replace` | `replace(value, options?): void` | Replace the entire shadow DOM render output with a new Lit `TemplateResult`. Preserves `<style>` tags. |
35
+
36
+ ## Static members
37
+
38
+ | Member | Description |
39
+ |--------|-------------|
40
+ | `styles` | Base styles (`CSSResult`); combine with `[super.styles, myStyles]` |
41
+ | `define(name)` | Register this class as a custom element under a given tag name |
42
+ | `dependencies` | `Record<string, typeof UElement>` — declare sub-components to auto-define |
43
+
44
+ ## Example: custom event
45
+
46
+ ```ts
47
+ @customElement('my-input')
48
+ class MyInput extends UElement {
49
+ private handleChange(e: Event) {
50
+ // relay native input event from shadow DOM to host
51
+ this.relay(e);
52
+
53
+ // or fire a custom event
54
+ this.fire('my-change', { detail: { value: (e.target as HTMLInputElement).value } });
55
+ }
56
+ }
57
+ ```
@@ -0,0 +1,60 @@
1
+ # UFloatingElement
2
+
3
+ ```ts
4
+ import { UFloatingElement } from '@iyulab/components';
5
+ ```
6
+
7
+ Abstract base class for anchored floating elements (tooltips, popovers, dropdowns). Wraps [`@floating-ui/dom`](https://floating-ui.com/) for automatic positioning.
8
+
9
+ ## When to extend
10
+
11
+ Use when building a component that floats relative to a `for` target element with auto-placement, shift, and arrow support.
12
+
13
+ ```ts
14
+ import { UFloatingElement } from '@iyulab/components';
15
+ import { customElement } from 'lit/decorators.js';
16
+ import { html } from 'lit';
17
+
18
+ @customElement('my-dropdown')
19
+ export class MyDropdown extends UFloatingElement {
20
+ render() {
21
+ return html`<slot></slot>`;
22
+ }
23
+ }
24
+ ```
25
+
26
+ ```html
27
+ <button id="btn">Open</button>
28
+ <my-dropdown for="#btn" placement="bottom" trigger="click" shift>
29
+ Dropdown content
30
+ </my-dropdown>
31
+ ```
32
+
33
+ ## Inherited Properties
34
+
35
+ | Property | Type | Default | Reflect | Description |
36
+ |----------|------|---------|---------|-------------|
37
+ | `open` | `boolean` | `false` | ✓ | Visibility state |
38
+ | `disabled` | `boolean` | `false` | ✓ | Prevent opening |
39
+ | `for` | `string` | — | ✓ | CSS selector for the anchor element |
40
+ | `strategy` | `'absolute'\|'fixed'` | `'absolute'` | — | CSS positioning strategy |
41
+ | `placement` | `Placement` | — | — | Preferred placement from `@floating-ui/dom` |
42
+ | `offset` | `OffsetOptions` | `0` | — | Distance from anchor |
43
+ | `shift` | `boolean` | `false` | — | Shift to stay within viewport |
44
+ | `arrow` | `boolean` | `false` | — | Show pointing arrow |
45
+ | `showDelay` | `number` | `0` | — | Open delay (ms) |
46
+ | `hideDelay` | `number` | `0` | — | Close delay (ms) |
47
+
48
+ ## Methods
49
+
50
+ | Method | Returns | Description |
51
+ |--------|---------|-------------|
52
+ | `show(target?)` | `Promise<boolean>` | Open and position the floating element; returns `false` if cancelled |
53
+ | `hide()` | `void` | Close the floating element |
54
+
55
+ ## Events
56
+
57
+ | Event | Cancelable | Description |
58
+ |-------|------------|-------------|
59
+ | `show` | ✓ | Before opening |
60
+ | `hide` | ✓ | Before closing |
@@ -0,0 +1,79 @@
1
+ # UFormControlElement\<T\>
2
+
3
+ ```ts
4
+ import { UFormControlElement } from '@iyulab/components';
5
+ ```
6
+
7
+ Abstract base class for all form-associated controls. Enables native `<form>` participation via the [ElementInternals](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals) API.
8
+
9
+ ## When to extend
10
+
11
+ Use when building a custom input that should participate in forms (`formAssociated = true`), support `name`/`value` submission, and integrate with the library's validation pattern.
12
+
13
+ ```ts
14
+ import { UFormControlElement } from '@iyulab/components';
15
+ import { customElement, property } from 'lit/decorators.js';
16
+ import { html } from 'lit';
17
+
18
+ @customElement('my-input')
19
+ export class MyInput extends UFormControlElement<string> {
20
+ @property() value = '';
21
+
22
+ render() {
23
+ return html`
24
+ <input
25
+ .value=${this.value}
26
+ ?disabled=${this.disabled}
27
+ ?readonly=${this.readonly}
28
+ @change=${(e: Event) => {
29
+ this.value = (e.target as HTMLInputElement).value;
30
+ this.fire('change');
31
+ }}
32
+ />
33
+ `;
34
+ }
35
+
36
+ validate(): boolean {
37
+ if (this.required && !this.value) {
38
+ this.invalid = true;
39
+ return false;
40
+ }
41
+ this.invalid = false;
42
+ return true;
43
+ }
44
+
45
+ reset(): void {
46
+ this.value = '';
47
+ this.invalid = false;
48
+ }
49
+ }
50
+ ```
51
+
52
+ ## Inherited Properties
53
+
54
+ | Property | Type | Default | Reflect | Description |
55
+ |----------|------|---------|---------|-------------|
56
+ | `name` | `string` | — | — | Form field name |
57
+ | `value` | `T` | — | — | Submitted value |
58
+ | `disabled` | `boolean` | `false` | ✓ | Disable the control |
59
+ | `readonly` | `boolean` | `false` | ✓ | Read-only |
60
+ | `required` | `boolean` | `false` | ✓ | Required field |
61
+ | `invalid` | `boolean` | `false` | ✓ | Validation failed state |
62
+ | `novalidate` | `boolean` | `false` | — | Skip automatic validation |
63
+ | `label` | `string` | — | — | Field label |
64
+ | `description` | `string` | — | — | Helper description |
65
+ | `validationMessage` | `string` | — | — | Custom validation error text |
66
+
67
+ ## Inherited Getters
68
+
69
+ | Getter | Returns | Description |
70
+ |--------|---------|-------------|
71
+ | `form` | `HTMLFormElement \| null` | Associated form element |
72
+ | `validity` | `ValidityState \| undefined` | Native validity state |
73
+
74
+ ## Abstract Methods (must implement)
75
+
76
+ | Method | Returns | Description |
77
+ |--------|---------|-------------|
78
+ | `validate()` | `boolean` | Run validation logic; set `this.invalid` accordingly |
79
+ | `reset()` | `void` | Reset value and clear validation state |
@@ -0,0 +1,76 @@
1
+ # UOverlayElement
2
+
3
+ ```ts
4
+ import { UOverlayElement } from '@iyulab/components';
5
+ ```
6
+
7
+ Abstract base class for full-screen or contained overlays (dialogs, drawers, side sheets). Manages:
8
+
9
+ - **Focus-trap** via `focus-trap` library
10
+ - **Body scroll lock** while open
11
+ - **ESC key** and **backdrop click** close
12
+ - **OverlayManager** z-index stacking
13
+
14
+ ## When to extend
15
+
16
+ Use when building a modal-style component that should block interaction with the rest of the page.
17
+
18
+ ```ts
19
+ import { UOverlayElement } from '@iyulab/components';
20
+ import { customElement, property } from 'lit/decorators.js';
21
+ import { html } from 'lit';
22
+
23
+ @customElement('my-modal')
24
+ export class MyModal extends UOverlayElement {
25
+ @property() title = '';
26
+
27
+ render() {
28
+ return html`
29
+ <div class="backdrop" part="backdrop"></div>
30
+ <div class="panel" part="panel">
31
+ <h2>${this.title}</h2>
32
+ <slot></slot>
33
+ <button @click=${() => this.requestClose('button')}>Close</button>
34
+ </div>
35
+ `;
36
+ }
37
+ }
38
+ ```
39
+
40
+ ## Inherited Properties
41
+
42
+ | Property | Type | Default | Reflect | Description |
43
+ |----------|------|---------|---------|-------------|
44
+ | `open` | `boolean` | `false` | ✓ | Open/closed state |
45
+ | `mode` | `'modal'\|'non-modal'` | `'modal'` | ✓ | `modal` enables focus-trap |
46
+ | `contained` | `boolean` | `false` | ✓ | Use `position: absolute` relative to parent |
47
+ | `closeOn` | `string[]` | `['escape','backdrop','button']` | ✓ | Allowed close trigger sources |
48
+
49
+ ## Methods
50
+
51
+ | Method | Returns | Description |
52
+ |--------|---------|-------------|
53
+ | `show()` | `boolean` | Open overlay; returns `false` if cancelled |
54
+ | `hide()` | `boolean` | Close overlay; returns `false` if cancelled |
55
+ | `requestClose(source)` | `void` | Request close from a source string; respects `closeOn` policy |
56
+
57
+ ## Events
58
+
59
+ | Event | Cancelable | Description |
60
+ |-------|------------|-------------|
61
+ | `show` | ✓ | Before overlay opens |
62
+ | `hide` | ✓ | Before overlay closes |
63
+
64
+ ## Custom close policy
65
+
66
+ Override `requestClose` to add custom logic before closing:
67
+
68
+ ```ts
69
+ override requestClose(source: string) {
70
+ if (source === 'backdrop' && this.hasUnsavedChanges) {
71
+ // show a confirmation prompt instead
72
+ return;
73
+ }
74
+ super.requestClose(source);
75
+ }
76
+ ```
@@ -0,0 +1,216 @@
1
+ # Usage Guide
2
+
3
+ ## Installation
4
+
5
+ ```bash
6
+ npm install @iyulab/components
7
+ ```
8
+
9
+ ---
10
+
11
+ ## Importing Components
12
+
13
+ ### All at once
14
+
15
+ ```ts
16
+ import '@iyulab/components';
17
+ ```
18
+
19
+ ### Individual (tree-shakable)
20
+
21
+ ```ts
22
+ import '@iyulab/components/dist/components/button/UButton.js';
23
+ import '@iyulab/components/dist/components/input/UInput.js';
24
+ ```
25
+
26
+ ### React wrappers
27
+
28
+ React wrappers are generated via `@lit/react` and live under the `react` sub-export.
29
+
30
+ ```ts
31
+ import { UButton, UInput, USelect } from '@iyulab/components/react';
32
+ ```
33
+
34
+ ---
35
+
36
+ ## Theme Setup
37
+
38
+ Call `Theme.init()` once at application startup (before rendering):
39
+
40
+ ```ts
41
+ import { Theme } from '@iyulab/components';
42
+
43
+ await Theme.init({
44
+ default: 'system', // 'system' | 'light' | 'dark'
45
+ useBuiltIn: true, // load bundled CSS variables (default: true)
46
+ store: { // persist theme preference in localStorage (optional)
47
+ type: 'localStorage',
48
+ key: 'app-theme'
49
+ }
50
+ });
51
+ ```
52
+
53
+ ### Switching themes at runtime
54
+
55
+ ```ts
56
+ import { Theme } from '@iyulab/components';
57
+
58
+ Theme.set('dark');
59
+ Theme.set('light');
60
+ Theme.set('system');
61
+
62
+ const current = Theme.get(); // 'system' | 'light' | 'dark' | undefined
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Icon Setup
68
+
69
+ ### Built-in icons
70
+
71
+ Built-in icons are bundled at build time and served from `/assets/icons/` by default.
72
+ If you serve static assets from a different path, update the base URL:
73
+
74
+ ```ts
75
+ import { setDefaultBaseUrl } from '@iyulab/components';
76
+
77
+ setDefaultBaseUrl('/static/icons/');
78
+ ```
79
+
80
+ ### Using a third-party icon library
81
+
82
+ Third-party libraries are loaded on-demand from CDN. Supported libraries:
83
+
84
+ | `lib` value | Source | Notes |
85
+ |---|---|---|
86
+ | `internal` | Bundled SVGs | Default, no network |
87
+ | `tabler` | [tabler.io/icons](https://tabler.io/icons) | `name` or `name:filled` |
88
+ | `heroicons` | [heroicons.com](https://heroicons.com) | `name` or `name:solid` |
89
+ | `lucide` | [lucide.dev](https://lucide.dev) | Only outline style |
90
+ | `bootstrap` | [icons.getbootstrap.com](https://icons.getbootstrap.com) | outline / filled |
91
+
92
+ ```html
93
+ <u-icon lib="tabler" name="home"></u-icon>
94
+ <u-icon lib="tabler" name="home:filled"></u-icon>
95
+ <u-icon lib="heroicons" name="academic-cap:solid"></u-icon>
96
+ <u-icon lib="lucide" name="activity"></u-icon>
97
+ ```
98
+
99
+ ### Registering a custom icon library
100
+
101
+ ```ts
102
+ import { IconRegistry } from '@iyulab/components';
103
+
104
+ IconRegistry.register('my-icons', async (name) => {
105
+ const res = await fetch(`/icons/${name}.svg`);
106
+ if (!res.ok) return undefined;
107
+ return res.text();
108
+ });
109
+ ```
110
+
111
+ ```html
112
+ <u-icon lib="my-icons" name="logo"></u-icon>
113
+ ```
114
+
115
+ ### Unregistering
116
+
117
+ ```ts
118
+ IconRegistry.unregister('my-icons');
119
+ ```
120
+
121
+ ---
122
+
123
+ ## CSS Custom Properties
124
+
125
+ Components expose `--` CSS custom properties for visual customization. Apply them on a wrapping element or `:root`:
126
+
127
+ ```css
128
+ :root {
129
+ --alert-background-color: #1a1a2e;
130
+ --spinner-indicator-color: royalblue;
131
+ }
132
+
133
+ u-button {
134
+ --btn-radius: 999px;
135
+ }
136
+ ```
137
+
138
+ ---
139
+
140
+ ## CSS `part` Styling
141
+
142
+ Shadow DOM internals are exposed via `::part()`:
143
+
144
+ ```css
145
+ u-input::part(input) {
146
+ font-size: 1rem;
147
+ letter-spacing: 0.02em;
148
+ }
149
+
150
+ u-dialog::part(panel) {
151
+ border-radius: 1rem;
152
+ box-shadow: 0 8px 32px rgba(0,0,0,0.3);
153
+ }
154
+ ```
155
+
156
+ ---
157
+
158
+ ## Form Integration
159
+
160
+ All form control components (`u-input`, `u-select`, `u-checkbox`, etc.) use the native [ElementInternals](https://developer.mozilla.org/en-US/docs/Web/API/ElementInternals) API (`formAssociated = true`) and work inside standard `<form>` elements.
161
+
162
+ ```html
163
+ <form id="my-form">
164
+ <u-input name="email" type="email" required></u-input>
165
+ <u-select name="role">
166
+ <u-option value="admin">Admin</u-option>
167
+ <u-option value="viewer">Viewer</u-option>
168
+ </u-select>
169
+ <u-button type="submit">Submit</u-button>
170
+ </form>
171
+ ```
172
+
173
+ ### Validating programmatically
174
+
175
+ ```ts
176
+ const input = document.querySelector('u-input');
177
+ input.validate(); // returns boolean, sets `invalid` attribute
178
+ input.reset(); // clears value and validation state
179
+ ```
180
+
181
+ ### Using `u-form` for model binding
182
+
183
+ ```ts
184
+ import { UForm } from '@iyulab/components';
185
+
186
+ const form = document.querySelector('u-form') as UForm;
187
+ form.model = { email: 'user@example.com', role: 'admin' };
188
+
189
+ form.addEventListener('change', () => {
190
+ console.log(form.model); // updated model
191
+ });
192
+ ```
193
+
194
+ ---
195
+
196
+ ## Overlay / Dialog Utilities
197
+
198
+ Open dialogs and toasts programmatically without creating elements manually:
199
+
200
+ ```ts
201
+ import { Dialog, Toast } from '@iyulab/components';
202
+
203
+ // Alert
204
+ await Dialog.alert('Operation completed.');
205
+
206
+ // Confirm
207
+ const confirmed = await Dialog.confirm('Delete this item?');
208
+
209
+ // Prompt
210
+ const name = await Dialog.prompt('Enter your name:', { default: 'Alice' });
211
+
212
+ // Toast
213
+ Toast.success('Saved!');
214
+ Toast.error('Something went wrong.', { duration: 5000 });
215
+ Toast.message('Hello world', { position: 'bottom-center' });
216
+ ```