@mono-lit/helper 0.0.2 → 0.0.4
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.
- package/dist/{breakpoints-CAbhDUht.js → breakpoints-DllybT82.js} +7 -5
- package/dist/checkbox.css_raw-AYtSbUtY.js +5 -0
- package/dist/{chip-limits-BMoO31JM.js → chip-limits-CFABydIL.js} +5 -3
- package/dist/{chip-strip-Cw3gyz0q.js → chip-strip-bNfLn52Z.js} +5 -3
- package/dist/chip.css_raw-ChfRSHLO.js +5 -0
- package/dist/{color-DHYrfXsX.js → color-CEYYtRX-.js} +8 -7
- package/dist/{css-class-BRKRzHx-.js → css-class-B6Tc_MAx.js} +2 -1
- package/dist/{css-size-DhHSVZJK.js → css-size-DWAPgQdT.js} +2 -1
- package/dist/{data-source-controller-Dbb4fd8I.js → data-source-controller-Cf_sMxEh.js} +4 -2
- package/dist/{data-source-controller-B_rgHCjw.js → data-source-controller-Dx6IQ2CN.js} +4 -2
- package/dist/{data-source-options-CP-X62Pa.js → data-source-options-Bk-UoaZV.js} +15 -10
- package/dist/{data-source-options-Jqj7LU3Z.js → data-source-options-QjuI73g8.js} +17 -12
- package/dist/{data-source-read-B4DGp6UQ.js → data-source-read-Cuqw3LcP.js} +7 -4
- package/dist/{data-source-read-DL88aH8t.js → data-source-read-FxqzQkk2.js} +8 -5
- package/dist/{decorate-DEXtNagw.js → decorate-DbYFpi8R.js} +7 -5
- package/dist/{element-props-CLB6yvbm.js → element-props-xvw0EB7H.js} +4 -3
- package/dist/{esm-Ptok4SQZ.js → esm-D0We7ndD.js} +48 -44
- package/dist/{excel-DopRbEMK.js → excel-BXzr3uI1.js} +192 -16
- package/dist/{excel-CY6zGkcx.js → excel-DtRpxmxs.js} +27 -16
- package/dist/{export-BiGVyxt6.js → export-B91P6J1y.js} +104 -18
- package/dist/export.js +103 -18
- package/dist/{field-icons-DELrSdqJ.js → field-icons-FmyBWa0g.js} +3 -1
- package/dist/{field-path-C92eGLg3.js → field-path-BabiMrrA.js} +3 -2
- package/dist/{filter-builder-CE4zE0V5.js → filter-builder-B6Y2mmbM.js} +7 -4
- package/dist/{filter-builder-Bke3qOgJ.js → filter-builder-C0T3pMx2.js} +7 -4
- package/dist/{filter-eval-DIfU2EAn.js → filter-eval-ChDSaAUH.js} +7 -5
- package/dist/{filter-odata-C1vSGZaY.js → filter-odata-Bi27XUpQ.js} +9 -6
- package/dist/{form-control-core-B8d7k6vk.js → form-control-core-CIdMLXMo.js} +9 -6
- package/dist/{form-control-core-eeRr0zLU.js → form-control-core-CRZPZ1ru.js} +9 -6
- package/dist/hydration-flush-DHrl4_KK.js +1014 -0
- package/dist/{icon-CJkTlmTb.js → icon-BM9N-jOt.js} +5 -2
- package/dist/{icon-dVhYJUIH.js → icon-ClxnYhBG.js} +4 -2
- package/dist/{import-BgJdkwBI.js → import-Dc4eXC02.js} +22 -16
- package/dist/import.js +22 -16
- package/dist/index.js +17 -16
- package/dist/{index.node-BIqEGehH.js → index.node-dvrNviMx.js} +26 -20
- package/dist/index.node.js +17 -16
- package/dist/input.css_raw-CGESifay.js +5 -0
- package/dist/{layout-var-CZnzMC0s.js → layout-var-BSBKY49k.js} +3 -2
- package/dist/{light-slots-BVJwyg_2.js → light-slots-4ZCjOcBg.js} +6 -4
- package/dist/{light-slots-DW1WgfgT.js → light-slots-DdDdZ6zs.js} +6 -4
- package/dist/{markdown-DfqrfOJN.js → markdown-uGlE_OfJ.js} +414 -369
- package/dist/mono-button-CeDB9khW.js +878 -0
- package/dist/mono-button.shadow-D9NdMsmH.js +790 -0
- package/dist/{mono-data-chart-CEv29_NS.js → mono-data-chart-ChkelNT7.js} +15 -12
- package/dist/{mono-data-dropdown-Wnoke6zO.js → mono-data-dropdown-DxpUUk2y.js} +5 -3
- package/dist/{mono-data-grid-YjR3n9Ar.js → mono-data-grid-8jmeIXUU.js} +56 -38
- package/dist/{mono-data-grid-CjkEqxgE.js → mono-data-grid-BHlo1IgR.js} +56 -38
- package/dist/{mono-element-B0kP_96P.js → mono-element-C7vCschg.js} +7 -4
- package/dist/{mono-event-Bi1qP9uN.js → mono-event-BPku9HpS.js} +4 -3
- package/dist/{mono-form-controller-5PfsU4qa.js → mono-form-controller-IYn0MuUQ.js} +7 -4
- package/dist/{mono-modal-controller-BMO3n3rP.js → mono-modal-controller-ClObbHUs.js} +9 -7
- package/dist/{mono-ui-CPV7rrdo.js → mono-ui-BwUc0L6B.js} +22 -20
- package/dist/{normalize-error-Gcgmgh5i.js → normalize-error-D93O4q8g.js} +26 -20
- package/dist/{notifier-CE4yxMUQ.js → notifier-BIrqUzRh.js} +11 -1
- package/dist/nuxt.js +50 -17
- package/dist/{popup-portal-BziRX1yG.js → popup-portal-HWhkd7oy.js} +6 -4
- package/dist/{popup-stack-CEEMib__.js → popup-stack-De05Y-mJ.js} +13 -10
- package/dist/{rate-limit-BBa2PO79.js → rate-limit-e9Jlpl5l.js} +12 -9
- package/dist/{reactive-Di3mTMnV.js → reactive-DFCdZbH9.js} +30 -22
- package/dist/{reactive-D3EERqgO.js → reactive-Dtd-esHO.js} +2 -1
- package/dist/search.js +5 -4
- package/dist/src/components/accordion/accordion-core.d.ts +42 -40
- package/dist/src/components/accordion/accordion-types.d.ts +50 -48
- package/dist/src/components/accordion/index.d.ts +3 -2
- package/dist/src/components/accordion/index.shadow.d.ts +4 -4
- package/dist/src/components/accordion/mono-accordion.d.ts +44 -40
- package/dist/src/components/accordion/mono-accordion.shadow.d.ts +42 -38
- package/dist/src/components/alert/alert-core.d.ts +30 -28
- package/dist/src/components/alert/alert-types.d.ts +36 -34
- package/dist/src/components/alert/index.d.ts +3 -2
- package/dist/src/components/alert/index.shadow.d.ts +4 -4
- package/dist/src/components/alert/mono-alert.d.ts +30 -26
- package/dist/src/components/alert/mono-alert.shadow.d.ts +24 -20
- package/dist/src/components/breadcrumb/breadcrumb-core.d.ts +42 -40
- package/dist/src/components/breadcrumb/breadcrumb-list-core.d.ts +31 -29
- package/dist/src/components/breadcrumb/breadcrumb-render.d.ts +18 -16
- package/dist/src/components/breadcrumb/breadcrumb-types.d.ts +89 -87
- package/dist/src/components/breadcrumb/breadcrumb-utils.d.ts +18 -15
- package/dist/src/components/breadcrumb/index.d.ts +6 -5
- package/dist/src/components/breadcrumb/index.shadow.d.ts +7 -7
- package/dist/src/components/breadcrumb/mono-breadcrumb-list.d.ts +18 -14
- package/dist/src/components/breadcrumb/mono-breadcrumb-list.shadow.d.ts +33 -29
- package/dist/src/components/breadcrumb/mono-breadcrumb.d.ts +24 -20
- package/dist/src/components/breadcrumb/mono-breadcrumb.shadow.d.ts +55 -51
- package/dist/src/components/button/button-core.d.ts +73 -71
- package/dist/src/components/button/button-dropdown-core.d.ts +55 -53
- package/dist/src/components/button/button-dropdown-types.d.ts +98 -96
- package/dist/src/components/button/button-types.d.ts +157 -155
- package/dist/src/components/button/button-utils.d.ts +7 -5
- package/dist/src/components/button/index.button-dropdown.d.ts +5 -3
- package/dist/src/components/button/index.button-dropdown.shadow.d.ts +5 -3
- package/dist/src/components/button/index.d.ts +4 -7
- package/dist/src/components/button/index.shadow.d.ts +5 -4
- package/dist/src/components/button/mono-button-dropdown.d.ts +24 -19
- package/dist/src/components/button/mono-button-dropdown.shadow.d.ts +34 -29
- package/dist/src/components/button/mono-button.d.ts +105 -101
- package/dist/src/components/button/mono-button.shadow.d.ts +42 -38
- package/dist/src/components/card/card-core.d.ts +59 -57
- package/dist/src/components/card/card-types.d.ts +91 -89
- package/dist/src/components/card/card-utils.d.ts +11 -9
- package/dist/src/components/card/index.d.ts +4 -3
- package/dist/src/components/card/index.shadow.d.ts +5 -5
- package/dist/src/components/card/mono-card.d.ts +36 -32
- package/dist/src/components/card/mono-card.shadow.d.ts +32 -28
- package/dist/src/components/chart/chart-core.d.ts +30 -28
- package/dist/src/components/chart/chart-odata.d.ts +17 -16
- package/dist/src/components/chart/chart-types.d.ts +269 -267
- package/dist/src/components/chart/index.d.ts +7 -7
- package/dist/src/components/chart/index.shadow.d.ts +7 -6
- package/dist/src/components/chart/mono-chart-presets.d.ts +33 -29
- package/dist/src/components/chart/mono-chart-presets.shadow.d.ts +33 -29
- package/dist/src/components/chart/mono-chart.d.ts +13 -9
- package/dist/src/components/chart/mono-chart.shadow.d.ts +13 -9
- package/dist/src/components/chart/mono-data-chart.d.ts +4 -26
- package/dist/src/components/checkbox/checkbox-core.d.ts +39 -37
- package/dist/src/components/checkbox/checkbox-types.d.ts +59 -57
- package/dist/src/components/checkbox/checkbox-utils.d.ts +13 -11
- package/dist/src/components/checkbox/index.d.ts +4 -3
- package/dist/src/components/checkbox/index.shadow.d.ts +5 -4
- package/dist/src/components/checkbox/mono-checkbox.d.ts +21 -17
- package/dist/src/components/checkbox/mono-checkbox.shadow.d.ts +31 -27
- package/dist/src/components/chip/chip-core.d.ts +42 -40
- package/dist/src/components/chip/chip-types.d.ts +104 -102
- package/dist/src/components/chip/chip-utils.d.ts +20 -18
- package/dist/src/components/chip/index.d.ts +5 -7
- package/dist/src/components/chip/index.shadow.d.ts +6 -5
- package/dist/src/components/chip/mono-chip.d.ts +31 -27
- package/dist/src/components/chip/mono-chip.shadow.d.ts +19 -15
- package/dist/src/components/chip/mono-status-dot.d.ts +19 -17
- package/dist/src/components/date/date-core.d.ts +64 -62
- package/dist/src/components/date/date-types.d.ts +143 -141
- package/dist/src/components/date/index.d.ts +3 -2
- package/dist/src/components/date/index.shadow.d.ts +4 -3
- package/dist/src/components/date/mono-date.d.ts +12 -8
- package/dist/src/components/date/mono-date.shadow.d.ts +21 -17
- package/dist/src/components/drawer/drawer-core.d.ts +75 -73
- package/dist/src/components/drawer/drawer-types.d.ts +109 -107
- package/dist/src/components/drawer/index.d.ts +3 -2
- package/dist/src/components/drawer/index.shadow.d.ts +4 -3
- package/dist/src/components/drawer/mono-drawer.d.ts +32 -28
- package/dist/src/components/drawer/mono-drawer.shadow.d.ts +34 -31
- package/dist/src/components/dropdown/dropdown-core.d.ts +31 -29
- package/dist/src/components/dropdown/dropdown-types.d.ts +62 -60
- package/dist/src/components/dropdown/index.d.ts +3 -2
- package/dist/src/components/dropdown/index.shadow.d.ts +4 -3
- package/dist/src/components/dropdown/mono-dropdown.d.ts +23 -19
- package/dist/src/components/dropdown/mono-dropdown.shadow.d.ts +19 -15
- package/dist/src/components/dropdown-table/dropdown-table-core.d.ts +53 -51
- package/dist/src/components/dropdown-table/dropdown-table-types.d.ts +218 -216
- package/dist/src/components/dropdown-table/index.d.ts +5 -4
- package/dist/src/components/dropdown-table/index.shadow.d.ts +6 -5
- package/dist/src/components/dropdown-table/mono-data-dropdown.d.ts +119 -129
- package/dist/src/components/dropdown-table/mono-dropdown-table.d.ts +20 -16
- package/dist/src/components/dropdown-table/mono-dropdown-table.shadow.d.ts +15 -11
- package/dist/src/components/file-upload/file-upload-core.d.ts +44 -42
- package/dist/src/components/file-upload/file-upload-types.d.ts +123 -121
- package/dist/src/components/file-upload/file-upload-utils.d.ts +7 -4
- package/dist/src/components/file-upload/index.d.ts +4 -3
- package/dist/src/components/file-upload/index.shadow.d.ts +5 -4
- package/dist/src/components/file-upload/mono-file-upload.d.ts +20 -16
- package/dist/src/components/file-upload/mono-file-upload.shadow.d.ts +34 -30
- package/dist/src/components/filter/filter-builder-core.d.ts +17 -15
- package/dist/src/components/filter/filter-builder.d.ts +4 -22
- package/dist/src/components/filter/filter-odata.d.ts +3 -1
- package/dist/src/components/filter/filter-operators.d.ts +3 -1
- package/dist/src/components/filter/filter-types.d.ts +172 -170
- package/dist/src/components/filter/index.d.ts +6 -5
- package/dist/src/components/filter/index.shadow.d.ts +7 -6
- package/dist/src/components/filter/mono-filter-builder.d.ts +13 -10
- package/dist/src/components/filter/mono-filter-builder.shadow.d.ts +10 -7
- package/dist/src/components/form/form-control-core.d.ts +14 -12
- package/dist/src/components/form/form-rules.d.ts +7 -5
- package/dist/src/components/form/form-types.d.ts +214 -214
- package/dist/src/components/form/index.d.ts +5 -5
- package/dist/src/components/form/mono-form-controller.d.ts +4 -15
- package/dist/src/components/input/index.d.ts +5 -5
- package/dist/src/components/input/index.shadow.d.ts +6 -7
- package/dist/src/components/input/input-core.d.ts +73 -71
- package/dist/src/components/input/input-format.d.ts +22 -20
- package/dist/src/components/input/input-types.d.ts +167 -165
- package/dist/src/components/input/input-utils.d.ts +7 -5
- package/dist/src/components/input/mono-input.d.ts +35 -31
- package/dist/src/components/input/mono-input.shadow.d.ts +17 -13
- package/dist/src/components/menu/index.d.ts +7 -5
- package/dist/src/components/menu/index.shadow.d.ts +7 -6
- package/dist/src/components/menu/menu-core.d.ts +47 -45
- package/dist/src/components/menu/menu-render.d.ts +42 -40
- package/dist/src/components/menu/menu-types.d.ts +132 -130
- package/dist/src/components/menu/menu-utils.d.ts +16 -13
- package/dist/src/components/menu/mono-menu-list.d.ts +116 -114
- package/dist/src/components/menu/mono-menu.d.ts +30 -26
- package/dist/src/components/menu/mono-menu.shadow.d.ts +22 -18
- package/dist/src/components/modal/index.d.ts +5 -3
- package/dist/src/components/modal/index.shadow.d.ts +6 -4
- package/dist/src/components/modal/modal-core.d.ts +81 -79
- package/dist/src/components/modal/modal-types.d.ts +223 -221
- package/dist/src/components/modal/mono-modal-controller.d.ts +4 -3
- package/dist/src/components/modal/mono-modal.d.ts +32 -28
- package/dist/src/components/modal/mono-modal.shadow.d.ts +38 -35
- package/dist/src/components/nav/index.d.ts +4 -3
- package/dist/src/components/nav/index.shadow.d.ts +5 -5
- package/dist/src/components/nav/mono-nav.d.ts +28 -24
- package/dist/src/components/nav/mono-nav.shadow.d.ts +10 -7
- package/dist/src/components/nav/nav-core.d.ts +16 -14
- package/dist/src/components/nav/nav-types.d.ts +23 -22
- package/dist/src/components/nav/nav-utils.d.ts +10 -8
- package/dist/src/components/radio/index.d.ts +4 -3
- package/dist/src/components/radio/index.shadow.d.ts +5 -4
- package/dist/src/components/radio/mono-radio.d.ts +19 -15
- package/dist/src/components/radio/mono-radio.shadow.d.ts +22 -18
- package/dist/src/components/radio/radio-core.d.ts +31 -29
- package/dist/src/components/radio/radio-types.d.ts +48 -46
- package/dist/src/components/radio/radio-utils.d.ts +5 -3
- package/dist/src/components/rich-text-editor/index.d.ts +5 -4
- package/dist/src/components/rich-text-editor/index.shadow.d.ts +6 -5
- package/dist/src/components/rich-text-editor/mono-rich-text-editor.d.ts +19 -15
- package/dist/src/components/rich-text-editor/mono-rich-text-editor.shadow.d.ts +22 -19
- package/dist/src/components/rich-text-editor/rich-text-editor-core.d.ts +61 -59
- package/dist/src/components/rich-text-editor/rich-text-editor-loader.d.ts +2 -0
- package/dist/src/components/rich-text-editor/rich-text-editor-toolbar.d.ts +5 -3
- package/dist/src/components/rich-text-editor/rich-text-editor-types.d.ts +179 -177
- package/dist/src/components/select/index.d.ts +4 -3
- package/dist/src/components/select/index.shadow.d.ts +5 -4
- package/dist/src/components/select/mono-select.d.ts +58 -54
- package/dist/src/components/select/mono-select.shadow.d.ts +30 -27
- package/dist/src/components/select/select-core.d.ts +82 -80
- package/dist/src/components/select/select-types.d.ts +228 -227
- package/dist/src/components/select/select-utils.d.ts +7 -5
- package/dist/src/components/sidebar/index.d.ts +4 -3
- package/dist/src/components/sidebar/index.shadow.d.ts +5 -5
- package/dist/src/components/sidebar/mono-sidebar.d.ts +22 -18
- package/dist/src/components/sidebar/mono-sidebar.shadow.d.ts +11 -8
- package/dist/src/components/sidebar/sidebar-core.d.ts +33 -31
- package/dist/src/components/sidebar/sidebar-types.d.ts +77 -75
- package/dist/src/components/sidebar/sidebar-utils.d.ts +28 -26
- package/dist/src/components/switch/index.d.ts +4 -3
- package/dist/src/components/switch/index.shadow.d.ts +5 -4
- package/dist/src/components/switch/mono-switch.d.ts +19 -15
- package/dist/src/components/switch/mono-switch.shadow.d.ts +23 -19
- package/dist/src/components/switch/switch-core.d.ts +35 -33
- package/dist/src/components/switch/switch-types.d.ts +55 -53
- package/dist/src/components/switch/switch-utils.d.ts +5 -3
- package/dist/src/components/table/array-source.d.ts +31 -29
- package/dist/src/components/table/date-filter-tree.d.ts +25 -23
- package/dist/src/components/table/grouping.d.ts +22 -20
- package/dist/src/components/table/index.d.ts +28 -32
- package/dist/src/components/table/index.shadow.d.ts +34 -46
- package/dist/src/components/table/mono-data-grid.d.ts +1447 -1456
- package/dist/src/components/table/mono-table-checkbox-core.d.ts +34 -32
- package/dist/src/components/table/mono-table-checkbox.d.ts +12 -8
- package/dist/src/components/table/mono-table-checkbox.shadow.d.ts +16 -12
- package/dist/src/components/table/mono-table-detail-core.d.ts +29 -27
- package/dist/src/components/table/mono-table-detail.d.ts +12 -8
- package/dist/src/components/table/mono-table-detail.shadow.d.ts +13 -9
- package/dist/src/components/table/mono-table-empty-core.d.ts +24 -22
- package/dist/src/components/table/mono-table-empty.d.ts +17 -13
- package/dist/src/components/table/mono-table-empty.shadow.d.ts +22 -18
- package/dist/src/components/table/mono-table-error-core.d.ts +24 -22
- package/dist/src/components/table/mono-table-error.d.ts +12 -8
- package/dist/src/components/table/mono-table-error.shadow.d.ts +15 -11
- package/dist/src/components/table/mono-table-info-core.d.ts +6 -4
- package/dist/src/components/table/mono-table-info.d.ts +12 -8
- package/dist/src/components/table/mono-table-info.shadow.d.ts +9 -5
- package/dist/src/components/table/mono-table-loading-core.d.ts +7 -5
- package/dist/src/components/table/mono-table-loading.d.ts +12 -8
- package/dist/src/components/table/mono-table-loading.shadow.d.ts +9 -5
- package/dist/src/components/table/mono-table-page-size-core.d.ts +7 -5
- package/dist/src/components/table/mono-table-page-size.d.ts +12 -8
- package/dist/src/components/table/mono-table-page-size.shadow.d.ts +9 -5
- package/dist/src/components/table/mono-table-paging-core.d.ts +16 -14
- package/dist/src/components/table/mono-table-paging-group-core.d.ts +10 -8
- package/dist/src/components/table/mono-table-paging-group.d.ts +12 -8
- package/dist/src/components/table/mono-table-paging-group.shadow.d.ts +9 -5
- package/dist/src/components/table/mono-table-paging.d.ts +12 -8
- package/dist/src/components/table/mono-table-paging.shadow.d.ts +9 -5
- package/dist/src/components/table/mono-table-search-core.d.ts +51 -49
- package/dist/src/components/table/mono-table-search.d.ts +25 -22
- package/dist/src/components/table/mono-table-search.shadow.d.ts +12 -9
- package/dist/src/components/table/mono-table-sort-core.d.ts +16 -14
- package/dist/src/components/table/mono-table-sort.d.ts +21 -18
- package/dist/src/components/table/mono-table-sort.shadow.d.ts +11 -8
- package/dist/src/components/table/mono-table-summary-core.d.ts +9 -7
- package/dist/src/components/table/mono-table-summary.d.ts +12 -8
- package/dist/src/components/table/mono-table-summary.shadow.d.ts +9 -5
- package/dist/src/components/table/mono-table-th-core.d.ts +23 -21
- package/dist/src/components/table/mono-table-th.d.ts +21 -18
- package/dist/src/components/table/mono-table-th.shadow.d.ts +11 -8
- package/dist/src/components/table/store-group-source.d.ts +14 -12
- package/dist/src/components/table/table-controller-core.d.ts +17 -15
- package/dist/src/components/table/table-filter-icons.d.ts +3 -1
- package/dist/src/components/table/table-menu-core.d.ts +40 -38
- package/dist/src/components/table/table-overlay.d.ts +43 -41
- package/dist/src/components/table/table-sort-icons.d.ts +4 -2
- package/dist/src/components/table/table-sort-utils.d.ts +3 -1
- package/dist/src/components/table/table-types.d.ts +391 -400
- package/dist/src/components/tabs/index.d.ts +3 -2
- package/dist/src/components/tabs/index.shadow.d.ts +4 -3
- package/dist/src/components/tabs/mono-tabs.d.ts +21 -17
- package/dist/src/components/tabs/mono-tabs.shadow.d.ts +21 -17
- package/dist/src/components/tabs/tabs-core.d.ts +36 -34
- package/dist/src/components/tabs/tabs-types.d.ts +48 -46
- package/dist/src/components/tag-input/index.d.ts +5 -3
- package/dist/src/components/tag-input/index.shadow.d.ts +6 -4
- package/dist/src/components/tag-input/mono-tag-input.d.ts +56 -52
- package/dist/src/components/tag-input/mono-tag-input.shadow.d.ts +41 -38
- package/dist/src/components/tag-input/tag-input-core.d.ts +95 -93
- package/dist/src/components/tag-input/tag-input-types.d.ts +343 -346
- package/dist/src/components/tag-input/tag-input-utils.d.ts +7 -5
- package/dist/src/components/textarea/index.d.ts +4 -3
- package/dist/src/components/textarea/index.shadow.d.ts +5 -4
- package/dist/src/components/textarea/mono-textarea.d.ts +19 -15
- package/dist/src/components/textarea/mono-textarea.shadow.d.ts +19 -16
- package/dist/src/components/textarea/textarea-core.d.ts +48 -46
- package/dist/src/components/textarea/textarea-types.d.ts +120 -118
- package/dist/src/components/textarea/textarea-utils.d.ts +7 -5
- package/dist/src/components/tooltip/control-tooltip.d.ts +3 -1
- package/dist/src/components/tooltip/index.d.ts +6 -5
- package/dist/src/components/tooltip/tooltip-config.d.ts +17 -15
- package/dist/src/components/tooltip/tooltip-declarative.d.ts +3 -1
- package/dist/src/components/tooltip/tooltip-loader.d.ts +2 -0
- package/dist/src/components/tooltip/tooltip-types.d.ts +74 -72
- package/dist/src/composables/breakpoints.d.ts +9 -7
- package/dist/src/composables/chip-limits.d.ts +12 -10
- package/dist/src/composables/chip-strip.d.ts +91 -89
- package/dist/src/composables/color.d.ts +6 -4
- package/dist/src/composables/css-class.d.ts +4 -2
- package/dist/src/composables/css-size.d.ts +9 -7
- package/dist/src/composables/data-source-controller.d.ts +90 -88
- package/dist/src/composables/element-props.d.ts +3 -3
- package/dist/src/composables/field-icons.d.ts +3 -1
- package/dist/src/composables/hybird-prop.d.ts +10 -8
- package/dist/src/composables/hydration-flush.d.ts +16 -14
- package/dist/src/composables/icon.d.ts +3 -1
- package/dist/src/composables/layout-var.d.ts +2 -0
- package/dist/src/composables/light-slots.d.ts +34 -32
- package/dist/src/composables/mdi-glyphs.d.ts +2 -0
- package/dist/src/composables/mono-element.d.ts +3 -1
- package/dist/src/composables/mono-event.d.ts +15 -13
- package/dist/src/composables/mono-pending.d.ts +4 -2
- package/dist/src/composables/mono-skeleton.d.ts +100 -98
- package/dist/src/composables/mono-ui.d.ts +17 -18
- package/dist/src/composables/notifier.d.ts +20 -18
- package/dist/src/composables/popup-portal.d.ts +177 -175
- package/dist/src/composables/popup-stack.d.ts +36 -34
- package/dist/src/composables/rate-limit.d.ts +33 -31
- package/dist/src/composables/reactive.d.ts +3 -1
- package/dist/src/composables/shadow-css.d.ts +17 -15
- package/dist/src/composables/visibility.d.ts +6 -4
- package/dist/src/data/theme/index.d.ts +9 -7
- package/dist/src/data/theme/presets.d.ts +64 -62
- package/dist/src/entries/index.d.ts +36 -1
- package/dist/src/entries/index.node.d.ts +34 -41
- package/dist/src/entries/search.d.ts +2 -2
- package/dist/src/export/detail.d.ts +14 -12
- package/dist/src/export/download.d.ts +2 -0
- package/dist/src/export/excel/index.d.ts +13 -11
- package/dist/src/export/excel/nodes.d.ts +95 -93
- package/dist/src/export/expression.d.ts +3 -1
- package/dist/src/export/helpers.d.ts +3 -1
- package/dist/src/export/index.d.ts +6 -4
- package/dist/src/export/markdown.d.ts +19 -17
- package/dist/src/export/resolve-data.d.ts +3 -1
- package/dist/src/export/sentinel.d.ts +32 -30
- package/dist/src/export/sheet-name.d.ts +7 -5
- package/dist/src/export/styles.d.ts +13 -11
- package/dist/src/export/template.d.ts +3 -1
- package/dist/src/export/types.d.ts +224 -222
- package/dist/src/import/coerce.d.ts +5 -3
- package/dist/src/import/index.d.ts +12 -10
- package/dist/src/import/match.d.ts +20 -18
- package/dist/src/import/parse.d.ts +5 -3
- package/dist/src/import/types.d.ts +125 -123
- package/dist/src/nuxt/index.d.ts +92 -90
- package/dist/src/nuxt/ssr-lit/index.d.ts +4 -0
- package/dist/src/search/data-search.d.ts +92 -90
- package/dist/src/search/field-path.d.ts +10 -8
- package/dist/src/search/filter-eval.d.ts +2 -0
- package/dist/src/search/index.d.ts +6 -22
- package/dist/src/search/odata-search.d.ts +9 -7
- package/dist/src/search/search-expr.d.ts +16 -14
- package/dist/src/utils/data-source-apply.d.ts +11 -9
- package/dist/src/utils/data-source-options.d.ts +37 -35
- package/dist/src/utils/data-source-read.d.ts +40 -54
- package/dist/src/utils/data-source-summary.d.ts +8 -7
- package/dist/src/utils/normalize-error.d.ts +16 -14
- package/dist/src/vite/index.d.ts +34 -34
- package/dist/src/vite/mono-client-only.d.ts +34 -32
- package/dist/src/vite/mono-ssr-stub.d.ts +8 -6
- package/dist/src/vite/shadow-manifest.d.ts +2 -0
- package/dist/ssr-lit/runtime/components/LitWrapper.vue +11 -0
- package/dist/ssr-lit/runtime/components/LitWrapperClient.vue +11 -0
- package/dist/ssr-lit/runtime/components/LitWrapperServer.vue +38 -0
- package/dist/ssr-lit/runtime/plugins/antiFouc.server.js +25 -0
- package/dist/ssr-lit/runtime/plugins/hydrateSupport.client.js +4 -0
- package/dist/ssr-lit/runtime/plugins/polyfill.client.js +9 -0
- package/dist/ssr-lit/runtime/utils/customElements.js +11 -0
- package/dist/ssr-lit/runtime/utils/litElementRenderer.js +28 -0
- package/dist/{styles-BIJ31TM4.js → styles-D-ergrfR.js} +417 -207
- package/dist/{tooltip-DQqNpqk2.js → tooltip-FCMRUSLi.js} +32 -25
- package/dist/tooltip.js +3 -2
- package/dist/ui/accordion.js +16 -12
- package/dist/ui/alert.js +21 -14
- package/dist/ui/breadcrumb.js +28 -18
- package/dist/ui/button-dropdown.js +18 -14
- package/dist/ui/button.js +4 -2
- package/dist/ui/card.js +17 -12
- package/dist/ui/chart.js +31 -26
- package/dist/ui/checkbox.js +17 -12
- package/dist/ui/chip.js +19 -12
- package/dist/ui/date.js +19 -15
- package/dist/ui/drawer.js +26 -20
- package/dist/ui/dropdown-table.js +39 -30
- package/dist/ui/dropdown.js +19 -15
- package/dist/ui/file-upload.js +22 -17
- package/dist/ui/filter.js +18 -14
- package/dist/ui/form.js +4 -3
- package/dist/ui/index.css +1073 -2197
- package/dist/ui/input.js +24 -17
- package/dist/ui/menu.js +32 -20
- package/dist/ui/modal.js +33 -26
- package/dist/ui/nav.js +21 -15
- package/dist/ui/radio.js +17 -12
- package/dist/ui/rich-text-editor.js +34 -28
- package/dist/ui/select.js +32 -26
- package/dist/ui/shadow/accordion.js +13 -9
- package/dist/ui/shadow/alert.js +13 -9
- package/dist/ui/shadow/breadcrumb.js +23 -14
- package/dist/ui/shadow/button-dropdown.js +17 -13
- package/dist/ui/shadow/button.js +4 -2
- package/dist/ui/shadow/card.js +15 -10
- package/dist/ui/shadow/chart.js +36 -29
- package/dist/ui/shadow/checkbox.js +13 -9
- package/dist/ui/shadow/chip.js +16 -10
- package/dist/ui/shadow/date.js +19 -12
- package/dist/ui/shadow/drawer.js +22 -16
- package/dist/ui/shadow/dropdown-table.js +39 -28
- package/dist/ui/shadow/dropdown.js +15 -11
- package/dist/ui/shadow/file-upload.js +26 -19
- package/dist/ui/shadow/filter.js +17 -13
- package/dist/ui/shadow/input.js +20 -14
- package/dist/ui/shadow/menu.js +24 -14
- package/dist/ui/shadow/modal.js +35 -27
- package/dist/ui/shadow/nav.js +18 -12
- package/dist/ui/shadow/radio.js +15 -10
- package/dist/ui/shadow/rich-text-editor.js +32 -26
- package/dist/ui/shadow/select.js +30 -24
- package/dist/ui/shadow/sidebar.js +23 -16
- package/dist/ui/shadow/switch.js +15 -10
- package/dist/ui/shadow/table.js +123 -84
- package/dist/ui/shadow/tabs.js +12 -8
- package/dist/ui/shadow/tag-input.js +37 -31
- package/dist/ui/shadow/textarea.js +17 -12
- package/dist/ui/sidebar.js +27 -20
- package/dist/ui/switch.js +17 -12
- package/dist/ui/table.js +129 -87
- package/dist/ui/tabs.js +15 -11
- package/dist/ui/tag-input.js +33 -27
- package/dist/ui/textarea.js +19 -14
- package/dist/{vite-C5iUK7so.js → vite-DcyRlTTf.js} +17 -9
- package/dist/vite.js +3 -2
- package/package.json +18 -20
- package/dist/checkbox-Cqpie9Ap.js +0 -4
- package/dist/chip-DBUUa2eB.js +0 -4
- package/dist/data/theme/presets.json.d.ts +0 -140
- package/dist/export.d.ts +0 -1
- package/dist/hydration-flush-RB5Tz5nl.js +0 -1001
- package/dist/import.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.node.d.ts +0 -1
- package/dist/input-zGOULADt.js +0 -4
- package/dist/mono-button-simcTQdW.js +0 -873
- package/dist/mono-button.shadow-B_rKOY9N.js +0 -784
- package/dist/nuxt.d.ts +0 -1
- package/dist/search.d.ts +0 -1
- package/dist/tooltip.d.ts +0 -1
- package/dist/ui/accordion.d.ts +0 -1
- package/dist/ui/alert.d.ts +0 -1
- package/dist/ui/breadcrumb.d.ts +0 -1
- package/dist/ui/button-dropdown.d.ts +0 -1
- package/dist/ui/button.d.ts +0 -1
- package/dist/ui/card.d.ts +0 -1
- package/dist/ui/chart.d.ts +0 -1
- package/dist/ui/checkbox.d.ts +0 -1
- package/dist/ui/chip.d.ts +0 -1
- package/dist/ui/date.d.ts +0 -1
- package/dist/ui/drawer.d.ts +0 -1
- package/dist/ui/dropdown-table.d.ts +0 -1
- package/dist/ui/dropdown.d.ts +0 -1
- package/dist/ui/file-upload.d.ts +0 -1
- package/dist/ui/filter.d.ts +0 -1
- package/dist/ui/form.d.ts +0 -1
- package/dist/ui/input.d.ts +0 -1
- package/dist/ui/menu.d.ts +0 -1
- package/dist/ui/modal.d.ts +0 -1
- package/dist/ui/nav.d.ts +0 -1
- package/dist/ui/radio.d.ts +0 -1
- package/dist/ui/rich-text-editor.d.ts +0 -1
- package/dist/ui/select.d.ts +0 -1
- package/dist/ui/sidebar.d.ts +0 -1
- package/dist/ui/switch.d.ts +0 -1
- package/dist/ui/table.d.ts +0 -1
- package/dist/ui/tabs.d.ts +0 -1
- package/dist/ui/tag-input.d.ts +0 -1
- package/dist/ui/textarea.d.ts +0 -1
- package/dist/vite.d.ts +0 -1
package/dist/ui/shadow/select.js
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
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-
|
|
2
|
-
import { t as dispatchMonoEvent } from "../../mono-event-
|
|
3
|
-
import { n as toCssSize, t as buildSizeStyle } from "../../css-size-
|
|
4
|
-
import { t as MonoFormControlCore } from "../../form-control-core-
|
|
5
|
-
import { t as PopupPortalController } from "../../popup-portal-
|
|
6
|
-
import { a as rateLimitHasChanged } from "../../rate-limit-
|
|
7
|
-
import { t as getFieldValue } from "../../field-path-
|
|
8
|
-
import { _ as searchRowPredicate, a as describeError, c as errorTitle, g as resolveSearchFields, m as MonoSourceSearch, n as unwrapReactive, s as errorText } from "../../reactive-
|
|
9
|
-
import { t as LateSlotWatcher } from "../../light-slots-
|
|
10
|
-
import { a as spinnerIcon, i as refreshIcon } from "../../field-icons-
|
|
11
|
-
import { t as DataSourceController } from "../../data-source-controller-
|
|
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";
|
|
2
|
+
import { t as dispatchMonoEvent } from "../../mono-event-BPku9HpS.js";
|
|
3
|
+
import { n as toCssSize, t as buildSizeStyle } from "../../css-size-DWAPgQdT.js";
|
|
4
|
+
import { t as MonoFormControlCore } from "../../form-control-core-CIdMLXMo.js";
|
|
5
|
+
import { t as PopupPortalController } from "../../popup-portal-HWhkd7oy.js";
|
|
6
|
+
import { a as rateLimitHasChanged } from "../../rate-limit-e9Jlpl5l.js";
|
|
7
|
+
import { t as getFieldValue } from "../../field-path-BabiMrrA.js";
|
|
8
|
+
import { _ as searchRowPredicate, a as describeError, c as errorTitle, g as resolveSearchFields, m as MonoSourceSearch, n as unwrapReactive, s as errorText } from "../../reactive-DFCdZbH9.js";
|
|
9
|
+
import { t as LateSlotWatcher } from "../../light-slots-4ZCjOcBg.js";
|
|
10
|
+
import { a as spinnerIcon, i as refreshIcon } from "../../field-icons-FmyBWa0g.js";
|
|
11
|
+
import { t as DataSourceController } from "../../data-source-controller-Cf_sMxEh.js";
|
|
12
12
|
import { LitElement, html, isServer, nothing, unsafeCSS } from "lit";
|
|
13
13
|
import { property, query, state } from "lit/decorators.js";
|
|
14
14
|
import { ifDefined } from "lit/directives/if-defined.js";
|
|
15
15
|
import { styleMap } from "lit/directives/style-map.js";
|
|
16
|
+
|
|
16
17
|
//#region src/components/select/select-core.ts
|
|
17
18
|
/**
|
|
18
19
|
* `MonoSelectCore` — render-mode-agnostic logic for `mono-select` (props, hybrid
|
|
@@ -25,7 +26,7 @@ import { styleMap } from "lit/directives/style-map.js";
|
|
|
25
26
|
* `<slot>` + a `firstUpdated` scan), and the `_slotOutlet` / `renderIcon` hooks.
|
|
26
27
|
* The shared `_has*SlotState` `@state` fields back both strategies.
|
|
27
28
|
*/
|
|
28
|
-
|
|
29
|
+
const MonoSelectCore = (superClass) => {
|
|
29
30
|
class MonoSelectCoreClass extends MonoFormControlCore(superClass) {
|
|
30
31
|
constructor(...args) {
|
|
31
32
|
super(...args);
|
|
@@ -1298,16 +1299,17 @@ var MonoSelectCore = (superClass) => {
|
|
|
1298
1299
|
_renderOption(item, index = -1) {
|
|
1299
1300
|
const selected = this._isSameValue(this._resolveItemValue(item), this.value);
|
|
1300
1301
|
const active = index >= 0 && index === this._activeIndex;
|
|
1301
|
-
|
|
1302
|
-
<button
|
|
1303
|
-
type="button"
|
|
1304
|
-
role="option"
|
|
1305
|
-
class=${[
|
|
1302
|
+
const itemClass = [
|
|
1306
1303
|
this._cls("mono-select-item", "item"),
|
|
1307
1304
|
active ? `active ${this.cssClass?.itemActive ?? ""}` : "",
|
|
1308
1305
|
selected ? `selected ${this.cssClass?.itemSelected ?? ""}` : "",
|
|
1309
1306
|
item.disabled ? `disabled ${this.cssClass?.itemDisabled ?? ""}` : ""
|
|
1310
|
-
].filter(Boolean).join(" ")
|
|
1307
|
+
].filter(Boolean).join(" ");
|
|
1308
|
+
return html`
|
|
1309
|
+
<button
|
|
1310
|
+
type="button"
|
|
1311
|
+
role="option"
|
|
1312
|
+
class=${itemClass}
|
|
1311
1313
|
mono-item
|
|
1312
1314
|
?mono-active=${active}
|
|
1313
1315
|
?mono-selected=${selected}
|
|
@@ -2022,23 +2024,25 @@ var MonoSelectCore = (superClass) => {
|
|
|
2022
2024
|
})], MonoSelectCoreClass.prototype, "maxHeight", void 0);
|
|
2023
2025
|
return MonoSelectCoreClass;
|
|
2024
2026
|
};
|
|
2027
|
+
|
|
2025
2028
|
//#endregion
|
|
2026
|
-
//#region src
|
|
2027
|
-
var select_default = "/* =========================================================================\r\n mono-select — a port of Basecoat's `.select` (the custom one, `.select:not(select)`)\r\n and `.combobox` (basecoat-css@1.0.2, vega style), on the `.field` / `.label`\r\n chrome mono-input already ported.\r\n\r\n Styled by ATTRIBUTE, like Basecoat (`.select > button`, `[role='option'].active`)\r\n — and the attributes mirror the element's props one for one, so hand-written\r\n markup reads like the Lit / Vue tag:\r\n\r\n <mono-select size=\"sm\" color=\"danger\" variant=\"filled\" label=\"Fruit\">\r\n <div mono-select mono-size=\"sm\" mono-color=\"danger\" mono-variant=\"filled\">\r\n <label mono-label>Fruit</label>\r\n <button mono-trigger><span mono-value mono-placeholder>Pick</span>\r\n <span mono-actions><span mono-arrow>…</span></span></button>\r\n <div mono-dropdown><div mono-dropdown-body><button mono-item>…</button></div></div>\r\n </div>\r\n\r\n An absent attribute is the prop's default (`:not([mono-size])` = md,\r\n `:not([mono-color])` = primary, `:not([mono-variant])` = outlined). The element\r\n renders these attributes on its wrapper (both builds) plus `mono-open` while\r\n the panel is open; the old classes (`.mono-select.sm.open`) are still emitted\r\n as inert hooks for consumer CSS until 2.0 but no rule here reads them.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-select] ≡ .field (gap-3, as margins — see the root rule) + .select (position: relative)\r\n [mono-select] > [mono-label] ≡ .field > label / .label\r\n [mono-select] > [mono-trigger] ≡ .select > button (h-9 rounded-md border-input ps-2.5 pe-2 text-sm shadow-xs)\r\n [mono-select][mono-searchable] > [mono-trigger] ≡ .combobox > input[role='combobox'] (same box; the input sits inside it)\r\n [mono-trigger] > [mono-value] ≡ .select > button > span (flex-1 truncate text-start)\r\n [mono-trigger] > [mono-native] ≡ EXTENSION — a plain <select> may stand in for the value + panel (appearance: none)\r\n [mono-actions] > [mono-arrow] > [mono-icon] ≡ .select > button > svg (size-4 text-muted-foreground)\r\n [mono-actions] > [mono-clear] ≡ .combobox [data-clear] (size-6, painted as .btn[data-variant='ghost'])\r\n [mono-dropdown] ≡ .select [data-popover] (bg-popover ring-1 ring-foreground/10 rounded-md shadow-md)\r\n [mono-dropdown-body] ≡ .combobox [role='listbox'] (max-h-72 overflow-y-auto p-1 scroll-py-1)\r\n [mono-item] ≡ .select [role='option'] (gap-2 rounded-sm py-1.5 ps-2 pe-8 text-sm)\r\n [mono-item][mono-active] / :hover ≡ [role='option'].active (bg-muted text-foreground)\r\n [mono-item][mono-selected] ≡ [role='option'][aria-selected='true'] (the --check-icon at the end)\r\n [mono-group] ≡ .select [role='heading'] (px-2 py-1.5 text-xs text-muted-foreground)\r\n [mono-empty-row] ≡ .select [role='listbox']::before (py-6 text-center text-sm)\r\n [mono-load-more] ≡ EXTENSION (an option-shaped ghost button)\r\n [mono-message-wrap] > [mono-message] ≡ .field > p / .field [role='alert']\r\n [mono-validation-state=\"invalid\"] ≡ .select > button[aria-invalid='true']\r\n [mono-validation-state=\"valid|warning\"] ≡ EXTENSION (the invalid pattern in --success / --warning)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION (Basecoat has only data-size=sm; the ladder is --mono-control-height-*)\r\n [mono-variant=\"filled\"] ≡ EXTENSION (luma's .select > button: border-transparent bg-input/50)\r\n [mono-variant=\"underlined\"] ≡ EXTENSION (sera's: rounded-none border-b-input px-0, no ring)\r\n\r\n Inner parts are attributes too: [mono-label] (+ [mono-required-mark]),\r\n [mono-trigger], [mono-value] (+ [mono-placeholder]), [mono-search-field],\r\n [mono-native], [mono-actions], [mono-clear], [mono-arrow], [mono-icon],\r\n [mono-dropdown], [mono-dropdown-body], [mono-item] (+ [mono-active] /\r\n [mono-selected] / [mono-disabled]), [mono-group] (+ [mono-sticky],\r\n [mono-level=\"n\"]), [mono-empty-row], [mono-load-more] (+ [mono-loading]),\r\n [mono-list-slot], [mono-message-wrap] > [mono-message=\"helper|valid|invalid|warning\"].\r\n The shadow build marks an unassigned slot wrapper [mono-empty].\r\n\r\n THE PANEL IS PORTALED. The light build moves [mono-dropdown] into a\r\n `<div data-mono-popup-portal>` under <body> while open (composables/popup-\r\n portal.ts), and the portal mirrors the wrapper's class AND its mono-*\r\n attributes — so `[mono-select] > [mono-dropdown]` keeps matching there and\r\n the `--_mono-select-*` resolvers declared on `[mono-select]` re-resolve on\r\n the portal. Nothing here may rely on the panel being inside the trigger's\r\n host, and every option rule is scoped under `[mono-select]`.\r\n\r\n Values are copied from the compiled vendor sheet (vendor/basecoat/basecoat-\r\n vega.cdn.css) through the token layer; `dark:` variants travel as\r\n `--mono-mode-*` tokens (a selector cannot cross a shadow boundary; an\r\n inherited custom property can). FLAVORS set the `--mono-select-*` knobs read\r\n below — the same set as mono-input (`--mono-select-outline-*` for the outlined\r\n variant alone) plus `--mono-select-dropdown-{radius,padding,shadow,ring}`,\r\n `--mono-select-option-{radius,padding-x,padding-y,font-size,line-height,gap,font-weight}`,\r\n `--mono-select-group-*`, `--mono-select-icon-size`. Every fallback here is vega's\r\n value (`node scripts/basecoat-styles.mjs --varying \"^(\\.select:not\\(select\\)|\\.combobox)\"`).\r\n ========================================================================= */\r\n\r\nmono-select {\r\n display: block;\r\n}\r\n\r\n[mono-select] {\r\n /* ── palette: each slot is a public knob over a Basecoat token ─────────── */\r\n --_mono-select-text: var(--mono-select-color, var(--mono-select-text, var(--foreground)));\r\n --_mono-select-placeholder: var(--mono-select-placeholder, var(--muted-foreground));\r\n --_mono-select-muted: var(--mono-select-muted, var(--muted-foreground));\r\n --_mono-select-primary: var(--mono-select-primary, var(--ring));\r\n --_mono-select-secondary: var(--mono-select-secondary, var(--muted-foreground));\r\n --_mono-select-success: var(--mono-select-success, var(--success));\r\n --_mono-select-danger: var(--mono-select-danger, var(--destructive));\r\n --_mono-select-warning: var(--mono-select-warning, var(--warning));\r\n --_mono-select-info: var(--mono-select-info, var(--info));\r\n --_mono-select-teal: var(--mono-select-teal, var(--teal));\r\n --_mono-select-purple: var(--mono-select-purple, var(--purple));\r\n --_mono-select-neutral: var(--mono-select-neutral, var(--neutral));\r\n --_mono-select-dark: var(--mono-select-dark, var(--dark));\r\n --_mono-select-valid: var(--mono-select-valid, var(--success));\r\n --_mono-select-invalid: var(--mono-select-invalid, var(--destructive));\r\n\r\n /* ── the painted result — three tiers, base = .select > button (vega) ─── */\r\n --_mono-select-ring-color: var(--mono-select-ring-color, var(--mono-select-focus-color, var(--_mono-select-ring-color-preset, var(--_mono-select-primary))));\r\n --_mono-select-ring-width: var(--mono-select-ring-width, var(--_mono-select-ring-width-preset, var(--mono-ring-width)));\r\n --_mono-select-ring-alpha: var(--mono-select-ring-alpha, var(--mono-ring-alpha));\r\n --_mono-select-border-color: var(--mono-select-rest-border, var(--mono-select-border-color, var(--mono-select-border, var(--_mono-select-border-color-preset, var(--input)))));\r\n --_mono-select-bg: var(--mono-select-bg, var(--mono-select-surface, var(--_mono-select-bg-preset, var(--mono-mode-surface))));\r\n --_mono-select-hover-bg: var(--mono-select-hover-bg, var(--_mono-select-hover-bg-preset, var(--_mono-select-bg)));\r\n --_mono-select-shadow: var(--mono-select-shadow, var(--_mono-select-shadow-preset, 0 0 #0000));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 4));\r\n\r\n /* ── md metrics live on the unqualified root ON PURPOSE: hand-written\r\n `<div mono-select>` that names no size renders exactly like size=\"md\".\r\n basecoat@1.0.2 styles/vega.css .select:not(select) > button — h-9 gap-1.5\r\n rounded-md ps-2.5 pe-2 text-sm ── */\r\n --_mono-select-height: var(--mono-select-height-md, var(--mono-control-height-md));\r\n --_mono-select-radius: var(--mono-select-radius-md, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-md, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-md, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 1.5));\r\n --_mono-select-font-size: var(--mono-select-font-md, var(--mono-text-sm));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-md, var(--mono-text-sm--lh)));\r\n --_mono-select-action: calc(var(--mono-spacing) * 6);\r\n\r\n /* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3; mono: BLOCK\r\n flow with the gap as margins, so a hand-written panel that no controller\r\n positions lands at its static position — right under the trigger, above the\r\n message — instead of a flex container's content-box top */\r\n --_mono-select-gap-y: var(--mono-select-gap, calc(var(--mono-spacing) * 3));\r\n position: relative;\r\n display: block;\r\n width: 100%;\r\n font-family: inherit;\r\n color: var(--_mono-select-text);\r\n}\r\n\r\n/* A page-level `* { box-sizing: border-box }` reset does NOT cross a shadow\r\n boundary; scoped here so both builds measure the same. */\r\n[mono-select],\r\n[mono-select] *,\r\n[mono-select] *::before,\r\n[mono-select] *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n[mono-select] :is([mono-label], [mono-message])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n/* =========================================\r\n Sizes — the trigger's painted height IS the token (tests/perf/field-heights)\r\n EXTENSION: Basecoat's select has only data-size=sm; the ladder is the shared\r\n --mono-control-height-* scale and the text follows .btn's steps.\r\n ========================================= */\r\n\r\n[mono-select][mono-size=\"xs\"] {\r\n --_mono-select-height: var(--mono-select-height-xs, var(--mono-control-height-xs));\r\n --_mono-select-radius: var(--mono-select-radius-xs, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xs, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xs, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 1.5))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, var(--mono-spacing));\r\n --_mono-select-font-size: var(--mono-select-font-xs, var(--mono-text-xs));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xs, var(--mono-text-xs--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 3.5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 4);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — data-[size=sm]:h-8 */\r\n[mono-select][mono-size=\"sm\"] {\r\n --_mono-select-height: var(--mono-select-height-sm, var(--mono-control-height-sm));\r\n --_mono-select-radius: var(--mono-select-radius-sm, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-sm, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-sm, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-font-size: var(--mono-select-font-sm, var(--mono-select-font-md, var(--mono-text-sm)));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-sm, var(--mono-text-sm--lh)));\r\n --_mono-select-action: calc(var(--mono-spacing) * 5);\r\n}\r\n\r\n[mono-select][mono-size=\"lg\"] {\r\n --_mono-select-height: var(--mono-select-height-lg, var(--mono-control-height-lg));\r\n --_mono-select-radius: var(--mono-select-radius-lg, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-lg, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-lg, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-font-size: var(--mono-select-font-lg, var(--mono-select-font-md, var(--mono-text-sm)));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-lg, var(--mono-text-sm--lh)));\r\n}\r\n\r\n[mono-select][mono-size=\"xl\"] {\r\n --_mono-select-height: var(--mono-select-height-xl, var(--mono-control-height-xl));\r\n --_mono-select-radius: var(--mono-select-radius-xl, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 3))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 2));\r\n --_mono-select-font-size: var(--mono-select-font-xl, var(--mono-text-base));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xl, var(--mono-text-base--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 7);\r\n}\r\n\r\n[mono-select][mono-size=\"xxl\"] {\r\n --_mono-select-height: var(--mono-select-height-xxl, var(--mono-control-height-xxl));\r\n --_mono-select-radius: var(--mono-select-radius-xxl, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xxl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 4))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xxl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 3))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 2));\r\n --_mono-select-font-size: var(--mono-select-font-xxl, var(--mono-text-lg));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xxl, var(--mono-text-lg--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 8);\r\n}\r\n\r\n/* =========================================\r\n Variants — each writes only `*-preset` slots\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — rounded-md border\r\n border-input bg-transparent shadow-xs (dark:bg-input/30 dark:hover:bg-input/50\r\n via the mode tokens). `--mono-select-outline-*` restyle THIS variant alone. */\r\n[mono-select]:is(:not([mono-variant]), [mono-variant=\"outlined\"]) {\r\n --_mono-select-bg-preset: var(--mono-select-outline-bg);\r\n --_mono-select-hover-bg-preset: var(--mono-select-outline-hover-bg, var(--mono-mode-field-hover-bg));\r\n --_mono-select-border-color-preset: var(--mono-select-outline-border-color);\r\n --_mono-select-side-border-color-preset: var(--mono-select-outline-side-border-color);\r\n --_mono-select-shadow-preset: var(--mono-select-outline-shadow, var(--mono-shadow-xs));\r\n --_mono-select-ring-width-preset: var(--mono-select-outline-ring-width);\r\n --_mono-select-radius-preset: var(--mono-select-outline-radius);\r\n --_mono-select-padding-x-preset: var(--mono-select-outline-padding-x);\r\n}\r\n\r\n/* EXTENSION — filled ≡ basecoat@1.0.2 styles/luma.css .select:not(select) > button:\r\n border-transparent bg-input/50, no shadow-xs, no hover */\r\n[mono-select][mono-variant=\"filled\"] {\r\n --_mono-select-bg-preset: var(--mono-select-filled-bg, color-mix(in oklab, var(--input) 50%, transparent));\r\n --_mono-select-hover-bg-preset: var(--_mono-select-bg);\r\n --_mono-select-border-color-preset: transparent;\r\n --_mono-select-shadow-preset: 0 0 #0000;\r\n}\r\n\r\n/* EXTENSION — underlined ≡ basecoat@1.0.2 styles/sera.css .select:not(select) > button:\r\n rounded-none border-transparent border-b-input bg-transparent px-0, no shadow,\r\n no ring, focus-visible:border-b-ring */\r\n[mono-select][mono-variant=\"underlined\"] {\r\n --_mono-select-bg-preset: transparent;\r\n --_mono-select-hover-bg-preset: transparent;\r\n --_mono-select-side-border-color-preset: transparent;\r\n --_mono-select-shadow-preset: 0 0 #0000;\r\n --_mono-select-ring-width-preset: 0px;\r\n --_mono-select-radius-preset: 0;\r\n --_mono-select-padding-x-preset: 0;\r\n}\r\n\r\n/* =========================================\r\n Colours — the `color` prop is the FOCUS colour (ring + focused border)\r\n ========================================= */\r\n\r\n[mono-select]:is(:not([mono-color]), [mono-color=\"primary\"]) {\r\n --_mono-select-ring-color-preset: var(--_mono-select-primary);\r\n}\r\n[mono-select][mono-color=\"secondary\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-secondary);\r\n}\r\n[mono-select][mono-color=\"success\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-success);\r\n}\r\n[mono-select][mono-color=\"danger\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-danger);\r\n}\r\n[mono-select][mono-color=\"warning\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-warning);\r\n}\r\n[mono-select][mono-color=\"info\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-info);\r\n}\r\n[mono-select][mono-color=\"teal\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-teal);\r\n}\r\n[mono-select][mono-color=\"purple\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-purple);\r\n}\r\n[mono-select][mono-color=\"neutral\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-neutral);\r\n}\r\n[mono-select][mono-color=\"dark\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-dark);\r\n}\r\n\r\n/* =========================================\r\n Label\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > label, .label — flex items-center\r\n gap-2 text-sm leading-none font-medium select-none w-fit */\r\n[mono-select] > [mono-label] {\r\n display: flex;\r\n align-items: center;\r\n width: fit-content;\r\n margin: 0 0 var(--_mono-select-gap-y);\r\n gap: var(--mono-select-label-gap, calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-select-label-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-label-line-height, 1);\r\n font-weight: var(--mono-select-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)));\r\n text-transform: var(--mono-select-label-text-transform, none);\r\n letter-spacing: var(--mono-select-label-letter-spacing, normal);\r\n color: var(--_mono-select-text);\r\n user-select: none;\r\n}\r\n\r\n[mono-select][mono-disabled] > [mono-label] {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field — data-invalid:text-destructive */\r\n[mono-select][mono-validation-state=\"invalid\"] > [mono-label] {\r\n color: var(--_mono-select-invalid);\r\n}\r\n\r\n[mono-select] [mono-required-mark] {\r\n color: var(--_mono-select-danger);\r\n}\r\n\r\n/* =========================================\r\n The trigger — the bordered box (a <button>, or a <div> holding the combobox input)\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — h-9 gap-1.5\r\n rounded-md border border-input bg-transparent py-2 ps-2.5 pe-2 text-sm shadow-xs\r\n focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\r\n aria-invalid:… dark:hover:bg-input/50; mono: `--tw-ring-*` flattened to the\r\n ring + shadow slots, the height is the control token (no block padding — the\r\n token owns the height), the side edges read their own slot */\r\n[mono-select] > [mono-trigger] {\r\n --_mono-select-bc: var(--_mono-select-border-color);\r\n --_mono-select-side-bc: var(--mono-select-side-border-color, var(--_mono-select-side-border-color-preset, var(--_mono-select-bc)));\r\n --_mono-select-ring: 0 0 #0000;\r\n\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: var(--_mono-select-gap);\r\n width: 100%;\r\n min-width: 0;\r\n min-height: var(--_mono-select-height);\r\n margin: 0;\r\n padding-block: var(--mono-select-padding-y, 0);\r\n padding-inline: var(--_mono-select-padding-start) var(--_mono-select-padding-end);\r\n outline-style: none;\r\n border: var(--mono-border-width) solid var(--_mono-select-bc);\r\n border-top-color: var(--_mono-select-side-bc);\r\n border-inline-color: var(--_mono-select-side-bc);\r\n border-radius: var(--_mono-select-radius);\r\n background: var(--_mono-select-bg);\r\n color: var(--_mono-select-text);\r\n box-shadow: var(--_mono-select-ring), var(--_mono-select-shadow);\r\n font-family: inherit;\r\n font-size: var(--_mono-select-font-size);\r\n line-height: var(--_mono-select-line-height);\r\n font-weight: var(--mono-font-weight-normal);\r\n white-space: nowrap;\r\n text-align: start;\r\n cursor: pointer;\r\n user-select: none;\r\n transition-property: color, box-shadow, border-color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n\r\n &:focus,\r\n &:focus-visible,\r\n &:focus-within {\r\n outline: none !important;\r\n }\r\n\r\n /* focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 —\r\n the combobox form is a <div> whose <input> takes focus, hence :focus-within */\r\n &:focus-visible,\r\n &:focus-within {\r\n --_mono-select-bc: var(--_mono-select-ring-color);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-ring-color) var(--_mono-select-ring-alpha), transparent);\r\n }\r\n\r\n & svg,\r\n & [mono-icon] {\r\n pointer-events: none;\r\n flex-shrink: 0;\r\n }\r\n}\r\n\r\n/* dark:hover:bg-input/50 (light: none) — carried by --mono-mode-field-hover-bg */\r\n@media (hover: hover) {\r\n [mono-select]:not([mono-disabled]):not([mono-readonly]):not([mono-ds-loading]) > [mono-trigger]:hover {\r\n background: var(--_mono-select-hover-bg);\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — aria-invalid:border-destructive\r\n aria-invalid:ring-3 aria-invalid:ring-destructive/20 (dark: /50, /40 via the mode tokens) */\r\n[mono-select][mono-validation-state=\"invalid\"] > [mono-trigger],\r\n[mono-select] > [mono-trigger][aria-invalid=\"true\"] {\r\n --_mono-select-bc: var(--mono-mode-invalid-border);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) var(--mono-mode-invalid-ring);\r\n}\r\n\r\n/* EXTENSION — valid / warning are the invalid pattern in the role's colour */\r\n[mono-select][mono-validation-state=\"valid\"] > [mono-trigger] {\r\n --_mono-select-bc: color-mix(in oklab, var(--_mono-select-valid) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-valid) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n[mono-select][mono-validation-state=\"warning\"] > [mono-trigger] {\r\n --_mono-select-bc: color-mix(in oklab, var(--_mono-select-warning) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-warning) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n\r\n/* EXTENSION — the bound dataSource failed: the invalid outline ONLY. Label,\r\n message and validation state stay as they are; it is not a validation error. */\r\n[mono-select][mono-ds-error] > [mono-trigger] {\r\n --_mono-select-bc: var(--mono-select-ds-error-border, var(--mono-mode-invalid-border));\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) var(--mono-select-ds-error-ring, var(--mono-mode-invalid-ring));\r\n}\r\n\r\n[mono-select] [mono-value][mono-ds-error-text] {\r\n color: var(--mono-select-ds-error-text, var(--_mono-select-invalid));\r\n}\r\n\r\n/* EXTENSION — the first load (or a retry) is in flight: read-only, no hover */\r\n[mono-select][mono-ds-loading] > [mono-trigger] {\r\n cursor: progress;\r\n}\r\n\r\n/* EXTENSION — readonly: focusable, on a muted surface, no gestures */\r\n[mono-select][mono-readonly] > [mono-trigger] {\r\n background: var(--mono-select-readonly-bg, var(--muted));\r\n cursor: default;\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button — disabled:\r\n pointer-events-none cursor-not-allowed opacity-50 */\r\n[mono-select][mono-disabled] > [mono-trigger],\r\n[mono-select] > [mono-trigger]:disabled,\r\n/* a raw readonly select can only disable its native <select>; the root attribute wins */\r\n[mono-select]:not([mono-readonly]) > [mono-trigger]:has(> [mono-native]:disabled) {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n background: var(--mono-select-disabled-bg, var(--_mono-select-bg));\r\n}\r\n\r\n/* =========================================\r\n Value / search field / native <select>\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button > span —\r\n flex flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-start */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button > span — gap-1.5 */\r\n[mono-select] [mono-value] {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n display: flex;\r\n align-items: center;\r\n gap: var(--_mono-select-gap);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n text-align: start;\r\n color: var(--_mono-select-text);\r\n}\r\n\r\n[mono-select] [mono-value] > span {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n[mono-select] [mono-value][mono-placeholder] {\r\n color: var(--_mono-select-placeholder);\r\n}\r\n\r\n/* basecoat@1.0.2 components/combobox.css .combobox > input[role='combobox'] — the\r\n search input lives INSIDE our trigger box, so it is borderless like\r\n .input-group > input and the box around it carries the chrome */\r\n[mono-select] [mono-search-field],\r\n[mono-select] [mono-native] {\r\n flex: 1 1 auto;\r\n width: 100%;\r\n min-width: 0;\r\n align-self: stretch;\r\n appearance: none;\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n border-radius: 0;\r\n outline: none;\r\n background: transparent;\r\n box-shadow: none;\r\n color: var(--_mono-select-text);\r\n font: inherit;\r\n line-height: var(--_mono-select-line-height);\r\n\r\n &:focus,\r\n &:focus-visible {\r\n outline: none !important;\r\n }\r\n\r\n &::placeholder {\r\n color: var(--_mono-select-placeholder);\r\n }\r\n\r\n &:disabled {\r\n cursor: not-allowed;\r\n }\r\n}\r\n\r\n[mono-select] [mono-search-field] {\r\n cursor: text;\r\n}\r\n\r\n[mono-select] [mono-native] {\r\n cursor: inherit;\r\n}\r\n\r\n[mono-select] [mono-native] option {\r\n color: var(--_mono-select-text);\r\n background: var(--popover);\r\n}\r\n\r\n/* =========================================\r\n Actions — the chevron and the clear button\r\n ========================================= */\r\n\r\n[mono-select] [mono-actions] {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--mono-spacing);\r\n flex-shrink: 0;\r\n line-height: 1;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button > svg — size-4\r\n text-muted-foreground; mono: the glyph sits in a square action box so the\r\n chevron and the clear button occupy the same gutter */\r\n/* basecoat@1.0.2 components/combobox.css .combobox [data-clear] — size-6 border-0\r\n bg-transparent p-0 text-current */\r\n[mono-select] [mono-arrow],\r\n[mono-select] [mono-clear],\r\n[mono-select] [mono-ds-retry],\r\n[mono-select] [mono-ds-spinner] {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n width: var(--_mono-select-action);\r\n height: var(--_mono-select-action);\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n border-radius: var(--mono-select-clear-radius, calc(var(--radius) - 5px));\r\n background: transparent;\r\n color: var(--_mono-select-muted);\r\n font: inherit;\r\n line-height: 1;\r\n cursor: pointer;\r\n transition-property: color, background-color, transform;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n[mono-select] :is([mono-arrow], [mono-clear], [mono-ds-retry], [mono-ds-spinner]) > :is(svg, .mono-icon, [mono-icon]) {\r\n display: block;\r\n width: var(--_mono-select-icon);\r\n height: var(--_mono-select-icon);\r\n pointer-events: none;\r\n}\r\n\r\n/* EXTENSION — the chevron turns while the panel is open */\r\n[mono-select][mono-open] [mono-arrow] > :is(svg, .mono-icon, [mono-icon]) {\r\n transform: rotate(180deg);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .btn[data-variant='ghost'] — hover:bg-muted\r\n hover:text-foreground (dark:hover:bg-muted/50 via --mono-mode-ghost-hover) */\r\n@media (hover: hover) {\r\n [mono-select] :is([mono-arrow], [mono-clear], [mono-ds-retry]):hover {\r\n background: var(--mono-mode-ghost-hover);\r\n color: var(--_mono-select-text);\r\n }\r\n}\r\n\r\n/* EXTENSION — dataSource state glyphs: the busy arc spins, the ↻ wears the\r\n error colour so it reads as the way out of the red field */\r\n[mono-select] [mono-ds-spinner] {\r\n cursor: progress;\r\n}\r\n\r\n[mono-select] [mono-ds-spinner] > svg {\r\n animation: mono-select-spin 0.7s linear infinite;\r\n}\r\n\r\n[mono-select] [mono-ds-retry] {\r\n color: var(--mono-select-ds-error-text, var(--_mono-select-invalid));\r\n}\r\n\r\n@keyframes mono-select-spin {\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n [mono-select] [mono-ds-spinner] > svg {\r\n animation-duration: 2.4s;\r\n }\r\n}\r\n\r\n/* =========================================\r\n The panel\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/popover.css [data-popover] — absolute z-50 min-w-full\r\n overflow-x-hidden; mono: `display: none` while closed (the contents are only\r\n rendered while open), `--mono-popup-z` from the shared popup stack and\r\n `--mono-popup-avail-h` from the portal controller cap the whole panel */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [data-popover] — bg-popover\r\n text-popover-foreground rounded-md shadow-md ring-1 ring-foreground/10; the\r\n `p-1` moves to the scrolling body (the combobox layout), so the scrollbar\r\n never paints over the padding */\r\n[mono-select] > [mono-dropdown] {\r\n position: absolute;\r\n /* `top: auto` = the static position: the panel follows the trigger in the DOM,\r\n so in block flow it lands right under it (the popup controller overrides\r\n this inline for the element; hand-written markup relies on it). */\r\n top: auto;\r\n /* the 6px offset as a transform: the controller writes `transform: none` inline\r\n with its fixed position, so only the hand-written panel is pushed down */\r\n transform: translateY(calc(var(--mono-spacing) * 1.5));\r\n /* Both edges pinned, so the panel matches the field by default. An inline\r\n `width` from `:dropdown.prop=\"{ width }\"` is then the over-constrained case,\r\n which CSS resolves by ignoring `right` — the panel keeps this left edge and\r\n takes the given width. */\r\n left: 0;\r\n right: 0;\r\n z-index: var(--mono-popup-z, 1000);\r\n display: none;\r\n /* Basecoat's `min-w-[max(100%,9rem)]` is relative to the .select box; a portaled\r\n panel is position: fixed, where 100% would be the viewport — the controller\r\n writes the anchor's width inline instead, so only the floor stays. */\r\n min-width: var(--mono-select-dropdown-min-width, 9rem);\r\n max-height: var(--mono-popup-avail-h, none);\r\n overflow: hidden;\r\n isolation: isolate;\r\n border-radius: var(--mono-select-dropdown-radius, var(--mono-radius-md));\r\n background: var(--mono-select-dropdown-bg, var(--popover));\r\n color: var(--mono-select-dropdown-color, var(--popover-foreground));\r\n box-shadow: var(--mono-select-dropdown-ring, 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent)), var(--mono-select-dropdown-shadow, var(--mono-shadow-md));\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n}\r\n\r\n[mono-select][mono-open] > [mono-dropdown] {\r\n /* A flex column (not `block`) so the body can shrink past its own height when\r\n the panel is clamped above. */\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .combobox [role='listbox'] — max-h-[min(18rem,\r\n var(--available-height,18rem))] scroll-py-1 overflow-y-auto p-1 */\r\n[mono-select] [mono-dropdown-body] {\r\n flex: 1 1 auto;\r\n min-height: 0;\r\n max-height: 18rem;\r\n padding: var(--mono-select-dropdown-padding, var(--mono-spacing));\r\n overflow: auto;\r\n overscroll-behavior: contain;\r\n scroll-padding-block: var(--mono-select-dropdown-padding, var(--mono-spacing));\r\n outline-style: none;\r\n}\r\n\r\n/* =========================================\r\n Options\r\n -----------------------------------------\r\n Each rule also lists the stamped twin of a row rendered through `slot=\"list\"`\r\n (`[data-mono-type='row']`, `[data-mono-active]`, `[data-mono-selected]`), so\r\n the two can never drift: what you render in the slot IS an option. `:where()`\r\n wraps only the CONTAINER, keeping the twin at attribute weight.\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) [role='option'] — relative\r\n flex w-full cursor-default items-center overflow-hidden text-ellipsis whitespace-\r\n nowrap outline-none select-none; disabled: pointer-events-none opacity-50 */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='option'] — gap-2\r\n rounded-sm py-1.5 ps-2 pe-8 text-sm, svg size-4 */\r\n[mono-select] [mono-item],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'] {\r\n position: relative;\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n gap: var(--mono-select-option-gap, calc(var(--mono-spacing) * 2));\r\n margin: 0;\r\n padding-block: var(--mono-select-option-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-option-padding-x, calc(var(--mono-spacing) * 2)) var(--mono-select-option-padding-end, calc(var(--mono-spacing) * 8));\r\n min-height: var(--mono-select-option-min-height, 0);\r\n border: 0;\r\n border-radius: var(--mono-select-option-radius, var(--mono-radius-sm));\r\n /* longhands, so the selected row's check (a background-image) survives the\r\n active / hover background */\r\n background-color: transparent;\r\n background-image: none;\r\n color: var(--_mono-select-text);\r\n font-family: inherit;\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n font-weight: var(--mono-select-option-font-weight, var(--mono-font-weight-normal));\r\n text-align: start;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n outline-style: none;\r\n user-select: none;\r\n cursor: default;\r\n transition-property: color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration-fast);\r\n}\r\n\r\n/* EXTENSION: a hair of air between rows. Upstream stacks its options flush, so an\r\n active row directly under the selected one read as ONE tall highlight; a 2px\r\n seam keeps the two rounded-sm washes apart. `--mono-select-option-spacing`. */\r\n[mono-select] [mono-item] + [mono-item],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'] + [data-mono-type='row'] {\r\n margin-top: var(--mono-select-option-spacing, 2px);\r\n}\r\n\r\n[mono-select] [mono-item] svg:not([class*='size-']),\r\n[mono-select] [mono-item] .mono-icon {\r\n width: var(--_mono-select-icon);\r\n height: var(--_mono-select-icon);\r\n flex-shrink: 0;\r\n pointer-events: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='option'].active, .select:not(select) [role='option']:focus-visible\r\n — bg-muted text-foreground. The keyboard cursor and the pointer share one look. */\r\n[mono-select] [mono-item][mono-active]:not([mono-disabled]):not(:disabled),\r\n[mono-select] [mono-item]:focus-visible,\r\n[mono-select] :where([mono-list-slot]) [data-mono-active] {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--mono-select-option-active-color, var(--_mono-select-text));\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select):not([data-select-initialized]) [role='option']:not([aria-disabled='true']):not(:disabled):hover, .select:not(select) [role='option'].active\r\n — the pointer highlight is NOT behind (hover: hover) upstream */\r\n[mono-select] [mono-item]:hover:not([mono-disabled]):not(:disabled),\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row']:hover {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--mono-select-option-active-color, var(--_mono-select-text));\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) [role='option'][aria-selected='true']\r\n — the --check-icon at the end (bg-size .875rem, center right .5rem) */\r\n[mono-select] [mono-item][mono-selected],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'][data-mono-selected] {\r\n background-image: var(--mono-select-check-icon, var(--check-icon));\r\n background-size: var(--mono-select-check-size, 0.875rem);\r\n background-position: center right calc(var(--mono-spacing) * 2);\r\n background-repeat: no-repeat;\r\n font-weight: var(--mono-select-option-selected-font-weight, var(--mono-select-option-font-weight, var(--mono-font-weight-normal)));\r\n}\r\n\r\n[mono-select] [mono-item][mono-selected]:dir(rtl),\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'][data-mono-selected]:dir(rtl) {\r\n background-position: center left calc(var(--mono-spacing) * 2);\r\n}\r\n\r\n[mono-select] [mono-item][mono-disabled],\r\n[mono-select] [mono-item]:disabled {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='listbox']:not(:has([data-value]:not([aria-hidden='true'])))::before\r\n — py-6 text-center text-sm (the \"No results found\" row) */\r\n[mono-select] [mono-empty-row] {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding-block: calc(var(--mono-spacing) * 6);\r\n padding-inline: calc(var(--mono-spacing) * 3);\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n color: var(--_mono-select-muted);\r\n text-align: center;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='heading'] — px-2 py-1.5\r\n text-xs text-muted-foreground; EXTENSION: one indent step per nesting level */\r\n[mono-select] [mono-group],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'] {\r\n --_ms-group-level: 0;\r\n padding-block: var(--mono-select-group-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-group-padding-x, calc(var(--mono-spacing) * 2));\r\n padding-inline-start: calc(var(--mono-select-group-padding-x, calc(var(--mono-spacing) * 2)) + var(--_ms-group-level) * calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-select-group-font-size, var(--mono-text-xs));\r\n line-height: var(--mono-select-group-line-height, var(--mono-text-xs--lh));\r\n font-weight: var(--mono-select-group-font-weight, var(--mono-font-weight-normal));\r\n text-transform: var(--mono-select-group-text-transform, none);\r\n letter-spacing: var(--mono-select-group-letter-spacing, normal);\r\n color: var(--_mono-select-muted);\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n[mono-select] [mono-group][mono-level='1'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='1'] { --_ms-group-level: 1; }\r\n[mono-select] [mono-group][mono-level='2'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='2'] { --_ms-group-level: 2; }\r\n[mono-select] [mono-group][mono-level='3'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='3'] { --_ms-group-level: 3; }\r\n\r\n/* group-sticky: pin headers while their rows scroll; nested levels stack on the\r\n panel's own surface so options scroll cleanly underneath. */\r\n[mono-select] [mono-group][mono-sticky] {\r\n position: sticky;\r\n top: calc(var(--_ms-group-level) * 1.5rem);\r\n z-index: calc(5 - var(--_ms-group-level));\r\n background: var(--mono-select-dropdown-bg, var(--popover));\r\n}\r\n\r\n/* EXTENSION — the load-more affordance: an option-shaped ghost button */\r\n[mono-select] [mono-load-more] {\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n justify-content: center;\r\n gap: var(--mono-select-option-gap, calc(var(--mono-spacing) * 2));\r\n margin: 0;\r\n padding-block: var(--mono-select-option-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-option-padding-x, calc(var(--mono-spacing) * 2));\r\n border: 0;\r\n border-radius: var(--mono-select-option-radius, var(--mono-radius-sm));\r\n background: transparent;\r\n color: var(--_mono-select-muted);\r\n font-family: inherit;\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n font-weight: var(--mono-font-weight-medium);\r\n cursor: pointer;\r\n transition-property: color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration-fast);\r\n}\r\n\r\n@media (hover: hover) {\r\n [mono-select] [mono-load-more]:hover:not([mono-loading]) {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--_mono-select-text);\r\n }\r\n}\r\n\r\n[mono-select] [mono-load-more][mono-loading] {\r\n cursor: default;\r\n opacity: 0.7;\r\n}\r\n\r\n/* Consumer-rendered option rows (slot=\"list\"). `display: contents` so mono's own\r\n placement wrapper generates no box: the rows the consumer writes lay out as if\r\n they were direct children of the panel. */\r\n[mono-select] [mono-list-slot] {\r\n display: contents;\r\n}\r\n\r\n/* =========================================\r\n Message — helper / validation text under the field\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .fieldset legend + p, .field > p, .field section > p\r\n — text-sm text-muted-foreground leading-normal font-normal */\r\n[mono-select] > [mono-message-wrap] {\r\n display: block;\r\n margin-top: var(--_mono-select-gap-y);\r\n}\r\n\r\n[mono-select] > [mono-message-wrap]:not(:has([mono-message]:not([mono-empty]))) {\r\n display: none;\r\n}\r\n\r\n[mono-select] [mono-message] {\r\n font-size: var(--mono-select-message-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-message-line-height, var(--mono-leading-normal));\r\n font-weight: var(--mono-font-weight-normal);\r\n text-align: start;\r\n color: var(--_mono-select-muted);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field [role=\"alert\"] — text-destructive text-sm */\r\n[mono-select] [mono-message=\"invalid\"] {\r\n color: var(--_mono-select-invalid);\r\n}\r\n\r\n[mono-select] [mono-message=\"valid\"] {\r\n color: var(--_mono-select-valid);\r\n}\r\n\r\n[mono-select] [mono-message=\"warning\"] {\r\n color: var(--_mono-select-warning);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n [mono-select] > [mono-trigger],\r\n [mono-select] [mono-arrow],\r\n [mono-select] [mono-clear],\r\n [mono-select] [mono-item] {\r\n transition: none;\r\n }\r\n}\r\n";
|
|
2029
|
+
//#region \0raw:C:\Users\VCT-DEV\Desktop\libs\packages\helper\src\components\select\select.css?raw.js
|
|
2030
|
+
var select_css_raw_default = "/* =========================================================================\r\n mono-select — a port of Basecoat's `.select` (the custom one, `.select:not(select)`)\r\n and `.combobox` (basecoat-css@1.0.2, vega style), on the `.field` / `.label`\r\n chrome mono-input already ported.\r\n\r\n Styled by ATTRIBUTE, like Basecoat (`.select > button`, `[role='option'].active`)\r\n — and the attributes mirror the element's props one for one, so hand-written\r\n markup reads like the Lit / Vue tag:\r\n\r\n <mono-select size=\"sm\" color=\"danger\" variant=\"filled\" label=\"Fruit\">\r\n <div mono-select mono-size=\"sm\" mono-color=\"danger\" mono-variant=\"filled\">\r\n <label mono-label>Fruit</label>\r\n <button mono-trigger><span mono-value mono-placeholder>Pick</span>\r\n <span mono-actions><span mono-arrow>…</span></span></button>\r\n <div mono-dropdown><div mono-dropdown-body><button mono-item>…</button></div></div>\r\n </div>\r\n\r\n An absent attribute is the prop's default (`:not([mono-size])` = md,\r\n `:not([mono-color])` = primary, `:not([mono-variant])` = outlined). The element\r\n renders these attributes on its wrapper (both builds) plus `mono-open` while\r\n the panel is open; the old classes (`.mono-select.sm.open`) are still emitted\r\n as inert hooks for consumer CSS until 2.0 but no rule here reads them.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-select] ≡ .field (gap-3, as margins — see the root rule) + .select (position: relative)\r\n [mono-select] > [mono-label] ≡ .field > label / .label\r\n [mono-select] > [mono-trigger] ≡ .select > button (h-9 rounded-md border-input ps-2.5 pe-2 text-sm shadow-xs)\r\n [mono-select][mono-searchable] > [mono-trigger] ≡ .combobox > input[role='combobox'] (same box; the input sits inside it)\r\n [mono-trigger] > [mono-value] ≡ .select > button > span (flex-1 truncate text-start)\r\n [mono-trigger] > [mono-native] ≡ EXTENSION — a plain <select> may stand in for the value + panel (appearance: none)\r\n [mono-actions] > [mono-arrow] > [mono-icon] ≡ .select > button > svg (size-4 text-muted-foreground)\r\n [mono-actions] > [mono-clear] ≡ .combobox [data-clear] (size-6, painted as .btn[data-variant='ghost'])\r\n [mono-dropdown] ≡ .select [data-popover] (bg-popover ring-1 ring-foreground/10 rounded-md shadow-md)\r\n [mono-dropdown-body] ≡ .combobox [role='listbox'] (max-h-72 overflow-y-auto p-1 scroll-py-1)\r\n [mono-item] ≡ .select [role='option'] (gap-2 rounded-sm py-1.5 ps-2 pe-8 text-sm)\r\n [mono-item][mono-active] / :hover ≡ [role='option'].active (bg-muted text-foreground)\r\n [mono-item][mono-selected] ≡ [role='option'][aria-selected='true'] (the --check-icon at the end)\r\n [mono-group] ≡ .select [role='heading'] (px-2 py-1.5 text-xs text-muted-foreground)\r\n [mono-empty-row] ≡ .select [role='listbox']::before (py-6 text-center text-sm)\r\n [mono-load-more] ≡ EXTENSION (an option-shaped ghost button)\r\n [mono-message-wrap] > [mono-message] ≡ .field > p / .field [role='alert']\r\n [mono-validation-state=\"invalid\"] ≡ .select > button[aria-invalid='true']\r\n [mono-validation-state=\"valid|warning\"] ≡ EXTENSION (the invalid pattern in --success / --warning)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION (Basecoat has only data-size=sm; the ladder is --mono-control-height-*)\r\n [mono-variant=\"filled\"] ≡ EXTENSION (luma's .select > button: border-transparent bg-input/50)\r\n [mono-variant=\"underlined\"] ≡ EXTENSION (sera's: rounded-none border-b-input px-0, no ring)\r\n\r\n Inner parts are attributes too: [mono-label] (+ [mono-required-mark]),\r\n [mono-trigger], [mono-value] (+ [mono-placeholder]), [mono-search-field],\r\n [mono-native], [mono-actions], [mono-clear], [mono-arrow], [mono-icon],\r\n [mono-dropdown], [mono-dropdown-body], [mono-item] (+ [mono-active] /\r\n [mono-selected] / [mono-disabled]), [mono-group] (+ [mono-sticky],\r\n [mono-level=\"n\"]), [mono-empty-row], [mono-load-more] (+ [mono-loading]),\r\n [mono-list-slot], [mono-message-wrap] > [mono-message=\"helper|valid|invalid|warning\"].\r\n The shadow build marks an unassigned slot wrapper [mono-empty].\r\n\r\n THE PANEL IS PORTALED. The light build moves [mono-dropdown] into a\r\n `<div data-mono-popup-portal>` under <body> while open (composables/popup-\r\n portal.ts), and the portal mirrors the wrapper's class AND its mono-*\r\n attributes — so `[mono-select] > [mono-dropdown]` keeps matching there and\r\n the `--_mono-select-*` resolvers declared on `[mono-select]` re-resolve on\r\n the portal. Nothing here may rely on the panel being inside the trigger's\r\n host, and every option rule is scoped under `[mono-select]`.\r\n\r\n Values are copied from the compiled vendor sheet (vendor/basecoat/basecoat-\r\n vega.cdn.css) through the token layer; `dark:` variants travel as\r\n `--mono-mode-*` tokens (a selector cannot cross a shadow boundary; an\r\n inherited custom property can). FLAVORS set the `--mono-select-*` knobs read\r\n below — the same set as mono-input (`--mono-select-outline-*` for the outlined\r\n variant alone) plus `--mono-select-dropdown-{radius,padding,shadow,ring}`,\r\n `--mono-select-option-{radius,padding-x,padding-y,font-size,line-height,gap,font-weight}`,\r\n `--mono-select-group-*`, `--mono-select-icon-size`. Every fallback here is vega's\r\n value (`node scripts/basecoat-styles.mjs --varying \"^(\\.select:not\\(select\\)|\\.combobox)\"`).\r\n ========================================================================= */\r\n\r\nmono-select {\r\n display: block;\r\n}\r\n\r\n[mono-select] {\r\n /* ── palette: each slot is a public knob over a Basecoat token ─────────── */\r\n --_mono-select-text: var(--mono-select-color, var(--mono-select-text, var(--foreground)));\r\n --_mono-select-placeholder: var(--mono-select-placeholder, var(--muted-foreground));\r\n --_mono-select-muted: var(--mono-select-muted, var(--muted-foreground));\r\n --_mono-select-primary: var(--mono-select-primary, var(--ring));\r\n --_mono-select-secondary: var(--mono-select-secondary, var(--muted-foreground));\r\n --_mono-select-success: var(--mono-select-success, var(--success));\r\n --_mono-select-danger: var(--mono-select-danger, var(--destructive));\r\n --_mono-select-warning: var(--mono-select-warning, var(--warning));\r\n --_mono-select-info: var(--mono-select-info, var(--info));\r\n --_mono-select-teal: var(--mono-select-teal, var(--teal));\r\n --_mono-select-purple: var(--mono-select-purple, var(--purple));\r\n --_mono-select-neutral: var(--mono-select-neutral, var(--neutral));\r\n --_mono-select-dark: var(--mono-select-dark, var(--dark));\r\n --_mono-select-valid: var(--mono-select-valid, var(--success));\r\n --_mono-select-invalid: var(--mono-select-invalid, var(--destructive));\r\n\r\n /* ── the painted result — three tiers, base = .select > button (vega) ─── */\r\n --_mono-select-ring-color: var(--mono-select-ring-color, var(--mono-select-focus-color, var(--_mono-select-ring-color-preset, var(--_mono-select-primary))));\r\n --_mono-select-ring-width: var(--mono-select-ring-width, var(--_mono-select-ring-width-preset, var(--mono-ring-width)));\r\n --_mono-select-ring-alpha: var(--mono-select-ring-alpha, var(--mono-ring-alpha));\r\n --_mono-select-border-color: var(--mono-select-rest-border, var(--mono-select-border-color, var(--mono-select-border, var(--_mono-select-border-color-preset, var(--input)))));\r\n --_mono-select-bg: var(--mono-select-bg, var(--mono-select-surface, var(--_mono-select-bg-preset, var(--mono-mode-surface))));\r\n --_mono-select-hover-bg: var(--mono-select-hover-bg, var(--_mono-select-hover-bg-preset, var(--_mono-select-bg)));\r\n --_mono-select-shadow: var(--mono-select-shadow, var(--_mono-select-shadow-preset, 0 0 #0000));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 4));\r\n\r\n /* ── md metrics live on the unqualified root ON PURPOSE: hand-written\r\n `<div mono-select>` that names no size renders exactly like size=\"md\".\r\n basecoat@1.0.2 styles/vega.css .select:not(select) > button — h-9 gap-1.5\r\n rounded-md ps-2.5 pe-2 text-sm ── */\r\n --_mono-select-height: var(--mono-select-height-md, var(--mono-control-height-md));\r\n --_mono-select-radius: var(--mono-select-radius-md, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-md, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-md, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 1.5));\r\n --_mono-select-font-size: var(--mono-select-font-md, var(--mono-text-sm));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-md, var(--mono-text-sm--lh)));\r\n --_mono-select-action: calc(var(--mono-spacing) * 6);\r\n\r\n /* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3; mono: BLOCK\r\n flow with the gap as margins, so a hand-written panel that no controller\r\n positions lands at its static position — right under the trigger, above the\r\n message — instead of a flex container's content-box top */\r\n --_mono-select-gap-y: var(--mono-select-gap, calc(var(--mono-spacing) * 3));\r\n position: relative;\r\n display: block;\r\n width: 100%;\r\n font-family: inherit;\r\n color: var(--_mono-select-text);\r\n}\r\n\r\n/* A page-level `* { box-sizing: border-box }` reset does NOT cross a shadow\r\n boundary; scoped here so both builds measure the same. */\r\n[mono-select],\r\n[mono-select] *,\r\n[mono-select] *::before,\r\n[mono-select] *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n[mono-select] :is([mono-label], [mono-message])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n/* =========================================\r\n Sizes — the trigger's painted height IS the token (tests/perf/field-heights)\r\n EXTENSION: Basecoat's select has only data-size=sm; the ladder is the shared\r\n --mono-control-height-* scale and the text follows .btn's steps.\r\n ========================================= */\r\n\r\n[mono-select][mono-size=\"xs\"] {\r\n --_mono-select-height: var(--mono-select-height-xs, var(--mono-control-height-xs));\r\n --_mono-select-radius: var(--mono-select-radius-xs, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xs, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xs, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 1.5))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, var(--mono-spacing));\r\n --_mono-select-font-size: var(--mono-select-font-xs, var(--mono-text-xs));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xs, var(--mono-text-xs--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 3.5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 4);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — data-[size=sm]:h-8 */\r\n[mono-select][mono-size=\"sm\"] {\r\n --_mono-select-height: var(--mono-select-height-sm, var(--mono-control-height-sm));\r\n --_mono-select-radius: var(--mono-select-radius-sm, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-sm, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-sm, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-font-size: var(--mono-select-font-sm, var(--mono-select-font-md, var(--mono-text-sm)));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-sm, var(--mono-text-sm--lh)));\r\n --_mono-select-action: calc(var(--mono-spacing) * 5);\r\n}\r\n\r\n[mono-select][mono-size=\"lg\"] {\r\n --_mono-select-height: var(--mono-select-height-lg, var(--mono-control-height-lg));\r\n --_mono-select-radius: var(--mono-select-radius-lg, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-lg, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-lg, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-select-font-size: var(--mono-select-font-lg, var(--mono-select-font-md, var(--mono-text-sm)));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-lg, var(--mono-text-sm--lh)));\r\n}\r\n\r\n[mono-select][mono-size=\"xl\"] {\r\n --_mono-select-height: var(--mono-select-height-xl, var(--mono-control-height-xl));\r\n --_mono-select-radius: var(--mono-select-radius-xl, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 3))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 2));\r\n --_mono-select-font-size: var(--mono-select-font-xl, var(--mono-text-base));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xl, var(--mono-text-base--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 7);\r\n}\r\n\r\n[mono-select][mono-size=\"xxl\"] {\r\n --_mono-select-height: var(--mono-select-height-xxl, var(--mono-control-height-xxl));\r\n --_mono-select-radius: var(--mono-select-radius-xxl, var(--_mono-select-radius-preset, var(--mono-select-radius, var(--mono-radius-md))));\r\n --_mono-select-padding-start: var(--mono-select-padding-x-xxl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 4))));\r\n --_mono-select-padding-end: var(--mono-select-padding-end-xxl, var(--mono-select-padding-x, var(--_mono-select-padding-x-preset, calc(var(--mono-spacing) * 3))));\r\n --_mono-select-gap: var(--mono-select-trigger-gap, calc(var(--mono-spacing) * 2));\r\n --_mono-select-font-size: var(--mono-select-font-xxl, var(--mono-text-lg));\r\n --_mono-select-line-height: var(--mono-select-line-height, var(--mono-select-line-height-xxl, var(--mono-text-lg--lh)));\r\n --_mono-select-icon: var(--mono-select-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-select-action: calc(var(--mono-spacing) * 8);\r\n}\r\n\r\n/* =========================================\r\n Variants — each writes only `*-preset` slots\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — rounded-md border\r\n border-input bg-transparent shadow-xs (dark:bg-input/30 dark:hover:bg-input/50\r\n via the mode tokens). `--mono-select-outline-*` restyle THIS variant alone. */\r\n[mono-select]:is(:not([mono-variant]), [mono-variant=\"outlined\"]) {\r\n --_mono-select-bg-preset: var(--mono-select-outline-bg);\r\n --_mono-select-hover-bg-preset: var(--mono-select-outline-hover-bg, var(--mono-mode-field-hover-bg));\r\n --_mono-select-border-color-preset: var(--mono-select-outline-border-color);\r\n --_mono-select-side-border-color-preset: var(--mono-select-outline-side-border-color);\r\n --_mono-select-shadow-preset: var(--mono-select-outline-shadow, var(--mono-shadow-xs));\r\n --_mono-select-ring-width-preset: var(--mono-select-outline-ring-width);\r\n --_mono-select-radius-preset: var(--mono-select-outline-radius);\r\n --_mono-select-padding-x-preset: var(--mono-select-outline-padding-x);\r\n}\r\n\r\n/* EXTENSION — filled ≡ basecoat@1.0.2 styles/luma.css .select:not(select) > button:\r\n border-transparent bg-input/50, no shadow-xs, no hover */\r\n[mono-select][mono-variant=\"filled\"] {\r\n --_mono-select-bg-preset: var(--mono-select-filled-bg, color-mix(in oklab, var(--input) 50%, transparent));\r\n --_mono-select-hover-bg-preset: var(--_mono-select-bg);\r\n --_mono-select-border-color-preset: transparent;\r\n --_mono-select-shadow-preset: 0 0 #0000;\r\n}\r\n\r\n/* EXTENSION — underlined ≡ basecoat@1.0.2 styles/sera.css .select:not(select) > button:\r\n rounded-none border-transparent border-b-input bg-transparent px-0, no shadow,\r\n no ring, focus-visible:border-b-ring */\r\n[mono-select][mono-variant=\"underlined\"] {\r\n --_mono-select-bg-preset: transparent;\r\n --_mono-select-hover-bg-preset: transparent;\r\n --_mono-select-side-border-color-preset: transparent;\r\n --_mono-select-shadow-preset: 0 0 #0000;\r\n --_mono-select-ring-width-preset: 0px;\r\n --_mono-select-radius-preset: 0;\r\n --_mono-select-padding-x-preset: 0;\r\n}\r\n\r\n/* =========================================\r\n Colours — the `color` prop is the FOCUS colour (ring + focused border)\r\n ========================================= */\r\n\r\n[mono-select]:is(:not([mono-color]), [mono-color=\"primary\"]) {\r\n --_mono-select-ring-color-preset: var(--_mono-select-primary);\r\n}\r\n[mono-select][mono-color=\"secondary\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-secondary);\r\n}\r\n[mono-select][mono-color=\"success\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-success);\r\n}\r\n[mono-select][mono-color=\"danger\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-danger);\r\n}\r\n[mono-select][mono-color=\"warning\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-warning);\r\n}\r\n[mono-select][mono-color=\"info\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-info);\r\n}\r\n[mono-select][mono-color=\"teal\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-teal);\r\n}\r\n[mono-select][mono-color=\"purple\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-purple);\r\n}\r\n[mono-select][mono-color=\"neutral\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-neutral);\r\n}\r\n[mono-select][mono-color=\"dark\"] {\r\n --_mono-select-ring-color-preset: var(--_mono-select-dark);\r\n}\r\n\r\n/* =========================================\r\n Label\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > label, .label — flex items-center\r\n gap-2 text-sm leading-none font-medium select-none w-fit */\r\n[mono-select] > [mono-label] {\r\n display: flex;\r\n align-items: center;\r\n width: fit-content;\r\n margin: 0 0 var(--_mono-select-gap-y);\r\n gap: var(--mono-select-label-gap, calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-select-label-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-label-line-height, 1);\r\n font-weight: var(--mono-select-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)));\r\n text-transform: var(--mono-select-label-text-transform, none);\r\n letter-spacing: var(--mono-select-label-letter-spacing, normal);\r\n color: var(--_mono-select-text);\r\n user-select: none;\r\n}\r\n\r\n[mono-select][mono-disabled] > [mono-label] {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field — data-invalid:text-destructive */\r\n[mono-select][mono-validation-state=\"invalid\"] > [mono-label] {\r\n color: var(--_mono-select-invalid);\r\n}\r\n\r\n[mono-select] [mono-required-mark] {\r\n color: var(--_mono-select-danger);\r\n}\r\n\r\n/* =========================================\r\n The trigger — the bordered box (a <button>, or a <div> holding the combobox input)\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — h-9 gap-1.5\r\n rounded-md border border-input bg-transparent py-2 ps-2.5 pe-2 text-sm shadow-xs\r\n focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\r\n aria-invalid:… dark:hover:bg-input/50; mono: `--tw-ring-*` flattened to the\r\n ring + shadow slots, the height is the control token (no block padding — the\r\n token owns the height), the side edges read their own slot */\r\n[mono-select] > [mono-trigger] {\r\n --_mono-select-bc: var(--_mono-select-border-color);\r\n --_mono-select-side-bc: var(--mono-select-side-border-color, var(--_mono-select-side-border-color-preset, var(--_mono-select-bc)));\r\n --_mono-select-ring: 0 0 #0000;\r\n\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n gap: var(--_mono-select-gap);\r\n width: 100%;\r\n min-width: 0;\r\n min-height: var(--_mono-select-height);\r\n margin: 0;\r\n padding-block: var(--mono-select-padding-y, 0);\r\n padding-inline: var(--_mono-select-padding-start) var(--_mono-select-padding-end);\r\n outline-style: none;\r\n border: var(--mono-border-width) solid var(--_mono-select-bc);\r\n border-top-color: var(--_mono-select-side-bc);\r\n border-inline-color: var(--_mono-select-side-bc);\r\n border-radius: var(--_mono-select-radius);\r\n background: var(--_mono-select-bg);\r\n color: var(--_mono-select-text);\r\n box-shadow: var(--_mono-select-ring), var(--_mono-select-shadow);\r\n font-family: inherit;\r\n font-size: var(--_mono-select-font-size);\r\n line-height: var(--_mono-select-line-height);\r\n font-weight: var(--mono-font-weight-normal);\r\n white-space: nowrap;\r\n text-align: start;\r\n cursor: pointer;\r\n user-select: none;\r\n transition-property: color, box-shadow, border-color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n\r\n &:focus,\r\n &:focus-visible,\r\n &:focus-within {\r\n outline: none !important;\r\n }\r\n\r\n /* focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 —\r\n the combobox form is a <div> whose <input> takes focus, hence :focus-within */\r\n &:focus-visible,\r\n &:focus-within {\r\n --_mono-select-bc: var(--_mono-select-ring-color);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-ring-color) var(--_mono-select-ring-alpha), transparent);\r\n }\r\n\r\n & svg,\r\n & [mono-icon] {\r\n pointer-events: none;\r\n flex-shrink: 0;\r\n }\r\n}\r\n\r\n/* dark:hover:bg-input/50 (light: none) — carried by --mono-mode-field-hover-bg */\r\n@media (hover: hover) {\r\n [mono-select]:not([mono-disabled]):not([mono-readonly]):not([mono-ds-loading]) > [mono-trigger]:hover {\r\n background: var(--_mono-select-hover-bg);\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button — aria-invalid:border-destructive\r\n aria-invalid:ring-3 aria-invalid:ring-destructive/20 (dark: /50, /40 via the mode tokens) */\r\n[mono-select][mono-validation-state=\"invalid\"] > [mono-trigger],\r\n[mono-select] > [mono-trigger][aria-invalid=\"true\"] {\r\n --_mono-select-bc: var(--mono-mode-invalid-border);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) var(--mono-mode-invalid-ring);\r\n}\r\n\r\n/* EXTENSION — valid / warning are the invalid pattern in the role's colour */\r\n[mono-select][mono-validation-state=\"valid\"] > [mono-trigger] {\r\n --_mono-select-bc: color-mix(in oklab, var(--_mono-select-valid) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-valid) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n[mono-select][mono-validation-state=\"warning\"] > [mono-trigger] {\r\n --_mono-select-bc: color-mix(in oklab, var(--_mono-select-warning) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) color-mix(in oklab, var(--_mono-select-warning) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n\r\n/* EXTENSION — the bound dataSource failed: the invalid outline ONLY. Label,\r\n message and validation state stay as they are; it is not a validation error. */\r\n[mono-select][mono-ds-error] > [mono-trigger] {\r\n --_mono-select-bc: var(--mono-select-ds-error-border, var(--mono-mode-invalid-border));\r\n --_mono-select-ring: 0 0 0 var(--_mono-select-ring-width) var(--mono-select-ds-error-ring, var(--mono-mode-invalid-ring));\r\n}\r\n\r\n[mono-select] [mono-value][mono-ds-error-text] {\r\n color: var(--mono-select-ds-error-text, var(--_mono-select-invalid));\r\n}\r\n\r\n/* EXTENSION — the first load (or a retry) is in flight: read-only, no hover */\r\n[mono-select][mono-ds-loading] > [mono-trigger] {\r\n cursor: progress;\r\n}\r\n\r\n/* EXTENSION — readonly: focusable, on a muted surface, no gestures */\r\n[mono-select][mono-readonly] > [mono-trigger] {\r\n background: var(--mono-select-readonly-bg, var(--muted));\r\n cursor: default;\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button — disabled:\r\n pointer-events-none cursor-not-allowed opacity-50 */\r\n[mono-select][mono-disabled] > [mono-trigger],\r\n[mono-select] > [mono-trigger]:disabled,\r\n/* a raw readonly select can only disable its native <select>; the root attribute wins */\r\n[mono-select]:not([mono-readonly]) > [mono-trigger]:has(> [mono-native]:disabled) {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n background: var(--mono-select-disabled-bg, var(--_mono-select-bg));\r\n}\r\n\r\n/* =========================================\r\n Value / search field / native <select>\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) > button > span —\r\n flex flex-1 overflow-hidden text-ellipsis whitespace-nowrap text-start */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button > span — gap-1.5 */\r\n[mono-select] [mono-value] {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n display: flex;\r\n align-items: center;\r\n gap: var(--_mono-select-gap);\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n text-align: start;\r\n color: var(--_mono-select-text);\r\n}\r\n\r\n[mono-select] [mono-value] > span {\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n[mono-select] [mono-value][mono-placeholder] {\r\n color: var(--_mono-select-placeholder);\r\n}\r\n\r\n/* basecoat@1.0.2 components/combobox.css .combobox > input[role='combobox'] — the\r\n search input lives INSIDE our trigger box, so it is borderless like\r\n .input-group > input and the box around it carries the chrome */\r\n[mono-select] [mono-search-field],\r\n[mono-select] [mono-native] {\r\n flex: 1 1 auto;\r\n width: 100%;\r\n min-width: 0;\r\n align-self: stretch;\r\n appearance: none;\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n border-radius: 0;\r\n outline: none;\r\n background: transparent;\r\n box-shadow: none;\r\n color: var(--_mono-select-text);\r\n font: inherit;\r\n line-height: var(--_mono-select-line-height);\r\n\r\n &:focus,\r\n &:focus-visible {\r\n outline: none !important;\r\n }\r\n\r\n &::placeholder {\r\n color: var(--_mono-select-placeholder);\r\n }\r\n\r\n &:disabled {\r\n cursor: not-allowed;\r\n }\r\n}\r\n\r\n[mono-select] [mono-search-field] {\r\n cursor: text;\r\n}\r\n\r\n[mono-select] [mono-native] {\r\n cursor: inherit;\r\n}\r\n\r\n[mono-select] [mono-native] option {\r\n color: var(--_mono-select-text);\r\n background: var(--popover);\r\n}\r\n\r\n/* =========================================\r\n Actions — the chevron and the clear button\r\n ========================================= */\r\n\r\n[mono-select] [mono-actions] {\r\n display: flex;\r\n align-items: center;\r\n gap: var(--mono-spacing);\r\n flex-shrink: 0;\r\n line-height: 1;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) > button > svg — size-4\r\n text-muted-foreground; mono: the glyph sits in a square action box so the\r\n chevron and the clear button occupy the same gutter */\r\n/* basecoat@1.0.2 components/combobox.css .combobox [data-clear] — size-6 border-0\r\n bg-transparent p-0 text-current */\r\n[mono-select] [mono-arrow],\r\n[mono-select] [mono-clear],\r\n[mono-select] [mono-ds-retry],\r\n[mono-select] [mono-ds-spinner] {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n flex-shrink: 0;\r\n width: var(--_mono-select-action);\r\n height: var(--_mono-select-action);\r\n margin: 0;\r\n padding: 0;\r\n border: 0;\r\n border-radius: var(--mono-select-clear-radius, calc(var(--radius) - 5px));\r\n background: transparent;\r\n color: var(--_mono-select-muted);\r\n font: inherit;\r\n line-height: 1;\r\n cursor: pointer;\r\n transition-property: color, background-color, transform;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n[mono-select] :is([mono-arrow], [mono-clear], [mono-ds-retry], [mono-ds-spinner]) > :is(svg, .mono-icon, [mono-icon]) {\r\n display: block;\r\n width: var(--_mono-select-icon);\r\n height: var(--_mono-select-icon);\r\n pointer-events: none;\r\n}\r\n\r\n/* EXTENSION — the chevron turns while the panel is open */\r\n[mono-select][mono-open] [mono-arrow] > :is(svg, .mono-icon, [mono-icon]) {\r\n transform: rotate(180deg);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .btn[data-variant='ghost'] — hover:bg-muted\r\n hover:text-foreground (dark:hover:bg-muted/50 via --mono-mode-ghost-hover) */\r\n@media (hover: hover) {\r\n [mono-select] :is([mono-arrow], [mono-clear], [mono-ds-retry]):hover {\r\n background: var(--mono-mode-ghost-hover);\r\n color: var(--_mono-select-text);\r\n }\r\n}\r\n\r\n/* EXTENSION — dataSource state glyphs: the busy arc spins, the ↻ wears the\r\n error colour so it reads as the way out of the red field */\r\n[mono-select] [mono-ds-spinner] {\r\n cursor: progress;\r\n}\r\n\r\n[mono-select] [mono-ds-spinner] > svg {\r\n animation: mono-select-spin 0.7s linear infinite;\r\n}\r\n\r\n[mono-select] [mono-ds-retry] {\r\n color: var(--mono-select-ds-error-text, var(--_mono-select-invalid));\r\n}\r\n\r\n@keyframes mono-select-spin {\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n [mono-select] [mono-ds-spinner] > svg {\r\n animation-duration: 2.4s;\r\n }\r\n}\r\n\r\n/* =========================================\r\n The panel\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/popover.css [data-popover] — absolute z-50 min-w-full\r\n overflow-x-hidden; mono: `display: none` while closed (the contents are only\r\n rendered while open), `--mono-popup-z` from the shared popup stack and\r\n `--mono-popup-avail-h` from the portal controller cap the whole panel */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [data-popover] — bg-popover\r\n text-popover-foreground rounded-md shadow-md ring-1 ring-foreground/10; the\r\n `p-1` moves to the scrolling body (the combobox layout), so the scrollbar\r\n never paints over the padding */\r\n[mono-select] > [mono-dropdown] {\r\n position: absolute;\r\n /* `top: auto` = the static position: the panel follows the trigger in the DOM,\r\n so in block flow it lands right under it (the popup controller overrides\r\n this inline for the element; hand-written markup relies on it). */\r\n top: auto;\r\n /* the 6px offset as a transform: the controller writes `transform: none` inline\r\n with its fixed position, so only the hand-written panel is pushed down */\r\n transform: translateY(calc(var(--mono-spacing) * 1.5));\r\n /* Both edges pinned, so the panel matches the field by default. An inline\r\n `width` from `:dropdown.prop=\"{ width }\"` is then the over-constrained case,\r\n which CSS resolves by ignoring `right` — the panel keeps this left edge and\r\n takes the given width. */\r\n left: 0;\r\n right: 0;\r\n z-index: var(--mono-popup-z, 1000);\r\n display: none;\r\n /* Basecoat's `min-w-[max(100%,9rem)]` is relative to the .select box; a portaled\r\n panel is position: fixed, where 100% would be the viewport — the controller\r\n writes the anchor's width inline instead, so only the floor stays. */\r\n min-width: var(--mono-select-dropdown-min-width, 9rem);\r\n max-height: var(--mono-popup-avail-h, none);\r\n overflow: hidden;\r\n isolation: isolate;\r\n border-radius: var(--mono-select-dropdown-radius, var(--mono-radius-md));\r\n background: var(--mono-select-dropdown-bg, var(--popover));\r\n color: var(--mono-select-dropdown-color, var(--popover-foreground));\r\n box-shadow: var(--mono-select-dropdown-ring, 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent)), var(--mono-select-dropdown-shadow, var(--mono-shadow-md));\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n}\r\n\r\n[mono-select][mono-open] > [mono-dropdown] {\r\n /* A flex column (not `block`) so the body can shrink past its own height when\r\n the panel is clamped above. */\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .combobox [role='listbox'] — max-h-[min(18rem,\r\n var(--available-height,18rem))] scroll-py-1 overflow-y-auto p-1 */\r\n[mono-select] [mono-dropdown-body] {\r\n flex: 1 1 auto;\r\n min-height: 0;\r\n max-height: 18rem;\r\n padding: var(--mono-select-dropdown-padding, var(--mono-spacing));\r\n overflow: auto;\r\n overscroll-behavior: contain;\r\n scroll-padding-block: var(--mono-select-dropdown-padding, var(--mono-spacing));\r\n outline-style: none;\r\n}\r\n\r\n/* =========================================\r\n Options\r\n -----------------------------------------\r\n Each rule also lists the stamped twin of a row rendered through `slot=\"list\"`\r\n (`[data-mono-type='row']`, `[data-mono-active]`, `[data-mono-selected]`), so\r\n the two can never drift: what you render in the slot IS an option. `:where()`\r\n wraps only the CONTAINER, keeping the twin at attribute weight.\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) [role='option'] — relative\r\n flex w-full cursor-default items-center overflow-hidden text-ellipsis whitespace-\r\n nowrap outline-none select-none; disabled: pointer-events-none opacity-50 */\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='option'] — gap-2\r\n rounded-sm py-1.5 ps-2 pe-8 text-sm, svg size-4 */\r\n[mono-select] [mono-item],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'] {\r\n position: relative;\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n gap: var(--mono-select-option-gap, calc(var(--mono-spacing) * 2));\r\n margin: 0;\r\n padding-block: var(--mono-select-option-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-option-padding-x, calc(var(--mono-spacing) * 2)) var(--mono-select-option-padding-end, calc(var(--mono-spacing) * 8));\r\n min-height: var(--mono-select-option-min-height, 0);\r\n border: 0;\r\n border-radius: var(--mono-select-option-radius, var(--mono-radius-sm));\r\n /* longhands, so the selected row's check (a background-image) survives the\r\n active / hover background */\r\n background-color: transparent;\r\n background-image: none;\r\n color: var(--_mono-select-text);\r\n font-family: inherit;\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n font-weight: var(--mono-select-option-font-weight, var(--mono-font-weight-normal));\r\n text-align: start;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n outline-style: none;\r\n user-select: none;\r\n cursor: default;\r\n transition-property: color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration-fast);\r\n}\r\n\r\n/* EXTENSION: a hair of air between rows. Upstream stacks its options flush, so an\r\n active row directly under the selected one read as ONE tall highlight; a 2px\r\n seam keeps the two rounded-sm washes apart. `--mono-select-option-spacing`. */\r\n[mono-select] [mono-item] + [mono-item],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'] + [data-mono-type='row'] {\r\n margin-top: var(--mono-select-option-spacing, 2px);\r\n}\r\n\r\n[mono-select] [mono-item] svg:not([class*='size-']),\r\n[mono-select] [mono-item] .mono-icon {\r\n width: var(--_mono-select-icon);\r\n height: var(--_mono-select-icon);\r\n flex-shrink: 0;\r\n pointer-events: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='option'].active, .select:not(select) [role='option']:focus-visible\r\n — bg-muted text-foreground. The keyboard cursor and the pointer share one look. */\r\n[mono-select] [mono-item][mono-active]:not([mono-disabled]):not(:disabled),\r\n[mono-select] [mono-item]:focus-visible,\r\n[mono-select] :where([mono-list-slot]) [data-mono-active] {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--mono-select-option-active-color, var(--_mono-select-text));\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select):not([data-select-initialized]) [role='option']:not([aria-disabled='true']):not(:disabled):hover, .select:not(select) [role='option'].active\r\n — the pointer highlight is NOT behind (hover: hover) upstream */\r\n[mono-select] [mono-item]:hover:not([mono-disabled]):not(:disabled),\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row']:hover {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--mono-select-option-active-color, var(--_mono-select-text));\r\n}\r\n\r\n/* basecoat@1.0.2 components/select.css .select:not(select) [role='option'][aria-selected='true']\r\n — the --check-icon at the end (bg-size .875rem, center right .5rem) */\r\n[mono-select] [mono-item][mono-selected],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'][data-mono-selected] {\r\n background-image: var(--mono-select-check-icon, var(--check-icon));\r\n background-size: var(--mono-select-check-size, 0.875rem);\r\n background-position: center right calc(var(--mono-spacing) * 2);\r\n background-repeat: no-repeat;\r\n font-weight: var(--mono-select-option-selected-font-weight, var(--mono-select-option-font-weight, var(--mono-font-weight-normal)));\r\n}\r\n\r\n[mono-select] [mono-item][mono-selected]:dir(rtl),\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='row'][data-mono-selected]:dir(rtl) {\r\n background-position: center left calc(var(--mono-spacing) * 2);\r\n}\r\n\r\n[mono-select] [mono-item][mono-disabled],\r\n[mono-select] [mono-item]:disabled {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='listbox']:not(:has([data-value]:not([aria-hidden='true'])))::before\r\n — py-6 text-center text-sm (the \"No results found\" row) */\r\n[mono-select] [mono-empty-row] {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding-block: calc(var(--mono-spacing) * 6);\r\n padding-inline: calc(var(--mono-spacing) * 3);\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n color: var(--_mono-select-muted);\r\n text-align: center;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .select:not(select) [role='heading'] — px-2 py-1.5\r\n text-xs text-muted-foreground; EXTENSION: one indent step per nesting level */\r\n[mono-select] [mono-group],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'] {\r\n --_ms-group-level: 0;\r\n padding-block: var(--mono-select-group-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-group-padding-x, calc(var(--mono-spacing) * 2));\r\n padding-inline-start: calc(var(--mono-select-group-padding-x, calc(var(--mono-spacing) * 2)) + var(--_ms-group-level) * calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-select-group-font-size, var(--mono-text-xs));\r\n line-height: var(--mono-select-group-line-height, var(--mono-text-xs--lh));\r\n font-weight: var(--mono-select-group-font-weight, var(--mono-font-weight-normal));\r\n text-transform: var(--mono-select-group-text-transform, none);\r\n letter-spacing: var(--mono-select-group-letter-spacing, normal);\r\n color: var(--_mono-select-muted);\r\n cursor: default;\r\n user-select: none;\r\n}\r\n\r\n[mono-select] [mono-group][mono-level='1'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='1'] { --_ms-group-level: 1; }\r\n[mono-select] [mono-group][mono-level='2'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='2'] { --_ms-group-level: 2; }\r\n[mono-select] [mono-group][mono-level='3'],\r\n[mono-select] :where([mono-list-slot]) [data-mono-type='group'][data-mono-level='3'] { --_ms-group-level: 3; }\r\n\r\n/* group-sticky: pin headers while their rows scroll; nested levels stack on the\r\n panel's own surface so options scroll cleanly underneath. */\r\n[mono-select] [mono-group][mono-sticky] {\r\n position: sticky;\r\n top: calc(var(--_ms-group-level) * 1.5rem);\r\n z-index: calc(5 - var(--_ms-group-level));\r\n background: var(--mono-select-dropdown-bg, var(--popover));\r\n}\r\n\r\n/* EXTENSION — the load-more affordance: an option-shaped ghost button */\r\n[mono-select] [mono-load-more] {\r\n display: flex;\r\n width: 100%;\r\n align-items: center;\r\n justify-content: center;\r\n gap: var(--mono-select-option-gap, calc(var(--mono-spacing) * 2));\r\n margin: 0;\r\n padding-block: var(--mono-select-option-padding-y, calc(var(--mono-spacing) * 1.5));\r\n padding-inline: var(--mono-select-option-padding-x, calc(var(--mono-spacing) * 2));\r\n border: 0;\r\n border-radius: var(--mono-select-option-radius, var(--mono-radius-sm));\r\n background: transparent;\r\n color: var(--_mono-select-muted);\r\n font-family: inherit;\r\n font-size: var(--mono-select-option-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-option-line-height, var(--mono-text-sm--lh));\r\n font-weight: var(--mono-font-weight-medium);\r\n cursor: pointer;\r\n transition-property: color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration-fast);\r\n}\r\n\r\n@media (hover: hover) {\r\n [mono-select] [mono-load-more]:hover:not([mono-loading]) {\r\n background-color: var(--mono-select-option-active-bg, var(--muted));\r\n color: var(--_mono-select-text);\r\n }\r\n}\r\n\r\n[mono-select] [mono-load-more][mono-loading] {\r\n cursor: default;\r\n opacity: 0.7;\r\n}\r\n\r\n/* Consumer-rendered option rows (slot=\"list\"). `display: contents` so mono's own\r\n placement wrapper generates no box: the rows the consumer writes lay out as if\r\n they were direct children of the panel. */\r\n[mono-select] [mono-list-slot] {\r\n display: contents;\r\n}\r\n\r\n/* =========================================\r\n Message — helper / validation text under the field\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .fieldset legend + p, .field > p, .field section > p\r\n — text-sm text-muted-foreground leading-normal font-normal */\r\n[mono-select] > [mono-message-wrap] {\r\n display: block;\r\n margin-top: var(--_mono-select-gap-y);\r\n}\r\n\r\n[mono-select] > [mono-message-wrap]:not(:has([mono-message]:not([mono-empty]))) {\r\n display: none;\r\n}\r\n\r\n[mono-select] [mono-message] {\r\n font-size: var(--mono-select-message-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-select-message-line-height, var(--mono-leading-normal));\r\n font-weight: var(--mono-font-weight-normal);\r\n text-align: start;\r\n color: var(--_mono-select-muted);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field [role=\"alert\"] — text-destructive text-sm */\r\n[mono-select] [mono-message=\"invalid\"] {\r\n color: var(--_mono-select-invalid);\r\n}\r\n\r\n[mono-select] [mono-message=\"valid\"] {\r\n color: var(--_mono-select-valid);\r\n}\r\n\r\n[mono-select] [mono-message=\"warning\"] {\r\n color: var(--_mono-select-warning);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n [mono-select] > [mono-trigger],\r\n [mono-select] [mono-arrow],\r\n [mono-select] [mono-clear],\r\n [mono-select] [mono-item] {\r\n transition: none;\r\n }\r\n}\r\n";
|
|
2031
|
+
|
|
2028
2032
|
//#endregion
|
|
2029
2033
|
//#region src/components/select/mono-select.shadow.ts
|
|
2030
|
-
|
|
2034
|
+
const SHADOW_EXTRA_CSS = `
|
|
2031
2035
|
[mono-value] > slot[name='prefix'],
|
|
2032
2036
|
[mono-value] > slot[name='suffix'] {
|
|
2033
2037
|
display: contents;
|
|
2034
2038
|
}
|
|
2035
2039
|
`;
|
|
2036
|
-
|
|
2040
|
+
let MonoSelectShadow = class MonoSelectShadow extends withShadowUtilityStyles(MonoSelectCore(LitElement)) {
|
|
2037
2041
|
static {
|
|
2038
2042
|
this.disableWarning?.("change-in-update");
|
|
2039
2043
|
}
|
|
2040
2044
|
static {
|
|
2041
|
-
this.styles = [unsafeCSS(toShadowCss(
|
|
2045
|
+
this.styles = [unsafeCSS(toShadowCss(select_css_raw_default, {
|
|
2042
2046
|
host: "mono-select",
|
|
2043
2047
|
append: SHADOW_EXTRA_CSS
|
|
2044
2048
|
}))];
|
|
@@ -2123,6 +2127,7 @@ var MonoSelectShadow = class MonoSelectShadow extends withShadowUtilityStyles(Mo
|
|
|
2123
2127
|
}
|
|
2124
2128
|
};
|
|
2125
2129
|
MonoSelectShadow = __decorate([customElement("mono-shadow-select")], MonoSelectShadow);
|
|
2130
|
+
|
|
2126
2131
|
//#endregion
|
|
2127
2132
|
//#region src/components/select/select-utils.ts
|
|
2128
2133
|
function validateSelectProps(props) {
|
|
@@ -2163,5 +2168,6 @@ function validateSelectProps(props) {
|
|
|
2163
2168
|
if (props.validationState && !validStates.includes(props.validationState)) return false;
|
|
2164
2169
|
return true;
|
|
2165
2170
|
}
|
|
2171
|
+
|
|
2166
2172
|
//#endregion
|
|
2167
|
-
export { MonoSelectCore, MonoSelectShadow, validateSelectProps };
|
|
2173
|
+
export { MonoSelectCore, MonoSelectShadow, validateSelectProps };
|