@mono-lit/helper 0.0.5 → 0.0.7

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 (171) hide show
  1. package/dist/{control-tooltip-C3rA_nSH.js → control-tooltip-CoPD37_h.js} +20 -11
  2. package/dist/{data-source-options-Cz9fVLK8.js → data-source-options-CS0w0wlO.js} +26 -9
  3. package/dist/{data-source-options-QjuI73g8.js → data-source-options-lDR-g9Eb.js} +26 -9
  4. package/dist/{data-source-read-FxqzQkk2.js → data-source-read-Cp_h7NIf.js} +5 -2
  5. package/dist/{data-source-read-i6CYSUEl.js → data-source-read-DTJ_Mnez.js} +5 -2
  6. package/dist/{excel-BPdDt06G.js → excel-DtRpxmxs.js} +1 -1
  7. package/dist/{export-DgomqI_3.js → export-D27RJa1w.js} +1 -1
  8. package/dist/export.js +3 -3
  9. package/dist/{field-tooltip-FyMi9vNM.js → field-tooltip-Csk4s2ve.js} +2 -3
  10. package/dist/field-tooltip-addon-B32dizW_.js +22 -0
  11. package/dist/{control-tooltip-7vegYmq3.js → field-tooltip-addon-CWCp19mJ.js} +36 -12
  12. package/dist/{field-tooltip.css_raw-DEctHXKm.js → field-tooltip.css_raw-U5UeTa2d.js} +3 -4
  13. package/dist/{field-validation-CHHQi1zl.js → field-validation-CFmUmuDx.js} +1 -1
  14. package/dist/field-validation.css_raw-Cx6SGrfP.js +178 -0
  15. package/dist/{form-control-core-CIdMLXMo.js → form-control-core-BbiACMtL.js} +1 -1
  16. package/dist/{hydration-flush-DHrl4_KK.js → hydration-flush-BaE9gN3C.js} +450 -3
  17. package/dist/index.js +11 -11
  18. package/dist/{index.node-DzCuvHLg.js → index.node-Mg0Snp0t.js} +5 -5
  19. package/dist/index.node.js +11 -11
  20. package/dist/input.css_raw-Br-T8RWv.js +5 -0
  21. package/dist/{light-slots-DdDdZ6zs.js → light-slots-B5Ck0t_E.js} +1 -1
  22. package/dist/{light-slots-4ZCjOcBg.js → light-slots-_no0r2Z-.js} +1 -1
  23. package/dist/mono-button-CLkHg3WW.js +871 -0
  24. package/dist/{mono-button.shadow-D9NdMsmH.js → mono-button.shadow-DqZMpcqY.js} +1 -2
  25. package/dist/{mono-data-chart-ChkelNT7.js → mono-data-chart-BAH9Zb3p.js} +2 -2
  26. package/dist/{mono-data-dropdown-DxpUUk2y.js → mono-data-dropdown-BsY5IuIo.js} +72 -6
  27. package/dist/{mono-data-grid-KDpu4d4_.js → mono-data-grid-CZFjpnOD.js} +125 -18
  28. package/dist/{mono-data-grid-8jmeIXUU.js → mono-data-grid-kV4jYu2g.js} +124 -17
  29. package/dist/{mono-element-C7vCschg.js → mono-element-CKcT0rwv.js} +1 -1
  30. package/dist/{mono-form-controller-BkMR8g14.js → mono-form-controller-BrA10erm.js} +12 -1
  31. package/dist/mono-ui-kvLVIf1V.js +786 -0
  32. package/dist/{popup-portal-C8ttHDRX.js → popup-portal-CINuVjNY.js} +53 -6
  33. package/dist/src/components/accordion/mono-accordion.d.ts +0 -1
  34. package/dist/src/components/alert/mono-alert.d.ts +0 -1
  35. package/dist/src/components/breadcrumb/mono-breadcrumb-list.d.ts +0 -1
  36. package/dist/src/components/breadcrumb/mono-breadcrumb.d.ts +0 -1
  37. package/dist/src/components/button/mono-button-dropdown.d.ts +0 -1
  38. package/dist/src/components/button/mono-button.d.ts +0 -1
  39. package/dist/src/components/card/mono-card.d.ts +0 -1
  40. package/dist/src/components/chart/mono-chart-presets.d.ts +0 -4
  41. package/dist/src/components/chart/mono-chart.d.ts +0 -1
  42. package/dist/src/components/checkbox/mono-checkbox.d.ts +0 -1
  43. package/dist/src/components/chip/mono-chip.d.ts +0 -1
  44. package/dist/src/components/date/mono-date.d.ts +0 -1
  45. package/dist/src/components/drawer/mono-drawer.d.ts +0 -1
  46. package/dist/src/components/dropdown/mono-dropdown.d.ts +0 -1
  47. package/dist/src/components/dropdown-table/mono-dropdown-table.d.ts +0 -1
  48. package/dist/src/components/file-upload/mono-file-upload.d.ts +0 -1
  49. package/dist/src/components/filter/mono-filter-builder.d.ts +0 -1
  50. package/dist/src/components/input/mono-input.d.ts +0 -1
  51. package/dist/src/components/menu/mono-menu.d.ts +0 -1
  52. package/dist/src/components/modal/mono-modal.d.ts +0 -1
  53. package/dist/src/components/nav/mono-nav.d.ts +0 -1
  54. package/dist/src/components/otp/mono-otp.d.ts +0 -1
  55. package/dist/src/components/radio/mono-radio.d.ts +0 -1
  56. package/dist/src/components/rich-text-editor/mono-rich-text-editor.d.ts +0 -1
  57. package/dist/src/components/select/mono-select.d.ts +0 -1
  58. package/dist/src/components/sidebar/mono-sidebar.d.ts +0 -1
  59. package/dist/src/components/slider/mono-slider.d.ts +0 -1
  60. package/dist/src/components/switch/mono-switch.d.ts +0 -1
  61. package/dist/src/components/table/column-autosize.d.ts +96 -0
  62. package/dist/src/components/table/mono-data-grid.d.ts +16 -0
  63. package/dist/src/components/table/mono-table-checkbox.d.ts +0 -1
  64. package/dist/src/components/table/mono-table-detail.d.ts +0 -1
  65. package/dist/src/components/table/mono-table-empty.d.ts +0 -1
  66. package/dist/src/components/table/mono-table-error.d.ts +0 -1
  67. package/dist/src/components/table/mono-table-info.d.ts +0 -1
  68. package/dist/src/components/table/mono-table-loading.d.ts +0 -1
  69. package/dist/src/components/table/mono-table-page-size.d.ts +0 -1
  70. package/dist/src/components/table/mono-table-paging-group.d.ts +0 -1
  71. package/dist/src/components/table/mono-table-paging.d.ts +0 -1
  72. package/dist/src/components/table/mono-table-search.d.ts +0 -1
  73. package/dist/src/components/table/mono-table-sort.d.ts +0 -1
  74. package/dist/src/components/table/mono-table-summary.d.ts +0 -1
  75. package/dist/src/components/table/mono-table-th-core.d.ts +3 -0
  76. package/dist/src/components/table/mono-table-th.d.ts +0 -1
  77. package/dist/src/components/table/table-controller-core.d.ts +2 -0
  78. package/dist/src/components/table/table-types.d.ts +8 -1
  79. package/dist/src/components/tabs/mono-tabs.d.ts +0 -1
  80. package/dist/src/components/tag-input/mono-tag-input.d.ts +12 -1
  81. package/dist/src/components/tag-input/mono-tag-input.shadow.d.ts +9 -1
  82. package/dist/src/components/tag-input/tag-input-core.d.ts +9 -1
  83. package/dist/src/components/tag-input/tag-input-types.d.ts +2 -0
  84. package/dist/src/components/textarea/mono-textarea.d.ts +0 -1
  85. package/dist/src/components/tooltip/field-tooltip-addon.d.ts +5 -0
  86. package/dist/src/composables/mono-size-attrs.d.ts +10 -0
  87. package/dist/src/composables/popup-portal.d.ts +24 -1
  88. package/dist/src/entries/index.d.ts +2 -1
  89. package/dist/src/entries/index.node.d.ts +2 -1
  90. package/dist/{styles-BODNpZV1.js → styles-D-ergrfR.js} +1 -1
  91. package/dist/{tooltip-Drekihf5.js → tooltip-Cu5IrDS9.js} +1 -2
  92. package/dist/tooltip.js +2 -3
  93. package/dist/ui/accordion.js +4 -11
  94. package/dist/ui/alert.js +3 -10
  95. package/dist/ui/breadcrumb.js +4 -14
  96. package/dist/ui/button-dropdown.js +22 -15
  97. package/dist/ui/button.js +1 -1
  98. package/dist/ui/card.js +4 -11
  99. package/dist/ui/chart.js +4 -24
  100. package/dist/ui/checkbox.js +4 -11
  101. package/dist/ui/chip.js +6 -9
  102. package/dist/ui/date.js +5 -12
  103. package/dist/ui/drawer.js +5 -12
  104. package/dist/ui/dropdown-table.js +89 -38
  105. package/dist/ui/dropdown.js +34 -21
  106. package/dist/ui/file-upload.js +4 -11
  107. package/dist/ui/filter.js +3 -10
  108. package/dist/ui/form.js +1 -1
  109. package/dist/ui/index.css +5414 -8564
  110. package/dist/ui/input.js +6 -14
  111. package/dist/ui/menu.js +4 -11
  112. package/dist/ui/modal.js +6 -13
  113. package/dist/ui/nav.js +4 -11
  114. package/dist/ui/otp.js +6 -14
  115. package/dist/ui/radio.js +4 -11
  116. package/dist/ui/rich-text-editor.js +4 -12
  117. package/dist/ui/select.js +12 -15
  118. package/dist/ui/shadow/accordion.js +1 -1
  119. package/dist/ui/shadow/alert.js +1 -1
  120. package/dist/ui/shadow/breadcrumb.js +1 -1
  121. package/dist/ui/shadow/button-dropdown.js +21 -7
  122. package/dist/ui/shadow/button.js +1 -1
  123. package/dist/ui/shadow/card.js +1 -2
  124. package/dist/ui/shadow/chart.js +3 -4
  125. package/dist/ui/shadow/checkbox.js +2 -2
  126. package/dist/ui/shadow/chip.js +1 -1
  127. package/dist/ui/shadow/date.js +4 -5
  128. package/dist/ui/shadow/drawer.js +2 -2
  129. package/dist/ui/shadow/dropdown-table.js +159 -35
  130. package/dist/ui/shadow/dropdown.js +31 -11
  131. package/dist/ui/shadow/file-upload.js +2 -2
  132. package/dist/ui/shadow/filter.js +1 -2
  133. package/dist/ui/shadow/input.js +5 -6
  134. package/dist/ui/shadow/menu.js +1 -1
  135. package/dist/ui/shadow/modal.js +3 -3
  136. package/dist/ui/shadow/nav.js +1 -1
  137. package/dist/ui/shadow/otp.js +5 -6
  138. package/dist/ui/shadow/radio.js +2 -2
  139. package/dist/ui/shadow/rich-text-editor.js +2 -3
  140. package/dist/ui/shadow/select.js +11 -7
  141. package/dist/ui/shadow/sidebar.js +2 -2
  142. package/dist/ui/shadow/slider.js +4 -5
  143. package/dist/ui/shadow/switch.js +2 -2
  144. package/dist/ui/shadow/table.js +113 -20
  145. package/dist/ui/shadow/tabs.js +1 -1
  146. package/dist/ui/shadow/tag-input.js +203 -27
  147. package/dist/ui/shadow/textarea.js +4 -5
  148. package/dist/ui/sidebar.js +4 -11
  149. package/dist/ui/slider.js +5 -13
  150. package/dist/ui/switch.js +4 -11
  151. package/dist/ui/table.js +114 -64
  152. package/dist/ui/tabs.js +4 -11
  153. package/dist/ui/tag-input.js +215 -30
  154. package/dist/ui/textarea.js +6 -14
  155. package/dist/ui/theme/luma.css +495 -495
  156. package/dist/ui/theme/lyra.css +495 -495
  157. package/dist/ui/theme/maia.css +495 -495
  158. package/dist/ui/theme/mira.css +495 -495
  159. package/dist/ui/theme/nova.css +495 -495
  160. package/dist/ui/theme/one.css +742 -742
  161. package/dist/ui/theme/rhea.css +495 -495
  162. package/dist/ui/theme/sera.css +495 -495
  163. package/dist/ui/theme/vega.css +495 -495
  164. package/package.json +2 -2
  165. package/dist/css-size-DWAPgQdT.js +0 -38
  166. package/dist/field-validation.css_raw-B3Iu33rS.js +0 -178
  167. package/dist/input.css_raw-CQu2fAsU.js +0 -5
  168. package/dist/mono-button-CeDB9khW.js +0 -878
  169. package/dist/mono-ui-BwUc0L6B.js +0 -360
  170. package/dist/tooltip-loader-3U9FTOXj.js +0 -20
  171. package/dist/tooltip-loader-Dcp9AUZn.js +0 -23
@@ -1,10 +1,9 @@
1
- import { a as __decorate, c as defineHybridPropAlias, f as customElement, i as withShadowUtilityStyles, l as defineHybridPropAliases, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration } from "../../hydration-flush-DHrl4_KK.js";
1
+ import { a as __decorate, c as defineHybridPropAlias, f as customElement, i as withShadowUtilityStyles, l as defineHybridPropAliases, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration, v as toCssSize } from "../../hydration-flush-BaE9gN3C.js";
2
2
  import { t as dispatchMonoEvent } from "../../mono-event-BPku9HpS.js";
3
3
  import { n as cssPart } from "../../css-class-B6Tc_MAx.js";
4
4
  import { a as parseFormat, t as applyFormat } from "../../input-format-GrRCJBqV.js";
5
- import { n as toCssSize } from "../../css-size-DWAPgQdT.js";
6
- import { t as MonoFormControlCore } from "../../form-control-core-CIdMLXMo.js";
7
- import { n as FieldTooltipController, t as field_tooltip_css_raw_default } from "../../field-tooltip.css_raw-DEctHXKm.js";
5
+ import { t as MonoFormControlCore } from "../../form-control-core-BbiACMtL.js";
6
+ import { n as FieldTooltipController, t as field_tooltip_css_raw_default } from "../../field-tooltip.css_raw-U5UeTa2d.js";
8
7
  import { LitElement, html, isServer, nothing, unsafeCSS } from "lit";
9
8
  import { property, state } from "lit/decorators.js";
10
9
  import { ifDefined } from "lit/directives/if-defined.js";
@@ -1012,7 +1011,7 @@ const MonoSliderCore = (superClass) => {
1012
1011
 
1013
1012
  //#endregion
1014
1013
  //#region \0raw:C:\Users\VCT-DEV\Desktop\libs\packages\helper\src\components\slider\slider.css?raw.js
1015
- var slider_css_raw_default = "/* =========================================================================\n mono-slider — a multi-thumb slider drawn in the look of Basecoat's range\n (basecoat-css@1.0.2 components/range.css + each style's `input[type='range']`),\n the same look `<mono-input type=\"range\">` has.\n\n Styled by ATTRIBUTE, like mono-input:\n\n <div mono-slider mono-size mono-color mono-type=\"vertical\"\n mono-validation-state mono-value-tooltip=\"always|never\"\n mono-track-gap mono-marks-labelled mono-disabled mono-readonly mono-dragging>\n <div mono-label-row><label mono-label>…</label><span mono-slider-value>20 – 80</span></div>\n <div mono-slider-field>\n <div mono-slider-control> the pointer target\n <div mono-slider-track> the rail; it holds the pieces\n <span mono-slider-piece mono-filled? mono-cut-start? mono-cut-end? style=\"--a;--b\">\n <div mono-slider-marks><span mono-slider-mark mono-active? style=\"--p\">\n <span mono-slider-mark-label>\n <div mono-slider-thumb role=\"slider\" mono-active? mono-dragging? style=\"--p\">\n <span mono-slider-tooltip>\n <div mono-message-wrap><div mono-message=\"helper|valid|invalid|warning\">\n\n GEOMETRY. `--p` / `--a` / `--b` are 0–1 positions (unitless). A thumb's CENTRE travels\n from half a thumb in to half a thumb short of the end — exactly where a native range\n thumb sits — so the slider lines up with `<mono-input type=\"range\">` under every flavor.\n The track is cut into pieces at every thumb: that is what lets a piece be filled or not\n (`fill`), and what lets `track-gap` cut the track back around each thumb (M3 style).\n\n KNOBS. Every look value resolves `--mono-slider-x` → `--mono-input-range-x` → vega,\n so the eight Basecoat styles and ONE (which write the input-range knobs in\n flavors/*.css) restyle the slider with no slider entries of their own — the\n \"flavor via public knobs\" pattern (filter.css). Slider-only knobs: --mono-slider-\n {length, track-gap, accent, mark-size, mark-color, mark-active-color, mark-label-*,\n tooltip-bg, tooltip-color, tooltip-radius, tooltip-font-*}.\n\n The track/thumb rules cite Basecoat; marks, tooltips, track gaps, multiple\n thumbs and the vertical type are EXTENSIONs.\n ========================================================================= */\n\nmono-slider {\n display: block;\n}\n\n[mono-slider] {\n /* ── palette ─────────────────────────────────────────────────────────── */\n --_mono-slider-text: var(--mono-slider-color, var(--foreground));\n --_mono-slider-muted: var(--mono-slider-muted, var(--muted-foreground));\n /* the fill + thumb colour: the `color` prop, a validation state outranks it */\n --_mono-slider-accent: var(--mono-slider-accent, var(--_mono-slider-accent-preset, var(--primary)));\n /* the hover / focus halo: Basecoat's ring-ring/50 (the role colour for a non-primary `color`) */\n --_mono-slider-ring-color: var(--mono-slider-ring-color, var(--_mono-slider-ring-preset, var(--ring)));\n --_mono-slider-ring-c: color-mix(in oklab, var(--_mono-slider-ring-color) var(--mono-slider-ring-alpha, var(--mono-ring-alpha, 50%)), transparent);\n\n /* ── geometry: md here, `size` multiplies ────────────────────────────── */\n --_mono-slider-scale: 1;\n --_mono-slider-track-h: round(nearest, calc(var(--mono-slider-track-height, var(--mono-input-range-track-height, 0.375rem)) * var(--_mono-slider-scale)), 1px);\n /* along = the thumb's size in the direction of travel, across = the other one */\n --_mono-slider-across: round(nearest, calc(var(--mono-slider-thumb-size, var(--mono-input-range-thumb-size, 1rem)) * var(--_mono-slider-scale)), 1px);\n --_mono-slider-along: round(nearest, calc(var(--mono-slider-thumb-width, var(--mono-input-range-thumb-width, var(--mono-slider-thumb-size, var(--mono-input-range-thumb-size, 1rem)))) * var(--_mono-slider-scale)), 1px);\n --_mono-slider-box: max(round(nearest, calc(var(--mono-slider-height, var(--mono-input-range-height, 1.25rem)) * var(--_mono-slider-scale)), 1px), var(--_mono-slider-across));\n --_mono-slider-track-radius: var(--mono-slider-track-radius, var(--mono-input-range-track-radius, 9999px));\n --_mono-slider-track-bg: var(--mono-slider-track-bg, var(--mono-input-range-track-bg, var(--muted)));\n --_mono-slider-fill: var(--mono-slider-fill, var(--mono-input-range-fill, currentColor));\n --_mono-slider-cut: calc(var(--_mono-slider-track-gap, 0px) + var(--_mono-slider-along) / 2);\n\n /* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3 (the input range's gap) */\n display: flex;\n flex-direction: column;\n gap: var(--mono-slider-gap, var(--mono-input-range-gap, var(--mono-input-gap, calc(var(--mono-spacing) * 3))));\n width: 100%;\n font-family: inherit;\n color: var(--_mono-slider-text);\n}\n\n[mono-slider],\n:where([mono-slider]) *,\n:where([mono-slider]) *::before,\n:where([mono-slider]) *::after {\n box-sizing: border-box;\n}\n\n/* the shadow build renders every region and marks an empty one */\n[mono-slider] [mono-empty] {\n display: none;\n}\n\n[mono-slider][mono-size=\"xs\"] { --_mono-slider-scale: 0.75; }\n[mono-slider][mono-size=\"sm\"] { --_mono-slider-scale: 0.875; }\n[mono-slider][mono-size=\"lg\"] { --_mono-slider-scale: 1.125; }\n[mono-slider][mono-size=\"xl\"] { --_mono-slider-scale: 1.25; }\n[mono-slider][mono-size=\"xxl\"] { --_mono-slider-scale: 1.375; }\n\n/* ── colours: the accent + halo per role (primary is Basecoat's --primary / --ring) ── */\n[mono-slider][mono-color=\"secondary\"] { --_mono-slider-accent-preset: var(--muted-foreground); --_mono-slider-ring-preset: var(--muted-foreground); }\n[mono-slider][mono-color=\"success\"] { --_mono-slider-accent-preset: var(--success); --_mono-slider-ring-preset: var(--success); }\n[mono-slider][mono-color=\"danger\"] { --_mono-slider-accent-preset: var(--destructive); --_mono-slider-ring-preset: var(--destructive); }\n[mono-slider][mono-color=\"warning\"] { --_mono-slider-accent-preset: var(--warning); --_mono-slider-ring-preset: var(--warning); }\n[mono-slider][mono-color=\"info\"] { --_mono-slider-accent-preset: var(--info); --_mono-slider-ring-preset: var(--info); }\n[mono-slider][mono-color=\"teal\"] { --_mono-slider-accent-preset: var(--teal); --_mono-slider-ring-preset: var(--teal); }\n[mono-slider][mono-color=\"purple\"] { --_mono-slider-accent-preset: var(--purple); --_mono-slider-ring-preset: var(--purple); }\n[mono-slider][mono-color=\"neutral\"] { --_mono-slider-accent-preset: var(--neutral); --_mono-slider-ring-preset: var(--neutral); }\n[mono-slider][mono-color=\"dark\"] { --_mono-slider-accent-preset: var(--dark); --_mono-slider-ring-preset: var(--dark); }\n\n/* a validation state recolours the fill + thumb (after the colours, so it wins) */\n[mono-slider][mono-validation-state=\"invalid\"] { --_mono-slider-accent-preset: var(--destructive); --_mono-slider-ring-preset: var(--destructive); }\n[mono-slider][mono-validation-state=\"valid\"] { --_mono-slider-accent-preset: var(--success); --_mono-slider-ring-preset: var(--success); }\n[mono-slider][mono-validation-state=\"warning\"] { --_mono-slider-accent-preset: var(--warning); --_mono-slider-ring-preset: var(--warning); }\n\n/* =========================================\n Label row — the label, and the value at its end (EJI ONE `.eji-range__row`)\n ========================================= */\n\n/* basecoat@1.0.2 styles/vega.css .field > label, .label — flex items-center gap-2 text-sm\n leading-none font-medium select-none; the row spans so the value can end it */\n:where([mono-slider]) > [mono-label-row] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: calc(var(--mono-spacing) * 4);\n min-width: 0;\n}\n\n:where([mono-slider]) [mono-label] {\n display: flex;\n align-items: center;\n min-width: 0;\n gap: var(--mono-input-label-gap, calc(var(--mono-spacing) * 2));\n font-size: var(--mono-slider-label-font-size, var(--mono-input-range-label-font-size, var(--mono-input-label-font-size, var(--mono-text-sm))));\n line-height: var(--mono-slider-label-line-height, var(--mono-input-range-label-line-height, var(--mono-input-label-line-height, 1)));\n font-weight: var(--mono-slider-label-font-weight, var(--mono-input-range-label-font-weight, var(--mono-input-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)))));\n color: var(--mono-slider-label-color, var(--mono-input-range-label-color, var(--_mono-slider-text)));\n user-select: none;\n}\n\n:where([mono-slider]) [mono-required-mark] {\n color: var(--destructive);\n}\n\n/* the label ⓘ (`tooltip` prop) — same as mono-input's */\n:where([mono-slider]) [mono-label] > [mono-label-tooltip] {\n display: inline-flex;\n flex: none;\n align-items: center;\n justify-content: center;\n font-size: var(--mono-input-label-tooltip-size, 1.1em);\n color: var(--mono-input-label-tooltip-color, currentColor);\n opacity: var(--mono-input-label-tooltip-opacity, 0.6);\n border-radius: 9999px;\n cursor: help;\n pointer-events: auto;\n outline: none;\n transition: opacity 150ms ease;\n\n &:is(:hover, :focus-visible) {\n opacity: 1;\n }\n &:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n }\n & > [mono-icon] {\n width: 1em;\n height: 1em;\n }\n}\n\n/* EXTENSION — the value readout (EJI ONE `.eji-range__val`); tabular so it does not shimmer */\n:where([mono-slider]) [mono-slider-value] {\n flex: none;\n font-family: var(--mono-slider-value-font-family, var(--mono-input-range-value-font-family, inherit));\n font-size: var(--mono-slider-value-font-size, var(--mono-input-range-value-font-size, var(--mono-slider-label-font-size, var(--mono-input-range-label-font-size, var(--mono-input-label-font-size, var(--mono-text-sm))))));\n font-weight: var(--mono-slider-value-font-weight, var(--mono-input-range-value-font-weight, var(--mono-font-weight-medium)));\n line-height: var(--mono-slider-label-line-height, var(--mono-input-range-label-line-height, var(--mono-input-label-line-height, 1)));\n font-variant-numeric: tabular-nums;\n color: var(--mono-slider-value-color, var(--mono-input-range-value-color, var(--_mono-slider-muted)));\n white-space: nowrap;\n user-select: none;\n}\n\n/* no label: the readout follows the control, in reserved room */\n:where([mono-slider]) > [mono-slider-field] > [mono-slider-value] {\n min-width: var(--mono-slider-value-min-width, var(--mono-input-range-value-min-width, 3ch));\n text-align: end;\n}\n\n/* =========================================\n Field + control\n ========================================= */\n\n:where([mono-slider]) > [mono-slider-field] {\n display: flex;\n align-items: center;\n gap: calc(var(--mono-spacing) * 3);\n min-width: 0;\n}\n\n/* basecoat@1.0.2 components/range.css .field > input[type='range'], .input[type='range'] — flex appearance-none\n items-center p-0 outline-none disabled:pointer-events-none disabled:opacity-50 */\n/* basecoat@1.0.2 styles/vega.css .field > input[type='range'], .input[type='range'] — h-5 (the box), --slider-track-height,\n --slider-thumb-size; mono: the box also grows to fit a taller thumb */\n:where([mono-slider]) [mono-slider-control] {\n position: relative;\n flex: 1 1 auto;\n min-width: 0;\n height: var(--_mono-slider-box);\n color: var(--_mono-slider-accent);\n cursor: pointer;\n touch-action: none;\n user-select: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n/* room for mark labels under the track */\n[mono-slider][mono-marks-labelled] [mono-slider-control] {\n margin-block-end: calc(var(--mono-slider-mark-label-gap, calc(var(--mono-spacing) * 1.5)) + var(--mono-slider-mark-label-line-height, 1rem));\n}\n\n/* =========================================\n Track — the rail, cut into pieces at every thumb\n ========================================= */\n\n/* basecoat@1.0.2 styles/vega.css :is(.field > input[type='range'], .input[type='range'])::-webkit-slider-runnable-track — bg-muted h-1.5\n rounded-full (+ components/range.css: the --primary / --muted gradient stop, here one piece each) */\n:where([mono-slider]) [mono-slider-track] {\n position: absolute;\n inset-inline: 0;\n top: 50%;\n height: var(--_mono-slider-track-h);\n margin-top: calc(var(--_mono-slider-track-h) / -2);\n}\n\n:where([mono-slider]) [mono-slider-piece] {\n /* piece ends: a thumb centre, or the very end of the rail */\n --_x0: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--a));\n --_x1: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--b));\n --_cs: 0px;\n --_ce: 0px;\n position: absolute;\n inset-block: 0;\n inset-inline-start: calc(var(--_x0) + var(--_cs));\n inline-size: max(0px, calc(var(--_x1) - var(--_x0) - var(--_cs) - var(--_ce)));\n border-radius: var(--_mono-slider-track-radius);\n background: var(--_mono-slider-track-bg);\n}\n:where([mono-slider]) [mono-slider-piece]:not([mono-cut-start]) { --_x0: 0%; }\n:where([mono-slider]) [mono-slider-piece]:not([mono-cut-end]) { --_x1: 100%; }\n:where([mono-slider]) [mono-slider-piece][mono-filled] {\n background: var(--_mono-slider-fill);\n}\n\n/* joins at a thumb are square unless `track-gap` opens them (then each piece is a\n whole rounded bar, Material 3's look) */\n[mono-slider]:not([mono-track-gap]) [mono-slider-piece][mono-cut-start] {\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n}\n[mono-slider]:not([mono-track-gap]) [mono-slider-piece][mono-cut-end] {\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n}\n[mono-slider][mono-track-gap] [mono-slider-piece][mono-cut-start] { --_cs: var(--_mono-slider-cut); }\n[mono-slider][mono-track-gap] [mono-slider-piece][mono-cut-end] { --_ce: var(--_mono-slider-cut); }\n\n/* =========================================\n Thumb\n ========================================= */\n\n/* basecoat@1.0.2 styles/vega.css :is(.field > input[type='range'], .input[type='range'])::-webkit-slider-thumb — border-primary ring-ring/50\n size-4 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4;\n mono: the three box-shadow slots of mono-input's range — a resting ring, the halo, the shadow */\n:where([mono-slider]) [mono-slider-thumb] {\n --_halo: 0 0 #0000;\n position: absolute;\n z-index: 1;\n top: 50%;\n inset-inline-start: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--p));\n width: var(--_mono-slider-along);\n height: var(--_mono-slider-across);\n margin-top: calc(var(--_mono-slider-across) / -2);\n margin-inline-start: calc(var(--_mono-slider-along) / -2);\n border: var(--mono-slider-thumb-border-width, var(--mono-input-range-thumb-border-width, 1px)) solid\n var(--mono-slider-thumb-border-color, var(--mono-input-range-thumb-border-color, currentColor));\n border-radius: var(--mono-slider-thumb-radius, var(--mono-input-range-thumb-radius, 9999px));\n background: var(--mono-slider-thumb-bg, var(--mono-input-range-thumb-bg, #fff));\n box-shadow:\n 0 0 0 var(--mono-slider-thumb-ring-width, var(--mono-input-range-thumb-ring-width, 0px))\n var(--mono-slider-thumb-ring-color, var(--mono-input-range-thumb-ring-color, transparent)),\n var(--_halo),\n var(--mono-slider-thumb-shadow, var(--mono-input-range-thumb-shadow, var(--mono-shadow-sm)));\n outline: none;\n transition-property: color, box-shadow, background-color, border-color;\n transition-timing-function: var(--mono-ease);\n transition-duration: var(--mono-duration);\n}\n\n/* the last-touched thumb rides on top, so a stack lifts the one being moved */\n:where([mono-slider]) [mono-slider-thumb][mono-active] {\n z-index: 2;\n}\n\n/* focus-visible:ring-4 focus-visible:outline-hidden; a drag keeps the halo on */\n:where([mono-slider]) [mono-slider-thumb]:is(:focus-visible, [mono-dragging]) {\n --_halo: 0 0 0 var(--mono-slider-ring-width, var(--mono-input-range-ring-width, 4px)) var(--_mono-slider-ring-c);\n}\n\n/* hover:ring-4 */\n@media (hover: hover) {\n [mono-slider]:not([mono-disabled], [mono-readonly]) [mono-slider-thumb]:hover:not(:focus-visible, [mono-dragging]) {\n --_halo: 0 0 0 var(--mono-slider-hover-ring-width, var(--mono-input-range-hover-ring-width, var(--mono-slider-ring-width, var(--mono-input-range-ring-width, 4px)))) var(--_mono-slider-ring-c);\n }\n}\n\n/* =========================================\n EXTENSION — marks\n ========================================= */\n\n:where([mono-slider]) [mono-slider-marks] {\n position: absolute;\n inset: 0;\n pointer-events: none;\n}\n\n:where([mono-slider]) [mono-slider-mark] {\n --_size: var(--mono-slider-mark-size, max(4px, calc(var(--_mono-slider-track-h) * 0.5)));\n position: absolute;\n top: 50%;\n inset-inline-start: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--p));\n width: var(--_size);\n height: var(--_size);\n margin-top: calc(var(--_size) / -2);\n margin-inline-start: calc(var(--_size) / -2);\n border-radius: 9999px;\n background: var(--mono-slider-mark-color, color-mix(in oklab, var(--_mono-slider-muted) 55%, transparent));\n}\n\n:where([mono-slider]) [mono-slider-mark][mono-active] {\n background: var(--mono-slider-mark-active-color, color-mix(in oklab, var(--primary-foreground) 85%, transparent));\n}\n\n:where([mono-slider]) [mono-slider-mark-label] {\n position: absolute;\n top: calc(var(--_mono-slider-box) / 2 + var(--mono-slider-mark-label-gap, calc(var(--mono-spacing) * 1.5)));\n left: 50%;\n translate: -50% 0;\n font-size: var(--mono-slider-mark-label-font-size, var(--mono-text-xs));\n line-height: var(--mono-slider-mark-label-line-height, 1rem);\n font-weight: var(--mono-slider-mark-label-font-weight, var(--mono-font-weight-normal));\n color: var(--mono-slider-mark-label-color, var(--_mono-slider-muted));\n white-space: nowrap;\n}\n\n/* =========================================\n EXTENSION — the value bubble on each thumb (shadcn's tooltip: bg-foreground text-background)\n ========================================= */\n\n:where([mono-slider]) [mono-slider-tooltip] {\n position: absolute;\n left: 50%;\n bottom: calc(100% + var(--mono-slider-tooltip-offset, calc(var(--mono-spacing) * 2)));\n translate: -50% 0;\n padding: calc(var(--mono-spacing) * 0.5) calc(var(--mono-spacing) * 2);\n border-radius: var(--mono-slider-tooltip-radius, var(--mono-radius-md));\n background: var(--mono-slider-tooltip-bg, var(--foreground));\n color: var(--mono-slider-tooltip-color, var(--background));\n font-family: var(--mono-slider-tooltip-font-family, inherit);\n font-size: var(--mono-slider-tooltip-font-size, var(--mono-text-xs));\n line-height: var(--mono-slider-tooltip-line-height, 1rem);\n font-weight: var(--mono-slider-tooltip-font-weight, var(--mono-font-weight-medium));\n font-variant-numeric: tabular-nums;\n white-space: nowrap;\n pointer-events: none;\n opacity: 0;\n visibility: hidden;\n transition: opacity var(--mono-duration) var(--mono-ease), visibility var(--mono-duration);\n\n /* the arrow */\n &::after {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n width: 0.5rem;\n height: 0.25rem;\n translate: -50% 0;\n background: inherit;\n clip-path: polygon(0 0, 100% 0, 50% 100%);\n }\n}\n\n/* `value-tooltip=\"always\"`: the bubbles are permanent, so the label row must not sit under them */\n[mono-slider][mono-value-tooltip=\"always\"]:not([mono-type=\"vertical\"]) [mono-slider-control] {\n margin-block-start: max(0px, calc(var(--mono-slider-tooltip-line-height, 1rem) + var(--mono-spacing) * 3 + var(--mono-slider-tooltip-offset, calc(var(--mono-spacing) * 2)) - (var(--_mono-slider-box) - var(--_mono-slider-across)) / 2));\n}\n\n/* `value-tooltip=\"auto\"`: on focus, while dragging, and on hover */\n:where([mono-slider]) [mono-slider-thumb]:is(:focus-visible, [mono-dragging]) > [mono-slider-tooltip],\n[mono-slider][mono-value-tooltip=\"always\"] [mono-slider-tooltip] {\n opacity: 1;\n visibility: visible;\n}\n@media (hover: hover) {\n [mono-slider]:not([mono-disabled]) [mono-slider-thumb]:hover > [mono-slider-tooltip] {\n opacity: 1;\n visibility: visible;\n }\n}\n\n/* =========================================\n EXTENSION — type=\"vertical\": the same parts with the axes swapped, min at the bottom\n ========================================= */\n\n[mono-slider][mono-type=\"vertical\"] {\n width: auto;\n}\n\n[mono-slider][mono-type=\"vertical\"] > [mono-slider-field] {\n flex-direction: column;\n align-items: flex-start;\n}\n\n[mono-slider][mono-type=\"vertical\"] [mono-slider-control] {\n flex: none;\n width: var(--_mono-slider-box);\n height: var(--_mono-slider-length, var(--mono-slider-length, 200px));\n}\n\n[mono-slider][mono-type=\"vertical\"][mono-marks-labelled] [mono-slider-control] {\n margin-block-end: 0;\n}\n\n[mono-slider][mono-type=\"vertical\"] [mono-slider-track] {\n inset-inline: auto;\n inset-block: 0;\n left: 50%;\n top: 0;\n width: var(--_mono-slider-track-h);\n height: auto;\n margin-top: 0;\n margin-left: calc(var(--_mono-slider-track-h) / -2);\n}\n\n[mono-slider][mono-type=\"vertical\"] [mono-slider-piece] {\n --_x0: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--a));\n --_x1: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--b));\n inset-block: auto;\n inset-inline: 0;\n bottom: calc(var(--_x0) + var(--_cs));\n inline-size: auto;\n block-size: max(0px, calc(var(--_x1) - var(--_x0) - var(--_cs) - var(--_ce)));\n}\n[mono-slider][mono-type=\"vertical\"] [mono-slider-piece]:not([mono-cut-start]) { --_x0: 0%; }\n[mono-slider][mono-type=\"vertical\"] [mono-slider-piece]:not([mono-cut-end]) { --_x1: 100%; }\n/* vertical joins: the piece's START is its bottom, its END its top */\n[mono-slider][mono-type=\"vertical\"]:not([mono-track-gap]) [mono-slider-piece][mono-cut-start] {\n border-radius: var(--_mono-slider-track-radius);\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n[mono-slider][mono-type=\"vertical\"]:not([mono-track-gap]) [mono-slider-piece][mono-cut-end] {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n}\n[mono-slider][mono-type=\"vertical\"]:not([mono-track-gap]) [mono-slider-piece][mono-cut-start][mono-cut-end] {\n border-radius: 0;\n}\n\n[mono-slider][mono-type=\"vertical\"] [mono-slider-thumb],\n[mono-slider][mono-type=\"vertical\"] [mono-slider-mark] {\n /* the logical reset goes FIRST: written after `left` it would reset it too */\n inset-inline-start: auto;\n top: auto;\n left: 50%;\n bottom: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--p));\n margin: 0;\n}\n[mono-slider][mono-type=\"vertical\"] [mono-slider-thumb] {\n width: var(--_mono-slider-across);\n height: var(--_mono-slider-along);\n margin-left: calc(var(--_mono-slider-across) / -2);\n margin-bottom: calc(var(--_mono-slider-along) / -2);\n}\n[mono-slider][mono-type=\"vertical\"] [mono-slider-mark] {\n margin-left: calc(var(--_size) / -2);\n margin-bottom: calc(var(--_size) / -2);\n}\n[mono-slider][mono-type=\"vertical\"] [mono-slider-mark-label] {\n top: 50%;\n left: calc(var(--_mono-slider-box) / 2 + var(--mono-slider-mark-label-gap, calc(var(--mono-spacing) * 2)));\n translate: 0 -50%;\n}\n[mono-slider][mono-type=\"vertical\"] [mono-slider-tooltip] {\n left: auto;\n right: calc(100% + var(--mono-slider-tooltip-offset, calc(var(--mono-spacing) * 2)));\n bottom: 50%;\n translate: 0 50%;\n\n &::after {\n top: 50%;\n left: 100%;\n width: 0.25rem;\n height: 0.5rem;\n translate: 0 -50%;\n clip-path: polygon(0 0, 100% 50%, 0 100%);\n }\n}\n\n/* =========================================\n States\n ========================================= */\n\n/* in-data-[disabled=true]:opacity-50 */\n[mono-slider][mono-disabled] > :is([mono-label-row], [mono-slider-field]) {\n opacity: 0.5;\n}\n[mono-slider][mono-disabled] [mono-slider-control] {\n pointer-events: none;\n cursor: not-allowed;\n}\n\n[mono-slider][mono-readonly] [mono-slider-control] {\n cursor: default;\n}\n\n[mono-slider][mono-dragging] [mono-slider-control] {\n cursor: grabbing;\n}\n\n/* =========================================\n Message — helper / validation text (mono-input's)\n ========================================= */\n\n:where([mono-slider]) > [mono-message-wrap]:not(:has([mono-message]:not([mono-empty]))) {\n display: none;\n}\n\n:where([mono-slider]) [mono-message] {\n font-size: var(--mono-input-message-font-size, var(--mono-text-sm));\n line-height: var(--mono-input-message-line-height, var(--mono-leading-normal));\n color: var(--_mono-slider-muted);\n}\n:where([mono-slider]) [mono-message=\"invalid\"] { color: var(--destructive); }\n:where([mono-slider]) [mono-message=\"valid\"] { color: var(--success); }\n:where([mono-slider]) [mono-message=\"warning\"] { color: var(--warning); }\n\n[mono-slider][mono-validation-state=\"invalid\"] [mono-label] {\n color: var(--destructive);\n}\n\n@media (prefers-reduced-motion: reduce) {\n :where([mono-slider]) :is([mono-slider-thumb], [mono-slider-tooltip]) {\n transition: none;\n }\n}\n";
1014
+ var slider_css_raw_default = "/* =========================================================================\r\n mono-slider — a multi-thumb slider drawn in the look of Basecoat's range\r\n (basecoat-css@1.0.2 components/range.css + each style's `input[type='range']`),\r\n the same look `<mono-input type=\"range\">` has.\r\n\r\n Styled by ATTRIBUTE, like mono-input:\r\n\r\n <div mono-slider mono-size mono-color mono-type=\"vertical\"\r\n mono-validation-state mono-value-tooltip=\"always|never\"\r\n mono-track-gap mono-marks-labelled mono-disabled mono-readonly mono-dragging>\r\n <div mono-label-row><label mono-label>…</label><span mono-slider-value>20 – 80</span></div>\r\n <div mono-slider-field>\r\n <div mono-slider-control> the pointer target\r\n <div mono-slider-track> the rail; it holds the pieces\r\n <span mono-slider-piece mono-filled? mono-cut-start? mono-cut-end? style=\"--a;--b\">\r\n <div mono-slider-marks><span mono-slider-mark mono-active? style=\"--p\">\r\n <span mono-slider-mark-label>\r\n <div mono-slider-thumb role=\"slider\" mono-active? mono-dragging? style=\"--p\">\r\n <span mono-slider-tooltip>\r\n <div mono-message-wrap><div mono-message=\"helper|valid|invalid|warning\">\r\n\r\n GEOMETRY. `--p` / `--a` / `--b` are 0–1 positions (unitless). A thumb's CENTRE travels\r\n from half a thumb in to half a thumb short of the end — exactly where a native range\r\n thumb sits — so the slider lines up with `<mono-input type=\"range\">` under every flavor.\r\n The track is cut into pieces at every thumb: that is what lets a piece be filled or not\r\n (`fill`), and what lets `track-gap` cut the track back around each thumb (M3 style).\r\n\r\n KNOBS. Every look value resolves `--mono-slider-x` → `--mono-input-range-x` → vega,\r\n so the eight Basecoat styles and ONE (which write the input-range knobs in\r\n flavors/*.css) restyle the slider with no slider entries of their own — the\r\n \"flavor via public knobs\" pattern (filter.css). Slider-only knobs: --mono-slider-\r\n {length, track-gap, accent, mark-size, mark-color, mark-active-color, mark-label-*,\r\n tooltip-bg, tooltip-color, tooltip-radius, tooltip-font-*}.\r\n\r\n The track/thumb rules cite Basecoat; marks, tooltips, track gaps, multiple\r\n thumbs and the vertical type are EXTENSIONs.\r\n ========================================================================= */\r\n\r\nmono-slider {\r\n display: block;\r\n}\r\n\r\n[mono-slider] {\r\n /* ── palette ─────────────────────────────────────────────────────────── */\r\n --_mono-slider-text: var(--mono-slider-color, var(--foreground));\r\n --_mono-slider-muted: var(--mono-slider-muted, var(--muted-foreground));\r\n /* the fill + thumb colour: the `color` prop, a validation state outranks it */\r\n --_mono-slider-accent: var(--mono-slider-accent, var(--_mono-slider-accent-preset, var(--primary)));\r\n /* the hover / focus halo: Basecoat's ring-ring/50 (the role colour for a non-primary `color`) */\r\n --_mono-slider-ring-color: var(--mono-slider-ring-color, var(--_mono-slider-ring-preset, var(--ring)));\r\n --_mono-slider-ring-c: color-mix(in oklab, var(--_mono-slider-ring-color) var(--mono-slider-ring-alpha, var(--mono-ring-alpha, 50%)), transparent);\r\n\r\n /* ── geometry: md here, `size` multiplies ────────────────────────────── */\r\n --_mono-slider-scale: 1;\r\n --_mono-slider-track-h: round(nearest, calc(var(--mono-slider-track-height, var(--mono-input-range-track-height, 0.375rem)) * var(--_mono-slider-scale)), 1px);\r\n /* along = the thumb's size in the direction of travel, across = the other one */\r\n --_mono-slider-across: round(nearest, calc(var(--mono-slider-thumb-size, var(--mono-input-range-thumb-size, 1rem)) * var(--_mono-slider-scale)), 1px);\r\n --_mono-slider-along: round(nearest, calc(var(--mono-slider-thumb-width, var(--mono-input-range-thumb-width, var(--mono-slider-thumb-size, var(--mono-input-range-thumb-size, 1rem)))) * var(--_mono-slider-scale)), 1px);\r\n --_mono-slider-box: max(round(nearest, calc(var(--mono-slider-height, var(--mono-input-range-height, 1.25rem)) * var(--_mono-slider-scale)), 1px), var(--_mono-slider-across));\r\n --_mono-slider-track-radius: var(--mono-slider-track-radius, var(--mono-input-range-track-radius, 9999px));\r\n --_mono-slider-track-bg: var(--mono-slider-track-bg, var(--mono-input-range-track-bg, var(--muted)));\r\n --_mono-slider-fill: var(--mono-slider-fill, var(--mono-input-range-fill, currentColor));\r\n --_mono-slider-cut: calc(var(--_mono-slider-track-gap, 0px) + var(--_mono-slider-along) / 2);\r\n\r\n /* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3 (the input range's gap) */\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--mono-slider-gap, var(--mono-input-range-gap, var(--mono-input-gap, calc(var(--mono-spacing) * 3))));\r\n width: 100%;\r\n font-family: inherit;\r\n color: var(--_mono-slider-text);\r\n}\r\n\r\n[mono-slider],\r\n:where([mono-slider]) *,\r\n:where([mono-slider]) *::before,\r\n:where([mono-slider]) *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n/* the shadow build renders every region and marks an empty one */\r\n[mono-slider] [mono-empty] {\r\n display: none;\r\n}\r\n\r\n[mono-slider][mono-size=\"xs\"] { --_mono-slider-scale: 0.75; }\r\n[mono-slider][mono-size=\"sm\"] { --_mono-slider-scale: 0.875; }\r\n[mono-slider][mono-size=\"lg\"] { --_mono-slider-scale: 1.125; }\r\n[mono-slider][mono-size=\"xl\"] { --_mono-slider-scale: 1.25; }\r\n[mono-slider][mono-size=\"xxl\"] { --_mono-slider-scale: 1.375; }\r\n\r\n/* ── colours: the accent + halo per role (primary is Basecoat's --primary / --ring) ── */\r\n[mono-slider][mono-color=\"secondary\"] { --_mono-slider-accent-preset: var(--muted-foreground); --_mono-slider-ring-preset: var(--muted-foreground); }\r\n[mono-slider][mono-color=\"success\"] { --_mono-slider-accent-preset: var(--success); --_mono-slider-ring-preset: var(--success); }\r\n[mono-slider][mono-color=\"danger\"] { --_mono-slider-accent-preset: var(--destructive); --_mono-slider-ring-preset: var(--destructive); }\r\n[mono-slider][mono-color=\"warning\"] { --_mono-slider-accent-preset: var(--warning); --_mono-slider-ring-preset: var(--warning); }\r\n[mono-slider][mono-color=\"info\"] { --_mono-slider-accent-preset: var(--info); --_mono-slider-ring-preset: var(--info); }\r\n[mono-slider][mono-color=\"teal\"] { --_mono-slider-accent-preset: var(--teal); --_mono-slider-ring-preset: var(--teal); }\r\n[mono-slider][mono-color=\"purple\"] { --_mono-slider-accent-preset: var(--purple); --_mono-slider-ring-preset: var(--purple); }\r\n[mono-slider][mono-color=\"neutral\"] { --_mono-slider-accent-preset: var(--neutral); --_mono-slider-ring-preset: var(--neutral); }\r\n[mono-slider][mono-color=\"dark\"] { --_mono-slider-accent-preset: var(--dark); --_mono-slider-ring-preset: var(--dark); }\r\n\r\n/* a validation state recolours the fill + thumb (after the colours, so it wins) */\r\n[mono-slider][mono-validation-state=\"invalid\"] { --_mono-slider-accent-preset: var(--destructive); --_mono-slider-ring-preset: var(--destructive); }\r\n[mono-slider][mono-validation-state=\"valid\"] { --_mono-slider-accent-preset: var(--success); --_mono-slider-ring-preset: var(--success); }\r\n[mono-slider][mono-validation-state=\"warning\"] { --_mono-slider-accent-preset: var(--warning); --_mono-slider-ring-preset: var(--warning); }\r\n\r\n/* =========================================\r\n Label row — the label, and the value at its end (EJI ONE `.eji-range__row`)\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > label, .label — flex items-center gap-2 text-sm\r\n leading-none font-medium select-none; the row spans so the value can end it */\r\n:where([mono-slider]) > [mono-label-row] {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: calc(var(--mono-spacing) * 4);\r\n min-width: 0;\r\n}\r\n\r\n:where([mono-slider]) [mono-label] {\r\n display: flex;\r\n align-items: center;\r\n min-width: 0;\r\n gap: var(--mono-input-label-gap, calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-slider-label-font-size, var(--mono-input-range-label-font-size, var(--mono-input-label-font-size, var(--mono-text-sm))));\r\n line-height: var(--mono-slider-label-line-height, var(--mono-input-range-label-line-height, var(--mono-input-label-line-height, 1)));\r\n font-weight: var(--mono-slider-label-font-weight, var(--mono-input-range-label-font-weight, var(--mono-input-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)))));\r\n color: var(--mono-slider-label-color, var(--mono-input-range-label-color, var(--_mono-slider-text)));\r\n user-select: none;\r\n}\r\n\r\n:where([mono-slider]) [mono-required-mark] {\r\n color: var(--destructive);\r\n}\r\n\r\n/* the label ⓘ (`tooltip` prop) — same as mono-input's */\r\n:where([mono-slider]) [mono-label] > [mono-label-tooltip] {\r\n display: inline-flex;\r\n flex: none;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: var(--mono-input-label-tooltip-size, 1.1em);\r\n color: var(--mono-input-label-tooltip-color, currentColor);\r\n opacity: var(--mono-input-label-tooltip-opacity, 0.6);\r\n border-radius: 9999px;\r\n cursor: help;\r\n pointer-events: auto;\r\n outline: none;\r\n transition: opacity 150ms ease;\r\n\r\n &:is(:hover, :focus-visible) {\r\n opacity: 1;\r\n }\r\n &:focus-visible {\r\n outline: 2px solid currentColor;\r\n outline-offset: 2px;\r\n }\r\n & > [mono-icon] {\r\n width: 1em;\r\n height: 1em;\r\n }\r\n}\r\n\r\n/* EXTENSION — the value readout (EJI ONE `.eji-range__val`); tabular so it does not shimmer */\r\n:where([mono-slider]) [mono-slider-value] {\r\n flex: none;\r\n font-family: var(--mono-slider-value-font-family, var(--mono-input-range-value-font-family, inherit));\r\n font-size: var(--mono-slider-value-font-size, var(--mono-input-range-value-font-size, var(--mono-slider-label-font-size, var(--mono-input-range-label-font-size, var(--mono-input-label-font-size, var(--mono-text-sm))))));\r\n font-weight: var(--mono-slider-value-font-weight, var(--mono-input-range-value-font-weight, var(--mono-font-weight-medium)));\r\n line-height: var(--mono-slider-label-line-height, var(--mono-input-range-label-line-height, var(--mono-input-label-line-height, 1)));\r\n font-variant-numeric: tabular-nums;\r\n color: var(--mono-slider-value-color, var(--mono-input-range-value-color, var(--_mono-slider-muted)));\r\n white-space: nowrap;\r\n user-select: none;\r\n}\r\n\r\n/* no label: the readout follows the control, in reserved room */\r\n:where([mono-slider]) > [mono-slider-field] > [mono-slider-value] {\r\n min-width: var(--mono-slider-value-min-width, var(--mono-input-range-value-min-width, 3ch));\r\n text-align: end;\r\n}\r\n\r\n/* =========================================\r\n Field + control\r\n ========================================= */\r\n\r\n:where([mono-slider]) > [mono-slider-field] {\r\n display: flex;\r\n align-items: center;\r\n gap: calc(var(--mono-spacing) * 3);\r\n min-width: 0;\r\n}\r\n\r\n/* basecoat@1.0.2 components/range.css .field > input[type='range'], .input[type='range'] — flex appearance-none\r\n items-center p-0 outline-none disabled:pointer-events-none disabled:opacity-50 */\r\n/* basecoat@1.0.2 styles/vega.css .field > input[type='range'], .input[type='range'] — h-5 (the box), --slider-track-height,\r\n --slider-thumb-size; mono: the box also grows to fit a taller thumb */\r\n:where([mono-slider]) [mono-slider-control] {\r\n position: relative;\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n height: var(--_mono-slider-box);\r\n color: var(--_mono-slider-accent);\r\n cursor: pointer;\r\n touch-action: none;\r\n user-select: none;\r\n -webkit-tap-highlight-color: transparent;\r\n}\r\n\r\n/* room for mark labels under the track */\r\n[mono-slider][mono-marks-labelled] [mono-slider-control] {\r\n margin-block-end: calc(var(--mono-slider-mark-label-gap, calc(var(--mono-spacing) * 1.5)) + var(--mono-slider-mark-label-line-height, 1rem));\r\n}\r\n\r\n/* =========================================\r\n Track — the rail, cut into pieces at every thumb\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css :is(.field > input[type='range'], .input[type='range'])::-webkit-slider-runnable-track — bg-muted h-1.5\r\n rounded-full (+ components/range.css: the --primary / --muted gradient stop, here one piece each) */\r\n:where([mono-slider]) [mono-slider-track] {\r\n position: absolute;\r\n inset-inline: 0;\r\n top: 50%;\r\n height: var(--_mono-slider-track-h);\r\n margin-top: calc(var(--_mono-slider-track-h) / -2);\r\n}\r\n\r\n:where([mono-slider]) [mono-slider-piece] {\r\n /* piece ends: a thumb centre, or the very end of the rail */\r\n --_x0: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--a));\r\n --_x1: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--b));\r\n --_cs: 0px;\r\n --_ce: 0px;\r\n position: absolute;\r\n inset-block: 0;\r\n inset-inline-start: calc(var(--_x0) + var(--_cs));\r\n inline-size: max(0px, calc(var(--_x1) - var(--_x0) - var(--_cs) - var(--_ce)));\r\n border-radius: var(--_mono-slider-track-radius);\r\n background: var(--_mono-slider-track-bg);\r\n}\r\n:where([mono-slider]) [mono-slider-piece]:not([mono-cut-start]) { --_x0: 0%; }\r\n:where([mono-slider]) [mono-slider-piece]:not([mono-cut-end]) { --_x1: 100%; }\r\n:where([mono-slider]) [mono-slider-piece][mono-filled] {\r\n background: var(--_mono-slider-fill);\r\n}\r\n\r\n/* joins at a thumb are square unless `track-gap` opens them (then each piece is a\r\n whole rounded bar, Material 3's look) */\r\n[mono-slider]:not([mono-track-gap]) [mono-slider-piece][mono-cut-start] {\r\n border-start-start-radius: 0;\r\n border-end-start-radius: 0;\r\n}\r\n[mono-slider]:not([mono-track-gap]) [mono-slider-piece][mono-cut-end] {\r\n border-start-end-radius: 0;\r\n border-end-end-radius: 0;\r\n}\r\n[mono-slider][mono-track-gap] [mono-slider-piece][mono-cut-start] { --_cs: var(--_mono-slider-cut); }\r\n[mono-slider][mono-track-gap] [mono-slider-piece][mono-cut-end] { --_ce: var(--_mono-slider-cut); }\r\n\r\n/* =========================================\r\n Thumb\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css :is(.field > input[type='range'], .input[type='range'])::-webkit-slider-thumb — border-primary ring-ring/50\r\n size-4 rounded-full border bg-white shadow-sm transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4;\r\n mono: the three box-shadow slots of mono-input's range — a resting ring, the halo, the shadow */\r\n:where([mono-slider]) [mono-slider-thumb] {\r\n --_halo: 0 0 #0000;\r\n position: absolute;\r\n z-index: 1;\r\n top: 50%;\r\n inset-inline-start: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--p));\r\n width: var(--_mono-slider-along);\r\n height: var(--_mono-slider-across);\r\n margin-top: calc(var(--_mono-slider-across) / -2);\r\n margin-inline-start: calc(var(--_mono-slider-along) / -2);\r\n border: var(--mono-slider-thumb-border-width, var(--mono-input-range-thumb-border-width, 1px)) solid\r\n var(--mono-slider-thumb-border-color, var(--mono-input-range-thumb-border-color, currentColor));\r\n border-radius: var(--mono-slider-thumb-radius, var(--mono-input-range-thumb-radius, 9999px));\r\n background: var(--mono-slider-thumb-bg, var(--mono-input-range-thumb-bg, #fff));\r\n box-shadow:\r\n 0 0 0 var(--mono-slider-thumb-ring-width, var(--mono-input-range-thumb-ring-width, 0px))\r\n var(--mono-slider-thumb-ring-color, var(--mono-input-range-thumb-ring-color, transparent)),\r\n var(--_halo),\r\n var(--mono-slider-thumb-shadow, var(--mono-input-range-thumb-shadow, var(--mono-shadow-sm)));\r\n outline: none;\r\n transition-property: color, box-shadow, background-color, border-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n/* the last-touched thumb rides on top, so a stack lifts the one being moved */\r\n:where([mono-slider]) [mono-slider-thumb][mono-active] {\r\n z-index: 2;\r\n}\r\n\r\n/* focus-visible:ring-4 focus-visible:outline-hidden; a drag keeps the halo on */\r\n:where([mono-slider]) [mono-slider-thumb]:is(:focus-visible, [mono-dragging]) {\r\n --_halo: 0 0 0 var(--mono-slider-ring-width, var(--mono-input-range-ring-width, 4px)) var(--_mono-slider-ring-c);\r\n}\r\n\r\n/* hover:ring-4 */\r\n@media (hover: hover) {\r\n [mono-slider]:not([mono-disabled], [mono-readonly]) [mono-slider-thumb]:hover:not(:focus-visible, [mono-dragging]) {\r\n --_halo: 0 0 0 var(--mono-slider-hover-ring-width, var(--mono-input-range-hover-ring-width, var(--mono-slider-ring-width, var(--mono-input-range-ring-width, 4px)))) var(--_mono-slider-ring-c);\r\n }\r\n}\r\n\r\n/* =========================================\r\n EXTENSION — marks\r\n ========================================= */\r\n\r\n:where([mono-slider]) [mono-slider-marks] {\r\n position: absolute;\r\n inset: 0;\r\n pointer-events: none;\r\n}\r\n\r\n:where([mono-slider]) [mono-slider-mark] {\r\n --_size: var(--mono-slider-mark-size, max(4px, calc(var(--_mono-slider-track-h) * 0.5)));\r\n position: absolute;\r\n top: 50%;\r\n inset-inline-start: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--p));\r\n width: var(--_size);\r\n height: var(--_size);\r\n margin-top: calc(var(--_size) / -2);\r\n margin-inline-start: calc(var(--_size) / -2);\r\n border-radius: 9999px;\r\n background: var(--mono-slider-mark-color, color-mix(in oklab, var(--_mono-slider-muted) 55%, transparent));\r\n}\r\n\r\n:where([mono-slider]) [mono-slider-mark][mono-active] {\r\n background: var(--mono-slider-mark-active-color, color-mix(in oklab, var(--primary-foreground) 85%, transparent));\r\n}\r\n\r\n:where([mono-slider]) [mono-slider-mark-label] {\r\n position: absolute;\r\n top: calc(var(--_mono-slider-box) / 2 + var(--mono-slider-mark-label-gap, calc(var(--mono-spacing) * 1.5)));\r\n left: 50%;\r\n translate: -50% 0;\r\n font-size: var(--mono-slider-mark-label-font-size, var(--mono-text-xs));\r\n line-height: var(--mono-slider-mark-label-line-height, 1rem);\r\n font-weight: var(--mono-slider-mark-label-font-weight, var(--mono-font-weight-normal));\r\n color: var(--mono-slider-mark-label-color, var(--_mono-slider-muted));\r\n white-space: nowrap;\r\n}\r\n\r\n/* =========================================\r\n EXTENSION — the value bubble on each thumb (shadcn's tooltip: bg-foreground text-background)\r\n ========================================= */\r\n\r\n:where([mono-slider]) [mono-slider-tooltip] {\r\n position: absolute;\r\n left: 50%;\r\n bottom: calc(100% + var(--mono-slider-tooltip-offset, calc(var(--mono-spacing) * 2)));\r\n translate: -50% 0;\r\n padding: calc(var(--mono-spacing) * 0.5) calc(var(--mono-spacing) * 2);\r\n border-radius: var(--mono-slider-tooltip-radius, var(--mono-radius-md));\r\n background: var(--mono-slider-tooltip-bg, var(--foreground));\r\n color: var(--mono-slider-tooltip-color, var(--background));\r\n font-family: var(--mono-slider-tooltip-font-family, inherit);\r\n font-size: var(--mono-slider-tooltip-font-size, var(--mono-text-xs));\r\n line-height: var(--mono-slider-tooltip-line-height, 1rem);\r\n font-weight: var(--mono-slider-tooltip-font-weight, var(--mono-font-weight-medium));\r\n font-variant-numeric: tabular-nums;\r\n white-space: nowrap;\r\n pointer-events: none;\r\n opacity: 0;\r\n visibility: hidden;\r\n transition: opacity var(--mono-duration) var(--mono-ease), visibility var(--mono-duration);\r\n\r\n /* the arrow */\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n top: 100%;\r\n left: 50%;\r\n width: 0.5rem;\r\n height: 0.25rem;\r\n translate: -50% 0;\r\n background: inherit;\r\n clip-path: polygon(0 0, 100% 0, 50% 100%);\r\n }\r\n}\r\n\r\n/* `value-tooltip=\"always\"`: the bubbles are permanent, so the label row must not sit under them */\r\n[mono-slider][mono-value-tooltip=\"always\"]:not([mono-type=\"vertical\"]) [mono-slider-control] {\r\n margin-block-start: max(0px, calc(var(--mono-slider-tooltip-line-height, 1rem) + var(--mono-spacing) * 3 + var(--mono-slider-tooltip-offset, calc(var(--mono-spacing) * 2)) - (var(--_mono-slider-box) - var(--_mono-slider-across)) / 2));\r\n}\r\n\r\n/* `value-tooltip=\"auto\"`: on focus, while dragging, and on hover */\r\n:where([mono-slider]) [mono-slider-thumb]:is(:focus-visible, [mono-dragging]) > [mono-slider-tooltip],\r\n[mono-slider][mono-value-tooltip=\"always\"] [mono-slider-tooltip] {\r\n opacity: 1;\r\n visibility: visible;\r\n}\r\n@media (hover: hover) {\r\n [mono-slider]:not([mono-disabled]) [mono-slider-thumb]:hover > [mono-slider-tooltip] {\r\n opacity: 1;\r\n visibility: visible;\r\n }\r\n}\r\n\r\n/* =========================================\r\n EXTENSION — type=\"vertical\": the same parts with the axes swapped, min at the bottom\r\n ========================================= */\r\n\r\n[mono-slider][mono-type=\"vertical\"] {\r\n width: auto;\r\n}\r\n\r\n[mono-slider][mono-type=\"vertical\"] > [mono-slider-field] {\r\n flex-direction: column;\r\n align-items: flex-start;\r\n}\r\n\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-control] {\r\n flex: none;\r\n width: var(--_mono-slider-box);\r\n height: var(--_mono-slider-length, var(--mono-slider-length, 200px));\r\n}\r\n\r\n[mono-slider][mono-type=\"vertical\"][mono-marks-labelled] [mono-slider-control] {\r\n margin-block-end: 0;\r\n}\r\n\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-track] {\r\n inset-inline: auto;\r\n inset-block: 0;\r\n left: 50%;\r\n top: 0;\r\n width: var(--_mono-slider-track-h);\r\n height: auto;\r\n margin-top: 0;\r\n margin-left: calc(var(--_mono-slider-track-h) / -2);\r\n}\r\n\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-piece] {\r\n --_x0: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--a));\r\n --_x1: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--b));\r\n inset-block: auto;\r\n inset-inline: 0;\r\n bottom: calc(var(--_x0) + var(--_cs));\r\n inline-size: auto;\r\n block-size: max(0px, calc(var(--_x1) - var(--_x0) - var(--_cs) - var(--_ce)));\r\n}\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-piece]:not([mono-cut-start]) { --_x0: 0%; }\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-piece]:not([mono-cut-end]) { --_x1: 100%; }\r\n/* vertical joins: the piece's START is its bottom, its END its top */\r\n[mono-slider][mono-type=\"vertical\"]:not([mono-track-gap]) [mono-slider-piece][mono-cut-start] {\r\n border-radius: var(--_mono-slider-track-radius);\r\n border-bottom-left-radius: 0;\r\n border-bottom-right-radius: 0;\r\n}\r\n[mono-slider][mono-type=\"vertical\"]:not([mono-track-gap]) [mono-slider-piece][mono-cut-end] {\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n}\r\n[mono-slider][mono-type=\"vertical\"]:not([mono-track-gap]) [mono-slider-piece][mono-cut-start][mono-cut-end] {\r\n border-radius: 0;\r\n}\r\n\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-thumb],\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-mark] {\r\n /* the logical reset goes FIRST: written after `left` it would reset it too */\r\n inset-inline-start: auto;\r\n top: auto;\r\n left: 50%;\r\n bottom: calc(var(--_mono-slider-along) / 2 + (100% - var(--_mono-slider-along)) * var(--p));\r\n margin: 0;\r\n}\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-thumb] {\r\n width: var(--_mono-slider-across);\r\n height: var(--_mono-slider-along);\r\n margin-left: calc(var(--_mono-slider-across) / -2);\r\n margin-bottom: calc(var(--_mono-slider-along) / -2);\r\n}\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-mark] {\r\n margin-left: calc(var(--_size) / -2);\r\n margin-bottom: calc(var(--_size) / -2);\r\n}\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-mark-label] {\r\n top: 50%;\r\n left: calc(var(--_mono-slider-box) / 2 + var(--mono-slider-mark-label-gap, calc(var(--mono-spacing) * 2)));\r\n translate: 0 -50%;\r\n}\r\n[mono-slider][mono-type=\"vertical\"] [mono-slider-tooltip] {\r\n left: auto;\r\n right: calc(100% + var(--mono-slider-tooltip-offset, calc(var(--mono-spacing) * 2)));\r\n bottom: 50%;\r\n translate: 0 50%;\r\n\r\n &::after {\r\n top: 50%;\r\n left: 100%;\r\n width: 0.25rem;\r\n height: 0.5rem;\r\n translate: 0 -50%;\r\n clip-path: polygon(0 0, 100% 50%, 0 100%);\r\n }\r\n}\r\n\r\n/* =========================================\r\n States\r\n ========================================= */\r\n\r\n/* in-data-[disabled=true]:opacity-50 */\r\n[mono-slider][mono-disabled] > :is([mono-label-row], [mono-slider-field]) {\r\n opacity: 0.5;\r\n}\r\n[mono-slider][mono-disabled] [mono-slider-control] {\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n}\r\n\r\n[mono-slider][mono-readonly] [mono-slider-control] {\r\n cursor: default;\r\n}\r\n\r\n[mono-slider][mono-dragging] [mono-slider-control] {\r\n cursor: grabbing;\r\n}\r\n\r\n/* =========================================\r\n Message — helper / validation text (mono-input's)\r\n ========================================= */\r\n\r\n:where([mono-slider]) > [mono-message-wrap]:not(:has([mono-message]:not([mono-empty]))) {\r\n display: none;\r\n}\r\n\r\n:where([mono-slider]) [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 color: var(--_mono-slider-muted);\r\n}\r\n:where([mono-slider]) [mono-message=\"invalid\"] { color: var(--destructive); }\r\n:where([mono-slider]) [mono-message=\"valid\"] { color: var(--success); }\r\n:where([mono-slider]) [mono-message=\"warning\"] { color: var(--warning); }\r\n\r\n[mono-slider][mono-validation-state=\"invalid\"] [mono-label] {\r\n color: var(--destructive);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n :where([mono-slider]) :is([mono-slider-thumb], [mono-slider-tooltip]) {\r\n transition: none;\r\n }\r\n}\r\n";
1016
1015
 
1017
1016
  //#endregion
1018
1017
  //#region src/components/slider/mono-slider.shadow.ts
@@ -1,6 +1,6 @@
1
- import { a as __decorate, c as defineHybridPropAlias, f as customElement, i as withShadowUtilityStyles, l as defineHybridPropAliases, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration } from "../../hydration-flush-DHrl4_KK.js";
1
+ import { a as __decorate, c as defineHybridPropAlias, f as customElement, i as withShadowUtilityStyles, l as defineHybridPropAliases, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration } from "../../hydration-flush-BaE9gN3C.js";
2
2
  import { t as dispatchMonoEvent } from "../../mono-event-BPku9HpS.js";
3
- import { t as MonoFormControlCore } from "../../form-control-core-CIdMLXMo.js";
3
+ import { t as MonoFormControlCore } from "../../form-control-core-BbiACMtL.js";
4
4
  import { LitElement, html, isServer, nothing, unsafeCSS } from "lit";
5
5
  import { property, state } from "lit/decorators.js";
6
6
  import { ifDefined } from "lit/directives/if-defined.js";
@@ -1,17 +1,16 @@
1
- import { _ as monoPendingActive, a as __decorate, c as defineHybridPropAlias, f as customElement, l as defineHybridPropAliases, m as monoApplyPhantomOptions, n as adoptIconStyles, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration, u as numberStringConverter, v as monoPendingGrace, y as monoPhantomOptions } from "../../hydration-flush-DHrl4_KK.js";
1
+ import { C as monoPendingGrace, S as monoPendingActive, _ as buildSizeStyle, a as __decorate, c as defineHybridPropAlias, f as customElement, g as cssLengthToPx, h as ColumnAutoSize, l as defineHybridPropAliases, m as startMonoSizeAttributes, n as adoptIconStyles, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration, u as numberStringConverter, w as monoPhantomOptions, y as monoApplyPhantomOptions } from "../../hydration-flush-BaE9gN3C.js";
2
2
  import { t as dispatchMonoEvent } from "../../mono-event-BPku9HpS.js";
3
3
  import { t as isIconifyClass } from "../../icon-BM9N-jOt.js";
4
4
  import { n as cssPart } from "../../css-class-B6Tc_MAx.js";
5
- import { t as buildSizeStyle } from "../../css-size-DWAPgQdT.js";
6
5
  import { n as detachEventHandlers, t as applyProps } from "../../element-props-xvw0EB7H.js";
7
- import { t as input_css_raw_default } from "../../input.css_raw-CQu2fAsU.js";
8
- import { t as PopupPortalController } from "../../popup-portal-C8ttHDRX.js";
6
+ import { t as input_css_raw_default } from "../../input.css_raw-Br-T8RWv.js";
7
+ import { t as PopupPortalController } from "../../popup-portal-CINuVjNY.js";
9
8
  import { C as resolveSearchEntries, S as plainSearchColumns, _ as expandWildcard, b as isWildcardPattern, c as resolveErrorMessages, f as mergeSearchFields, l as setErrorMessages, n as describeError, r as errorStatus, s as normalizeError, t as DEFAULT_ERROR_MESSAGES, x as normalizeSearchExpr } from "../../normalize-error-BmLbgANw.js";
10
- import { a as seedFromRanges, i as minimize, n as buildDateTree, o as setAllChecked, r as checkState, s as setChecked, t as monoDataGrid } from "../../mono-data-grid-KDpu4d4_.js";
11
- import { n as captureLightSlots, r as placeLightSlots } from "../../light-slots-4ZCjOcBg.js";
9
+ import { a as seedFromRanges, i as minimize, n as buildDateTree, o as setAllChecked, r as checkState, s as setChecked, t as monoDataGrid } from "../../mono-data-grid-CZFjpnOD.js";
10
+ import { n as captureLightSlots, r as placeLightSlots } from "../../light-slots-_no0r2Z-.js";
12
11
  import { t as checkbox_css_raw_default } from "../../checkbox.css_raw-AYtSbUtY.js";
13
- import { a as buildGroups, c as isGroupNode, o as collectGroupPaths, s as flattenLeaves } from "../../data-source-read-i6CYSUEl.js";
14
- import { h as monoArraySource } from "../../data-source-options-Cz9fVLK8.js";
12
+ import { a as buildGroups, c as isGroupNode, o as collectGroupPaths, s as flattenLeaves } from "../../data-source-read-DTJ_Mnez.js";
13
+ import { h as monoArraySource } from "../../data-source-options-CS0w0wlO.js";
15
14
  import { LitElement, html, isServer, nothing, unsafeCSS } from "lit";
16
15
  import { property, query, state } from "lit/decorators.js";
17
16
  import { ifDefined } from "lit/directives/if-defined.js";
@@ -71,13 +70,32 @@ const MonoTableControllerCore = (superClass) => {
71
70
  _subscribe() {
72
71
  this._off?.();
73
72
  detachEventHandlers(this);
73
+ this._lastStateKey = void 0;
74
74
  this._off = this.dataGrid?.subscribe(() => {
75
+ if (this._stateUnchanged()) return;
75
76
  this._scheduleApplyProps();
76
77
  this.requestUpdate();
77
78
  });
78
79
  this._scheduleApplyProps();
79
80
  }
80
81
  /**
82
+ * What this element renders from the CONTROLLER, as a flat list — or `undefined` (the
83
+ * default) for "re-render on every notify", which is what every element did.
84
+ *
85
+ * An element that defines it skips a notify whose key equals the last one. Worth it for the
86
+ * per-row elements: every `<mono-table-checkbox>` re-rendered on every notify (a load flag, a
87
+ * summary, another row's tick), N updates for a change that moves one box. Its own props are
88
+ * unaffected — a Lit property change still updates it the normal way.
89
+ */
90
+ _stateKey() {}
91
+ _stateUnchanged() {
92
+ const key = this._stateKey();
93
+ if (!key) return false;
94
+ const last = this._lastStateKey;
95
+ this._lastStateKey = key;
96
+ return !!last && last.length === key.length && key.every((v, i) => Object.is(v, last[i]));
97
+ }
98
+ /**
81
99
  * Drive the apply from `update()` as well as `_subscribe()`.
82
100
  *
83
101
  * `mono-table-paging` and `mono-table-loading` REPLACE `_subscribe` without
@@ -1708,7 +1726,7 @@ const MonoTablePagingCore = (superClass) => {
1708
1726
  this._off?.();
1709
1727
  this._off = this.dataGrid?.subscribe(() => {
1710
1728
  this.requestUpdate();
1711
- if (this.type === "virtual-scroll") this._recomputeWindow();
1729
+ if (this.type === "virtual-scroll") this._scheduleScroll();
1712
1730
  });
1713
1731
  }
1714
1732
  _scrollActive() {
@@ -1806,8 +1824,11 @@ const MonoTablePagingCore = (superClass) => {
1806
1824
  const rh = Math.max(1, Number(this.rowHeight) || 44);
1807
1825
  const over = Math.max(0, Math.floor(Number(this.overscan) || 0));
1808
1826
  const loaded = grid.loadedCount;
1809
- let start = Math.floor(el.scrollTop / rh) - over;
1810
- let end = Math.ceil((el.scrollTop + el.clientHeight) / rh) + over;
1827
+ const first = Math.floor(el.scrollTop / rh);
1828
+ const last = Math.ceil((el.scrollTop + el.clientHeight) / rh);
1829
+ const stride = Math.max(1, over);
1830
+ let start = Math.floor(first / stride) * stride - over;
1831
+ let end = Math.ceil(last / stride) * stride + over;
1811
1832
  start = Math.max(0, start);
1812
1833
  end = Math.min(loaded, Math.max(start, end));
1813
1834
  const padTop = start * rh;
@@ -2247,6 +2268,8 @@ const MonoTableThCore = (superClass) => {
2247
2268
  this._tree = [];
2248
2269
  this._expanded = /* @__PURE__ */ new Set();
2249
2270
  this._exclusiveWarned = false;
2271
+ this._lastLoaded = 0;
2272
+ this._sizeSig = [];
2250
2273
  this._seededSort = false;
2251
2274
  this._filterOpen = false;
2252
2275
  this._values = [];
@@ -2255,7 +2278,11 @@ const MonoTableThCore = (superClass) => {
2255
2278
  this._valuesError = false;
2256
2279
  this._search = "";
2257
2280
  this._fromIcon = false;
2258
- defineHybridPropAliases(this, ["editableTrigger"]);
2281
+ defineHybridPropAliases(this, [
2282
+ "editableTrigger",
2283
+ "minWidth",
2284
+ "maxWidth"
2285
+ ]);
2259
2286
  }
2260
2287
  /** The sort config as an object: `true` → `{}`, `false` → `undefined`. */
2261
2288
  get _sortObj() {
@@ -2267,9 +2294,12 @@ const MonoTableThCore = (superClass) => {
2267
2294
  connectedCallback() {
2268
2295
  super.connectedCallback();
2269
2296
  this._register();
2297
+ if (!isServer) startMonoSizeAttributes();
2270
2298
  }
2271
2299
  disconnectedCallback() {
2272
2300
  this.dataGrid?.unregisterColumn(this);
2301
+ this._autoSize?.stop();
2302
+ this._sizeSig = [];
2273
2303
  super.disconnectedCallback();
2274
2304
  }
2275
2305
  willUpdate(changed) {
@@ -2281,6 +2311,47 @@ const MonoTableThCore = (superClass) => {
2281
2311
  this.dataGrid.registerColumn(this);
2282
2312
  this._seedSort();
2283
2313
  }
2314
+ /**
2315
+ * `width="auto"` → hand the column to the auto-sizer (re-run on every update: each controller
2316
+ * notify lands here). A fixed width → written as before, and an auto-sizer left over from an
2317
+ * earlier `'auto'` is stopped with its px cleared. The bounds go onto the cell either way —
2318
+ * the auto-sizer clamps with them, an auto-layout table honours them.
2319
+ */
2320
+ _syncWidth(cell) {
2321
+ if (String(this.width ?? "").trim().toLowerCase() === "auto") {
2322
+ const fresh = !this._autoSize;
2323
+ const sizer = this._autoSize ??= new ColumnAutoSize(this);
2324
+ const grid = this.dataGrid;
2325
+ const loaded = grid?.loadedCount ?? 0;
2326
+ if (loaded < this._lastLoaded) sizer.resetFloor();
2327
+ this._lastLoaded = loaded;
2328
+ const sig = [
2329
+ this.minWidth,
2330
+ this.maxWidth,
2331
+ grid?.scrollMode,
2332
+ loaded,
2333
+ this.caption,
2334
+ cell.closest("table")
2335
+ ];
2336
+ const moved = sig.length !== this._sizeSig.length || sig.some((v, i) => !Object.is(v, this._sizeSig[i]));
2337
+ if (fresh || moved) {
2338
+ this._sizeSig = sig;
2339
+ sizer.min = cssLengthToPx(this.minWidth ?? null, cell);
2340
+ sizer.max = cssLengthToPx(this.maxWidth ?? null, cell);
2341
+ sizer.growOnly = grid?.scrollMode === "virtual";
2342
+ sizer.schedule();
2343
+ }
2344
+ } else {
2345
+ if (this._autoSize) {
2346
+ this._autoSize.stop(true);
2347
+ this._autoSize = void 0;
2348
+ this._sizeSig = [];
2349
+ }
2350
+ if (this.width != null && this.width !== "") cell.style.width = toCssSize(this.width);
2351
+ }
2352
+ cell.style.minWidth = this.minWidth != null && this.minWidth !== "" ? toCssSize(this.minWidth) : "";
2353
+ cell.style.maxWidth = this.maxWidth != null && this.maxWidth !== "" ? toCssSize(this.maxWidth) : "";
2354
+ }
2284
2355
  /** Apply `sort.order` once, unless THIS column is already sorted (don't fight a user sort). */
2285
2356
  _seedSort() {
2286
2357
  if (this._seededSort) return;
@@ -2297,7 +2368,7 @@ const MonoTableThCore = (superClass) => {
2297
2368
  const cell = this.closest("th, td");
2298
2369
  if (cell) {
2299
2370
  cell.setAttribute("aria-sort", ariaSort(this._current));
2300
- if (this.width != null && this.width !== "") cell.style.width = toCssSize(this.width);
2371
+ this._syncWidth(cell);
2301
2372
  if (this.height != null && this.height !== "") cell.style.height = toCssSize(this.height);
2302
2373
  cell.style.textAlign = this.align ?? "";
2303
2374
  }
@@ -2686,8 +2757,7 @@ const MonoTableThCore = (superClass) => {
2686
2757
  * the table body — the checkbox still carries the RAW value, so
2687
2758
  * `setColumnFilter` keeps matching the real data.
2688
2759
  */
2689
- _display(value) {
2690
- const map = this.dataGrid?.columnMap?.(this.field);
2760
+ _display(value, map = this.dataGrid?.columnMap?.(this.field)) {
2691
2761
  if (map) try {
2692
2762
  const mapped = map(value, { [this.field]: value }, 0);
2693
2763
  if (mapped != null && mapped !== "") return String(mapped);
@@ -2707,7 +2777,8 @@ const MonoTableThCore = (superClass) => {
2707
2777
  _filteredValues() {
2708
2778
  const q = this._search.trim().toLowerCase();
2709
2779
  if (!q) return this._values;
2710
- return this._values.filter((v) => this._display(v.value).toLowerCase().includes(q));
2780
+ const map = this.dataGrid?.columnMap?.(this.field);
2781
+ return this._values.filter((v) => this._display(v.value, map).toLowerCase().includes(q));
2711
2782
  }
2712
2783
  _toggleValue(key, on) {
2713
2784
  const next = new Set(this._checked);
@@ -2826,10 +2897,12 @@ const MonoTableThCore = (superClass) => {
2826
2897
  `;
2827
2898
  }
2828
2899
  _renderFilterPanel() {
2829
- const list = this._filteredValues();
2900
+ const open = this._filterOpen;
2901
+ const list = open ? this._filteredValues() : [];
2902
+ const map = open ? this.dataGrid?.columnMap?.(this.field) : void 0;
2830
2903
  const allChecked = list.length > 0 && list.every((v) => this._checked.has(String(v.value)));
2831
2904
  const multi = this._filterMulti;
2832
- const filteredColumns = this.dataGrid?.filteredColumns?.() ?? [];
2905
+ const filteredColumns = open ? this.dataGrid?.filteredColumns?.() ?? [] : [];
2833
2906
  const otherFiltered = filteredColumns.filter((f) => f !== this.field).length;
2834
2907
  const clearAllCount = otherFiltered + (filteredColumns.includes(this.field) ? 1 : 0);
2835
2908
  return html`
@@ -2853,7 +2926,7 @@ const MonoTableThCore = (superClass) => {
2853
2926
  </div>
2854
2927
  `}
2855
2928
  <div class="mono-th-filter-list" mono-th-filter-list>
2856
- ${this._valuesLoading ? html`<div class="mono-th-filter-msg" mono-th-filter-msg><span class="mono-th-filter-spin" mono-th-filter-spin></span>Loading…</div>` : this._valuesError ? this._renderMessage("Failed to load values.") : this._hf.date ? this._tree.length === 0 ? this._renderMessage("No values.") : this._renderDateTree() : list.length === 0 ? this._renderMessage("No values.") : html`
2929
+ ${!open ? nothing : this._valuesLoading ? html`<div class="mono-th-filter-msg" mono-th-filter-msg><span class="mono-th-filter-spin" mono-th-filter-spin></span>Loading…</div>` : this._valuesError ? this._renderMessage("Failed to load values.") : this._hf.date ? this._tree.length === 0 ? this._renderMessage("No values.") : this._renderDateTree() : list.length === 0 ? this._renderMessage("No values.") : html`
2857
2930
  <label class="mono-th-check mono-th-check-all" mono-th-check mono-th-check-all>
2858
2931
  <input
2859
2932
  type="checkbox"
@@ -2874,7 +2947,7 @@ const MonoTableThCore = (superClass) => {
2874
2947
  @change=${(e) => this._toggleValue(key, e.target.checked)}
2875
2948
  />
2876
2949
  <span class="mono-th-check-box" mono-th-check-box></span>
2877
- <span class="mono-th-check-label" mono-th-check-label>${this._display(v.value)}</span>
2950
+ <span class="mono-th-check-label" mono-th-check-label>${this._display(v.value, map)}</span>
2878
2951
  <span class="mono-th-check-count" mono-th-check-count>${v.count}</span>
2879
2952
  </label>
2880
2953
  `;
@@ -2937,6 +3010,8 @@ const MonoTableThCore = (superClass) => {
2937
3010
  __decorate([state()], MonoTableThCoreClass.prototype, "_tree", void 0);
2938
3011
  __decorate([state()], MonoTableThCoreClass.prototype, "_expanded", void 0);
2939
3012
  __decorate([property()], MonoTableThCoreClass.prototype, "width", void 0);
3013
+ __decorate([property({ attribute: "min-width" })], MonoTableThCoreClass.prototype, "minWidth", void 0);
3014
+ __decorate([property({ attribute: "max-width" })], MonoTableThCoreClass.prototype, "maxWidth", void 0);
2940
3015
  __decorate([property({ reflect: true })], MonoTableThCoreClass.prototype, "align", void 0);
2941
3016
  __decorate([property()], MonoTableThCoreClass.prototype, "height", void 0);
2942
3017
  __decorate([state()], MonoTableThCoreClass.prototype, "_filterOpen", void 0);
@@ -4600,6 +4675,24 @@ const MonoTableCheckboxCore = (superClass) => {
4600
4675
  if (this._checked) row?.setAttribute("mono-selected", "");
4601
4676
  else row?.removeAttribute("mono-selected");
4602
4677
  }
4678
+ /**
4679
+ * All this box draws from the controller: ticked, mixed (select-all), and the drain's
4680
+ * `pending`. A notify that moves none of them — another row's tick, a load flag, a summary —
4681
+ * no longer re-renders every row's checkbox (see the base's `_stateKey`).
4682
+ */
4683
+ _stateKey() {
4684
+ return this.type === "all" ? [
4685
+ this.type,
4686
+ this._checked,
4687
+ this._indeterminate,
4688
+ this._pending
4689
+ ] : [
4690
+ this.type,
4691
+ this._checked,
4692
+ this._pending,
4693
+ this.item
4694
+ ];
4695
+ }
4603
4696
  /** Whether this box is ticked right now. */
4604
4697
  get _checked() {
4605
4698
  const check = this.dataGrid?.check?.();
@@ -1,4 +1,4 @@
1
- import { a as __decorate, f as customElement, i as withShadowUtilityStyles, l as defineHybridPropAliases, o as arrayHasChanged, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration } from "../../hydration-flush-DHrl4_KK.js";
1
+ import { a as __decorate, f as customElement, i as withShadowUtilityStyles, l as defineHybridPropAliases, o as arrayHasChanged, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration } from "../../hydration-flush-BaE9gN3C.js";
2
2
  import { t as dispatchMonoEvent } from "../../mono-event-BPku9HpS.js";
3
3
  import { LitElement, html, isServer, nothing, unsafeCSS } from "lit";
4
4
  import { ref } from "lit/directives/ref.js";