@editora/ui-core 0.1.25 → 0.2.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 (349) hide show
  1. package/README.md +132 -0
  2. package/dist/accordion.cjs.js +13 -12
  3. package/dist/accordion.esm.js +13 -12
  4. package/dist/alert-dialog.cjs.js +92 -53
  5. package/dist/alert-dialog.esm.js +211 -159
  6. package/dist/alert.cjs.js +42 -33
  7. package/dist/alert.esm.js +80 -71
  8. package/dist/animated-beam.cjs.js +42 -50
  9. package/dist/animated-beam.esm.js +47 -55
  10. package/dist/animated-list.cjs.js +11 -27
  11. package/dist/animated-list.esm.js +12 -28
  12. package/dist/animated-text.cjs.js +9 -9
  13. package/dist/animated-text.esm.js +9 -9
  14. package/dist/app-header.cjs.js +17 -12
  15. package/dist/app-header.esm.js +18 -13
  16. package/dist/aspect-ratio.cjs.js +10 -12
  17. package/dist/aspect-ratio.esm.js +11 -13
  18. package/dist/avatar.cjs.js +16 -20
  19. package/dist/avatar.esm.js +16 -20
  20. package/dist/badge.cjs.js +27 -22
  21. package/dist/badge.esm.js +32 -27
  22. package/dist/block-controls.cjs.js +11 -12
  23. package/dist/block-controls.esm.js +8 -9
  24. package/dist/box.cjs.js +2 -3
  25. package/dist/box.esm.js +2 -3
  26. package/dist/breadcrumb.cjs.js +12 -18
  27. package/dist/breadcrumb.esm.js +11 -17
  28. package/dist/button.cjs.js +1 -1
  29. package/dist/button.esm.js +1 -1
  30. package/dist/{calendar-D-mXMgqc.js → calendar-CzpWDxLc.js} +56 -46
  31. package/dist/{calendar-B3PUKHQm.mjs → calendar-DkSDFg33.mjs} +127 -117
  32. package/dist/calendar.cjs.js +1 -1
  33. package/dist/calendar.esm.js +1 -1
  34. package/dist/card.cjs.js +6 -7
  35. package/dist/card.esm.js +5 -6
  36. package/dist/chart.cjs.js +58 -52
  37. package/dist/chart.esm.js +101 -95
  38. package/dist/checkbox.cjs.js +19 -15
  39. package/dist/checkbox.esm.js +19 -15
  40. package/dist/collapsible.cjs.js +9 -13
  41. package/dist/collapsible.esm.js +9 -13
  42. package/dist/color-picker.cjs.js +38 -19
  43. package/dist/color-picker.esm.js +134 -115
  44. package/dist/combobox.cjs.js +60 -57
  45. package/dist/combobox.esm.js +96 -92
  46. package/dist/command-palette.cjs.js +1 -0
  47. package/dist/command-palette.esm.js +1 -0
  48. package/dist/command.cjs.js +32 -14
  49. package/dist/command.esm.js +46 -28
  50. package/dist/components/date-time-utils.d.ts.map +1 -1
  51. package/dist/components/ui-accordion.d.ts.map +1 -1
  52. package/dist/components/ui-alert-dialog.d.ts +2 -0
  53. package/dist/components/ui-alert-dialog.d.ts.map +1 -1
  54. package/dist/components/ui-alert.d.ts.map +1 -1
  55. package/dist/components/ui-animated-beam.d.ts.map +1 -1
  56. package/dist/components/ui-animated-list.d.ts.map +1 -1
  57. package/dist/components/ui-app-header.d.ts.map +1 -1
  58. package/dist/components/ui-aspect-ratio.d.ts.map +1 -1
  59. package/dist/components/ui-avatar.d.ts.map +1 -1
  60. package/dist/components/ui-badge.d.ts.map +1 -1
  61. package/dist/components/ui-block-controls.d.ts.map +1 -1
  62. package/dist/components/ui-box.d.ts.map +1 -1
  63. package/dist/components/ui-breadcrumb.d.ts.map +1 -1
  64. package/dist/components/ui-button.d.ts.map +1 -1
  65. package/dist/components/ui-calendar.d.ts.map +1 -1
  66. package/dist/components/ui-card.d.ts.map +1 -1
  67. package/dist/components/ui-chart.d.ts.map +1 -1
  68. package/dist/components/ui-checkbox.d.ts.map +1 -1
  69. package/dist/components/ui-collapsible.d.ts.map +1 -1
  70. package/dist/components/ui-color-picker.d.ts.map +1 -1
  71. package/dist/components/ui-combobox.d.ts.map +1 -1
  72. package/dist/components/ui-command-palette.d.ts.map +1 -1
  73. package/dist/components/ui-command.d.ts.map +1 -1
  74. package/dist/components/ui-container.d.ts.map +1 -1
  75. package/dist/components/ui-context-menu.d.ts.map +1 -1
  76. package/dist/components/ui-data-table.d.ts +7 -0
  77. package/dist/components/ui-data-table.d.ts.map +1 -1
  78. package/dist/components/ui-date-picker.d.ts.map +1 -1
  79. package/dist/components/ui-date-range-picker.d.ts.map +1 -1
  80. package/dist/components/ui-date-range-time-picker.d.ts.map +1 -1
  81. package/dist/components/ui-date-time-picker.d.ts.map +1 -1
  82. package/dist/components/ui-dialog.d.ts +2 -0
  83. package/dist/components/ui-dialog.d.ts.map +1 -1
  84. package/dist/components/ui-dock.d.ts.map +1 -1
  85. package/dist/components/ui-drawer.d.ts.map +1 -1
  86. package/dist/components/ui-dropdown.d.ts.map +1 -1
  87. package/dist/components/ui-empty-state.d.ts.map +1 -1
  88. package/dist/components/ui-field.d.ts.map +1 -1
  89. package/dist/components/ui-fieldset.d.ts.map +1 -1
  90. package/dist/components/ui-file-upload.d.ts.map +1 -1
  91. package/dist/components/ui-floating-toolbar.d.ts.map +1 -1
  92. package/dist/components/ui-form.d.ts.map +1 -1
  93. package/dist/components/ui-gantt.d.ts.map +1 -1
  94. package/dist/components/ui-hover-card.d.ts.map +1 -1
  95. package/dist/components/ui-icon-cloud.d.ts.map +1 -1
  96. package/dist/components/ui-inline-edit.d.ts.map +1 -1
  97. package/dist/components/ui-input.d.ts.map +1 -1
  98. package/dist/components/ui-marquee.d.ts.map +1 -1
  99. package/dist/components/ui-menu.d.ts.map +1 -1
  100. package/dist/components/ui-menubar.d.ts.map +1 -1
  101. package/dist/components/ui-meter.d.ts.map +1 -1
  102. package/dist/components/ui-multi-select.d.ts.map +1 -1
  103. package/dist/components/ui-number-field.d.ts.map +1 -1
  104. package/dist/components/ui-orbiter.d.ts.map +1 -1
  105. package/dist/components/ui-pagination.d.ts.map +1 -1
  106. package/dist/components/ui-password-field.d.ts.map +1 -1
  107. package/dist/components/ui-pin-input.d.ts.map +1 -1
  108. package/dist/components/ui-popover.d.ts.map +1 -1
  109. package/dist/components/ui-progress.d.ts.map +1 -1
  110. package/dist/components/ui-radio-group.d.ts.map +1 -1
  111. package/dist/components/ui-radio.d.ts.map +1 -1
  112. package/dist/components/ui-rating.d.ts +1 -0
  113. package/dist/components/ui-rating.d.ts.map +1 -1
  114. package/dist/components/ui-scroll-area.d.ts.map +1 -1
  115. package/dist/components/ui-section.d.ts.map +1 -1
  116. package/dist/components/ui-select.d.ts.map +1 -1
  117. package/dist/components/ui-selection-popup.d.ts.map +1 -1
  118. package/dist/components/ui-sidebar.d.ts.map +1 -1
  119. package/dist/components/ui-slider.d.ts.map +1 -1
  120. package/dist/components/ui-sortable.d.ts.map +1 -1
  121. package/dist/components/ui-spinning-text.d.ts.map +1 -1
  122. package/dist/components/ui-split-button.d.ts.map +1 -1
  123. package/dist/components/ui-splitter.d.ts.map +1 -1
  124. package/dist/components/ui-stepper.d.ts.map +1 -1
  125. package/dist/components/ui-switch.d.ts.map +1 -1
  126. package/dist/components/ui-tabs.d.ts.map +1 -1
  127. package/dist/components/ui-tags-input.d.ts.map +1 -1
  128. package/dist/components/ui-textarea.d.ts.map +1 -1
  129. package/dist/components/ui-time-picker.d.ts.map +1 -1
  130. package/dist/components/ui-toggle-group.d.ts +2 -0
  131. package/dist/components/ui-toggle-group.d.ts.map +1 -1
  132. package/dist/components/ui-toggle.d.ts.map +1 -1
  133. package/dist/components/ui-toolbar.d.ts +2 -0
  134. package/dist/components/ui-toolbar.d.ts.map +1 -1
  135. package/dist/components/ui-tooltip.d.ts.map +1 -1
  136. package/dist/components/ui-transfer-list.d.ts.map +1 -1
  137. package/dist/components/ui-tree-item.d.ts.map +1 -1
  138. package/dist/components/ui-tree.d.ts.map +1 -1
  139. package/dist/components/ui-wizard.d.ts.map +1 -1
  140. package/dist/container.cjs.js +6 -12
  141. package/dist/container.esm.js +8 -14
  142. package/dist/context-menu.cjs.js +8 -8
  143. package/dist/context-menu.esm.js +42 -41
  144. package/dist/data-table.cjs.js +21 -18
  145. package/dist/data-table.esm.js +210 -190
  146. package/dist/date-field.cjs.js +9 -9
  147. package/dist/date-field.esm.js +19 -19
  148. package/dist/date-picker.cjs.js +29 -20
  149. package/dist/date-picker.esm.js +59 -50
  150. package/dist/date-range-picker.cjs.js +24 -19
  151. package/dist/date-range-picker.esm.js +86 -81
  152. package/dist/date-range-time-picker.cjs.js +27 -20
  153. package/dist/date-range-time-picker.esm.js +24 -17
  154. package/dist/date-time-picker.cjs.js +24 -17
  155. package/dist/date-time-picker.esm.js +89 -82
  156. package/dist/date-time-utils-C-4eHTyy.js +1 -0
  157. package/dist/{date-time-utils-BTlxnz5j.mjs → date-time-utils-zAx4ghvC.mjs} +75 -68
  158. package/dist/description.cjs.js +4 -4
  159. package/dist/description.esm.js +4 -4
  160. package/dist/dialog.cjs.js +59 -43
  161. package/dist/dialog.esm.js +86 -53
  162. package/dist/direction-provider.cjs.js +1 -1
  163. package/dist/direction-provider.esm.js +1 -1
  164. package/dist/dock.cjs.js +16 -30
  165. package/dist/dock.esm.js +26 -40
  166. package/dist/drawer.cjs.js +8 -12
  167. package/dist/drawer.esm.js +6 -10
  168. package/dist/dropdown.cjs.js +8 -6
  169. package/dist/dropdown.esm.js +33 -30
  170. package/dist/empty-state.cjs.js +17 -15
  171. package/dist/empty-state.esm.js +13 -11
  172. package/dist/field-error.cjs.js +1 -1
  173. package/dist/field-error.esm.js +7 -7
  174. package/dist/field.cjs.js +23 -14
  175. package/dist/field.esm.js +30 -21
  176. package/dist/fieldset.cjs.js +16 -9
  177. package/dist/fieldset.esm.js +19 -12
  178. package/dist/file-upload.cjs.js +79 -37
  179. package/dist/file-upload.esm.js +154 -112
  180. package/dist/flex.cjs.js +2 -2
  181. package/dist/flex.esm.js +8 -8
  182. package/dist/floating-toolbar.cjs.js +6 -7
  183. package/dist/floating-toolbar.esm.js +8 -9
  184. package/dist/form.cjs.js +24 -27
  185. package/dist/form.esm.js +24 -27
  186. package/dist/gantt.cjs.js +13 -11
  187. package/dist/gantt.esm.js +13 -11
  188. package/dist/grid.cjs.js +1 -1
  189. package/dist/grid.esm.js +1 -1
  190. package/dist/hover-card.cjs.js +8 -8
  191. package/dist/hover-card.esm.js +18 -15
  192. package/dist/icon-cloud.cjs.js +19 -36
  193. package/dist/icon-cloud.esm.js +41 -58
  194. package/dist/index.cjs.js +1 -1
  195. package/dist/index.d.ts +2 -0
  196. package/dist/index.d.ts.map +1 -1
  197. package/dist/index.esm.js +108 -104
  198. package/dist/inline-edit.cjs.js +50 -22
  199. package/dist/inline-edit.esm.js +77 -49
  200. package/dist/input.cjs.js +45 -38
  201. package/dist/input.esm.js +60 -53
  202. package/dist/label.cjs.js +6 -6
  203. package/dist/label.esm.js +6 -6
  204. package/dist/layout.cjs.js +3 -3
  205. package/dist/layout.esm.js +3 -3
  206. package/dist/marquee.cjs.js +7 -10
  207. package/dist/marquee.esm.js +7 -10
  208. package/dist/masonry-grid.cjs.js +2 -2
  209. package/dist/masonry-grid.esm.js +11 -11
  210. package/dist/{menu-item-styles-IGSFLAHu.mjs → menu-item-styles-CdqxPUuw.mjs} +15 -15
  211. package/dist/{menu-item-styles-B4onAr4C.js → menu-item-styles-DUdyjQ7i.js} +10 -10
  212. package/dist/menu.cjs.js +8 -24
  213. package/dist/menu.esm.js +52 -72
  214. package/dist/menubar.cjs.js +9 -31
  215. package/dist/menubar.esm.js +127 -153
  216. package/dist/meter.cjs.js +4 -9
  217. package/dist/meter.esm.js +6 -11
  218. package/dist/multi-select.cjs.js +53 -40
  219. package/dist/multi-select.esm.js +87 -73
  220. package/dist/navigation-menu.cjs.js +10 -10
  221. package/dist/navigation-menu.esm.js +33 -33
  222. package/dist/number-field.cjs.js +28 -17
  223. package/dist/number-field.esm.js +37 -26
  224. package/dist/number-ticker.cjs.js +4 -4
  225. package/dist/number-ticker.esm.js +10 -10
  226. package/dist/odometer.cjs.js +9 -9
  227. package/dist/odometer.esm.js +17 -17
  228. package/dist/orbiter.cjs.js +11 -28
  229. package/dist/orbiter.esm.js +28 -45
  230. package/dist/overlay-motion-B56x1GoY.js +49 -0
  231. package/dist/overlay-motion-BX3dPLay.mjs +120 -0
  232. package/dist/pagination.cjs.js +28 -25
  233. package/dist/pagination.esm.js +54 -51
  234. package/dist/password-field.cjs.js +39 -34
  235. package/dist/password-field.esm.js +63 -58
  236. package/dist/pin-input.cjs.js +18 -14
  237. package/dist/pin-input.esm.js +24 -20
  238. package/dist/placement-grid.cjs.js +1 -1
  239. package/dist/placement-grid.esm.js +1 -1
  240. package/dist/plugin-panel.cjs.js +1 -1
  241. package/dist/plugin-panel.esm.js +1 -1
  242. package/dist/popover.cjs.js +16 -28
  243. package/dist/popover.esm.js +29 -45
  244. package/dist/portal-DeaM1tYY.mjs +121 -0
  245. package/dist/portal-XbYR3m_q.js +1 -0
  246. package/dist/portal.cjs.js +1 -1
  247. package/dist/portal.d.ts +3 -1
  248. package/dist/portal.d.ts.map +1 -1
  249. package/dist/portal.esm.js +1 -1
  250. package/dist/{positioner-D0VGxtYU.mjs → positioner-BE8Nbho2.mjs} +5 -3
  251. package/dist/{positioner-D_fqyx_j.js → positioner-DZ1FW6A9.js} +1 -1
  252. package/dist/positioner.cjs.js +1 -1
  253. package/dist/positioner.esm.js +1 -1
  254. package/dist/presence.cjs.js +1 -1
  255. package/dist/presence.esm.js +1 -1
  256. package/dist/primitives/overlay-motion.d.ts +47 -0
  257. package/dist/primitives/overlay-motion.d.ts.map +1 -0
  258. package/dist/primitives/positioner.d.ts.map +1 -1
  259. package/dist/progress.cjs.js +11 -16
  260. package/dist/progress.esm.js +37 -42
  261. package/dist/quick-actions.cjs.js +14 -14
  262. package/dist/quick-actions.esm.js +12 -12
  263. package/dist/radio-group.cjs.js +50 -26
  264. package/dist/radio-group.esm.js +53 -29
  265. package/dist/radio.cjs.js +16 -13
  266. package/dist/radio.esm.js +16 -13
  267. package/dist/rating.cjs.js +11 -15
  268. package/dist/rating.esm.js +48 -50
  269. package/dist/{runtime-CFnK53iC.mjs → runtime-BRT7E4A8.mjs} +563 -531
  270. package/dist/runtime-CXw4SGV9.js +5 -0
  271. package/dist/runtime.cjs.js +1 -1
  272. package/dist/runtime.d.ts +3 -2
  273. package/dist/runtime.d.ts.map +1 -1
  274. package/dist/runtime.esm.js +36 -32
  275. package/dist/scroll-area.cjs.js +3 -4
  276. package/dist/scroll-area.esm.js +3 -4
  277. package/dist/section.cjs.js +2 -4
  278. package/dist/section.esm.js +2 -4
  279. package/dist/select.cjs.js +42 -75
  280. package/dist/select.esm.js +57 -89
  281. package/dist/selection-popup.cjs.js +3 -4
  282. package/dist/selection-popup.esm.js +3 -4
  283. package/dist/semantic-tokens.d.ts +17 -0
  284. package/dist/semantic-tokens.d.ts.map +1 -0
  285. package/dist/separator.cjs.js +6 -6
  286. package/dist/separator.esm.js +7 -7
  287. package/dist/sidebar.cjs.js +29 -28
  288. package/dist/sidebar.esm.js +32 -31
  289. package/dist/skeleton.cjs.js +2 -2
  290. package/dist/skeleton.esm.js +2 -2
  291. package/dist/slider.cjs.js +22 -26
  292. package/dist/slider.esm.js +25 -29
  293. package/dist/slot.cjs.js +1 -1
  294. package/dist/slot.esm.js +1 -1
  295. package/dist/sortable.cjs.js +10 -11
  296. package/dist/sortable.esm.js +10 -11
  297. package/dist/spinning-text.cjs.js +4 -13
  298. package/dist/spinning-text.esm.js +4 -13
  299. package/dist/split-button.cjs.js +7 -7
  300. package/dist/split-button.esm.js +17 -16
  301. package/dist/splitter.cjs.js +52 -10
  302. package/dist/splitter.esm.js +55 -13
  303. package/dist/stepper.cjs.js +31 -65
  304. package/dist/stepper.esm.js +32 -66
  305. package/dist/switch.cjs.js +20 -22
  306. package/dist/switch.esm.js +20 -22
  307. package/dist/table.cjs.js +5 -5
  308. package/dist/table.esm.js +20 -20
  309. package/dist/tabs.cjs.js +101 -26
  310. package/dist/tabs.esm.js +187 -112
  311. package/dist/tags-input.cjs.js +43 -17
  312. package/dist/tags-input.esm.js +75 -49
  313. package/dist/textarea.cjs.js +34 -35
  314. package/dist/textarea.esm.js +50 -51
  315. package/dist/theme.d.ts +25 -1
  316. package/dist/theme.d.ts.map +1 -1
  317. package/dist/time-field.cjs.js +8 -8
  318. package/dist/time-field.esm.js +29 -29
  319. package/dist/time-picker.cjs.js +17 -14
  320. package/dist/time-picker.esm.js +28 -25
  321. package/dist/timeline.cjs.js +10 -10
  322. package/dist/timeline.esm.js +7 -7
  323. package/dist/toast.cjs.js +2 -2
  324. package/dist/toast.esm.js +2 -2
  325. package/dist/toggle-group.cjs.js +13 -13
  326. package/dist/toggle-group.esm.js +66 -61
  327. package/dist/toggle.cjs.js +52 -34
  328. package/dist/toggle.esm.js +80 -62
  329. package/dist/toolbar.cjs.js +14 -14
  330. package/dist/toolbar.esm.js +41 -33
  331. package/dist/tooltip.cjs.js +3 -3
  332. package/dist/tooltip.esm.js +39 -33
  333. package/dist/transfer-list.cjs.js +37 -38
  334. package/dist/transfer-list.esm.js +32 -33
  335. package/dist/{tree-B_oQput6.mjs → tree-33fVNnaf.mjs} +6 -5
  336. package/dist/{tree-SivHxcAy.js → tree-Dc02MChE.js} +6 -5
  337. package/dist/tree-item.cjs.js +9 -8
  338. package/dist/tree-item.esm.js +13 -12
  339. package/dist/tree.cjs.js +1 -1
  340. package/dist/tree.esm.js +1 -1
  341. package/dist/{ui-button-Co8Sid6t.mjs → ui-button-C3OmI7Sn.mjs} +152 -154
  342. package/dist/{ui-button-BPrzJScZ.js → ui-button-CnLwXBnx.js} +107 -109
  343. package/dist/wizard.cjs.js +51 -39
  344. package/dist/wizard.esm.js +51 -39
  345. package/package.json +1 -1
  346. package/dist/date-time-utils-y3AvNvGe.js +0 -1
  347. package/dist/portal-DgpQ3Jo1.js +0 -1
  348. package/dist/portal-bR42gHvG.mjs +0 -118
  349. package/dist/runtime-DwE-tizc.js +0 -1
@@ -1,18 +1,19 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const S=require("./ElementBase-DxbvhLJs.js"),f=require("./control-name-BmoI1m3a.js"),k=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const S=require("./ElementBase-DxbvhLJs.js"),m=require("./control-name-BmoI1m3a.js"),k=`
2
2
  :host {
3
3
  --ui-tags-input-padding: 10px 12px;
4
- --ui-tags-input-border-color: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 78%, transparent);
4
+ --ui-tags-input-border-color: var(--ui-color-line, var(--ui-color-border, #cbd5e1));
5
5
  --ui-tags-input-border: 1px solid var(--ui-tags-input-border-color);
6
- --ui-tags-input-radius: var(--ui-radius, 12px);
6
+ --ui-tags-input-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
7
7
  --ui-tags-input-bg: var(--ui-color-surface, #ffffff);
8
8
  --ui-tags-input-text: var(--ui-color-text, #0f172a);
9
9
  --ui-tags-input-muted: var(--ui-color-muted, #526175);
10
10
  --ui-tags-input-focus: var(--ui-color-focus-ring, #2563eb);
11
- --ui-tags-input-danger: var(--ui-color-danger, #dc2626);
11
+ --ui-tags-input-danger: var(--ui-color-danger-text, var(--ui-color-danger, #dc2626));
12
12
  --ui-tags-input-chip-bg: color-mix(in srgb, var(--ui-color-primary, #2563eb) 10%, transparent);
13
- --ui-tags-input-chip-text: color-mix(in srgb, var(--ui-color-primary, #2563eb) 82%, #0f172a 18%);
13
+ --ui-tags-input-chip-text: color-mix(in srgb, var(--ui-color-primary, #2563eb) 45%, var(--ui-color-text-strong, #0f172a));
14
14
  --ui-tags-input-chip-remove-bg: color-mix(in srgb, currentColor 8%, transparent);
15
- --ui-tags-input-min-height: 44px;
15
+ --ui-tags-input-min-height: var(--ui-control-height-2, 32px);
16
+ --ui-tags-input-font-size: var(--ui-control-font-size-2, 14px);
16
17
  display: block;
17
18
  inline-size: 100%;
18
19
  max-inline-size: 100%;
@@ -22,6 +23,26 @@
22
23
  color-scheme: light dark;
23
24
  }
24
25
 
26
+ :host([size="sm"]),
27
+ :host([size="1"]) {
28
+ --ui-tags-input-min-height: var(--ui-control-height-1, 24px);
29
+ --ui-tags-input-font-size: var(--ui-control-font-size-1, 12px);
30
+ --ui-tags-input-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
31
+ --ui-tags-input-pad-y: 0px;
32
+ --ui-tags-input-pad-x: calc(var(--ui-control-padding-inline-1, 8px) - 1px);
33
+ --ui-tags-input-chip-pad-y: 0px;
34
+ }
35
+
36
+ :host([size="lg"]),
37
+ :host([size="3"]) {
38
+ --ui-tags-input-min-height: var(--ui-control-height-3, 40px);
39
+ --ui-tags-input-font-size: var(--ui-control-font-size-3, 16px);
40
+ --ui-tags-input-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
41
+ --ui-tags-input-pad-y: 5px;
42
+ --ui-tags-input-pad-x: calc(var(--ui-control-padding-inline-3, 16px) - 1px);
43
+ --ui-tags-input-chip-pad-y: 4px;
44
+ }
45
+
25
46
  .root {
26
47
  display: grid;
27
48
  gap: 8px;
@@ -75,7 +96,7 @@
75
96
  gap: 8px;
76
97
  min-block-size: var(--ui-tags-input-min-height);
77
98
  box-sizing: border-box;
78
- padding: 8px 10px;
99
+ padding: var(--ui-tags-input-pad-y, 3px) var(--ui-tags-input-pad-x, calc(var(--ui-control-padding-inline-2, 12px) - 1px));
79
100
  border: var(--ui-tags-input-border);
80
101
  border-radius: var(--ui-tags-input-radius);
81
102
  background: var(--ui-tags-input-bg);
@@ -83,13 +104,18 @@
83
104
  }
84
105
 
85
106
  .shell[data-focused="true"] {
86
- border-color: color-mix(in srgb, var(--ui-tags-input-focus) 58%, var(--ui-tags-input-border-color));
87
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-tags-input-focus) 22%, transparent);
107
+ border-color: var(--ui-ring-color, var(--ui-tags-input-focus));
108
+ outline: var(--ui-ring-width, 2px) solid var(--ui-ring-color, var(--ui-tags-input-focus));
109
+ outline-offset: -1px;
110
+ }
111
+
112
+ .shell:hover:not([data-focused="true"]) {
113
+ border-color: var(--ui-color-line-strong, var(--ui-tags-input-border-color));
88
114
  }
89
115
 
90
116
  .shell[data-invalid="true"] {
91
117
  border-color: color-mix(in srgb, var(--ui-tags-input-danger) 62%, transparent);
92
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-tags-input-danger) 16%, transparent);
118
+ box-shadow: 0 0 0 1px var(--ui-tags-input-danger);
93
119
  }
94
120
 
95
121
  .chips {
@@ -102,7 +128,7 @@
102
128
  gap: 6px;
103
129
  min-inline-size: 0;
104
130
  max-inline-size: 100%;
105
- padding: 6px 8px 6px 10px;
131
+ padding: var(--ui-tags-input-chip-pad-y, 2px) 4px var(--ui-tags-input-chip-pad-y, 2px) 10px;
106
132
  border-radius: 999px;
107
133
  background: var(--ui-tags-input-chip-bg);
108
134
  color: var(--ui-tags-input-chip-text);
@@ -142,13 +168,13 @@
142
168
  background: transparent;
143
169
  color: inherit;
144
170
  outline: none;
145
- font: 500 14px/1.4 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
146
- padding: 4px 2px;
171
+ font: 500 var(--ui-tags-input-font-size)/1.4 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
172
+ padding: 2px 2px;
147
173
  margin: 0;
148
174
  }
149
175
 
150
176
  .input::placeholder {
151
- color: color-mix(in srgb, var(--ui-tags-input-text) 42%, transparent);
177
+ color: var(--ui-color-placeholder, color-mix(in srgb, var(--ui-tags-input-text) 62%, transparent));
152
178
  }
153
179
 
154
180
  .assist {
@@ -181,8 +207,8 @@
181
207
  :host([readonly]) .chip-remove {
182
208
  pointer-events: none;
183
209
  }
184
- `;function b(r,t){return r.length===t.length&&r.every((i,e)=>i===t[e])}function d(r){if(!r)return[];const t=r.trim();if(!t)return[];if(t.startsWith("["))try{const i=JSON.parse(t);if(Array.isArray(i))return i.map(e=>String(e).trim()).filter(Boolean)}catch{}return t.split(",").map(i=>i.trim()).filter(Boolean)}function C(r){return r.length?r.some(t=>t.includes(",")||t.includes(`
185
- `))?JSON.stringify(r):r.join(", "):""}function c(r){return r.replace(/\s+/g," ").trim()}let T=0;class v extends S.ElementBase{constructor(){super(),this._tags=[],this._draft="",this._suppressValueAttr=!1,this._formUnregister=null,this._rootEl=null,this._shellEl=null,this._chipsEl=null,this._inputEl=null,this._uid=`ui-tags-input-${++T}`,this._labelEl=null,this._descriptionEl=null,this._errorEl=null,this._assistEl=null,this._counterEl=null,this._focused=!1,this._onInput=this._onInput.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onFocusIn=this._onFocusIn.bind(this),this._onFocusOut=this._onFocusOut.bind(this),this._onPaste=this._onPaste.bind(this),this._onShellClick=this._onShellClick.bind(this),this._onChipClick=this._onChipClick.bind(this)}static get observedAttributes(){return["value","label","aria-label","aria-description","aria-describedby","description","placeholder","data-error","required","disabled","readonly","name","max-tags","counter"]}get value(){return[...this._tags]}set value(t){const i=Array.isArray(t)?t.map(e=>c(String(e))).filter(Boolean):d(String(t??""));this._applyTags(i,"api")}addTag(t){return this._addTag(t,"api")}removeTag(t){if(typeof t=="number"){if(t<0||t>=this._tags.length)return;this._removeTagAt(t,"api");return}const i=this._tags.indexOf(t);i>=0&&this._removeTagAt(i,"api")}clearTags(){this._applyTags([],"api")}focusInput(){this._inputEl?.focus()}connectedCallback(){super.connectedCallback(),this._registerWithForm()}disconnectedCallback(){this._formUnregister&&(this._formUnregister(),this._formUnregister=null),super.disconnectedCallback()}attributeChangedCallback(t,i,e){if(i!==e){if(t==="name"&&this.isConnected&&this._registerWithForm(),t==="value"&&!this._suppressValueAttr){const s=d(e);b(s,this._tags)||(this._tags=s)}this._rootEl&&this._syncUi()}}shouldRenderOnAttributeChange(){return!1}render(){this.setContent(`
210
+ `;function b(r,t){return r.length===t.length&&r.every((i,e)=>i===t[e])}function d(r){if(!r)return[];const t=r.trim();if(!t)return[];if(t.startsWith("["))try{const i=JSON.parse(t);if(Array.isArray(i))return i.map(e=>String(e).trim()).filter(Boolean)}catch{}return t.split(",").map(i=>i.trim()).filter(Boolean)}function z(r){return r.length?r.some(t=>t.includes(",")||t.includes(`
211
+ `))?JSON.stringify(r):r.join(", "):""}function p(r){return r.replace(/\s+/g," ").trim()}let C=0;class v extends S.ElementBase{constructor(){super(),this._tags=[],this._draft="",this._suppressValueAttr=!1,this._formUnregister=null,this._rootEl=null,this._shellEl=null,this._chipsEl=null,this._inputEl=null,this._uid=`ui-tags-input-${++C}`,this._labelEl=null,this._descriptionEl=null,this._errorEl=null,this._assistEl=null,this._counterEl=null,this._focused=!1,this._onInput=this._onInput.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onFocusIn=this._onFocusIn.bind(this),this._onFocusOut=this._onFocusOut.bind(this),this._onPaste=this._onPaste.bind(this),this._onShellClick=this._onShellClick.bind(this),this._onChipClick=this._onChipClick.bind(this)}static get observedAttributes(){return["value","label","aria-label","aria-description","aria-describedby","description","placeholder","data-error","required","disabled","readonly","name","max-tags","counter"]}get value(){return[...this._tags]}set value(t){const i=Array.isArray(t)?t.map(e=>p(String(e))).filter(Boolean):d(String(t??""));this._applyTags(i,"api")}addTag(t){return this._addTag(t,"api")}removeTag(t){if(typeof t=="number"){if(t<0||t>=this._tags.length)return;this._removeTagAt(t,"api");return}const i=this._tags.indexOf(t);i>=0&&this._removeTagAt(i,"api")}clearTags(){this._applyTags([],"api")}focusInput(){this._inputEl?.focus()}connectedCallback(){super.connectedCallback(),this._registerWithForm()}disconnectedCallback(){this._formUnregister&&(this._formUnregister(),this._formUnregister=null),super.disconnectedCallback()}attributeChangedCallback(t,i,e){if(i!==e){if(t==="name"&&this.isConnected&&this._registerWithForm(),t==="value"&&!this._suppressValueAttr){const s=d(e);b(s,this._tags)||(this._tags=s)}this._rootEl&&this._syncUi()}}shouldRenderOnAttributeChange(){return!1}render(){this.setContent(`
186
212
  <style>${k}</style>
187
213
  <div class="root">
188
214
  <div class="meta" hidden>
@@ -199,4 +225,4 @@
199
225
  <div class="counter"></div>
200
226
  </div>
201
227
  </div>
202
- `),this._rootEl=this.root.querySelector(".root"),this._shellEl=this.root.querySelector(".shell"),this._chipsEl=this.root.querySelector(".chips"),this._inputEl=this.root.querySelector(".input"),this._labelEl=this.root.querySelector(".label"),this._descriptionEl=this.root.querySelector(".description"),this._errorEl=this.root.querySelector(".error"),this._assistEl=this.root.querySelector(".assist"),this._counterEl=this.root.querySelector(".counter"),this._inputEl?.addEventListener("input",this._onInput),this._inputEl?.addEventListener("keydown",this._onKeyDown),this._inputEl?.addEventListener("focus",this._onFocusIn),this._inputEl?.addEventListener("blur",this._onFocusOut),this._inputEl?.addEventListener("paste",this._onPaste),this._shellEl?.addEventListener("click",this._onShellClick),this.root.addEventListener("click",this._onChipClick),this._tags=d(this.getAttribute("value")),this._syncUi()}_readOnly(){return this.hasAttribute("readonly")}_disabled(){return this.hasAttribute("disabled")&&this.getAttribute("disabled")!=="false"}_allowDuplicates(){return this.hasAttribute("allow-duplicates")}_maxTags(){const t=this.getAttribute("max-tags");if(!t)return null;const i=Number(t);return Number.isFinite(i)&&i>0?Math.floor(i):null}_emit(t,i){this.dispatchEvent(new CustomEvent(t,{detail:i,bubbles:!0,composed:!0}))}_setValueAttr(t){const i=C(t);this._suppressValueAttr=!0;try{i?this.getAttribute("value")!==i&&this.setAttribute("value",i):this.removeAttribute("value")}finally{this._suppressValueAttr=!1}}_applyTags(t,i){const e=t.map(l=>c(l)).filter(Boolean),s=this._allowDuplicates()?e:e.filter((l,o)=>e.indexOf(l)===o),n=this._maxTags()!=null?s.slice(0,this._maxTags()):s;if(b(n,this._tags))return this._syncUi(),!1;const a=[...this._tags];return this._tags=[...n],this._setValueAttr(this._tags),this._syncUi(),this._emit("change",{value:[...this._tags],previousValue:a,source:i}),!0}_addTag(t,i){if(this._disabled()||this._readOnly())return!1;const e=c(t);if(!e)return!1;if(!this._allowDuplicates()&&this._tags.includes(e))return this._syncUi("Duplicate tag"),!1;const s=this._maxTags();if(s!=null&&this._tags.length>=s)return this._syncUi(`Maximum ${s} tags`),!1;const n=this._applyTags([...this._tags,e],i);return n&&this._emit("tag-add",{tag:e,value:[...this._tags],source:i}),n}_removeTagAt(t,i){if(this._disabled()||this._readOnly())return;const e=this._tags[t];if(!e)return;const s=this._tags.filter((a,l)=>l!==t);this._applyTags(s,i)&&this._emit("tag-remove",{tag:e,index:t,value:[...this._tags],source:i})}_commitDraft(t){const i=this._draft;this._draft="",this._inputEl&&(this._inputEl.value=""),this._addTag(i,t),this._syncUi()}_syncUi(t){if(!this._shellEl||!this._chipsEl||!this._inputEl||!this._labelEl||!this._descriptionEl||!this._errorEl||!this._assistEl||!this._counterEl)return;const i=(this.getAttribute("label")||"").trim(),e=(this.getAttribute("description")||"").trim(),s=(this.getAttribute("data-error")||"").trim(),n=this.hasAttribute("required"),a=this._disabled(),l=this._readOnly(),o=this._maxTags(),y=this.hasAttribute("counter")||o!=null,x=!!s||!!t||n&&this._tags.length===0&&this.hasAttribute("invalid");this._labelEl.hidden=!i,this._labelEl.querySelector(".label-text").textContent=i,this._labelEl.querySelector(".required").hidden=!n,this._descriptionEl.hidden=!e,this._descriptionEl.textContent=e,this.root.querySelector(".meta").hidden=!i&&!e,f.syncControlName(this._inputEl,this,i?`${this._uid}-label`:null),this._shellEl.setAttribute("data-focused",this._focused?"true":"false"),this._shellEl.setAttribute("data-invalid",x?"true":"false"),this._inputEl.disabled=a,this._inputEl.readOnly=l,this._inputEl.placeholder=this._tags.length===0?this.getAttribute("placeholder")||"Add tags":"",this._inputEl.value=this._draft;const E=a||o!=null&&this._tags.length>=o;this._inputEl.setAttribute("aria-disabled",E?"true":"false"),this._chipsEl.replaceChildren(...this._tags.map((m,A)=>{const h=document.createElement("span");h.className="chip",h.setAttribute("part","chip");const _=document.createElement("span");_.className="chip-label",_.textContent=m;const u=document.createElement("button");return u.type="button",u.className="chip-remove",u.setAttribute("data-index",String(A)),u.setAttribute("aria-label",`Remove ${m}`),u.textContent="×",u.disabled=a||l,h.append(_,u),h}));const p=t||s;this._errorEl.hidden=!p,this._errorEl.textContent=p;const g=[];e&&g.push(`${this._uid}-description`),p&&g.push(`${this._uid}-error`),f.syncControlDescription(this._inputEl,this,this._uid,g),this._assistEl.hidden=!y,this._counterEl.textContent=o!=null?`${this._tags.length}/${o}`:String(this._tags.length)}_registerWithForm(){this._formUnregister&&(this._formUnregister(),this._formUnregister=null);try{const s=this.getRootNode().host?.closest?.("ui-form")||null||this.closest("ui-form"),n=this.getAttribute("name");s&&typeof s.registerField=="function"&&n&&(this._formUnregister=s.registerField(n,{name:n,getValue:()=>[...this._tags],setValue:a=>{Array.isArray(a)?this._applyTags(a.map(l=>String(l)),"form"):this._applyTags(d(String(a??"")),"form")},validate:async()=>this.hasAttribute("required")&&this._tags.length===0?{valid:!1,message:"At least one tag is required"}:{valid:!0},setError:a=>{a?this.setAttribute("data-error",a):this.removeAttribute("data-error"),this._syncUi()}}))}catch{}}_onInput(t){const i=t.target;this._draft=i?.value||"",this._emit("input",{draft:this._draft,value:[...this._tags]}),this._syncUi()}_onKeyDown(t){if(t.key==="Enter"||t.key===","){t.preventDefault(),this._commitDraft("keyboard");return}t.key==="Backspace"&&!this._draft&&this._removeTagAt(this._tags.length-1,"keyboard")}_onPaste(t){const i=t.clipboardData?.getData("text")||"";if(!/[,\n]/.test(i))return;t.preventDefault();const e=i.split(/[,\n]+/).map(c).filter(Boolean);e.length&&(this._draft="",this._inputEl&&(this._inputEl.value=""),this._applyTags([...this._tags,...e],"paste"))}_onFocusIn(){this._focused=!0,this._syncUi()}_onFocusOut(){this._focused=!1,this.hasAttribute("add-on-blur")&&this._draft?this._commitDraft("blur"):this._syncUi()}_onShellClick(t){t.target?.closest(".chip-remove")||this._inputEl?.focus()}_onChipClick(t){const e=t.target?.closest(".chip-remove");if(!e)return;const s=Number(e.getAttribute("data-index"));Number.isFinite(s)&&this._removeTagAt(s,"remove-button")}}typeof customElements<"u"&&!customElements.get("ui-tags-input")&&customElements.define("ui-tags-input",v);exports.UITagsInput=v;
228
+ `),this._rootEl=this.root.querySelector(".root"),this._shellEl=this.root.querySelector(".shell"),this._chipsEl=this.root.querySelector(".chips"),this._inputEl=this.root.querySelector(".input"),this._labelEl=this.root.querySelector(".label"),this._descriptionEl=this.root.querySelector(".description"),this._errorEl=this.root.querySelector(".error"),this._assistEl=this.root.querySelector(".assist"),this._counterEl=this.root.querySelector(".counter"),this._inputEl?.addEventListener("input",this._onInput),this._inputEl?.addEventListener("keydown",this._onKeyDown),this._inputEl?.addEventListener("focus",this._onFocusIn),this._inputEl?.addEventListener("blur",this._onFocusOut),this._inputEl?.addEventListener("paste",this._onPaste),this._shellEl?.addEventListener("click",this._onShellClick),this.root.addEventListener("click",this._onChipClick),this._tags=d(this.getAttribute("value")),this._syncUi()}_readOnly(){return this.hasAttribute("readonly")}_disabled(){return this.hasAttribute("disabled")&&this.getAttribute("disabled")!=="false"}_allowDuplicates(){return this.hasAttribute("allow-duplicates")}_maxTags(){const t=this.getAttribute("max-tags");if(!t)return null;const i=Number(t);return Number.isFinite(i)&&i>0?Math.floor(i):null}_emit(t,i){this.dispatchEvent(new CustomEvent(t,{detail:i,bubbles:!0,composed:!0}))}_setValueAttr(t){const i=z(t);this._suppressValueAttr=!0;try{i?this.getAttribute("value")!==i&&this.setAttribute("value",i):this.removeAttribute("value")}finally{this._suppressValueAttr=!1}}_applyTags(t,i){const e=t.map(l=>p(l)).filter(Boolean),s=this._allowDuplicates()?e:e.filter((l,o)=>e.indexOf(l)===o),n=this._maxTags()!=null?s.slice(0,this._maxTags()):s;if(b(n,this._tags))return this._syncUi(),!1;const a=[...this._tags];return this._tags=[...n],this._setValueAttr(this._tags),this._syncUi(),this._emit("change",{value:[...this._tags],previousValue:a,source:i}),!0}_addTag(t,i){if(this._disabled()||this._readOnly())return!1;const e=p(t);if(!e)return!1;if(!this._allowDuplicates()&&this._tags.includes(e))return this._syncUi("Duplicate tag"),!1;const s=this._maxTags();if(s!=null&&this._tags.length>=s)return this._syncUi(`Maximum ${s} tags`),!1;const n=this._applyTags([...this._tags,e],i);return n&&this._emit("tag-add",{tag:e,value:[...this._tags],source:i}),n}_removeTagAt(t,i){if(this._disabled()||this._readOnly())return;const e=this._tags[t];if(!e)return;const s=this._tags.filter((a,l)=>l!==t);this._applyTags(s,i)&&this._emit("tag-remove",{tag:e,index:t,value:[...this._tags],source:i})}_commitDraft(t){const i=this._draft;this._draft="",this._inputEl&&(this._inputEl.value=""),this._addTag(i,t),this._syncUi()}_syncUi(t){if(!this._shellEl||!this._chipsEl||!this._inputEl||!this._labelEl||!this._descriptionEl||!this._errorEl||!this._assistEl||!this._counterEl)return;const i=(this.getAttribute("label")||"").trim(),e=(this.getAttribute("description")||"").trim(),s=(this.getAttribute("data-error")||"").trim(),n=this.hasAttribute("required"),a=this._disabled(),l=this._readOnly(),o=this._maxTags(),y=this.hasAttribute("counter")||o!=null,x=!!s||!!t||n&&this._tags.length===0&&this.hasAttribute("invalid");this._labelEl.hidden=!i,this._labelEl.querySelector(".label-text").textContent=i,this._labelEl.querySelector(".required").hidden=!n,this._descriptionEl.hidden=!e,this._descriptionEl.textContent=e,this.root.querySelector(".meta").hidden=!i&&!e,m.syncControlName(this._inputEl,this,i?`${this._uid}-label`:null),this._shellEl.setAttribute("data-focused",this._focused?"true":"false"),this._shellEl.setAttribute("data-invalid",x?"true":"false"),this._inputEl.disabled=a,this._inputEl.readOnly=l,this._inputEl.placeholder=this._tags.length===0?this.getAttribute("placeholder")||"Add tags":"",this._inputEl.value=this._draft;const E=a||o!=null&&this._tags.length>=o;this._inputEl.setAttribute("aria-disabled",E?"true":"false"),this._chipsEl.replaceChildren(...this._tags.map((f,A)=>{const h=document.createElement("span");h.className="chip",h.setAttribute("part","chip");const _=document.createElement("span");_.className="chip-label",_.textContent=f;const u=document.createElement("button");return u.type="button",u.className="chip-remove",u.setAttribute("data-index",String(A)),u.setAttribute("aria-label",`Remove ${f}`),u.textContent="×",u.disabled=a||l,h.append(_,u),h}));const c=t||s;this._errorEl.hidden=!c,this._errorEl.textContent=c;const g=[];e&&g.push(`${this._uid}-description`),c&&g.push(`${this._uid}-error`),m.syncControlDescription(this._inputEl,this,this._uid,g),this._assistEl.hidden=!y,this._counterEl.textContent=o!=null?`${this._tags.length}/${o}`:String(this._tags.length)}_registerWithForm(){this._formUnregister&&(this._formUnregister(),this._formUnregister=null);try{const s=this.getRootNode().host?.closest?.("ui-form")||null||this.closest("ui-form"),n=this.getAttribute("name");s&&typeof s.registerField=="function"&&n&&(this._formUnregister=s.registerField(n,{name:n,getValue:()=>[...this._tags],setValue:a=>{Array.isArray(a)?this._applyTags(a.map(l=>String(l)),"form"):this._applyTags(d(String(a??"")),"form")},validate:async()=>this.hasAttribute("required")&&this._tags.length===0?{valid:!1,message:"At least one tag is required"}:{valid:!0},setError:a=>{a?this.setAttribute("data-error",a):this.removeAttribute("data-error"),this._syncUi()}}))}catch{}}_onInput(t){const i=t.target;this._draft=i?.value||"",this._emit("input",{draft:this._draft,value:[...this._tags]}),this._syncUi()}_onKeyDown(t){if(t.key==="Enter"||t.key===","){t.preventDefault(),this._commitDraft("keyboard");return}t.key==="Backspace"&&!this._draft&&this._removeTagAt(this._tags.length-1,"keyboard")}_onPaste(t){const i=t.clipboardData?.getData("text")||"";if(!/[,\n]/.test(i))return;t.preventDefault();const e=i.split(/[,\n]+/).map(p).filter(Boolean);e.length&&(this._draft="",this._inputEl&&(this._inputEl.value=""),this._applyTags([...this._tags,...e],"paste"))}_onFocusIn(){this._focused=!0,this._syncUi()}_onFocusOut(){this._focused=!1,this.hasAttribute("add-on-blur")&&this._draft?this._commitDraft("blur"):this._syncUi()}_onShellClick(t){t.target?.closest(".chip-remove")||this._inputEl?.focus()}_onChipClick(t){const e=t.target?.closest(".chip-remove");if(!e)return;const s=Number(e.getAttribute("data-index"));Number.isFinite(s)&&this._removeTagAt(s,"remove-button")}}typeof customElements<"u"&&!customElements.get("ui-tags-input")&&customElements.define("ui-tags-input",v);exports.UITagsInput=v;
@@ -3,18 +3,19 @@ import { s as A, a as S } from "./control-name-Bpj7F34X.mjs";
3
3
  const k = `
4
4
  :host {
5
5
  --ui-tags-input-padding: 10px 12px;
6
- --ui-tags-input-border-color: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 78%, transparent);
6
+ --ui-tags-input-border-color: var(--ui-color-line, var(--ui-color-border, #cbd5e1));
7
7
  --ui-tags-input-border: 1px solid var(--ui-tags-input-border-color);
8
- --ui-tags-input-radius: var(--ui-radius, 12px);
8
+ --ui-tags-input-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
9
9
  --ui-tags-input-bg: var(--ui-color-surface, #ffffff);
10
10
  --ui-tags-input-text: var(--ui-color-text, #0f172a);
11
11
  --ui-tags-input-muted: var(--ui-color-muted, #526175);
12
12
  --ui-tags-input-focus: var(--ui-color-focus-ring, #2563eb);
13
- --ui-tags-input-danger: var(--ui-color-danger, #dc2626);
13
+ --ui-tags-input-danger: var(--ui-color-danger-text, var(--ui-color-danger, #dc2626));
14
14
  --ui-tags-input-chip-bg: color-mix(in srgb, var(--ui-color-primary, #2563eb) 10%, transparent);
15
- --ui-tags-input-chip-text: color-mix(in srgb, var(--ui-color-primary, #2563eb) 82%, #0f172a 18%);
15
+ --ui-tags-input-chip-text: color-mix(in srgb, var(--ui-color-primary, #2563eb) 45%, var(--ui-color-text-strong, #0f172a));
16
16
  --ui-tags-input-chip-remove-bg: color-mix(in srgb, currentColor 8%, transparent);
17
- --ui-tags-input-min-height: 44px;
17
+ --ui-tags-input-min-height: var(--ui-control-height-2, 32px);
18
+ --ui-tags-input-font-size: var(--ui-control-font-size-2, 14px);
18
19
  display: block;
19
20
  inline-size: 100%;
20
21
  max-inline-size: 100%;
@@ -24,6 +25,26 @@ const k = `
24
25
  color-scheme: light dark;
25
26
  }
26
27
 
28
+ :host([size="sm"]),
29
+ :host([size="1"]) {
30
+ --ui-tags-input-min-height: var(--ui-control-height-1, 24px);
31
+ --ui-tags-input-font-size: var(--ui-control-font-size-1, 12px);
32
+ --ui-tags-input-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
33
+ --ui-tags-input-pad-y: 0px;
34
+ --ui-tags-input-pad-x: calc(var(--ui-control-padding-inline-1, 8px) - 1px);
35
+ --ui-tags-input-chip-pad-y: 0px;
36
+ }
37
+
38
+ :host([size="lg"]),
39
+ :host([size="3"]) {
40
+ --ui-tags-input-min-height: var(--ui-control-height-3, 40px);
41
+ --ui-tags-input-font-size: var(--ui-control-font-size-3, 16px);
42
+ --ui-tags-input-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
43
+ --ui-tags-input-pad-y: 5px;
44
+ --ui-tags-input-pad-x: calc(var(--ui-control-padding-inline-3, 16px) - 1px);
45
+ --ui-tags-input-chip-pad-y: 4px;
46
+ }
47
+
27
48
  .root {
28
49
  display: grid;
29
50
  gap: 8px;
@@ -77,7 +98,7 @@ const k = `
77
98
  gap: 8px;
78
99
  min-block-size: var(--ui-tags-input-min-height);
79
100
  box-sizing: border-box;
80
- padding: 8px 10px;
101
+ padding: var(--ui-tags-input-pad-y, 3px) var(--ui-tags-input-pad-x, calc(var(--ui-control-padding-inline-2, 12px) - 1px));
81
102
  border: var(--ui-tags-input-border);
82
103
  border-radius: var(--ui-tags-input-radius);
83
104
  background: var(--ui-tags-input-bg);
@@ -85,13 +106,18 @@ const k = `
85
106
  }
86
107
 
87
108
  .shell[data-focused="true"] {
88
- border-color: color-mix(in srgb, var(--ui-tags-input-focus) 58%, var(--ui-tags-input-border-color));
89
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-tags-input-focus) 22%, transparent);
109
+ border-color: var(--ui-ring-color, var(--ui-tags-input-focus));
110
+ outline: var(--ui-ring-width, 2px) solid var(--ui-ring-color, var(--ui-tags-input-focus));
111
+ outline-offset: -1px;
112
+ }
113
+
114
+ .shell:hover:not([data-focused="true"]) {
115
+ border-color: var(--ui-color-line-strong, var(--ui-tags-input-border-color));
90
116
  }
91
117
 
92
118
  .shell[data-invalid="true"] {
93
119
  border-color: color-mix(in srgb, var(--ui-tags-input-danger) 62%, transparent);
94
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-tags-input-danger) 16%, transparent);
120
+ box-shadow: 0 0 0 1px var(--ui-tags-input-danger);
95
121
  }
96
122
 
97
123
  .chips {
@@ -104,7 +130,7 @@ const k = `
104
130
  gap: 6px;
105
131
  min-inline-size: 0;
106
132
  max-inline-size: 100%;
107
- padding: 6px 8px 6px 10px;
133
+ padding: var(--ui-tags-input-chip-pad-y, 2px) 4px var(--ui-tags-input-chip-pad-y, 2px) 10px;
108
134
  border-radius: 999px;
109
135
  background: var(--ui-tags-input-chip-bg);
110
136
  color: var(--ui-tags-input-chip-text);
@@ -144,13 +170,13 @@ const k = `
144
170
  background: transparent;
145
171
  color: inherit;
146
172
  outline: none;
147
- font: 500 14px/1.4 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
148
- padding: 4px 2px;
173
+ font: 500 var(--ui-tags-input-font-size)/1.4 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
174
+ padding: 2px 2px;
149
175
  margin: 0;
150
176
  }
151
177
 
152
178
  .input::placeholder {
153
- color: color-mix(in srgb, var(--ui-tags-input-text) 42%, transparent);
179
+ color: var(--ui-color-placeholder, color-mix(in srgb, var(--ui-tags-input-text) 62%, transparent));
154
180
  }
155
181
 
156
182
  .assist {
@@ -184,7 +210,7 @@ const k = `
184
210
  pointer-events: none;
185
211
  }
186
212
  `;
187
- function f(r, t) {
213
+ function m(r, t) {
188
214
  return r.length === t.length && r.every((i, e) => i === t[e]);
189
215
  }
190
216
  function d(r) {
@@ -200,17 +226,17 @@ function d(r) {
200
226
  }
201
227
  return t.split(",").map((i) => i.trim()).filter(Boolean);
202
228
  }
203
- function C(r) {
229
+ function z(r) {
204
230
  return r.length ? r.some((t) => t.includes(",") || t.includes(`
205
231
  `)) ? JSON.stringify(r) : r.join(", ") : "";
206
232
  }
207
- function c(r) {
233
+ function p(r) {
208
234
  return r.replace(/\s+/g, " ").trim();
209
235
  }
210
- let T = 0;
211
- class U extends E {
236
+ let C = 0;
237
+ class T extends E {
212
238
  constructor() {
213
- super(), this._tags = [], this._draft = "", this._suppressValueAttr = !1, this._formUnregister = null, this._rootEl = null, this._shellEl = null, this._chipsEl = null, this._inputEl = null, this._uid = `ui-tags-input-${++T}`, this._labelEl = null, this._descriptionEl = null, this._errorEl = null, this._assistEl = null, this._counterEl = null, this._focused = !1, this._onInput = this._onInput.bind(this), this._onKeyDown = this._onKeyDown.bind(this), this._onFocusIn = this._onFocusIn.bind(this), this._onFocusOut = this._onFocusOut.bind(this), this._onPaste = this._onPaste.bind(this), this._onShellClick = this._onShellClick.bind(this), this._onChipClick = this._onChipClick.bind(this);
239
+ super(), this._tags = [], this._draft = "", this._suppressValueAttr = !1, this._formUnregister = null, this._rootEl = null, this._shellEl = null, this._chipsEl = null, this._inputEl = null, this._uid = `ui-tags-input-${++C}`, this._labelEl = null, this._descriptionEl = null, this._errorEl = null, this._assistEl = null, this._counterEl = null, this._focused = !1, this._onInput = this._onInput.bind(this), this._onKeyDown = this._onKeyDown.bind(this), this._onFocusIn = this._onFocusIn.bind(this), this._onFocusOut = this._onFocusOut.bind(this), this._onPaste = this._onPaste.bind(this), this._onShellClick = this._onShellClick.bind(this), this._onChipClick = this._onChipClick.bind(this);
214
240
  }
215
241
  static get observedAttributes() {
216
242
  return [
@@ -234,7 +260,7 @@ class U extends E {
234
260
  return [...this._tags];
235
261
  }
236
262
  set value(t) {
237
- const i = Array.isArray(t) ? t.map((e) => c(String(e))).filter(Boolean) : d(String(t ?? ""));
263
+ const i = Array.isArray(t) ? t.map((e) => p(String(e))).filter(Boolean) : d(String(t ?? ""));
238
264
  this._applyTags(i, "api");
239
265
  }
240
266
  addTag(t) {
@@ -265,7 +291,7 @@ class U extends E {
265
291
  if (i !== e) {
266
292
  if (t === "name" && this.isConnected && this._registerWithForm(), t === "value" && !this._suppressValueAttr) {
267
293
  const s = d(e);
268
- f(s, this._tags) || (this._tags = s);
294
+ m(s, this._tags) || (this._tags = s);
269
295
  }
270
296
  this._rootEl && this._syncUi();
271
297
  }
@@ -312,7 +338,7 @@ class U extends E {
312
338
  this.dispatchEvent(new CustomEvent(t, { detail: i, bubbles: !0, composed: !0 }));
313
339
  }
314
340
  _setValueAttr(t) {
315
- const i = C(t);
341
+ const i = z(t);
316
342
  this._suppressValueAttr = !0;
317
343
  try {
318
344
  i ? this.getAttribute("value") !== i && this.setAttribute("value", i) : this.removeAttribute("value");
@@ -321,29 +347,29 @@ class U extends E {
321
347
  }
322
348
  }
323
349
  _applyTags(t, i) {
324
- const e = t.map((l) => c(l)).filter(Boolean), s = this._allowDuplicates() ? e : e.filter((l, o) => e.indexOf(l) === o), n = this._maxTags() != null ? s.slice(0, this._maxTags()) : s;
325
- if (f(n, this._tags))
350
+ const e = t.map((l) => p(l)).filter(Boolean), s = this._allowDuplicates() ? e : e.filter((l, o) => e.indexOf(l) === o), a = this._maxTags() != null ? s.slice(0, this._maxTags()) : s;
351
+ if (m(a, this._tags))
326
352
  return this._syncUi(), !1;
327
- const a = [...this._tags];
328
- return this._tags = [...n], this._setValueAttr(this._tags), this._syncUi(), this._emit("change", { value: [...this._tags], previousValue: a, source: i }), !0;
353
+ const n = [...this._tags];
354
+ return this._tags = [...a], this._setValueAttr(this._tags), this._syncUi(), this._emit("change", { value: [...this._tags], previousValue: n, source: i }), !0;
329
355
  }
330
356
  _addTag(t, i) {
331
357
  if (this._disabled() || this._readOnly()) return !1;
332
- const e = c(t);
358
+ const e = p(t);
333
359
  if (!e) return !1;
334
360
  if (!this._allowDuplicates() && this._tags.includes(e))
335
361
  return this._syncUi("Duplicate tag"), !1;
336
362
  const s = this._maxTags();
337
363
  if (s != null && this._tags.length >= s)
338
364
  return this._syncUi(`Maximum ${s} tags`), !1;
339
- const n = this._applyTags([...this._tags, e], i);
340
- return n && this._emit("tag-add", { tag: e, value: [...this._tags], source: i }), n;
365
+ const a = this._applyTags([...this._tags, e], i);
366
+ return a && this._emit("tag-add", { tag: e, value: [...this._tags], source: i }), a;
341
367
  }
342
368
  _removeTagAt(t, i) {
343
369
  if (this._disabled() || this._readOnly()) return;
344
370
  const e = this._tags[t];
345
371
  if (!e) return;
346
- const s = this._tags.filter((a, l) => l !== t);
372
+ const s = this._tags.filter((n, l) => l !== t);
347
373
  this._applyTags(s, i) && this._emit("tag-remove", { tag: e, index: t, value: [...this._tags], source: i });
348
374
  }
349
375
  _commitDraft(t) {
@@ -352,35 +378,35 @@ class U extends E {
352
378
  }
353
379
  _syncUi(t) {
354
380
  if (!this._shellEl || !this._chipsEl || !this._inputEl || !this._labelEl || !this._descriptionEl || !this._errorEl || !this._assistEl || !this._counterEl) return;
355
- const i = (this.getAttribute("label") || "").trim(), e = (this.getAttribute("description") || "").trim(), s = (this.getAttribute("data-error") || "").trim(), n = this.hasAttribute("required"), a = this._disabled(), l = this._readOnly(), o = this._maxTags(), b = this.hasAttribute("counter") || o != null, v = !!s || !!t || n && this._tags.length === 0 && this.hasAttribute("invalid");
356
- this._labelEl.hidden = !i, this._labelEl.querySelector(".label-text").textContent = i, this._labelEl.querySelector(".required").hidden = !n, this._descriptionEl.hidden = !e, this._descriptionEl.textContent = e, this.root.querySelector(".meta").hidden = !i && !e, A(this._inputEl, this, i ? `${this._uid}-label` : null), this._shellEl.setAttribute("data-focused", this._focused ? "true" : "false"), this._shellEl.setAttribute("data-invalid", v ? "true" : "false"), this._inputEl.disabled = a, this._inputEl.readOnly = l, this._inputEl.placeholder = this._tags.length === 0 ? this.getAttribute("placeholder") || "Add tags" : "", this._inputEl.value = this._draft;
357
- const y = a || o != null && this._tags.length >= o;
358
- this._inputEl.setAttribute("aria-disabled", y ? "true" : "false"), this._chipsEl.replaceChildren(...this._tags.map((m, x) => {
381
+ const i = (this.getAttribute("label") || "").trim(), e = (this.getAttribute("description") || "").trim(), s = (this.getAttribute("data-error") || "").trim(), a = this.hasAttribute("required"), n = this._disabled(), l = this._readOnly(), o = this._maxTags(), b = this.hasAttribute("counter") || o != null, v = !!s || !!t || a && this._tags.length === 0 && this.hasAttribute("invalid");
382
+ this._labelEl.hidden = !i, this._labelEl.querySelector(".label-text").textContent = i, this._labelEl.querySelector(".required").hidden = !a, this._descriptionEl.hidden = !e, this._descriptionEl.textContent = e, this.root.querySelector(".meta").hidden = !i && !e, A(this._inputEl, this, i ? `${this._uid}-label` : null), this._shellEl.setAttribute("data-focused", this._focused ? "true" : "false"), this._shellEl.setAttribute("data-invalid", v ? "true" : "false"), this._inputEl.disabled = n, this._inputEl.readOnly = l, this._inputEl.placeholder = this._tags.length === 0 ? this.getAttribute("placeholder") || "Add tags" : "", this._inputEl.value = this._draft;
383
+ const y = n || o != null && this._tags.length >= o;
384
+ this._inputEl.setAttribute("aria-disabled", y ? "true" : "false"), this._chipsEl.replaceChildren(...this._tags.map((f, x) => {
359
385
  const h = document.createElement("span");
360
386
  h.className = "chip", h.setAttribute("part", "chip");
361
387
  const _ = document.createElement("span");
362
- _.className = "chip-label", _.textContent = m;
388
+ _.className = "chip-label", _.textContent = f;
363
389
  const u = document.createElement("button");
364
- return u.type = "button", u.className = "chip-remove", u.setAttribute("data-index", String(x)), u.setAttribute("aria-label", `Remove ${m}`), u.textContent = "×", u.disabled = a || l, h.append(_, u), h;
390
+ return u.type = "button", u.className = "chip-remove", u.setAttribute("data-index", String(x)), u.setAttribute("aria-label", `Remove ${f}`), u.textContent = "×", u.disabled = n || l, h.append(_, u), h;
365
391
  }));
366
- const p = t || s;
367
- this._errorEl.hidden = !p, this._errorEl.textContent = p;
392
+ const c = t || s;
393
+ this._errorEl.hidden = !c, this._errorEl.textContent = c;
368
394
  const g = [];
369
- e && g.push(`${this._uid}-description`), p && g.push(`${this._uid}-error`), S(this._inputEl, this, this._uid, g), this._assistEl.hidden = !b, this._counterEl.textContent = o != null ? `${this._tags.length}/${o}` : String(this._tags.length);
395
+ e && g.push(`${this._uid}-description`), c && g.push(`${this._uid}-error`), S(this._inputEl, this, this._uid, g), this._assistEl.hidden = !b, this._counterEl.textContent = o != null ? `${this._tags.length}/${o}` : String(this._tags.length);
370
396
  }
371
397
  _registerWithForm() {
372
398
  this._formUnregister && (this._formUnregister(), this._formUnregister = null);
373
399
  try {
374
- const s = this.getRootNode().host?.closest?.("ui-form") || null || this.closest("ui-form"), n = this.getAttribute("name");
375
- s && typeof s.registerField == "function" && n && (this._formUnregister = s.registerField(n, {
376
- name: n,
400
+ const s = this.getRootNode().host?.closest?.("ui-form") || null || this.closest("ui-form"), a = this.getAttribute("name");
401
+ s && typeof s.registerField == "function" && a && (this._formUnregister = s.registerField(a, {
402
+ name: a,
377
403
  getValue: () => [...this._tags],
378
- setValue: (a) => {
379
- Array.isArray(a) ? this._applyTags(a.map((l) => String(l)), "form") : this._applyTags(d(String(a ?? "")), "form");
404
+ setValue: (n) => {
405
+ Array.isArray(n) ? this._applyTags(n.map((l) => String(l)), "form") : this._applyTags(d(String(n ?? "")), "form");
380
406
  },
381
407
  validate: async () => this.hasAttribute("required") && this._tags.length === 0 ? { valid: !1, message: "At least one tag is required" } : { valid: !0 },
382
- setError: (a) => {
383
- a ? this.setAttribute("data-error", a) : this.removeAttribute("data-error"), this._syncUi();
408
+ setError: (n) => {
409
+ n ? this.setAttribute("data-error", n) : this.removeAttribute("data-error"), this._syncUi();
384
410
  }
385
411
  }));
386
412
  } catch {
@@ -401,7 +427,7 @@ class U extends E {
401
427
  const i = t.clipboardData?.getData("text") || "";
402
428
  if (!/[,\n]/.test(i)) return;
403
429
  t.preventDefault();
404
- const e = i.split(/[,\n]+/).map(c).filter(Boolean);
430
+ const e = i.split(/[,\n]+/).map(p).filter(Boolean);
405
431
  e.length && (this._draft = "", this._inputEl && (this._inputEl.value = ""), this._applyTags([...this._tags, ...e], "paste"));
406
432
  }
407
433
  _onFocusIn() {
@@ -420,7 +446,7 @@ class U extends E {
420
446
  Number.isFinite(s) && this._removeTagAt(s, "remove-button");
421
447
  }
422
448
  }
423
- typeof customElements < "u" && !customElements.get("ui-tags-input") && customElements.define("ui-tags-input", U);
449
+ typeof customElements < "u" && !customElements.get("ui-tags-input") && customElements.define("ui-tags-input", T);
424
450
  export {
425
- U as UITagsInput
451
+ T as UITagsInput
426
452
  };
@@ -1,20 +1,21 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const A=require("./ElementBase-DxbvhLJs.js"),g=require("./control-name-BmoI1m3a.js"),z=`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const A=require("./ElementBase-DxbvhLJs.js"),g=require("./control-name-BmoI1m3a.js"),w=`
2
2
  <svg viewBox="0 0 20 20" aria-hidden="true" focusable="false">
3
3
  <path d="m6 6 8 8M14 6l-8 8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>
4
4
  </svg>
5
- `,w=`
5
+ `,z=`
6
6
  :host {
7
- --ui-textarea-bg: var(--ui-color-surface, #ffffff);
7
+ --ui-textarea-bg: var(--base-input-bg, var(--color-panel-solid, var(--ui-color-surface, #ffffff)));
8
8
  --ui-textarea-text: var(--ui-color-text, #0f172a);
9
9
  --ui-textarea-muted: var(--ui-color-muted, #526175);
10
- --ui-textarea-border: color-mix(in srgb, var(--ui-color-border, #cbd5e1) 74%, transparent);
10
+ --ui-textarea-border: var(--ui-color-line, var(--ui-color-border, #cbd5e1));
11
11
  --ui-textarea-focus: var(--ui-color-focus-ring, #2563eb);
12
12
  --ui-textarea-accent: var(--ui-color-primary, #2563eb);
13
- --ui-textarea-danger: var(--ui-color-danger, #dc2626);
14
- --ui-textarea-success: var(--ui-color-success, #15803d);
15
- --ui-textarea-radius: 12px;
16
- --ui-textarea-padding-x: 12px;
17
- --ui-textarea-padding-y: 10px;
13
+ --ui-textarea-danger: var(--ui-color-danger-text, var(--ui-color-danger, #dc2626));
14
+ --ui-textarea-success: var(--ui-color-success-text, var(--ui-color-success, #15803d));
15
+ --ui-textarea-radius: var(--ui-control-radius-2, var(--ui-radius, 6px));
16
+ --ui-textarea-padding-x: calc(var(--ui-control-padding-inline-2, 12px) - 1px);
17
+ --ui-textarea-padding-y: 6px;
18
+ --ui-textarea-font-size: var(--ui-control-font-size-2, 14px);
18
19
  --ui-textarea-min-height: 110px;
19
20
  --ui-textarea-shadow: none;
20
21
 
@@ -69,10 +70,14 @@
69
70
  }
70
71
 
71
72
  .field:focus-within {
72
- border-color: color-mix(in srgb, var(--ui-textarea-focus) 72%, transparent);
73
- box-shadow:
74
- 0 0 0 3px color-mix(in srgb, var(--ui-textarea-focus) 22%, transparent),
75
- var(--ui-textarea-shadow);
73
+ border-color: var(--ui-ring-color, var(--ui-textarea-focus));
74
+ outline: var(--ui-ring-width, 2px) solid var(--ui-ring-color, var(--ui-textarea-focus));
75
+ outline-offset: -1px;
76
+ box-shadow: var(--ui-textarea-shadow);
77
+ }
78
+
79
+ .field:hover:not(:focus-within) {
80
+ border-color: var(--ui-color-line-strong, var(--ui-textarea-border));
76
81
  }
77
82
 
78
83
  textarea {
@@ -85,13 +90,13 @@
85
90
  color: var(--ui-textarea-text);
86
91
  resize: vertical;
87
92
  outline: none;
88
- font: 500 14px/1.45 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
93
+ font: 500 var(--ui-textarea-font-size)/1.45 "Inter", "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
89
94
  padding: var(--ui-textarea-padding-y) var(--ui-textarea-padding-x);
90
95
  border-radius: inherit;
91
96
  }
92
97
 
93
98
  textarea::placeholder {
94
- color: color-mix(in srgb, var(--ui-textarea-muted) 76%, transparent);
99
+ color: var(--ui-color-placeholder, color-mix(in srgb, var(--ui-textarea-muted) 90%, transparent));
95
100
  }
96
101
 
97
102
  textarea[readonly] {
@@ -168,26 +173,20 @@
168
173
 
169
174
  :host([size="sm"]),
170
175
  :host([size="1"]) {
171
- --ui-textarea-padding-x: 10px;
172
- --ui-textarea-padding-y: 8px;
176
+ --ui-textarea-padding-x: calc(var(--ui-control-padding-inline-1, 8px) - 1px);
177
+ --ui-textarea-padding-y: 4px;
173
178
  --ui-textarea-min-height: 84px;
174
- }
175
-
176
- :host([size="sm"]) textarea,
177
- :host([size="1"]) textarea {
178
- font-size: 13px;
179
+ --ui-textarea-font-size: var(--ui-control-font-size-1, 12px);
180
+ --ui-textarea-radius: var(--ui-control-radius-1, var(--ui-radius, 6px));
179
181
  }
180
182
 
181
183
  :host([size="lg"]),
182
184
  :host([size="3"]) {
183
- --ui-textarea-padding-x: 14px;
184
- --ui-textarea-padding-y: 12px;
185
+ --ui-textarea-padding-x: calc(var(--ui-control-padding-inline-3, 16px) - 1px);
186
+ --ui-textarea-padding-y: 8px;
185
187
  --ui-textarea-min-height: 140px;
186
- }
187
-
188
- :host([size="lg"]) textarea,
189
- :host([size="3"]) textarea {
190
- font-size: 15px;
188
+ --ui-textarea-font-size: var(--ui-control-font-size-3, 16px);
189
+ --ui-textarea-radius: var(--ui-control-radius-3, var(--ui-radius, 6px));
191
190
  }
192
191
 
193
192
  :host([density="compact"]) {
@@ -242,7 +241,7 @@
242
241
 
243
242
  :host([validation="error"]) .field {
244
243
  border-color: color-mix(in srgb, var(--ui-textarea-danger) 74%, transparent);
245
- box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-textarea-danger) 22%, transparent);
244
+ box-shadow: 0 0 0 1px var(--ui-textarea-danger);
246
245
  }
247
246
 
248
247
  :host([validation="success"]) .field {
@@ -308,17 +307,17 @@
308
307
  color: CanvasText;
309
308
  }
310
309
  }
311
- `;function x(r){return r.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function b(r,t){const e=Number(r);return Number.isFinite(e)?e:t}const C=2147483647;function h(r){if(!r)return null;const t=Number(r);return!Number.isFinite(t)||t<0||t>C?null:Math.trunc(t)}class m extends A.ElementBase{constructor(){super(),this._uid=`ui-textarea-${Math.random().toString(36).slice(2,9)}`,this._textarea=null,this._clearBtn=null,this._countEl=null,this._debounceTimer=null,this._formUnregister=null,this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this),this._onClear=this._onClear.bind(this)}static get observedAttributes(){return["value","placeholder","disabled","clearable","size","validation","debounce","maxlength","minlength","rows","readonly","autofocus","resize","name","required","variant","color","radius","label","aria-label","aria-description","aria-describedby","description","autosize","max-rows","show-count","density","tone","headless","data-error"]}connectedCallback(){super.connectedCallback(),this._tryRegisterWithForm()}disconnectedCallback(){this._detachListeners(),this._debounceTimer&&(clearTimeout(this._debounceTimer),this._debounceTimer=null),this._formUnregister&&(this._formUnregister(),this._formUnregister=null),super.disconnectedCallback()}attributeChangedCallback(t,e,i){if(e===i)return;if(t==="name"&&this._tryRegisterWithForm(),t==="value"&&this._textarea){const a=i||"";this._textarea.value!==a&&(this._textarea.value=a),this._syncDynamicUi(),this._applyAutosize();return}if(new Set(["placeholder","disabled","maxlength","minlength","rows","readonly","required","resize","name","validation","show-count","clearable","autosize","max-rows","variant","size","density","tone","headless","color","radius","autofocus","aria-label","aria-description","aria-describedby"]).has(t)){this._syncControlAttrs(),this._syncDynamicUi(),this._applyAutosize(),t==="autofocus"&&this.hasAttribute("autofocus")&&queueMicrotask(()=>{this._textarea?.focus()});return}this.isConnected&&this.requestRender()}get value(){return this.getAttribute("value")||""}set value(t){this.setAttribute("value",t||"")}_tryRegisterWithForm(){try{const t=this.closest?.("ui-form"),e=this.getAttribute("name");if(!t||typeof t.registerField!="function"||!e)return;this._formUnregister=t.registerField(e,{name:e,getValue:()=>this.value,setValue:i=>{this.value=i},validate:async()=>this._textarea?{valid:this._textarea.checkValidity(),message:this._textarea.validationMessage||void 0}:{valid:!0},setError:i=>{i?(this.setAttribute("validation","error"),this.setAttribute("data-error",i)):(this.removeAttribute("validation"),this.removeAttribute("data-error"))}})}catch{}}_detachListeners(){this._textarea&&(this._textarea.removeEventListener("input",this._onInput),this._textarea.removeEventListener("change",this._onChange)),this._clearBtn&&this._clearBtn.removeEventListener("click",this._onClear),this._clearBtn=null}_syncControlAttrs(){if(!this._textarea)return;const t=this.getAttribute("placeholder")||"",e=h(this.getAttribute("maxlength")),i=h(this.getAttribute("minlength")),s=b(this.getAttribute("rows"),4),a=this.hasAttribute("disabled"),l=this.hasAttribute("readonly"),o=this.hasAttribute("required"),d=this.getAttribute("name")||"",u=this.getAttribute("resize")||"vertical",f=this.getAttribute("validation"),p=this.getAttribute("color"),n=this.getAttribute("radius");this._textarea.placeholder=t,this._textarea.disabled=a,this._textarea.readOnly=l,this._textarea.required=o,this._textarea.rows=Math.max(1,s),this._textarea.name=d,this._textarea.style.resize=u,e!==null?this._textarea.maxLength=e:this._textarea.removeAttribute("maxlength"),i!==null?this._textarea.minLength=i:this._textarea.removeAttribute("minlength"),f==="error"?this._textarea.setAttribute("aria-invalid","true"):this._textarea.removeAttribute("aria-invalid"),p?this.style.setProperty("--ui-textarea-accent",p):this.style.removeProperty("--ui-textarea-accent"),n&&n!=="none"&&n!=="large"&&n!=="full"?this.style.setProperty("--ui-textarea-radius",n):this.style.removeProperty("--ui-textarea-radius");const c=[],v=!!(this.getAttribute("description")||this.querySelector('[slot="description"]')),_=!!(this.getAttribute("data-error")||this.querySelector('[slot="error"]'));v&&c.push(`${this._uid}-description`),_&&c.push(`${this._uid}-error`),(this.hasAttribute("show-count")||h(this.getAttribute("maxlength"))!==null)&&c.push(`${this._uid}-count`);const y=!!(this.getAttribute("label")||this.querySelector('[slot="label"]'));g.syncControlName(this._textarea,this,y?`${this._uid}-label`:null),g.syncControlDescription(this._textarea,this,this._uid,c)}_syncDynamicUi(){const t=this._textarea?.value||this.getAttribute("value")||"",e=h(this.getAttribute("maxlength")),i=this.hasAttribute("clearable");this._clearBtn&&(i&&t&&!this.hasAttribute("disabled")&&!this.hasAttribute("readonly")?this._clearBtn.removeAttribute("hidden"):this._clearBtn.setAttribute("hidden","")),this._countEl&&(this.hasAttribute("show-count")||e!==null?(this._countEl.removeAttribute("hidden"),e!==null?this._countEl.textContent=`${t.length} / ${e}`:this._countEl.textContent=`${t.length}`):this._countEl.setAttribute("hidden",""))}_applyAutosize(){if(!this._textarea)return;if(!this.hasAttribute("autosize")){this._textarea.style.height="",this._textarea.style.overflowY="";return}this._textarea.style.height="auto";const t=this._textarea.scrollHeight,e=b(this.getAttribute("max-rows"),0);if(e>0){const i=getComputedStyle(this._textarea),s=parseFloat(i.lineHeight||"20")||20,a=parseFloat(i.borderTopWidth||"0")||0,l=parseFloat(i.borderBottomWidth||"0")||0,o=parseFloat(i.paddingTop||"0")||0,d=parseFloat(i.paddingBottom||"0")||0,u=s*e+a+l+o+d;this._textarea.style.height=`${Math.min(t,u)}px`,this._textarea.style.overflowY=t>u?"auto":"hidden";return}this._textarea.style.height=`${t}px`,this._textarea.style.overflowY="hidden"}_emit(t,e){this.dispatchEvent(new CustomEvent(t,{detail:{value:e,length:e.length,name:this.getAttribute("name")||""},bubbles:!0,composed:!0}))}_onInput(t){const e=t.target.value;this.getAttribute("value")!==e&&this.setAttribute("value",e),this._syncDynamicUi(),this._applyAutosize(),this._emit("input",e);const i=b(this.getAttribute("debounce"),0);i>0?(this._debounceTimer&&clearTimeout(this._debounceTimer),this._debounceTimer=setTimeout(()=>{this._emit("debounced-input",e),this._debounceTimer=null},i)):this._emit("debounced-input",e)}_onChange(t){const e=t.target.value;this._emit("change",e)}_onClear(t){t.preventDefault(),!(this.hasAttribute("disabled")||this.hasAttribute("readonly"))&&(this.value="",this._textarea&&(this._textarea.value="",this._textarea.focus()),this._syncDynamicUi(),this._applyAutosize(),this._emit("input",""),this._emit("change",""),this.dispatchEvent(new CustomEvent("clear",{bubbles:!0,composed:!0})))}render(){const t=this.getAttribute("value")||"",e=this.getAttribute("label")||"",i=this.getAttribute("description")||"",s=this.getAttribute("data-error")||"",a=!!(e||i||this.querySelector('[slot="label"]')||this.querySelector('[slot="description"]')),o=this.hasAttribute("clearable")&&!!t&&!this.hasAttribute("disabled")&&!this.hasAttribute("readonly");this.setContent(`
312
- <style>${w}</style>
310
+ `;function x(a){return a.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function b(a,t){const e=Number(a);return Number.isFinite(e)?e:t}const C=2147483647;function d(a){if(!a)return null;const t=Number(a);return!Number.isFinite(t)||t<0||t>C?null:Math.trunc(t)}class v extends A.ElementBase{constructor(){super(),this._uid=`ui-textarea-${Math.random().toString(36).slice(2,9)}`,this._textarea=null,this._clearBtn=null,this._countEl=null,this._debounceTimer=null,this._formUnregister=null,this._onInput=this._onInput.bind(this),this._onChange=this._onChange.bind(this),this._onClear=this._onClear.bind(this)}static get observedAttributes(){return["value","placeholder","disabled","clearable","size","validation","debounce","maxlength","minlength","rows","readonly","autofocus","resize","name","required","variant","color","radius","label","aria-label","aria-description","aria-describedby","description","autosize","max-rows","show-count","density","tone","headless","data-error"]}connectedCallback(){super.connectedCallback(),this._tryRegisterWithForm()}disconnectedCallback(){this._detachListeners(),this._debounceTimer&&(clearTimeout(this._debounceTimer),this._debounceTimer=null),this._formUnregister&&(this._formUnregister(),this._formUnregister=null),super.disconnectedCallback()}attributeChangedCallback(t,e,i){if(e===i)return;if(t==="name"&&this._tryRegisterWithForm(),t==="value"&&this._textarea){const r=i||"";this._textarea.value!==r&&(this._textarea.value=r),this._syncDynamicUi(),this._applyAutosize();return}if(new Set(["placeholder","disabled","maxlength","minlength","rows","readonly","required","resize","name","validation","show-count","clearable","autosize","max-rows","variant","size","density","tone","headless","color","radius","autofocus","aria-label","aria-description","aria-describedby"]).has(t)){this._syncControlAttrs(),this._syncDynamicUi(),this._applyAutosize(),t==="autofocus"&&this.hasAttribute("autofocus")&&queueMicrotask(()=>{this._textarea?.focus()});return}this.isConnected&&this.requestRender()}get value(){return this.getAttribute("value")||""}set value(t){this.setAttribute("value",t||"")}_tryRegisterWithForm(){try{const t=this.closest?.("ui-form"),e=this.getAttribute("name");if(!t||typeof t.registerField!="function"||!e)return;this._formUnregister=t.registerField(e,{name:e,getValue:()=>this.value,setValue:i=>{this.value=i},validate:async()=>this._textarea?{valid:this._textarea.checkValidity(),message:this._textarea.validationMessage||void 0}:{valid:!0},setError:i=>{i?(this.setAttribute("validation","error"),this.setAttribute("data-error",i)):(this.removeAttribute("validation"),this.removeAttribute("data-error"))}})}catch{}}_detachListeners(){this._textarea&&(this._textarea.removeEventListener("input",this._onInput),this._textarea.removeEventListener("change",this._onChange)),this._clearBtn&&this._clearBtn.removeEventListener("click",this._onClear),this._clearBtn=null}_syncControlAttrs(){if(!this._textarea)return;const t=this.getAttribute("placeholder")||"",e=d(this.getAttribute("maxlength")),i=d(this.getAttribute("minlength")),s=b(this.getAttribute("rows"),4),r=this.hasAttribute("disabled"),l=this.hasAttribute("readonly"),o=this.hasAttribute("required"),h=this.getAttribute("name")||"",u=this.getAttribute("resize")||"vertical",f=this.getAttribute("validation"),p=this.getAttribute("color"),n=this.getAttribute("radius");this._textarea.placeholder=t,this._textarea.disabled=r,this._textarea.readOnly=l,this._textarea.required=o,this._textarea.rows=Math.max(1,s),this._textarea.name=h,this._textarea.style.resize=u,e!==null?this._textarea.maxLength=e:this._textarea.removeAttribute("maxlength"),i!==null?this._textarea.minLength=i:this._textarea.removeAttribute("minlength"),f==="error"?this._textarea.setAttribute("aria-invalid","true"):this._textarea.removeAttribute("aria-invalid"),p?this.style.setProperty("--ui-textarea-accent",p):this.style.removeProperty("--ui-textarea-accent"),n&&n!=="none"&&n!=="large"&&n!=="full"?this.style.setProperty("--ui-textarea-radius",n):this.style.removeProperty("--ui-textarea-radius");const c=[],m=!!(this.getAttribute("description")||this.querySelector('[slot="description"]')),_=!!(this.getAttribute("data-error")||this.querySelector('[slot="error"]'));m&&c.push(`${this._uid}-description`),_&&c.push(`${this._uid}-error`),(this.hasAttribute("show-count")||d(this.getAttribute("maxlength"))!==null)&&c.push(`${this._uid}-count`);const y=!!(this.getAttribute("label")||this.querySelector('[slot="label"]'));g.syncControlName(this._textarea,this,y?`${this._uid}-label`:null),g.syncControlDescription(this._textarea,this,this._uid,c)}_syncDynamicUi(){const t=this._textarea?.value||this.getAttribute("value")||"",e=d(this.getAttribute("maxlength")),i=this.hasAttribute("clearable");this._clearBtn&&(i&&t&&!this.hasAttribute("disabled")&&!this.hasAttribute("readonly")?this._clearBtn.removeAttribute("hidden"):this._clearBtn.setAttribute("hidden","")),this._countEl&&(this.hasAttribute("show-count")||e!==null?(this._countEl.removeAttribute("hidden"),e!==null?this._countEl.textContent=`${t.length} / ${e}`:this._countEl.textContent=`${t.length}`):this._countEl.setAttribute("hidden",""))}_applyAutosize(){if(!this._textarea)return;if(!this.hasAttribute("autosize")){this._textarea.style.height="",this._textarea.style.overflowY="";return}this._textarea.style.height="auto";const t=this._textarea.scrollHeight,e=b(this.getAttribute("max-rows"),0);if(e>0){const i=getComputedStyle(this._textarea),s=parseFloat(i.lineHeight||"20")||20,r=parseFloat(i.borderTopWidth||"0")||0,l=parseFloat(i.borderBottomWidth||"0")||0,o=parseFloat(i.paddingTop||"0")||0,h=parseFloat(i.paddingBottom||"0")||0,u=s*e+r+l+o+h;this._textarea.style.height=`${Math.min(t,u)}px`,this._textarea.style.overflowY=t>u?"auto":"hidden";return}this._textarea.style.height=`${t}px`,this._textarea.style.overflowY="hidden"}_emit(t,e){this.dispatchEvent(new CustomEvent(t,{detail:{value:e,length:e.length,name:this.getAttribute("name")||""},bubbles:!0,composed:!0}))}_onInput(t){const e=t.target.value;this.getAttribute("value")!==e&&this.setAttribute("value",e),this._syncDynamicUi(),this._applyAutosize(),this._emit("input",e);const i=b(this.getAttribute("debounce"),0);i>0?(this._debounceTimer&&clearTimeout(this._debounceTimer),this._debounceTimer=setTimeout(()=>{this._emit("debounced-input",e),this._debounceTimer=null},i)):this._emit("debounced-input",e)}_onChange(t){const e=t.target.value;this._emit("change",e)}_onClear(t){t.preventDefault(),!(this.hasAttribute("disabled")||this.hasAttribute("readonly"))&&(this.value="",this._textarea&&(this._textarea.value="",this._textarea.focus()),this._syncDynamicUi(),this._applyAutosize(),this._emit("input",""),this._emit("change",""),this.dispatchEvent(new CustomEvent("clear",{bubbles:!0,composed:!0})))}render(){const t=this.getAttribute("value")||"",e=this.getAttribute("label")||"",i=this.getAttribute("description")||"",s=this.getAttribute("data-error")||"",r=!!(e||i||this.querySelector('[slot="label"]')||this.querySelector('[slot="description"]')),o=this.hasAttribute("clearable")&&!!t&&!this.hasAttribute("disabled")&&!this.hasAttribute("readonly");this.setContent(`
311
+ <style>${z}</style>
313
312
  <div class="shell" part="shell">
314
- <div class="meta" part="meta" ${a?"":"hidden"}>
313
+ <div class="meta" part="meta" ${r?"":"hidden"}>
315
314
  <label id="${this._uid}-label" class="label" part="label"><slot name="label">${x(e)}</slot></label>
316
315
  <div id="${this._uid}-description" class="description" part="description"><slot name="description">${x(i)}</slot></div>
317
316
  </div>
318
317
 
319
318
  <div class="field" part="field">
320
319
  <textarea part="textarea"></textarea>
321
- <button type="button" part="clear" class="clear-btn" aria-label="Clear text" ${o?"":"hidden"}>${z}</button>
320
+ <button type="button" part="clear" class="clear-btn" aria-label="Clear text" ${o?"":"hidden"}>${w}</button>
322
321
  </div>
323
322
 
324
323
  <div class="footer" part="footer">
@@ -326,4 +325,4 @@
326
325
  <div id="${this._uid}-count" class="count" part="count" hidden></div>
327
326
  </div>
328
327
  </div>
329
- `),this._detachListeners(),this._textarea=this.root.querySelector("textarea"),this._clearBtn=this.root.querySelector(".clear-btn"),this._countEl=this.root.querySelector(".count"),this._textarea&&(this._textarea.value=t,this._syncControlAttrs(),this._syncDynamicUi(),this._applyAutosize(),this._textarea.addEventListener("input",this._onInput),this._textarea.addEventListener("change",this._onChange),this._clearBtn?.addEventListener("click",this._onClear),this.hasAttribute("autofocus")&&queueMicrotask(()=>{this._textarea?.focus()}))}shouldRenderOnAttributeChange(t,e,i){return t==="label"||t==="description"||t==="data-error"}}typeof customElements<"u"&&!customElements.get("ui-textarea")&&customElements.define("ui-textarea",m);exports.UITextarea=m;
328
+ `),this._detachListeners(),this._textarea=this.root.querySelector("textarea"),this._clearBtn=this.root.querySelector(".clear-btn"),this._countEl=this.root.querySelector(".count"),this._textarea&&(this._textarea.value=t,this._syncControlAttrs(),this._syncDynamicUi(),this._applyAutosize(),this._textarea.addEventListener("input",this._onInput),this._textarea.addEventListener("change",this._onChange),this._clearBtn?.addEventListener("click",this._onClear),this.hasAttribute("autofocus")&&queueMicrotask(()=>{this._textarea?.focus()}))}shouldRenderOnAttributeChange(t,e,i){return t==="label"||t==="description"||t==="data-error"}}typeof customElements<"u"&&!customElements.get("ui-textarea")&&customElements.define("ui-textarea",v);exports.UITextarea=v;