@ismail-elkorchi/ui-primitives 0.1.0 → 0.1.1

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 (374) hide show
  1. package/README.md +231 -24
  2. package/dist/custom-elements.json +7202 -0
  3. package/dist/index.d.ts +28 -4
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +26 -4
  6. package/dist/index.js.map +1 -1
  7. package/dist/register.d.ts +26 -4
  8. package/dist/register.d.ts.map +1 -1
  9. package/dist/register.js +26 -4
  10. package/dist/register.js.map +1 -1
  11. package/dist/src/atomic/content/uik-badge/element.d.ts +7 -0
  12. package/dist/src/atomic/content/uik-badge/element.d.ts.map +1 -0
  13. package/dist/src/atomic/content/uik-badge/element.js +30 -0
  14. package/dist/src/atomic/content/uik-badge/element.js.map +1 -0
  15. package/dist/src/atomic/content/uik-badge/index.d.ts +2 -0
  16. package/dist/src/atomic/content/uik-badge/index.d.ts.map +1 -0
  17. package/dist/src/atomic/content/uik-badge/index.js +2 -0
  18. package/dist/src/atomic/content/uik-badge/index.js.map +1 -0
  19. package/dist/src/atomic/content/uik-badge/styles.d.ts +2 -0
  20. package/dist/src/atomic/content/uik-badge/styles.d.ts.map +1 -0
  21. package/dist/src/atomic/content/uik-badge/styles.js +61 -0
  22. package/dist/src/atomic/content/uik-badge/styles.js.map +1 -0
  23. package/dist/src/atomic/content/uik-heading/element.d.ts +9 -0
  24. package/dist/src/atomic/content/uik-heading/element.d.ts.map +1 -0
  25. package/dist/src/atomic/content/uik-heading/element.js +77 -0
  26. package/dist/src/atomic/content/uik-heading/element.js.map +1 -0
  27. package/dist/src/atomic/content/uik-heading/index.d.ts +2 -0
  28. package/dist/src/atomic/content/uik-heading/index.d.ts.map +1 -0
  29. package/dist/src/atomic/content/uik-heading/index.js +2 -0
  30. package/dist/src/atomic/content/uik-heading/index.js.map +1 -0
  31. package/dist/src/atomic/content/uik-heading/styles.d.ts +2 -0
  32. package/dist/src/atomic/content/uik-heading/styles.d.ts.map +1 -0
  33. package/dist/src/atomic/content/uik-heading/styles.js +70 -0
  34. package/dist/src/atomic/content/uik-heading/styles.js.map +1 -0
  35. package/dist/src/atomic/content/uik-icon/element.d.ts +10 -0
  36. package/dist/src/atomic/content/uik-icon/element.d.ts.map +1 -0
  37. package/dist/src/atomic/content/uik-icon/element.js +54 -0
  38. package/dist/src/atomic/content/uik-icon/element.js.map +1 -0
  39. package/dist/src/atomic/content/uik-icon/index.d.ts +2 -0
  40. package/dist/src/atomic/content/uik-icon/index.d.ts.map +1 -0
  41. package/dist/src/atomic/content/uik-icon/index.js +2 -0
  42. package/dist/src/atomic/content/uik-icon/index.js.map +1 -0
  43. package/dist/src/atomic/content/uik-icon/styles.d.ts +2 -0
  44. package/dist/src/atomic/content/uik-icon/styles.d.ts.map +1 -0
  45. package/dist/src/atomic/content/uik-icon/styles.js +62 -0
  46. package/dist/src/atomic/content/uik-icon/styles.js.map +1 -0
  47. package/dist/src/atomic/content/uik-text/element.d.ts +11 -0
  48. package/dist/src/atomic/content/uik-text/element.d.ts.map +1 -0
  49. package/dist/src/atomic/content/uik-text/element.js +76 -0
  50. package/dist/src/atomic/content/uik-text/element.js.map +1 -0
  51. package/dist/src/atomic/content/uik-text/index.d.ts +2 -0
  52. package/dist/src/atomic/content/uik-text/index.d.ts.map +1 -0
  53. package/dist/src/atomic/content/uik-text/index.js +2 -0
  54. package/dist/src/atomic/content/uik-text/index.js.map +1 -0
  55. package/dist/src/atomic/content/uik-text/styles.d.ts +2 -0
  56. package/dist/src/atomic/content/uik-text/styles.d.ts.map +1 -0
  57. package/dist/src/atomic/content/uik-text/styles.js +73 -0
  58. package/dist/src/atomic/content/uik-text/styles.js.map +1 -0
  59. package/dist/src/atomic/content/uik-visually-hidden/element.d.ts +6 -0
  60. package/dist/src/atomic/content/uik-visually-hidden/element.d.ts.map +1 -0
  61. package/dist/src/atomic/content/uik-visually-hidden/element.js +22 -0
  62. package/dist/src/atomic/content/uik-visually-hidden/element.js.map +1 -0
  63. package/dist/src/atomic/content/uik-visually-hidden/index.d.ts +2 -0
  64. package/dist/src/atomic/content/uik-visually-hidden/index.d.ts.map +1 -0
  65. package/dist/src/atomic/content/uik-visually-hidden/index.js +2 -0
  66. package/dist/src/atomic/content/uik-visually-hidden/index.js.map +1 -0
  67. package/dist/src/atomic/content/uik-visually-hidden/styles.d.ts +2 -0
  68. package/dist/src/atomic/content/uik-visually-hidden/styles.d.ts.map +1 -0
  69. package/dist/src/atomic/content/uik-visually-hidden/styles.js +19 -0
  70. package/dist/src/atomic/content/uik-visually-hidden/styles.js.map +1 -0
  71. package/dist/src/atomic/control/uik-button/element.d.ts +22 -0
  72. package/dist/src/atomic/control/uik-button/element.d.ts.map +1 -0
  73. package/dist/src/atomic/control/uik-button/element.js +120 -0
  74. package/dist/src/atomic/control/uik-button/element.js.map +1 -0
  75. package/dist/src/atomic/control/uik-button/index.d.ts +2 -0
  76. package/dist/src/atomic/control/uik-button/index.d.ts.map +1 -0
  77. package/dist/src/atomic/control/uik-button/index.js +2 -0
  78. package/dist/src/atomic/control/uik-button/index.js.map +1 -0
  79. package/dist/src/atomic/control/uik-button/styles.d.ts +2 -0
  80. package/dist/src/atomic/control/uik-button/styles.d.ts.map +1 -0
  81. package/dist/src/atomic/control/uik-button/styles.js +180 -0
  82. package/dist/src/atomic/control/uik-button/styles.js.map +1 -0
  83. package/dist/src/atomic/control/uik-checkbox/element.d.ts +36 -0
  84. package/dist/src/atomic/control/uik-checkbox/element.d.ts.map +1 -0
  85. package/dist/src/atomic/control/uik-checkbox/element.js +212 -0
  86. package/dist/src/atomic/control/uik-checkbox/element.js.map +1 -0
  87. package/dist/src/atomic/control/uik-checkbox/index.d.ts +2 -0
  88. package/dist/src/atomic/control/uik-checkbox/index.d.ts.map +1 -0
  89. package/dist/src/atomic/control/uik-checkbox/index.js +2 -0
  90. package/dist/src/atomic/control/uik-checkbox/index.js.map +1 -0
  91. package/dist/src/atomic/control/uik-checkbox/styles.d.ts +2 -0
  92. package/dist/src/atomic/control/uik-checkbox/styles.d.ts.map +1 -0
  93. package/dist/src/atomic/control/uik-checkbox/styles.js +66 -0
  94. package/dist/src/atomic/control/uik-checkbox/styles.js.map +1 -0
  95. package/dist/src/atomic/control/uik-input/element.d.ts +38 -0
  96. package/dist/src/atomic/control/uik-input/element.d.ts.map +1 -0
  97. package/dist/src/atomic/control/uik-input/element.js +232 -0
  98. package/dist/src/atomic/control/uik-input/element.js.map +1 -0
  99. package/dist/src/atomic/control/uik-input/index.d.ts +2 -0
  100. package/dist/src/atomic/control/uik-input/index.d.ts.map +1 -0
  101. package/dist/src/atomic/control/uik-input/index.js +2 -0
  102. package/dist/src/atomic/control/uik-input/index.js.map +1 -0
  103. package/dist/src/atomic/control/uik-input/styles.d.ts +2 -0
  104. package/dist/src/atomic/control/uik-input/styles.d.ts.map +1 -0
  105. package/dist/src/atomic/control/uik-input/styles.js +87 -0
  106. package/dist/src/atomic/control/uik-input/styles.js.map +1 -0
  107. package/dist/src/atomic/control/uik-link/element.d.ts +13 -0
  108. package/dist/src/atomic/control/uik-link/element.d.ts.map +1 -0
  109. package/dist/src/atomic/control/uik-link/element.js +75 -0
  110. package/dist/src/atomic/control/uik-link/element.js.map +1 -0
  111. package/dist/src/atomic/control/uik-link/index.d.ts +2 -0
  112. package/dist/src/atomic/control/uik-link/index.d.ts.map +1 -0
  113. package/dist/src/atomic/control/uik-link/index.js +2 -0
  114. package/dist/src/atomic/control/uik-link/index.js.map +1 -0
  115. package/dist/src/atomic/control/uik-link/styles.d.ts +2 -0
  116. package/dist/src/atomic/control/uik-link/styles.d.ts.map +1 -0
  117. package/dist/src/atomic/control/uik-link/styles.js +43 -0
  118. package/dist/src/atomic/control/uik-link/styles.js.map +1 -0
  119. package/dist/src/atomic/control/uik-radio/element.d.ts +37 -0
  120. package/dist/src/atomic/control/uik-radio/element.d.ts.map +1 -0
  121. package/dist/src/atomic/control/uik-radio/element.js +215 -0
  122. package/dist/src/atomic/control/uik-radio/element.js.map +1 -0
  123. package/dist/src/atomic/control/uik-radio/index.d.ts +2 -0
  124. package/dist/src/atomic/control/uik-radio/index.d.ts.map +1 -0
  125. package/dist/src/atomic/control/uik-radio/index.js +2 -0
  126. package/dist/src/atomic/control/uik-radio/index.js.map +1 -0
  127. package/dist/src/atomic/control/uik-radio/styles.d.ts +2 -0
  128. package/dist/src/atomic/control/uik-radio/styles.d.ts.map +1 -0
  129. package/dist/src/atomic/control/uik-radio/styles.js +66 -0
  130. package/dist/src/atomic/control/uik-radio/styles.js.map +1 -0
  131. package/dist/src/atomic/control/uik-select/element.d.ts +38 -0
  132. package/dist/src/atomic/control/uik-select/element.d.ts.map +1 -0
  133. package/dist/src/atomic/control/uik-select/element.js +220 -0
  134. package/dist/src/atomic/control/uik-select/element.js.map +1 -0
  135. package/dist/src/atomic/control/uik-select/index.d.ts +2 -0
  136. package/dist/src/atomic/control/uik-select/index.d.ts.map +1 -0
  137. package/dist/src/atomic/control/uik-select/index.js +2 -0
  138. package/dist/src/atomic/control/uik-select/index.js.map +1 -0
  139. package/dist/src/atomic/control/uik-select/styles.d.ts +2 -0
  140. package/dist/src/atomic/control/uik-select/styles.d.ts.map +1 -0
  141. package/dist/src/atomic/control/uik-select/styles.js +86 -0
  142. package/dist/src/atomic/control/uik-select/styles.js.map +1 -0
  143. package/dist/src/atomic/control/uik-switch/element.d.ts +33 -0
  144. package/dist/src/atomic/control/uik-switch/element.d.ts.map +1 -0
  145. package/dist/src/atomic/control/uik-switch/element.js +197 -0
  146. package/dist/src/atomic/control/uik-switch/element.js.map +1 -0
  147. package/dist/src/atomic/control/uik-switch/index.d.ts +2 -0
  148. package/dist/src/atomic/control/uik-switch/index.d.ts.map +1 -0
  149. package/dist/src/atomic/control/uik-switch/index.js +2 -0
  150. package/dist/src/atomic/control/uik-switch/index.js.map +1 -0
  151. package/dist/src/atomic/control/uik-switch/styles.d.ts +2 -0
  152. package/dist/src/atomic/control/uik-switch/styles.d.ts.map +1 -0
  153. package/dist/src/atomic/control/uik-switch/styles.js +102 -0
  154. package/dist/src/atomic/control/uik-switch/styles.js.map +1 -0
  155. package/dist/src/atomic/control/uik-textarea/element.d.ts +37 -0
  156. package/dist/src/atomic/control/uik-textarea/element.d.ts.map +1 -0
  157. package/dist/src/atomic/control/uik-textarea/element.js +207 -0
  158. package/dist/src/atomic/control/uik-textarea/element.js.map +1 -0
  159. package/dist/src/atomic/control/uik-textarea/index.d.ts +2 -0
  160. package/dist/src/atomic/control/uik-textarea/index.d.ts.map +1 -0
  161. package/dist/src/atomic/control/uik-textarea/index.js +2 -0
  162. package/dist/src/atomic/control/uik-textarea/index.js.map +1 -0
  163. package/dist/src/atomic/control/uik-textarea/styles.d.ts +2 -0
  164. package/dist/src/atomic/control/uik-textarea/styles.d.ts.map +1 -0
  165. package/dist/src/atomic/control/uik-textarea/styles.js +96 -0
  166. package/dist/src/atomic/control/uik-textarea/styles.js.map +1 -0
  167. package/dist/src/atomic/feedback/uik-alert/element.d.ts +8 -0
  168. package/dist/src/atomic/feedback/uik-alert/element.d.ts.map +1 -0
  169. package/dist/src/atomic/feedback/uik-alert/element.js +40 -0
  170. package/dist/src/atomic/feedback/uik-alert/element.js.map +1 -0
  171. package/dist/src/atomic/feedback/uik-alert/index.d.ts +2 -0
  172. package/dist/src/atomic/feedback/uik-alert/index.d.ts.map +1 -0
  173. package/dist/src/atomic/feedback/uik-alert/index.js +2 -0
  174. package/dist/src/atomic/feedback/uik-alert/index.js.map +1 -0
  175. package/dist/src/atomic/feedback/uik-alert/styles.d.ts +2 -0
  176. package/dist/src/atomic/feedback/uik-alert/styles.d.ts.map +1 -0
  177. package/dist/src/atomic/feedback/uik-alert/styles.js +53 -0
  178. package/dist/src/atomic/feedback/uik-alert/styles.js.map +1 -0
  179. package/dist/src/atomic/feedback/uik-progress/element.d.ts +11 -0
  180. package/dist/src/atomic/feedback/uik-progress/element.d.ts.map +1 -0
  181. package/dist/src/atomic/feedback/uik-progress/element.js +59 -0
  182. package/dist/src/atomic/feedback/uik-progress/element.js.map +1 -0
  183. package/dist/src/atomic/feedback/uik-progress/index.d.ts +2 -0
  184. package/dist/src/atomic/feedback/uik-progress/index.d.ts.map +1 -0
  185. package/dist/src/atomic/feedback/uik-progress/index.js +2 -0
  186. package/dist/src/atomic/feedback/uik-progress/index.js.map +1 -0
  187. package/dist/src/atomic/feedback/uik-progress/styles.d.ts +2 -0
  188. package/dist/src/atomic/feedback/uik-progress/styles.d.ts.map +1 -0
  189. package/dist/src/atomic/feedback/uik-progress/styles.js +32 -0
  190. package/dist/src/atomic/feedback/uik-progress/styles.js.map +1 -0
  191. package/dist/src/atomic/feedback/uik-spinner/element.d.ts +8 -0
  192. package/dist/src/atomic/feedback/uik-spinner/element.d.ts.map +1 -0
  193. package/dist/src/atomic/feedback/uik-spinner/element.js +34 -0
  194. package/dist/src/atomic/feedback/uik-spinner/element.js.map +1 -0
  195. package/dist/src/atomic/feedback/uik-spinner/index.d.ts +2 -0
  196. package/dist/src/atomic/feedback/uik-spinner/index.d.ts.map +1 -0
  197. package/dist/src/atomic/feedback/uik-spinner/index.js +2 -0
  198. package/dist/src/atomic/feedback/uik-spinner/index.js.map +1 -0
  199. package/dist/src/atomic/feedback/uik-spinner/styles.d.ts +2 -0
  200. package/dist/src/atomic/feedback/uik-spinner/styles.d.ts.map +1 -0
  201. package/dist/src/atomic/feedback/uik-spinner/styles.js +62 -0
  202. package/dist/src/atomic/feedback/uik-spinner/styles.js.map +1 -0
  203. package/dist/src/atomic/layout/uik-box/element.d.ts +8 -0
  204. package/dist/src/atomic/layout/uik-box/element.d.ts.map +1 -0
  205. package/dist/src/atomic/layout/uik-box/element.js +36 -0
  206. package/dist/src/atomic/layout/uik-box/element.js.map +1 -0
  207. package/dist/src/atomic/layout/uik-box/index.d.ts +2 -0
  208. package/dist/src/atomic/layout/uik-box/index.d.ts.map +1 -0
  209. package/dist/src/atomic/layout/uik-box/index.js +2 -0
  210. package/dist/src/atomic/layout/uik-box/index.js.map +1 -0
  211. package/dist/src/atomic/layout/uik-box/styles.d.ts +2 -0
  212. package/dist/src/atomic/layout/uik-box/styles.d.ts.map +1 -0
  213. package/dist/src/atomic/layout/uik-box/styles.js +44 -0
  214. package/dist/src/atomic/layout/uik-box/styles.js.map +1 -0
  215. package/dist/src/atomic/layout/uik-separator/element.d.ts +7 -0
  216. package/dist/src/atomic/layout/uik-separator/element.d.ts.map +1 -0
  217. package/dist/{Separator.js → src/atomic/layout/uik-separator/element.js} +14 -29
  218. package/dist/src/atomic/layout/uik-separator/element.js.map +1 -0
  219. package/dist/src/atomic/layout/uik-separator/index.d.ts +2 -0
  220. package/dist/src/atomic/layout/uik-separator/index.d.ts.map +1 -0
  221. package/dist/src/atomic/layout/uik-separator/index.js +2 -0
  222. package/dist/src/atomic/layout/uik-separator/index.js.map +1 -0
  223. package/dist/src/atomic/layout/uik-separator/styles.d.ts +2 -0
  224. package/dist/src/atomic/layout/uik-separator/styles.d.ts.map +1 -0
  225. package/dist/src/atomic/layout/uik-separator/styles.js +25 -0
  226. package/dist/src/atomic/layout/uik-separator/styles.js.map +1 -0
  227. package/dist/src/atomic/layout/uik-stack/element.d.ts +10 -0
  228. package/dist/src/atomic/layout/uik-stack/element.d.ts.map +1 -0
  229. package/dist/src/atomic/layout/uik-stack/element.js +48 -0
  230. package/dist/src/atomic/layout/uik-stack/element.js.map +1 -0
  231. package/dist/src/atomic/layout/uik-stack/index.d.ts +2 -0
  232. package/dist/src/atomic/layout/uik-stack/index.d.ts.map +1 -0
  233. package/dist/src/atomic/layout/uik-stack/index.js +2 -0
  234. package/dist/src/atomic/layout/uik-stack/index.js.map +1 -0
  235. package/dist/src/atomic/layout/uik-stack/styles.d.ts +2 -0
  236. package/dist/src/atomic/layout/uik-stack/styles.d.ts.map +1 -0
  237. package/dist/src/atomic/layout/uik-stack/styles.js +71 -0
  238. package/dist/src/atomic/layout/uik-stack/styles.js.map +1 -0
  239. package/dist/src/atomic/layout/uik-surface/element.d.ts +8 -0
  240. package/dist/src/atomic/layout/uik-surface/element.d.ts.map +1 -0
  241. package/dist/src/atomic/layout/uik-surface/element.js +36 -0
  242. package/dist/src/atomic/layout/uik-surface/element.js.map +1 -0
  243. package/dist/src/atomic/layout/uik-surface/index.d.ts +2 -0
  244. package/dist/src/atomic/layout/uik-surface/index.d.ts.map +1 -0
  245. package/dist/src/atomic/layout/uik-surface/index.js +2 -0
  246. package/dist/src/atomic/layout/uik-surface/index.js.map +1 -0
  247. package/dist/src/atomic/layout/uik-surface/styles.d.ts +2 -0
  248. package/dist/src/atomic/layout/uik-surface/styles.d.ts.map +1 -0
  249. package/dist/src/atomic/layout/uik-surface/styles.js +40 -0
  250. package/dist/src/atomic/layout/uik-surface/styles.js.map +1 -0
  251. package/dist/src/atomic/overlay/uik-dialog/element.d.ts +23 -0
  252. package/dist/src/atomic/overlay/uik-dialog/element.d.ts.map +1 -0
  253. package/dist/src/atomic/overlay/uik-dialog/element.js +135 -0
  254. package/dist/src/atomic/overlay/uik-dialog/element.js.map +1 -0
  255. package/dist/src/atomic/overlay/uik-dialog/index.d.ts +2 -0
  256. package/dist/src/atomic/overlay/uik-dialog/index.d.ts.map +1 -0
  257. package/dist/src/atomic/overlay/uik-dialog/index.js +2 -0
  258. package/dist/src/atomic/overlay/uik-dialog/index.js.map +1 -0
  259. package/dist/src/atomic/overlay/uik-dialog/styles.d.ts +2 -0
  260. package/dist/src/atomic/overlay/uik-dialog/styles.d.ts.map +1 -0
  261. package/dist/src/atomic/overlay/uik-dialog/styles.js +50 -0
  262. package/dist/src/atomic/overlay/uik-dialog/styles.js.map +1 -0
  263. package/dist/src/atomic/overlay/uik-popover/element.d.ts +40 -0
  264. package/dist/src/atomic/overlay/uik-popover/element.d.ts.map +1 -0
  265. package/dist/src/atomic/overlay/uik-popover/element.js +232 -0
  266. package/dist/src/atomic/overlay/uik-popover/element.js.map +1 -0
  267. package/dist/src/atomic/overlay/uik-popover/index.d.ts +2 -0
  268. package/dist/src/atomic/overlay/uik-popover/index.d.ts.map +1 -0
  269. package/dist/src/atomic/overlay/uik-popover/index.js +2 -0
  270. package/dist/src/atomic/overlay/uik-popover/index.js.map +1 -0
  271. package/dist/src/atomic/overlay/uik-popover/styles.d.ts +3 -0
  272. package/dist/src/atomic/overlay/uik-popover/styles.d.ts.map +1 -0
  273. package/dist/src/atomic/overlay/uik-popover/styles.js +56 -0
  274. package/dist/src/atomic/overlay/uik-popover/styles.js.map +1 -0
  275. package/dist/src/composed/collection/uik-nav/element.d.ts +41 -0
  276. package/dist/src/composed/collection/uik-nav/element.d.ts.map +1 -0
  277. package/dist/src/composed/collection/uik-nav/element.js +192 -0
  278. package/dist/src/composed/collection/uik-nav/element.js.map +1 -0
  279. package/dist/src/composed/collection/uik-nav/index.d.ts +3 -0
  280. package/dist/src/composed/collection/uik-nav/index.d.ts.map +1 -0
  281. package/dist/src/composed/collection/uik-nav/index.js +2 -0
  282. package/dist/src/composed/collection/uik-nav/index.js.map +1 -0
  283. package/dist/src/composed/collection/uik-nav/styles.d.ts +2 -0
  284. package/dist/src/composed/collection/uik-nav/styles.d.ts.map +1 -0
  285. package/dist/src/composed/collection/uik-nav/styles.js +113 -0
  286. package/dist/src/composed/collection/uik-nav/styles.js.map +1 -0
  287. package/dist/src/composed/collection/uik-radio-group/element.d.ts +38 -0
  288. package/dist/src/composed/collection/uik-radio-group/element.d.ts.map +1 -0
  289. package/dist/src/composed/collection/uik-radio-group/element.js +257 -0
  290. package/dist/src/composed/collection/uik-radio-group/element.js.map +1 -0
  291. package/dist/src/composed/collection/uik-radio-group/index.d.ts +2 -0
  292. package/dist/src/composed/collection/uik-radio-group/index.d.ts.map +1 -0
  293. package/dist/src/composed/collection/uik-radio-group/index.js +2 -0
  294. package/dist/src/composed/collection/uik-radio-group/index.js.map +1 -0
  295. package/dist/src/composed/collection/uik-radio-group/styles.d.ts +2 -0
  296. package/dist/src/composed/collection/uik-radio-group/styles.d.ts.map +1 -0
  297. package/dist/src/composed/collection/uik-radio-group/styles.js +46 -0
  298. package/dist/src/composed/collection/uik-radio-group/styles.js.map +1 -0
  299. package/dist/src/composed/collection/uik-tree-view/element.d.ts +54 -0
  300. package/dist/src/composed/collection/uik-tree-view/element.d.ts.map +1 -0
  301. package/dist/src/composed/collection/uik-tree-view/element.js +364 -0
  302. package/dist/src/composed/collection/uik-tree-view/element.js.map +1 -0
  303. package/dist/src/composed/collection/uik-tree-view/index.d.ts +3 -0
  304. package/dist/src/composed/collection/uik-tree-view/index.d.ts.map +1 -0
  305. package/dist/src/composed/collection/uik-tree-view/index.js +2 -0
  306. package/dist/src/composed/collection/uik-tree-view/index.js.map +1 -0
  307. package/dist/src/composed/collection/uik-tree-view/styles.d.ts +2 -0
  308. package/dist/src/composed/collection/uik-tree-view/styles.d.ts.map +1 -0
  309. package/dist/src/composed/collection/uik-tree-view/styles.js +121 -0
  310. package/dist/src/composed/collection/uik-tree-view/styles.js.map +1 -0
  311. package/dist/src/composed/overlay/uik-tooltip/element.d.ts +38 -0
  312. package/dist/src/composed/overlay/uik-tooltip/element.d.ts.map +1 -0
  313. package/dist/src/composed/overlay/uik-tooltip/element.js +229 -0
  314. package/dist/src/composed/overlay/uik-tooltip/element.js.map +1 -0
  315. package/dist/src/composed/overlay/uik-tooltip/index.d.ts +2 -0
  316. package/dist/src/composed/overlay/uik-tooltip/index.d.ts.map +1 -0
  317. package/dist/src/composed/overlay/uik-tooltip/index.js +2 -0
  318. package/dist/src/composed/overlay/uik-tooltip/index.js.map +1 -0
  319. package/dist/src/composed/overlay/uik-tooltip/styles.d.ts +3 -0
  320. package/dist/src/composed/overlay/uik-tooltip/styles.d.ts.map +1 -0
  321. package/dist/src/composed/overlay/uik-tooltip/styles.js +19 -0
  322. package/dist/src/composed/overlay/uik-tooltip/styles.js.map +1 -0
  323. package/dist/src/internal/collection/index.d.ts +3 -0
  324. package/dist/src/internal/collection/index.d.ts.map +1 -0
  325. package/dist/src/internal/collection/index.js +2 -0
  326. package/dist/src/internal/collection/index.js.map +1 -0
  327. package/dist/src/internal/collection/tree.d.ts +29 -0
  328. package/dist/src/internal/collection/tree.d.ts.map +1 -0
  329. package/dist/src/internal/collection/tree.js +92 -0
  330. package/dist/src/internal/collection/tree.js.map +1 -0
  331. package/dist/src/internal/dom/id.d.ts +2 -0
  332. package/dist/src/internal/dom/id.d.ts.map +1 -0
  333. package/dist/src/internal/dom/id.js +6 -0
  334. package/dist/src/internal/dom/id.js.map +1 -0
  335. package/dist/src/internal/dom/index.d.ts +2 -0
  336. package/dist/src/internal/dom/index.d.ts.map +1 -0
  337. package/dist/src/internal/dom/index.js +2 -0
  338. package/dist/src/internal/dom/index.js.map +1 -0
  339. package/dist/src/internal/index.d.ts +5 -0
  340. package/dist/src/internal/index.d.ts.map +1 -0
  341. package/dist/src/internal/index.js +4 -0
  342. package/dist/src/internal/index.js.map +1 -0
  343. package/dist/src/internal/overlay/dismiss.d.ts +7 -0
  344. package/dist/src/internal/overlay/dismiss.d.ts.map +1 -0
  345. package/dist/src/internal/overlay/dismiss.js +32 -0
  346. package/dist/src/internal/overlay/dismiss.js.map +1 -0
  347. package/dist/src/internal/overlay/positioning.d.ts +4 -0
  348. package/dist/src/internal/overlay/positioning.d.ts.map +1 -0
  349. package/dist/src/internal/overlay/positioning.js +16 -0
  350. package/dist/src/internal/overlay/positioning.js.map +1 -0
  351. package/dist/src/internal/slots/index.d.ts +2 -0
  352. package/dist/src/internal/slots/index.d.ts.map +1 -0
  353. package/dist/src/internal/slots/index.js +2 -0
  354. package/dist/src/internal/slots/index.js.map +1 -0
  355. package/dist/src/internal/slots/slots.d.ts +3 -0
  356. package/dist/src/internal/slots/slots.d.ts.map +1 -0
  357. package/dist/src/internal/slots/slots.js +16 -0
  358. package/dist/src/internal/slots/slots.js.map +1 -0
  359. package/package.json +148 -24
  360. package/dist/Badge.d.ts +0 -7
  361. package/dist/Badge.d.ts.map +0 -1
  362. package/dist/Badge.js +0 -69
  363. package/dist/Badge.js.map +0 -1
  364. package/dist/Button.d.ts +0 -12
  365. package/dist/Button.d.ts.map +0 -1
  366. package/dist/Button.js +0 -205
  367. package/dist/Button.js.map +0 -1
  368. package/dist/Input.d.ts +0 -14
  369. package/dist/Input.d.ts.map +0 -1
  370. package/dist/Input.js +0 -110
  371. package/dist/Input.js.map +0 -1
  372. package/dist/Separator.d.ts +0 -7
  373. package/dist/Separator.d.ts.map +0 -1
  374. package/dist/Separator.js.map +0 -1
package/README.md CHANGED
@@ -2,21 +2,37 @@
2
2
 
3
3
  Shadow DOM web components backed by the shared token CSS variables from `@ismail-elkorchi/ui-tokens`. They ship no Tailwind and assume tokens are loaded on `:root`.
4
4
 
5
- ## Build & distribution
6
-
7
- - `npm run build` emits ESM + `.d.ts` files into `dist/`.
8
- - Exported subpaths map directly to files: `dist/index.js`, `dist/register.js`, `dist/Button.js`, `dist/Badge.js`, `dist/Input.js`, `dist/Separator.js`.
9
- - Published artifacts include only `dist/` and this README; TypeScript sources stay in the workspace.
10
-
11
5
  ## Usage
12
6
 
13
7
  ```ts
14
8
  import '@ismail-elkorchi/ui-primitives/register'; // defines all elements
15
9
  // or import individual components for tree-shaking:
16
- import '@ismail-elkorchi/ui-primitives/button';
17
- import '@ismail-elkorchi/ui-primitives/badge';
18
- import '@ismail-elkorchi/ui-primitives/input';
19
- import '@ismail-elkorchi/ui-primitives/separator';
10
+ import '@ismail-elkorchi/ui-primitives/uik-alert';
11
+ import '@ismail-elkorchi/ui-primitives/uik-badge';
12
+ import '@ismail-elkorchi/ui-primitives/uik-box';
13
+ import '@ismail-elkorchi/ui-primitives/uik-button';
14
+ import '@ismail-elkorchi/ui-primitives/uik-checkbox';
15
+ import '@ismail-elkorchi/ui-primitives/uik-dialog';
16
+ import '@ismail-elkorchi/ui-primitives/uik-heading';
17
+ import '@ismail-elkorchi/ui-primitives/uik-icon';
18
+ import '@ismail-elkorchi/ui-primitives/uik-input';
19
+ import '@ismail-elkorchi/ui-primitives/uik-link';
20
+ import '@ismail-elkorchi/ui-primitives/uik-nav';
21
+ import '@ismail-elkorchi/ui-primitives/uik-tree-view';
22
+ import '@ismail-elkorchi/ui-primitives/uik-popover';
23
+ import '@ismail-elkorchi/ui-primitives/uik-progress';
24
+ import '@ismail-elkorchi/ui-primitives/uik-radio';
25
+ import '@ismail-elkorchi/ui-primitives/uik-radio-group';
26
+ import '@ismail-elkorchi/ui-primitives/uik-select';
27
+ import '@ismail-elkorchi/ui-primitives/uik-separator';
28
+ import '@ismail-elkorchi/ui-primitives/uik-spinner';
29
+ import '@ismail-elkorchi/ui-primitives/uik-stack';
30
+ import '@ismail-elkorchi/ui-primitives/uik-surface';
31
+ import '@ismail-elkorchi/ui-primitives/uik-switch';
32
+ import '@ismail-elkorchi/ui-primitives/uik-text';
33
+ import '@ismail-elkorchi/ui-primitives/uik-textarea';
34
+ import '@ismail-elkorchi/ui-primitives/uik-tooltip';
35
+ import '@ismail-elkorchi/ui-primitives/uik-visually-hidden';
20
36
  ```
21
37
 
22
38
  Ensure your app imports tokens before Tailwind so the theme variables exist:
@@ -28,36 +44,227 @@ Ensure your app imports tokens before Tailwind so the theme variables exist:
28
44
 
29
45
  ## Parts (consistent strategy)
30
46
 
31
- - `uik-button`: `part="base"` on the internal `<button>`.
32
- - `uik-badge`: `part="base"` on the internal `<div>`.
33
- - `uik-input`: `part="base"` on the internal `<input>`.
34
- - `uik-separator`: `part="base"` on the internal `<div>` line.
47
+ - Most components expose `part="base"` on the primary element.
48
+ - Form-field primitives expose `part="control"` wrappers plus `part="label"`, `part="hint"`, and `part="error"` slots when slotted.
49
+ - Layout and text primitives expose `part="base"` on their container or rendered tag.
35
50
 
36
51
  ## Components and contracts
37
52
 
53
+ ### `<uik-alert>`
54
+
55
+ - **Attributes/props**: `variant` (`neutral | info | success | warning | danger`).
56
+ - **Slots**: `title`, default slot for message body.
57
+ - **Parts**: `base`, `title`, `body`.
58
+ - **Events**: none special.
59
+ - **A11y**: `role="status"` by default; `role="alert"` for warning/danger.
60
+ - **Custom properties**: `--uik-component-alert-{neutral|info|success|warning|danger}-{bg|border|fg}`.
61
+
62
+ ### `<uik-badge>`
63
+
64
+ - **Attributes/props**: `variant` (`default | secondary | danger | outline`).
65
+ - **Events**: none special; behaves like an inline element.
66
+ - **Styling hooks**: token-driven colors and `part="base"`.
67
+
68
+ ### `<uik-box>`
69
+
70
+ - **Attributes/props**: `padding` (`0-6`), `inline` (boolean).
71
+ - **Slots**: default.
72
+ - **Parts**: `base`.
73
+ - **Custom properties**: `--uik-component-box-padding-{0..6}`, `--uik-component-box-bg`, `--uik-component-box-bg-opacity`, `--uik-component-box-border-color`, `--uik-component-box-border-opacity`, `--uik-component-box-border-width`, `--uik-component-box-radius`.
74
+
38
75
  ### `<uik-button>`
39
76
 
40
- - **Attributes/props**: `variant` (`default | destructive | outline | secondary | ghost | link`), `size` (`default | sm | lg | icon`), `type` (`button | submit | reset` - defaults to `button`), `active` (boolean), `muted` (boolean), `disabled` (boolean).
77
+ - **Attributes/props**: `variant` (`solid | danger | outline | secondary | ghost | link`), `size` (`default | sm | lg | icon`), `type` (`button | submit | reset` - defaults to `button`), `tabIndexValue` (number), `active` (boolean), `muted` (boolean), `disabled` (boolean).
41
78
  - **Events**: native button events (`click`, focus/blur) bubble from the internal button; disabled buttons swallow click.
42
79
  - **Styling hooks**:
43
80
  - Sizing is enforced on the `:host`. The internal button fills the host (100% width/height).
44
81
  - `active`/`muted` props control stateful colors (especially for ghost variant).
45
82
  - `part="base"` allows overrides, but avoid fighting the host sizing.
83
+ - **A11y**: `aria-label`/`aria-labelledby`/`aria-pressed` are forwarded to the internal `<button>` for icon-only buttons and toggle states.
84
+ - **Forms**: `type="submit"` and `type="reset"` invoke `form.requestSubmit()`/`form.reset()` when inside a form.
46
85
 
47
- ### `<uik-badge>`
86
+ ### `<uik-checkbox>`
48
87
 
49
- - **Attributes/props**: `variant` (`default | secondary | destructive | outline`).
50
- - **Events**: none special; behaves like an inline element.
51
- - **Styling hooks**: token-driven colors and `part="base"`.
88
+ - **Attributes/props**: `name`, `value`, `checked`, `indeterminate` (boolean), `disabled`, `required`, `invalid`, `tabIndexValue` (number).
89
+ - **Slots**: `label`, `hint`, `error`.
90
+ - **Parts**: `base`, `control`, `label`, `hint`, `error`.
91
+ - **Events**: native `change` bubbles from the internal `<input>`.
92
+ - **A11y**: label slot or `aria-label`; hint/error slots are announced via `aria-describedby`.
93
+ - **Forms**: form-associated and participates in `FormData` when checked.
94
+ - **Custom properties**: `--uik-component-checkbox-accent`, `--uik-component-checkbox-size`.
95
+
96
+ ### `<uik-dialog>`
97
+
98
+ - **Attributes/props**: `open`, `modal` (boolean).
99
+ - **Slots**: `title`, `description`, default slot for body, `actions`.
100
+ - **Parts**: `base`, `panel`, `title`, `description`, `body`, `actions`.
101
+ - **Events**: native `close`/`cancel` from `<dialog>` bubble.
102
+ - **A11y**: uses native dialog semantics and forwards `aria-label`/`aria-labelledby`/`aria-describedby` to `<dialog>`.
103
+ - **Methods**: `showModal()`, `show()`, `close()`.
104
+
105
+ ### `<uik-heading>`
106
+
107
+ - **Attributes/props**: `level` (`1-6`), `tone` (`default | strong | muted | danger | success | warning | info`).
108
+ - **Slots**: default.
109
+ - **Parts**: `base`.
110
+ - **Custom properties**: `--uik-component-heading-size-{1..6}`, `--uik-component-heading-line-height-{1..6}`, `--uik-component-heading-weight`, `--uik-component-heading-color-{default|strong|muted|danger|success|warning|info}`.
111
+
112
+ ### `<uik-icon>`
113
+
114
+ - **Attributes/props**: `size` (`xs | sm | md | lg`), `tone` (`default | muted | danger | success | warning | info | inverse`).
115
+ - **Slots**: default slot for SVG.
116
+ - **Parts**: `base`.
117
+ - **A11y**: set `aria-label` for meaningful icons or `aria-hidden` for decorative ones.
118
+ - **Custom properties**: `--uik-component-icon-size-{xs|sm|md|lg}`, `--uik-component-icon-color-{default|muted|danger|success|warning|info|inverse}`.
119
+
120
+ ### `<uik-input>`
121
+
122
+ - **Attributes/props**: `type`, `name`, `value`, `placeholder`, `disabled`, `required`, `readonly`, `invalid`, `autocomplete`, `inputmode`, `enterkeyhint`. Optional `aria-label`/`aria-labelledby` are forwarded when no label slot is provided.
123
+ - **Slots**: `label`, `hint`, `error`.
124
+ - **Events**: native `input` and `change` bubble from the internal `<input>` (no re-dispatch).
125
+ - **A11y**: label slot associates via `for`, hint/error slot text is wired to `aria-describedby`, and `aria-invalid` is set when `invalid` or an error slot is present.
126
+ - **Forms**: form-associated via `ElementInternals` and participates in `FormData` when `name` is set.
127
+
128
+ ### `<uik-link>`
129
+
130
+ - **Attributes/props**: `href`, `target`, `rel`, `download`.
131
+ - **Slots**: default slot for link text.
132
+ - **Parts**: `base`.
133
+ - **Events**: native anchor events bubble from the internal `<a>`.
134
+ - **A11y**: forwards `aria-label`/`aria-labelledby`/`aria-describedby` to `<a>`.
135
+ - **Custom properties**: `--uik-component-link-fg-default`, `--uik-component-link-fg-hover`, `--uik-component-link-underline-offset`.
136
+
137
+ ### `<uik-tree-view>`
138
+
139
+ - **Attributes/props**: `items` (array), `selectedIds` (string[]), `openIds` (string[]).
140
+ - **Slots**: none.
141
+ - **Parts**: `base`, `item`, `toggle`, `selection`, `label`.
142
+ - **Events**: `tree-view-select`, `tree-view-open`, `tree-view-toggle`.
143
+ - **A11y**: `role="tree"` with roving focus; Space toggles selection, Enter opens/toggles; `aria-checked` reflects tri-state.
144
+ - **Custom properties**: `--uik-component-tree-view-item-*`, `--uik-component-tree-view-indent`, `--uik-component-tree-view-text-*`, `--uik-component-tree-view-toggle-fg`.
52
145
 
53
- ### `<uik-input>` (event strategy)
146
+ ### `<uik-nav>`
54
147
 
55
- - **Attributes/props**: `type`, `placeholder`, `value`, `disabled`, `label` (required for a11y, sets `aria-label`).
56
- - **Events**: re-dispatches `input` and `change` as `CustomEvent`s with `detail: { value, originalEvent }`, `bubbles: true`, `composed: true`. The internal native event is stopped to avoid duplicate handlers; listen on the custom element for `input`/`change`.
57
- - **Styling hooks**: token-driven colors, `part="base"`. The `value` property stays in sync with user input.
148
+ - **Attributes/props**: `items` (array), `openIds` (string[]), `currentId`.
149
+ - **Slots**: none.
150
+ - **Parts**: `base`, `item`, `toggle`, `link`, `label`.
151
+ - **Events**: `nav-select`, `nav-toggle`.
152
+ - **A11y**: renders links inside a `<nav>` element with `aria-current="page"` for the active item.
153
+ - **Custom properties**: `--uik-component-nav-item-*`, `--uik-component-nav-indent`, `--uik-component-nav-text-*`, `--uik-component-nav-toggle-fg`.
154
+
155
+ ### `<uik-popover>`
156
+
157
+ - **Attributes/props**: `open`, `placement` (`bottom-start | bottom | bottom-end | top-start | top | top-end`), `popover` (`auto | manual | hint`).
158
+ - **Slots**: `trigger`, default slot for panel content.
159
+ - **Parts**: `control` (trigger wrapper), `base` (panel).
160
+ - **Events**: native events bubble from slotted trigger; panel listens for `toggle` when supported.
161
+ - **A11y**: forwards `aria-label`/`aria-labelledby`/`aria-describedby` to the panel.
162
+ - **Behavior**: uses the Popover API when available; falls back to a positioned panel in Shadow DOM.
163
+
164
+ ### `<uik-progress>`
165
+
166
+ - **Attributes/props**: `value`, `max`, `indeterminate` (boolean).
167
+ - **Slots**: none.
168
+ - **Parts**: `base`.
169
+ - **A11y**: forwards `aria-label`/`aria-labelledby` to the internal `<progress>`.
170
+ - **Custom properties**: `--uik-component-progress-track-bg`, `--uik-component-progress-bar-bg`, `--uik-component-progress-height`, `--uik-component-progress-min-width`, `--uik-component-progress-radius`.
171
+
172
+ ### `<uik-radio>`
173
+
174
+ - **Attributes/props**: `name`, `value`, `checked`, `disabled`, `required`, `invalid`.
175
+ - **Slots**: `label`, `hint`, `error`.
176
+ - **Parts**: `base`, `control`, `label`, `hint`, `error`.
177
+ - **Events**: native `change` bubbles from the internal `<input>`.
178
+ - **A11y**: label slot or `aria-label`; hint/error slots are announced via `aria-describedby`.
179
+ - **Forms**: form-associated; when inside `uik-radio-group`, the group manages the submitted value.
180
+ - **Custom properties**: `--uik-component-radio-accent`, `--uik-component-radio-size`.
181
+
182
+ ### `<uik-radio-group>`
183
+
184
+ - **Attributes/props**: `name`, `value`, `orientation` (`vertical | horizontal`), `disabled`, `required`, `invalid`.
185
+ - **Slots**: `label`, `hint`, `error`, default slot for `<uik-radio>` children.
186
+ - **Parts**: `base`, `control`, `label`, `hint`, `error`.
187
+ - **Events**: native `change` bubbles from child radios.
188
+ - **A11y**: label slot wires to `aria-labelledby`; hint/error are announced via `aria-describedby`.
189
+ - **Keyboard**: arrow keys move selection within the group.
190
+ - **Forms**: form-associated via `ElementInternals`.
191
+ - **Custom properties**: `--uik-component-radio-group-gap`.
58
192
 
59
193
  ### `<uik-separator>`
60
194
 
61
195
  - **Attributes/props**: `orientation` (`horizontal | vertical`).
62
196
  - **Events**: none; presentational.
63
- - **Styling hooks**: token-driven color, `part="base"`.
197
+ - **Styling hooks**: token-driven color, `part="base"`. Horizontal renders as `<hr>`, vertical as `role="separator"`.
198
+
199
+ ### `<uik-select>`
200
+
201
+ - **Attributes/props**: `name`, `value`, `disabled`, `required`, `invalid`.
202
+ - **Slots**: `label`, `hint`, `error`, default slot for `<option>` elements.
203
+ - **Parts**: `base`, `control`, `label`, `hint`, `error`.
204
+ - **Events**: native `change` bubbles from the internal `<select>`.
205
+ - **A11y**: label slot or `aria-label`; hint/error slots are announced via `aria-describedby`.
206
+ - **Forms**: form-associated via `ElementInternals`.
207
+ - **Custom properties**: `--uik-component-select-base-*` (bg, border-default, border-hover, border-focus, fg, padding-x, padding-y, radius, shadow, font-size, line-height).
208
+
209
+ ### `<uik-spinner>`
210
+
211
+ - **Attributes/props**: `size` (`sm | md | lg`), `tone` (`default | muted | primary | danger | success | warning | info`).
212
+ - **Slots**: none.
213
+ - **Parts**: `base`.
214
+ - **Motion**: animation stops when `prefers-reduced-motion: reduce`.
215
+ - **Custom properties**: `--uik-component-spinner-size-{sm|md|lg}`, `--uik-component-spinner-track`, `--uik-component-spinner-indicator-{default|muted|primary|danger|success|warning|info}`.
216
+
217
+ ### `<uik-stack>`
218
+
219
+ - **Attributes/props**: `direction` (`vertical | horizontal`), `gap` (`1-6`), `align` (`start | center | end | stretch`), `justify` (`start | center | end | between`).
220
+ - **Slots**: default.
221
+ - **Parts**: `base`.
222
+ - **Custom properties**: `--uik-component-stack-gap-{1..6}`.
223
+
224
+ ### `<uik-surface>`
225
+
226
+ - **Attributes/props**: `variant` (`base | muted | card | elevated | popover`), `bordered` (boolean).
227
+ - **Slots**: default.
228
+ - **Parts**: `base`.
229
+ - **Custom properties**: `--uik-component-surface-bg-{default|muted|card|elevated|popover}`, `--uik-component-surface-shadow-{default|card|elevated|popover}`, `--uik-component-surface-border-color-{default|bordered}`, `--uik-component-surface-border-width-{default|bordered}`, `--uik-component-surface-radius`.
230
+
231
+ ### `<uik-switch>`
232
+
233
+ - **Attributes/props**: `name`, `value`, `checked`, `disabled`, `required`, `invalid`.
234
+ - **Slots**: `label`, `hint`, `error`.
235
+ - **Parts**: `base`, `control`, `track`, `thumb`, `label`, `hint`, `error`.
236
+ - **Events**: native `change` bubbles from the internal `<input>`.
237
+ - **A11y**: `role="switch"` plus label slot or `aria-label`.
238
+ - **Forms**: form-associated and participates in `FormData` when checked.
239
+ - **Custom properties**: `--uik-component-switch-height`, `--uik-component-switch-width`, `--uik-component-switch-padding`, `--uik-component-switch-thumb-size`, `--uik-component-switch-thumb-bg`, `--uik-component-switch-thumb-shadow`, `--uik-component-switch-track-bg-default`, `--uik-component-switch-track-bg-checked`, `--uik-component-switch-track-border-default`, `--uik-component-switch-track-border-checked`.
240
+
241
+ ### `<uik-text>`
242
+
243
+ - **Attributes/props**: `as` (`span | p | div | label`), `size` (`sm | md | lg | xl`), `weight` (`regular | medium | semibold | bold`), `tone` (`default | muted | strong | danger | success | warning | info`), `truncate` (boolean).
244
+ - **Slots**: default.
245
+ - **Parts**: `base`.
246
+ - **Custom properties**: `--uik-component-text-size-{sm|md|lg|xl}`, `--uik-component-text-line-height-{sm|md|lg|xl}`, `--uik-component-text-weight-{regular|medium|semibold|bold}`, `--uik-component-text-color-{default|muted|strong|danger|success|warning|info}`.
247
+
248
+ ### `<uik-textarea>`
249
+
250
+ - **Attributes/props**: `name`, `value`, `placeholder`, `rows`, `disabled`, `required`, `readonly`, `invalid`.
251
+ - **Slots**: `label`, `hint`, `error`.
252
+ - **Parts**: `base`, `control`, `label`, `hint`, `error`.
253
+ - **Events**: native `input` and `change` bubble from the internal `<textarea>`.
254
+ - **A11y**: label slot or `aria-label`; hint/error slots are announced via `aria-describedby`.
255
+ - **Forms**: form-associated via `ElementInternals`.
256
+ - **Custom properties**: `--uik-component-textarea-base-*` (bg, border-default, border-hover, border-focus, fg, placeholder, padding-x, padding-y, radius, shadow, font-size, line-height, min-height).
257
+
258
+ ### `<uik-tooltip>`
259
+
260
+ - **Attributes/props**: `open`, `placement`, `popover` (defaults to `popover="hint"`).
261
+ - **Slots**: `trigger`, default slot for tooltip content.
262
+ - **Parts**: `control` (trigger wrapper), `base` (panel).
263
+ - **A11y**: panel uses `role="tooltip"` and wires `aria-describedby` onto the trigger.
264
+
265
+ ### `<uik-visually-hidden>`
266
+
267
+ - **Attributes/props**: none.
268
+ - **Slots**: default.
269
+ - **Parts**: `base`.
270
+ - **A11y**: hides content visually while keeping it available to assistive tech.