@threadlabs/looma 0.1.22 → 0.1.24

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 (326) hide show
  1. package/dist/chunk-HNFCGIBP.js +8 -0
  2. package/dist/{chunk-NIPNHZ5W.js → chunk-IMHSPETJ.js} +65 -31
  3. package/dist/chunk-NB6DBRXQ.js +323 -0
  4. package/dist/{chunk-SZJQ3NPX.js → chunk-TL4FIE7X.js} +4 -8
  5. package/dist/cjs/controlled-state-BFya8rAX.js +9 -0
  6. package/dist/cjs/icons-BAdjrnhS.js +680 -0
  7. package/dist/cjs/{index-D07f6BOw.js → index-BHG9Rpil.js} +33 -0
  8. package/dist/cjs/loader.cjs.js +2 -2
  9. package/dist/cjs/looma.cjs.js +2 -2
  10. package/dist/cjs/{manager-C9j3HZay.js → manager-Ce25WRtl.js} +6 -7
  11. package/dist/cjs/ui-affordance-scope.cjs.entry.js +2 -2
  12. package/dist/cjs/ui-avatar-group.cjs.entry.js +10 -18
  13. package/dist/cjs/ui-avatar.cjs.entry.js +3 -3
  14. package/dist/cjs/ui-badge.cjs.entry.js +3 -3
  15. package/dist/cjs/ui-button.cjs.entry.js +16 -5
  16. package/dist/cjs/ui-callout.cjs.entry.js +27 -0
  17. package/dist/cjs/ui-checkbox.cjs.entry.js +14 -8
  18. package/dist/cjs/ui-chip.cjs.entry.js +19 -0
  19. package/dist/cjs/ui-combobox.cjs.entry.js +541 -0
  20. package/dist/cjs/ui-context-menu.cjs.entry.js +3 -3
  21. package/dist/cjs/ui-dialog.cjs.entry.js +46 -10
  22. package/dist/cjs/ui-disclosure.cjs.entry.js +10 -7
  23. package/dist/cjs/ui-floating-action-button.cjs.entry.js +2 -2
  24. package/dist/cjs/ui-form-field.cjs.entry.js +61 -6
  25. package/dist/cjs/ui-icon-button.cjs.entry.js +2 -2
  26. package/dist/cjs/ui-input.cjs.entry.js +11 -6
  27. package/dist/cjs/ui-menu-item.cjs.entry.js +3 -3
  28. package/dist/cjs/ui-menu.cjs.entry.js +16 -11
  29. package/dist/cjs/ui-popover.cjs.entry.js +12 -9
  30. package/dist/cjs/ui-radio-group.cjs.entry.js +2 -2
  31. package/dist/cjs/ui-radio.cjs.entry.js +18 -9
  32. package/dist/cjs/ui-search-result-row.cjs.entry.js +2 -2
  33. package/dist/cjs/ui-search-shell.cjs.entry.js +2 -2
  34. package/dist/cjs/ui-select.cjs.entry.js +15 -7
  35. package/dist/cjs/ui-switch.cjs.entry.js +20 -11
  36. package/dist/cjs/ui-tabs.cjs.entry.js +11 -10
  37. package/dist/cjs/ui-textarea.cjs.entry.js +10 -6
  38. package/dist/cjs/ui-toast-region.cjs.entry.js +31 -20
  39. package/dist/cjs/ui-tooltip.cjs.entry.js +63 -23
  40. package/dist/cjs/ui-top-bar.cjs.entry.js +2 -2
  41. package/dist/cjs/ui-tree-item.cjs.entry.js +57 -616
  42. package/dist/cjs/ui-tree.cjs.entry.js +198 -14
  43. package/dist/collection/collection-manifest.json +3 -0
  44. package/dist/collection/components/ui-affordance-scope/ui-affordance-scope.js +1 -1
  45. package/dist/collection/components/ui-avatar/ui-avatar.css +4 -4
  46. package/dist/collection/components/ui-avatar/ui-avatar.js +1 -1
  47. package/dist/collection/components/ui-avatar-group/ui-avatar-group.css +2 -2
  48. package/dist/collection/components/ui-avatar-group/ui-avatar-group.js +8 -16
  49. package/dist/collection/components/ui-badge/ui-badge.css +64 -48
  50. package/dist/collection/components/ui-badge/ui-badge.js +1 -1
  51. package/dist/collection/components/ui-button/ui-button.css +36 -26
  52. package/dist/collection/components/ui-button/ui-button.js +14 -3
  53. package/dist/collection/components/ui-callout/ui-callout.css +74 -0
  54. package/dist/collection/components/ui-callout/ui-callout.js +59 -0
  55. package/dist/collection/components/ui-checkbox/ui-checkbox.js +16 -11
  56. package/dist/collection/components/ui-chip/ui-chip.css +43 -0
  57. package/dist/collection/components/ui-chip/ui-chip.js +45 -0
  58. package/dist/collection/components/ui-combobox/ui-combobox.css +24 -0
  59. package/dist/collection/components/ui-combobox/ui-combobox.js +973 -0
  60. package/dist/collection/components/ui-context-menu/ui-context-menu.js +1 -1
  61. package/dist/collection/components/ui-dialog/ui-dialog.js +49 -13
  62. package/dist/collection/components/ui-disclosure/ui-disclosure.js +12 -10
  63. package/dist/collection/components/ui-floating-action-button/ui-floating-action-button.js +1 -1
  64. package/dist/collection/components/ui-form-field/ui-form-field.css +4 -0
  65. package/dist/collection/components/ui-form-field/ui-form-field.js +59 -4
  66. package/dist/collection/components/ui-icon-button/ui-icon-button.js +1 -1
  67. package/dist/collection/components/ui-input/ui-input.css +8 -6
  68. package/dist/collection/components/ui-input/ui-input.js +11 -7
  69. package/dist/collection/components/ui-menu/ui-menu.css +12 -23
  70. package/dist/collection/components/ui-menu/ui-menu.js +16 -12
  71. package/dist/collection/components/ui-menu-item/ui-menu-item.css +9 -3
  72. package/dist/collection/components/ui-menu-item/ui-menu-item.js +1 -1
  73. package/dist/collection/components/ui-popover/ui-popover.css +14 -5
  74. package/dist/collection/components/ui-popover/ui-popover.js +12 -10
  75. package/dist/collection/components/ui-radio/ui-radio.js +25 -12
  76. package/dist/collection/components/ui-radio-group/ui-radio-group.js +1 -1
  77. package/dist/collection/components/ui-search-result-row/ui-search-result-row.js +1 -1
  78. package/dist/collection/components/ui-search-shell/ui-search-shell.js +1 -1
  79. package/dist/collection/components/ui-select/ui-select.css +8 -6
  80. package/dist/collection/components/ui-select/ui-select.js +17 -11
  81. package/dist/collection/components/ui-switch/ui-switch.js +22 -14
  82. package/dist/collection/components/ui-tabs/ui-tabs.js +13 -13
  83. package/dist/collection/components/ui-textarea/ui-textarea.css +7 -6
  84. package/dist/collection/components/ui-textarea/ui-textarea.js +10 -7
  85. package/dist/collection/components/ui-toast-region/ui-toast-region.js +30 -19
  86. package/dist/collection/components/ui-tooltip/ui-tooltip.css +16 -7
  87. package/dist/collection/components/ui-tooltip/ui-tooltip.js +115 -25
  88. package/dist/collection/components/ui-top-bar/ui-top-bar.js +1 -1
  89. package/dist/collection/components/ui-tree/ui-tree.css +2 -1
  90. package/dist/collection/components/ui-tree/ui-tree.js +216 -12
  91. package/dist/collection/components/ui-tree-item/ui-tree-item.js +84 -25
  92. package/dist/collection/field/combobox.js +4 -0
  93. package/dist/collection/field/valibot.js +5 -0
  94. package/dist/collection/field/validation.js +62 -0
  95. package/dist/collection/icons.js +6 -1
  96. package/dist/collection/overlay/manager.js +6 -7
  97. package/dist/collection/utils/controlled-state.js +4 -0
  98. package/dist/components/index.d.ts +6 -0
  99. package/dist/components/index.js +1 -1
  100. package/dist/components/p-Bh_1GxOD.js +1 -0
  101. package/dist/components/p-Bk55QiUK.js +1 -0
  102. package/dist/components/p-BnGhGgTH.js +1 -0
  103. package/dist/components/p-C-0syqXZ.js +1 -0
  104. package/dist/components/p-CoFximGM.js +13 -0
  105. package/dist/components/p-DIGcRYAW.js +1 -0
  106. package/dist/components/ui-affordance-scope.js +1 -1
  107. package/dist/components/ui-avatar-group.js +1 -1
  108. package/dist/components/ui-avatar.js +1 -1
  109. package/dist/components/ui-badge.js +1 -1
  110. package/dist/components/ui-button.js +1 -1
  111. package/dist/components/ui-callout.d.ts +11 -0
  112. package/dist/components/ui-callout.js +1 -0
  113. package/dist/components/ui-checkbox.js +1 -1
  114. package/dist/components/ui-chip.d.ts +11 -0
  115. package/dist/components/ui-chip.js +1 -0
  116. package/dist/components/ui-combobox.d.ts +11 -0
  117. package/dist/components/ui-combobox.js +1 -0
  118. package/dist/components/ui-context-menu.js +1 -1
  119. package/dist/components/ui-dialog.js +1 -1
  120. package/dist/components/ui-disclosure.js +1 -1
  121. package/dist/components/ui-floating-action-button.js +1 -1
  122. package/dist/components/ui-form-field.js +1 -1
  123. package/dist/components/ui-icon-button.js +1 -1
  124. package/dist/components/ui-input.js +1 -1
  125. package/dist/components/ui-menu-item.js +1 -1
  126. package/dist/components/ui-menu.js +1 -1
  127. package/dist/components/ui-popover.js +1 -1
  128. package/dist/components/ui-radio-group.js +1 -1
  129. package/dist/components/ui-radio.js +1 -1
  130. package/dist/components/ui-search-result-row.js +1 -1
  131. package/dist/components/ui-search-shell.js +1 -1
  132. package/dist/components/ui-select.js +1 -1
  133. package/dist/components/ui-switch.js +1 -1
  134. package/dist/components/ui-tabs.js +1 -1
  135. package/dist/components/ui-textarea.js +1 -1
  136. package/dist/components/ui-toast-region.js +1 -1
  137. package/dist/components/ui-tooltip.js +1 -1
  138. package/dist/components/ui-top-bar.js +1 -1
  139. package/dist/components/ui-tree-item.js +1 -13
  140. package/dist/components/ui-tree.js +1 -1
  141. package/dist/esm/controlled-state-BnGhGgTH.js +6 -0
  142. package/dist/esm/icons-CoFximGM.js +678 -0
  143. package/dist/esm/{index-CEeiinfk.js → index-8BGiMGQ0.js} +33 -1
  144. package/dist/esm/loader.js +3 -3
  145. package/dist/esm/looma.js +3 -3
  146. package/dist/esm/{manager-PM9a74r7.js → manager-C-0syqXZ.js} +6 -7
  147. package/dist/esm/ui-affordance-scope.entry.js +2 -2
  148. package/dist/esm/ui-avatar-group.entry.js +10 -18
  149. package/dist/esm/ui-avatar.entry.js +3 -3
  150. package/dist/esm/ui-badge.entry.js +3 -3
  151. package/dist/esm/ui-button.entry.js +16 -5
  152. package/dist/esm/ui-callout.entry.js +25 -0
  153. package/dist/esm/ui-checkbox.entry.js +14 -8
  154. package/dist/esm/ui-chip.entry.js +17 -0
  155. package/dist/esm/ui-combobox.entry.js +539 -0
  156. package/dist/esm/ui-context-menu.entry.js +3 -3
  157. package/dist/esm/ui-dialog.entry.js +46 -10
  158. package/dist/esm/ui-disclosure.entry.js +10 -7
  159. package/dist/esm/ui-floating-action-button.entry.js +2 -2
  160. package/dist/esm/ui-form-field.entry.js +61 -6
  161. package/dist/esm/ui-icon-button.entry.js +2 -2
  162. package/dist/esm/ui-input.entry.js +11 -6
  163. package/dist/esm/ui-menu-item.entry.js +3 -3
  164. package/dist/esm/ui-menu.entry.js +16 -11
  165. package/dist/esm/ui-popover.entry.js +12 -9
  166. package/dist/esm/ui-radio-group.entry.js +2 -2
  167. package/dist/esm/ui-radio.entry.js +18 -9
  168. package/dist/esm/ui-search-result-row.entry.js +2 -2
  169. package/dist/esm/ui-search-shell.entry.js +2 -2
  170. package/dist/esm/ui-select.entry.js +15 -7
  171. package/dist/esm/ui-switch.entry.js +20 -11
  172. package/dist/esm/ui-tabs.entry.js +11 -10
  173. package/dist/esm/ui-textarea.entry.js +10 -6
  174. package/dist/esm/ui-toast-region.entry.js +31 -20
  175. package/dist/esm/ui-tooltip.entry.js +63 -23
  176. package/dist/esm/ui-top-bar.entry.js +2 -2
  177. package/dist/esm/ui-tree-item.entry.js +57 -616
  178. package/dist/esm/ui-tree.entry.js +198 -14
  179. package/dist/index.cjs +2012 -870
  180. package/dist/index.d.cts +109 -1
  181. package/dist/index.d.ts +109 -1
  182. package/dist/index.js +72 -8
  183. package/dist/looma/looma.esm.js +1 -1
  184. package/dist/looma/p-03f44c45.entry.js +1 -0
  185. package/dist/looma/p-08f80207.entry.js +1 -0
  186. package/dist/looma/p-13f8195a.entry.js +1 -0
  187. package/dist/looma/{p-d273b857.entry.js → p-25e18ad6.entry.js} +1 -1
  188. package/dist/looma/p-2c03fa73.entry.js +1 -0
  189. package/dist/looma/p-314d5c7c.entry.js +1 -0
  190. package/dist/looma/{p-2ed7e241.entry.js → p-3ef2a21b.entry.js} +1 -1
  191. package/dist/looma/{p-063f5a89.entry.js → p-5a900d89.entry.js} +1 -1
  192. package/dist/looma/p-5fdcee1d.entry.js +1 -0
  193. package/dist/looma/{p-0198bb21.entry.js → p-672e3d16.entry.js} +1 -1
  194. package/dist/looma/p-68430534.entry.js +1 -0
  195. package/dist/looma/{p-2e6f791e.entry.js → p-72338f53.entry.js} +1 -1
  196. package/dist/looma/p-7ab661ec.entry.js +1 -0
  197. package/dist/looma/p-7c4a225f.entry.js +1 -0
  198. package/dist/looma/p-82f2fa3d.entry.js +1 -0
  199. package/dist/looma/p-839faf55.entry.js +1 -0
  200. package/dist/looma/p-8BGiMGQ0.js +2 -0
  201. package/dist/looma/p-8e254bc4.entry.js +1 -0
  202. package/dist/looma/p-8e6b1001.entry.js +1 -0
  203. package/dist/looma/p-920656cf.entry.js +1 -0
  204. package/dist/looma/p-97e8cb0e.entry.js +1 -0
  205. package/dist/looma/p-9d2662ca.entry.js +1 -0
  206. package/dist/looma/p-9e1c4020.entry.js +1 -0
  207. package/dist/looma/p-BnGhGgTH.js +1 -0
  208. package/dist/looma/p-C-0syqXZ.js +1 -0
  209. package/dist/looma/p-CoFximGM.js +13 -0
  210. package/dist/looma/{p-051f578c.entry.js → p-a63e2561.entry.js} +1 -1
  211. package/dist/looma/p-add67e4c.entry.js +1 -0
  212. package/dist/looma/p-b63f6d4f.entry.js +1 -0
  213. package/dist/looma/p-bd00d4e8.entry.js +1 -0
  214. package/dist/looma/p-cc915913.entry.js +1 -0
  215. package/dist/looma/p-cfba8f7c.entry.js +1 -0
  216. package/dist/looma/p-d56571a2.entry.js +1 -0
  217. package/dist/looma/{p-7e94d90d.entry.js → p-e0f241ab.entry.js} +1 -1
  218. package/dist/looma/p-f1750fd7.entry.js +1 -0
  219. package/dist/looma/p-fd1e4d22.entry.js +1 -0
  220. package/dist/types/components/ui-avatar-group/ui-avatar-group.d.ts +1 -2
  221. package/dist/types/components/ui-callout/ui-callout.d.ts +6 -0
  222. package/dist/types/components/ui-checkbox/ui-checkbox.d.ts +2 -1
  223. package/dist/types/components/ui-chip/ui-chip.d.ts +6 -0
  224. package/dist/types/components/ui-combobox/ui-combobox.d.ts +93 -0
  225. package/dist/types/components/ui-dialog/ui-dialog.d.ts +7 -1
  226. package/dist/types/components/ui-disclosure/ui-disclosure.d.ts +2 -1
  227. package/dist/types/components/ui-form-field/ui-form-field.d.ts +8 -0
  228. package/dist/types/components/ui-input/ui-input.d.ts +1 -1
  229. package/dist/types/components/ui-menu/ui-menu.d.ts +2 -1
  230. package/dist/types/components/ui-popover/ui-popover.d.ts +2 -1
  231. package/dist/types/components/ui-radio/ui-radio.d.ts +4 -1
  232. package/dist/types/components/ui-select/ui-select.d.ts +3 -2
  233. package/dist/types/components/ui-switch/ui-switch.d.ts +2 -1
  234. package/dist/types/components/ui-tabs/ui-tabs.d.ts +2 -1
  235. package/dist/types/components/ui-textarea/ui-textarea.d.ts +1 -1
  236. package/dist/types/components/ui-toast-region/ui-toast-region.d.ts +3 -1
  237. package/dist/types/components/ui-tooltip/ui-tooltip.d.ts +20 -2
  238. package/dist/types/components/ui-tree/ui-tree.d.ts +21 -1
  239. package/dist/types/components/ui-tree-item/ui-tree-item.d.ts +13 -5
  240. package/dist/types/components.d.ts +366 -71
  241. package/dist/types/field/combobox.d.ts +46 -0
  242. package/dist/types/field/valibot.d.ts +7 -0
  243. package/dist/types/field/validation.d.ts +56 -0
  244. package/dist/types/icons.d.ts +5 -0
  245. package/dist/types/utils/controlled-state.d.ts +4 -0
  246. package/dist/{ui-affordance-scope.entry-L533MECG.js → ui-affordance-scope.entry-3TUZ6GLW.js} +2 -2
  247. package/dist/ui-avatar-group.entry-XGJKN25W.js +51 -0
  248. package/dist/{ui-avatar.entry-3INAY3XP.js → ui-avatar.entry-SN3G44HW.js} +3 -3
  249. package/dist/ui-badge.entry-B6WDCWJX.js +22 -0
  250. package/dist/ui-button.entry-AZYUELLV.js +80 -0
  251. package/dist/ui-callout.entry-QRPWRMPC.js +32 -0
  252. package/dist/{ui-checkbox.entry-2PTBHSCQ.js → ui-checkbox.entry-OB6GFC4M.js} +17 -8
  253. package/dist/ui-chip.entry-XSNPJXX3.js +22 -0
  254. package/dist/ui-combobox.entry-IIMMUJF7.js +553 -0
  255. package/dist/{ui-context-menu.entry-AYDDCIZS.js → ui-context-menu.entry-AIULIE5Y.js} +3 -3
  256. package/dist/{ui-dialog.entry-I2XI3ZTZ.js → ui-dialog.entry-QSYWYHLY.js} +48 -10
  257. package/dist/{ui-disclosure.entry-5LY2BT7B.js → ui-disclosure.entry-3BJEYU3U.js} +13 -7
  258. package/dist/{ui-floating-action-button.entry-EJAMR5AM.js → ui-floating-action-button.entry-JEVNV6FI.js} +2 -2
  259. package/dist/ui-form-field.entry-PKSY7UU4.js +120 -0
  260. package/dist/{ui-icon-button.entry-7SD2LVXE.js → ui-icon-button.entry-TPX7BE7R.js} +2 -2
  261. package/dist/{ui-input.entry-7MM7GEQW.js → ui-input.entry-6NCLNW4E.js} +8 -6
  262. package/dist/ui-menu-item.entry-KA2K3PKV.js +22 -0
  263. package/dist/{ui-menu.entry-R4WK5QSX.js → ui-menu.entry-7GDO5L2T.js} +19 -11
  264. package/dist/{ui-popover.entry-ZRJRTXA7.js → ui-popover.entry-FR6YRNK6.js} +15 -9
  265. package/dist/{ui-radio-group.entry-S6RXHFSN.js → ui-radio-group.entry-7QHXQSNO.js} +2 -2
  266. package/dist/{ui-radio.entry-B73QZK2M.js → ui-radio.entry-YNMXKLDW.js} +21 -9
  267. package/dist/{ui-search-result-row.entry-DR2Y5S7P.js → ui-search-result-row.entry-AHVVAAIO.js} +2 -2
  268. package/dist/{ui-search-shell.entry-ST5IKJBC.js → ui-search-shell.entry-CNBEAMEZ.js} +2 -2
  269. package/dist/{ui-select.entry-7GPRFV67.js → ui-select.entry-TUY6TCTC.js} +13 -7
  270. package/dist/{ui-switch.entry-XQ5IRJRH.js → ui-switch.entry-26LFI7B5.js} +23 -11
  271. package/dist/{ui-tabs.entry-HPW5L5CY.js → ui-tabs.entry-LXB62RJJ.js} +14 -10
  272. package/dist/{ui-textarea.entry-W2PSRYVS.js → ui-textarea.entry-JYGMGPX2.js} +8 -6
  273. package/dist/{ui-toast-region.entry-FJUHFXKZ.js → ui-toast-region.entry-TOW4KZLZ.js} +29 -20
  274. package/dist/{ui-tooltip.entry-G5WHQW7K.js → ui-tooltip.entry-SKFNYXPH.js} +68 -25
  275. package/dist/{ui-top-bar.entry-3NCHFC4Y.js → ui-top-bar.entry-S3YP52EA.js} +2 -2
  276. package/dist/ui-tree-item.entry-LWYIPYLC.js +145 -0
  277. package/dist/{ui-tree.entry-SZW4Q5PY.js → ui-tree.entry-LXKUQFRU.js} +184 -13
  278. package/dist/valibot.d.ts +52 -0
  279. package/dist/valibot.js +7 -0
  280. package/editor/{chunk-QCOYOVQL.js → chunk-B5WVJOPV.js} +113 -97
  281. package/editor/extensions/index.d.ts +14 -6
  282. package/editor/extensions/index.js +1 -1
  283. package/editor/index.js +1 -1
  284. package/editor.css +37 -20
  285. package/package.json +11 -3
  286. package/styles.css +46 -20
  287. package/theme-high-contrast.css +12 -0
  288. package/tokens.css +26 -0
  289. package/vue/{chunk-5KWCMTXB.js → chunk-D4AJULDE.js} +116 -17
  290. package/vue/editor/index.d.ts +5 -15
  291. package/vue/editor/index.js +1 -1
  292. package/vue/index.d.ts +447 -115
  293. package/vue/index.js +7 -1
  294. package/dist/components/p-CEYIKqYc.js +0 -1
  295. package/dist/components/p-CIA4RyEp.js +0 -1
  296. package/dist/components/p-PM9a74r7.js +0 -1
  297. package/dist/looma/p-0584a051.entry.js +0 -1
  298. package/dist/looma/p-078f9fb8.entry.js +0 -1
  299. package/dist/looma/p-0f45c5f0.entry.js +0 -1
  300. package/dist/looma/p-11083743.entry.js +0 -1
  301. package/dist/looma/p-1674cda4.entry.js +0 -1
  302. package/dist/looma/p-1681b218.entry.js +0 -1
  303. package/dist/looma/p-34417499.entry.js +0 -1
  304. package/dist/looma/p-4b422d40.entry.js +0 -1
  305. package/dist/looma/p-54722713.entry.js +0 -13
  306. package/dist/looma/p-54c41576.entry.js +0 -1
  307. package/dist/looma/p-5ba9d496.entry.js +0 -1
  308. package/dist/looma/p-5d4713a6.entry.js +0 -1
  309. package/dist/looma/p-624ba086.entry.js +0 -1
  310. package/dist/looma/p-8d5adb17.entry.js +0 -1
  311. package/dist/looma/p-9194a99d.entry.js +0 -1
  312. package/dist/looma/p-CEeiinfk.js +0 -2
  313. package/dist/looma/p-PM9a74r7.js +0 -1
  314. package/dist/looma/p-a33522a2.entry.js +0 -1
  315. package/dist/looma/p-a5127c7d.entry.js +0 -1
  316. package/dist/looma/p-a9f46811.entry.js +0 -1
  317. package/dist/looma/p-b7aa4488.entry.js +0 -1
  318. package/dist/looma/p-caa8fc7b.entry.js +0 -1
  319. package/dist/looma/p-e3f99a24.entry.js +0 -1
  320. package/dist/looma/p-ed5abf6d.entry.js +0 -1
  321. package/dist/ui-avatar-group.entry-BWS7E2CM.js +0 -59
  322. package/dist/ui-badge.entry-2WOBVOYP.js +0 -22
  323. package/dist/ui-button.entry-VCGSEONK.js +0 -71
  324. package/dist/ui-form-field.entry-SJ6NNFXB.js +0 -67
  325. package/dist/ui-menu-item.entry-V3HIMR75.js +0 -22
  326. package/dist/ui-tree-item.entry-45RR3CMP.js +0 -385
@@ -1,15 +1,20 @@
1
1
  :host {
2
2
  display: inline-flex;
3
3
  vertical-align: middle;
4
- color: var(--ui-text-primary);
4
+ color: var(--ui-action-secondary-text, var(--ui-text-primary));
5
5
  }
6
6
 
7
- :host([variant='outline'])::slotted(button),
7
+ :host([data-variant='solid']) {
8
+ color: var(--ui-action-primary-text, var(--ui-text-on-accent));
9
+ }
10
+
11
+ :host([data-variant='outline']) ::slotted(button),
8
12
  ::slotted(button) {
9
13
  appearance: none;
10
- border: 1px solid var(--ui-border-default);
14
+ min-block-size: var(--ui-button-min-block-size, 2.5rem);
15
+ border: 1px solid var(--ui-control-border, var(--ui-border-default));
11
16
  border-radius: var(--ui-button-radius, var(--ui-radius-2));
12
- background: var(--ui-surface-default);
17
+ background: var(--ui-action-secondary-surface, var(--ui-surface-default));
13
18
  color: inherit;
14
19
  font: inherit;
15
20
  font-weight: var(--ui-font-medium, 500);
@@ -25,76 +30,77 @@
25
30
  margin: 0;
26
31
  }
27
32
 
28
- :host([data-size='sm'])::slotted(button) {
33
+ :host([data-size='sm']) ::slotted(button) {
29
34
  padding: var(--ui-space-1) var(--ui-space-2);
30
35
  font-size: 0.875rem;
31
36
  }
32
37
 
33
- :host([data-size='lg'])::slotted(button) {
38
+ :host([data-size='lg']) ::slotted(button) {
39
+ min-block-size: var(--ui-control-min-block-size, 2.75rem);
34
40
  padding: var(--ui-space-3) var(--ui-space-4);
35
41
  font-size: 1rem;
36
42
  }
37
43
 
38
44
  ::slotted(button:hover:enabled) {
39
- background: var(--ui-surface-muted);
40
- border-color: var(--ui-border-strong);
45
+ background: var(--ui-action-secondary-surface-hover, var(--ui-surface-muted));
46
+ border-color: var(--ui-control-border-hover, var(--ui-border-strong));
41
47
  }
42
48
 
43
49
  ::slotted(button:active:enabled) {
44
50
  background: var(--ui-surface-subtle);
45
51
  }
46
52
 
47
- :host([variant='solid'])::slotted(button) {
48
- border-color: var(--ui-accent-solid);
49
- background: var(--ui-accent-solid);
50
- color: var(--ui-text-on-accent);
53
+ :host([data-variant='solid']) ::slotted(button) {
54
+ border-color: var(--ui-action-primary-surface, var(--ui-accent-solid));
55
+ background: var(--ui-action-primary-surface, var(--ui-accent-solid));
56
+ color: var(--ui-action-primary-text, var(--ui-text-on-accent));
51
57
  box-shadow: var(--ui-button-solid-shadow, inset 0 1px rgb(255 255 255 / 0.16), var(--ui-shadow-xs));
52
58
  }
53
59
 
54
- :host([variant='solid'])::slotted(button:hover:enabled) {
55
- background: var(--ui-accent-hover);
56
- border-color: var(--ui-accent-hover);
60
+ :host([data-variant='solid']) ::slotted(button:hover:enabled) {
61
+ background: var(--ui-action-primary-surface-hover, var(--ui-accent-hover));
62
+ border-color: var(--ui-action-primary-surface-hover, var(--ui-accent-hover));
57
63
  box-shadow: var(--ui-shadow-sm);
58
64
  transform: translateY(-1px);
59
65
  }
60
66
 
61
- :host([variant='solid'])::slotted(button:active:enabled) {
62
- background: var(--ui-accent-active);
63
- border-color: var(--ui-accent-active);
67
+ :host([data-variant='solid']) ::slotted(button:active:enabled) {
68
+ background: var(--ui-action-primary-surface-active, var(--ui-accent-active));
69
+ border-color: var(--ui-action-primary-surface-active, var(--ui-accent-active));
64
70
  box-shadow: none;
65
71
  transform: translateY(0);
66
72
  }
67
73
 
68
- :host([variant='destructive'])::slotted(button) {
74
+ :host([data-variant='destructive']) ::slotted(button) {
69
75
  border-color: var(--ui-danger-solid);
70
76
  background: var(--ui-danger-solid);
71
77
  color: var(--ui-text-on-accent);
72
78
  box-shadow: var(--ui-button-destructive-shadow, inset 0 1px rgb(255 255 255 / 0.14), var(--ui-shadow-xs));
73
79
  }
74
80
 
75
- :host([variant='destructive'])::slotted(button:hover:enabled) {
81
+ :host([data-variant='destructive']) ::slotted(button:hover:enabled) {
76
82
  background: var(--ui-danger-hover);
77
83
  border-color: var(--ui-danger-hover);
78
84
  box-shadow: var(--ui-shadow-sm);
79
85
  transform: translateY(-1px);
80
86
  }
81
87
 
82
- :host([variant='destructive'])::slotted(button:active:enabled) {
88
+ :host([data-variant='destructive']) ::slotted(button:active:enabled) {
83
89
  box-shadow: none;
84
90
  transform: translateY(0);
85
91
  }
86
92
 
87
- :host([variant='ghost'])::slotted(button) {
93
+ :host([data-variant='ghost']) ::slotted(button) {
88
94
  border-color: transparent;
89
95
  background: transparent;
90
96
  }
91
97
 
92
- :host([variant='ghost'])::slotted(button:hover:enabled) {
98
+ :host([data-variant='ghost']) ::slotted(button:hover:enabled) {
93
99
  background: var(--ui-surface-muted);
94
100
  border-color: transparent;
95
101
  }
96
102
 
97
- :host([variant='ghost'])::slotted(button:active:enabled) {
103
+ :host([data-variant='ghost']) ::slotted(button:active:enabled) {
98
104
  background: var(--ui-surface-subtle);
99
105
  border-color: transparent;
100
106
  }
@@ -104,8 +110,12 @@
104
110
  outline-offset: 2px;
105
111
  }
106
112
 
107
- ::slotted(button:disabled),
108
- :host([data-disabled]) {
113
+ :host([data-disabled='true']),
114
+ :host([disabled]) {
109
115
  opacity: 0.6;
110
116
  cursor: not-allowed;
111
117
  }
118
+
119
+ ::slotted(button:disabled) {
120
+ cursor: not-allowed;
121
+ }
@@ -10,8 +10,19 @@ export class UIButton {
10
10
  const btn = this.getButton();
11
11
  if (!btn)
12
12
  return;
13
- this.host.dataset.size = this.size || '';
14
- this.host.dataset.disabled = this.disabled ? 'true' : '';
13
+ if (this.size) {
14
+ this.host.dataset.size = this.size;
15
+ }
16
+ else {
17
+ delete this.host.dataset.size;
18
+ }
19
+ if (this.disabled) {
20
+ this.host.dataset.disabled = 'true';
21
+ }
22
+ else {
23
+ delete this.host.dataset.disabled;
24
+ }
25
+ this.host.dataset.variant = this.variant;
15
26
  btn.disabled = this.disabled;
16
27
  }
17
28
  componentDidLoad() {
@@ -34,7 +45,7 @@ export class UIButton {
34
45
  this.host.click();
35
46
  };
36
47
  render() {
37
- return (h(Host, { key: 'b5f9152db70a276334df047f5cf53d1b8efe2174', "data-size": this.size || undefined, "data-disabled": this.disabled ? '' : undefined, onKeyDown: this.onKeydown }, h("slot", { key: 'b39657e832abc63a6ea6090fa061779c3ae654b5', ref: (el) => (this.slotRef = el) })));
48
+ return (h(Host, { key: '58a90293e2ac169c8bc3c6cb3d15428cc73629b7', "data-size": this.size || undefined, "data-variant": this.variant, "data-disabled": this.disabled ? 'true' : undefined, onKeyDown: this.onKeydown }, h("slot", { key: '05439bdc2af81bcabe9da11b4baf13f880e0a75f', ref: (el) => (this.slotRef = el) })));
38
49
  }
39
50
  static get is() { return "ui-button"; }
40
51
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,74 @@
1
+ :host {
2
+ --ui-callout-surface: var(--ui-info-soft);
3
+ --ui-callout-text: var(--ui-text-primary);
4
+ --ui-callout-border: var(--ui-info-solid);
5
+ --ui-callout-icon: var(--ui-info-solid);
6
+ --ui-callout-padding-block: var(--ui-space-2);
7
+ --ui-callout-padding-inline: var(--ui-space-3);
8
+ --ui-callout-icon-column: 1rem;
9
+ --ui-callout-gap: var(--ui-space-2);
10
+ --ui-callout-icon-size: 1rem;
11
+ --ui-callout-border-width: 1px;
12
+ --ui-callout-leading-border-width: 4px;
13
+
14
+ display: block;
15
+ max-width: 100%;
16
+ }
17
+
18
+ .callout__surface {
19
+ display: grid;
20
+ grid-template-columns: var(--ui-callout-icon-column) minmax(0, 1fr);
21
+ gap: var(--ui-callout-gap);
22
+ align-items: start;
23
+ padding: var(--ui-callout-padding-block) var(--ui-callout-padding-inline);
24
+ border: var(--ui-callout-border-width) solid color-mix(in srgb, var(--ui-callout-border) 35%, transparent);
25
+ border-inline-start: var(--ui-callout-leading-border-width) solid var(--ui-callout-border);
26
+ border-radius: var(--ui-radius-2);
27
+ background: var(--ui-callout-surface);
28
+ color: var(--ui-callout-text);
29
+ font-family: var(--ui-font-family-sans);
30
+ font-size: var(--ui-font-size-sm);
31
+ font-weight: var(--ui-font-normal);
32
+ line-height: var(--ui-line-height-md);
33
+ }
34
+
35
+ .icon {
36
+ display: grid;
37
+ place-items: center;
38
+ inline-size: var(--ui-callout-icon-column);
39
+ block-size: var(--ui-callout-icon-column);
40
+ color: var(--ui-callout-icon);
41
+ }
42
+
43
+ .icon svg {
44
+ inline-size: var(--ui-callout-icon-size);
45
+ block-size: var(--ui-callout-icon-size);
46
+ }
47
+
48
+ .content {
49
+ min-inline-size: 0;
50
+ }
51
+
52
+ :host([data-tone='note']) {
53
+ --ui-callout-surface: var(--ui-surface-muted);
54
+ --ui-callout-border: var(--ui-border-strong);
55
+ --ui-callout-icon: var(--ui-text-secondary);
56
+ }
57
+
58
+ :host([data-tone='warning']) {
59
+ --ui-callout-surface: var(--ui-warning-soft);
60
+ --ui-callout-border: var(--ui-warning-solid);
61
+ --ui-callout-icon: var(--ui-warning-solid);
62
+ }
63
+
64
+ :host([data-tone='success']) {
65
+ --ui-callout-surface: var(--ui-success-soft);
66
+ --ui-callout-border: var(--ui-success-solid);
67
+ --ui-callout-icon: var(--ui-success-solid);
68
+ }
69
+
70
+ :host([data-tone='error']) {
71
+ --ui-callout-surface: var(--ui-danger-soft);
72
+ --ui-callout-border: var(--ui-danger-solid);
73
+ --ui-callout-icon: var(--ui-danger-solid);
74
+ }
@@ -0,0 +1,59 @@
1
+ import { Host, h } from "@stencil/core";
2
+ import { loomaIconMarkup } from "../../icons";
3
+ const toneIcons = {
4
+ info: 'info',
5
+ note: 'notebook-pen',
6
+ warning: 'triangle-alert',
7
+ success: 'circle-check',
8
+ error: 'circle-x',
9
+ };
10
+ /** A static semantic message with a tone-specific icon. */
11
+ export class UICallout {
12
+ tone = 'info';
13
+ render() {
14
+ const icon = toneIcons[this.tone] ?? toneIcons.info;
15
+ return (h(Host, { key: '94bae6fbb688e5c8da979a3bebc12c51b8689c8a', role: "note", "data-tone": this.tone }, h("div", { key: '8fe1a3dae5b7cd3679d187cef018fa0cd810fb76', class: "callout__surface" }, h("span", { key: 'ed62ad8e29c30489e075631d83f1732d7a53a378', class: "icon", "aria-hidden": "true", innerHTML: loomaIconMarkup(icon) }), h("div", { key: '97638d28e3979f71913c17b2501a90e3a9251f0f', class: "content" }, h("slot", { key: '6a91a0d3f189eae28aabbe278924ba7f89015f34' })))));
16
+ }
17
+ static get is() { return "ui-callout"; }
18
+ static get encapsulation() { return "shadow"; }
19
+ static get originalStyleUrls() {
20
+ return {
21
+ "$": ["ui-callout.css"]
22
+ };
23
+ }
24
+ static get styleUrls() {
25
+ return {
26
+ "$": ["ui-callout.css"]
27
+ };
28
+ }
29
+ static get properties() {
30
+ return {
31
+ "tone": {
32
+ "type": "string",
33
+ "mutable": false,
34
+ "complexType": {
35
+ "original": "CalloutTone",
36
+ "resolved": "\"error\" | \"info\" | \"note\" | \"success\" | \"warning\"",
37
+ "references": {
38
+ "CalloutTone": {
39
+ "location": "local",
40
+ "path": "/home/runner/work/looma/looma/packages/core/src/components/ui-callout/ui-callout.tsx",
41
+ "id": "src/components/ui-callout/ui-callout.tsx::CalloutTone"
42
+ }
43
+ }
44
+ },
45
+ "required": false,
46
+ "optional": false,
47
+ "docs": {
48
+ "tags": [],
49
+ "text": ""
50
+ },
51
+ "getter": false,
52
+ "setter": false,
53
+ "reflect": false,
54
+ "attribute": "tone",
55
+ "defaultValue": "'info'"
56
+ }
57
+ };
58
+ }
59
+ }
@@ -1,8 +1,10 @@
1
1
  import { Host, h } from "@stencil/core";
2
2
  import { eventToTrigger, dispatchDetail } from "../../utils/events";
3
+ import { controlledOrDefault, isControlled } from "../../utils/controlled-state";
3
4
  export class UICheckbox {
4
5
  host;
5
- checked = false;
6
+ /** Controlled checked state. Omit it to use defaultChecked and local interaction state. */
7
+ checked;
6
8
  defaultChecked = false;
7
9
  disabled = false;
8
10
  indeterminate = false;
@@ -11,7 +13,8 @@ export class UICheckbox {
11
13
  internalChecked = false;
12
14
  slotRef;
13
15
  syncFromProp() {
14
- this.internalChecked = this.checked;
16
+ if (isControlled(this.checked))
17
+ this.internalChecked = this.checked;
15
18
  }
16
19
  syncToInput() {
17
20
  const input = this.getInput();
@@ -26,8 +29,7 @@ export class UICheckbox {
26
29
  input.value = this.value;
27
30
  }
28
31
  componentDidLoad() {
29
- this.syncFromProp();
30
- this.internalChecked = this.internalChecked || this.defaultChecked;
32
+ this.internalChecked = controlledOrDefault(this.checked, this.defaultChecked);
31
33
  this.slotRef?.addEventListener('slotchange', () => this.syncToInput());
32
34
  this.syncToInput();
33
35
  const input = this.getInput();
@@ -49,16 +51,20 @@ export class UICheckbox {
49
51
  const input = e.target;
50
52
  if (!input)
51
53
  return;
52
- this.internalChecked = input.checked;
54
+ const checked = input.checked;
55
+ if (!isControlled(this.checked))
56
+ this.internalChecked = checked;
57
+ else
58
+ this.syncToInput();
53
59
  this.indeterminate = input.indeterminate;
54
60
  dispatchDetail(this.host, 'change', {
55
- checked: this.internalChecked,
61
+ checked,
56
62
  value: this.value,
57
63
  trigger: eventToTrigger(e),
58
64
  });
59
65
  };
60
66
  render() {
61
- return (h(Host, { key: '66b6708ae71c9eca6c03c63891b590bd050c2506', role: "checkbox", "aria-checked": this.indeterminate ? 'mixed' : String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? '' : undefined }, h("slot", { key: 'b5e168a9ff0c6e5e747fff6c6264c59744f10a56', ref: (el) => (this.slotRef = el) })));
67
+ return (h(Host, { key: 'eb46eb41a5ab871058960bd2aa1163a03144bc0f', role: "checkbox", "aria-checked": this.indeterminate ? 'mixed' : String(this.internalChecked), "aria-disabled": String(this.disabled), "data-disabled": this.disabled ? '' : undefined }, h("slot", { key: 'ce18b1f1b63efebf048cd67b87064641cf4d915c', ref: (el) => (this.slotRef = el) })));
62
68
  }
63
69
  static get is() { return "ui-checkbox"; }
64
70
  static get encapsulation() { return "shadow"; }
@@ -83,16 +89,15 @@ export class UICheckbox {
83
89
  "references": {}
84
90
  },
85
91
  "required": false,
86
- "optional": false,
92
+ "optional": true,
87
93
  "docs": {
88
94
  "tags": [],
89
- "text": ""
95
+ "text": "Controlled checked state. Omit it to use defaultChecked and local interaction state."
90
96
  },
91
97
  "getter": false,
92
98
  "setter": false,
93
99
  "reflect": false,
94
- "attribute": "checked",
95
- "defaultValue": "false"
100
+ "attribute": "checked"
96
101
  },
97
102
  "defaultChecked": {
98
103
  "type": "boolean",
@@ -0,0 +1,43 @@
1
+ :host {
2
+ --ui-chip-surface: var(--ui-surface-subtle);
3
+ --ui-chip-text: var(--ui-text-secondary);
4
+ --ui-chip-border: var(--ui-border-default);
5
+ --ui-chip-font-size: var(--ui-font-size-xs);
6
+ --ui-chip-font-weight: var(--ui-font-normal);
7
+ --ui-chip-line-height: var(--ui-line-height-tight);
8
+ --ui-chip-padding-block: var(--ui-space-0-5);
9
+ --ui-chip-padding-inline: var(--ui-space-2);
10
+ --ui-chip-notch: var(--ui-space-1);
11
+
12
+ display: inline-flex;
13
+ max-width: 100%;
14
+ }
15
+
16
+ .chip__surface {
17
+ display: inline-flex;
18
+ align-items: center;
19
+ max-width: 100%;
20
+ padding: var(--ui-chip-padding-block) var(--ui-chip-padding-inline);
21
+ border: 1px solid var(--ui-chip-border);
22
+ background: var(--ui-chip-surface);
23
+ /* The shared light-DOM reset establishes a baseline host color; the chip's
24
+ semantic text hook must remain authoritative for consumer color systems. */
25
+ color: var(--ui-chip-text) !important;
26
+ /* The shared light-DOM reset establishes inherited defaults; this compact
27
+ metadata primitive owns its own typography contract. */
28
+ font-family: var(--ui-font-family-sans) !important;
29
+ font-size: var(--ui-chip-font-size) !important;
30
+ font-weight: var(--ui-chip-font-weight) !important;
31
+ line-height: var(--ui-chip-line-height) !important;
32
+ white-space: nowrap;
33
+ }
34
+
35
+ :host([data-appearance='pill']) .chip__surface {
36
+ border-radius: var(--ui-radius-round);
37
+ }
38
+
39
+ :host([data-appearance='tag']) .chip__surface {
40
+ border: 0;
41
+ padding-inline-end: calc(var(--ui-chip-padding-inline) + var(--ui-chip-notch));
42
+ clip-path: polygon(0 0, calc(100% - var(--ui-chip-notch)) 0, 100% 50%, calc(100% - var(--ui-chip-notch)) 100%, 0 100%);
43
+ }
@@ -0,0 +1,45 @@
1
+ import { Host, h } from "@stencil/core";
2
+ /** A compact, non-interactive metadata label. */
3
+ export class UIChip {
4
+ /** `tag` has a square leading edge and an angled trailing edge; `pill` is fully rounded. */
5
+ appearance = 'tag';
6
+ render() {
7
+ return (h(Host, { key: 'fe1246a1e698098f0ca9cb04e749d5adf233e50c', "data-appearance": this.appearance }, h("span", { key: 'a17237699b9eb20fb0a084adbd900a3aa9bc12b0', class: "chip__surface" }, h("slot", { key: '7f4e5dcc82d360083d4ded2617fa39a9dc1fd3ef' }))));
8
+ }
9
+ static get is() { return "ui-chip"; }
10
+ static get encapsulation() { return "shadow"; }
11
+ static get originalStyleUrls() {
12
+ return {
13
+ "$": ["ui-chip.css"]
14
+ };
15
+ }
16
+ static get styleUrls() {
17
+ return {
18
+ "$": ["ui-chip.css"]
19
+ };
20
+ }
21
+ static get properties() {
22
+ return {
23
+ "appearance": {
24
+ "type": "string",
25
+ "mutable": false,
26
+ "complexType": {
27
+ "original": "'tag' | 'pill'",
28
+ "resolved": "\"pill\" | \"tag\"",
29
+ "references": {}
30
+ },
31
+ "required": false,
32
+ "optional": false,
33
+ "docs": {
34
+ "tags": [],
35
+ "text": "`tag` has a square leading edge and an angled trailing edge; `pill` is fully rounded."
36
+ },
37
+ "getter": false,
38
+ "setter": false,
39
+ "reflect": false,
40
+ "attribute": "appearance",
41
+ "defaultValue": "'tag'"
42
+ }
43
+ };
44
+ }
45
+ }
@@ -0,0 +1,24 @@
1
+ :host { display: grid; gap: var(--ui-space-1); min-inline-size: 0; color: var(--ui-text-primary); font: inherit; }
2
+ label { color: var(--ui-field-label-color, var(--ui-text-primary)); font-size: var(--ui-field-label-size, 0.875rem); font-weight: var(--ui-field-label-weight, 500); }
3
+ .field { display: flex; min-inline-size: 0; border: 1px solid var(--ui-control-border, var(--ui-border-default)); border-radius: var(--ui-radius-2); background: var(--ui-control-surface, var(--ui-surface-default)); }
4
+ .field:focus-within { border-color: var(--ui-control-focus, var(--ui-focus-ring)); outline: 2px solid var(--ui-control-focus, var(--ui-focus-ring)); outline-offset: 1px; }
5
+ input { appearance: none; width: 100%; min-inline-size: 0; min-block-size: var(--ui-control-min-block-size, 2.75rem); box-sizing: border-box; border: 0; border-radius: inherit; background: transparent; color: inherit; font: inherit; line-height: var(--ui-line-height-md); padding: var(--ui-space-2) var(--ui-space-3); margin: 0; outline: none; }
6
+ :host([data-size='sm']) input { min-block-size: var(--ui-field-compact-size, 2rem); padding: var(--ui-space-1) var(--ui-space-2); }
7
+ button { appearance: none; border: 0; border-radius: var(--ui-radius-2); background: transparent; color: var(--ui-field-affordance-color, var(--ui-text-secondary)); font: inherit; font-weight: var(--ui-field-affordance-weight, 400); min-inline-size: 2rem; padding: var(--ui-space-1); cursor: pointer; }
8
+ button:hover:enabled { background: var(--ui-surface-muted); color: var(--ui-text-primary); }
9
+ button:focus-visible { outline: 2px solid var(--ui-focus-ring); outline-offset: -3px; }
10
+ input:disabled, button:disabled { color: var(--ui-text-muted); cursor: not-allowed; }
11
+ .field:has(input:disabled) { background: var(--ui-control-surface-disabled, var(--ui-surface-muted)); }
12
+ :host([data-validation='error']) .field { border-color: var(--ui-danger-solid, var(--ui-accent-active)); }
13
+ .popup { box-sizing: border-box; min-inline-size: 12rem; max-inline-size: calc(100vw - 1rem); max-block-size: var(--ui-combobox-max-block-size, 18rem); overflow: auto; margin: 0; padding: var(--ui-space-1); border: 1px solid var(--ui-border-default); border-radius: var(--ui-radius-2); background: var(--ui-surface-elevated); color: var(--ui-text-primary); box-shadow: var(--ui-shadow-md); }
14
+ [hidden] { display: none !important; }
15
+ .option { padding: var(--ui-space-2) var(--ui-space-3); border-radius: var(--ui-radius-1); cursor: pointer; overflow-wrap: anywhere; }
16
+ .option:hover, .option[data-active] { background: var(--ui-surface-muted); outline: 1px solid var(--ui-focus-ring); outline-offset: -1px; }
17
+ .option[aria-disabled='true'] { color: var(--ui-text-muted); cursor: not-allowed; }
18
+ .primary { display: block; color: var(--ui-option-primary-color, var(--ui-text-primary)); font-weight: var(--ui-option-primary-weight, 500); }
19
+ .secondary { display: block; color: var(--ui-option-secondary-color, var(--ui-text-secondary)); font-weight: var(--ui-option-secondary-weight, 400); font-size: var(--ui-font-size-sm); }
20
+ .message, .group { color: var(--ui-field-message-color, var(--ui-text-secondary)); font-weight: var(--ui-field-message-weight, 400); font-size: var(--ui-font-size-sm); line-height: var(--ui-line-height-md); overflow-wrap: anywhere; }
21
+ .group, .popup .message { padding: var(--ui-space-2) var(--ui-space-3); }
22
+ .sr-only { position: absolute; inline-size: 1px; block-size: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
23
+ @media (pointer: coarse) { button { min-inline-size: 2.75rem; min-block-size: 2.75rem; } }
24
+ @media (forced-colors: active) { .field, .popup { border-color: CanvasText; } .option[data-active] { outline-color: Highlight; } }