@mono-lit/helper 0.0.1 → 0.0.3

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 (499) hide show
  1. package/LICENSE.md +55 -55
  2. package/README.md +35 -35
  3. package/dist/{breakpoints-CAbhDUht.js → breakpoints-DllybT82.js} +7 -5
  4. package/dist/checkbox.css_raw-AYtSbUtY.js +5 -0
  5. package/dist/{chip-limits-BMoO31JM.js → chip-limits-CFABydIL.js} +5 -3
  6. package/dist/{chip-strip-Cw3gyz0q.js → chip-strip-bNfLn52Z.js} +5 -3
  7. package/dist/chip.css_raw-ChfRSHLO.js +5 -0
  8. package/dist/{color-DHYrfXsX.js → color-CEYYtRX-.js} +8 -7
  9. package/dist/{css-class-BRKRzHx-.js → css-class-B6Tc_MAx.js} +2 -1
  10. package/dist/{css-size-DhHSVZJK.js → css-size-DWAPgQdT.js} +2 -1
  11. package/dist/{data-source-controller-C50Qyfzh.js → data-source-controller-Cf_sMxEh.js} +72 -7
  12. package/dist/data-source-controller-Dx6IQ2CN.js +243 -0
  13. package/dist/{data-source-options-BTpfrOZ_.js → data-source-options-Bk-UoaZV.js} +15 -10
  14. package/dist/{data-source-options-CQSTZHPE.js → data-source-options-QjuI73g8.js} +17 -12
  15. package/dist/{data-source-read-CUX-lgrQ.js → data-source-read-Cuqw3LcP.js} +7 -4
  16. package/dist/{data-source-read-DL88aH8t.js → data-source-read-FxqzQkk2.js} +8 -5
  17. package/dist/{decorate-DEXtNagw.js → decorate-DbYFpi8R.js} +7 -5
  18. package/dist/{element-props-CLB6yvbm.js → element-props-xvw0EB7H.js} +4 -3
  19. package/dist/{esm-Ptok4SQZ.js → esm-D0We7ndD.js} +48 -44
  20. package/dist/{excel-DopRbEMK.js → excel-BXzr3uI1.js} +192 -16
  21. package/dist/{excel-CY6zGkcx.js → excel-DtRpxmxs.js} +27 -16
  22. package/dist/{export-BvlBx_GZ.js → export-B91P6J1y.js} +104 -18
  23. package/dist/export.js +103 -18
  24. package/dist/{field-icons-BoOG6KrL.js → field-icons-FmyBWa0g.js} +38 -1
  25. package/dist/{field-path-C92eGLg3.js → field-path-BabiMrrA.js} +3 -2
  26. package/dist/{filter-builder-Bke3qOgJ.js → filter-builder-B6Y2mmbM.js} +7 -4
  27. package/dist/{filter-builder-CE4zE0V5.js → filter-builder-C0T3pMx2.js} +7 -4
  28. package/dist/{filter-eval-DIfU2EAn.js → filter-eval-ChDSaAUH.js} +7 -5
  29. package/dist/{filter-odata-C1vSGZaY.js → filter-odata-Bi27XUpQ.js} +9 -6
  30. package/dist/{form-control-core-B8d7k6vk.js → form-control-core-CIdMLXMo.js} +9 -6
  31. package/dist/{form-control-core-eeRr0zLU.js → form-control-core-CRZPZ1ru.js} +9 -6
  32. package/dist/hydration-flush-DHrl4_KK.js +1014 -0
  33. package/dist/{icon-CJkTlmTb.js → icon-BM9N-jOt.js} +5 -2
  34. package/dist/{icon-dVhYJUIH.js → icon-ClxnYhBG.js} +4 -2
  35. package/dist/{import-BgJdkwBI.js → import-Dc4eXC02.js} +22 -16
  36. package/dist/import.js +22 -16
  37. package/dist/index.js +17 -16
  38. package/dist/{index.node-DjvYOL-J.js → index.node-dvrNviMx.js} +26 -19
  39. package/dist/index.node.js +17 -16
  40. package/dist/input.css_raw-CGESifay.js +5 -0
  41. package/dist/{layout-var-CZnzMC0s.js → layout-var-BSBKY49k.js} +3 -2
  42. package/dist/{light-slots-BVJwyg_2.js → light-slots-4ZCjOcBg.js} +6 -4
  43. package/dist/{light-slots-DW1WgfgT.js → light-slots-DdDdZ6zs.js} +6 -4
  44. package/dist/{markdown-DfqrfOJN.js → markdown-uGlE_OfJ.js} +414 -369
  45. package/dist/mono-button-CeDB9khW.js +878 -0
  46. package/dist/mono-button.shadow-D9NdMsmH.js +790 -0
  47. package/dist/{mono-data-chart-ChU4Ii3p.js → mono-data-chart-ChkelNT7.js} +66 -22
  48. package/dist/{mono-data-dropdown-BAUl58kW.js → mono-data-dropdown-DxpUUk2y.js} +5 -3
  49. package/dist/{mono-data-grid-Db80FzdZ.js → mono-data-grid-8jmeIXUU.js} +56 -265
  50. package/dist/{mono-data-grid-CLBK8clE.js → mono-data-grid-BHlo1IgR.js} +56 -265
  51. package/dist/{mono-element-B0kP_96P.js → mono-element-C7vCschg.js} +7 -4
  52. package/dist/{mono-event-Bi1qP9uN.js → mono-event-BPku9HpS.js} +4 -3
  53. package/dist/{mono-form-controller-5PfsU4qa.js → mono-form-controller-IYn0MuUQ.js} +7 -4
  54. package/dist/{mono-modal-controller-BMO3n3rP.js → mono-modal-controller-ClObbHUs.js} +9 -7
  55. package/dist/{mono-ui-CPV7rrdo.js → mono-ui-BwUc0L6B.js} +22 -20
  56. package/dist/{data-search-Bwo5bg8K.js → normalize-error-D93O4q8g.js} +314 -10
  57. package/dist/{notifier-CE4yxMUQ.js → notifier-BIrqUzRh.js} +11 -1
  58. package/dist/nuxt.js +20 -15
  59. package/dist/{popup-portal-BziRX1yG.js → popup-portal-HWhkd7oy.js} +6 -4
  60. package/dist/{popup-stack-CEEMib__.js → popup-stack-De05Y-mJ.js} +13 -10
  61. package/dist/{rate-limit-BBa2PO79.js → rate-limit-e9Jlpl5l.js} +12 -9
  62. package/dist/{reactive-BHsqVjRh.js → reactive-DFCdZbH9.js} +318 -12
  63. package/dist/{reactive-D3EERqgO.js → reactive-Dtd-esHO.js} +2 -1
  64. package/dist/search.js +5 -4
  65. package/dist/src/components/accordion/accordion-core.d.ts +42 -40
  66. package/dist/src/components/accordion/accordion-types.d.ts +50 -48
  67. package/dist/src/components/accordion/index.d.ts +3 -2
  68. package/dist/src/components/accordion/index.shadow.d.ts +4 -4
  69. package/dist/src/components/accordion/mono-accordion.d.ts +44 -40
  70. package/dist/src/components/accordion/mono-accordion.shadow.d.ts +42 -38
  71. package/dist/src/components/alert/alert-core.d.ts +30 -28
  72. package/dist/src/components/alert/alert-types.d.ts +36 -34
  73. package/dist/src/components/alert/index.d.ts +3 -2
  74. package/dist/src/components/alert/index.shadow.d.ts +4 -4
  75. package/dist/src/components/alert/mono-alert.d.ts +30 -26
  76. package/dist/src/components/alert/mono-alert.shadow.d.ts +24 -20
  77. package/dist/src/components/breadcrumb/breadcrumb-core.d.ts +42 -40
  78. package/dist/src/components/breadcrumb/breadcrumb-list-core.d.ts +31 -29
  79. package/dist/src/components/breadcrumb/breadcrumb-render.d.ts +18 -16
  80. package/dist/src/components/breadcrumb/breadcrumb-types.d.ts +89 -87
  81. package/dist/src/components/breadcrumb/breadcrumb-utils.d.ts +18 -15
  82. package/dist/src/components/breadcrumb/index.d.ts +6 -5
  83. package/dist/src/components/breadcrumb/index.shadow.d.ts +7 -7
  84. package/dist/src/components/breadcrumb/mono-breadcrumb-list.d.ts +18 -14
  85. package/dist/src/components/breadcrumb/mono-breadcrumb-list.shadow.d.ts +33 -29
  86. package/dist/src/components/breadcrumb/mono-breadcrumb.d.ts +24 -20
  87. package/dist/src/components/breadcrumb/mono-breadcrumb.shadow.d.ts +55 -51
  88. package/dist/src/components/button/button-core.d.ts +73 -71
  89. package/dist/src/components/button/button-dropdown-core.d.ts +55 -53
  90. package/dist/src/components/button/button-dropdown-types.d.ts +98 -96
  91. package/dist/src/components/button/button-types.d.ts +157 -155
  92. package/dist/src/components/button/button-utils.d.ts +7 -5
  93. package/dist/src/components/button/index.button-dropdown.d.ts +5 -3
  94. package/dist/src/components/button/index.button-dropdown.shadow.d.ts +5 -3
  95. package/dist/src/components/button/index.d.ts +4 -7
  96. package/dist/src/components/button/index.shadow.d.ts +5 -4
  97. package/dist/src/components/button/mono-button-dropdown.d.ts +24 -19
  98. package/dist/src/components/button/mono-button-dropdown.shadow.d.ts +34 -29
  99. package/dist/src/components/button/mono-button.d.ts +105 -101
  100. package/dist/src/components/button/mono-button.shadow.d.ts +42 -38
  101. package/dist/src/components/card/card-core.d.ts +59 -56
  102. package/dist/src/components/card/card-types.d.ts +91 -89
  103. package/dist/src/components/card/card-utils.d.ts +11 -9
  104. package/dist/src/components/card/index.d.ts +4 -3
  105. package/dist/src/components/card/index.shadow.d.ts +5 -5
  106. package/dist/src/components/card/mono-card.d.ts +36 -32
  107. package/dist/src/components/card/mono-card.shadow.d.ts +32 -28
  108. package/dist/src/components/chart/chart-core.d.ts +30 -28
  109. package/dist/src/components/chart/chart-odata.d.ts +17 -16
  110. package/dist/src/components/chart/chart-types.d.ts +269 -248
  111. package/dist/src/components/chart/index.d.ts +7 -7
  112. package/dist/src/components/chart/index.shadow.d.ts +7 -6
  113. package/dist/src/components/chart/mono-chart-presets.d.ts +33 -29
  114. package/dist/src/components/chart/mono-chart-presets.shadow.d.ts +33 -29
  115. package/dist/src/components/chart/mono-chart.d.ts +13 -9
  116. package/dist/src/components/chart/mono-chart.shadow.d.ts +13 -9
  117. package/dist/src/components/chart/mono-data-chart.d.ts +4 -26
  118. package/dist/src/components/checkbox/checkbox-core.d.ts +39 -37
  119. package/dist/src/components/checkbox/checkbox-types.d.ts +59 -57
  120. package/dist/src/components/checkbox/checkbox-utils.d.ts +13 -11
  121. package/dist/src/components/checkbox/index.d.ts +4 -3
  122. package/dist/src/components/checkbox/index.shadow.d.ts +5 -4
  123. package/dist/src/components/checkbox/mono-checkbox.d.ts +21 -17
  124. package/dist/src/components/checkbox/mono-checkbox.shadow.d.ts +31 -27
  125. package/dist/src/components/chip/chip-core.d.ts +42 -40
  126. package/dist/src/components/chip/chip-types.d.ts +104 -102
  127. package/dist/src/components/chip/chip-utils.d.ts +20 -18
  128. package/dist/src/components/chip/index.d.ts +5 -7
  129. package/dist/src/components/chip/index.shadow.d.ts +6 -5
  130. package/dist/src/components/chip/mono-chip.d.ts +31 -27
  131. package/dist/src/components/chip/mono-chip.shadow.d.ts +19 -15
  132. package/dist/src/components/chip/mono-status-dot.d.ts +19 -17
  133. package/dist/src/components/date/date-core.d.ts +64 -62
  134. package/dist/src/components/date/date-types.d.ts +143 -141
  135. package/dist/src/components/date/index.d.ts +3 -2
  136. package/dist/src/components/date/index.shadow.d.ts +4 -3
  137. package/dist/src/components/date/mono-date.d.ts +12 -8
  138. package/dist/src/components/date/mono-date.shadow.d.ts +21 -17
  139. package/dist/src/components/drawer/drawer-core.d.ts +75 -73
  140. package/dist/src/components/drawer/drawer-types.d.ts +109 -107
  141. package/dist/src/components/drawer/index.d.ts +3 -2
  142. package/dist/src/components/drawer/index.shadow.d.ts +4 -3
  143. package/dist/src/components/drawer/mono-drawer.d.ts +32 -28
  144. package/dist/src/components/drawer/mono-drawer.shadow.d.ts +34 -31
  145. package/dist/src/components/dropdown/dropdown-core.d.ts +31 -29
  146. package/dist/src/components/dropdown/dropdown-types.d.ts +62 -60
  147. package/dist/src/components/dropdown/index.d.ts +3 -2
  148. package/dist/src/components/dropdown/index.shadow.d.ts +4 -3
  149. package/dist/src/components/dropdown/mono-dropdown.d.ts +23 -19
  150. package/dist/src/components/dropdown/mono-dropdown.shadow.d.ts +19 -15
  151. package/dist/src/components/dropdown-table/dropdown-table-core.d.ts +53 -51
  152. package/dist/src/components/dropdown-table/dropdown-table-types.d.ts +218 -216
  153. package/dist/src/components/dropdown-table/index.d.ts +5 -4
  154. package/dist/src/components/dropdown-table/index.shadow.d.ts +6 -5
  155. package/dist/src/components/dropdown-table/mono-data-dropdown.d.ts +119 -129
  156. package/dist/src/components/dropdown-table/mono-dropdown-table.d.ts +20 -16
  157. package/dist/src/components/dropdown-table/mono-dropdown-table.shadow.d.ts +15 -11
  158. package/dist/src/components/file-upload/file-upload-core.d.ts +44 -42
  159. package/dist/src/components/file-upload/file-upload-types.d.ts +123 -121
  160. package/dist/src/components/file-upload/file-upload-utils.d.ts +7 -4
  161. package/dist/src/components/file-upload/index.d.ts +4 -3
  162. package/dist/src/components/file-upload/index.shadow.d.ts +5 -4
  163. package/dist/src/components/file-upload/mono-file-upload.d.ts +20 -16
  164. package/dist/src/components/file-upload/mono-file-upload.shadow.d.ts +34 -30
  165. package/dist/src/components/filter/filter-builder-core.d.ts +17 -15
  166. package/dist/src/components/filter/filter-builder.d.ts +4 -22
  167. package/dist/src/components/filter/filter-odata.d.ts +3 -1
  168. package/dist/src/components/filter/filter-operators.d.ts +3 -1
  169. package/dist/src/components/filter/filter-types.d.ts +172 -170
  170. package/dist/src/components/filter/index.d.ts +6 -5
  171. package/dist/src/components/filter/index.shadow.d.ts +7 -6
  172. package/dist/src/components/filter/mono-filter-builder.d.ts +13 -10
  173. package/dist/src/components/filter/mono-filter-builder.shadow.d.ts +10 -7
  174. package/dist/src/components/form/form-control-core.d.ts +14 -12
  175. package/dist/src/components/form/form-rules.d.ts +7 -5
  176. package/dist/src/components/form/form-types.d.ts +214 -214
  177. package/dist/src/components/form/index.d.ts +5 -5
  178. package/dist/src/components/form/mono-form-controller.d.ts +4 -15
  179. package/dist/src/components/input/index.d.ts +5 -5
  180. package/dist/src/components/input/index.shadow.d.ts +6 -7
  181. package/dist/src/components/input/input-core.d.ts +73 -71
  182. package/dist/src/components/input/input-format.d.ts +22 -20
  183. package/dist/src/components/input/input-types.d.ts +167 -165
  184. package/dist/src/components/input/input-utils.d.ts +7 -5
  185. package/dist/src/components/input/mono-input.d.ts +35 -31
  186. package/dist/src/components/input/mono-input.shadow.d.ts +17 -13
  187. package/dist/src/components/menu/index.d.ts +7 -5
  188. package/dist/src/components/menu/index.shadow.d.ts +7 -6
  189. package/dist/src/components/menu/menu-core.d.ts +47 -45
  190. package/dist/src/components/menu/menu-render.d.ts +42 -40
  191. package/dist/src/components/menu/menu-types.d.ts +132 -130
  192. package/dist/src/components/menu/menu-utils.d.ts +16 -13
  193. package/dist/src/components/menu/mono-menu-list.d.ts +116 -114
  194. package/dist/src/components/menu/mono-menu.d.ts +30 -26
  195. package/dist/src/components/menu/mono-menu.shadow.d.ts +22 -18
  196. package/dist/src/components/modal/index.d.ts +5 -3
  197. package/dist/src/components/modal/index.shadow.d.ts +6 -4
  198. package/dist/src/components/modal/modal-core.d.ts +81 -79
  199. package/dist/src/components/modal/modal-types.d.ts +223 -221
  200. package/dist/src/components/modal/mono-modal-controller.d.ts +4 -3
  201. package/dist/src/components/modal/mono-modal.d.ts +32 -28
  202. package/dist/src/components/modal/mono-modal.shadow.d.ts +38 -35
  203. package/dist/src/components/nav/index.d.ts +4 -3
  204. package/dist/src/components/nav/index.shadow.d.ts +5 -5
  205. package/dist/src/components/nav/mono-nav.d.ts +28 -24
  206. package/dist/src/components/nav/mono-nav.shadow.d.ts +10 -7
  207. package/dist/src/components/nav/nav-core.d.ts +16 -14
  208. package/dist/src/components/nav/nav-types.d.ts +23 -22
  209. package/dist/src/components/nav/nav-utils.d.ts +10 -8
  210. package/dist/src/components/radio/index.d.ts +4 -3
  211. package/dist/src/components/radio/index.shadow.d.ts +5 -4
  212. package/dist/src/components/radio/mono-radio.d.ts +19 -15
  213. package/dist/src/components/radio/mono-radio.shadow.d.ts +22 -18
  214. package/dist/src/components/radio/radio-core.d.ts +31 -29
  215. package/dist/src/components/radio/radio-types.d.ts +48 -46
  216. package/dist/src/components/radio/radio-utils.d.ts +5 -3
  217. package/dist/src/components/rich-text-editor/index.d.ts +5 -4
  218. package/dist/src/components/rich-text-editor/index.shadow.d.ts +6 -5
  219. package/dist/src/components/rich-text-editor/mono-rich-text-editor.d.ts +19 -15
  220. package/dist/src/components/rich-text-editor/mono-rich-text-editor.shadow.d.ts +22 -19
  221. package/dist/src/components/rich-text-editor/rich-text-editor-core.d.ts +61 -59
  222. package/dist/src/components/rich-text-editor/rich-text-editor-loader.d.ts +2 -0
  223. package/dist/src/components/rich-text-editor/rich-text-editor-toolbar.d.ts +5 -3
  224. package/dist/src/components/rich-text-editor/rich-text-editor-types.d.ts +179 -177
  225. package/dist/src/components/select/index.d.ts +4 -3
  226. package/dist/src/components/select/index.shadow.d.ts +5 -4
  227. package/dist/src/components/select/mono-select.d.ts +58 -54
  228. package/dist/src/components/select/mono-select.shadow.d.ts +30 -27
  229. package/dist/src/components/select/select-core.d.ts +82 -80
  230. package/dist/src/components/select/select-types.d.ts +235 -208
  231. package/dist/src/components/select/select-utils.d.ts +7 -5
  232. package/dist/src/components/sidebar/index.d.ts +4 -3
  233. package/dist/src/components/sidebar/index.shadow.d.ts +5 -5
  234. package/dist/src/components/sidebar/mono-sidebar.d.ts +22 -18
  235. package/dist/src/components/sidebar/mono-sidebar.shadow.d.ts +11 -8
  236. package/dist/src/components/sidebar/sidebar-core.d.ts +33 -31
  237. package/dist/src/components/sidebar/sidebar-types.d.ts +77 -75
  238. package/dist/src/components/sidebar/sidebar-utils.d.ts +28 -26
  239. package/dist/src/components/switch/index.d.ts +4 -3
  240. package/dist/src/components/switch/index.shadow.d.ts +5 -4
  241. package/dist/src/components/switch/mono-switch.d.ts +19 -15
  242. package/dist/src/components/switch/mono-switch.shadow.d.ts +23 -19
  243. package/dist/src/components/switch/switch-core.d.ts +35 -33
  244. package/dist/src/components/switch/switch-types.d.ts +55 -53
  245. package/dist/src/components/switch/switch-utils.d.ts +5 -3
  246. package/dist/src/components/table/array-source.d.ts +31 -29
  247. package/dist/src/components/table/date-filter-tree.d.ts +25 -23
  248. package/dist/src/components/table/grouping.d.ts +22 -20
  249. package/dist/src/components/table/index.d.ts +28 -32
  250. package/dist/src/components/table/index.shadow.d.ts +34 -46
  251. package/dist/src/components/table/mono-data-grid.d.ts +1447 -1456
  252. package/dist/src/components/table/mono-table-checkbox-core.d.ts +34 -32
  253. package/dist/src/components/table/mono-table-checkbox.d.ts +12 -8
  254. package/dist/src/components/table/mono-table-checkbox.shadow.d.ts +16 -12
  255. package/dist/src/components/table/mono-table-detail-core.d.ts +29 -27
  256. package/dist/src/components/table/mono-table-detail.d.ts +12 -8
  257. package/dist/src/components/table/mono-table-detail.shadow.d.ts +13 -9
  258. package/dist/src/components/table/mono-table-empty-core.d.ts +24 -22
  259. package/dist/src/components/table/mono-table-empty.d.ts +17 -13
  260. package/dist/src/components/table/mono-table-empty.shadow.d.ts +22 -18
  261. package/dist/src/components/table/mono-table-error-core.d.ts +24 -22
  262. package/dist/src/components/table/mono-table-error.d.ts +12 -8
  263. package/dist/src/components/table/mono-table-error.shadow.d.ts +15 -11
  264. package/dist/src/components/table/mono-table-info-core.d.ts +6 -4
  265. package/dist/src/components/table/mono-table-info.d.ts +12 -8
  266. package/dist/src/components/table/mono-table-info.shadow.d.ts +9 -5
  267. package/dist/src/components/table/mono-table-loading-core.d.ts +7 -5
  268. package/dist/src/components/table/mono-table-loading.d.ts +12 -8
  269. package/dist/src/components/table/mono-table-loading.shadow.d.ts +9 -5
  270. package/dist/src/components/table/mono-table-page-size-core.d.ts +7 -5
  271. package/dist/src/components/table/mono-table-page-size.d.ts +12 -8
  272. package/dist/src/components/table/mono-table-page-size.shadow.d.ts +9 -5
  273. package/dist/src/components/table/mono-table-paging-core.d.ts +16 -14
  274. package/dist/src/components/table/mono-table-paging-group-core.d.ts +10 -8
  275. package/dist/src/components/table/mono-table-paging-group.d.ts +12 -8
  276. package/dist/src/components/table/mono-table-paging-group.shadow.d.ts +9 -5
  277. package/dist/src/components/table/mono-table-paging.d.ts +12 -8
  278. package/dist/src/components/table/mono-table-paging.shadow.d.ts +9 -5
  279. package/dist/src/components/table/mono-table-search-core.d.ts +51 -49
  280. package/dist/src/components/table/mono-table-search.d.ts +25 -22
  281. package/dist/src/components/table/mono-table-search.shadow.d.ts +12 -9
  282. package/dist/src/components/table/mono-table-sort-core.d.ts +16 -14
  283. package/dist/src/components/table/mono-table-sort.d.ts +21 -18
  284. package/dist/src/components/table/mono-table-sort.shadow.d.ts +11 -8
  285. package/dist/src/components/table/mono-table-summary-core.d.ts +9 -7
  286. package/dist/src/components/table/mono-table-summary.d.ts +12 -8
  287. package/dist/src/components/table/mono-table-summary.shadow.d.ts +9 -5
  288. package/dist/src/components/table/mono-table-th-core.d.ts +23 -21
  289. package/dist/src/components/table/mono-table-th.d.ts +21 -18
  290. package/dist/src/components/table/mono-table-th.shadow.d.ts +11 -8
  291. package/dist/src/components/table/store-group-source.d.ts +14 -12
  292. package/dist/src/components/table/table-controller-core.d.ts +17 -15
  293. package/dist/src/components/table/table-filter-icons.d.ts +3 -1
  294. package/dist/src/components/table/table-menu-core.d.ts +40 -38
  295. package/dist/src/components/table/table-overlay.d.ts +43 -41
  296. package/dist/src/components/table/table-sort-icons.d.ts +4 -2
  297. package/dist/src/components/table/table-sort-utils.d.ts +3 -1
  298. package/dist/src/components/table/table-types.d.ts +391 -400
  299. package/dist/src/components/tabs/index.d.ts +3 -2
  300. package/dist/src/components/tabs/index.shadow.d.ts +4 -3
  301. package/dist/src/components/tabs/mono-tabs.d.ts +21 -17
  302. package/dist/src/components/tabs/mono-tabs.shadow.d.ts +21 -17
  303. package/dist/src/components/tabs/tabs-core.d.ts +36 -34
  304. package/dist/src/components/tabs/tabs-types.d.ts +48 -46
  305. package/dist/src/components/tag-input/index.d.ts +5 -3
  306. package/dist/src/components/tag-input/index.shadow.d.ts +6 -4
  307. package/dist/src/components/tag-input/mono-tag-input.d.ts +56 -52
  308. package/dist/src/components/tag-input/mono-tag-input.shadow.d.ts +41 -38
  309. package/dist/src/components/tag-input/tag-input-core.d.ts +95 -93
  310. package/dist/src/components/tag-input/tag-input-types.d.ts +350 -327
  311. package/dist/src/components/tag-input/tag-input-utils.d.ts +7 -5
  312. package/dist/src/components/textarea/index.d.ts +4 -3
  313. package/dist/src/components/textarea/index.shadow.d.ts +5 -4
  314. package/dist/src/components/textarea/mono-textarea.d.ts +19 -15
  315. package/dist/src/components/textarea/mono-textarea.shadow.d.ts +19 -16
  316. package/dist/src/components/textarea/textarea-core.d.ts +48 -46
  317. package/dist/src/components/textarea/textarea-types.d.ts +120 -118
  318. package/dist/src/components/textarea/textarea-utils.d.ts +7 -5
  319. package/dist/src/components/tooltip/control-tooltip.d.ts +3 -1
  320. package/dist/src/components/tooltip/index.d.ts +6 -5
  321. package/dist/src/components/tooltip/tooltip-config.d.ts +17 -15
  322. package/dist/src/components/tooltip/tooltip-declarative.d.ts +3 -1
  323. package/dist/src/components/tooltip/tooltip-loader.d.ts +2 -0
  324. package/dist/src/components/tooltip/tooltip-types.d.ts +74 -72
  325. package/dist/src/composables/breakpoints.d.ts +9 -7
  326. package/dist/src/composables/chip-limits.d.ts +12 -10
  327. package/dist/src/composables/chip-strip.d.ts +91 -89
  328. package/dist/src/composables/color.d.ts +6 -4
  329. package/dist/src/composables/css-class.d.ts +4 -2
  330. package/dist/src/composables/css-size.d.ts +9 -7
  331. package/dist/src/composables/data-source-controller.d.ts +90 -59
  332. package/dist/src/composables/element-props.d.ts +3 -3
  333. package/dist/src/composables/field-icons.d.ts +11 -1
  334. package/dist/src/composables/hybird-prop.d.ts +10 -8
  335. package/dist/src/composables/hydration-flush.d.ts +16 -14
  336. package/dist/src/composables/icon.d.ts +3 -1
  337. package/dist/src/composables/layout-var.d.ts +2 -0
  338. package/dist/src/composables/light-slots.d.ts +34 -32
  339. package/dist/src/composables/mdi-glyphs.d.ts +2 -0
  340. package/dist/src/composables/mono-element.d.ts +3 -1
  341. package/dist/src/composables/mono-event.d.ts +15 -13
  342. package/dist/src/composables/mono-pending.d.ts +4 -2
  343. package/dist/src/composables/mono-skeleton.d.ts +100 -98
  344. package/dist/src/composables/mono-ui.d.ts +17 -18
  345. package/dist/src/composables/notifier.d.ts +20 -18
  346. package/dist/src/composables/popup-portal.d.ts +177 -175
  347. package/dist/src/composables/popup-stack.d.ts +36 -34
  348. package/dist/src/composables/rate-limit.d.ts +33 -31
  349. package/dist/src/composables/reactive.d.ts +3 -1
  350. package/dist/src/composables/shadow-css.d.ts +17 -15
  351. package/dist/src/composables/visibility.d.ts +6 -4
  352. package/dist/src/data/theme/index.d.ts +9 -7
  353. package/dist/src/data/theme/presets.d.ts +64 -62
  354. package/dist/src/entries/index.d.ts +36 -1
  355. package/dist/src/entries/index.node.d.ts +34 -41
  356. package/dist/src/entries/search.d.ts +2 -2
  357. package/dist/src/export/detail.d.ts +14 -12
  358. package/dist/src/export/download.d.ts +2 -0
  359. package/dist/src/export/excel/index.d.ts +13 -11
  360. package/dist/src/export/excel/nodes.d.ts +95 -93
  361. package/dist/src/export/expression.d.ts +3 -1
  362. package/dist/src/export/helpers.d.ts +3 -1
  363. package/dist/src/export/index.d.ts +6 -4
  364. package/dist/src/export/markdown.d.ts +19 -17
  365. package/dist/src/export/resolve-data.d.ts +3 -1
  366. package/dist/src/export/sentinel.d.ts +32 -30
  367. package/dist/src/export/sheet-name.d.ts +7 -5
  368. package/dist/src/export/styles.d.ts +13 -11
  369. package/dist/src/export/template.d.ts +3 -1
  370. package/dist/src/export/types.d.ts +224 -222
  371. package/dist/src/import/coerce.d.ts +5 -3
  372. package/dist/src/import/index.d.ts +12 -10
  373. package/dist/src/import/match.d.ts +20 -18
  374. package/dist/src/import/parse.d.ts +5 -3
  375. package/dist/src/import/types.d.ts +125 -123
  376. package/dist/src/nuxt/index.d.ts +92 -90
  377. package/dist/src/search/data-search.d.ts +92 -90
  378. package/dist/src/search/field-path.d.ts +10 -8
  379. package/dist/src/search/filter-eval.d.ts +2 -0
  380. package/dist/src/search/index.d.ts +6 -22
  381. package/dist/src/search/odata-search.d.ts +9 -7
  382. package/dist/src/search/search-expr.d.ts +16 -14
  383. package/dist/src/utils/data-source-apply.d.ts +11 -9
  384. package/dist/src/utils/data-source-options.d.ts +37 -35
  385. package/dist/src/utils/data-source-read.d.ts +40 -54
  386. package/dist/src/utils/data-source-summary.d.ts +8 -7
  387. package/dist/src/utils/normalize-error.d.ts +41 -9
  388. package/dist/src/vite/index.d.ts +34 -34
  389. package/dist/src/vite/mono-client-only.d.ts +34 -32
  390. package/dist/src/vite/mono-ssr-stub.d.ts +8 -6
  391. package/dist/src/vite/shadow-manifest.d.ts +2 -0
  392. package/dist/{styles-BIJ31TM4.js → styles-D-ergrfR.js} +417 -207
  393. package/dist/{tooltip-CysgRgBi.js → tooltip-FCMRUSLi.js} +94 -52
  394. package/dist/tooltip.js +3 -2
  395. package/dist/ui/accordion.js +16 -12
  396. package/dist/ui/alert.js +21 -14
  397. package/dist/ui/breadcrumb.js +28 -18
  398. package/dist/ui/button-dropdown.js +18 -14
  399. package/dist/ui/button.js +4 -2
  400. package/dist/ui/card.js +31 -13
  401. package/dist/ui/chart.js +107 -25
  402. package/dist/ui/checkbox.js +17 -12
  403. package/dist/ui/chip.js +19 -12
  404. package/dist/ui/date.js +19 -15
  405. package/dist/ui/drawer.js +26 -20
  406. package/dist/ui/dropdown-table.js +39 -30
  407. package/dist/ui/dropdown.js +19 -15
  408. package/dist/ui/file-upload.js +22 -17
  409. package/dist/ui/filter.js +18 -14
  410. package/dist/ui/form.js +4 -3
  411. package/dist/ui/index.css +1233 -2194
  412. package/dist/ui/input.js +24 -17
  413. package/dist/ui/menu.js +32 -20
  414. package/dist/ui/modal.js +34 -26
  415. package/dist/ui/nav.js +21 -15
  416. package/dist/ui/radio.js +17 -12
  417. package/dist/ui/rich-text-editor.js +34 -28
  418. package/dist/ui/select.js +181 -41
  419. package/dist/ui/shadow/accordion.js +13 -9
  420. package/dist/ui/shadow/alert.js +13 -9
  421. package/dist/ui/shadow/breadcrumb.js +23 -14
  422. package/dist/ui/shadow/button-dropdown.js +17 -13
  423. package/dist/ui/shadow/button.js +4 -2
  424. package/dist/ui/shadow/card.js +30 -11
  425. package/dist/ui/shadow/chart.js +163 -40
  426. package/dist/ui/shadow/checkbox.js +13 -9
  427. package/dist/ui/shadow/chip.js +16 -10
  428. package/dist/ui/shadow/date.js +19 -12
  429. package/dist/ui/shadow/drawer.js +22 -16
  430. package/dist/ui/shadow/dropdown-table.js +39 -28
  431. package/dist/ui/shadow/dropdown.js +15 -11
  432. package/dist/ui/shadow/file-upload.js +26 -19
  433. package/dist/ui/shadow/filter.js +17 -13
  434. package/dist/ui/shadow/input.js +20 -14
  435. package/dist/ui/shadow/menu.js +24 -14
  436. package/dist/ui/shadow/modal.js +36 -27
  437. package/dist/ui/shadow/nav.js +18 -12
  438. package/dist/ui/shadow/radio.js +15 -10
  439. package/dist/ui/shadow/rich-text-editor.js +32 -26
  440. package/dist/ui/shadow/select.js +179 -39
  441. package/dist/ui/shadow/sidebar.js +23 -16
  442. package/dist/ui/shadow/switch.js +15 -10
  443. package/dist/ui/shadow/table.js +123 -84
  444. package/dist/ui/shadow/tabs.js +12 -8
  445. package/dist/ui/shadow/tag-input.js +186 -52
  446. package/dist/ui/shadow/textarea.js +17 -12
  447. package/dist/ui/sidebar.js +27 -20
  448. package/dist/ui/switch.js +17 -12
  449. package/dist/ui/table.js +129 -87
  450. package/dist/ui/tabs.js +15 -11
  451. package/dist/ui/tag-input.js +182 -48
  452. package/dist/ui/textarea.js +19 -14
  453. package/dist/{vite-C5iUK7so.js → vite-DcyRlTTf.js} +17 -9
  454. package/dist/vite.js +3 -2
  455. package/package.json +15 -14
  456. package/dist/checkbox-Cqpie9Ap.js +0 -4
  457. package/dist/chip-DBUUa2eB.js +0 -4
  458. package/dist/data/theme/presets.json.d.ts +0 -140
  459. package/dist/export.d.ts +0 -1
  460. package/dist/hydration-flush-RB5Tz5nl.js +0 -1001
  461. package/dist/import.d.ts +0 -1
  462. package/dist/index.d.ts +0 -1
  463. package/dist/index.node.d.ts +0 -1
  464. package/dist/input-zGOULADt.js +0 -4
  465. package/dist/mono-button-CoVnBLav.js +0 -873
  466. package/dist/mono-button.shadow-FfP_hMH4.js +0 -784
  467. package/dist/nuxt.d.ts +0 -1
  468. package/dist/search.d.ts +0 -1
  469. package/dist/tooltip.d.ts +0 -1
  470. package/dist/ui/accordion.d.ts +0 -1
  471. package/dist/ui/alert.d.ts +0 -1
  472. package/dist/ui/breadcrumb.d.ts +0 -1
  473. package/dist/ui/button-dropdown.d.ts +0 -1
  474. package/dist/ui/button.d.ts +0 -1
  475. package/dist/ui/card.d.ts +0 -1
  476. package/dist/ui/chart.d.ts +0 -1
  477. package/dist/ui/checkbox.d.ts +0 -1
  478. package/dist/ui/chip.d.ts +0 -1
  479. package/dist/ui/date.d.ts +0 -1
  480. package/dist/ui/drawer.d.ts +0 -1
  481. package/dist/ui/dropdown-table.d.ts +0 -1
  482. package/dist/ui/dropdown.d.ts +0 -1
  483. package/dist/ui/file-upload.d.ts +0 -1
  484. package/dist/ui/filter.d.ts +0 -1
  485. package/dist/ui/form.d.ts +0 -1
  486. package/dist/ui/input.d.ts +0 -1
  487. package/dist/ui/menu.d.ts +0 -1
  488. package/dist/ui/modal.d.ts +0 -1
  489. package/dist/ui/nav.d.ts +0 -1
  490. package/dist/ui/radio.d.ts +0 -1
  491. package/dist/ui/rich-text-editor.d.ts +0 -1
  492. package/dist/ui/select.d.ts +0 -1
  493. package/dist/ui/sidebar.d.ts +0 -1
  494. package/dist/ui/switch.d.ts +0 -1
  495. package/dist/ui/table.d.ts +0 -1
  496. package/dist/ui/tabs.d.ts +0 -1
  497. package/dist/ui/tag-input.d.ts +0 -1
  498. package/dist/ui/textarea.d.ts +0 -1
  499. package/dist/vite.d.ts +0 -1
package/dist/ui/select.js CHANGED
@@ -1,20 +1,22 @@
1
- import { t as getFieldValue } from "../field-path-C92eGLg3.js";
2
- import { f as searchRowPredicate, r as MonoSourceSearch, u as resolveSearchFields } from "../data-search-Bwo5bg8K.js";
3
- import { n as unwrapReactive } from "../reactive-D3EERqgO.js";
4
- import { l as monoHostChildNodes } from "../mono-ui-CPV7rrdo.js";
5
- import { t as customElement } from "../mono-element-B0kP_96P.js";
6
- import { a as defineHybridPropAliases, n as arrayHasChanged, r as booleanStringConverter, t as __decorate } from "../decorate-DEXtNagw.js";
7
- import { t as dispatchMonoEvent } from "../mono-event-Bi1qP9uN.js";
8
- import { s as placeSlotNode, t as LateSlotWatcher } from "../light-slots-DW1WgfgT.js";
9
- import { n as toCssSize, t as buildSizeStyle } from "../css-size-DhHSVZJK.js";
10
- import { a as rateLimitHasChanged } from "../rate-limit-BBa2PO79.js";
11
- import { t as PopupPortalController } from "../popup-portal-BziRX1yG.js";
12
- import { t as MonoFormControlCore } from "../form-control-core-eeRr0zLU.js";
13
- import { t as DataSourceController } from "../data-source-controller-C50Qyfzh.js";
1
+ import { t as getFieldValue } from "../field-path-BabiMrrA.js";
2
+ import { a as errorTitle, f as MonoSourceSearch, i as errorText, n as describeError, x as searchRowPredicate, y as resolveSearchFields } from "../normalize-error-D93O4q8g.js";
3
+ import { n as unwrapReactive } from "../reactive-Dtd-esHO.js";
4
+ import { l as monoHostChildNodes } from "../mono-ui-BwUc0L6B.js";
5
+ import { t as customElement } from "../mono-element-C7vCschg.js";
6
+ import { a as defineHybridPropAliases, n as arrayHasChanged, r as booleanStringConverter, t as __decorate } from "../decorate-DbYFpi8R.js";
7
+ import { t as dispatchMonoEvent } from "../mono-event-BPku9HpS.js";
8
+ import { s as placeSlotNode, t as LateSlotWatcher } from "../light-slots-DdDdZ6zs.js";
9
+ import { n as toCssSize, t as buildSizeStyle } from "../css-size-DWAPgQdT.js";
10
+ import { a as rateLimitHasChanged } from "../rate-limit-e9Jlpl5l.js";
11
+ import { t as PopupPortalController } from "../popup-portal-HWhkd7oy.js";
12
+ import { a as spinnerIcon, i as refreshIcon } from "../field-icons-FmyBWa0g.js";
13
+ import { t as MonoFormControlCore } from "../form-control-core-CRZPZ1ru.js";
14
+ import { t as DataSourceController } from "../data-source-controller-Dx6IQ2CN.js";
14
15
  import { LitElement, html, isServer, nothing, unsafeCSS } from "lit";
15
16
  import { property, query, state } from "lit/decorators.js";
16
17
  import { ifDefined } from "lit/directives/if-defined.js";
17
18
  import { styleMap } from "lit/directives/style-map.js";
19
+
18
20
  //#region src/components/select/select-core.ts
19
21
  /**
20
22
  * `MonoSelectCore` — render-mode-agnostic logic for `mono-select` (props, hybrid
@@ -27,7 +29,7 @@ import { styleMap } from "lit/directives/style-map.js";
27
29
  * `<slot>` + a `firstUpdated` scan), and the `_slotOutlet` / `renderIcon` hooks.
28
30
  * The shared `_has*SlotState` `@state` fields back both strategies.
29
31
  */
30
- var MonoSelectCore = (superClass) => {
32
+ const MonoSelectCore = (superClass) => {
31
33
  class MonoSelectCoreClass extends MonoFormControlCore(superClass) {
32
34
  constructor(...args) {
33
35
  super(...args);
@@ -69,6 +71,10 @@ var MonoSelectCore = (superClass) => {
69
71
  this.searchOperation = "contains";
70
72
  this.searchDebounce = 300;
71
73
  this.searchPlaceholder = "";
74
+ this.loadingText = "Loading…";
75
+ this.retryLabel = "Retry";
76
+ this.loading = false;
77
+ this.loadingError = null;
72
78
  this.cssClass = {};
73
79
  this.cssClassName = "";
74
80
  this._open = false;
@@ -108,6 +114,22 @@ var MonoSelectCore = (superClass) => {
108
114
  if (!el) return;
109
115
  if (el.scrollHeight - el.scrollTop - el.clientHeight <= 24) this._ds.loadMore();
110
116
  };
117
+ this._appliedQuery = "";
118
+ this._appFailure = null;
119
+ this._retry = (event) => {
120
+ event.preventDefault();
121
+ event.stopPropagation();
122
+ const error = this._failure;
123
+ if (this.disabled || this._busy || !error) return;
124
+ const fromApp = !!this._appFailure;
125
+ dispatchMonoEvent(this, "retry", {
126
+ error,
127
+ source: fromApp ? "app" : "dataSource"
128
+ });
129
+ if (fromApp || !this.dataSource || !this._ds.error) return;
130
+ const clearSearch = !!this._appliedQuery && this._serverSearch();
131
+ this._ds.retry(clearSearch ? () => this._pushSearch("") : void 0);
132
+ };
111
133
  this._handleDocumentClick = (event) => {
112
134
  if (!this._open || this.stayOpen) return;
113
135
  const path = event.composedPath();
@@ -130,7 +152,7 @@ var MonoSelectCore = (superClass) => {
130
152
  };
131
153
  this._publishedEntries = [];
132
154
  this._onListSlotClick = (event) => {
133
- if (this.disabled || this.readonly) return;
155
+ if (this._inert) return;
134
156
  const target = event.target;
135
157
  const item = target ? this._entryFromNode(target)?.item : void 0;
136
158
  if (!item || item.disabled) return;
@@ -138,6 +160,8 @@ var MonoSelectCore = (superClass) => {
138
160
  };
139
161
  defineHybridPropAliases(this, [
140
162
  "modelValue",
163
+ "loadingText",
164
+ "loadingError",
141
165
  "helperText",
142
166
  "validationState",
143
167
  "validationMessage",
@@ -231,6 +255,8 @@ var MonoSelectCore = (superClass) => {
231
255
  return [
232
256
  ...super.observedAttributes ?? [],
233
257
  "modelvalue",
258
+ "loadingtext",
259
+ "loadingerror",
234
260
  "model-value",
235
261
  "helpertext",
236
262
  "validationstate",
@@ -254,6 +280,14 @@ var MonoSelectCore = (superClass) => {
254
280
  this.modelValue = this._toSelectValue(newValue);
255
281
  return;
256
282
  }
283
+ if (name === "loadingtext") {
284
+ this.loadingText = newValue ?? "Loading…";
285
+ return;
286
+ }
287
+ if (name === "loadingerror") {
288
+ this.loadingError = newValue;
289
+ return;
290
+ }
257
291
  if (name === "helpertext") {
258
292
  this.helperText = newValue ?? "";
259
293
  return;
@@ -360,6 +394,7 @@ var MonoSelectCore = (superClass) => {
360
394
  this._itemsEpoch++;
361
395
  for (const key of [
362
396
  "disabled",
397
+ "loading",
363
398
  "readonly",
364
399
  "required",
365
400
  "clearable",
@@ -372,6 +407,14 @@ var MonoSelectCore = (superClass) => {
372
407
  const v = this[key];
373
408
  if (typeof v !== "boolean") this[key] = this._toBoolean(v);
374
409
  }
410
+ if (changed.has("loadingError")) {
411
+ const v = this.loadingError;
412
+ this._appFailure = v == null || v === false || v === "" ? null : describeError(v === true ? void 0 : v);
413
+ }
414
+ if (this._open && this._dsInert) {
415
+ this._open = false;
416
+ this._dropQuery();
417
+ }
375
418
  if (changed.has("modelValue") && !this._isSameValue(this.value, this.modelValue)) this.value = unwrapReactive(this.modelValue);
376
419
  if (changed.has("value") && !this._isSameValue(this.modelValue, this.value)) this.modelValue = unwrapReactive(this.value);
377
420
  if (this.group && (changed.has("dataSource") || changed.has("displayGroup") || changed.has("group"))) {
@@ -889,7 +932,7 @@ var MonoSelectCore = (superClass) => {
889
932
  return display.includes(q) || valStr.includes(q) || (pred ? pred(item) : false);
890
933
  }
891
934
  _onSearchInput(event) {
892
- if (this.disabled || this.readonly) return;
935
+ if (this._inert) return;
893
936
  this._query = event.target.value;
894
937
  this._searchActive = true;
895
938
  this._open = true;
@@ -906,7 +949,14 @@ var MonoSelectCore = (superClass) => {
906
949
  this.requestUpdate();
907
950
  return;
908
951
  }
909
- await this._sourceSearch.apply(this.dataSource, {
952
+ await this._pushSearch(query).catch((err) => {
953
+ this._ds.setError(err);
954
+ });
955
+ }
956
+ /** Push `query` onto the source and reload it; rejects when the load fails. */
957
+ _pushSearch(query) {
958
+ this._appliedQuery = query;
959
+ return this._sourceSearch.apply(this.dataSource, {
910
960
  query,
911
961
  searchValue: this.searchValue,
912
962
  fallbackFields: this._fallbackSearchFields(),
@@ -916,6 +966,40 @@ var MonoSelectCore = (superClass) => {
916
966
  operation: this.searchOperation || "contains"
917
967
  });
918
968
  }
969
+ /** Forget the typed query without touching the source. */
970
+ _dropQuery() {
971
+ if (this._searchTimer) {
972
+ clearTimeout(this._searchTimer);
973
+ this._searchTimer = void 0;
974
+ }
975
+ this._query = "";
976
+ this._searchActive = false;
977
+ this._activeIndex = -1;
978
+ }
979
+ /** Loading: the app says so (`loading`), or the bound source's first load / retry. */
980
+ get _busy() {
981
+ return this.loading || !!this.dataSource && this._ds.busy;
982
+ }
983
+ /** The failure to paint: the app's `loading-error`, else the source's own; none while busy. */
984
+ get _failure() {
985
+ if (this._busy) return null;
986
+ return this._appFailure ?? (this.dataSource ? this._ds.error : null);
987
+ }
988
+ /** Enter / Space on the focused field retries a failure. */
989
+ _retryKey(event) {
990
+ if (event.key !== "Enter" && event.key !== " ") return false;
991
+ if (!this._failure || this.disabled) return false;
992
+ this._retry(event);
993
+ return true;
994
+ }
995
+ /** Loading, or failed: the field refuses every gesture but ↻. */
996
+ get _dsInert() {
997
+ return this._busy || !!this._failure;
998
+ }
999
+ /** Every interaction is off: disabled, read-only, or the source isn't usable. */
1000
+ get _inert() {
1001
+ return this.disabled || this.readonly || this._dsInert;
1002
+ }
919
1003
  /** Clear the typed query (and the source query, on close / select). */
920
1004
  _resetSearch() {
921
1005
  if (this._searchTimer) {
@@ -935,6 +1019,8 @@ var MonoSelectCore = (superClass) => {
935
1019
  }
936
1020
  /** Placeholder for the search field — a search hint while open, else the prompt. */
937
1021
  get _fieldPlaceholder() {
1022
+ if (this._busy) return this.loadingText;
1023
+ if (this._failure) return errorText(this._failure);
938
1024
  if ((this._open || this._searchActive) && this.searchPlaceholder) return this.searchPlaceholder;
939
1025
  return this.placeholder;
940
1026
  }
@@ -1035,7 +1121,7 @@ var MonoSelectCore = (superClass) => {
1035
1121
  }
1036
1122
  _toggleOpen(event) {
1037
1123
  event?.stopPropagation();
1038
- if (this.disabled || this.readonly) return;
1124
+ if (this._inert) return;
1039
1125
  if (this._open) this._close();
1040
1126
  else this._open = true;
1041
1127
  }
@@ -1044,7 +1130,8 @@ var MonoSelectCore = (superClass) => {
1044
1130
  this._resetSearch();
1045
1131
  }
1046
1132
  _handleTriggerKeydown(event) {
1047
- if (this.disabled || this.readonly) return;
1133
+ if (this._retryKey(event)) return;
1134
+ if (this._inert) return;
1048
1135
  if (!this._open) {
1049
1136
  if (event.key === "Enter" || event.key === " " || event.key === "ArrowDown") {
1050
1137
  event.preventDefault();
@@ -1097,7 +1184,7 @@ var MonoSelectCore = (superClass) => {
1097
1184
  * chevron are.
1098
1185
  */
1099
1186
  _handleSearchFocus(event) {
1100
- if (this.disabled || this.readonly) return;
1187
+ if (this._inert) return;
1101
1188
  event.target.select();
1102
1189
  }
1103
1190
  /**
@@ -1109,19 +1196,20 @@ var MonoSelectCore = (superClass) => {
1109
1196
  */
1110
1197
  _handleFieldClick(event) {
1111
1198
  event.stopPropagation();
1112
- if (this.disabled || this.readonly) return;
1199
+ if (this._inert) return;
1113
1200
  this._open = true;
1114
1201
  this._searchFieldEl?.focus();
1115
1202
  }
1116
1203
  /** Keyboard nav for the search field: arrows move, Enter selects, Esc closes. */
1117
1204
  _handleSearchKeydown(event) {
1118
- if (this.disabled || this.readonly) return;
1205
+ if (this._retryKey(event)) return;
1206
+ if (this._inert) return;
1119
1207
  this._handleListKeydown(event);
1120
1208
  }
1121
1209
  _selectItem(item, event) {
1122
1210
  event?.preventDefault();
1123
1211
  event?.stopPropagation();
1124
- if (this.disabled || this.readonly || item.disabled) return;
1212
+ if (this._inert || item.disabled) return;
1125
1213
  const oldValue = this.modelValue;
1126
1214
  const nextValue = this._resolveItemValue(item);
1127
1215
  this.value = nextValue;
@@ -1140,7 +1228,7 @@ var MonoSelectCore = (superClass) => {
1140
1228
  _clear(event) {
1141
1229
  event.preventDefault();
1142
1230
  event.stopPropagation();
1143
- if (this.disabled || this.readonly) return;
1231
+ if (this._inert) return;
1144
1232
  const oldValue = this.modelValue;
1145
1233
  const nextValue = null;
1146
1234
  this.value = nextValue;
@@ -1177,6 +1265,20 @@ var MonoSelectCore = (superClass) => {
1177
1265
  `;
1178
1266
  }
1179
1267
  _renderValue() {
1268
+ if (this._dsInert) {
1269
+ const err = this._failure;
1270
+ return html`
1271
+ <span
1272
+ class=${`${this._cls("mono-select-value", "value")} ${this._cls("mono-select-placeholder", "placeholder")}`}
1273
+ mono-value
1274
+ mono-placeholder
1275
+ ?mono-ds-error-text=${!!err}
1276
+ title=${ifDefined(err ? errorTitle(err) : void 0)}
1277
+ >
1278
+ ${err ? errorText(err) : this.loadingText}
1279
+ </span>
1280
+ `;
1281
+ }
1180
1282
  if (this._hasValue && this._selectedItem) return html`
1181
1283
  <span class=${this._cls("mono-select-value", "value")} mono-value>
1182
1284
  ${this._hasPrefixSlot || this._slotsAlwaysRender ? this._slotOutlet("prefix") : nothing}
@@ -1200,16 +1302,17 @@ var MonoSelectCore = (superClass) => {
1200
1302
  _renderOption(item, index = -1) {
1201
1303
  const selected = this._isSameValue(this._resolveItemValue(item), this.value);
1202
1304
  const active = index >= 0 && index === this._activeIndex;
1203
- return html`
1204
- <button
1205
- type="button"
1206
- role="option"
1207
- class=${[
1305
+ const itemClass = [
1208
1306
  this._cls("mono-select-item", "item"),
1209
1307
  active ? `active ${this.cssClass?.itemActive ?? ""}` : "",
1210
1308
  selected ? `selected ${this.cssClass?.itemSelected ?? ""}` : "",
1211
1309
  item.disabled ? `disabled ${this.cssClass?.itemDisabled ?? ""}` : ""
1212
- ].filter(Boolean).join(" ")}
1310
+ ].filter(Boolean).join(" ");
1311
+ return html`
1312
+ <button
1313
+ type="button"
1314
+ role="option"
1315
+ class=${itemClass}
1213
1316
  mono-item
1214
1317
  ?mono-active=${active}
1215
1318
  ?mono-selected=${selected}
@@ -1413,7 +1516,7 @@ var MonoSelectCore = (superClass) => {
1413
1516
  return entry?.type === "row" ? entry : void 0;
1414
1517
  }
1415
1518
  _emptyRow() {
1416
- const text = this.dataSource && this._ds.loading ? "Loading…" : this._query ? "No matches" : "No items";
1519
+ const text = this.dataSource && this._ds.loading ? this.loadingText : this._query ? "No matches" : "No items";
1417
1520
  return html`<div class=${this._cls("mono-select-item disabled", "itemDisabled")} mono-empty-row>${text}</div>`;
1418
1521
  }
1419
1522
  _renderItems() {
@@ -1518,7 +1621,27 @@ var MonoSelectCore = (superClass) => {
1518
1621
  * input); `_toggleOpen` stops propagation so the plain trigger does not toggle
1519
1622
  * a second time. */
1520
1623
  _renderActions() {
1521
- const inert = this.disabled || this.readonly;
1624
+ if (this._busy) return html`
1625
+ <span class=${this._cls("mono-select-actions", "actions")} mono-actions>
1626
+ <span mono-ds-spinner role="status" aria-label=${this.loadingText}>${spinnerIcon()}</span>
1627
+ </span>
1628
+ `;
1629
+ if (this._failure && !this.disabled) return html`
1630
+ <span class=${this._cls("mono-select-actions", "actions")} mono-actions>
1631
+ <span
1632
+ role="button"
1633
+ tabindex="-1"
1634
+ mono-ds-retry
1635
+ aria-label=${this.retryLabel}
1636
+ title=${this.retryLabel}
1637
+ @mousedown=${(event) => event.preventDefault()}
1638
+ @click=${this._retry}
1639
+ >
1640
+ ${refreshIcon()}
1641
+ </span>
1642
+ </span>
1643
+ `;
1644
+ const inert = this._inert;
1522
1645
  const canClear = this.clearable && this._hasValue && !inert;
1523
1646
  const showArrow = !inert && !canClear;
1524
1647
  return html`
@@ -1591,10 +1714,10 @@ var MonoSelectCore = (superClass) => {
1591
1714
  aria-controls=${this._listboxId}
1592
1715
  aria-label=${ifDefined(ariaLabel)}
1593
1716
  aria-describedby=${ifDefined(describedBy)}
1594
- .value=${this._searchActive ? this._query : this._displayText}
1717
+ .value=${this._dsInert ? "" : this._searchActive ? this._query : this._displayText}
1595
1718
  placeholder=${this._fieldPlaceholder}
1596
1719
  ?disabled=${this.disabled}
1597
- ?readonly=${this.readonly}
1720
+ ?readonly=${this.readonly || this._dsInert}
1598
1721
  @input=${this._onSearchInput}
1599
1722
  @focus=${this._handleSearchFocus}
1600
1723
  @keydown=${this._handleSearchKeydown}
@@ -1626,6 +1749,9 @@ var MonoSelectCore = (superClass) => {
1626
1749
  ?mono-required=${this.required}
1627
1750
  ?mono-clearable=${this.clearable}
1628
1751
  ?mono-searchable=${this.searchable}
1752
+ ?mono-ds-loading=${this._busy}
1753
+ ?mono-ds-error=${!!this._failure}
1754
+ aria-busy=${this._busy ? "true" : nothing}
1629
1755
  >
1630
1756
  ${this._renderLabel()}
1631
1757
 
@@ -1668,14 +1794,14 @@ var MonoSelectCore = (superClass) => {
1668
1794
  return this._open;
1669
1795
  }
1670
1796
  open() {
1671
- if (this.disabled || this.readonly) return;
1797
+ if (this._inert) return;
1672
1798
  this._open = true;
1673
1799
  }
1674
1800
  close() {
1675
1801
  this._close();
1676
1802
  }
1677
1803
  toggle() {
1678
- if (this.disabled || this.readonly) return;
1804
+ if (this._inert) return;
1679
1805
  if (this._open) this._close();
1680
1806
  else this._open = true;
1681
1807
  }
@@ -1854,6 +1980,16 @@ var MonoSelectCore = (superClass) => {
1854
1980
  type: String,
1855
1981
  attribute: "search-placeholder"
1856
1982
  })], MonoSelectCoreClass.prototype, "searchPlaceholder", void 0);
1983
+ __decorate([property({
1984
+ type: String,
1985
+ attribute: "loading-text"
1986
+ })], MonoSelectCoreClass.prototype, "loadingText", void 0);
1987
+ __decorate([property({
1988
+ type: String,
1989
+ attribute: "retry-label"
1990
+ })], MonoSelectCoreClass.prototype, "retryLabel", void 0);
1991
+ __decorate([property({ converter: booleanStringConverter })], MonoSelectCoreClass.prototype, "loading", void 0);
1992
+ __decorate([property({ attribute: "loading-error" })], MonoSelectCoreClass.prototype, "loadingError", void 0);
1857
1993
  __decorate([property({
1858
1994
  attribute: false,
1859
1995
  hasChanged: rateLimitHasChanged
@@ -1891,12 +2027,14 @@ var MonoSelectCore = (superClass) => {
1891
2027
  })], MonoSelectCoreClass.prototype, "maxHeight", void 0);
1892
2028
  return MonoSelectCoreClass;
1893
2029
  };
2030
+
1894
2031
  //#endregion
1895
- //#region src/components/select/select.css?raw
1896
- var select_default = "/* =========================================================================\r\n mono-select — a port of Basecoat's `.select` (the custom one, `.select:not(select)`)\r\n and `.combobox` (basecoat-css@1.0.2, vega style), on the `.field` / `.label`\r\n chrome mono-input already ported.\r\n\r\n Styled by ATTRIBUTE, like Basecoat (`.select > button`, `[role='option'].active`)\r\n — and the attributes mirror the element's props one for one, so hand-written\r\n markup reads like the Lit / Vue tag:\r\n\r\n <mono-select size=\"sm\" color=\"danger\" variant=\"filled\" label=\"Fruit\">\r\n <div mono-select mono-size=\"sm\" mono-color=\"danger\" mono-variant=\"filled\">\r\n <label mono-label>Fruit</label>\r\n <button mono-trigger><span mono-value mono-placeholder>Pick</span>\r\n <span mono-actions><span mono-arrow>…</span></span></button>\r\n <div mono-dropdown><div mono-dropdown-body><button mono-item>…</button></div></div>\r\n </div>\r\n\r\n An absent attribute is the prop's default (`:not([mono-size])` = md,\r\n `:not([mono-color])` = primary, `:not([mono-variant])` = outlined). The element\r\n renders these attributes on its wrapper (both builds) plus `mono-open` while\r\n the panel is open; the old classes (`.mono-select.sm.open`) are still emitted\r\n as inert hooks for consumer CSS until 2.0 but no rule here reads them.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-select] ≡ .field (gap-3, as margins — see the root rule) + .select (position: relative)\r\n [mono-select] > [mono-label] ≡ .field > label / .label\r\n [mono-select] > [mono-trigger] ≡ .select > button (h-9 rounded-md border-input ps-2.5 pe-2 text-sm shadow-xs)\r\n [mono-select][mono-searchable] > [mono-trigger] ≡ .combobox > input[role='combobox'] (same box; the input sits inside it)\r\n [mono-trigger] > [mono-value] ≡ .select > button > span (flex-1 truncate text-start)\r\n [mono-trigger] > [mono-native] ≡ EXTENSION — a plain <select> may stand in for the value + panel (appearance: none)\r\n [mono-actions] > [mono-arrow] > [mono-icon] ≡ .select > button > svg (size-4 text-muted-foreground)\r\n [mono-actions] > [mono-clear] ≡ .combobox [data-clear] (size-6, painted as .btn[data-variant='ghost'])\r\n [mono-dropdown] ≡ .select [data-popover] (bg-popover ring-1 ring-foreground/10 rounded-md shadow-md)\r\n [mono-dropdown-body] ≡ .combobox [role='listbox'] (max-h-72 overflow-y-auto p-1 scroll-py-1)\r\n [mono-item] ≡ .select [role='option'] (gap-2 rounded-sm py-1.5 ps-2 pe-8 text-sm)\r\n [mono-item][mono-active] / :hover ≡ [role='option'].active (bg-muted text-foreground)\r\n [mono-item][mono-selected] ≡ [role='option'][aria-selected='true'] (the --check-icon at the end)\r\n [mono-group] ≡ .select [role='heading'] (px-2 py-1.5 text-xs text-muted-foreground)\r\n [mono-empty-row] ≡ .select [role='listbox']::before (py-6 text-center text-sm)\r\n [mono-load-more] ≡ EXTENSION (an option-shaped ghost button)\r\n [mono-message-wrap] > [mono-message] ≡ .field > p / .field [role='alert']\r\n [mono-validation-state=\"invalid\"] ≡ .select > button[aria-invalid='true']\r\n [mono-validation-state=\"valid|warning\"] ≡ EXTENSION (the invalid pattern in --success / --warning)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION (Basecoat has only data-size=sm; the ladder is --mono-control-height-*)\r\n [mono-variant=\"filled\"] ≡ EXTENSION (luma's .select > button: border-transparent bg-input/50)\r\n [mono-variant=\"underlined\"] ≡ EXTENSION (sera's: rounded-none border-b-input px-0, no ring)\r\n\r\n Inner parts are attributes too: [mono-label] (+ [mono-required-mark]),\r\n [mono-trigger], [mono-value] (+ [mono-placeholder]), [mono-search-field],\r\n [mono-native], [mono-actions], [mono-clear], [mono-arrow], [mono-icon],\r\n [mono-dropdown], [mono-dropdown-body], [mono-item] (+ [mono-active] /\r\n [mono-selected] / [mono-disabled]), [mono-group] (+ [mono-sticky],\r\n [mono-level=\"n\"]), [mono-empty-row], [mono-load-more] (+ [mono-loading]),\r\n [mono-list-slot], [mono-message-wrap] > [mono-message=\"helper|valid|invalid|warning\"].\r\n The shadow build marks an unassigned slot wrapper [mono-empty].\r\n\r\n THE PANEL IS PORTALED. The light build moves [mono-dropdown] into a\r\n `<div data-mono-popup-portal>` under <body> while open (composables/popup-\r\n portal.ts), and the portal mirrors the wrapper's class AND its mono-*\r\n attributes — so `[mono-select] > [mono-dropdown]` keeps matching there and\r\n the `--_mono-select-*` resolvers declared on `[mono-select]` re-resolve on\r\n the portal. Nothing here may rely on the panel being inside the trigger's\r\n host, and every option rule is scoped under `[mono-select]`.\r\n\r\n Values are copied from the compiled vendor sheet (vendor/basecoat/basecoat-\r\n vega.cdn.css) through the token layer; `dark:` variants travel as\r\n `--mono-mode-*` tokens (a selector cannot cross a shadow boundary; an\r\n inherited custom property can). FLAVORS set the `--mono-select-*` knobs read\r\n below — the same set as mono-input (`--mono-select-outline-*` for the outlined\r\n variant alone) plus `--mono-select-dropdown-{radius,padding,shadow,ring}`,\r\n `--mono-select-option-{radius,padding-x,padding-y,font-size,line-height,gap,font-weight}`,\r\n `--mono-select-group-*`, `--mono-select-icon-size`. Every fallback here is vega's\r\n value (`node scripts/basecoat-styles.mjs --varying \"^(\\.select:not\\(select\\)|\\.combobox)\"`).\r\n ========================================================================= */\r\n\r\nmono-select {\r\n display: block;\r\n}\r\n\r\n[mono-select] {\r\n /* ── palette: each slot is a public knob over a Basecoat token ─────────── */\r\n --_mono-select-text: var(--mono-select-color, var(--mono-select-text, var(--foreground)));\r\n --_mono-select-placeholder: var(--mono-select-placeholder, var(--muted-foreground));\r\n --_mono-select-muted: var(--mono-select-muted, var(--muted-foreground));\r\n --_mono-select-primary: var(--mono-select-primary, var(--ring));\r\n --_mono-select-secondary: var(--mono-select-secondary, var(--muted-foreground));\r\n --_mono-select-success: var(--mono-select-success, var(--success));\r\n --_mono-select-danger: var(--mono-select-danger, var(--destructive));\r\n --_mono-select-warning: var(--mono-select-warning, var(--warning));\r\n --_mono-select-info: var(--mono-select-info, var(--info));\r\n --_mono-select-teal: var(--mono-select-teal, var(--teal));\r\n --_mono-select-purple: var(--mono-select-purple, var(--purple));\r\n --_mono-select-neutral: var(--mono-select-neutral, var(--neutral));\r\n --_mono-select-dark: var(--mono-select-dark, var(--dark));\r\n --_mono-select-valid: var(--mono-select-valid, var(--success));\r\n --_mono-select-invalid: var(--mono-select-invalid, var(--destructive));\r\n\r\n /* ── the painted result — three tiers, base = .select > button (vega) ─── */\r\n --_mono-select-ring-color: var(--mono-select-ring-color, var(--mono-select-focus-color, var(--_mono-select-ring-color-preset, var(--_mono-select-primary))));\r\n --_mono-select-ring-width: var(--mono-select-ring-width, var(--_mono-select-ring-width-preset, var(--mono-ring-width)));\r\n --_mono-select-ring-alpha: var(--mono-select-ring-alpha, var(--mono-ring-alpha));\r\n --_mono-select-border-color: var(--mono-select-rest-border, var(--mono-select-border-color, var(--mono-select-border, var(--_mono-select-border-color-preset, var(--input)))));\r\n --_mono-select-bg: var(--mono-select-bg, var(--mono-select-surface, var(--_mono-select-bg-preset, var(--mono-mode-surface))));\r\n --_mono-select-hover-bg: var(--mono-select-hover-bg, var(--_mono-select-hover-bg-preset, var(--_mono-select-bg)));\r\n --_mono-select-shadow: var(--mono-select-shadow, var(--_mono-select-shadow-preset, 0 0 #0000));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 4));\r\n\r\n /* ── md metrics live on the unqualified root ON PURPOSE: hand-written\r\n `<div mono-select>` that names no size renders exactly like size=\"md\".\r\n basecoat@1.0.2 styles/vega.css .select:not(select) > button — h-9 gap-1.5\r\n rounded-md ps-2.5 pe-2 text-sm ── */\r\n --_mono-select-height: var(--mono-select-height-md, var(--mono-control-height-md));\r\n --_mono-select-radius: var(--mono-select-radius-md, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-md, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-md, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 1.5));\r\n --_mono-select-font-size: var(--mono-select-font-md, var(--mono-text-sm));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-md, var(--mono-text-sm--lh)));\r\n --_mono-select-action: calc(var(--mono-spacing) * 6);\r\n\r\n /* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3; mono: BLOCK\r\n flow with the gap as margins, so a hand-written panel that no controller\r\n positions lands at its static position — right under the trigger, above the\r\n message — instead of a flex container's content-box top */\r\n --_mono-select-gap-y: var(--mono-select-gap, calc(var(--mono-spacing) * 3));\r\n position: relative;\r\n display: block;\r\n width: 100%;\r\n font-family: inherit;\r\n color: var(--_mono-select-text);\r\n}\r\n\r\n/* A page-level `* { box-sizing: border-box }` reset does NOT cross a shadow\r\n boundary; scoped here so both builds measure the same. */\r\n[mono-select],\r\n[mono-select] *,\r\n[mono-select] *::before,\r\n[mono-select] *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n[mono-select] :is([mono-label], [mono-message])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n/* =========================================\r\n Sizes — the trigger's painted height IS the token (tests/perf/field-heights)\r\n EXTENSION: Basecoat's select has only data-size=sm; the ladder is the shared\r\n --mono-control-height-* scale and the text follows .btn's steps.\r\n ========================================= */\r\n\r\n[mono-select][mono-size=\"xs\"] {\r\n --_mono-select-height: var(--mono-select-height-xs, var(--mono-control-height-xs));\r\n --_mono-select-radius: var(--mono-select-radius-xs, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xs, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xs, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 1.5))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, var(--mono-spacing));\r\n --_mono-select-font-size: var(--mono-select-font-xs, var(--mono-text-xs));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xs, var(--mono-text-xs--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 3.5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 4);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — data-[size=sm]:h-8 */\r\n[mono-select][mono-size=\"sm\"] {\r\n --_mono-select-height: var(--mono-select-height-sm, var(--mono-control-height-sm));\r\n --_mono-select-radius: var(--mono-select-radius-sm, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-sm, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-sm, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-font-size: var(--mono-select-font-sm, var(--mono-select-font-md, var(--mono-text-sm)));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-sm, var(--mono-text-sm--lh)));\r\n --_mono-select-action: calc(var(--mono-spacing) * 5);\r\n}\r\n\r\n[mono-select][mono-size=\"lg\"] {\r\n --_mono-select-height: var(--mono-select-height-lg, var(--mono-control-height-lg));\r\n --_mono-select-radius: var(--mono-select-radius-lg, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-lg, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-lg, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-font-size: var(--mono-select-font-lg, var(--mono-select-font-md, var(--mono-text-sm)));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-lg, var(--mono-text-sm--lh)));\r\n}\r\n\r\n[mono-select][mono-size=\"xl\"] {\r\n --_mono-select-height: var(--mono-select-height-xl, var(--mono-control-height-xl));\r\n --_mono-select-radius: var(--mono-select-radius-xl, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 3))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 2));\r\n --_mono-select-font-size: var(--mono-select-font-xl, var(--mono-text-base));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xl, var(--mono-text-base--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 7);\r\n}\r\n\r\n[mono-select][mono-size=\"xxl\"] {\r\n --_mono-select-height: var(--mono-select-height-xxl, var(--mono-control-height-xxl));\r\n --_mono-select-radius: var(--mono-select-radius-xxl, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xxl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 4))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xxl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 3))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 2));\r\n --_mono-select-font-size: var(--mono-select-font-xxl, var(--mono-text-lg));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xxl, var(--mono-text-lg--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 8);\r\n}\r\n\r\n/* =========================================\r\n Variants — each writes only `*-preset` slots\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — rounded-md border\r\n border-input bg-transparent shadow-xs (dark:bg-input/30 dark:hover:bg-input/50\r\n via the mode tokens). `--mono-select-outline-*` restyle THIS variant alone. */\r\n[mono-select]:is(:not([mono-variant]), [mono-variant=\"outlined\"]) {\r\n --_mono-select-bg-preset: var(--mono-select-outline-bg);\r\n --_mono-select-hover-bg-preset: var(--mono-select-outline-hover-bg, var(--mono-mode-field-hover-bg));\r\n --_mono-select-border-color-preset: var(--mono-select-outline-border-color);\r\n --_mono-select-side-border-color-preset: var(--mono-select-outline-side-border-color);\r\n --_mono-select-shadow-preset: var(--mono-select-outline-shadow, var(--mono-shadow-xs));\r\n --_mono-select-ring-width-preset: var(--mono-select-outline-ring-width);\r\n --_mono-select-radius-preset: var(--mono-select-outline-radius);\r\n --_mono-select-padding-x-preset: var(--mono-select-outline-padding-x);\r\n}\r\n\r\n/* EXTENSION — filled ≡ basecoat@1.0.2 styles/luma.css .select:not(select) > button:\r\n border-transparent bg-input/50, no shadow-xs, no hover */\r\n[mono-select][mono-variant=\"filled\"] {\r\n --_mono-select-bg-preset: var(--mono-select-filled-bg, color-mix(in oklab, var(--input) 50%, transparent));\r\n --_mono-select-hover-bg-preset: var(--_mono-select-bg);\r\n --_mono-select-border-color-preset: transparent;\r\n --_mono-select-shadow-preset: 0 0 #0000;\r\n}\r\n\r\n/* EXTENSION — underlined ≡ basecoat@1.0.2 styles/sera.css .select:not(select) > button:\r\n rounded-none border-transparent border-b-input bg-transparent px-0, no shadow,\r\n no ring, focus-visible:border-b-ring */\r\n[mono-select][mono-variant=\"underlined\"] {\r\n --_mono-select-bg-preset: transparent;\r\n --_mono-select-hover-bg-preset: transparent;\r\n --_mono-select-side-border-color-preset: transparent;\r\n --_mono-select-shadow-preset: 0 0 #0000;\r\n --_mono-select-ring-width-preset: 0px;\r\n --_mono-select-radius-preset: 0;\r\n --_mono-select-padding-x-preset: 0;\r\n}\r\n\r\n/* =========================================\r\n Colours — the `color` prop is the FOCUS colour (ring + focused border)\r\n ========================================= */\r\n\r\n[mono-select]:is(:not([mono-color]), [mono-color=\"primary\"]) {\r\n --_mono-select-ring-color-preset: var(--_mono-select-primary);\r\n}\r\n[mono-select][mono-color=\"secondary\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-secondary);\r\n}\r\n[mono-select][mono-color=\"success\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-success);\r\n}\r\n[mono-select][mono-color=\"danger\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-danger);\r\n}\r\n[mono-select][mono-color=\"warning\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-warning);\r\n}\r\n[mono-select][mono-color=\"info\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-info);\r\n}\r\n[mono-select][mono-color=\"teal\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-teal);\r\n}\r\n[mono-select][mono-color=\"purple\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-purple);\r\n}\r\n[mono-select][mono-color=\"neutral\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-neutral);\r\n}\r\n[mono-select][mono-color=\"dark\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-dark);\r\n}\r\n\r\n/* =========================================\r\n Label\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > label, .label — flex items-center\r\n gap-2 text-sm leading-none font-medium select-none w-fit */\r\n[mono-select] > [mono-label] {\r\n display: flex;\r\n align-items: center;\r\n width: fit-content;\r\n margin: 0 0 var(--_mono-select-gap-y);\r\n gap: var(--mono-select-label-gap, calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-select-label-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-label-line-height, 1);\r\n font-weight: var(--mono-select-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)));\r\n text-transform: var(--mono-select-label-text-transform, none);\r\n letter-spacing: var(--mono-select-label-letter-spacing, normal);\r\n color: var(--_mono-select-text);\r\n user-select: none;\r\n}\r\n\r\n[mono-select][mono-disabled] > [mono-label] {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field — data-invalid:text-destructive */\r\n[mono-select][mono-validation-state=\"invalid\"] > [mono-label] {\r\n color: var(--_mono-select-invalid);\r\n}\r\n\r\n[mono-select] [mono-required-mark] {\r\n color: var(--_mono-select-danger);\r\n}\r\n\r\n/* =========================================\r\n The trigger — the bordered box (a <button>, or a <div> holding the combobox input)\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — h-9 gap-1.5\r\n rounded-md border border-input bg-transparent py-2 ps-2.5 pe-2 text-sm shadow-xs\r\n focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\r\n aria-invalid:… dark:hover:bg-input/50; mono: `--tw-ring-*` flattened to the\r\n ring + shadow slots, the height is the control token (no block padding — the\r\n token owns the height), the side edges read their own slot */\r\n[mono-select] > [mono-trigger] {\r\n --_mono-select-bc: var(--_mono-select-border-color);\r\n --_mono-select-side-bc: var(--mono-select-side-border-color, var(--_mono-select-side-border-color-preset, var(--_mono-select-bc)));\r\n --_mono-select-ring: 0 0 #0000;\r\n\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: var(--_mono-select-gap);\r\n width: 100%;\r\n min-width: 0;\r\n min-height: var(--_mono-select-height);\r\n margin: 0;\r\n padding-block: var(--mono-select-padding-y, 0);\r\n padding-inline: var(--_mono-select-padding-start) var(--_mono-select-padding-end);\r\n outline-style: none;\r\n border: var(--mono-border-width) solid var(--_mono-select-bc);\r\n border-top-color: var(--_mono-select-side-bc);\r\n border-inline-color: var(--_mono-select-side-bc);\r\n border-radius: var(--_mono-select-radius);\r\n background: var(--_mono-select-bg);\r\n color: var(--_mono-select-text);\r\n box-shadow: var(--_mono-select-ring), var(--_mono-select-shadow);\r\n font-family: inherit;\r\n font-size: var(--_mono-select-font-size);\r\n line-height: var(--_mono-select-line-height);\r\n font-weight: var(--mono-font-weight-normal);\r\n white-space: nowrap;\r\n text-align: start;\r\n cursor: pointer;\r\n user-select: none;\r\n transition-property: color, box-shadow, border-color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n\r\n &:focus,\r\n &:focus-visible,\r\n &:focus-within {\r\n outline: none !important;\r\n }\r\n\r\n /* focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 —\r\n the combobox form is a <div> whose <input> takes focus, hence :focus-within */\r\n &:focus-visible,\r\n &:focus-within {\r\n --_mono-select-bc: var(--_mono-select-ring-color);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-ring-color) var(--_mono-select-ring-alpha), transparent);\r\n }\r\n\r\n & svg,\r\n & [mono-icon] {\r\n pointer-events: none;\r\n flex-shrink: 0;\r\n }\r\n}\r\n\r\n/* dark:hover:bg-input/50 (light: none) — carried by --mono-mode-field-hover-bg */\r\n@media (hover: hover) {\r\n [mono-select]:not([mono-disabled]):not([mono-readonly]) > [mono-trigger]:hover {\r\n background: var(--_mono-select-hover-bg);\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — aria-invalid:border-destructive\r\n aria-invalid:ring-3 aria-invalid:ring-destructive/20 (dark: /50, /40 via the mode tokens) */\r\n[mono-select][mono-validation-state=\"invalid\"] > [mono-trigger],\r\n[mono-select] > [mono-trigger][aria-invalid=\"true\"] {\r\n --_mono-select-bc: var(--mono-mode-invalid-border);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) var(--mono-mode-invalid-ring);\r\n}\r\n\r\n/* EXTENSION — valid / warning are the invalid pattern in the role's colour */\r\n[mono-select][mono-validation-state=\"valid\"] > [mono-trigger] {\r\n --_mono-select-bc: color-mix(in oklab, var(--_mono-select-valid) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-valid) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n[mono-select][mono-validation-state=\"warning\"] > [mono-trigger] {\r\n --_mono-select-bc: color-mix(in oklab, var(--_mono-select-warning) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-warning) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n\r\n/* EXTENSION — readonly: focusable, on a muted surface, no gestures */\r\n[mono-select][mono-readonly] > [mono-trigger] {\r\n background: var(--mono-select-readonly-bg, var(--muted));\r\n cursor: default;\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button — disabled:\r\n pointer-events-none cursor-not-allowed opacity-50 */\r\n[mono-select][mono-disabled] > [mono-trigger],\r\n[mono-select] > [mono-trigger]:disabled,\r\n/* a raw readonly select can only disable its native <select>; the root attribute wins */\r\n[mono-select]:not([mono-readonly]) > [mono-trigger]:has(> [mono-native]:disabled) {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n background: var(--mono-select-disabled-bg, var(--_mono-select-bg));\r\n}\r\n\r\n/* =========================================\r\n Value / search field / native <select>\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button > span —\r\n flex flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-start */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button > span — gap-1.5 */\r\n[mono-select] [mono-value] {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n display: flex;\r\n align-items: center;\r\n gap: var(--_mono-select-gap);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n text-align: start;\r\n color: var(--_mono-select-text);\r\n}\r\n\r\n[mono-select] [mono-value] > span {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n[mono-select] [mono-value][mono-placeholder] {\r\n color: var(--_mono-select-placeholder);\r\n}\r\n\r\n/* basecoat@1.0.2 components/combobox.css .combobox > input[role='combobox'] — the\r\n search input lives INSIDE our trigger box, so it is borderless like\r\n .input-group > input and the box around it carries the chrome */\r\n[mono-select] [mono-search-field],\r\n[mono-select] [mono-native] {\r\n flex: 1 1 auto;\r\n width: 100%;\r\n min-width: 0;\r\n align-self: stretch;\r\n appearance: none;\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n border-radius: 0;\r\n outline: none;\r\n background: transparent;\r\n box-shadow: none;\r\n color: var(--_mono-select-text);\r\n font: inherit;\r\n line-height: var(--_mono-select-line-height);\r\n\r\n &:focus,\r\n &:focus-visible {\r\n outline: none !important;\r\n }\r\n\r\n &::placeholder {\r\n color: var(--_mono-select-placeholder);\r\n }\r\n\r\n &:disabled {\r\n cursor: not-allowed;\r\n }\r\n}\r\n\r\n[mono-select] [mono-search-field] {\r\n cursor: text;\r\n}\r\n\r\n[mono-select] [mono-native] {\r\n cursor: inherit;\r\n}\r\n\r\n[mono-select] [mono-native] option {\r\n color: var(--_mono-select-text);\r\n background: var(--popover);\r\n}\r\n\r\n/* =========================================\r\n Actions — the chevron and the clear button\r\n ========================================= */\r\n\r\n[mono-select] [mono-actions] {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--mono-spacing);\r\n flex-shrink: 0;\r\n line-height: 1;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button > svg — size-4\r\n text-muted-foreground; mono: the glyph sits in a square action box so the\r\n chevron and the clear button occupy the same gutter */\r\n/* basecoat@1.0.2 components/combobox.css .combobox [data-clear] — size-6 border-0\r\n bg-transparent p-0 text-current */\r\n[mono-select] [mono-arrow],\r\n[mono-select] [mono-clear] {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n width: var(--_mono-select-action);\r\n height: var(--_mono-select-action);\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n border-radius: var(--mono-select-clear-radius, calc(var(--radius) - 5px));\r\n background: transparent;\r\n color: var(--_mono-select-muted);\r\n font: inherit;\r\n line-height: 1;\r\n cursor: pointer;\r\n transition-property: color, background-color, transform;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n[mono-select] :is([mono-arrow], [mono-clear]) > :is(svg, .mono-icon, [mono-icon]) {\r\n display: block;\r\n width: var(--_mono-select-icon);\r\n height: var(--_mono-select-icon);\r\n pointer-events: none;\r\n}\r\n\r\n/* EXTENSION — the chevron turns while the panel is open */\r\n[mono-select][mono-open] [mono-arrow] > :is(svg, .mono-icon, [mono-icon]) {\r\n transform: rotate(180deg);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .btn[data-variant='ghost'] — hover:bg-muted\r\n hover:text-foreground (dark:hover:bg-muted/50 via --mono-mode-ghost-hover) */\r\n@media (hover: hover) {\r\n [mono-select] :is([mono-arrow], [mono-clear]):hover {\r\n background: var(--mono-mode-ghost-hover);\r\n color: var(--_mono-select-text);\r\n }\r\n}\r\n\r\n/* =========================================\r\n The panel\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/popover.css [data-popover] — absolute z-50 min-w-full\r\n overflow-x-hidden; mono: `display: none` while closed (the contents are only\r\n rendered while open), `--mono-popup-z` from the shared popup stack and\r\n `--mono-popup-avail-h` from the portal controller cap the whole panel */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [data-popover] — bg-popover\r\n text-popover-foreground rounded-md shadow-md ring-1 ring-foreground/10; the\r\n `p-1` moves to the scrolling body (the combobox layout), so the scrollbar\r\n never paints over the padding */\r\n[mono-select] > [mono-dropdown] {\r\n position: absolute;\r\n /* `top: auto` = the static position: the panel follows the trigger in the DOM,\r\n so in block flow it lands right under it (the popup controller overrides\r\n this inline for the element; hand-written markup relies on it). */\r\n top: auto;\r\n /* the 6px offset as a transform: the controller writes `transform: none` inline\r\n with its fixed position, so only the hand-written panel is pushed down */\r\n transform: translateY(calc(var(--mono-spacing) * 1.5));\r\n /* Both edges pinned, so the panel matches the field by default. An inline\r\n `width` from `:dropdown.prop=\"{ width }\"` is then the over-constrained case,\r\n which CSS resolves by ignoring `right` — the panel keeps this left edge and\r\n takes the given width. */\r\n left: 0;\r\n right: 0;\r\n z-index: var(--mono-popup-z, 1000);\r\n display: none;\r\n /* Basecoat's `min-w-[max(100%,9rem)]` is relative to the .select box; a portaled\r\n panel is position: fixed, where 100% would be the viewport — the controller\r\n writes the anchor's width inline instead, so only the floor stays. */\r\n min-width: var(--mono-select-dropdown-min-width, 9rem);\r\n max-height: var(--mono-popup-avail-h, none);\r\n overflow: hidden;\r\n isolation: isolate;\r\n border-radius: var(--mono-select-dropdown-radius, var(--mono-radius-md));\r\n background: var(--mono-select-dropdown-bg, var(--popover));\r\n color: var(--mono-select-dropdown-color, var(--popover-foreground));\r\n box-shadow: var(--mono-select-dropdown-ring, 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent)), var(--mono-select-dropdown-shadow, var(--mono-shadow-md));\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n}\r\n\r\n[mono-select][mono-open] > [mono-dropdown] {\r\n /* A flex column (not `block`) so the body can shrink past its own height when\r\n the panel is clamped above. */\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .combobox [role='listbox'] — max-h-[min(18rem,\r\n var(--available-height,18rem))] scroll-py-1 overflow-y-auto p-1 */\r\n[mono-select] [mono-dropdown-body] {\r\n flex: 1 1 auto;\r\n min-height: 0;\r\n max-height: 18rem;\r\n padding: var(--mono-select-dropdown-padding, var(--mono-spacing));\r\n overflow: auto;\r\n overscroll-behavior: contain;\r\n scroll-padding-block: var(--mono-select-dropdown-padding, var(--mono-spacing));\r\n outline-style: none;\r\n}\r\n\r\n/* =========================================\r\n Options\r\n -----------------------------------------\r\n Each rule also lists the stamped twin of a row rendered through `slot=\"list\"`\r\n (`[data-mono-type='row']`, `[data-mono-active]`, `[data-mono-selected]`), so\r\n the two can never drift: what you render in the slot IS an option. `:where()`\r\n wraps only the CONTAINER, keeping the twin at attribute weight.\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) [role='option'] — relative\r\n flex w-full cursor-default items-center overflow-hidden text-ellipsis whitespace-\r\n nowrap outline-none select-none; disabled: pointer-events-none opacity-50 */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='option'] — gap-2\r\n rounded-sm py-1.5 ps-2 pe-8 text-sm, svg size-4 */\r\n[mono-select] [mono-item],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'] {\r\n position: relative;\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n gap: var(--mono-select-option-gap, calc(var(--mono-spacing) * 2));\r\n margin: 0;\r\n padding-block: var(--mono-select-option-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-option-padding-x, calc(var(--mono-spacing) * 2)) var(--mono-select-option-padding-end, calc(var(--mono-spacing) * 8));\r\n min-height: var(--mono-select-option-min-height, 0);\r\n border: 0;\r\n border-radius: var(--mono-select-option-radius, var(--mono-radius-sm));\r\n /* longhands, so the selected row's check (a background-image) survives the\r\n active / hover background */\r\n background-color: transparent;\r\n background-image: none;\r\n color: var(--_mono-select-text);\r\n font-family: inherit;\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n font-weight: var(--mono-select-option-font-weight, var(--mono-font-weight-normal));\r\n text-align: start;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n outline-style: none;\r\n user-select: none;\r\n cursor: default;\r\n transition-property: color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration-fast);\r\n}\r\n\r\n/* EXTENSION: a hair of air between rows. Upstream stacks its options flush, so an\r\n active row directly under the selected one read as ONE tall highlight; a 2px\r\n seam keeps the two rounded-sm washes apart. `--mono-select-option-spacing`. */\r\n[mono-select] [mono-item] + [mono-item],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'] + [data-mono-type='row'] {\r\n margin-top: var(--mono-select-option-spacing, 2px);\r\n}\r\n\r\n[mono-select] [mono-item] svg:not([class*='size-']),\r\n[mono-select] [mono-item] .mono-icon {\r\n width: var(--_mono-select-icon);\r\n height: var(--_mono-select-icon);\r\n flex-shrink: 0;\r\n pointer-events: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='option'].active, .select:not(select) [role='option']:focus-visible\r\n — bg-muted text-foreground. The keyboard cursor and the pointer share one look. */\r\n[mono-select] [mono-item][mono-active]:not([mono-disabled]):not(:disabled),\r\n[mono-select] [mono-item]:focus-visible,\r\n[mono-select] :where([mono-list-slot]) [data-mono-active] {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--mono-select-option-active-color, var(--_mono-select-text));\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select):not([data-select-initialized]) [role='option']:not([aria-disabled='true']):not(:disabled):hover, .select:not(select) [role='option'].active\r\n — the pointer highlight is NOT behind (hover: hover) upstream */\r\n[mono-select] [mono-item]:hover:not([mono-disabled]):not(:disabled),\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row']:hover {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--mono-select-option-active-color, var(--_mono-select-text));\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) [role='option'][aria-selected='true']\r\n — the --check-icon at the end (bg-size .875rem, center right .5rem) */\r\n[mono-select] [mono-item][mono-selected],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'][data-mono-selected] {\r\n background-image: var(--mono-select-check-icon, var(--check-icon));\r\n background-size: var(--mono-select-check-size, 0.875rem);\r\n background-position: center right calc(var(--mono-spacing) * 2);\r\n background-repeat: no-repeat;\r\n font-weight: var(--mono-select-option-selected-font-weight, var(--mono-select-option-font-weight, var(--mono-font-weight-normal)));\r\n}\r\n\r\n[mono-select] [mono-item][mono-selected]:dir(rtl),\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'][data-mono-selected]:dir(rtl) {\r\n background-position: center left calc(var(--mono-spacing) * 2);\r\n}\r\n\r\n[mono-select] [mono-item][mono-disabled],\r\n[mono-select] [mono-item]:disabled {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='listbox']:not(:has([data-value]:not([aria-hidden='true'])))::before\r\n — py-6 text-center text-sm (the \"No results found\" row) */\r\n[mono-select] [mono-empty-row] {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding-block: calc(var(--mono-spacing) * 6);\r\n padding-inline: calc(var(--mono-spacing) * 3);\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n color: var(--_mono-select-muted);\r\n text-align: center;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='heading'] — px-2 py-1.5\r\n text-xs text-muted-foreground; EXTENSION: one indent step per nesting level */\r\n[mono-select] [mono-group],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'] {\r\n --_ms-group-level: 0;\r\n padding-block: var(--mono-select-group-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-group-padding-x, calc(var(--mono-spacing) * 2));\r\n padding-inline-start: calc(var(--mono-select-group-padding-x, calc(var(--mono-spacing) * 2)) + var(--_ms-group-level) * calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-select-group-font-size, var(--mono-text-xs));\r\n line-height: var(--mono-select-group-line-height, var(--mono-text-xs--lh));\r\n font-weight: var(--mono-select-group-font-weight, var(--mono-font-weight-normal));\r\n text-transform: var(--mono-select-group-text-transform, none);\r\n letter-spacing: var(--mono-select-group-letter-spacing, normal);\r\n color: var(--_mono-select-muted);\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n[mono-select] [mono-group][mono-level='1'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='1'] { --_ms-group-level: 1; }\r\n[mono-select] [mono-group][mono-level='2'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='2'] { --_ms-group-level: 2; }\r\n[mono-select] [mono-group][mono-level='3'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='3'] { --_ms-group-level: 3; }\r\n\r\n/* group-sticky: pin headers while their rows scroll; nested levels stack on the\r\n panel's own surface so options scroll cleanly underneath. */\r\n[mono-select] [mono-group][mono-sticky] {\r\n position: sticky;\r\n top: calc(var(--_ms-group-level) * 1.5rem);\r\n z-index: calc(5 - var(--_ms-group-level));\r\n background: var(--mono-select-dropdown-bg, var(--popover));\r\n}\r\n\r\n/* EXTENSION — the load-more affordance: an option-shaped ghost button */\r\n[mono-select] [mono-load-more] {\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n justify-content: center;\r\n gap: var(--mono-select-option-gap, calc(var(--mono-spacing) * 2));\r\n margin: 0;\r\n padding-block: var(--mono-select-option-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-option-padding-x, calc(var(--mono-spacing) * 2));\r\n border: 0;\r\n border-radius: var(--mono-select-option-radius, var(--mono-radius-sm));\r\n background: transparent;\r\n color: var(--_mono-select-muted);\r\n font-family: inherit;\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n font-weight: var(--mono-font-weight-medium);\r\n cursor: pointer;\r\n transition-property: color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration-fast);\r\n}\r\n\r\n@media (hover: hover) {\r\n [mono-select] [mono-load-more]:hover:not([mono-loading]) {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--_mono-select-text);\r\n }\r\n}\r\n\r\n[mono-select] [mono-load-more][mono-loading] {\r\n cursor: default;\r\n opacity: 0.7;\r\n}\r\n\r\n/* Consumer-rendered option rows (slot=\"list\"). `display: contents` so mono's own\r\n placement wrapper generates no box: the rows the consumer writes lay out as if\r\n they were direct children of the panel. */\r\n[mono-select] [mono-list-slot] {\r\n display: contents;\r\n}\r\n\r\n/* =========================================\r\n Message — helper / validation text under the field\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .fieldset legend + p, .field > p, .field section > p\r\n — text-sm text-muted-foreground leading-normal font-normal */\r\n[mono-select] > [mono-message-wrap] {\r\n display: block;\r\n margin-top: var(--_mono-select-gap-y);\r\n}\r\n\r\n[mono-select] > [mono-message-wrap]:not(:has([mono-message]:not([mono-empty]))) {\r\n display: none;\r\n}\r\n\r\n[mono-select] [mono-message] {\r\n font-size: var(--mono-select-message-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-message-line-height, var(--mono-leading-normal));\r\n font-weight: var(--mono-font-weight-normal);\r\n text-align: start;\r\n color: var(--_mono-select-muted);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field [role=\"alert\"] — text-destructive text-sm */\r\n[mono-select] [mono-message=\"invalid\"] {\r\n color: var(--_mono-select-invalid);\r\n}\r\n\r\n[mono-select] [mono-message=\"valid\"] {\r\n color: var(--_mono-select-valid);\r\n}\r\n\r\n[mono-select] [mono-message=\"warning\"] {\r\n color: var(--_mono-select-warning);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n [mono-select] > [mono-trigger],\r\n [mono-select] [mono-arrow],\r\n [mono-select] [mono-clear],\r\n [mono-select] [mono-item] {\r\n transition: none;\r\n }\r\n}\r\n";
2032
+ //#region \0raw:C:\Users\VCT-DEV\Desktop\libs\packages\helper\src\components\select\select.css?raw.js
2033
+ var select_css_raw_default = "/* =========================================================================\r\n mono-select — a port of Basecoat's `.select` (the custom one, `.select:not(select)`)\r\n and `.combobox` (basecoat-css@1.0.2, vega style), on the `.field` / `.label`\r\n chrome mono-input already ported.\r\n\r\n Styled by ATTRIBUTE, like Basecoat (`.select > button`, `[role='option'].active`)\r\n — and the attributes mirror the element's props one for one, so hand-written\r\n markup reads like the Lit / Vue tag:\r\n\r\n <mono-select size=\"sm\" color=\"danger\" variant=\"filled\" label=\"Fruit\">\r\n <div mono-select mono-size=\"sm\" mono-color=\"danger\" mono-variant=\"filled\">\r\n <label mono-label>Fruit</label>\r\n <button mono-trigger><span mono-value mono-placeholder>Pick</span>\r\n <span mono-actions><span mono-arrow>…</span></span></button>\r\n <div mono-dropdown><div mono-dropdown-body><button mono-item>…</button></div></div>\r\n </div>\r\n\r\n An absent attribute is the prop's default (`:not([mono-size])` = md,\r\n `:not([mono-color])` = primary, `:not([mono-variant])` = outlined). The element\r\n renders these attributes on its wrapper (both builds) plus `mono-open` while\r\n the panel is open; the old classes (`.mono-select.sm.open`) are still emitted\r\n as inert hooks for consumer CSS until 2.0 but no rule here reads them.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-select] ≡ .field (gap-3, as margins — see the root rule) + .select (position: relative)\r\n [mono-select] > [mono-label] ≡ .field > label / .label\r\n [mono-select] > [mono-trigger] ≡ .select > button (h-9 rounded-md border-input ps-2.5 pe-2 text-sm shadow-xs)\r\n [mono-select][mono-searchable] > [mono-trigger] ≡ .combobox > input[role='combobox'] (same box; the input sits inside it)\r\n [mono-trigger] > [mono-value] ≡ .select > button > span (flex-1 truncate text-start)\r\n [mono-trigger] > [mono-native] ≡ EXTENSION — a plain <select> may stand in for the value + panel (appearance: none)\r\n [mono-actions] > [mono-arrow] > [mono-icon] ≡ .select > button > svg (size-4 text-muted-foreground)\r\n [mono-actions] > [mono-clear] ≡ .combobox [data-clear] (size-6, painted as .btn[data-variant='ghost'])\r\n [mono-dropdown] ≡ .select [data-popover] (bg-popover ring-1 ring-foreground/10 rounded-md shadow-md)\r\n [mono-dropdown-body] ≡ .combobox [role='listbox'] (max-h-72 overflow-y-auto p-1 scroll-py-1)\r\n [mono-item] ≡ .select [role='option'] (gap-2 rounded-sm py-1.5 ps-2 pe-8 text-sm)\r\n [mono-item][mono-active] / :hover ≡ [role='option'].active (bg-muted text-foreground)\r\n [mono-item][mono-selected] ≡ [role='option'][aria-selected='true'] (the --check-icon at the end)\r\n [mono-group] ≡ .select [role='heading'] (px-2 py-1.5 text-xs text-muted-foreground)\r\n [mono-empty-row] ≡ .select [role='listbox']::before (py-6 text-center text-sm)\r\n [mono-load-more] ≡ EXTENSION (an option-shaped ghost button)\r\n [mono-message-wrap] > [mono-message] ≡ .field > p / .field [role='alert']\r\n [mono-validation-state=\"invalid\"] ≡ .select > button[aria-invalid='true']\r\n [mono-validation-state=\"valid|warning\"] ≡ EXTENSION (the invalid pattern in --success / --warning)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION (Basecoat has only data-size=sm; the ladder is --mono-control-height-*)\r\n [mono-variant=\"filled\"] ≡ EXTENSION (luma's .select > button: border-transparent bg-input/50)\r\n [mono-variant=\"underlined\"] ≡ EXTENSION (sera's: rounded-none border-b-input px-0, no ring)\r\n\r\n Inner parts are attributes too: [mono-label] (+ [mono-required-mark]),\r\n [mono-trigger], [mono-value] (+ [mono-placeholder]), [mono-search-field],\r\n [mono-native], [mono-actions], [mono-clear], [mono-arrow], [mono-icon],\r\n [mono-dropdown], [mono-dropdown-body], [mono-item] (+ [mono-active] /\r\n [mono-selected] / [mono-disabled]), [mono-group] (+ [mono-sticky],\r\n [mono-level=\"n\"]), [mono-empty-row], [mono-load-more] (+ [mono-loading]),\r\n [mono-list-slot], [mono-message-wrap] > [mono-message=\"helper|valid|invalid|warning\"].\r\n The shadow build marks an unassigned slot wrapper [mono-empty].\r\n\r\n THE PANEL IS PORTALED. The light build moves [mono-dropdown] into a\r\n `<div data-mono-popup-portal>` under <body> while open (composables/popup-\r\n portal.ts), and the portal mirrors the wrapper's class AND its mono-*\r\n attributes — so `[mono-select] > [mono-dropdown]` keeps matching there and\r\n the `--_mono-select-*` resolvers declared on `[mono-select]` re-resolve on\r\n the portal. Nothing here may rely on the panel being inside the trigger's\r\n host, and every option rule is scoped under `[mono-select]`.\r\n\r\n Values are copied from the compiled vendor sheet (vendor/basecoat/basecoat-\r\n vega.cdn.css) through the token layer; `dark:` variants travel as\r\n `--mono-mode-*` tokens (a selector cannot cross a shadow boundary; an\r\n inherited custom property can). FLAVORS set the `--mono-select-*` knobs read\r\n below — the same set as mono-input (`--mono-select-outline-*` for the outlined\r\n variant alone) plus `--mono-select-dropdown-{radius,padding,shadow,ring}`,\r\n `--mono-select-option-{radius,padding-x,padding-y,font-size,line-height,gap,font-weight}`,\r\n `--mono-select-group-*`, `--mono-select-icon-size`. Every fallback here is vega's\r\n value (`node scripts/basecoat-styles.mjs --varying \"^(\\.select:not\\(select\\)|\\.combobox)\"`).\r\n ========================================================================= */\r\n\r\nmono-select {\r\n display: block;\r\n}\r\n\r\n[mono-select] {\r\n /* ── palette: each slot is a public knob over a Basecoat token ─────────── */\r\n --_mono-select-text: var(--mono-select-color, var(--mono-select-text, var(--foreground)));\r\n --_mono-select-placeholder: var(--mono-select-placeholder, var(--muted-foreground));\r\n --_mono-select-muted: var(--mono-select-muted, var(--muted-foreground));\r\n --_mono-select-primary: var(--mono-select-primary, var(--ring));\r\n --_mono-select-secondary: var(--mono-select-secondary, var(--muted-foreground));\r\n --_mono-select-success: var(--mono-select-success, var(--success));\r\n --_mono-select-danger: var(--mono-select-danger, var(--destructive));\r\n --_mono-select-warning: var(--mono-select-warning, var(--warning));\r\n --_mono-select-info: var(--mono-select-info, var(--info));\r\n --_mono-select-teal: var(--mono-select-teal, var(--teal));\r\n --_mono-select-purple: var(--mono-select-purple, var(--purple));\r\n --_mono-select-neutral: var(--mono-select-neutral, var(--neutral));\r\n --_mono-select-dark: var(--mono-select-dark, var(--dark));\r\n --_mono-select-valid: var(--mono-select-valid, var(--success));\r\n --_mono-select-invalid: var(--mono-select-invalid, var(--destructive));\r\n\r\n /* ── the painted result — three tiers, base = .select > button (vega) ─── */\r\n --_mono-select-ring-color: var(--mono-select-ring-color, var(--mono-select-focus-color, var(--_mono-select-ring-color-preset, var(--_mono-select-primary))));\r\n --_mono-select-ring-width: var(--mono-select-ring-width, var(--_mono-select-ring-width-preset, var(--mono-ring-width)));\r\n --_mono-select-ring-alpha: var(--mono-select-ring-alpha, var(--mono-ring-alpha));\r\n --_mono-select-border-color: var(--mono-select-rest-border, var(--mono-select-border-color, var(--mono-select-border, var(--_mono-select-border-color-preset, var(--input)))));\r\n --_mono-select-bg: var(--mono-select-bg, var(--mono-select-surface, var(--_mono-select-bg-preset, var(--mono-mode-surface))));\r\n --_mono-select-hover-bg: var(--mono-select-hover-bg, var(--_mono-select-hover-bg-preset, var(--_mono-select-bg)));\r\n --_mono-select-shadow: var(--mono-select-shadow, var(--_mono-select-shadow-preset, 0 0 #0000));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 4));\r\n\r\n /* ── md metrics live on the unqualified root ON PURPOSE: hand-written\r\n `<div mono-select>` that names no size renders exactly like size=\"md\".\r\n basecoat@1.0.2 styles/vega.css .select:not(select) > button — h-9 gap-1.5\r\n rounded-md ps-2.5 pe-2 text-sm ── */\r\n --_mono-select-height: var(--mono-select-height-md, var(--mono-control-height-md));\r\n --_mono-select-radius: var(--mono-select-radius-md, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-md, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-md, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 1.5));\r\n --_mono-select-font-size: var(--mono-select-font-md, var(--mono-text-sm));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-md, var(--mono-text-sm--lh)));\r\n --_mono-select-action: calc(var(--mono-spacing) * 6);\r\n\r\n /* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3; mono: BLOCK\r\n flow with the gap as margins, so a hand-written panel that no controller\r\n positions lands at its static position — right under the trigger, above the\r\n message — instead of a flex container's content-box top */\r\n --_mono-select-gap-y: var(--mono-select-gap, calc(var(--mono-spacing) * 3));\r\n position: relative;\r\n display: block;\r\n width: 100%;\r\n font-family: inherit;\r\n color: var(--_mono-select-text);\r\n}\r\n\r\n/* A page-level `* { box-sizing: border-box }` reset does NOT cross a shadow\r\n boundary; scoped here so both builds measure the same. */\r\n[mono-select],\r\n[mono-select] *,\r\n[mono-select] *::before,\r\n[mono-select] *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n[mono-select] :is([mono-label], [mono-message])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n/* =========================================\r\n Sizes — the trigger's painted height IS the token (tests/perf/field-heights)\r\n EXTENSION: Basecoat's select has only data-size=sm; the ladder is the shared\r\n --mono-control-height-* scale and the text follows .btn's steps.\r\n ========================================= */\r\n\r\n[mono-select][mono-size=\"xs\"] {\r\n --_mono-select-height: var(--mono-select-height-xs, var(--mono-control-height-xs));\r\n --_mono-select-radius: var(--mono-select-radius-xs, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xs, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xs, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 1.5))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, var(--mono-spacing));\r\n --_mono-select-font-size: var(--mono-select-font-xs, var(--mono-text-xs));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xs, var(--mono-text-xs--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 3.5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 4);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — data-[size=sm]:h-8 */\r\n[mono-select][mono-size=\"sm\"] {\r\n --_mono-select-height: var(--mono-select-height-sm, var(--mono-control-height-sm));\r\n --_mono-select-radius: var(--mono-select-radius-sm, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-sm, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-sm, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-font-size: var(--mono-select-font-sm, var(--mono-select-font-md, var(--mono-text-sm)));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-sm, var(--mono-text-sm--lh)));\r\n --_mono-select-action: calc(var(--mono-spacing) * 5);\r\n}\r\n\r\n[mono-select][mono-size=\"lg\"] {\r\n --_mono-select-height: var(--mono-select-height-lg, var(--mono-control-height-lg));\r\n --_mono-select-radius: var(--mono-select-radius-lg, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-lg, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-lg, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-font-size: var(--mono-select-font-lg, var(--mono-select-font-md, var(--mono-text-sm)));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-lg, var(--mono-text-sm--lh)));\r\n}\r\n\r\n[mono-select][mono-size=\"xl\"] {\r\n --_mono-select-height: var(--mono-select-height-xl, var(--mono-control-height-xl));\r\n --_mono-select-radius: var(--mono-select-radius-xl, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 3))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 2));\r\n --_mono-select-font-size: var(--mono-select-font-xl, var(--mono-text-base));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xl, var(--mono-text-base--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 7);\r\n}\r\n\r\n[mono-select][mono-size=\"xxl\"] {\r\n --_mono-select-height: var(--mono-select-height-xxl, var(--mono-control-height-xxl));\r\n --_mono-select-radius: var(--mono-select-radius-xxl, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xxl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 4))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xxl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 3))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 2));\r\n --_mono-select-font-size: var(--mono-select-font-xxl, var(--mono-text-lg));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xxl, var(--mono-text-lg--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 8);\r\n}\r\n\r\n/* =========================================\r\n Variants — each writes only `*-preset` slots\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — rounded-md border\r\n border-input bg-transparent shadow-xs (dark:bg-input/30 dark:hover:bg-input/50\r\n via the mode tokens). `--mono-select-outline-*` restyle THIS variant alone. */\r\n[mono-select]:is(:not([mono-variant]), [mono-variant=\"outlined\"]) {\r\n --_mono-select-bg-preset: var(--mono-select-outline-bg);\r\n --_mono-select-hover-bg-preset: var(--mono-select-outline-hover-bg, var(--mono-mode-field-hover-bg));\r\n --_mono-select-border-color-preset: var(--mono-select-outline-border-color);\r\n --_mono-select-side-border-color-preset: var(--mono-select-outline-side-border-color);\r\n --_mono-select-shadow-preset: var(--mono-select-outline-shadow, var(--mono-shadow-xs));\r\n --_mono-select-ring-width-preset: var(--mono-select-outline-ring-width);\r\n --_mono-select-radius-preset: var(--mono-select-outline-radius);\r\n --_mono-select-padding-x-preset: var(--mono-select-outline-padding-x);\r\n}\r\n\r\n/* EXTENSION — filled ≡ basecoat@1.0.2 styles/luma.css .select:not(select) > button:\r\n border-transparent bg-input/50, no shadow-xs, no hover */\r\n[mono-select][mono-variant=\"filled\"] {\r\n --_mono-select-bg-preset: var(--mono-select-filled-bg, color-mix(in oklab, var(--input) 50%, transparent));\r\n --_mono-select-hover-bg-preset: var(--_mono-select-bg);\r\n --_mono-select-border-color-preset: transparent;\r\n --_mono-select-shadow-preset: 0 0 #0000;\r\n}\r\n\r\n/* EXTENSION — underlined ≡ basecoat@1.0.2 styles/sera.css .select:not(select) > button:\r\n rounded-none border-transparent border-b-input bg-transparent px-0, no shadow,\r\n no ring, focus-visible:border-b-ring */\r\n[mono-select][mono-variant=\"underlined\"] {\r\n --_mono-select-bg-preset: transparent;\r\n --_mono-select-hover-bg-preset: transparent;\r\n --_mono-select-side-border-color-preset: transparent;\r\n --_mono-select-shadow-preset: 0 0 #0000;\r\n --_mono-select-ring-width-preset: 0px;\r\n --_mono-select-radius-preset: 0;\r\n --_mono-select-padding-x-preset: 0;\r\n}\r\n\r\n/* =========================================\r\n Colours — the `color` prop is the FOCUS colour (ring + focused border)\r\n ========================================= */\r\n\r\n[mono-select]:is(:not([mono-color]), [mono-color=\"primary\"]) {\r\n --_mono-select-ring-color-preset: var(--_mono-select-primary);\r\n}\r\n[mono-select][mono-color=\"secondary\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-secondary);\r\n}\r\n[mono-select][mono-color=\"success\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-success);\r\n}\r\n[mono-select][mono-color=\"danger\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-danger);\r\n}\r\n[mono-select][mono-color=\"warning\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-warning);\r\n}\r\n[mono-select][mono-color=\"info\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-info);\r\n}\r\n[mono-select][mono-color=\"teal\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-teal);\r\n}\r\n[mono-select][mono-color=\"purple\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-purple);\r\n}\r\n[mono-select][mono-color=\"neutral\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-neutral);\r\n}\r\n[mono-select][mono-color=\"dark\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-dark);\r\n}\r\n\r\n/* =========================================\r\n Label\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > label, .label — flex items-center\r\n gap-2 text-sm leading-none font-medium select-none w-fit */\r\n[mono-select] > [mono-label] {\r\n display: flex;\r\n align-items: center;\r\n width: fit-content;\r\n margin: 0 0 var(--_mono-select-gap-y);\r\n gap: var(--mono-select-label-gap, calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-select-label-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-label-line-height, 1);\r\n font-weight: var(--mono-select-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)));\r\n text-transform: var(--mono-select-label-text-transform, none);\r\n letter-spacing: var(--mono-select-label-letter-spacing, normal);\r\n color: var(--_mono-select-text);\r\n user-select: none;\r\n}\r\n\r\n[mono-select][mono-disabled] > [mono-label] {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field — data-invalid:text-destructive */\r\n[mono-select][mono-validation-state=\"invalid\"] > [mono-label] {\r\n color: var(--_mono-select-invalid);\r\n}\r\n\r\n[mono-select] [mono-required-mark] {\r\n color: var(--_mono-select-danger);\r\n}\r\n\r\n/* =========================================\r\n The trigger — the bordered box (a <button>, or a <div> holding the combobox input)\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — h-9 gap-1.5\r\n rounded-md border border-input bg-transparent py-2 ps-2.5 pe-2 text-sm shadow-xs\r\n focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\r\n aria-invalid:… dark:hover:bg-input/50; mono: `--tw-ring-*` flattened to the\r\n ring + shadow slots, the height is the control token (no block padding — the\r\n token owns the height), the side edges read their own slot */\r\n[mono-select] > [mono-trigger] {\r\n --_mono-select-bc: var(--_mono-select-border-color);\r\n --_mono-select-side-bc: var(--mono-select-side-border-color, var(--_mono-select-side-border-color-preset, var(--_mono-select-bc)));\r\n --_mono-select-ring: 0 0 #0000;\r\n\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: var(--_mono-select-gap);\r\n width: 100%;\r\n min-width: 0;\r\n min-height: var(--_mono-select-height);\r\n margin: 0;\r\n padding-block: var(--mono-select-padding-y, 0);\r\n padding-inline: var(--_mono-select-padding-start) var(--_mono-select-padding-end);\r\n outline-style: none;\r\n border: var(--mono-border-width) solid var(--_mono-select-bc);\r\n border-top-color: var(--_mono-select-side-bc);\r\n border-inline-color: var(--_mono-select-side-bc);\r\n border-radius: var(--_mono-select-radius);\r\n background: var(--_mono-select-bg);\r\n color: var(--_mono-select-text);\r\n box-shadow: var(--_mono-select-ring), var(--_mono-select-shadow);\r\n font-family: inherit;\r\n font-size: var(--_mono-select-font-size);\r\n line-height: var(--_mono-select-line-height);\r\n font-weight: var(--mono-font-weight-normal);\r\n white-space: nowrap;\r\n text-align: start;\r\n cursor: pointer;\r\n user-select: none;\r\n transition-property: color, box-shadow, border-color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n\r\n &:focus,\r\n &:focus-visible,\r\n &:focus-within {\r\n outline: none !important;\r\n }\r\n\r\n /* focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 —\r\n the combobox form is a <div> whose <input> takes focus, hence :focus-within */\r\n &:focus-visible,\r\n &:focus-within {\r\n --_mono-select-bc: var(--_mono-select-ring-color);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-ring-color) var(--_mono-select-ring-alpha), transparent);\r\n }\r\n\r\n & svg,\r\n & [mono-icon] {\r\n pointer-events: none;\r\n flex-shrink: 0;\r\n }\r\n}\r\n\r\n/* dark:hover:bg-input/50 (light: none) — carried by --mono-mode-field-hover-bg */\r\n@media (hover: hover) {\r\n [mono-select]:not([mono-disabled]):not([mono-readonly]):not([mono-ds-loading]) > [mono-trigger]:hover {\r\n background: var(--_mono-select-hover-bg);\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — aria-invalid:border-destructive\r\n aria-invalid:ring-3 aria-invalid:ring-destructive/20 (dark: /50, /40 via the mode tokens) */\r\n[mono-select][mono-validation-state=\"invalid\"] > [mono-trigger],\r\n[mono-select] > [mono-trigger][aria-invalid=\"true\"] {\r\n --_mono-select-bc: var(--mono-mode-invalid-border);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) var(--mono-mode-invalid-ring);\r\n}\r\n\r\n/* EXTENSION — valid / warning are the invalid pattern in the role's colour */\r\n[mono-select][mono-validation-state=\"valid\"] > [mono-trigger] {\r\n --_mono-select-bc: color-mix(in oklab, var(--_mono-select-valid) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-valid) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n[mono-select][mono-validation-state=\"warning\"] > [mono-trigger] {\r\n --_mono-select-bc: color-mix(in oklab, var(--_mono-select-warning) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-warning) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n\r\n/* EXTENSION — the bound dataSource failed: the invalid outline ONLY. Label,\r\n message and validation state stay as they are; it is not a validation error. */\r\n[mono-select][mono-ds-error] > [mono-trigger] {\r\n --_mono-select-bc: var(--mono-select-ds-error-border, var(--mono-mode-invalid-border));\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) var(--mono-select-ds-error-ring, var(--mono-mode-invalid-ring));\r\n}\r\n\r\n[mono-select] [mono-value][mono-ds-error-text] {\r\n color: var(--mono-select-ds-error-text, var(--_mono-select-invalid));\r\n}\r\n\r\n/* EXTENSION — the first load (or a retry) is in flight: read-only, no hover */\r\n[mono-select][mono-ds-loading] > [mono-trigger] {\r\n cursor: progress;\r\n}\r\n\r\n/* EXTENSION — readonly: focusable, on a muted surface, no gestures */\r\n[mono-select][mono-readonly] > [mono-trigger] {\r\n background: var(--mono-select-readonly-bg, var(--muted));\r\n cursor: default;\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button — disabled:\r\n pointer-events-none cursor-not-allowed opacity-50 */\r\n[mono-select][mono-disabled] > [mono-trigger],\r\n[mono-select] > [mono-trigger]:disabled,\r\n/* a raw readonly select can only disable its native <select>; the root attribute wins */\r\n[mono-select]:not([mono-readonly]) > [mono-trigger]:has(> [mono-native]:disabled) {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n background: var(--mono-select-disabled-bg, var(--_mono-select-bg));\r\n}\r\n\r\n/* =========================================\r\n Value / search field / native <select>\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button > span —\r\n flex flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-start */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button > span — gap-1.5 */\r\n[mono-select] [mono-value] {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n display: flex;\r\n align-items: center;\r\n gap: var(--_mono-select-gap);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n text-align: start;\r\n color: var(--_mono-select-text);\r\n}\r\n\r\n[mono-select] [mono-value] > span {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n[mono-select] [mono-value][mono-placeholder] {\r\n color: var(--_mono-select-placeholder);\r\n}\r\n\r\n/* basecoat@1.0.2 components/combobox.css .combobox > input[role='combobox'] — the\r\n search input lives INSIDE our trigger box, so it is borderless like\r\n .input-group > input and the box around it carries the chrome */\r\n[mono-select] [mono-search-field],\r\n[mono-select] [mono-native] {\r\n flex: 1 1 auto;\r\n width: 100%;\r\n min-width: 0;\r\n align-self: stretch;\r\n appearance: none;\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n border-radius: 0;\r\n outline: none;\r\n background: transparent;\r\n box-shadow: none;\r\n color: var(--_mono-select-text);\r\n font: inherit;\r\n line-height: var(--_mono-select-line-height);\r\n\r\n &:focus,\r\n &:focus-visible {\r\n outline: none !important;\r\n }\r\n\r\n &::placeholder {\r\n color: var(--_mono-select-placeholder);\r\n }\r\n\r\n &:disabled {\r\n cursor: not-allowed;\r\n }\r\n}\r\n\r\n[mono-select] [mono-search-field] {\r\n cursor: text;\r\n}\r\n\r\n[mono-select] [mono-native] {\r\n cursor: inherit;\r\n}\r\n\r\n[mono-select] [mono-native] option {\r\n color: var(--_mono-select-text);\r\n background: var(--popover);\r\n}\r\n\r\n/* =========================================\r\n Actions — the chevron and the clear button\r\n ========================================= */\r\n\r\n[mono-select] [mono-actions] {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--mono-spacing);\r\n flex-shrink: 0;\r\n line-height: 1;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button > svg — size-4\r\n text-muted-foreground; mono: the glyph sits in a square action box so the\r\n chevron and the clear button occupy the same gutter */\r\n/* basecoat@1.0.2 components/combobox.css .combobox [data-clear] — size-6 border-0\r\n bg-transparent p-0 text-current */\r\n[mono-select] [mono-arrow],\r\n[mono-select] [mono-clear],\r\n[mono-select] [mono-ds-retry],\r\n[mono-select] [mono-ds-spinner] {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n width: var(--_mono-select-action);\r\n height: var(--_mono-select-action);\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n border-radius: var(--mono-select-clear-radius, calc(var(--radius) - 5px));\r\n background: transparent;\r\n color: var(--_mono-select-muted);\r\n font: inherit;\r\n line-height: 1;\r\n cursor: pointer;\r\n transition-property: color, background-color, transform;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n[mono-select] :is([mono-arrow], [mono-clear], [mono-ds-retry], [mono-ds-spinner]) > :is(svg, .mono-icon, [mono-icon]) {\r\n display: block;\r\n width: var(--_mono-select-icon);\r\n height: var(--_mono-select-icon);\r\n pointer-events: none;\r\n}\r\n\r\n/* EXTENSION — the chevron turns while the panel is open */\r\n[mono-select][mono-open] [mono-arrow] > :is(svg, .mono-icon, [mono-icon]) {\r\n transform: rotate(180deg);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .btn[data-variant='ghost'] — hover:bg-muted\r\n hover:text-foreground (dark:hover:bg-muted/50 via --mono-mode-ghost-hover) */\r\n@media (hover: hover) {\r\n [mono-select] :is([mono-arrow], [mono-clear], [mono-ds-retry]):hover {\r\n background: var(--mono-mode-ghost-hover);\r\n color: var(--_mono-select-text);\r\n }\r\n}\r\n\r\n/* EXTENSION — dataSource state glyphs: the busy arc spins, the ↻ wears the\r\n error colour so it reads as the way out of the red field */\r\n[mono-select] [mono-ds-spinner] {\r\n cursor: progress;\r\n}\r\n\r\n[mono-select] [mono-ds-spinner] > svg {\r\n animation: mono-select-spin 0.7s linear infinite;\r\n}\r\n\r\n[mono-select] [mono-ds-retry] {\r\n color: var(--mono-select-ds-error-text, var(--_mono-select-invalid));\r\n}\r\n\r\n@keyframes mono-select-spin {\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n [mono-select] [mono-ds-spinner] > svg {\r\n animation-duration: 2.4s;\r\n }\r\n}\r\n\r\n/* =========================================\r\n The panel\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/popover.css [data-popover] — absolute z-50 min-w-full\r\n overflow-x-hidden; mono: `display: none` while closed (the contents are only\r\n rendered while open), `--mono-popup-z` from the shared popup stack and\r\n `--mono-popup-avail-h` from the portal controller cap the whole panel */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [data-popover] — bg-popover\r\n text-popover-foreground rounded-md shadow-md ring-1 ring-foreground/10; the\r\n `p-1` moves to the scrolling body (the combobox layout), so the scrollbar\r\n never paints over the padding */\r\n[mono-select] > [mono-dropdown] {\r\n position: absolute;\r\n /* `top: auto` = the static position: the panel follows the trigger in the DOM,\r\n so in block flow it lands right under it (the popup controller overrides\r\n this inline for the element; hand-written markup relies on it). */\r\n top: auto;\r\n /* the 6px offset as a transform: the controller writes `transform: none` inline\r\n with its fixed position, so only the hand-written panel is pushed down */\r\n transform: translateY(calc(var(--mono-spacing) * 1.5));\r\n /* Both edges pinned, so the panel matches the field by default. An inline\r\n `width` from `:dropdown.prop=\"{ width }\"` is then the over-constrained case,\r\n which CSS resolves by ignoring `right` — the panel keeps this left edge and\r\n takes the given width. */\r\n left: 0;\r\n right: 0;\r\n z-index: var(--mono-popup-z, 1000);\r\n display: none;\r\n /* Basecoat's `min-w-[max(100%,9rem)]` is relative to the .select box; a portaled\r\n panel is position: fixed, where 100% would be the viewport — the controller\r\n writes the anchor's width inline instead, so only the floor stays. */\r\n min-width: var(--mono-select-dropdown-min-width, 9rem);\r\n max-height: var(--mono-popup-avail-h, none);\r\n overflow: hidden;\r\n isolation: isolate;\r\n border-radius: var(--mono-select-dropdown-radius, var(--mono-radius-md));\r\n background: var(--mono-select-dropdown-bg, var(--popover));\r\n color: var(--mono-select-dropdown-color, var(--popover-foreground));\r\n box-shadow: var(--mono-select-dropdown-ring, 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent)), var(--mono-select-dropdown-shadow, var(--mono-shadow-md));\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n}\r\n\r\n[mono-select][mono-open] > [mono-dropdown] {\r\n /* A flex column (not `block`) so the body can shrink past its own height when\r\n the panel is clamped above. */\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .combobox [role='listbox'] — max-h-[min(18rem,\r\n var(--available-height,18rem))] scroll-py-1 overflow-y-auto p-1 */\r\n[mono-select] [mono-dropdown-body] {\r\n flex: 1 1 auto;\r\n min-height: 0;\r\n max-height: 18rem;\r\n padding: var(--mono-select-dropdown-padding, var(--mono-spacing));\r\n overflow: auto;\r\n overscroll-behavior: contain;\r\n scroll-padding-block: var(--mono-select-dropdown-padding, var(--mono-spacing));\r\n outline-style: none;\r\n}\r\n\r\n/* =========================================\r\n Options\r\n -----------------------------------------\r\n Each rule also lists the stamped twin of a row rendered through `slot=\"list\"`\r\n (`[data-mono-type='row']`, `[data-mono-active]`, `[data-mono-selected]`), so\r\n the two can never drift: what you render in the slot IS an option. `:where()`\r\n wraps only the CONTAINER, keeping the twin at attribute weight.\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) [role='option'] — relative\r\n flex w-full cursor-default items-center overflow-hidden text-ellipsis whitespace-\r\n nowrap outline-none select-none; disabled: pointer-events-none opacity-50 */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='option'] — gap-2\r\n rounded-sm py-1.5 ps-2 pe-8 text-sm, svg size-4 */\r\n[mono-select] [mono-item],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'] {\r\n position: relative;\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n gap: var(--mono-select-option-gap, calc(var(--mono-spacing) * 2));\r\n margin: 0;\r\n padding-block: var(--mono-select-option-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-option-padding-x, calc(var(--mono-spacing) * 2)) var(--mono-select-option-padding-end, calc(var(--mono-spacing) * 8));\r\n min-height: var(--mono-select-option-min-height, 0);\r\n border: 0;\r\n border-radius: var(--mono-select-option-radius, var(--mono-radius-sm));\r\n /* longhands, so the selected row's check (a background-image) survives the\r\n active / hover background */\r\n background-color: transparent;\r\n background-image: none;\r\n color: var(--_mono-select-text);\r\n font-family: inherit;\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n font-weight: var(--mono-select-option-font-weight, var(--mono-font-weight-normal));\r\n text-align: start;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n outline-style: none;\r\n user-select: none;\r\n cursor: default;\r\n transition-property: color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration-fast);\r\n}\r\n\r\n/* EXTENSION: a hair of air between rows. Upstream stacks its options flush, so an\r\n active row directly under the selected one read as ONE tall highlight; a 2px\r\n seam keeps the two rounded-sm washes apart. `--mono-select-option-spacing`. */\r\n[mono-select] [mono-item] + [mono-item],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'] + [data-mono-type='row'] {\r\n margin-top: var(--mono-select-option-spacing, 2px);\r\n}\r\n\r\n[mono-select] [mono-item] svg:not([class*='size-']),\r\n[mono-select] [mono-item] .mono-icon {\r\n width: var(--_mono-select-icon);\r\n height: var(--_mono-select-icon);\r\n flex-shrink: 0;\r\n pointer-events: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='option'].active, .select:not(select) [role='option']:focus-visible\r\n — bg-muted text-foreground. The keyboard cursor and the pointer share one look. */\r\n[mono-select] [mono-item][mono-active]:not([mono-disabled]):not(:disabled),\r\n[mono-select] [mono-item]:focus-visible,\r\n[mono-select] :where([mono-list-slot]) [data-mono-active] {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--mono-select-option-active-color, var(--_mono-select-text));\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select):not([data-select-initialized]) [role='option']:not([aria-disabled='true']):not(:disabled):hover, .select:not(select) [role='option'].active\r\n — the pointer highlight is NOT behind (hover: hover) upstream */\r\n[mono-select] [mono-item]:hover:not([mono-disabled]):not(:disabled),\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row']:hover {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--mono-select-option-active-color, var(--_mono-select-text));\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) [role='option'][aria-selected='true']\r\n — the --check-icon at the end (bg-size .875rem, center right .5rem) */\r\n[mono-select] [mono-item][mono-selected],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'][data-mono-selected] {\r\n background-image: var(--mono-select-check-icon, var(--check-icon));\r\n background-size: var(--mono-select-check-size, 0.875rem);\r\n background-position: center right calc(var(--mono-spacing) * 2);\r\n background-repeat: no-repeat;\r\n font-weight: var(--mono-select-option-selected-font-weight, var(--mono-select-option-font-weight, var(--mono-font-weight-normal)));\r\n}\r\n\r\n[mono-select] [mono-item][mono-selected]:dir(rtl),\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'][data-mono-selected]:dir(rtl) {\r\n background-position: center left calc(var(--mono-spacing) * 2);\r\n}\r\n\r\n[mono-select] [mono-item][mono-disabled],\r\n[mono-select] [mono-item]:disabled {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='listbox']:not(:has([data-value]:not([aria-hidden='true'])))::before\r\n — py-6 text-center text-sm (the \"No results found\" row) */\r\n[mono-select] [mono-empty-row] {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding-block: calc(var(--mono-spacing) * 6);\r\n padding-inline: calc(var(--mono-spacing) * 3);\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n color: var(--_mono-select-muted);\r\n text-align: center;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='heading'] — px-2 py-1.5\r\n text-xs text-muted-foreground; EXTENSION: one indent step per nesting level */\r\n[mono-select] [mono-group],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'] {\r\n --_ms-group-level: 0;\r\n padding-block: var(--mono-select-group-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-group-padding-x, calc(var(--mono-spacing) * 2));\r\n padding-inline-start: calc(var(--mono-select-group-padding-x, calc(var(--mono-spacing) * 2)) + var(--_ms-group-level) * calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-select-group-font-size, var(--mono-text-xs));\r\n line-height: var(--mono-select-group-line-height, var(--mono-text-xs--lh));\r\n font-weight: var(--mono-select-group-font-weight, var(--mono-font-weight-normal));\r\n text-transform: var(--mono-select-group-text-transform, none);\r\n letter-spacing: var(--mono-select-group-letter-spacing, normal);\r\n color: var(--_mono-select-muted);\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n[mono-select] [mono-group][mono-level='1'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='1'] { --_ms-group-level: 1; }\r\n[mono-select] [mono-group][mono-level='2'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='2'] { --_ms-group-level: 2; }\r\n[mono-select] [mono-group][mono-level='3'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='3'] { --_ms-group-level: 3; }\r\n\r\n/* group-sticky: pin headers while their rows scroll; nested levels stack on the\r\n panel's own surface so options scroll cleanly underneath. */\r\n[mono-select] [mono-group][mono-sticky] {\r\n position: sticky;\r\n top: calc(var(--_ms-group-level) * 1.5rem);\r\n z-index: calc(5 - var(--_ms-group-level));\r\n background: var(--mono-select-dropdown-bg, var(--popover));\r\n}\r\n\r\n/* EXTENSION — the load-more affordance: an option-shaped ghost button */\r\n[mono-select] [mono-load-more] {\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n justify-content: center;\r\n gap: var(--mono-select-option-gap, calc(var(--mono-spacing) * 2));\r\n margin: 0;\r\n padding-block: var(--mono-select-option-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-option-padding-x, calc(var(--mono-spacing) * 2));\r\n border: 0;\r\n border-radius: var(--mono-select-option-radius, var(--mono-radius-sm));\r\n background: transparent;\r\n color: var(--_mono-select-muted);\r\n font-family: inherit;\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n font-weight: var(--mono-font-weight-medium);\r\n cursor: pointer;\r\n transition-property: color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration-fast);\r\n}\r\n\r\n@media (hover: hover) {\r\n [mono-select] [mono-load-more]:hover:not([mono-loading]) {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--_mono-select-text);\r\n }\r\n}\r\n\r\n[mono-select] [mono-load-more][mono-loading] {\r\n cursor: default;\r\n opacity: 0.7;\r\n}\r\n\r\n/* Consumer-rendered option rows (slot=\"list\"). `display: contents` so mono's own\r\n placement wrapper generates no box: the rows the consumer writes lay out as if\r\n they were direct children of the panel. */\r\n[mono-select] [mono-list-slot] {\r\n display: contents;\r\n}\r\n\r\n/* =========================================\r\n Message — helper / validation text under the field\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .fieldset legend + p, .field > p, .field section > p\r\n — text-sm text-muted-foreground leading-normal font-normal */\r\n[mono-select] > [mono-message-wrap] {\r\n display: block;\r\n margin-top: var(--_mono-select-gap-y);\r\n}\r\n\r\n[mono-select] > [mono-message-wrap]:not(:has([mono-message]:not([mono-empty]))) {\r\n display: none;\r\n}\r\n\r\n[mono-select] [mono-message] {\r\n font-size: var(--mono-select-message-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-message-line-height, var(--mono-leading-normal));\r\n font-weight: var(--mono-font-weight-normal);\r\n text-align: start;\r\n color: var(--_mono-select-muted);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field [role=\"alert\"] — text-destructive text-sm */\r\n[mono-select] [mono-message=\"invalid\"] {\r\n color: var(--_mono-select-invalid);\r\n}\r\n\r\n[mono-select] [mono-message=\"valid\"] {\r\n color: var(--_mono-select-valid);\r\n}\r\n\r\n[mono-select] [mono-message=\"warning\"] {\r\n color: var(--_mono-select-warning);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n [mono-select] > [mono-trigger],\r\n [mono-select] [mono-arrow],\r\n [mono-select] [mono-clear],\r\n [mono-select] [mono-item] {\r\n transition: none;\r\n }\r\n}\r\n";
2034
+
1897
2035
  //#endregion
1898
2036
  //#region src/components/select/mono-select.ts
1899
- var MonoSelect = class MonoSelect extends MonoSelectCore(LitElement) {
2037
+ let MonoSelect = class MonoSelect extends MonoSelectCore(LitElement) {
1900
2038
  constructor(..._args) {
1901
2039
  super(..._args);
1902
2040
  this._slotsCaptured = false;
@@ -1907,7 +2045,7 @@ var MonoSelect = class MonoSelect extends MonoSelectCore(LitElement) {
1907
2045
  this._slotList = null;
1908
2046
  }
1909
2047
  static {
1910
- this.styles = [unsafeCSS(select_default)];
2048
+ this.styles = [unsafeCSS(select_css_raw_default)];
1911
2049
  }
1912
2050
  createRenderRoot() {
1913
2051
  return this;
@@ -2022,6 +2160,7 @@ var MonoSelect = class MonoSelect extends MonoSelectCore(LitElement) {
2022
2160
  }
2023
2161
  };
2024
2162
  MonoSelect = __decorate([customElement("mono-select")], MonoSelect);
2163
+
2025
2164
  //#endregion
2026
2165
  //#region src/components/select/select-utils.ts
2027
2166
  function validateSelectProps(props) {
@@ -2062,5 +2201,6 @@ function validateSelectProps(props) {
2062
2201
  if (props.validationState && !validStates.includes(props.validationState)) return false;
2063
2202
  return true;
2064
2203
  }
2204
+
2065
2205
  //#endregion
2066
- export { MonoSelect, validateSelectProps };
2206
+ export { MonoSelect, validateSelectProps };