@mono-lit/helper 0.0.3 → 0.0.5

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 (135) hide show
  1. package/dist/control-tooltip-7vegYmq3.js +678 -0
  2. package/dist/{tooltip-FCMRUSLi.js → control-tooltip-C3rA_nSH.js} +12 -119
  3. package/dist/{data-source-controller-Cf_sMxEh.js → data-source-controller-C6C4ej_M.js} +1 -1
  4. package/dist/{data-source-options-Bk-UoaZV.js → data-source-options-Cz9fVLK8.js} +3 -2
  5. package/dist/{data-source-read-Cuqw3LcP.js → data-source-read-i6CYSUEl.js} +2 -1
  6. package/dist/{excel-DtRpxmxs.js → excel-BPdDt06G.js} +1 -1
  7. package/dist/{export-B91P6J1y.js → export-DgomqI_3.js} +2 -2
  8. package/dist/export.js +2 -2
  9. package/dist/{field-icons-FmyBWa0g.js → field-icons-t8rXRCKs.js} +50 -1
  10. package/dist/field-tooltip-FyMi9vNM.js +266 -0
  11. package/dist/field-tooltip.css_raw-DEctHXKm.js +270 -0
  12. package/dist/field-validation-CHHQi1zl.js +170 -0
  13. package/dist/field-validation.css_raw-B3Iu33rS.js +178 -0
  14. package/dist/index.js +4 -3
  15. package/dist/{index.node-dvrNviMx.js → index.node-DzCuvHLg.js} +1 -1
  16. package/dist/index.node.js +4 -3
  17. package/dist/input-format-GrRCJBqV.js +251 -0
  18. package/dist/input.css_raw-CQu2fAsU.js +5 -0
  19. package/dist/{mono-data-grid-BHlo1IgR.js → mono-data-grid-KDpu4d4_.js} +5 -4
  20. package/dist/{mono-form-controller-IYn0MuUQ.js → mono-form-controller-BkMR8g14.js} +18 -3
  21. package/dist/{reactive-DFCdZbH9.js → normalize-error-BmLbgANw.js} +1 -48
  22. package/dist/nuxt.js +36 -8
  23. package/dist/{popup-portal-HWhkd7oy.js → popup-portal-C8ttHDRX.js} +17 -1
  24. package/dist/{popup-stack-De05Y-mJ.js → popup-stack-C64WCuXq.js} +21 -1
  25. package/dist/src/components/accordion/accordion-core.d.ts +4 -1
  26. package/dist/src/components/accordion/mono-accordion.shadow.d.ts +4 -1
  27. package/dist/src/components/date/date-core.d.ts +3 -0
  28. package/dist/src/components/date/date-types.d.ts +36 -1
  29. package/dist/src/components/drawer/drawer-core.d.ts +1 -0
  30. package/dist/src/components/dropdown-table/dropdown-table-core.d.ts +3 -0
  31. package/dist/src/components/dropdown-table/dropdown-table-types.d.ts +31 -0
  32. package/dist/src/components/form/form-types.d.ts +23 -5
  33. package/dist/src/components/input/index.d.ts +2 -2
  34. package/dist/src/components/input/index.shadow.d.ts +2 -2
  35. package/dist/src/components/input/input-core.d.ts +23 -3
  36. package/dist/src/components/input/input-types.d.ts +84 -9
  37. package/dist/src/components/input/mono-input.d.ts +3 -2
  38. package/dist/src/components/input/mono-input.shadow.d.ts +3 -2
  39. package/dist/src/components/modal/modal-core.d.ts +1 -0
  40. package/dist/src/components/otp/index.d.ts +5 -0
  41. package/dist/src/components/otp/index.shadow.d.ts +6 -0
  42. package/dist/src/components/otp/mono-otp.d.ts +32 -0
  43. package/dist/src/components/otp/mono-otp.shadow.d.ts +30 -0
  44. package/dist/src/components/otp/otp-core.d.ts +91 -0
  45. package/dist/src/components/otp/otp-types.d.ts +161 -0
  46. package/dist/src/components/otp/otp-utils.d.ts +41 -0
  47. package/dist/src/components/select/select-core.d.ts +3 -0
  48. package/dist/src/components/select/select-types.d.ts +31 -0
  49. package/dist/src/components/slider/index.d.ts +5 -0
  50. package/dist/src/components/slider/index.shadow.d.ts +6 -0
  51. package/dist/src/components/slider/mono-slider.d.ts +33 -0
  52. package/dist/src/components/slider/mono-slider.shadow.d.ts +29 -0
  53. package/dist/src/components/slider/slider-core.d.ts +77 -0
  54. package/dist/src/components/slider/slider-math.d.ts +102 -0
  55. package/dist/src/components/slider/slider-types.d.ts +188 -0
  56. package/dist/src/components/tag-input/tag-input-core.d.ts +3 -0
  57. package/dist/src/components/tag-input/tag-input-types.d.ts +31 -0
  58. package/dist/src/components/textarea/textarea-core.d.ts +3 -0
  59. package/dist/src/components/textarea/textarea-types.d.ts +31 -0
  60. package/dist/src/composables/field-bubble.d.ts +34 -0
  61. package/dist/src/composables/field-icons.d.ts +10 -0
  62. package/dist/src/composables/field-tooltip.d.ts +52 -0
  63. package/dist/src/composables/field-validation.d.ts +58 -0
  64. package/dist/src/composables/popup-portal.d.ts +12 -0
  65. package/dist/src/composables/popup-stack.d.ts +21 -0
  66. package/dist/src/entries/index.d.ts +1 -1
  67. package/dist/src/entries/index.node.d.ts +1 -1
  68. package/dist/src/nuxt/index.d.ts +2 -2
  69. package/dist/src/nuxt/ssr-lit/index.d.ts +4 -0
  70. package/dist/ssr-lit/runtime/components/LitWrapper.vue +11 -0
  71. package/dist/ssr-lit/runtime/components/LitWrapperClient.vue +11 -0
  72. package/dist/ssr-lit/runtime/components/LitWrapperServer.vue +38 -0
  73. package/dist/ssr-lit/runtime/plugins/antiFouc.server.js +25 -0
  74. package/dist/ssr-lit/runtime/plugins/hydrateSupport.client.js +4 -0
  75. package/dist/ssr-lit/runtime/plugins/polyfill.client.js +9 -0
  76. package/dist/ssr-lit/runtime/utils/customElements.js +11 -0
  77. package/dist/ssr-lit/runtime/utils/litElementRenderer.js +28 -0
  78. package/dist/{styles-D-ergrfR.js → styles-BODNpZV1.js} +1 -1
  79. package/dist/tooltip-Drekihf5.js +102 -0
  80. package/dist/tooltip-loader-3U9FTOXj.js +20 -0
  81. package/dist/tooltip-loader-Dcp9AUZn.js +23 -0
  82. package/dist/tooltip.js +3 -1
  83. package/dist/ui/accordion.js +16 -3
  84. package/dist/ui/alert.js +2 -2
  85. package/dist/ui/breadcrumb.js +1 -1
  86. package/dist/ui/button-dropdown.js +1 -1
  87. package/dist/ui/chart.js +1 -1
  88. package/dist/ui/date.js +66 -5
  89. package/dist/ui/drawer.js +11 -2
  90. package/dist/ui/dropdown-table.js +60 -5
  91. package/dist/ui/dropdown.js +3 -2
  92. package/dist/ui/file-upload.js +1 -1
  93. package/dist/ui/form.js +1 -1
  94. package/dist/ui/index.css +8857 -3974
  95. package/dist/ui/input.js +362 -260
  96. package/dist/ui/menu.js +1 -1
  97. package/dist/ui/modal.js +11 -2
  98. package/dist/ui/otp.js +835 -0
  99. package/dist/ui/select.js +67 -3
  100. package/dist/ui/shadow/accordion.js +31 -4
  101. package/dist/ui/shadow/alert.js +1 -1
  102. package/dist/ui/shadow/button-dropdown.js +1 -1
  103. package/dist/ui/shadow/chart.js +4 -4
  104. package/dist/ui/shadow/date.js +67 -6
  105. package/dist/ui/shadow/drawer.js +11 -2
  106. package/dist/ui/shadow/dropdown-table.js +62 -7
  107. package/dist/ui/shadow/dropdown.js +3 -2
  108. package/dist/ui/shadow/input.js +367 -261
  109. package/dist/ui/shadow/modal.js +11 -2
  110. package/dist/ui/shadow/otp.js +842 -0
  111. package/dist/ui/shadow/select.js +71 -6
  112. package/dist/ui/shadow/sidebar.js +2 -2
  113. package/dist/ui/shadow/slider.js +1082 -0
  114. package/dist/ui/shadow/table.js +6 -6
  115. package/dist/ui/shadow/tag-input.js +72 -7
  116. package/dist/ui/shadow/textarea.js +63 -2
  117. package/dist/ui/sidebar.js +2 -2
  118. package/dist/ui/slider.js +1079 -0
  119. package/dist/ui/table.js +2 -2
  120. package/dist/ui/tag-input.js +67 -3
  121. package/dist/ui/textarea.js +62 -1
  122. package/dist/ui/theme/luma.css +505 -466
  123. package/dist/ui/theme/lyra.css +505 -466
  124. package/dist/ui/theme/maia.css +501 -466
  125. package/dist/ui/theme/mira.css +505 -466
  126. package/dist/ui/theme/nova.css +503 -466
  127. package/dist/ui/theme/one.css +742 -699
  128. package/dist/ui/theme/rhea.css +506 -466
  129. package/dist/ui/theme/sera.css +507 -466
  130. package/dist/ui/theme/vega.css +495 -466
  131. package/dist/{vite-DcyRlTTf.js → vite-CivRCJaf.js} +2 -0
  132. package/dist/vite.js +1 -1
  133. package/dist/vue.d.ts +10 -0
  134. package/package.json +30 -15
  135. package/dist/input.css_raw-CGESifay.js +0 -5
@@ -30,6 +30,8 @@ const SHADOW_ENTRY_TO_TAGS = {
30
30
  select: ["mono-shadow-select"],
31
31
  sidebar: ["mono-shadow-sidebar"],
32
32
  switch: ["mono-shadow-switch"],
33
+ slider: ["mono-shadow-slider"],
34
+ otp: ["mono-shadow-otp"],
33
35
  "tag-input": ["mono-shadow-tag-input"],
34
36
  tabs: ["mono-shadow-tabs"],
35
37
  textarea: ["mono-shadow-textarea"],
package/dist/vite.js CHANGED
@@ -1,3 +1,3 @@
1
- import { n as monoSsrStubPlugin, r as monoClientOnlyPlugin, t as monoSsr } from "./vite-DcyRlTTf.js";
1
+ import { n as monoSsrStubPlugin, r as monoClientOnlyPlugin, t as monoSsr } from "./vite-CivRCJaf.js";
2
2
 
3
3
  export { monoClientOnlyPlugin, monoSsr, monoSsrStubPlugin };
package/dist/vue.d.ts CHANGED
@@ -27,10 +27,12 @@ import type { ModalProps } from './src/components/modal/modal-types.js'
27
27
  import type { MonoChipProps } from './src/components/chip/chip-types.js'
28
28
  import type { MonoFilterBuilderProps } from './src/components/filter/filter-types.js'
29
29
  import type { NavProps } from './src/components/nav/nav-types.js'
30
+ import type { OtpProps } from './src/components/otp/otp-types.js'
30
31
  import type { RadioProps } from './src/components/radio/radio-types.js'
31
32
  import type { RichTextEditorProps } from './src/components/rich-text-editor/rich-text-editor-types.js'
32
33
  import type { SelectProps } from './src/components/select/select-types.js'
33
34
  import type { SidebarProps } from './src/components/sidebar/sidebar-types.js'
35
+ import type { SliderProps } from './src/components/slider/slider-types.js'
34
36
  import type { SwitchProps } from './src/components/switch/switch-types.js'
35
37
  import type { TableCheckboxProps } from './src/components/table/table-types.js'
36
38
  import type { TableDetailProps } from './src/components/table/table-types.js'
@@ -65,10 +67,12 @@ import type { InputEvents } from './src/components/input/input-types.js'
65
67
  import type { MenuEvents } from './src/components/menu/menu-types.js'
66
68
  import type { ModalEvents } from './src/components/modal/modal-types.js'
67
69
  import type { NavEvents } from './src/components/nav/nav-types.js'
70
+ import type { OtpEvents } from './src/components/otp/otp-types.js'
68
71
  import type { RadioEvents } from './src/components/radio/radio-types.js'
69
72
  import type { RichTextEditorEvents } from './src/components/rich-text-editor/rich-text-editor-types.js'
70
73
  import type { SelectEvents } from './src/components/select/select-types.js'
71
74
  import type { SidebarEvents } from './src/components/sidebar/sidebar-types.js'
75
+ import type { SliderEvents } from './src/components/slider/slider-types.js'
72
76
  import type { SwitchEvents } from './src/components/switch/switch-types.js'
73
77
  import type { TableCheckboxEvents } from './src/components/table/mono-table-checkbox-core.js'
74
78
  import type { TableDetailEvents } from './src/components/table/mono-table-detail-core.js'
@@ -154,6 +158,7 @@ declare module 'vue' {
154
158
  'mono-menu-list': MonoElement<MenuListProps>
155
159
  'mono-modal': MonoElement<ModalProps, ModalEvents>
156
160
  'mono-nav': MonoElement<NavProps, NavEvents>
161
+ 'mono-otp': MonoElement<OtpProps, OtpEvents>
157
162
  'mono-radio': MonoElement<RadioProps, RadioEvents>
158
163
  'mono-rich-text-editor': MonoElement<RichTextEditorProps, RichTextEditorEvents>
159
164
  'mono-select': MonoElement<SelectProps, SelectEvents>
@@ -181,10 +186,12 @@ declare module 'vue' {
181
186
  'mono-shadow-menu': MonoElement<MenuProps, MenuEvents>
182
187
  'mono-shadow-modal': MonoElement<ModalProps, ModalEvents>
183
188
  'mono-shadow-nav': MonoElement<NavProps, NavEvents>
189
+ 'mono-shadow-otp': MonoElement<OtpProps, OtpEvents>
184
190
  'mono-shadow-radio': MonoElement<RadioProps, RadioEvents>
185
191
  'mono-shadow-rich-text-editor': MonoElement<RichTextEditorProps, RichTextEditorEvents>
186
192
  'mono-shadow-select': MonoElement<SelectProps, SelectEvents>
187
193
  'mono-shadow-sidebar': MonoElement<SidebarProps, SidebarEvents>
194
+ 'mono-shadow-slider': MonoElement<SliderProps, SliderEvents>
188
195
  'mono-shadow-switch': MonoElement<SwitchProps, SwitchEvents>
189
196
  'mono-shadow-table-checkbox': MonoElement<TableCheckboxProps, TableCheckboxEvents>
190
197
  'mono-shadow-table-detail': MonoElement<TableDetailProps, TableDetailEvents>
@@ -203,6 +210,7 @@ declare module 'vue' {
203
210
  'mono-shadow-tag-input': MonoElement<TagInputProps, TagInputEvents>
204
211
  'mono-shadow-textarea': MonoElement<TextareaProps, TextareaEvents>
205
212
  'mono-sidebar': MonoElement<SidebarProps, SidebarEvents>
213
+ 'mono-slider': MonoElement<SliderProps, SliderEvents>
206
214
  'mono-switch': MonoElement<SwitchProps, SwitchEvents>
207
215
  'mono-table-checkbox': MonoElement<TableCheckboxProps, TableCheckboxEvents>
208
216
  'mono-table-detail': MonoElement<TableDetailProps, TableDetailEvents>
@@ -255,10 +263,12 @@ declare module './src/composables/mono-ui.js' {
255
263
  'mono-menu-list': StripIndex<MenuListProps> & MonoCommonProps
256
264
  'mono-modal': StripIndex<ModalProps> & MonoCommonProps
257
265
  'mono-nav': StripIndex<NavProps> & MonoCommonProps
266
+ 'mono-otp': StripIndex<OtpProps> & MonoCommonProps
258
267
  'mono-radio': StripIndex<RadioProps> & MonoCommonProps
259
268
  'mono-rich-text-editor': StripIndex<RichTextEditorProps> & MonoCommonProps
260
269
  'mono-select': StripIndex<SelectProps> & MonoCommonProps
261
270
  'mono-sidebar': StripIndex<SidebarProps> & MonoCommonProps
271
+ 'mono-slider': StripIndex<SliderProps> & MonoCommonProps
262
272
  'mono-switch': StripIndex<SwitchProps> & MonoCommonProps
263
273
  'mono-table-checkbox': StripIndex<TableCheckboxProps> & MonoCommonProps
264
274
  'mono-table-detail': StripIndex<TableDetailProps> & MonoCommonProps
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mono-lit/helper",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "Lit web components (tables, forms, inputs, dialogs, charts) for Vue and Nuxt, with light-DOM and shadow-DOM builds.",
5
5
  "keywords": [
6
6
  "lit",
@@ -115,6 +115,14 @@
115
115
  "types": "./dist/src/components/switch/index.d.ts",
116
116
  "import": "./dist/ui/switch.js"
117
117
  },
118
+ "./ui/slider": {
119
+ "types": "./dist/src/components/slider/index.d.ts",
120
+ "import": "./dist/ui/slider.js"
121
+ },
122
+ "./ui/otp": {
123
+ "types": "./dist/src/components/otp/index.d.ts",
124
+ "import": "./dist/ui/otp.js"
125
+ },
118
126
  "./ui/checkbox": {
119
127
  "types": "./dist/src/components/checkbox/index.d.ts",
120
128
  "import": "./dist/ui/checkbox.js"
@@ -279,6 +287,14 @@
279
287
  "types": "./dist/src/components/switch/index.shadow.d.ts",
280
288
  "import": "./dist/ui/shadow/switch.js"
281
289
  },
290
+ "./ui/shadow/slider": {
291
+ "types": "./dist/src/components/slider/index.shadow.d.ts",
292
+ "import": "./dist/ui/shadow/slider.js"
293
+ },
294
+ "./ui/shadow/otp": {
295
+ "types": "./dist/src/components/otp/index.shadow.d.ts",
296
+ "import": "./dist/ui/shadow/otp.js"
297
+ },
282
298
  "./ui/shadow/tag-input": {
283
299
  "types": "./dist/src/components/tag-input/index.shadow.d.ts",
284
300
  "import": "./dist/ui/shadow/tag-input.js"
@@ -312,8 +328,7 @@
312
328
  "@floating-ui/core": "1.8.0",
313
329
  "@floating-ui/dom": "1.8.0",
314
330
  "@iconify/json": "2.2.505",
315
- "@nuxt/kit": "4.6.1",
316
- "@nuxt/schema": "4.6.1",
331
+ "@tsdown/css": "0.23.1",
317
332
  "@unocss/preset-web-fonts": "66.11.0",
318
333
  "basecoat-css": "1.0.2",
319
334
  "chart.js": "4.5.1",
@@ -323,29 +338,33 @@
323
338
  "exceljs": "4.4.0",
324
339
  "handlebars": "4.7.9",
325
340
  "postcss": "^8.5.6",
341
+ "postcss-import": "17.0.1",
326
342
  "suneditor": "3.3.3",
343
+ "tsdown": "0.23.1",
327
344
  "typescript": "6.0.3",
328
345
  "unocss": "66.11.0",
329
346
  "unocss-preset-theme": "0.14.1",
347
+ "valibot": "1.5.0",
330
348
  "vite": "8.3.4",
331
349
  "vite-plugin-html-inject": "1.1.2",
332
350
  "vue": "3.5.44",
333
- "tsdown": "0.23.1",
334
- "@tsdown/css": "0.23.1",
335
- "postcss-import": "17.0.1",
351
+ "yup": "1.7.1",
336
352
  "@mono-lit/devextreme": "0.0.2",
337
- "@mono-lit/utility": "0.0.2"
353
+ "@mono-lit/utility": "0.0.4"
338
354
  },
339
355
  "dependencies": {
340
356
  "@lit-labs/ssr": "3.2.2",
357
+ "@lit-labs/ssr-client": "^1.1.7",
358
+ "@nuxt/kit": "^4.6.2",
359
+ "@nuxt/schema": "^4.6.2",
341
360
  "@types/mdast": "^4.0.4",
342
361
  "@vue/compiler-dom": "3.5.44",
343
362
  "@vue/compiler-sfc": "3.5.44",
363
+ "@webcomponents/template-shadowroot": "^0.2.1",
344
364
  "flatpickr": "4.6.13",
345
365
  "jexl": "^2.3.0",
346
366
  "lit": "3.3.3",
347
367
  "magic-string": "^0.30.21",
348
- "nuxt-ssr-lit": "1.6.33",
349
368
  "p-debounce": "^5.1.0",
350
369
  "p-throttle": "^8.1.0",
351
370
  "remark": "^15.0.1",
@@ -353,17 +372,16 @@
353
372
  "unist-util-visit": "^5.1.0"
354
373
  },
355
374
  "peerDependencies": {
375
+ "@aejkatappaja/phantom-ui": "^1.6.0",
356
376
  "@floating-ui/core": "^1.7.0",
357
377
  "@floating-ui/dom": "^1.7.0",
358
- "@nuxt/kit": ">=3",
378
+ "@mono-lit/utility": "*",
359
379
  "chart.js": "4.5.1",
360
380
  "exceljs": ">=4",
361
381
  "handlebars": ">=4",
362
- "@mono-lit/utility": "*",
363
382
  "suneditor": "^3.3.3",
364
383
  "vite": ">=5",
365
- "vue": ">=3.3",
366
- "@aejkatappaja/phantom-ui": "^1.6.0"
384
+ "vue": ">=3.3"
367
385
  },
368
386
  "peerDependenciesMeta": {
369
387
  "vue": {
@@ -372,9 +390,6 @@
372
390
  "chart.js": {
373
391
  "optional": true
374
392
  },
375
- "@nuxt/kit": {
376
- "optional": true
377
- },
378
393
  "exceljs": {
379
394
  "optional": true
380
395
  },
@@ -1,5 +0,0 @@
1
- //#region \0raw:C:\Users\VCT-DEV\Desktop\libs\packages\helper\src\components\input\input.css?raw.js
2
- var input_css_raw_default = "/* =========================================================================\r\n mono-input — a port of Basecoat's `.field` / `.input-group` / `.label`\r\n (basecoat-css@1.0.2, vega style).\r\n\r\n Styled by ATTRIBUTE, like Basecoat (`.input-group:has([aria-invalid])`) —\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-input size=\"sm\" color=\"danger\" variant=\"filled\" label=\"Name\">\r\n <div mono-input mono-size=\"sm\" mono-color=\"danger\" mono-variant=\"filled\">\r\n <label mono-label>Name</label>\r\n <div mono-field><input mono-native></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,\r\n `:not([mono-validation-state])` = default). The element renders these\r\n attributes on its wrapper (both builds); the old classes\r\n (`.mono-input.sm.danger.filled`) are still emitted as inert hooks for\r\n consumer CSS until 2.0 but no rule here reads them.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-input] ≡ .field (flex column, gap-3)\r\n [mono-input] > [mono-label] ≡ .field > label / .label\r\n [mono-input] > [mono-field] ≡ .input-group (the bordered box: h-9 rounded-md border-input shadow-xs)\r\n [mono-field] > [mono-native] ≡ .input-group > input (borderless, px-2.5 text-sm; `.input` for the metrics)\r\n [mono-field] > [mono-prefix|mono-suffix] ≡ .input-group > span[data-align='start'|'end']\r\n [mono-field] > [mono-clear] ≡ .input-group > button[data-align='end']:has(> svg)\r\n [mono-input] > [mono-message-wrap] ≡ .field > p\r\n [mono-message=\"helper\"] ≡ .field > p (text-sm text-muted-foreground)\r\n [mono-message=\"invalid\"] ≡ .field [role='alert']\r\n [mono-validation-state=\"invalid\"] ≡ .input-group:has([aria-invalid=true]) + .field[data-invalid]\r\n [mono-validation-state=\"valid|warning\"] ≡ EXTENSION (the invalid pattern with --success / --warning)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION (Basecoat sizes only the select; the ladder is --mono-control-height-*)\r\n [mono-variant=\"filled\"] ≡ EXTENSION (luma's .input-group: border-transparent bg-input/50, ring-ring/30)\r\n [mono-variant=\"underlined\"] ≡ EXTENSION (sera's .input-group: rounded-none border-b-input px-0, no ring)\r\n [mono-disabled] / [mono-native]:disabled ≡ .input-group:has(input:disabled) — opacity-50\r\n [mono-readonly] ≡ EXTENSION (a muted surface)\r\n\r\n Specificity contract (same as the pre-port class sheet, and as checkbox.css):\r\n a part's RESTING rule is written `:where([mono-input]) [mono-part]` = exactly\r\n one attribute, (0,1,0) — so a utility class composed onto the markup (the\r\n `cssClass` prop, or a hand-written class in a css/ demo) wins by source order,\r\n while the prop and state rules ([mono-size], [mono-variant], [mono-disabled],\r\n :focus-within, [aria-invalid], …) stay heavier and still win over it.\r\n\r\n Inner parts are attributes too: [mono-label] (+ [mono-required-mark]),\r\n [mono-field], [mono-prefix] / [mono-suffix] (+ [mono-empty] in the shadow\r\n build for an unassigned slot), [mono-native], [mono-clear] > [mono-icon],\r\n [mono-message-wrap] > [mono-message=\"helper|valid|invalid|warning\"].\r\n\r\n Values are copied from the compiled vendor sheet (vendor/basecoat/basecoat-\r\n vega.cdn.css) through the token layer: `--spacing` → `--mono-spacing`,\r\n `--text-sm` → `--mono-text-sm`, `--radius-md` → `--mono-radius-md`,\r\n `--color-x` → `--x`, Tailwind's `--tw-ring-*` stack → the two-slot\r\n `box-shadow: ring, shadow` below, and every `dark:` variant → a\r\n `--mono-mode-*` token (a selector cannot cross a shadow boundary; an\r\n inherited custom property can).\r\n\r\n FLAVORS (Basecoat's other seven styles, src/data/theme/flavors/*.css) set\r\n the knobs read below — `--mono-input-radius`, `--mono-input-padding-x-<size>`,\r\n `--mono-input-font-<size>`, `--mono-input-line-height`, `--mono-input-ring-width`,\r\n `--mono-input-ring-alpha`, `--mono-input-gap`, `--mono-input-affix-*`,\r\n `--mono-input-label-*`, `--mono-input-message-*`, `--mono-input-clear-radius`,\r\n `--mono-input-disabled-bg`, and the outline-variant set `--mono-input-outline-\r\n {bg,border-color,side-border-color,shadow,ring-width,radius,padding-x,affix-padding}`.\r\n Every fallback here is vega's value\r\n (`node scripts/basecoat-styles.mjs --varying \"^\\.(field|label|input|input-group)\\b\"`).\r\n\r\n The public `--mono-input-*` knobs and the three-tier resolver\r\n (`--mono-input-x` → `--_mono-input-x-preset` → base) are unchanged: a\r\n colour / variant attribute only ever writes a `*-preset` slot, so a\r\n consumer's own `--mono-input-bg` on the host still wins.\r\n ========================================================================= */\r\n\r\nmono-input {\r\n display: block;\r\n}\r\n\r\n[mono-input] {\r\n /* ── palette: each slot is a public knob over a Basecoat token ─────────── */\r\n --_mono-input-text: var(--mono-input-color, var(--mono-input-text, var(--foreground)));\r\n --_mono-input-placeholder: var(--mono-input-placeholder, var(--muted-foreground));\r\n --_mono-input-muted: var(--mono-input-muted, var(--muted-foreground));\r\n /* the `color` prop picks the FOCUS colour; primary is Basecoat's `--ring` */\r\n --_mono-input-primary: var(--mono-input-primary, var(--ring));\r\n --_mono-input-secondary: var(--mono-input-secondary, var(--muted-foreground));\r\n --_mono-input-success: var(--mono-input-success, var(--success));\r\n --_mono-input-danger: var(--mono-input-danger, var(--destructive));\r\n --_mono-input-warning: var(--mono-input-warning, var(--warning));\r\n --_mono-input-info: var(--mono-input-info, var(--info));\r\n --_mono-input-teal: var(--mono-input-teal, var(--teal));\r\n --_mono-input-purple: var(--mono-input-purple, var(--purple));\r\n --_mono-input-neutral: var(--mono-input-neutral, var(--neutral));\r\n --_mono-input-dark: var(--mono-input-dark, var(--dark));\r\n --_mono-input-valid: var(--mono-input-valid, var(--success));\r\n --_mono-input-invalid: var(--mono-input-invalid, var(--destructive));\r\n\r\n /* ── the painted result — three tiers, base = .input-group (vega) ──────── */\r\n --_mono-input-ring-color: var(--mono-input-ring-color, var(--mono-input-focus-color, var(--_mono-input-ring-color-preset, var(--_mono-input-primary))));\r\n --_mono-input-ring-width: var(--mono-input-ring-width, var(--_mono-input-ring-width-preset, var(--mono-ring-width)));\r\n --_mono-input-ring-alpha: var(--mono-input-ring-alpha, var(--mono-ring-alpha));\r\n --_mono-input-border-color: var(--mono-input-rest-border, var(--mono-input-border-color, var(--_mono-input-border-color-preset, var(--input))));\r\n --_mono-input-bg: var(--mono-input-bg, var(--mono-input-surface, var(--_mono-input-bg-preset, var(--mono-mode-surface))));\r\n --_mono-input-shadow: var(--mono-input-shadow, var(--_mono-input-shadow-preset, 0 0 #0000));\r\n --_mono-input-affix-padding: var(--mono-input-affix-padding, var(--_mono-input-affix-padding-preset, calc(var(--mono-spacing) * 2)));\r\n --_mono-input-affix-icon: var(--mono-input-affix-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-input>` that names no size renders exactly like size=\"md\".\r\n basecoat@1.0.2 styles/vega.css .input-group — h-9 rounded-md; > input px-2.5 text-sm ── */\r\n --_mono-input-height: var(--mono-input-height-md, var(--mono-control-height-md));\r\n --_mono-input-radius: var(--mono-input-radius-md, var(--_mono-input-radius-preset, var(--mono-input-radius, var(--mono-radius-md))));\r\n --_mono-input-padding-x: var(--mono-input-padding-x-md, var(--_mono-input-padding-x-preset, calc(var(--mono-spacing) * 2.5)));\r\n --_mono-input-font-size: var(--mono-input-font-md, var(--mono-text-sm));\r\n --_mono-input-line-height: var(--mono-input-line-height, var(--mono-input-line-height-md, var(--mono-text-sm--lh)));\r\n --_mono-input-clear: calc(var(--mono-spacing) * 6);\r\n --_mono-input-clear-glyph: calc(var(--mono-spacing) * 3.5);\r\n\r\n /* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3 */\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--mono-input-gap, calc(var(--mono-spacing) * 3));\r\n width: 100%;\r\n font-family: inherit;\r\n color: var(--_mono-input-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-input],\r\n:where([mono-input]) *,\r\n:where([mono-input]) *::before,\r\n:where([mono-input]) *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n/* The shadow build renders every slot wrapper and marks an unassigned one\r\n `mono-empty`; the light build simply omits it. Inert in the light build. */\r\n:where([mono-input]) :is([mono-label], [mono-prefix], [mono-suffix], [mono-message])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n/* =========================================\r\n Sizes — the field's painted height IS the token (tests/perf/field-heights).\r\n EXTENSION: Basecoat sizes only its select (data-size=sm); the ladder is the\r\n shared --mono-control-height-* scale and the text follows .btn's steps.\r\n ========================================= */\r\n\r\n/* `.input` is text-base under 48rem (no iOS zoom) and md:text-sm above it —\r\n vendor behaviour, kept for the default size only. */\r\n@media (width < 48rem) {\r\n [mono-input]:is(:not([mono-size]), [mono-size=\"md\"]) {\r\n --_mono-input-font-size: var(--mono-input-font-md, var(--mono-text-base));\r\n --_mono-input-line-height: var(--mono-input-line-height, var(--mono-input-line-height-md, var(--mono-text-base--lh)));\r\n }\r\n}\r\n\r\n[mono-input][mono-size=\"xs\"] {\r\n --_mono-input-height: var(--mono-input-height-xs, var(--mono-control-height-xs));\r\n --_mono-input-radius: var(--mono-input-radius-xs, var(--_mono-input-radius-preset, var(--mono-input-radius, var(--mono-radius-md))));\r\n --_mono-input-padding-x: var(--mono-input-padding-x-xs, var(--_mono-input-padding-x-preset, calc(var(--mono-spacing) * 2)));\r\n --_mono-input-font-size: var(--mono-input-font-xs, var(--mono-text-xs));\r\n --_mono-input-line-height: var(--mono-input-line-height, var(--mono-input-line-height-xs, var(--mono-text-xs--lh)));\r\n --_mono-input-affix-icon: var(--mono-input-affix-icon-size, calc(var(--mono-spacing) * 3.5));\r\n --_mono-input-clear: calc(var(--mono-spacing) * 4);\r\n --_mono-input-clear-glyph: calc(var(--mono-spacing) * 3);\r\n}\r\n\r\n[mono-input][mono-size=\"sm\"] {\r\n --_mono-input-height: var(--mono-input-height-sm, var(--mono-control-height-sm));\r\n --_mono-input-radius: var(--mono-input-radius-sm, var(--_mono-input-radius-preset, var(--mono-input-radius, var(--mono-radius-md))));\r\n --_mono-input-padding-x: var(--mono-input-padding-x-sm, var(--_mono-input-padding-x-preset, calc(var(--mono-spacing) * 2.5)));\r\n --_mono-input-font-size: var(--mono-input-font-sm, var(--mono-input-font-md, var(--mono-text-sm)));\r\n --_mono-input-line-height: var(--mono-input-line-height, var(--mono-input-line-height-sm, var(--mono-text-sm--lh)));\r\n --_mono-input-clear: calc(var(--mono-spacing) * 5);\r\n --_mono-input-clear-glyph: calc(var(--mono-spacing) * 3.5);\r\n}\r\n\r\n[mono-input][mono-size=\"lg\"] {\r\n --_mono-input-height: var(--mono-input-height-lg, var(--mono-control-height-lg));\r\n --_mono-input-radius: var(--mono-input-radius-lg, var(--_mono-input-radius-preset, var(--mono-input-radius, var(--mono-radius-md))));\r\n --_mono-input-padding-x: var(--mono-input-padding-x-lg, var(--_mono-input-padding-x-preset, calc(var(--mono-spacing) * 2.5)));\r\n --_mono-input-font-size: var(--mono-input-font-lg, var(--mono-input-font-md, var(--mono-text-sm)));\r\n --_mono-input-line-height: var(--mono-input-line-height, var(--mono-input-line-height-lg, var(--mono-text-sm--lh)));\r\n}\r\n\r\n[mono-input][mono-size=\"xl\"] {\r\n --_mono-input-height: var(--mono-input-height-xl, var(--mono-control-height-xl));\r\n --_mono-input-radius: var(--mono-input-radius-xl, var(--_mono-input-radius-preset, var(--mono-input-radius, var(--mono-radius-md))));\r\n --_mono-input-padding-x: var(--mono-input-padding-x-xl, var(--_mono-input-padding-x-preset, calc(var(--mono-spacing) * 3)));\r\n --_mono-input-font-size: var(--mono-input-font-xl, var(--mono-text-base));\r\n --_mono-input-line-height: var(--mono-input-line-height, var(--mono-input-line-height-xl, var(--mono-text-base--lh)));\r\n --_mono-input-affix-icon: var(--mono-input-affix-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-input-clear: calc(var(--mono-spacing) * 7);\r\n --_mono-input-clear-glyph: calc(var(--mono-spacing) * 4);\r\n}\r\n\r\n[mono-input][mono-size=\"xxl\"] {\r\n --_mono-input-height: var(--mono-input-height-xxl, var(--mono-control-height-xxl));\r\n --_mono-input-radius: var(--mono-input-radius-xxl, var(--_mono-input-radius-preset, var(--mono-input-radius, var(--mono-radius-md))));\r\n --_mono-input-padding-x: var(--mono-input-padding-x-xxl, var(--_mono-input-padding-x-preset, calc(var(--mono-spacing) * 4)));\r\n --_mono-input-font-size: var(--mono-input-font-xxl, var(--mono-text-lg));\r\n --_mono-input-line-height: var(--mono-input-line-height, var(--mono-input-line-height-xxl, var(--mono-text-lg--lh)));\r\n --_mono-input-affix-icon: var(--mono-input-affix-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-input-clear: calc(var(--mono-spacing) * 8);\r\n --_mono-input-clear-glyph: calc(var(--mono-spacing) * 4);\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 .input-group — rounded-md border border-input\r\n shadow-xs, bg-transparent (dark:bg-input/30 via --mono-mode-surface). The\r\n `--mono-input-outline-*` knobs are how a flavor restyles THIS variant alone\r\n (maia bg-input/30, luma / rhea border-transparent bg-input/50, sera the\r\n underline) without touching filled / underlined. */\r\n[mono-input]:is(:not([mono-variant]), [mono-variant=\"outlined\"]) {\r\n --_mono-input-bg-preset: var(--mono-input-outline-bg);\r\n --_mono-input-border-color-preset: var(--mono-input-outline-border-color);\r\n --_mono-input-side-border-color-preset: var(--mono-input-outline-side-border-color);\r\n --_mono-input-shadow-preset: var(--mono-input-outline-shadow, var(--mono-shadow-xs));\r\n --_mono-input-ring-width-preset: var(--mono-input-outline-ring-width);\r\n --_mono-input-radius-preset: var(--mono-input-outline-radius);\r\n --_mono-input-padding-x-preset: var(--mono-input-outline-padding-x);\r\n --_mono-input-affix-padding-preset: var(--mono-input-outline-affix-padding);\r\n}\r\n\r\n/* EXTENSION — filled ≡ basecoat@1.0.2 styles/luma.css .input-group:\r\n border-transparent bg-input/50, no shadow-xs (the ring stays) */\r\n[mono-input][mono-variant=\"filled\"] {\r\n --_mono-input-bg-preset: var(--mono-input-filled-bg, color-mix(in oklab, var(--input) 50%, transparent));\r\n --_mono-input-border-color-preset: transparent;\r\n --_mono-input-shadow-preset: 0 0 #0000;\r\n}\r\n\r\n/* EXTENSION — underlined ≡ basecoat@1.0.2 styles/sera.css .input-group:\r\n rounded-none border-transparent border-b-input bg-transparent px-0, no\r\n shadow, no ring, focus-within:border-b-ring, has-[aria-invalid]:border-b-destructive.\r\n Only the bottom edge paints; the sides are transparent in every state. */\r\n[mono-input][mono-variant=\"underlined\"] {\r\n --_mono-input-bg-preset: transparent;\r\n --_mono-input-side-border-color-preset: transparent;\r\n --_mono-input-shadow-preset: 0 0 #0000;\r\n --_mono-input-ring-width-preset: 0px;\r\n --_mono-input-radius-preset: 0;\r\n --_mono-input-padding-x-preset: 0;\r\n --_mono-input-affix-padding-preset: 0;\r\n}\r\n\r\n/* =========================================\r\n Colours — the `color` prop is the FOCUS colour (ring + focused border).\r\n No resting tint: Basecoat fields rest on --input whatever their role.\r\n ========================================= */\r\n\r\n[mono-input]:is(:not([mono-color]), [mono-color=\"primary\"]) {\r\n --_mono-input-ring-color-preset: var(--_mono-input-primary);\r\n}\r\n[mono-input][mono-color=\"secondary\"] {\r\n --_mono-input-ring-color-preset: var(--_mono-input-secondary);\r\n}\r\n[mono-input][mono-color=\"success\"] {\r\n --_mono-input-ring-color-preset: var(--_mono-input-success);\r\n}\r\n[mono-input][mono-color=\"danger\"] {\r\n --_mono-input-ring-color-preset: var(--_mono-input-danger);\r\n}\r\n[mono-input][mono-color=\"warning\"] {\r\n --_mono-input-ring-color-preset: var(--_mono-input-warning);\r\n}\r\n[mono-input][mono-color=\"info\"] {\r\n --_mono-input-ring-color-preset: var(--_mono-input-info);\r\n}\r\n[mono-input][mono-color=\"teal\"] {\r\n --_mono-input-ring-color-preset: var(--_mono-input-teal);\r\n}\r\n[mono-input][mono-color=\"purple\"] {\r\n --_mono-input-ring-color-preset: var(--_mono-input-purple);\r\n}\r\n[mono-input][mono-color=\"neutral\"] {\r\n --_mono-input-ring-color-preset: var(--_mono-input-neutral);\r\n}\r\n[mono-input][mono-color=\"dark\"] {\r\n --_mono-input-ring-color-preset: var(--_mono-input-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:where([mono-input]) > [mono-label] {\r\n display: flex;\r\n align-items: center;\r\n width: fit-content;\r\n gap: var(--mono-input-label-gap, calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-input-label-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-input-label-line-height, 1);\r\n font-weight: var(--mono-input-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)));\r\n text-transform: var(--mono-input-label-text-transform, none);\r\n letter-spacing: var(--mono-input-label-letter-spacing, normal);\r\n color: var(--_mono-input-text);\r\n user-select: none;\r\n}\r\n\r\n/* in-data-[disabled=true]:opacity-50 / peer-disabled:opacity-50 */\r\n[mono-input][mono-disabled] > [mono-label],\r\n[mono-input]:has(> [mono-field] > [mono-native]: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-input][mono-validation-state=\"invalid\"] > [mono-label],\r\n[mono-input]:has(> [mono-field] > [mono-native][aria-invalid=\"true\"]) > [mono-label] {\r\n color: var(--_mono-input-invalid);\r\n}\r\n\r\n/* EXTENSION — the required asterisk */\r\n:where([mono-input]) [mono-required-mark] {\r\n color: var(--_mono-input-danger);\r\n}\r\n\r\n/* =========================================\r\n The field — the bordered box\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/input-group.css .input-group */\r\n/* basecoat@1.0.2 styles/vega.css .input-group — h-9 rounded-md border\r\n border-input shadow-xs transition-[color,box-shadow] focus-within:border-ring\r\n focus-within:ring-3 focus-within:ring-ring/50; mono: `--tw-ring-*` flattened to\r\n the ring + shadow slots, the height is the control token, and the side\r\n edges read their own slot so a flavor can keep only the bottom one */\r\n:where([mono-input]) > [mono-field] {\r\n --_mono-input-bc: var(--_mono-input-border-color);\r\n --_mono-input-side-bc: var(--mono-input-side-border-color, var(--_mono-input-side-border-color-preset, var(--_mono-input-bc)));\r\n /* The focus / state ring slot — `0 0 #0000` until a state sets it. Kept as a\r\n slot so a variant can neutralise the resting shadow without ever writing\r\n `box-shadow: none` (which would out-specify the ring). */\r\n --_mono-input-ring: 0 0 #0000;\r\n\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n min-width: 0;\r\n min-height: var(--_mono-input-height);\r\n outline-style: none;\r\n border: var(--mono-border-width) solid var(--_mono-input-bc);\r\n border-top-color: var(--_mono-input-side-bc);\r\n border-inline-color: var(--_mono-input-side-bc);\r\n border-radius: var(--_mono-input-radius);\r\n background: var(--_mono-input-bg);\r\n color: var(--_mono-input-text);\r\n box-shadow: var(--_mono-input-ring), var(--_mono-input-shadow);\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-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 */\r\n &:focus-within {\r\n --_mono-input-bc: var(--_mono-input-ring-color);\r\n --_mono-input-ring: 0 0 0 var(--_mono-input-ring-width) color-mix(in oklab, var(--_mono-input-ring-color) var(--_mono-input-ring-alpha), transparent);\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group — has-[[aria-invalid=true]]:border-destructive\r\n has-[[aria-invalid=true]]:ring-3 has-[[aria-invalid=true]]:ring-destructive/20\r\n (dark: border /50, ring /40 — carried by the mode tokens). The ring is\r\n permanent, and it wins over the focus ring — same as the vendor order. */\r\n[mono-input][mono-validation-state=\"invalid\"] > [mono-field],\r\n:where([mono-input]) > [mono-field]:has(> [mono-native][aria-invalid=\"true\"]) {\r\n --_mono-input-bc: var(--mono-mode-invalid-border);\r\n --_mono-input-ring: 0 0 0 var(--_mono-input-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-input][mono-validation-state=\"valid\"] > [mono-field] {\r\n --_mono-input-bc: color-mix(in oklab, var(--_mono-input-valid) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-input-ring: 0 0 0 var(--_mono-input-ring-width) color-mix(in oklab, var(--_mono-input-valid) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n[mono-input][mono-validation-state=\"warning\"] > [mono-field] {\r\n --_mono-input-bc: color-mix(in oklab, var(--_mono-input-warning) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-input-ring: 0 0 0 var(--_mono-input-ring-width) color-mix(in oklab, var(--_mono-input-warning) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n\r\n/* EXTENSION — readonly: focusable, on a muted surface */\r\n[mono-input][mono-readonly] > [mono-field],\r\n:where([mono-input]) > [mono-field]:has(> [mono-native]:read-only:not(:disabled)) {\r\n background: var(--mono-input-readonly-bg, var(--muted));\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group:has(> :is(input, textarea, select, [data-control]):disabled) — opacity-50\r\n (`--mono-input-disabled-bg`: nova / lyra add disabled:bg-input/50) */\r\n[mono-input][mono-disabled] > [mono-field],\r\n:where([mono-input]) > [mono-field]:has(> [mono-native]:disabled) {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n background: var(--mono-input-disabled-bg, var(--_mono-input-bg));\r\n}\r\n\r\n/* =========================================\r\n The native input\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/input-group.css .input-group > :is(input, textarea, select, [data-control]) —\r\n block min-w-0 flex-1 appearance-none rounded-none border-0 bg-transparent\r\n text-foreground shadow-none outline-none placeholder:text-muted-foreground */\r\n/* basecoat@1.0.2 styles/vega.css .input-group > :is(input, select, [data-control])\r\n — px-2.5 py-1 text-sm; mono: no block padding — the FIELD owns the height\r\n (`min-height: token`) and `align-self: stretch` spans the click target */\r\n:where([mono-input]) [mono-native] {\r\n display: block;\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 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-input-text);\r\n font-family: inherit;\r\n font-size: var(--_mono-input-font-size);\r\n line-height: var(--_mono-input-line-height);\r\n padding-inline: var(--_mono-input-padding-x);\r\n padding-block: 0;\r\n\r\n &::placeholder {\r\n color: var(--_mono-input-placeholder);\r\n }\r\n\r\n /* .input:disabled — pointer-events-none cursor-not-allowed (the opacity is\r\n on the field so the affixes fade with it) */\r\n &:disabled {\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n }\r\n\r\n &:read-only {\r\n cursor: inherit;\r\n }\r\n\r\n /* Kill the native focus outline in host projects; the field draws the ring. */\r\n &:focus,\r\n &:focus-visible {\r\n outline: none !important;\r\n }\r\n\r\n &[type='number']::-webkit-outer-spin-button,\r\n &[type='number']::-webkit-inner-spin-button {\r\n margin: 0;\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group:not([data-orientation='vertical']):has(> :is([data-align='start'], [data-align='inline-start'])) > :is(input, select, [data-control]) — ps-1.5\r\n (and pe-1.5 for an end affix). The clear button counts as an end affix. */\r\n:where([mono-input]) > [mono-field]:has(> [mono-prefix]:not([mono-empty])) > [mono-native] {\r\n padding-inline-start: var(--mono-input-affix-gap, calc(var(--mono-spacing) * 1.5));\r\n}\r\n:where([mono-input]) > [mono-field]:has(> :is([mono-suffix]:not([mono-empty]), [mono-clear])) > [mono-native] {\r\n padding-inline-end: var(--mono-input-affix-gap, calc(var(--mono-spacing) * 1.5));\r\n}\r\n\r\n/* =========================================\r\n Prefix / suffix\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group > :is(span, [role='group'], header, footer), .input-group > :is(svg, kbd, .popover, .dropdown-menu) — gap-2 py-1.5\r\n text-sm font-medium text-muted-foreground select-none, svg size-4;\r\n [data-align='start'] ps-2 / [data-align='end'] pe-2 */\r\n:where([mono-input]) [mono-prefix],\r\n:where([mono-input]) [mono-suffix] {\r\n flex: 0 0 auto;\r\n display: inline-flex;\r\n align-items: center;\r\n gap: calc(var(--mono-spacing) * 2);\r\n font-size: var(--mono-input-affix-font-size, var(--_mono-input-font-size));\r\n line-height: var(--_mono-input-line-height);\r\n font-weight: var(--mono-font-weight-medium);\r\n color: var(--_mono-input-muted);\r\n user-select: none;\r\n}\r\n\r\n:where([mono-input]) [mono-prefix] {\r\n padding-inline-start: var(--_mono-input-affix-padding);\r\n}\r\n\r\n:where([mono-input]) [mono-suffix] {\r\n padding-inline-end: var(--_mono-input-affix-padding);\r\n}\r\n\r\n/* The light build re-appends slotted prefix/suffix content into this\r\n `[data-mono-slot]` placeholder, one level below the inline-flex wrapper.\r\n Make it a flex container too, so an `display: inline` icon span (e.g. a\r\n UnoCSS `i-mdi-*`, which ignores width/height while inline) is blockified\r\n into a flex item and actually renders its box. */\r\n:where([mono-input]) :is([mono-prefix], [mono-suffix]) > [data-mono-slot] {\r\n display: inline-flex;\r\n align-items: center;\r\n gap: inherit;\r\n}\r\n\r\n/* `[&>svg:not([class*='size-'])]:size-4` — our icons are UnoCSS `i-*` mask\r\n spans as often as SVGs, so every glyph in an affix takes the affix size. */\r\n:where([mono-input]) :is([mono-prefix], [mono-suffix]) :is(svg, .mono-icon, [mono-icon]),\r\n:where([mono-input]) :is([mono-prefix], [mono-suffix]) ::slotted(svg),\r\n:where([mono-input]) :is([mono-prefix], [mono-suffix]) ::slotted(.mono-icon),\r\n:where([mono-input]) :is([mono-prefix], [mono-suffix]) ::slotted([mono-icon]) {\r\n display: block;\r\n width: var(--_mono-input-affix-icon);\r\n height: var(--_mono-input-affix-icon);\r\n flex-shrink: 0;\r\n pointer-events: none;\r\n}\r\n\r\n/* =========================================\r\n Clear button — a ghost icon button in the end affix slot\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group > :is(button, [role='group'] > button, header > button, footer > button):has(> svg):not(:has(> :not(svg)))\r\n — size-6 rounded-[calc(var(--radius)-5px)] p-0 shadow-none, svg size-3.5;\r\n .input-group > button[data-align='end'] me-1; painted as .btn[data-variant='ghost'] */\r\n:where([mono-input]) [mono-clear] {\r\n flex: 0 0 auto;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--_mono-input-clear);\r\n height: var(--_mono-input-clear);\r\n padding: 0;\r\n margin: 0;\r\n margin-inline-end: var(--mono-spacing);\r\n border: 0;\r\n border-radius: var(--mono-input-clear-radius, calc(var(--radius) - 5px));\r\n background: transparent;\r\n box-shadow: none;\r\n color: var(--_mono-input-muted);\r\n font: inherit;\r\n line-height: 1;\r\n cursor: pointer;\r\n outline-style: none;\r\n transition-property: color, background-color, box-shadow;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n\r\n &:focus-visible {\r\n box-shadow: 0 0 0 var(--_mono-input-ring-width) color-mix(in oklab, var(--_mono-input-ring-color) var(--_mono-input-ring-alpha), transparent);\r\n }\r\n\r\n &:active {\r\n translate: 0 1px;\r\n }\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 :where([mono-input]) [mono-clear]:hover {\r\n background: var(--mono-mode-ghost-hover);\r\n color: var(--_mono-input-text);\r\n }\r\n}\r\n\r\n:where([mono-input]) [mono-clear] > :is(svg, .mono-icon, [mono-icon]) {\r\n display: block;\r\n width: var(--_mono-input-clear-glyph);\r\n height: var(--_mono-input-clear-glyph);\r\n pointer-events: none;\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 — text-sm text-muted-foreground\r\n leading-normal font-normal text-start. The wrapper is always rendered\r\n (aria-describedby points at it); it takes no space until it holds text. */\r\n:where([mono-input]) > [mono-message-wrap] {\r\n display: block;\r\n}\r\n\r\n:where([mono-input]) > [mono-message-wrap]:not(:has([mono-message]:not([mono-empty]))) {\r\n display: none;\r\n}\r\n\r\n:where([mono-input]) [mono-message] {\r\n font-size: var(--mono-input-message-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-input-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-input-muted);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field [role=\"alert\"] — text-destructive text-sm */\r\n:where([mono-input]) [mono-message=\"invalid\"] {\r\n color: var(--_mono-input-invalid);\r\n}\r\n\r\n/* EXTENSION — the other two states in their role colour */\r\n:where([mono-input]) [mono-message=\"valid\"] {\r\n color: var(--_mono-input-valid);\r\n}\r\n\r\n:where([mono-input]) [mono-message=\"warning\"] {\r\n color: var(--_mono-input-warning);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n :where([mono-input]) > [mono-field],\r\n :where([mono-input]) [mono-clear] {\r\n transition: none;\r\n }\r\n}\r\n";
3
-
4
- //#endregion
5
- export { input_css_raw_default as t };