@mono-lit/helper 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +20 -15
- 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/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/{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 +15 -14
- 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/radio.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import { l as monoHostChildNodes } from "../mono-ui-
|
|
2
|
-
import { t as customElement } from "../mono-element-
|
|
3
|
-
import { a as defineHybridPropAliases, i as defineHybridPropAlias, r as booleanStringConverter, t as __decorate } from "../decorate-
|
|
4
|
-
import { t as dispatchMonoEvent } from "../mono-event-
|
|
5
|
-
import { s as placeSlotNode } from "../light-slots-
|
|
6
|
-
import { t as MonoFormControlCore } from "../form-control-core-
|
|
1
|
+
import { l as monoHostChildNodes } from "../mono-ui-BwUc0L6B.js";
|
|
2
|
+
import { t as customElement } from "../mono-element-C7vCschg.js";
|
|
3
|
+
import { a as defineHybridPropAliases, i as defineHybridPropAlias, r as booleanStringConverter, t as __decorate } from "../decorate-DbYFpi8R.js";
|
|
4
|
+
import { t as dispatchMonoEvent } from "../mono-event-BPku9HpS.js";
|
|
5
|
+
import { s as placeSlotNode } from "../light-slots-DdDdZ6zs.js";
|
|
6
|
+
import { t as MonoFormControlCore } from "../form-control-core-CRZPZ1ru.js";
|
|
7
7
|
import { LitElement, html, nothing, unsafeCSS } from "lit";
|
|
8
8
|
import { property, state } from "lit/decorators.js";
|
|
9
9
|
import { ifDefined } from "lit/directives/if-defined.js";
|
|
10
|
+
|
|
10
11
|
//#region src/components/radio/radio-core.ts
|
|
11
12
|
/**
|
|
12
13
|
* `MonoRadioCore` — all render-mode-agnostic logic for `mono-radio`: reactive
|
|
@@ -20,7 +21,7 @@ import { ifDefined } from "lit/directives/if-defined.js";
|
|
|
20
21
|
*
|
|
21
22
|
* SSR-safe: no `document`/`window` access; `focus`/`blur` query `this.renderRoot`.
|
|
22
23
|
*/
|
|
23
|
-
|
|
24
|
+
const MonoRadioCore = (superClass) => {
|
|
24
25
|
class MonoRadioCoreClass extends MonoFormControlCore(superClass) {
|
|
25
26
|
constructor(...args) {
|
|
26
27
|
super(...args);
|
|
@@ -274,12 +275,14 @@ var MonoRadioCore = (superClass) => {
|
|
|
274
275
|
__decorate([state()], MonoRadioCoreClass.prototype, "_hasDescriptionSlotState", void 0);
|
|
275
276
|
return MonoRadioCoreClass;
|
|
276
277
|
};
|
|
278
|
+
|
|
277
279
|
//#endregion
|
|
278
|
-
//#region src
|
|
279
|
-
var radio_default = "/* =========================================================================\r\n mono-radio — a port of Basecoat's `.input[type='radio']` and the `.label`\r\n beside it (basecoat-css@1.0.2, vega style).\r\n\r\n Styled by ATTRIBUTE, like Basecoat — and the attributes mirror the element's\r\n props one for one, so hand-written markup reads like the Lit / Vue tag:\r\n\r\n <mono-radio size=\"sm\" color=\"danger\" label=\"Email\" value=\"email\" model-value=\"email\">\r\n <label mono-radio mono-size=\"sm\" mono-color=\"danger\">\r\n <input mono-input type=\"radio\" name=\"contact\" value=\"email\" checked />\r\n <span mono-circle aria-hidden=\"true\"></span>\r\n <span mono-label><span mono-label-text>Email</span></span>\r\n </label>\r\n\r\n An absent attribute is the prop's default (`:not([mono-size])` = md,\r\n `:not([mono-color])` = primary). The element renders these attributes on its\r\n root <label> (both builds) plus the STATE `mono-checked`; hand-written markup\r\n may rely on the native input's `:checked` instead — every state rule reads\r\n both. The old classes (`.mono-radio.sm.mono-radio-checked`) are still emitted\r\n as inert hooks until 2.0 but no rule here reads them.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-radio] ≡ .label (flex gap-2 text-sm font-medium leading-snug select-none)\r\n [mono-radio] > [mono-circle] ≡ .input[type='radio'] (size-4 rounded-full border-input; the real input is visually hidden)\r\n [mono-checked] / [mono-input]:checked ≡ :checked (bg-primary border-primary) + :checked:before (size-2 bg-primary-foreground)\r\n [mono-circle] > [mono-dot] / ::before ≡ :checked:before — the element renders the dot, raw markup may omit it\r\n [mono-input]:focus-visible + [mono-circle] ≡ focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\r\n [mono-invalid] / [mono-input][aria-invalid] ≡ aria-invalid:border-destructive aria-invalid:ring-destructive/20\r\n [mono-disabled] / [mono-input]:disabled ≡ disabled:cursor-not-allowed disabled:opacity-50\r\n [mono-label-text] ≡ .label text\r\n [mono-description] ≡ .field > p (text-sm text-muted-foreground)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION — the circle is 4/9 of the --mono-control-height-* step\r\n (16px at vega md), label / description / gap step with it\r\n [mono-color=\"…\"] ≡ EXTENSION (the checked fill in the role's colour)\r\n\r\n Every metric here is checkbox.css's: the two controls sit side by side in a\r\n form, so circle ≡ box, gap ≡ gap, label ≡ label at every step, and the\r\n pairing spec asserts it.\r\n\r\n Specificity contract (same as the pre-port class sheet): a part's RESTING rule\r\n is exactly one attribute strong — `:where([mono-radio]) [mono-circle]` =\r\n (0,1,0) — so a utility class handed in through `cssClass` wins by source\r\n order, while state rules (checked / focus / invalid / disabled, keyed on the\r\n root or the native input) stay heavier and win over it, as they always did.\r\n\r\n Inner parts: [mono-input], [mono-circle] > [mono-dot], [mono-label] >\r\n [mono-label-text] / [mono-description]. The shadow build marks an unassigned\r\n slot wrapper [mono-empty].\r\n\r\n The circle sits on the label's CAP BAND (see `--_mono-radio-line-offset`):\r\n mono's own alignment rule, kept — Basecoat centres a lone radio on its line\r\n box with `items-center`, which is the same thing for a one-line label and\r\n drifts for a described one.\r\n\r\n FLAVORS set `--mono-radio-{radius,shadow,ring-width,ring-alpha,bg,border-color,\r\n checked-bg,dot-color,size-md}` (the per-style `.input[type='radio']` deltas); every\r\n fallback here is vega's value (`node scripts/basecoat-styles.mjs --varying\r\n \"input\\[type='radio'\\]\"`).\r\n ========================================================================= */\r\n\r\nmono-radio {\r\n display: inline-block;\r\n}\r\n\r\n[mono-radio] {\r\n /* ── palette: each slot is a public knob over a Basecoat token ─────────── */\r\n --_mono-radio-text: var(--mono-radio-text, var(--foreground));\r\n --_mono-radio-description: var(--mono-radio-description, var(--muted-foreground));\r\n --_mono-radio-primary: var(--mono-radio-primary, var(--primary));\r\n --_mono-radio-primary-foreground: var(--mono-radio-primary-foreground, var(--primary-foreground));\r\n --_mono-radio-accent: var(--mono-radio-accent, var(--_mono-radio-accent-preset, var(--_mono-radio-primary)));\r\n --_mono-radio-dot-color: var(--mono-radio-dot-color, var(--_mono-radio-dot-preset, var(--_mono-radio-primary-foreground)));\r\n --_mono-radio-border-color: var(--mono-radio-border, var(--mono-radio-border-color, var(--input)));\r\n --_mono-radio-bg: var(--mono-radio-bg, var(--mono-mode-surface));\r\n /* the radio is the one control Basecoat leaves shadowless (the checkbox has\r\n shadow-xs) — the slot stays so a flavor or a consumer can put one back */\r\n --_mono-radio-shadow: var(--mono-radio-shadow, 0 0 #0000);\r\n --_mono-radio-radius: var(--mono-radio-radius, var(--mono-radius-full));\r\n --_mono-radio-border-width: var(--mono-radio-border-width, var(--mono-border-width));\r\n --_mono-radio-ring-color: var(--mono-radio-ring-color, var(--ring));\r\n --_mono-radio-ring-width: var(--mono-radio-ring-width, var(--mono-ring-width));\r\n --_mono-radio-ring-alpha: var(--mono-radio-ring-alpha, var(--mono-ring-alpha));\r\n\r\n /* ── md metrics live on the unqualified root ON PURPOSE ────────────────────\r\n basecoat@1.0.2 styles/vega.css .input[type='radio'] — size-4 (= 4/9 of the\r\n h-9 control); .field > label, .label — gap-2 text-sm leading-snug */\r\n --_mono-radio-control: var(--mono-radio-size-md, calc(var(--mono-control-height-md) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-md, calc(var(--mono-spacing) * 2)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-md, var(--mono-text-sm));\r\n --_mono-radio-description-font: var(--mono-radio-description-font-md, 0.8125rem);\r\n /* :checked:before — size-2 on a size-4 circle */\r\n --_mono-radio-dot: var(--mono-radio-dot, 50%);\r\n\r\n /* ── whole pixels ────────────────────────────────────────────────────────\r\n The circle is a ratio of the control step, so it lands on a fraction (18.39px,\r\n 17.77px…). A fractional round shape is antialiased on every edge — the\r\n switch thumb, which parks flush against the track's cap, picked up a dark\r\n rim that changed with the flavor and the screen's pixel ratio. Snap the\r\n derived size to 1px; `round()` has the same browser floor as `color-mix()`\r\n and `:has()`, which this sheet already requires. Snapping happens HERE, at\r\n one place per value, so the per-size blocks stay plain arithmetic. */\r\n --_mono-radio-control-px: round(nearest, var(--_mono-radio-control), 1px);\r\n\r\n /* ── alignment with the label ────────────────────────────────────────────\r\n The circle is centred on the label's CAP BAND — the ink the eye reads, not\r\n the line box. Every number is checkbox.css's; the two controls sit side by\r\n side in a form and any divergence shows. */\r\n --_mono-radio-label-line-height: var(--mono-radio-label-line-height, var(--mono-leading-snug));\r\n --_mono-radio-optical-shift: 0.045;\r\n --_mono-radio-optical-nudge: 0px;\r\n --_mono-radio-line-offset: calc(\r\n (var(--_mono-radio-label-font) * var(--_mono-radio-label-line-height) - var(--_mono-radio-control-px)) / 2 +\r\n var(--_mono-radio-label-font) * var(--_mono-radio-optical-shift) + var(--_mono-radio-optical-nudge)\r\n );\r\n\r\n /* The element build nests this root inside its host, so it is never itself a\r\n grid or flex item and shrink-wraps its content. Hand-written markup usually\r\n IS the item (a radio in a `display: grid` list), and an item blockifies —\r\n `inline-flex` becomes `flex` and the row stretches to the widest sibling,\r\n wrapping its label at a different point than the element's. `fit-content`\r\n keeps both shapes shrink-wrapped; a consumer who wants a full-width row\r\n still sets a width. */\r\n width: fit-content;\r\n display: inline-flex;\r\n align-items: flex-start;\r\n gap: var(--_mono-radio-gap);\r\n position: relative;\r\n vertical-align: top;\r\n cursor: pointer;\r\n user-select: none;\r\n font-family: inherit;\r\n color: var(--_mono-radio-text);\r\n}\r\n\r\n[mono-radio],\r\n:where([mono-radio]) *,\r\n:where([mono-radio]) *::before,\r\n:where([mono-radio]) *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n:where([mono-radio]) :is([mono-label], [mono-label-text], [mono-description])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n/* the circle seats on the first line of a label that is actually there; a bare\r\n circle stays flush at the top */\r\n[mono-radio]:has([mono-label-text]:not([mono-empty])) > [mono-circle] {\r\n margin-top: var(--_mono-radio-line-offset, 0px);\r\n}\r\n\r\n/* =========================================\r\n Sizes — EXTENSION: the circle is 4/9 of the control step (vega md: 36 × 4/9 =\r\n 16px), label, description and gap step with it (md = Basecoat's text-sm / gap-2)\r\n ========================================= */\r\n\r\n[mono-radio][mono-size=\"xs\"] {\r\n --_mono-radio-control: var(--mono-radio-size-xs, calc(var(--mono-control-height-xs) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-xs, calc(var(--mono-spacing) * 1.25)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-xs, var(--mono-text-xs));\r\n --_mono-radio-description-font: var(--mono-radio-description-font-xs, 0.6875rem);\r\n}\r\n\r\n[mono-radio][mono-size=\"sm\"] {\r\n --_mono-radio-control: var(--mono-radio-size-sm, calc(var(--mono-control-height-sm) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-sm, calc(var(--mono-spacing) * 1.5)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-sm, 0.8125rem);\r\n --_mono-radio-description-font: var(--mono-radio-description-font-sm, var(--mono-text-xs));\r\n}\r\n\r\n[mono-radio][mono-size=\"lg\"] {\r\n --_mono-radio-control: var(--mono-radio-size-lg, calc(var(--mono-control-height-lg) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-lg, calc(var(--mono-spacing) * 2.5)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-lg, var(--mono-text-base));\r\n --_mono-radio-description-font: var(--mono-radio-description-font-lg, var(--mono-text-sm));\r\n /* 16px text rounds its ascent such that the circle lands ~0.35px low */\r\n --_mono-radio-optical-nudge: -0.35px;\r\n}\r\n\r\n[mono-radio][mono-size=\"xl\"] {\r\n --_mono-radio-control: var(--mono-radio-size-xl, calc(var(--mono-control-height-xl) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-xl, calc(var(--mono-spacing) * 3)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-xl, var(--mono-text-lg));\r\n --_mono-radio-description-font: var(--mono-radio-description-font-xl, var(--mono-text-base));\r\n}\r\n\r\n[mono-radio][mono-size=\"xxl\"] {\r\n --_mono-radio-control: var(--mono-radio-size-xxl, calc(var(--mono-control-height-xxl) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-xxl, calc(var(--mono-spacing) * 3.5)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-xxl, var(--mono-text-xl));\r\n --_mono-radio-description-font: var(--mono-radio-description-font-xxl, var(--mono-text-lg));\r\n /* 20px text rounds the other way, leaving the circle ~1.1px high */\r\n --_mono-radio-optical-nudge: 1.1px;\r\n}\r\n\r\n/* =========================================\r\n Colours — EXTENSION: the checked fill in the role's colour\r\n ========================================= */\r\n\r\n[mono-radio]:is(:not([mono-color]), [mono-color=\"primary\"]) {\r\n --_mono-radio-accent-preset: var(--_mono-radio-primary);\r\n --_mono-radio-dot-preset: var(--_mono-radio-primary-foreground);\r\n}\r\n[mono-radio][mono-color=\"secondary\"] {\r\n --_mono-radio-accent-preset: var(--secondary-foreground);\r\n --_mono-radio-dot-preset: var(--secondary);\r\n}\r\n[mono-radio][mono-color=\"success\"] {\r\n --_mono-radio-accent-preset: var(--success);\r\n --_mono-radio-dot-preset: var(--success-foreground);\r\n}\r\n[mono-radio][mono-color=\"danger\"] {\r\n --_mono-radio-accent-preset: var(--destructive);\r\n --_mono-radio-dot-preset: var(--destructive-foreground);\r\n}\r\n[mono-radio][mono-color=\"warning\"] {\r\n --_mono-radio-accent-preset: var(--warning);\r\n --_mono-radio-dot-preset: var(--warning-foreground);\r\n}\r\n[mono-radio][mono-color=\"info\"] {\r\n --_mono-radio-accent-preset: var(--info);\r\n --_mono-radio-dot-preset: var(--info-foreground);\r\n}\r\n[mono-radio][mono-color=\"teal\"] {\r\n --_mono-radio-accent-preset: var(--teal);\r\n --_mono-radio-dot-preset: var(--teal-foreground);\r\n}\r\n[mono-radio][mono-color=\"purple\"] {\r\n --_mono-radio-accent-preset: var(--purple);\r\n --_mono-radio-dot-preset: var(--purple-foreground);\r\n}\r\n[mono-radio][mono-color=\"neutral\"] {\r\n --_mono-radio-accent-preset: var(--neutral);\r\n --_mono-radio-dot-preset: var(--neutral-foreground);\r\n}\r\n[mono-radio][mono-color=\"dark\"] {\r\n --_mono-radio-accent-preset: var(--dark);\r\n --_mono-radio-dot-preset: var(--dark-foreground);\r\n}\r\n\r\n/* =========================================\r\n States on the root\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/radio.css .field > input[type='radio'], .input[type='radio']\r\n — disabled:cursor-not-allowed disabled:opacity-50 */\r\n[mono-radio][mono-disabled],\r\n[mono-radio]:has(> [mono-input]:disabled) {\r\n cursor: not-allowed;\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n/* the native input is the accessible control; the circle is its painted twin */\r\n:where([mono-radio]) [mono-input] {\r\n position: absolute;\r\n opacity: 0;\r\n pointer-events: none;\r\n width: 1px;\r\n height: 1px;\r\n margin: 0;\r\n /* the UA gives an <input> its own font; inside a shadow root nothing resets it,\r\n so the hidden control ended up with a different computed font in the two\r\n builds. It paints nothing either way — this just keeps them identical. */\r\n font: inherit;\r\n color: inherit;\r\n}\r\n\r\n/* =========================================\r\n The circle\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/radio.css .field > input[type='radio'], .input[type='radio']\r\n — relative shrink-0 appearance-none border outline-none */\r\n/* basecoat@1.0.2 styles/vega.css .field > input[type='radio'], .input[type='radio']\r\n — flex size-4 rounded-full border-input (dark:bg-input/30 via --mono-mode-surface);\r\n checked:bg-primary checked:border-primary checked:text-primary-foreground;\r\n mono: `--tw-ring-*` flattened to the ring + shadow slots */\r\n:where([mono-radio]) > [mono-circle] {\r\n --_mono-radio-ring: 0 0 #0000;\r\n position: relative;\r\n flex: 0 0 auto;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--_mono-radio-control-px);\r\n height: var(--_mono-radio-control-px);\r\n border: var(--_mono-radio-border-width) solid var(--_mono-radio-border-color);\r\n border-radius: var(--_mono-radio-radius);\r\n background-color: var(--_mono-radio-bg);\r\n box-shadow: var(--_mono-radio-ring), var(--_mono-radio-shadow);\r\n /* the circle's own ink is the ACCENT — a flavor that leaves the checked circle\r\n hollow (sera) then sets `--mono-radio-dot-color: currentColor` to paint the\r\n dot in the role colour, using public knobs alone */\r\n color: var(--_mono-radio-accent);\r\n transition-property: box-shadow, background-color, border-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n/* focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 */\r\n:where([mono-radio]) > [mono-input]:focus-visible + [mono-circle] {\r\n border-color: var(--_mono-radio-ring-color);\r\n --_mono-radio-ring: 0 0 0 var(--_mono-radio-ring-width) color-mix(in oklab, var(--_mono-radio-ring-color) var(--_mono-radio-ring-alpha), transparent);\r\n}\r\n\r\n/* aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20\r\n (dark: /50, /40 via the mode tokens) */\r\n[mono-radio][mono-invalid] > [mono-circle],\r\n:where([mono-radio]) > [mono-input][aria-invalid=\"true\"] + [mono-circle] {\r\n border-color: var(--mono-mode-invalid-border);\r\n --_mono-radio-ring: 0 0 0 var(--_mono-radio-ring-width) var(--mono-mode-invalid-ring);\r\n}\r\n\r\n/* checked:bg-primary checked:border-primary — generalised per hue.\r\n `--mono-radio-checked-bg` is the flavor slot: sera keeps the circle hollow. */\r\n[mono-radio][mono-checked] > [mono-circle],\r\n:where([mono-radio]) > [mono-input]:checked + [mono-circle] {\r\n border-color: var(--_mono-radio-accent);\r\n background-color: var(--mono-radio-checked-bg, var(--_mono-radio-accent));\r\n}\r\n\r\n/* aria-invalid:checked:border-primary — a chosen option is not the error */\r\n[mono-radio][mono-invalid][mono-checked] > [mono-circle],\r\n:where([mono-radio]) > [mono-input][aria-invalid=\"true\"]:checked + [mono-circle] {\r\n border-color: var(--_mono-radio-accent);\r\n}\r\n\r\n/* =========================================\r\n The dot — `:checked:before` upstream. The element renders [mono-dot] (it is a\r\n `cssClass` slot); hand-written markup may leave the circle empty and take the\r\n pseudo-element instead. Both are out of flow (`inset: 0; margin: auto`) so the\r\n circle keeps a stable synthesised baseline.\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/radio.css .field > input[type='radio'], .input[type='radio'] >> &:checked:before\r\n — absolute top-1/2 left-1/2 content-[''] -translate-x/y-1/2 rounded-full */\r\n/* basecoat@1.0.2 styles/vega.css :is(.field > input[type='radio'], .input[type='radio']):checked:before\r\n — size-2 bg-primary-foreground (mono: that share of the box, so it tracks every step) */\r\n:where([mono-radio]) > [mono-circle] > [mono-dot],\r\n:where([mono-radio]) > [mono-circle]:not(:has([mono-dot]))::before {\r\n content: \"\";\r\n position: absolute;\r\n inset: 0;\r\n margin: auto;\r\n width: var(--_mono-radio-dot);\r\n height: var(--_mono-radio-dot);\r\n border-radius: var(--mono-radio-dot-radius, var(--mono-radius-full));\r\n background-color: var(--_mono-radio-dot-color);\r\n transform: scale(0);\r\n opacity: 0;\r\n transition-property: transform, opacity, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n[mono-radio][mono-checked] > [mono-circle] > [mono-dot],\r\n[mono-radio][mono-checked] > [mono-circle]:not(:has([mono-dot]))::before,\r\n:where([mono-radio]) > [mono-input]:checked + [mono-circle] > [mono-dot],\r\n:where([mono-radio]) > [mono-input]:checked + [mono-circle]:not(:has([mono-dot]))::before {\r\n transform: scale(1);\r\n opacity: 1;\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n :where([mono-radio]) > [mono-circle],\r\n :where([mono-radio]) > [mono-circle] > [mono-dot],\r\n :where([mono-radio]) > [mono-circle]::before {\r\n transition: none;\r\n }\r\n}\r\n\r\n/* =========================================\r\n Label\r\n ========================================= */\r\n\r\n:where([mono-radio]) > [mono-label] {\r\n min-width: 0;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > label, .label — text-sm leading-snug font-medium;\r\n `block` so the first line box is exactly font × line-height */\r\n:where([mono-radio]) [mono-label-text] {\r\n display: block;\r\n font-size: var(--_mono-radio-label-font);\r\n line-height: var(--_mono-radio-label-line-height);\r\n font-weight: var(--mono-radio-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)));\r\n color: var(--_mono-radio-text);\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; EXTENSION: one step\r\n under the label per size */\r\n:where([mono-radio]) [mono-description] {\r\n display: block;\r\n margin-top: calc(var(--mono-spacing) * 0.5);\r\n font-size: var(--_mono-radio-description-font);\r\n line-height: var(--mono-leading-normal);\r\n font-weight: var(--mono-font-weight-normal);\r\n color: var(--_mono-radio-description);\r\n}\r\n";
|
|
280
|
+
//#region \0raw:C:\Users\VCT-DEV\Desktop\libs\packages\helper\src\components\radio\radio.css?raw.js
|
|
281
|
+
var radio_css_raw_default = "/* =========================================================================\r\n mono-radio — a port of Basecoat's `.input[type='radio']` and the `.label`\r\n beside it (basecoat-css@1.0.2, vega style).\r\n\r\n Styled by ATTRIBUTE, like Basecoat — and the attributes mirror the element's\r\n props one for one, so hand-written markup reads like the Lit / Vue tag:\r\n\r\n <mono-radio size=\"sm\" color=\"danger\" label=\"Email\" value=\"email\" model-value=\"email\">\r\n <label mono-radio mono-size=\"sm\" mono-color=\"danger\">\r\n <input mono-input type=\"radio\" name=\"contact\" value=\"email\" checked />\r\n <span mono-circle aria-hidden=\"true\"></span>\r\n <span mono-label><span mono-label-text>Email</span></span>\r\n </label>\r\n\r\n An absent attribute is the prop's default (`:not([mono-size])` = md,\r\n `:not([mono-color])` = primary). The element renders these attributes on its\r\n root <label> (both builds) plus the STATE `mono-checked`; hand-written markup\r\n may rely on the native input's `:checked` instead — every state rule reads\r\n both. The old classes (`.mono-radio.sm.mono-radio-checked`) are still emitted\r\n as inert hooks until 2.0 but no rule here reads them.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-radio] ≡ .label (flex gap-2 text-sm font-medium leading-snug select-none)\r\n [mono-radio] > [mono-circle] ≡ .input[type='radio'] (size-4 rounded-full border-input; the real input is visually hidden)\r\n [mono-checked] / [mono-input]:checked ≡ :checked (bg-primary border-primary) + :checked:before (size-2 bg-primary-foreground)\r\n [mono-circle] > [mono-dot] / ::before ≡ :checked:before — the element renders the dot, raw markup may omit it\r\n [mono-input]:focus-visible + [mono-circle] ≡ focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50\r\n [mono-invalid] / [mono-input][aria-invalid] ≡ aria-invalid:border-destructive aria-invalid:ring-destructive/20\r\n [mono-disabled] / [mono-input]:disabled ≡ disabled:cursor-not-allowed disabled:opacity-50\r\n [mono-label-text] ≡ .label text\r\n [mono-description] ≡ .field > p (text-sm text-muted-foreground)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION — the circle is 4/9 of the --mono-control-height-* step\r\n (16px at vega md), label / description / gap step with it\r\n [mono-color=\"…\"] ≡ EXTENSION (the checked fill in the role's colour)\r\n\r\n Every metric here is checkbox.css's: the two controls sit side by side in a\r\n form, so circle ≡ box, gap ≡ gap, label ≡ label at every step, and the\r\n pairing spec asserts it.\r\n\r\n Specificity contract (same as the pre-port class sheet): a part's RESTING rule\r\n is exactly one attribute strong — `:where([mono-radio]) [mono-circle]` =\r\n (0,1,0) — so a utility class handed in through `cssClass` wins by source\r\n order, while state rules (checked / focus / invalid / disabled, keyed on the\r\n root or the native input) stay heavier and win over it, as they always did.\r\n\r\n Inner parts: [mono-input], [mono-circle] > [mono-dot], [mono-label] >\r\n [mono-label-text] / [mono-description]. The shadow build marks an unassigned\r\n slot wrapper [mono-empty].\r\n\r\n The circle sits on the label's CAP BAND (see `--_mono-radio-line-offset`):\r\n mono's own alignment rule, kept — Basecoat centres a lone radio on its line\r\n box with `items-center`, which is the same thing for a one-line label and\r\n drifts for a described one.\r\n\r\n FLAVORS set `--mono-radio-{radius,shadow,ring-width,ring-alpha,bg,border-color,\r\n checked-bg,dot-color,size-md}` (the per-style `.input[type='radio']` deltas); every\r\n fallback here is vega's value (`node scripts/basecoat-styles.mjs --varying\r\n \"input\\[type='radio'\\]\"`).\r\n ========================================================================= */\r\n\r\nmono-radio {\r\n display: inline-block;\r\n}\r\n\r\n[mono-radio] {\r\n /* ── palette: each slot is a public knob over a Basecoat token ─────────── */\r\n --_mono-radio-text: var(--mono-radio-text, var(--foreground));\r\n --_mono-radio-description: var(--mono-radio-description, var(--muted-foreground));\r\n --_mono-radio-primary: var(--mono-radio-primary, var(--primary));\r\n --_mono-radio-primary-foreground: var(--mono-radio-primary-foreground, var(--primary-foreground));\r\n --_mono-radio-accent: var(--mono-radio-accent, var(--_mono-radio-accent-preset, var(--_mono-radio-primary)));\r\n --_mono-radio-dot-color: var(--mono-radio-dot-color, var(--_mono-radio-dot-preset, var(--_mono-radio-primary-foreground)));\r\n --_mono-radio-border-color: var(--mono-radio-border, var(--mono-radio-border-color, var(--input)));\r\n --_mono-radio-bg: var(--mono-radio-bg, var(--mono-mode-surface));\r\n /* the radio is the one control Basecoat leaves shadowless (the checkbox has\r\n shadow-xs) — the slot stays so a flavor or a consumer can put one back */\r\n --_mono-radio-shadow: var(--mono-radio-shadow, 0 0 #0000);\r\n --_mono-radio-radius: var(--mono-radio-radius, var(--mono-radius-full));\r\n --_mono-radio-border-width: var(--mono-radio-border-width, var(--mono-border-width));\r\n --_mono-radio-ring-color: var(--mono-radio-ring-color, var(--ring));\r\n --_mono-radio-ring-width: var(--mono-radio-ring-width, var(--mono-ring-width));\r\n --_mono-radio-ring-alpha: var(--mono-radio-ring-alpha, var(--mono-ring-alpha));\r\n\r\n /* ── md metrics live on the unqualified root ON PURPOSE ────────────────────\r\n basecoat@1.0.2 styles/vega.css .input[type='radio'] — size-4 (= 4/9 of the\r\n h-9 control); .field > label, .label — gap-2 text-sm leading-snug */\r\n --_mono-radio-control: var(--mono-radio-size-md, calc(var(--mono-control-height-md) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-md, calc(var(--mono-spacing) * 2)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-md, var(--mono-text-sm));\r\n --_mono-radio-description-font: var(--mono-radio-description-font-md, 0.8125rem);\r\n /* :checked:before — size-2 on a size-4 circle */\r\n --_mono-radio-dot: var(--mono-radio-dot, 50%);\r\n\r\n /* ── whole pixels ────────────────────────────────────────────────────────\r\n The circle is a ratio of the control step, so it lands on a fraction (18.39px,\r\n 17.77px…). A fractional round shape is antialiased on every edge — the\r\n switch thumb, which parks flush against the track's cap, picked up a dark\r\n rim that changed with the flavor and the screen's pixel ratio. Snap the\r\n derived size to 1px; `round()` has the same browser floor as `color-mix()`\r\n and `:has()`, which this sheet already requires. Snapping happens HERE, at\r\n one place per value, so the per-size blocks stay plain arithmetic. */\r\n --_mono-radio-control-px: round(nearest, var(--_mono-radio-control), 1px);\r\n\r\n /* ── alignment with the label ────────────────────────────────────────────\r\n The circle is centred on the label's CAP BAND — the ink the eye reads, not\r\n the line box. Every number is checkbox.css's; the two controls sit side by\r\n side in a form and any divergence shows. */\r\n --_mono-radio-label-line-height: var(--mono-radio-label-line-height, var(--mono-leading-snug));\r\n --_mono-radio-optical-shift: 0.045;\r\n --_mono-radio-optical-nudge: 0px;\r\n --_mono-radio-line-offset: calc(\r\n (var(--_mono-radio-label-font) * var(--_mono-radio-label-line-height) - var(--_mono-radio-control-px)) / 2 +\r\n var(--_mono-radio-label-font) * var(--_mono-radio-optical-shift) + var(--_mono-radio-optical-nudge)\r\n );\r\n\r\n /* The element build nests this root inside its host, so it is never itself a\r\n grid or flex item and shrink-wraps its content. Hand-written markup usually\r\n IS the item (a radio in a `display: grid` list), and an item blockifies —\r\n `inline-flex` becomes `flex` and the row stretches to the widest sibling,\r\n wrapping its label at a different point than the element's. `fit-content`\r\n keeps both shapes shrink-wrapped; a consumer who wants a full-width row\r\n still sets a width. */\r\n width: fit-content;\r\n display: inline-flex;\r\n align-items: flex-start;\r\n gap: var(--_mono-radio-gap);\r\n position: relative;\r\n vertical-align: top;\r\n cursor: pointer;\r\n user-select: none;\r\n font-family: inherit;\r\n color: var(--_mono-radio-text);\r\n}\r\n\r\n[mono-radio],\r\n:where([mono-radio]) *,\r\n:where([mono-radio]) *::before,\r\n:where([mono-radio]) *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n:where([mono-radio]) :is([mono-label], [mono-label-text], [mono-description])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n/* the circle seats on the first line of a label that is actually there; a bare\r\n circle stays flush at the top */\r\n[mono-radio]:has([mono-label-text]:not([mono-empty])) > [mono-circle] {\r\n margin-top: var(--_mono-radio-line-offset, 0px);\r\n}\r\n\r\n/* =========================================\r\n Sizes — EXTENSION: the circle is 4/9 of the control step (vega md: 36 × 4/9 =\r\n 16px), label, description and gap step with it (md = Basecoat's text-sm / gap-2)\r\n ========================================= */\r\n\r\n[mono-radio][mono-size=\"xs\"] {\r\n --_mono-radio-control: var(--mono-radio-size-xs, calc(var(--mono-control-height-xs) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-xs, calc(var(--mono-spacing) * 1.25)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-xs, var(--mono-text-xs));\r\n --_mono-radio-description-font: var(--mono-radio-description-font-xs, 0.6875rem);\r\n}\r\n\r\n[mono-radio][mono-size=\"sm\"] {\r\n --_mono-radio-control: var(--mono-radio-size-sm, calc(var(--mono-control-height-sm) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-sm, calc(var(--mono-spacing) * 1.5)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-sm, 0.8125rem);\r\n --_mono-radio-description-font: var(--mono-radio-description-font-sm, var(--mono-text-xs));\r\n}\r\n\r\n[mono-radio][mono-size=\"lg\"] {\r\n --_mono-radio-control: var(--mono-radio-size-lg, calc(var(--mono-control-height-lg) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-lg, calc(var(--mono-spacing) * 2.5)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-lg, var(--mono-text-base));\r\n --_mono-radio-description-font: var(--mono-radio-description-font-lg, var(--mono-text-sm));\r\n /* 16px text rounds its ascent such that the circle lands ~0.35px low */\r\n --_mono-radio-optical-nudge: -0.35px;\r\n}\r\n\r\n[mono-radio][mono-size=\"xl\"] {\r\n --_mono-radio-control: var(--mono-radio-size-xl, calc(var(--mono-control-height-xl) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-xl, calc(var(--mono-spacing) * 3)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-xl, var(--mono-text-lg));\r\n --_mono-radio-description-font: var(--mono-radio-description-font-xl, var(--mono-text-base));\r\n}\r\n\r\n[mono-radio][mono-size=\"xxl\"] {\r\n --_mono-radio-control: var(--mono-radio-size-xxl, calc(var(--mono-control-height-xxl) * 4 / 9));\r\n --_mono-radio-gap: var(--mono-radio-gap, var(--mono-radio-gap-xxl, calc(var(--mono-spacing) * 3.5)));\r\n --_mono-radio-label-font: var(--mono-radio-label-font-xxl, var(--mono-text-xl));\r\n --_mono-radio-description-font: var(--mono-radio-description-font-xxl, var(--mono-text-lg));\r\n /* 20px text rounds the other way, leaving the circle ~1.1px high */\r\n --_mono-radio-optical-nudge: 1.1px;\r\n}\r\n\r\n/* =========================================\r\n Colours — EXTENSION: the checked fill in the role's colour\r\n ========================================= */\r\n\r\n[mono-radio]:is(:not([mono-color]), [mono-color=\"primary\"]) {\r\n --_mono-radio-accent-preset: var(--_mono-radio-primary);\r\n --_mono-radio-dot-preset: var(--_mono-radio-primary-foreground);\r\n}\r\n[mono-radio][mono-color=\"secondary\"] {\r\n --_mono-radio-accent-preset: var(--secondary-foreground);\r\n --_mono-radio-dot-preset: var(--secondary);\r\n}\r\n[mono-radio][mono-color=\"success\"] {\r\n --_mono-radio-accent-preset: var(--success);\r\n --_mono-radio-dot-preset: var(--success-foreground);\r\n}\r\n[mono-radio][mono-color=\"danger\"] {\r\n --_mono-radio-accent-preset: var(--destructive);\r\n --_mono-radio-dot-preset: var(--destructive-foreground);\r\n}\r\n[mono-radio][mono-color=\"warning\"] {\r\n --_mono-radio-accent-preset: var(--warning);\r\n --_mono-radio-dot-preset: var(--warning-foreground);\r\n}\r\n[mono-radio][mono-color=\"info\"] {\r\n --_mono-radio-accent-preset: var(--info);\r\n --_mono-radio-dot-preset: var(--info-foreground);\r\n}\r\n[mono-radio][mono-color=\"teal\"] {\r\n --_mono-radio-accent-preset: var(--teal);\r\n --_mono-radio-dot-preset: var(--teal-foreground);\r\n}\r\n[mono-radio][mono-color=\"purple\"] {\r\n --_mono-radio-accent-preset: var(--purple);\r\n --_mono-radio-dot-preset: var(--purple-foreground);\r\n}\r\n[mono-radio][mono-color=\"neutral\"] {\r\n --_mono-radio-accent-preset: var(--neutral);\r\n --_mono-radio-dot-preset: var(--neutral-foreground);\r\n}\r\n[mono-radio][mono-color=\"dark\"] {\r\n --_mono-radio-accent-preset: var(--dark);\r\n --_mono-radio-dot-preset: var(--dark-foreground);\r\n}\r\n\r\n/* =========================================\r\n States on the root\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/radio.css .field > input[type='radio'], .input[type='radio']\r\n — disabled:cursor-not-allowed disabled:opacity-50 */\r\n[mono-radio][mono-disabled],\r\n[mono-radio]:has(> [mono-input]:disabled) {\r\n cursor: not-allowed;\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n/* the native input is the accessible control; the circle is its painted twin */\r\n:where([mono-radio]) [mono-input] {\r\n position: absolute;\r\n opacity: 0;\r\n pointer-events: none;\r\n width: 1px;\r\n height: 1px;\r\n margin: 0;\r\n /* the UA gives an <input> its own font; inside a shadow root nothing resets it,\r\n so the hidden control ended up with a different computed font in the two\r\n builds. It paints nothing either way — this just keeps them identical. */\r\n font: inherit;\r\n color: inherit;\r\n}\r\n\r\n/* =========================================\r\n The circle\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/radio.css .field > input[type='radio'], .input[type='radio']\r\n — relative shrink-0 appearance-none border outline-none */\r\n/* basecoat@1.0.2 styles/vega.css .field > input[type='radio'], .input[type='radio']\r\n — flex size-4 rounded-full border-input (dark:bg-input/30 via --mono-mode-surface);\r\n checked:bg-primary checked:border-primary checked:text-primary-foreground;\r\n mono: `--tw-ring-*` flattened to the ring + shadow slots */\r\n:where([mono-radio]) > [mono-circle] {\r\n --_mono-radio-ring: 0 0 #0000;\r\n position: relative;\r\n flex: 0 0 auto;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--_mono-radio-control-px);\r\n height: var(--_mono-radio-control-px);\r\n border: var(--_mono-radio-border-width) solid var(--_mono-radio-border-color);\r\n border-radius: var(--_mono-radio-radius);\r\n background-color: var(--_mono-radio-bg);\r\n box-shadow: var(--_mono-radio-ring), var(--_mono-radio-shadow);\r\n /* the circle's own ink is the ACCENT — a flavor that leaves the checked circle\r\n hollow (sera) then sets `--mono-radio-dot-color: currentColor` to paint the\r\n dot in the role colour, using public knobs alone */\r\n color: var(--_mono-radio-accent);\r\n transition-property: box-shadow, background-color, border-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n/* focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 */\r\n:where([mono-radio]) > [mono-input]:focus-visible + [mono-circle] {\r\n border-color: var(--_mono-radio-ring-color);\r\n --_mono-radio-ring: 0 0 0 var(--_mono-radio-ring-width) color-mix(in oklab, var(--_mono-radio-ring-color) var(--_mono-radio-ring-alpha), transparent);\r\n}\r\n\r\n/* aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20\r\n (dark: /50, /40 via the mode tokens) */\r\n[mono-radio][mono-invalid] > [mono-circle],\r\n:where([mono-radio]) > [mono-input][aria-invalid=\"true\"] + [mono-circle] {\r\n border-color: var(--mono-mode-invalid-border);\r\n --_mono-radio-ring: 0 0 0 var(--_mono-radio-ring-width) var(--mono-mode-invalid-ring);\r\n}\r\n\r\n/* checked:bg-primary checked:border-primary — generalised per hue.\r\n `--mono-radio-checked-bg` is the flavor slot: sera keeps the circle hollow. */\r\n[mono-radio][mono-checked] > [mono-circle],\r\n:where([mono-radio]) > [mono-input]:checked + [mono-circle] {\r\n border-color: var(--_mono-radio-accent);\r\n background-color: var(--mono-radio-checked-bg, var(--_mono-radio-accent));\r\n}\r\n\r\n/* aria-invalid:checked:border-primary — a chosen option is not the error */\r\n[mono-radio][mono-invalid][mono-checked] > [mono-circle],\r\n:where([mono-radio]) > [mono-input][aria-invalid=\"true\"]:checked + [mono-circle] {\r\n border-color: var(--_mono-radio-accent);\r\n}\r\n\r\n/* =========================================\r\n The dot — `:checked:before` upstream. The element renders [mono-dot] (it is a\r\n `cssClass` slot); hand-written markup may leave the circle empty and take the\r\n pseudo-element instead. Both are out of flow (`inset: 0; margin: auto`) so the\r\n circle keeps a stable synthesised baseline.\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/radio.css .field > input[type='radio'], .input[type='radio'] >> &:checked:before\r\n — absolute top-1/2 left-1/2 content-[''] -translate-x/y-1/2 rounded-full */\r\n/* basecoat@1.0.2 styles/vega.css :is(.field > input[type='radio'], .input[type='radio']):checked:before\r\n — size-2 bg-primary-foreground (mono: that share of the box, so it tracks every step) */\r\n:where([mono-radio]) > [mono-circle] > [mono-dot],\r\n:where([mono-radio]) > [mono-circle]:not(:has([mono-dot]))::before {\r\n content: \"\";\r\n position: absolute;\r\n inset: 0;\r\n margin: auto;\r\n width: var(--_mono-radio-dot);\r\n height: var(--_mono-radio-dot);\r\n border-radius: var(--mono-radio-dot-radius, var(--mono-radius-full));\r\n background-color: var(--_mono-radio-dot-color);\r\n transform: scale(0);\r\n opacity: 0;\r\n transition-property: transform, opacity, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n[mono-radio][mono-checked] > [mono-circle] > [mono-dot],\r\n[mono-radio][mono-checked] > [mono-circle]:not(:has([mono-dot]))::before,\r\n:where([mono-radio]) > [mono-input]:checked + [mono-circle] > [mono-dot],\r\n:where([mono-radio]) > [mono-input]:checked + [mono-circle]:not(:has([mono-dot]))::before {\r\n transform: scale(1);\r\n opacity: 1;\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n :where([mono-radio]) > [mono-circle],\r\n :where([mono-radio]) > [mono-circle] > [mono-dot],\r\n :where([mono-radio]) > [mono-circle]::before {\r\n transition: none;\r\n }\r\n}\r\n\r\n/* =========================================\r\n Label\r\n ========================================= */\r\n\r\n:where([mono-radio]) > [mono-label] {\r\n min-width: 0;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > label, .label — text-sm leading-snug font-medium;\r\n `block` so the first line box is exactly font × line-height */\r\n:where([mono-radio]) [mono-label-text] {\r\n display: block;\r\n font-size: var(--_mono-radio-label-font);\r\n line-height: var(--_mono-radio-label-line-height);\r\n font-weight: var(--mono-radio-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)));\r\n color: var(--_mono-radio-text);\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; EXTENSION: one step\r\n under the label per size */\r\n:where([mono-radio]) [mono-description] {\r\n display: block;\r\n margin-top: calc(var(--mono-spacing) * 0.5);\r\n font-size: var(--_mono-radio-description-font);\r\n line-height: var(--mono-leading-normal);\r\n font-weight: var(--mono-font-weight-normal);\r\n color: var(--_mono-radio-description);\r\n}\r\n";
|
|
282
|
+
|
|
280
283
|
//#endregion
|
|
281
284
|
//#region src/components/radio/mono-radio.ts
|
|
282
|
-
|
|
285
|
+
let MonoRadio = class MonoRadio extends MonoRadioCore(LitElement) {
|
|
283
286
|
constructor(..._args) {
|
|
284
287
|
super(..._args);
|
|
285
288
|
this._slotsCaptured = false;
|
|
@@ -287,7 +290,7 @@ var MonoRadio = class MonoRadio extends MonoRadioCore(LitElement) {
|
|
|
287
290
|
this._slotDescription = [];
|
|
288
291
|
}
|
|
289
292
|
static {
|
|
290
|
-
this.styles = [unsafeCSS(
|
|
293
|
+
this.styles = [unsafeCSS(radio_css_raw_default)];
|
|
291
294
|
}
|
|
292
295
|
createRenderRoot() {
|
|
293
296
|
return this;
|
|
@@ -334,6 +337,7 @@ var MonoRadio = class MonoRadio extends MonoRadioCore(LitElement) {
|
|
|
334
337
|
};
|
|
335
338
|
__decorate([state()], MonoRadio.prototype, "_slotsCaptured", void 0);
|
|
336
339
|
MonoRadio = __decorate([customElement("mono-radio")], MonoRadio);
|
|
340
|
+
|
|
337
341
|
//#endregion
|
|
338
342
|
//#region src/components/radio/radio-utils.ts
|
|
339
343
|
/**
|
|
@@ -375,5 +379,6 @@ function generateRadioAttributes(disabled, checked, label) {
|
|
|
375
379
|
"aria-label": label || void 0
|
|
376
380
|
};
|
|
377
381
|
}
|
|
382
|
+
|
|
378
383
|
//#endregion
|
|
379
|
-
export { MonoRadio, generateRadioAttributes, validateRadioProps };
|
|
384
|
+
export { MonoRadio, generateRadioAttributes, validateRadioProps };
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import { l as monoHostChildNodes } from "../mono-ui-
|
|
2
|
-
import { t as customElement } from "../mono-element-
|
|
3
|
-
import { a as defineHybridPropAliases, r as booleanStringConverter, s as optionalNumberConverter, t as __decorate } from "../decorate-
|
|
4
|
-
import { t as dispatchMonoEvent } from "../mono-event-
|
|
5
|
-
import { s as placeSlotNode } from "../light-slots-
|
|
6
|
-
import { n as toCssSize, t as buildSizeStyle } from "../css-size-
|
|
7
|
-
import { t as MonoFormControlCore } from "../form-control-core-
|
|
1
|
+
import { l as monoHostChildNodes } from "../mono-ui-BwUc0L6B.js";
|
|
2
|
+
import { t as customElement } from "../mono-element-C7vCschg.js";
|
|
3
|
+
import { a as defineHybridPropAliases, r as booleanStringConverter, s as optionalNumberConverter, t as __decorate } from "../decorate-DbYFpi8R.js";
|
|
4
|
+
import { t as dispatchMonoEvent } from "../mono-event-BPku9HpS.js";
|
|
5
|
+
import { s as placeSlotNode } from "../light-slots-DdDdZ6zs.js";
|
|
6
|
+
import { n as toCssSize, t as buildSizeStyle } from "../css-size-DWAPgQdT.js";
|
|
7
|
+
import { t as MonoFormControlCore } from "../form-control-core-CRZPZ1ru.js";
|
|
8
8
|
import { LitElement, html, isServer, nothing, unsafeCSS } from "lit";
|
|
9
9
|
import { property, state } from "lit/decorators.js";
|
|
10
10
|
import { styleMap } from "lit/directives/style-map.js";
|
|
11
|
+
|
|
11
12
|
//#region src/components/rich-text-editor/rich-text-editor-loader.ts
|
|
12
|
-
|
|
13
|
+
const INSTALL_HINT = "[mono-rich-text-editor] needs the optional peer dependency \"suneditor\". Install it in your app: pnpm add suneditor@^3.3.3";
|
|
13
14
|
function withHint(err) {
|
|
14
15
|
const message = err instanceof Error ? err.message : String(err);
|
|
15
16
|
return /* @__PURE__ */ new Error(`${INSTALL_HINT}${message ? ` (original error: ${message})` : ""}`);
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
+
let _corePromise = null;
|
|
18
19
|
/** The `suneditor` default export (`{ create, init }`), cached; a failure resets so a later attempt retries. */
|
|
19
20
|
function loadSunEditor() {
|
|
20
21
|
_corePromise ??= import("suneditor").then((m) => m?.default ?? m).catch((err) => {
|
|
@@ -23,7 +24,7 @@ function loadSunEditor() {
|
|
|
23
24
|
});
|
|
24
25
|
return _corePromise;
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
let _cssPromise = null;
|
|
27
28
|
/**
|
|
28
29
|
* SunEditor's UI stylesheet (`suneditor/css/editor`), injected ONCE per page by
|
|
29
30
|
* the consumer's bundler as a side-effect import. Failure is not fatal — the
|
|
@@ -35,7 +36,7 @@ function loadSunEditorCss() {
|
|
|
35
36
|
});
|
|
36
37
|
return _cssPromise;
|
|
37
38
|
}
|
|
38
|
-
|
|
39
|
+
let _pluginsPromise = null;
|
|
39
40
|
/** Every built-in plugin, keyed by name (`suneditor/plugins`' default export). */
|
|
40
41
|
function loadSunEditorPlugins() {
|
|
41
42
|
_pluginsPromise ??= import("suneditor/plugins").then((m) => m?.default ?? m).catch((err) => {
|
|
@@ -49,7 +50,7 @@ function loadSunEditorPlugins() {
|
|
|
49
50
|
* consumer's bundler can split them. Unknown codes fall back to English (the
|
|
50
51
|
* editor's own default) with a warning rather than failing the build.
|
|
51
52
|
*/
|
|
52
|
-
|
|
53
|
+
const LANGS = {
|
|
53
54
|
ckb: () => import("suneditor/langs/ckb"),
|
|
54
55
|
cs: () => import("suneditor/langs/cs"),
|
|
55
56
|
da: () => import("suneditor/langs/da"),
|
|
@@ -77,8 +78,8 @@ var LANGS = {
|
|
|
77
78
|
zh_cn: () => import("suneditor/langs/zh_cn")
|
|
78
79
|
};
|
|
79
80
|
/** Codes `lang` accepts. */
|
|
80
|
-
|
|
81
|
-
|
|
81
|
+
const SUNEDITOR_LANG_CODES = Object.keys(LANGS);
|
|
82
|
+
const _langPromises = /* @__PURE__ */ new Map();
|
|
82
83
|
/**
|
|
83
84
|
* A language pack by code (`ko`, `pt-BR` → `pt_br`, `zh-CN` → `zh_cn`, …), or
|
|
84
85
|
* `undefined` for English / an unknown code (SunEditor then uses its default).
|
|
@@ -101,6 +102,7 @@ function loadSunEditorLang(code) {
|
|
|
101
102
|
}
|
|
102
103
|
return p;
|
|
103
104
|
}
|
|
105
|
+
|
|
104
106
|
//#endregion
|
|
105
107
|
//#region src/components/rich-text-editor/rich-text-editor-toolbar.ts
|
|
106
108
|
/**
|
|
@@ -108,7 +110,7 @@ function loadSunEditorLang(code) {
|
|
|
108
110
|
* Anything else in a `buttonList` is the `key` of a plugin that has to be in
|
|
109
111
|
* `plugins`, so a preset is filtered against the plugins actually loaded.
|
|
110
112
|
*/
|
|
111
|
-
|
|
113
|
+
const SUNEDITOR_CORE_BUTTONS = /* @__PURE__ */ new Set([
|
|
112
114
|
"bold",
|
|
113
115
|
"underline",
|
|
114
116
|
"italic",
|
|
@@ -148,7 +150,7 @@ var SUNEDITOR_CORE_BUTTONS = new Set([
|
|
|
148
150
|
* `:plugins.prop="[...]"` with the class or `plugins="font, link, template"`
|
|
149
151
|
* is — and supply their options through `options`.
|
|
150
152
|
*/
|
|
151
|
-
|
|
153
|
+
const AUTO_EXCLUDED_PLUGINS = /* @__PURE__ */ new Set([
|
|
152
154
|
"exportPDF",
|
|
153
155
|
"fileUpload",
|
|
154
156
|
"layout",
|
|
@@ -161,12 +163,12 @@ var AUTO_EXCLUDED_PLUGINS = new Set([
|
|
|
161
163
|
"fileBrowser"
|
|
162
164
|
]);
|
|
163
165
|
/** Markers a `buttonList` may carry besides button names. */
|
|
164
|
-
|
|
166
|
+
const SPECIAL = /^(\||\/|-left|-right|-center|#fix)$/;
|
|
165
167
|
/**
|
|
166
168
|
* SunEditor's own default (`DEFAULTS.BUTTON_LIST`) — no plugin buttons at all.
|
|
167
169
|
* Mirrored here rather than imported so the presets stay pure.
|
|
168
170
|
*/
|
|
169
|
-
|
|
171
|
+
const TOOLBAR_DEFAULT = [
|
|
170
172
|
["undo", "redo"],
|
|
171
173
|
"|",
|
|
172
174
|
[
|
|
@@ -192,7 +194,7 @@ var TOOLBAR_DEFAULT = [
|
|
|
192
194
|
["preview", "print"]
|
|
193
195
|
];
|
|
194
196
|
/** The essentials: a comment box, a note field. */
|
|
195
|
-
|
|
197
|
+
const TOOLBAR_BASIC = [
|
|
196
198
|
["undo", "redo"],
|
|
197
199
|
"|",
|
|
198
200
|
[
|
|
@@ -211,7 +213,7 @@ var TOOLBAR_BASIC = [
|
|
|
211
213
|
["removeFormat"]
|
|
212
214
|
];
|
|
213
215
|
/** The default: what a document / description / email body needs. */
|
|
214
|
-
|
|
216
|
+
const TOOLBAR_STANDARD = [
|
|
215
217
|
["undo", "redo"],
|
|
216
218
|
"|",
|
|
217
219
|
[
|
|
@@ -259,7 +261,7 @@ var TOOLBAR_STANDARD = [
|
|
|
259
261
|
* `templates` list), `math` and `exportPDF` (need external libraries) — pass
|
|
260
262
|
* those through `toolbar` + `options` when the app provides what they need.
|
|
261
263
|
*/
|
|
262
|
-
|
|
264
|
+
const TOOLBAR_FULL = [
|
|
263
265
|
["undo", "redo"],
|
|
264
266
|
"|",
|
|
265
267
|
[
|
|
@@ -328,7 +330,7 @@ var TOOLBAR_FULL = [
|
|
|
328
330
|
"print"
|
|
329
331
|
]
|
|
330
332
|
];
|
|
331
|
-
|
|
333
|
+
const TOOLBAR_PRESETS = {
|
|
332
334
|
basic: TOOLBAR_BASIC,
|
|
333
335
|
standard: TOOLBAR_STANDARD,
|
|
334
336
|
full: TOOLBAR_FULL,
|
|
@@ -451,6 +453,7 @@ function pluginsNeedCatalog(plugins) {
|
|
|
451
453
|
if (Array.isArray(plugins)) return plugins.some((p) => typeof p === "string");
|
|
452
454
|
return false;
|
|
453
455
|
}
|
|
456
|
+
|
|
454
457
|
//#endregion
|
|
455
458
|
//#region src/components/rich-text-editor/rich-text-editor-core.ts
|
|
456
459
|
/**
|
|
@@ -488,7 +491,7 @@ function pluginsNeedCatalog(plugins) {
|
|
|
488
491
|
* jumps, no echo. `monoForm` binds through {@link MonoFormControlCore} exactly
|
|
489
492
|
* as `mono-textarea` does.
|
|
490
493
|
*/
|
|
491
|
-
|
|
494
|
+
const MonoRichTextEditorCore = (superClass) => {
|
|
492
495
|
class MonoRichTextEditorCoreClass extends MonoFormControlCore(superClass) {
|
|
493
496
|
constructor(...args) {
|
|
494
497
|
super(...args);
|
|
@@ -1275,12 +1278,14 @@ var MonoRichTextEditorCore = (superClass) => {
|
|
|
1275
1278
|
__decorate([state()], MonoRichTextEditorCoreClass.prototype, "_loading", void 0);
|
|
1276
1279
|
return MonoRichTextEditorCoreClass;
|
|
1277
1280
|
};
|
|
1281
|
+
|
|
1278
1282
|
//#endregion
|
|
1279
|
-
//#region src
|
|
1280
|
-
var rich_text_editor_default = "/* =========================================================================\r\n mono-rich-text-editor — a mono form field whose input is a SunEditor v3\r\n instance. An EXTENSION: Basecoat has no editor, so the CHROME is the ported\r\n textarea's `.field` (basecoat-css@1.0.2, vega style) — label, frame, message\r\n — and the EDITOR is SunEditor's own DOM, styled by ITS stylesheet\r\n (`suneditor/css/editor`, loaded by the element at runtime) and themed from\r\n here by remapping its `--se-*` tokens onto the Basecoat tokens.\r\n\r\n Styled by ATTRIBUTE, like Basecoat — and the attributes mirror the element's\r\n props one for one, so hand-written markup reads like the Lit / Vue tag:\r\n\r\n <mono-rich-text-editor size=\"sm\" color=\"danger\" label=\"Body\" helper-text=\"…\">\r\n <div mono-rich-text-editor mono-size=\"sm\" mono-color=\"danger\">\r\n <label mono-rte-label>Body</label>\r\n <div mono-rte-field><div mono-rte-mount>…SunEditor…</div></div>\r\n <div mono-rte-footer><div mono-rte-message-wrap><div mono-rte-message=\"helper\">…</div></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 on its root (both builds) plus the STATES `mono-disabled` /\r\n `mono-readonly` / `mono-required` / `mono-loading` / `mono-unavailable` /\r\n `mono-has-value` and `mono-validation-state=\"valid|invalid|warning\"`. The\r\n old classes (`.mono-rich-text-editor.md.primary.outlined`) are still emitted\r\n as inert hooks until 2.0 but no rule here reads them.\r\n\r\n THE PARTS ARE FAMILY-UNIQUE (`mono-rte-*`): the frame holds SunEditor's whole\r\n DOM, and a consumer's content may carry anything.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-rich-text-editor] ≡ .field (flex w-full flex-col gap-3)\r\n [mono-rich-text-editor] > [mono-rte-label] ≡ .field > label / .label\r\n [mono-rte-field] ≡ .textarea's box (rounded-md border-input bg-transparent shadow-xs,\r\n focus-within: border-ring ring-3 ring-ring/50) — the editor sits inside\r\n [mono-rte-mount] .sun-editor .se-toolbar ≡ EXTENSION (a muted band under the frame's top edge)\r\n [mono-rte-footer] > [mono-rte-message-wrap] > [mono-rte-message=\"…\"] ≡ .field > p / .field [role='alert']\r\n [mono-validation-state=\"invalid\"] ≡ aria-invalid:border-destructive aria-invalid:ring-destructive/20\r\n [mono-validation-state=\"valid|warning\"] ≡ EXTENSION (the same treatment in --success / --warning)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION (the textarea's font ladder; icons step with it)\r\n [mono-variant=\"filled\"] ≡ EXTENSION (luma / mira / rhea's textarea)\r\n [mono-variant=\"underlined\"] ≡ EXTENSION (sera's: the bottom edge only, no ring)\r\n [mono-rte-unavailable] ≡ EXTENSION (the peer-missing notice)\r\n .se-tooltip-text (SunEditor's) ≡ [data-tooltip]::before (bg-foreground text-background rounded-md px-3 py-1.5 text-xs)\r\n\r\n FLAVORS: the frame IS the textarea's box, so every metric resolves\r\n `--mono-rich-text-editor-<k>` → `--mono-textarea-<k>` → the base through the\r\n SAME chains textarea.css uses — a flavour that retunes the textarea retunes\r\n this frame, and no flavour file carries an editor entry. SunEditor's own\r\n popovers (dropdowns, the modal layer it parks on <body>) take the select\r\n panel's popover chain (`--mono-select-dropdown-*`), like every other popover.\r\n\r\n The editor DOM is LIGHT DOM in both builds (see `rich-text-editor-core.ts`),\r\n so the `--se-*` remap is declared on the frame and inherited by the mount —\r\n through a `<slot>` in the shadow build, which custom properties cross — and\r\n DELIVERED on `.sun-editor` from the PAGE sheet (the shadow sheet cannot reach\r\n a slotted descendant). Nothing below reaches into SunEditor's selectors except\r\n to flatten the frame it paints around itself, which the mono frame replaces.\r\n ========================================================================= */\r\n\r\nmono-rich-text-editor {\r\n display: block;\r\n}\r\n\r\n/* The token block — on the element root AND on SunEditor's carrier (the layer it\r\n parks on <body> for its dropdown lists, dialogs and alerts), which is outside\r\n every frame and can inherit nothing from it. The element's own props (`color`,\r\n `size`) cannot reach the carrier either: it takes the defaults. */\r\n[mono-rich-text-editor],\r\n.sun-editor.sun-editor-carrier-wrapper {\r\n /* ── palette: each slot is a public knob over the textarea's, over a Basecoat token ── */\r\n --_mono-rte-text: var(--mono-rich-text-editor-text, var(--mono-textarea-text, var(--foreground)));\r\n --_mono-rte-placeholder: var(--mono-rich-text-editor-placeholder, var(--mono-textarea-placeholder, var(--muted-foreground)));\r\n --_mono-rte-muted: var(--mono-rich-text-editor-muted, var(--mono-textarea-muted, var(--muted-foreground)));\r\n --_mono-rte-primary: var(--mono-rich-text-editor-primary, var(--mono-textarea-primary, var(--ring)));\r\n --_mono-rte-secondary: var(--mono-rich-text-editor-secondary, var(--mono-textarea-secondary, var(--muted-foreground)));\r\n --_mono-rte-success: var(--mono-rich-text-editor-success, var(--mono-textarea-success, var(--success)));\r\n --_mono-rte-danger: var(--mono-rich-text-editor-danger, var(--mono-textarea-danger, var(--destructive)));\r\n --_mono-rte-warning: var(--mono-rich-text-editor-warning, var(--mono-textarea-warning, var(--warning)));\r\n --_mono-rte-info: var(--mono-rich-text-editor-info, var(--mono-textarea-info, var(--info)));\r\n --_mono-rte-teal: var(--mono-rich-text-editor-teal, var(--mono-textarea-teal, var(--teal)));\r\n --_mono-rte-purple: var(--mono-rich-text-editor-purple, var(--mono-textarea-purple, var(--purple)));\r\n --_mono-rte-neutral: var(--mono-rich-text-editor-neutral, var(--mono-textarea-neutral, var(--neutral)));\r\n --_mono-rte-dark: var(--mono-rich-text-editor-dark, var(--mono-textarea-dark, var(--dark)));\r\n --_mono-rte-valid: var(--mono-rich-text-editor-valid, var(--mono-textarea-valid, var(--success)));\r\n --_mono-rte-invalid: var(--mono-rich-text-editor-invalid, var(--mono-textarea-invalid, var(--destructive)));\r\n\r\n /* ── the painted result — three tiers, base = vega's .textarea ─────────── */\r\n --_mono-rte-ring-color: var(--mono-rich-text-editor-ring-color, var(--mono-rich-text-editor-focus-color, var(--_mono-rte-ring-color-preset, var(--_mono-rte-primary))));\r\n --_mono-rte-ring-width: var(--mono-rich-text-editor-ring-width, var(--mono-textarea-ring-width, var(--_mono-rte-ring-width-preset, var(--mono-ring-width))));\r\n --_mono-rte-ring-alpha: var(--mono-rich-text-editor-ring-alpha, var(--mono-textarea-ring-alpha, var(--mono-ring-alpha)));\r\n --_mono-rte-border-color: var(--mono-rich-text-editor-rest-border, var(--mono-rich-text-editor-border-color, var(--mono-rich-text-editor-border, var(--mono-textarea-rest-border, var(--mono-textarea-border-color, var(--_mono-rte-border-color-preset, var(--input)))))));\r\n --_mono-rte-side-border-color: var(--_mono-rte-side-border-color-preset, var(--_mono-rte-border-color));\r\n --_mono-rte-bg: var(--mono-rich-text-editor-bg, var(--mono-rich-text-editor-surface, var(--mono-textarea-bg, var(--mono-textarea-surface, var(--_mono-rte-bg-preset, var(--mono-mode-surface))))));\r\n --_mono-rte-shadow: var(--mono-rich-text-editor-shadow, var(--mono-textarea-shadow, var(--_mono-rte-shadow-preset, var(--mono-shadow-xs))));\r\n --_mono-rte-border-width: var(--mono-rich-text-editor-border-width, var(--mono-textarea-border-width, var(--mono-border-width)));\r\n --_mono-rte-radius: var(--mono-rich-text-editor-radius, var(--mono-textarea-radius, var(--_mono-rte-radius-preset, var(--mono-radius-md))));\r\n\r\n /* ── md metrics live on the unqualified root ON PURPOSE: hand-written\r\n `<div mono-rich-text-editor>` that names no size renders like size=\"md\" ── */\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-md, var(--mono-textarea-font-md, var(--mono-text-sm))));\r\n --_mono-rte-icon-size: var(--mono-rich-text-editor-icon-size, var(--_mono-rte-icon-size-preset, 18px));\r\n --_mono-rte-font-family: var(--mono-rich-text-editor-font-family, inherit);\r\n --_mono-rte-min-height: var(--mono-rich-text-editor-min-height, 10rem);\r\n /* EXTENSION — the toolbar band: a muted wash under the frame's top edge */\r\n --_mono-rte-toolbar-bg: var(--mono-rich-text-editor-toolbar-bg, color-mix(in oklab, var(--muted) 60%, var(--_mono-rte-bg)));\r\n\r\n /* ── SunEditor's popovers (dropdowns, dialogs) are the select panel's popover ── */\r\n --_mono-rte-popover-bg: var(--mono-rich-text-editor-popover-bg, var(--mono-select-dropdown-bg, var(--popover)));\r\n --_mono-rte-popover-color: var(--mono-rich-text-editor-popover-color, var(--mono-select-dropdown-color, var(--popover-foreground)));\r\n --_mono-rte-popover-radius: var(--mono-rich-text-editor-popover-radius, var(--mono-select-dropdown-radius, var(--mono-radius-md)));\r\n --_mono-rte-popover-shadow: var(--mono-rich-text-editor-popover-shadow, var(--mono-select-dropdown-shadow, var(--mono-shadow-md)));\r\n\r\n /* basecoat@1.0.2 styles/vega.css [data-tooltip]::before — bg-foreground text-background rounded-md px-3 py-1.5 text-xs\r\n SunEditor's toolbar tooltips; the corner is the style's shared tooltip token */\r\n --_mono-rte-tooltip-bg: var(--mono-rich-text-editor-tooltip-bg, var(--mono-tooltip-bg, var(--foreground)));\r\n --_mono-rte-tooltip-color: var(--mono-rich-text-editor-tooltip-color, var(--mono-tooltip-color, var(--background)));\r\n --_mono-rte-tooltip-radius: var(--mono-rich-text-editor-tooltip-radius, var(--mono-tooltip-radius, var(--mono-radius-md)));\r\n\r\n /* ── SunEditor's tokens, remapped onto the theme ─────────────────────────\r\n Declared on the FRAME'S ancestor so the light-DOM mount inherits them in\r\n both builds. `.sun-editor` re-declares every one of these on itself with\r\n its defaults, so each is delivered again on `.sun-editor` below — this\r\n block is what a consumer sees and overrides; that one is the delivery. */\r\n --_se-main-color: var(--_mono-rte-text);\r\n --_se-main-color-lighter: var(--_mono-rte-muted);\r\n --_se-main-background: var(--_mono-rte-bg);\r\n --_se-main-border: var(--border);\r\n --_se-main-divider: var(--border);\r\n --_se-main-outline: var(--_mono-rte-ring-color);\r\n /* the accent: links and the focus outline */\r\n --_se-active: var(--_mono-rte-ring-color);\r\n --_se-active-dark: color-mix(in oklab, var(--_mono-rte-ring-color) 85%, var(--foreground));\r\n /* basecoat@1.0.2 styles/vega.css .btn[data-variant='ghost'] — hover:bg-accent hover:text-accent-foreground\r\n a pressed toolbar button and a checked list item are the toggle-on state:\r\n the accent WASH with the foreground ink, never a primary tint */\r\n --_se-active-ink: var(--mono-rich-text-editor-active-color, var(--accent-foreground, var(--_mono-rte-text)));\r\n --_se-active-light: var(--mono-rich-text-editor-active-bg, var(--accent, var(--muted)));\r\n --_se-active-light2: var(--mono-mode-surface-hover);\r\n --_se-hover: var(--_mono-rte-text);\r\n --_se-hover-light: var(--mono-mode-ghost-hover);\r\n --_se-hover-light2: var(--mono-mode-surface-hover);\r\n --_se-error: var(--_mono-rte-danger);\r\n --_se-success: var(--_mono-rte-success);\r\n --_se-placeholder: var(--_mono-rte-placeholder);\r\n --_se-radius: var(--mono-radius-sm);\r\n --_se-radius-lg: var(--_mono-rte-popover-radius);\r\n --_se-shadow-layer: var(--_mono-rte-popover-shadow);\r\n --_se-font-family: var(--_mono-rte-font-family);\r\n --_se-font-size: var(--_mono-rte-font-size);\r\n --_se-icon-size: var(--_mono-rte-icon-size);\r\n --_se-min-height: var(--_mono-rte-min-height);\r\n\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3 */\r\n[mono-rich-text-editor] {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--mono-rich-text-editor-gap, var(--mono-textarea-gap, calc(var(--mono-spacing) * 3)));\r\n width: 100%;\r\n min-width: 0;\r\n color: var(--_mono-rte-text);\r\n font-family: inherit;\r\n}\r\n\r\n[mono-rich-text-editor],\r\n:where([mono-rich-text-editor]) > *,\r\n:where([mono-rich-text-editor]) > * > *::before,\r\n:where([mono-rich-text-editor]) > * > *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n/* the shadow build renders every region and marks the empty ones; the light\r\n build renders only what exists */\r\n[mono-rich-text-editor] :is([mono-rte-label], [mono-rte-message], [mono-rte-footer])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n[mono-rich-text-editor] > [mono-rte-message-outlet]:not(:has([mono-rte-footer]:not([mono-empty]))) {\r\n display: none;\r\n}\r\n\r\n/* =========================================\r\n Sizes — EXTENSION: the textarea's font ladder; the icons step with it\r\n ========================================= */\r\n\r\n[mono-rich-text-editor][mono-size=\"xs\"] {\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-xs, var(--mono-textarea-font-xs, var(--mono-text-xs))));\r\n --_mono-rte-icon-size-preset: 14px;\r\n}\r\n[mono-rich-text-editor][mono-size=\"sm\"] {\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-sm, var(--mono-textarea-font-sm, var(--mono-textarea-font-md, var(--mono-text-sm)))));\r\n --_mono-rte-icon-size-preset: 16px;\r\n}\r\n[mono-rich-text-editor][mono-size=\"lg\"] {\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-lg, var(--mono-textarea-font-lg, var(--mono-textarea-font-md, var(--mono-text-sm)))));\r\n --_mono-rte-icon-size-preset: 20px;\r\n}\r\n[mono-rich-text-editor][mono-size=\"xl\"] {\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-xl, var(--mono-textarea-font-xl, var(--mono-text-base))));\r\n --_mono-rte-icon-size-preset: 22px;\r\n}\r\n[mono-rich-text-editor][mono-size=\"xxl\"] {\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-xxl, var(--mono-textarea-font-xxl, var(--mono-text-base))));\r\n --_mono-rte-icon-size-preset: 24px;\r\n}\r\n\r\n/* =========================================\r\n Colours — EXTENSION: the `color` prop is the FOCUS colour, which is also the\r\n editor's active state and links\r\n ========================================= */\r\n\r\n[mono-rich-text-editor][mono-color=\"secondary\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-secondary);\r\n}\r\n[mono-rich-text-editor][mono-color=\"success\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-success);\r\n}\r\n[mono-rich-text-editor][mono-color=\"danger\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-danger);\r\n}\r\n[mono-rich-text-editor][mono-color=\"warning\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-warning);\r\n}\r\n[mono-rich-text-editor][mono-color=\"info\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-info);\r\n}\r\n[mono-rich-text-editor][mono-color=\"teal\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-teal);\r\n}\r\n[mono-rich-text-editor][mono-color=\"purple\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-purple);\r\n}\r\n[mono-rich-text-editor][mono-color=\"neutral\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-neutral);\r\n}\r\n[mono-rich-text-editor][mono-color=\"dark\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-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\r\n — text-sm leading-snug font-medium */\r\n:where([mono-rich-text-editor]) > [mono-rte-label] {\r\n display: flex;\r\n align-items: center;\r\n gap: calc(var(--mono-spacing) * 1);\r\n font-size: var(--mono-rich-text-editor-label-font-size, var(--mono-textarea-label-font-size, var(--mono-text-sm)));\r\n line-height: var(--mono-rich-text-editor-label-line-height, var(--mono-textarea-label-line-height, var(--mono-leading-snug)));\r\n font-weight: var(--mono-rich-text-editor-label-font-weight, var(--mono-textarea-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium))));\r\n color: var(--mono-rich-text-editor-label-color, var(--mono-textarea-label-color, var(--_mono-rte-text)));\r\n}\r\n\r\n[mono-rich-text-editor][mono-validation-state=\"invalid\"] > [mono-rte-label] {\r\n color: var(--mono-rich-text-editor-label-color, var(--mono-textarea-label-color, var(--_mono-rte-invalid)));\r\n}\r\n\r\n:where([mono-rich-text-editor]) [mono-rte-required-mark] {\r\n color: var(--mono-rich-text-editor-required-color, var(--mono-textarea-required-color, var(--destructive)));\r\n}\r\n\r\n[mono-rich-text-editor][mono-disabled] > [mono-rte-label] {\r\n opacity: 0.5;\r\n}\r\n\r\n/* =========================================\r\n The frame — the textarea's box, holding the editor\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > textarea, .textarea\r\n — rounded-md border border-input bg-transparent shadow-xs\r\n transition-[color,box-shadow] (dark:bg-input/30 via --mono-mode-surface);\r\n mono: no padding — the editor's toolbar and page fill the box edge to edge */\r\n:where([mono-rich-text-editor]) [mono-rte-field] {\r\n --_mono-rte-ring: 0 0 #0000;\r\n position: relative;\r\n width: 100%;\r\n min-width: 0;\r\n border: var(--_mono-rte-border-width) solid var(--_mono-rte-side-border-color);\r\n border-bottom-color: var(--_mono-rte-border-color);\r\n border-radius: var(--_mono-rte-radius);\r\n background-color: var(--_mono-rte-bg);\r\n color: var(--_mono-rte-text);\r\n box-shadow: var(--_mono-rte-ring), var(--_mono-rte-shadow);\r\n /* the editor paints its own corners; clip so the toolbar's top corners follow\r\n the frame's radius */\r\n overflow: hidden;\r\n transition-property: color, background-color, border-color, box-shadow, opacity;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n/* Before the editor loads (and on the server) the frame is a quiet box the\r\n size of the editing area, so the form does not jump when it lands. */\r\n[mono-rich-text-editor][mono-loading] [mono-rte-field] {\r\n min-height: calc(var(--_mono-rte-min-height) + 2.75rem);\r\n}\r\n[mono-rich-text-editor][mono-unavailable] [mono-rte-field] {\r\n display: none;\r\n}\r\n\r\n/* focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 —\r\n the focus is on SunEditor's contenteditable inside the frame */\r\n:where([mono-rich-text-editor]) [mono-rte-field]:focus-within {\r\n border-color: var(--_mono-rte-side-border-color);\r\n border-bottom-color: var(--_mono-rte-ring-color);\r\n --_mono-rte-ring: 0 0 0 var(--_mono-rte-ring-width) color-mix(in oklab, var(--_mono-rte-ring-color) var(--_mono-rte-ring-alpha), transparent);\r\n}\r\n[mono-rich-text-editor]:is(:not([mono-variant]), [mono-variant=\"outlined\"], [mono-variant=\"filled\"]) [mono-rte-field]:focus-within {\r\n border-color: var(--_mono-rte-ring-color);\r\n}\r\n\r\n/* aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20\r\n (dark: /50 and /40, carried by the mode tokens) */\r\n[mono-rich-text-editor][mono-validation-state=\"invalid\"] [mono-rte-field] {\r\n --_mono-rte-border-color: var(--mono-mode-invalid-border);\r\n --_mono-rte-ring: 0 0 0 var(--_mono-rte-ring-width) var(--mono-mode-invalid-ring);\r\n}\r\n\r\n/* EXTENSION — the same treatment in the success / warning roles */\r\n[mono-rich-text-editor][mono-validation-state=\"valid\"] [mono-rte-field] {\r\n --_mono-rte-border-color: color-mix(in oklab, var(--_mono-rte-valid) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-rte-ring: 0 0 0 var(--_mono-rte-ring-width) color-mix(in oklab, var(--_mono-rte-valid) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n[mono-rich-text-editor][mono-validation-state=\"warning\"] [mono-rte-field] {\r\n --_mono-rte-border-color: color-mix(in oklab, var(--_mono-rte-warning) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-rte-ring: 0 0 0 var(--_mono-rte-ring-width) color-mix(in oklab, var(--_mono-rte-warning) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n\r\n/* disabled:cursor-not-allowed disabled:opacity-50 */\r\n[mono-rich-text-editor][mono-disabled] [mono-rte-field] {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n background-color: var(--mono-rich-text-editor-disabled-bg, var(--mono-textarea-disabled-bg, var(--_mono-rte-bg)));\r\n}\r\n\r\n/* EXTENSION — readonly is legible, not dimmed: a muted surface */\r\n[mono-rich-text-editor][mono-readonly]:not([mono-disabled]) [mono-rte-field] {\r\n --_se-main-background: var(--mono-rich-text-editor-readonly-bg, var(--mono-textarea-readonly-bg, var(--muted)));\r\n background-color: var(--mono-rich-text-editor-readonly-bg, var(--mono-textarea-readonly-bg, var(--muted)));\r\n}\r\n\r\n/* =========================================\r\n Variants — EXTENSION: the two other looks Basecoat's styles ship, through\r\n the textarea's own knobs so a flavour that restyles the textarea restyles this\r\n ========================================= */\r\n\r\n[mono-rich-text-editor]:is(:not([mono-variant]), [mono-variant=\"outlined\"]) {\r\n --_mono-rte-bg-preset: var(--mono-rich-text-editor-outline-bg, var(--mono-textarea-outline-bg));\r\n --_mono-rte-border-color-preset: var(--mono-rich-text-editor-outline-border-color, var(--mono-textarea-outline-border-color));\r\n --_mono-rte-side-border-color-preset: var(--mono-rich-text-editor-outline-side-border-color, var(--mono-textarea-outline-side-border-color));\r\n --_mono-rte-shadow-preset: var(--mono-rich-text-editor-outline-shadow, var(--mono-textarea-outline-shadow, var(--mono-shadow-xs)));\r\n --_mono-rte-radius-preset: var(--mono-rich-text-editor-outline-radius, var(--mono-textarea-outline-radius));\r\n --_mono-rte-ring-width-preset: var(--mono-rich-text-editor-outline-ring-width, var(--mono-textarea-outline-ring-width));\r\n}\r\n\r\n/* `filled` ≡ luma / mira / rhea's textarea: a tinted surface, no border, no shadow */\r\n[mono-rich-text-editor][mono-variant=\"filled\"] {\r\n --_mono-rte-bg-preset: var(--mono-rich-text-editor-filled-bg, var(--mono-textarea-filled-bg, color-mix(in oklab, var(--input) 50%, transparent)));\r\n --_mono-rte-border-color-preset: transparent;\r\n --_mono-rte-shadow-preset: 0 0 #0000;\r\n}\r\n\r\n/* `underlined` ≡ sera's: square, the bottom edge only, and no ring */\r\n[mono-rich-text-editor][mono-variant=\"underlined\"] {\r\n --_mono-rte-radius-preset: 0;\r\n --_mono-rte-bg-preset: transparent;\r\n --_mono-rte-side-border-color-preset: transparent;\r\n --_mono-rte-shadow-preset: 0 0 #0000;\r\n --_mono-rte-ring-width-preset: 0px;\r\n}\r\n[mono-rich-text-editor][mono-variant=\"underlined\"] [mono-rte-field] {\r\n --_se-main-background: transparent;\r\n --_mono-rte-toolbar-bg: transparent;\r\n}\r\n\r\n/* =========================================\r\n Footer — the message row\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:where([mono-rich-text-editor]) [mono-rte-footer] {\r\n display: flex;\r\n align-items: flex-start;\r\n justify-content: space-between;\r\n gap: calc(var(--mono-spacing) * 2);\r\n}\r\n\r\n:where([mono-rich-text-editor]) [mono-rte-message-wrap] {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n}\r\n\r\n:where([mono-rich-text-editor]) [mono-rte-message] {\r\n font-size: var(--mono-rich-text-editor-message-font-size, var(--mono-textarea-message-font-size, var(--mono-text-sm)));\r\n line-height: var(--mono-rich-text-editor-message-line-height, var(--mono-textarea-message-line-height, var(--mono-leading-normal)));\r\n font-weight: var(--mono-font-weight-normal);\r\n color: var(--_mono-rte-muted);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field [role=\"alert\"] — text-destructive text-sm */\r\n:where([mono-rich-text-editor]) [mono-rte-message=\"invalid\"] {\r\n color: var(--_mono-rte-invalid);\r\n}\r\n:where([mono-rich-text-editor]) [mono-rte-message=\"valid\"] {\r\n color: var(--_mono-rte-valid);\r\n}\r\n:where([mono-rich-text-editor]) [mono-rte-message=\"warning\"] {\r\n color: var(--_mono-rte-warning);\r\n}\r\n\r\n/* EXTENSION — the peer-missing notice: reads like a validation message, never like a crash */\r\n:where([mono-rich-text-editor]) [mono-rte-unavailable] {\r\n padding: calc(var(--mono-spacing) * 2.5) calc(var(--mono-spacing) * 3);\r\n border: var(--mono-border-width) dashed var(--_mono-rte-danger);\r\n border-radius: var(--_mono-rte-radius);\r\n background: color-mix(in oklab, var(--_mono-rte-danger) var(--mono-mode-tint), transparent);\r\n color: var(--_mono-rte-danger);\r\n font-size: var(--mono-text-sm);\r\n line-height: var(--mono-leading-normal);\r\n overflow-wrap: anywhere;\r\n}\r\n\r\n/* =========================================\r\n SunEditor inside the frame — from the PAGE sheet (the mount is light DOM)\r\n ========================================= */\r\n\r\n[mono-rte-mount] {\r\n display: block;\r\n width: 100%;\r\n min-width: 0;\r\n}\r\n\r\n/* Deliver the remap. `.sun-editor` sets every `--se-*` on itself from\r\n SunEditor's sheet, so the same selector (plus ours for specificity) has to\r\n set them again — the values, though, come from the frame's `--_se-*` above,\r\n which the mount inherits. Only the tokens a theme is made of; the rest keep\r\n SunEditor's defaults. */\r\n[mono-rte-mount] .sun-editor,\r\n[mono-rte-mount] .sun-editor-editable,\r\n.sun-editor.sun-editor-carrier-wrapper {\r\n --se-main-font-family: var(--_se-font-family);\r\n --se-content-font-family: var(--_se-font-family);\r\n --se-main-font-size: var(--_se-font-size);\r\n --se-btn-font-size: var(--_se-font-size);\r\n --se-edit-font-size: calc(var(--_se-font-size) * 1.1);\r\n --se-icon-size: var(--_se-icon-size);\r\n --se-min-height: var(--_se-min-height);\r\n --se-border-radius: var(--_se-radius);\r\n --se-border-radius-lg: var(--_se-radius-lg);\r\n\r\n --se-main-color: var(--_se-main-color);\r\n --se-main-color-lighter: var(--_se-main-color-lighter);\r\n --se-main-font-color: var(--_se-main-color);\r\n --se-main-background-color: var(--_se-main-background);\r\n --se-main-border-color: var(--_se-main-border);\r\n --se-main-divider-color: var(--_se-main-divider);\r\n --se-main-outline-color: var(--_se-main-outline);\r\n --se-main-shadow-color: var(--_se-main-divider);\r\n --se-statusbar-font-color: var(--_se-main-color-lighter);\r\n --se-dropdown-font-color: var(--_se-main-color);\r\n\r\n --se-edit-font-color: var(--_se-main-color);\r\n --se-edit-background-color: var(--_se-main-background);\r\n --se-edit-anchor: var(--_se-active);\r\n --se-caret-color: var(--_se-main-color);\r\n --se-placeholder-color: var(--_se-placeholder);\r\n\r\n --se-hover-color: var(--_se-hover);\r\n --se-hover-dark-color: var(--_se-main-border);\r\n --se-hover-light-color: var(--_se-hover-light);\r\n --se-hover-light2-color: var(--_se-hover-light2);\r\n --se-hover-light3-color: var(--_se-hover-light2);\r\n\r\n /* the accent for outlines and links; the toggle-on state for buttons and\r\n checked list items (ink = --se-active-dark3/4, wash = --se-active-light*) */\r\n --se-active-color: var(--_se-active);\r\n --se-active-hover-color: var(--_se-active-ink);\r\n --se-active-dark-color: var(--_se-main-border);\r\n --se-active-dark2-color: var(--_se-active-dark);\r\n --se-active-dark3-color: var(--_se-active-ink);\r\n --se-active-dark4-color: var(--_se-main-border);\r\n --se-active-dark5-color: var(--_se-active-dark);\r\n --se-active-light-color: var(--_se-active-light);\r\n --se-active-light2-color: var(--_se-active-light);\r\n --se-active-light3-color: var(--_se-active-light2);\r\n --se-active-light4-color: var(--_se-active-light);\r\n --se-active-light5-color: var(--_se-active-light2);\r\n --se-active-light6-color: var(--_se-active-light2);\r\n\r\n --se-error-color: var(--_se-error);\r\n --se-success-color: var(--_se-success);\r\n\r\n --se-select-menu-hover-bg: var(--_se-hover-light);\r\n --se-select-menu-active-bg: var(--_se-active-light);\r\n --se-modal-background-color: var(--_mono-rte-popover-bg);\r\n --se-modal-color: var(--_mono-rte-popover-color);\r\n --se-modal-border-color: var(--_se-main-border);\r\n --se-modal-anchor-color: var(--_se-active);\r\n --se-shadow-layer: var(--_se-shadow-layer);\r\n\r\n /* ── the sub-surfaces SunEditor paints from its own light palette ────────\r\n code view, the table picker, the floating controllers, the modal chrome,\r\n the overlay, the editing area's own colours — every one a page token now */\r\n --se-codeview-font-family: var(--font-mono, ui-monospace, monospace);\r\n --se-markdown-font-family: var(--font-mono, ui-monospace, monospace);\r\n --se-code-view-color: var(--_mono-rte-text);\r\n --se-code-view-background-color: var(--_se-main-background);\r\n --se-code-view-line-color: var(--_mono-rte-muted);\r\n --se-code-view-line-background-color: var(--muted);\r\n --se-markdown-view-color: var(--_mono-rte-text);\r\n --se-markdown-view-background-color: var(--_se-main-background);\r\n --se-markdown-view-line-color: var(--_mono-rte-muted);\r\n --se-markdown-view-line-background-color: var(--muted);\r\n\r\n --se-table-picker-color: var(--_mono-rte-popover-bg);\r\n --se-table-picker-border-color: var(--_se-main-border);\r\n --se-table-picker-highlight-color: color-mix(in oklab, var(--_se-active) var(--mono-mode-tint), var(--_mono-rte-popover-bg));\r\n --se-table-picker-highlight-border-color: var(--_se-active);\r\n\r\n --se-controller-background-color: var(--_mono-rte-popover-bg);\r\n --se-controller-color: var(--_mono-rte-popover-color);\r\n --se-controller-border-color: var(--_se-main-border);\r\n --se-shadow-controller: var(--_se-shadow-layer);\r\n --se-shadow-controller-color: transparent;\r\n --se-shadow-layer-color: transparent;\r\n --se-overlay-background-color: var(--mono-mode-backdrop, #000);\r\n\r\n --se-modal-preview-color: var(--_mono-rte-muted);\r\n --se-modal-file-input-background-color: var(--muted);\r\n --se-modal-input-disabled-color: var(--_mono-rte-muted);\r\n --se-modal-input-disabled-background-color: var(--muted);\r\n --se-input-btn-border-color: var(--_se-main-border);\r\n --se-input-btn-disabled-color: var(--_mono-rte-muted);\r\n --se-main-out-color: var(--_se-main-border);\r\n --se-hover-dark2-color: var(--_se-main-border);\r\n --se-hover-dark3-color: var(--_se-main-border);\r\n --se-loading-color: var(--_se-active);\r\n\r\n --se-drag-caret-color: var(--_se-active);\r\n --se-edit-active: var(--_se-active);\r\n --se-edit-hover: var(--_se-active-light);\r\n --se-edit-outline: var(--_se-main-border);\r\n --se-edit-font-pre: var(--_mono-rte-text);\r\n --se-edit-font-quote: var(--_mono-rte-muted);\r\n --se-edit-background-pre: var(--muted);\r\n --se-edit-border-light: var(--_se-main-border);\r\n --se-edit-border-dark: var(--_se-main-border);\r\n --se-edit-border-dark-n1: var(--_se-main-border);\r\n --se-edit-border-dark-n2: var(--_se-main-border);\r\n --se-edit-border-table: var(--_se-main-border);\r\n --se-edit-hr-color: var(--_se-main-border);\r\n --se-edit-hr-on-back: var(--_se-active-light);\r\n --se-edit-anchor-on-back: color-mix(in oklab, var(--_se-active) var(--mono-mode-tint), transparent);\r\n --se-edit-anchor-on-font: var(--_se-active);\r\n\r\n --se-success-dark-color: var(--_se-success);\r\n --se-success-dark2-color: var(--_se-success);\r\n --se-success-dark3-color: var(--_se-success);\r\n --se-success-light-color: color-mix(in oklab, var(--_se-success) var(--mono-mode-tint), transparent);\r\n --se-success-light2-color: color-mix(in oklab, var(--_se-success) var(--mono-mode-tint), transparent);\r\n --se-success-light3-color: color-mix(in oklab, var(--_se-success) var(--mono-mode-tint-hover), transparent);\r\n --se-success-light4-color: var(--_se-success);\r\n --se-success-light5-color: var(--_se-success);\r\n --se-error-dark-color: var(--_se-error);\r\n --se-error-dark2-color: var(--_se-error);\r\n --se-error-dark3-color: var(--_se-error);\r\n --se-error-light-color: color-mix(in oklab, var(--_se-error) var(--mono-mode-tint-hover), transparent);\r\n --se-error-light2-color: color-mix(in oklab, var(--_se-error) var(--mono-mode-tint), transparent);\r\n --se-error-light3-color: color-mix(in oklab, var(--_se-error) var(--mono-mode-tint), transparent);\r\n --se-error-light4-color: color-mix(in oklab, var(--_se-error) var(--mono-mode-tint), transparent);\r\n --se-error-light5-color: color-mix(in oklab, var(--_se-error) var(--mono-mode-tint), transparent);\r\n}\r\n\r\n/* In the carrier \"main background\" is the LAYER surface — the dropdown lists,\r\n dialogs and alerts — so it is the popover surface there, not the editing\r\n surface (which is transparent in light mode: an invisible list). */\r\n.sun-editor.sun-editor-carrier-wrapper {\r\n --se-main-background-color: var(--_mono-rte-popover-bg);\r\n --se-main-font-color: var(--_mono-rte-popover-color);\r\n --se-dropdown-font-color: var(--_mono-rte-popover-color);\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 — bg-muted text-foreground\r\n a checked list item (the current font, size, format …) is a selected option:\r\n SunEditor only re-inks it, and its ink was the primary tint */\r\n[mono-rte-mount] .sun-editor .se-list-inner li.se-checked > button,\r\n.sun-editor.sun-editor-carrier-wrapper .se-list-inner li.se-checked > button {\r\n background-color: var(--_se-active-light);\r\n color: var(--_se-active-ink);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > textarea, .textarea — placeholder:text-muted-foreground\r\n Every placeholder the editor shows — the Size / Font inputs in the toolbar,\r\n the empty editing area, a dialog's fields — is the field placeholder: the\r\n muted ink, OPAQUE. Left alone, a host page's preflight (Tailwind / UnoCSS)\r\n makes a placeholder 50% translucent currentColor, which over a tinted page\r\n reads as a colour of its own; and SunEditor inks its empty-area placeholder\r\n with its OUTLINE token, the accent. */\r\n[mono-rte-mount] .sun-editor input::placeholder,\r\n[mono-rte-mount] .sun-editor textarea::placeholder,\r\n.sun-editor.sun-editor-carrier-wrapper input::placeholder,\r\n.sun-editor.sun-editor-carrier-wrapper textarea::placeholder {\r\n color: var(--_mono-rte-placeholder);\r\n opacity: 1;\r\n}\r\n[mono-rte-mount] .sun-editor .se-wrapper .se-placeholder,\r\n[mono-rte-mount] .sun-editor .se-wrapper .se-placeholder-line:before {\r\n color: var(--_mono-rte-placeholder);\r\n}\r\n\r\n/* The frame replaces SunEditor's own — no double border, no second radius. */\r\n[mono-rte-mount] .sun-editor {\r\n border: 0;\r\n border-radius: 0;\r\n background: transparent;\r\n width: 100% !important;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css [data-tooltip]::before — bg-foreground text-background inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs\r\n SunEditor's toolbar tooltips, painted as Basecoat's tooltip: it drew them in\r\n `--se-main-font-color` on `--se-main-background-color`, which in dark mode\r\n is a translucent wash under near-white text. (0,5,0) over SunEditor's (0,4,0). */\r\n[mono-rte-mount] .sun-editor .se-tooltip .se-tooltip-inner .se-tooltip-text,\r\n.sun-editor.sun-editor-carrier-wrapper .se-tooltip .se-tooltip-inner .se-tooltip-text {\r\n padding: calc(var(--mono-spacing) * 1.5) calc(var(--mono-spacing) * 3);\r\n border-radius: var(--_mono-rte-tooltip-radius);\r\n background-color: var(--_mono-rte-tooltip-bg);\r\n color: var(--_mono-rte-tooltip-color);\r\n /* the page font, handed over by the element: a tooltip inside the font list\r\n would otherwise inherit the item's own face */\r\n font-family: var(--_mono-rte-page-font, inherit);\r\n font-size: var(--mono-text-xs);\r\n line-height: var(--mono-text-xs--lh);\r\n font-weight: var(--mono-font-weight-normal);\r\n white-space: nowrap;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css [data-tooltip]::before — the dropdown items (font family,\r\n font size, the colour palettes …) carried native `title` tooltips, which no theme can\r\n paint; the element rewrites them into `data-tooltip`, drawn here the way Basecoat\r\n draws its own: a pseudo-element with the attribute as content, above the item\r\n (the anchor is `position: relative`, as in Basecoat's compiled `[data-tooltip]`) */\r\n[mono-rte-mount] .sun-editor [data-tooltip],\r\n.sun-editor.sun-editor-carrier-wrapper [data-tooltip] {\r\n position: relative;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css [data-tooltip]::before — bg-foreground text-background inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs */\r\n[mono-rte-mount] .sun-editor [data-tooltip]::after,\r\n.sun-editor.sun-editor-carrier-wrapper [data-tooltip]::after {\r\n content: attr(data-tooltip);\r\n position: absolute;\r\n left: 50%;\r\n bottom: calc(100% + calc(var(--mono-spacing) * 1.5));\r\n z-index: 60;\r\n width: max-content;\r\n max-width: 20rem;\r\n padding: calc(var(--mono-spacing) * 1.5) calc(var(--mono-spacing) * 3);\r\n border-radius: var(--_mono-rte-tooltip-radius);\r\n background-color: var(--_mono-rte-tooltip-bg);\r\n color: var(--_mono-rte-tooltip-color);\r\n font-family: var(--_mono-rte-page-font, inherit);\r\n font-size: var(--mono-text-xs);\r\n line-height: var(--mono-text-xs--lh);\r\n font-weight: var(--mono-font-weight-normal);\r\n font-style: normal;\r\n text-indent: 0;\r\n text-transform: none;\r\n letter-spacing: normal;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n pointer-events: none;\r\n visibility: hidden;\r\n opacity: 0;\r\n transform: translateX(-50%) scale(0.95);\r\n transform-origin: bottom center;\r\n transition-property: opacity, transform, visibility;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration-fast, 100ms);\r\n}\r\n\r\n[mono-rte-mount] .sun-editor [data-tooltip]:hover::after,\r\n[mono-rte-mount] .sun-editor [data-tooltip]:focus-visible::after,\r\n.sun-editor.sun-editor-carrier-wrapper [data-tooltip]:hover::after,\r\n.sun-editor.sun-editor-carrier-wrapper [data-tooltip]:focus-visible::after {\r\n visibility: visible;\r\n opacity: 1;\r\n transform: translateX(-50%) scale(1);\r\n}\r\n\r\n/* a dropdown layer clips its own overflow, so a tooltip above the FIRST row of a\r\n palette would be cut off at the layer edge: that row opens its tooltips below */\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet:first-child [data-tooltip]::after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet:first-child [data-tooltip]::after {\r\n bottom: auto;\r\n top: calc(100% + calc(var(--mono-spacing) * 1.5));\r\n transform-origin: top center;\r\n}\r\n\r\n/* SunEditor shrinks a hovered / active swatch with `transform: scale(.8)`. A\r\n transform makes the button a stacking context, so its tooltip — a child —\r\n can never rise above the swatches painted after it (the next row covers a\r\n first-row tooltip) and shrinks with it. The same \"pressed\" read as an inset\r\n ring of the layer surface instead; the hovered swatch lifts above its row. */\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet button:hover,\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet button.active,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet button:hover,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet button.active {\r\n transform: none;\r\n box-shadow: inset 0 0 0 3px var(--_mono-rte-popover-bg, var(--popover));\r\n}\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet button:hover,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet button:hover {\r\n z-index: 1;\r\n}\r\n\r\n/* …and the same clip sideways: a centred tooltip on the first / last column of\r\n a palette row runs past the layer's edge, so those hang from the item's own\r\n outer edge instead */\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet li:first-child [data-tooltip]::after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet li:first-child [data-tooltip]::after {\r\n left: 0;\r\n transform: scale(0.95);\r\n transform-origin: left center;\r\n}\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet li:last-child [data-tooltip]::after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet li:last-child [data-tooltip]::after {\r\n left: auto;\r\n right: 0;\r\n transform: scale(0.95);\r\n transform-origin: right center;\r\n}\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet li:is(:first-child, :last-child) [data-tooltip]:hover::after,\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet li:is(:first-child, :last-child) [data-tooltip]:focus-visible::after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet li:is(:first-child, :last-child) [data-tooltip]:hover::after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet li:is(:first-child, :last-child) [data-tooltip]:focus-visible::after {\r\n transform: scale(1);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css [data-tooltip][data-arrow]::after — bg-foreground */\r\n[mono-rte-mount] .sun-editor .se-tooltip .se-tooltip-inner .se-tooltip-text:after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-tooltip .se-tooltip-inner .se-tooltip-text:after {\r\n border-color: transparent transparent var(--_mono-rte-tooltip-bg) transparent;\r\n}\r\n[mono-rte-mount] .sun-editor .se-toolbar.se-toolbar-bottom .se-tooltip .se-tooltip-inner .se-tooltip-text:after {\r\n border-color: var(--_mono-rte-tooltip-bg) transparent transparent transparent;\r\n}\r\n\r\n/* EXTENSION — the toolbar band, on a hairline */\r\n[mono-rte-mount] .sun-editor .se-toolbar {\r\n background: var(--_mono-rte-toolbar-bg);\r\n box-shadow: inset 0 calc(var(--mono-border-width) * -1) 0 0 var(--border);\r\n}\r\n\r\n/* The carrier — modals, alerts and the dropdown lists SunEditor parks on <body>\r\n — is in the token block and the delivery rule above: it paints exactly like\r\n the frame it belongs to, at the element's default `color` and `size`. */\r\n\r\n/* =========================================\r\n SunEditor's dialogs — the modal SunEditor parks in its carrier: its chrome\r\n is the page's dialog, its fields the ported input, its buttons the ported\r\n button, its tabs the ported tabs. Selectors mirror SunEditor's own chains\r\n (prefixed by the scope) so they out-weigh them by exactly the scope.\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .dialog > * — bg-popover text-popover-foreground */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-content {\r\n border: var(--mono-border-width) solid var(--_se-main-border);\r\n border-radius: var(--_mono-rte-popover-radius);\r\n box-shadow: var(--_mono-rte-popover-shadow);\r\n color: var(--_mono-rte-popover-color);\r\n}\r\n\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-header .se-modal-title {\r\n font-size: var(--mono-text-base);\r\n font-weight: var(--mono-font-weight-semibold);\r\n color: var(--_mono-rte-popover-color);\r\n}\r\n\r\n/* the close button: a ghost button, muted at rest */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-header .se-close-btn {\r\n color: var(--_mono-rte-muted);\r\n text-shadow: none;\r\n border-radius: var(--mono-radius-sm);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .tabs > [role='tablist'] — the modal's Image / Link tabs:\r\n a text tab with the accent under the active one, not a boxed strip */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-tabs {\r\n /* SunEditor floats the tab buttons inside a 25px-high strip; as a flex row the\r\n strip is as tall as the tabs and stays in flow above the form */\r\n display: flex;\r\n align-items: stretch;\r\n gap: calc(var(--mono-spacing) * 1);\r\n height: auto;\r\n margin-bottom: calc(var(--mono-spacing) * 3);\r\n border-bottom: var(--mono-border-width) solid var(--_se-main-border);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-tabs button {\r\n background-color: transparent;\r\n border: 0;\r\n border-bottom: 2px solid transparent;\r\n margin-bottom: calc(var(--mono-border-width) * -1);\r\n padding: calc(var(--mono-spacing) * 1.5) calc(var(--mono-spacing) * 3);\r\n color: var(--_mono-rte-muted);\r\n font-size: var(--mono-text-sm);\r\n font-weight: var(--mono-font-weight-medium);\r\n transition-property: color, border-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-tabs button:hover {\r\n background-color: transparent;\r\n color: var(--_mono-rte-text);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-tabs button.active {\r\n background-color: transparent;\r\n border-bottom-color: var(--_se-active);\r\n color: var(--_mono-rte-text);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group — rounded-md border border-input\r\n the modal's text fields and selects are the ported input: its surface, edge,\r\n corner and ring, through the input's own public knobs */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-input-form,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-input-select,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form select,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-controller input[type='text'],\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-controller select {\r\n background-color: var(--mono-input-bg, var(--mono-input-surface, var(--mono-input-outline-bg, var(--mono-mode-surface))));\r\n border: var(--mono-border-width) solid var(--mono-input-rest-border, var(--mono-input-border-color, var(--mono-input-outline-border-color, var(--input))));\r\n border-radius: var(--mono-input-radius-sm, var(--mono-input-outline-radius, var(--mono-input-radius, var(--mono-radius-md))));\r\n color: var(--_mono-rte-text);\r\n box-shadow: var(--mono-input-outline-shadow, var(--mono-shadow-xs));\r\n font-size: var(--mono-text-sm);\r\n outline: none;\r\n transition-property: border-color, box-shadow;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-input-form:focus,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form select:focus {\r\n border-color: var(--_se-active);\r\n box-shadow: 0 0 0 var(--mono-ring-width) color-mix(in oklab, var(--_se-active) var(--mono-ring-alpha), transparent);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner input:disabled {\r\n opacity: 0.5;\r\n}\r\n\r\n/* the file drop area: a dashed muted panel */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-flex-input-wrapper > .se-input-form-abs {\r\n border-radius: var(--mono-input-radius-sm, var(--mono-input-outline-radius, var(--mono-input-radius, var(--mono-radius-md))));\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .btn — Submit is the primary button */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-btn-primary,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-content .se-btn-primary {\r\n background-color: var(--mono-button-bg, var(--primary));\r\n border: var(--mono-border-width) solid transparent;\r\n border-radius: var(--mono-button-sm-radius, var(--mono-button-radius, var(--mono-radius-md)));\r\n color: var(--mono-button-color, var(--primary-foreground));\r\n font-size: var(--mono-text-sm);\r\n font-weight: var(--mono-font-weight-medium);\r\n box-shadow: var(--mono-shadow-xs);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-btn-primary:hover,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-btn-primary:focus {\r\n background-color: color-mix(in oklab, var(--mono-button-bg, var(--primary)) 90%, transparent);\r\n border-color: transparent;\r\n color: var(--mono-button-color, var(--primary-foreground));\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-btn-primary:disabled {\r\n opacity: 0.5;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .btn[data-variant='outline'] — the modal's secondary buttons */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-btn-revert,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-modal-form-files .se-modal-files-edge-button,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-modal-flex-form .se-btn {\r\n border: var(--mono-border-width) solid var(--input);\r\n border-radius: var(--mono-button-sm-radius, var(--mono-button-radius, var(--mono-radius-md)));\r\n background-color: var(--background);\r\n color: var(--_mono-rte-text);\r\n opacity: 1;\r\n}\r\n\r\n/* the native checkboxes and radios take the accent */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) input[type='checkbox'],\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) input[type='radio'] {\r\n accent-color: var(--_se-active);\r\n}\r\n\r\n/* the floating controllers (link / image / table) are popovers */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-controller {\r\n border-radius: var(--_mono-rte-popover-radius);\r\n}\r\n\r\n/* Full screen — SunEditor fixes its root over the page (inline style, no class of\r\n its own; the element marks the mount when SunEditor reports the toggle, and the\r\n inline style is the fallback). The frame stays behind, so the editor takes the\r\n PAGE surface itself: opaque, in the mode's colours, the toolbar band on top. */\r\n[mono-rte-mount][mono-fullscreen] .sun-editor,\r\n[mono-rte-mount] .sun-editor[style*=\"position: fixed\"] {\r\n --_se-main-background: var(--mono-rich-text-editor-fullscreen-bg, var(--background));\r\n --_mono-rte-toolbar-bg: var(--mono-rich-text-editor-toolbar-bg, color-mix(in oklab, var(--muted) 60%, var(--mono-rich-text-editor-fullscreen-bg, var(--background))));\r\n background: var(--mono-rich-text-editor-fullscreen-bg, var(--background));\r\n color: var(--_mono-rte-text);\r\n}\r\n\r\n/* code view: the page's mono face on the editing surface, the line column muted */\r\n[mono-rte-mount] .sun-editor .se-wrapper .se-code-viewer,\r\n[mono-rte-mount] .sun-editor .se-wrapper .se-code-wrapper .se-code-view-line {\r\n font-family: var(--font-mono, ui-monospace, monospace);\r\n font-size: var(--mono-text-sm);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n :where([mono-rich-text-editor]) [mono-rte-field] {\r\n transition: none;\r\n }\r\n}\r\n";
|
|
1283
|
+
//#region \0raw:C:\Users\VCT-DEV\Desktop\libs\packages\helper\src\components\rich-text-editor\rich-text-editor.css?raw.js
|
|
1284
|
+
var rich_text_editor_css_raw_default = "/* =========================================================================\r\n mono-rich-text-editor — a mono form field whose input is a SunEditor v3\r\n instance. An EXTENSION: Basecoat has no editor, so the CHROME is the ported\r\n textarea's `.field` (basecoat-css@1.0.2, vega style) — label, frame, message\r\n — and the EDITOR is SunEditor's own DOM, styled by ITS stylesheet\r\n (`suneditor/css/editor`, loaded by the element at runtime) and themed from\r\n here by remapping its `--se-*` tokens onto the Basecoat tokens.\r\n\r\n Styled by ATTRIBUTE, like Basecoat — and the attributes mirror the element's\r\n props one for one, so hand-written markup reads like the Lit / Vue tag:\r\n\r\n <mono-rich-text-editor size=\"sm\" color=\"danger\" label=\"Body\" helper-text=\"…\">\r\n <div mono-rich-text-editor mono-size=\"sm\" mono-color=\"danger\">\r\n <label mono-rte-label>Body</label>\r\n <div mono-rte-field><div mono-rte-mount>…SunEditor…</div></div>\r\n <div mono-rte-footer><div mono-rte-message-wrap><div mono-rte-message=\"helper\">…</div></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 on its root (both builds) plus the STATES `mono-disabled` /\r\n `mono-readonly` / `mono-required` / `mono-loading` / `mono-unavailable` /\r\n `mono-has-value` and `mono-validation-state=\"valid|invalid|warning\"`. The\r\n old classes (`.mono-rich-text-editor.md.primary.outlined`) are still emitted\r\n as inert hooks until 2.0 but no rule here reads them.\r\n\r\n THE PARTS ARE FAMILY-UNIQUE (`mono-rte-*`): the frame holds SunEditor's whole\r\n DOM, and a consumer's content may carry anything.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-rich-text-editor] ≡ .field (flex w-full flex-col gap-3)\r\n [mono-rich-text-editor] > [mono-rte-label] ≡ .field > label / .label\r\n [mono-rte-field] ≡ .textarea's box (rounded-md border-input bg-transparent shadow-xs,\r\n focus-within: border-ring ring-3 ring-ring/50) — the editor sits inside\r\n [mono-rte-mount] .sun-editor .se-toolbar ≡ EXTENSION (a muted band under the frame's top edge)\r\n [mono-rte-footer] > [mono-rte-message-wrap] > [mono-rte-message=\"…\"] ≡ .field > p / .field [role='alert']\r\n [mono-validation-state=\"invalid\"] ≡ aria-invalid:border-destructive aria-invalid:ring-destructive/20\r\n [mono-validation-state=\"valid|warning\"] ≡ EXTENSION (the same treatment in --success / --warning)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION (the textarea's font ladder; icons step with it)\r\n [mono-variant=\"filled\"] ≡ EXTENSION (luma / mira / rhea's textarea)\r\n [mono-variant=\"underlined\"] ≡ EXTENSION (sera's: the bottom edge only, no ring)\r\n [mono-rte-unavailable] ≡ EXTENSION (the peer-missing notice)\r\n .se-tooltip-text (SunEditor's) ≡ [data-tooltip]::before (bg-foreground text-background rounded-md px-3 py-1.5 text-xs)\r\n\r\n FLAVORS: the frame IS the textarea's box, so every metric resolves\r\n `--mono-rich-text-editor-<k>` → `--mono-textarea-<k>` → the base through the\r\n SAME chains textarea.css uses — a flavour that retunes the textarea retunes\r\n this frame, and no flavour file carries an editor entry. SunEditor's own\r\n popovers (dropdowns, the modal layer it parks on <body>) take the select\r\n panel's popover chain (`--mono-select-dropdown-*`), like every other popover.\r\n\r\n The editor DOM is LIGHT DOM in both builds (see `rich-text-editor-core.ts`),\r\n so the `--se-*` remap is declared on the frame and inherited by the mount —\r\n through a `<slot>` in the shadow build, which custom properties cross — and\r\n DELIVERED on `.sun-editor` from the PAGE sheet (the shadow sheet cannot reach\r\n a slotted descendant). Nothing below reaches into SunEditor's selectors except\r\n to flatten the frame it paints around itself, which the mono frame replaces.\r\n ========================================================================= */\r\n\r\nmono-rich-text-editor {\r\n display: block;\r\n}\r\n\r\n/* The token block — on the element root AND on SunEditor's carrier (the layer it\r\n parks on <body> for its dropdown lists, dialogs and alerts), which is outside\r\n every frame and can inherit nothing from it. The element's own props (`color`,\r\n `size`) cannot reach the carrier either: it takes the defaults. */\r\n[mono-rich-text-editor],\r\n.sun-editor.sun-editor-carrier-wrapper {\r\n /* ── palette: each slot is a public knob over the textarea's, over a Basecoat token ── */\r\n --_mono-rte-text: var(--mono-rich-text-editor-text, var(--mono-textarea-text, var(--foreground)));\r\n --_mono-rte-placeholder: var(--mono-rich-text-editor-placeholder, var(--mono-textarea-placeholder, var(--muted-foreground)));\r\n --_mono-rte-muted: var(--mono-rich-text-editor-muted, var(--mono-textarea-muted, var(--muted-foreground)));\r\n --_mono-rte-primary: var(--mono-rich-text-editor-primary, var(--mono-textarea-primary, var(--ring)));\r\n --_mono-rte-secondary: var(--mono-rich-text-editor-secondary, var(--mono-textarea-secondary, var(--muted-foreground)));\r\n --_mono-rte-success: var(--mono-rich-text-editor-success, var(--mono-textarea-success, var(--success)));\r\n --_mono-rte-danger: var(--mono-rich-text-editor-danger, var(--mono-textarea-danger, var(--destructive)));\r\n --_mono-rte-warning: var(--mono-rich-text-editor-warning, var(--mono-textarea-warning, var(--warning)));\r\n --_mono-rte-info: var(--mono-rich-text-editor-info, var(--mono-textarea-info, var(--info)));\r\n --_mono-rte-teal: var(--mono-rich-text-editor-teal, var(--mono-textarea-teal, var(--teal)));\r\n --_mono-rte-purple: var(--mono-rich-text-editor-purple, var(--mono-textarea-purple, var(--purple)));\r\n --_mono-rte-neutral: var(--mono-rich-text-editor-neutral, var(--mono-textarea-neutral, var(--neutral)));\r\n --_mono-rte-dark: var(--mono-rich-text-editor-dark, var(--mono-textarea-dark, var(--dark)));\r\n --_mono-rte-valid: var(--mono-rich-text-editor-valid, var(--mono-textarea-valid, var(--success)));\r\n --_mono-rte-invalid: var(--mono-rich-text-editor-invalid, var(--mono-textarea-invalid, var(--destructive)));\r\n\r\n /* ── the painted result — three tiers, base = vega's .textarea ─────────── */\r\n --_mono-rte-ring-color: var(--mono-rich-text-editor-ring-color, var(--mono-rich-text-editor-focus-color, var(--_mono-rte-ring-color-preset, var(--_mono-rte-primary))));\r\n --_mono-rte-ring-width: var(--mono-rich-text-editor-ring-width, var(--mono-textarea-ring-width, var(--_mono-rte-ring-width-preset, var(--mono-ring-width))));\r\n --_mono-rte-ring-alpha: var(--mono-rich-text-editor-ring-alpha, var(--mono-textarea-ring-alpha, var(--mono-ring-alpha)));\r\n --_mono-rte-border-color: var(--mono-rich-text-editor-rest-border, var(--mono-rich-text-editor-border-color, var(--mono-rich-text-editor-border, var(--mono-textarea-rest-border, var(--mono-textarea-border-color, var(--_mono-rte-border-color-preset, var(--input)))))));\r\n --_mono-rte-side-border-color: var(--_mono-rte-side-border-color-preset, var(--_mono-rte-border-color));\r\n --_mono-rte-bg: var(--mono-rich-text-editor-bg, var(--mono-rich-text-editor-surface, var(--mono-textarea-bg, var(--mono-textarea-surface, var(--_mono-rte-bg-preset, var(--mono-mode-surface))))));\r\n --_mono-rte-shadow: var(--mono-rich-text-editor-shadow, var(--mono-textarea-shadow, var(--_mono-rte-shadow-preset, var(--mono-shadow-xs))));\r\n --_mono-rte-border-width: var(--mono-rich-text-editor-border-width, var(--mono-textarea-border-width, var(--mono-border-width)));\r\n --_mono-rte-radius: var(--mono-rich-text-editor-radius, var(--mono-textarea-radius, var(--_mono-rte-radius-preset, var(--mono-radius-md))));\r\n\r\n /* ── md metrics live on the unqualified root ON PURPOSE: hand-written\r\n `<div mono-rich-text-editor>` that names no size renders like size=\"md\" ── */\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-md, var(--mono-textarea-font-md, var(--mono-text-sm))));\r\n --_mono-rte-icon-size: var(--mono-rich-text-editor-icon-size, var(--_mono-rte-icon-size-preset, 18px));\r\n --_mono-rte-font-family: var(--mono-rich-text-editor-font-family, inherit);\r\n --_mono-rte-min-height: var(--mono-rich-text-editor-min-height, 10rem);\r\n /* EXTENSION — the toolbar band: a muted wash under the frame's top edge */\r\n --_mono-rte-toolbar-bg: var(--mono-rich-text-editor-toolbar-bg, color-mix(in oklab, var(--muted) 60%, var(--_mono-rte-bg)));\r\n\r\n /* ── SunEditor's popovers (dropdowns, dialogs) are the select panel's popover ── */\r\n --_mono-rte-popover-bg: var(--mono-rich-text-editor-popover-bg, var(--mono-select-dropdown-bg, var(--popover)));\r\n --_mono-rte-popover-color: var(--mono-rich-text-editor-popover-color, var(--mono-select-dropdown-color, var(--popover-foreground)));\r\n --_mono-rte-popover-radius: var(--mono-rich-text-editor-popover-radius, var(--mono-select-dropdown-radius, var(--mono-radius-md)));\r\n --_mono-rte-popover-shadow: var(--mono-rich-text-editor-popover-shadow, var(--mono-select-dropdown-shadow, var(--mono-shadow-md)));\r\n\r\n /* basecoat@1.0.2 styles/vega.css [data-tooltip]::before — bg-foreground text-background rounded-md px-3 py-1.5 text-xs\r\n SunEditor's toolbar tooltips; the corner is the style's shared tooltip token */\r\n --_mono-rte-tooltip-bg: var(--mono-rich-text-editor-tooltip-bg, var(--mono-tooltip-bg, var(--foreground)));\r\n --_mono-rte-tooltip-color: var(--mono-rich-text-editor-tooltip-color, var(--mono-tooltip-color, var(--background)));\r\n --_mono-rte-tooltip-radius: var(--mono-rich-text-editor-tooltip-radius, var(--mono-tooltip-radius, var(--mono-radius-md)));\r\n\r\n /* ── SunEditor's tokens, remapped onto the theme ─────────────────────────\r\n Declared on the FRAME'S ancestor so the light-DOM mount inherits them in\r\n both builds. `.sun-editor` re-declares every one of these on itself with\r\n its defaults, so each is delivered again on `.sun-editor` below — this\r\n block is what a consumer sees and overrides; that one is the delivery. */\r\n --_se-main-color: var(--_mono-rte-text);\r\n --_se-main-color-lighter: var(--_mono-rte-muted);\r\n --_se-main-background: var(--_mono-rte-bg);\r\n --_se-main-border: var(--border);\r\n --_se-main-divider: var(--border);\r\n --_se-main-outline: var(--_mono-rte-ring-color);\r\n /* the accent: links and the focus outline */\r\n --_se-active: var(--_mono-rte-ring-color);\r\n --_se-active-dark: color-mix(in oklab, var(--_mono-rte-ring-color) 85%, var(--foreground));\r\n /* basecoat@1.0.2 styles/vega.css .btn[data-variant='ghost'] — hover:bg-accent hover:text-accent-foreground\r\n a pressed toolbar button and a checked list item are the toggle-on state:\r\n the accent WASH with the foreground ink, never a primary tint */\r\n --_se-active-ink: var(--mono-rich-text-editor-active-color, var(--accent-foreground, var(--_mono-rte-text)));\r\n --_se-active-light: var(--mono-rich-text-editor-active-bg, var(--accent, var(--muted)));\r\n --_se-active-light2: var(--mono-mode-surface-hover);\r\n --_se-hover: var(--_mono-rte-text);\r\n --_se-hover-light: var(--mono-mode-ghost-hover);\r\n --_se-hover-light2: var(--mono-mode-surface-hover);\r\n --_se-error: var(--_mono-rte-danger);\r\n --_se-success: var(--_mono-rte-success);\r\n --_se-placeholder: var(--_mono-rte-placeholder);\r\n --_se-radius: var(--mono-radius-sm);\r\n --_se-radius-lg: var(--_mono-rte-popover-radius);\r\n --_se-shadow-layer: var(--_mono-rte-popover-shadow);\r\n --_se-font-family: var(--_mono-rte-font-family);\r\n --_se-font-size: var(--_mono-rte-font-size);\r\n --_se-icon-size: var(--_mono-rte-icon-size);\r\n --_se-min-height: var(--_mono-rte-min-height);\r\n\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3 */\r\n[mono-rich-text-editor] {\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--mono-rich-text-editor-gap, var(--mono-textarea-gap, calc(var(--mono-spacing) * 3)));\r\n width: 100%;\r\n min-width: 0;\r\n color: var(--_mono-rte-text);\r\n font-family: inherit;\r\n}\r\n\r\n[mono-rich-text-editor],\r\n:where([mono-rich-text-editor]) > *,\r\n:where([mono-rich-text-editor]) > * > *::before,\r\n:where([mono-rich-text-editor]) > * > *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n/* the shadow build renders every region and marks the empty ones; the light\r\n build renders only what exists */\r\n[mono-rich-text-editor] :is([mono-rte-label], [mono-rte-message], [mono-rte-footer])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n[mono-rich-text-editor] > [mono-rte-message-outlet]:not(:has([mono-rte-footer]:not([mono-empty]))) {\r\n display: none;\r\n}\r\n\r\n/* =========================================\r\n Sizes — EXTENSION: the textarea's font ladder; the icons step with it\r\n ========================================= */\r\n\r\n[mono-rich-text-editor][mono-size=\"xs\"] {\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-xs, var(--mono-textarea-font-xs, var(--mono-text-xs))));\r\n --_mono-rte-icon-size-preset: 14px;\r\n}\r\n[mono-rich-text-editor][mono-size=\"sm\"] {\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-sm, var(--mono-textarea-font-sm, var(--mono-textarea-font-md, var(--mono-text-sm)))));\r\n --_mono-rte-icon-size-preset: 16px;\r\n}\r\n[mono-rich-text-editor][mono-size=\"lg\"] {\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-lg, var(--mono-textarea-font-lg, var(--mono-textarea-font-md, var(--mono-text-sm)))));\r\n --_mono-rte-icon-size-preset: 20px;\r\n}\r\n[mono-rich-text-editor][mono-size=\"xl\"] {\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-xl, var(--mono-textarea-font-xl, var(--mono-text-base))));\r\n --_mono-rte-icon-size-preset: 22px;\r\n}\r\n[mono-rich-text-editor][mono-size=\"xxl\"] {\r\n --_mono-rte-font-size: var(--mono-rich-text-editor-font-size, var(--mono-rich-text-editor-font-xxl, var(--mono-textarea-font-xxl, var(--mono-text-base))));\r\n --_mono-rte-icon-size-preset: 24px;\r\n}\r\n\r\n/* =========================================\r\n Colours — EXTENSION: the `color` prop is the FOCUS colour, which is also the\r\n editor's active state and links\r\n ========================================= */\r\n\r\n[mono-rich-text-editor][mono-color=\"secondary\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-secondary);\r\n}\r\n[mono-rich-text-editor][mono-color=\"success\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-success);\r\n}\r\n[mono-rich-text-editor][mono-color=\"danger\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-danger);\r\n}\r\n[mono-rich-text-editor][mono-color=\"warning\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-warning);\r\n}\r\n[mono-rich-text-editor][mono-color=\"info\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-info);\r\n}\r\n[mono-rich-text-editor][mono-color=\"teal\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-teal);\r\n}\r\n[mono-rich-text-editor][mono-color=\"purple\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-purple);\r\n}\r\n[mono-rich-text-editor][mono-color=\"neutral\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-neutral);\r\n}\r\n[mono-rich-text-editor][mono-color=\"dark\"] {\r\n --_mono-rte-ring-color-preset: var(--_mono-rte-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\r\n — text-sm leading-snug font-medium */\r\n:where([mono-rich-text-editor]) > [mono-rte-label] {\r\n display: flex;\r\n align-items: center;\r\n gap: calc(var(--mono-spacing) * 1);\r\n font-size: var(--mono-rich-text-editor-label-font-size, var(--mono-textarea-label-font-size, var(--mono-text-sm)));\r\n line-height: var(--mono-rich-text-editor-label-line-height, var(--mono-textarea-label-line-height, var(--mono-leading-snug)));\r\n font-weight: var(--mono-rich-text-editor-label-font-weight, var(--mono-textarea-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium))));\r\n color: var(--mono-rich-text-editor-label-color, var(--mono-textarea-label-color, var(--_mono-rte-text)));\r\n}\r\n\r\n[mono-rich-text-editor][mono-validation-state=\"invalid\"] > [mono-rte-label] {\r\n color: var(--mono-rich-text-editor-label-color, var(--mono-textarea-label-color, var(--_mono-rte-invalid)));\r\n}\r\n\r\n:where([mono-rich-text-editor]) [mono-rte-required-mark] {\r\n color: var(--mono-rich-text-editor-required-color, var(--mono-textarea-required-color, var(--destructive)));\r\n}\r\n\r\n[mono-rich-text-editor][mono-disabled] > [mono-rte-label] {\r\n opacity: 0.5;\r\n}\r\n\r\n/* =========================================\r\n The frame — the textarea's box, holding the editor\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > textarea, .textarea\r\n — rounded-md border border-input bg-transparent shadow-xs\r\n transition-[color,box-shadow] (dark:bg-input/30 via --mono-mode-surface);\r\n mono: no padding — the editor's toolbar and page fill the box edge to edge */\r\n:where([mono-rich-text-editor]) [mono-rte-field] {\r\n --_mono-rte-ring: 0 0 #0000;\r\n position: relative;\r\n width: 100%;\r\n min-width: 0;\r\n border: var(--_mono-rte-border-width) solid var(--_mono-rte-side-border-color);\r\n border-bottom-color: var(--_mono-rte-border-color);\r\n border-radius: var(--_mono-rte-radius);\r\n background-color: var(--_mono-rte-bg);\r\n color: var(--_mono-rte-text);\r\n box-shadow: var(--_mono-rte-ring), var(--_mono-rte-shadow);\r\n /* the editor paints its own corners; clip so the toolbar's top corners follow\r\n the frame's radius */\r\n overflow: hidden;\r\n transition-property: color, background-color, border-color, box-shadow, opacity;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n/* Before the editor loads (and on the server) the frame is a quiet box the\r\n size of the editing area, so the form does not jump when it lands. */\r\n[mono-rich-text-editor][mono-loading] [mono-rte-field] {\r\n min-height: calc(var(--_mono-rte-min-height) + 2.75rem);\r\n}\r\n[mono-rich-text-editor][mono-unavailable] [mono-rte-field] {\r\n display: none;\r\n}\r\n\r\n/* focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 —\r\n the focus is on SunEditor's contenteditable inside the frame */\r\n:where([mono-rich-text-editor]) [mono-rte-field]:focus-within {\r\n border-color: var(--_mono-rte-side-border-color);\r\n border-bottom-color: var(--_mono-rte-ring-color);\r\n --_mono-rte-ring: 0 0 0 var(--_mono-rte-ring-width) color-mix(in oklab, var(--_mono-rte-ring-color) var(--_mono-rte-ring-alpha), transparent);\r\n}\r\n[mono-rich-text-editor]:is(:not([mono-variant]), [mono-variant=\"outlined\"], [mono-variant=\"filled\"]) [mono-rte-field]:focus-within {\r\n border-color: var(--_mono-rte-ring-color);\r\n}\r\n\r\n/* aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20\r\n (dark: /50 and /40, carried by the mode tokens) */\r\n[mono-rich-text-editor][mono-validation-state=\"invalid\"] [mono-rte-field] {\r\n --_mono-rte-border-color: var(--mono-mode-invalid-border);\r\n --_mono-rte-ring: 0 0 0 var(--_mono-rte-ring-width) var(--mono-mode-invalid-ring);\r\n}\r\n\r\n/* EXTENSION — the same treatment in the success / warning roles */\r\n[mono-rich-text-editor][mono-validation-state=\"valid\"] [mono-rte-field] {\r\n --_mono-rte-border-color: color-mix(in oklab, var(--_mono-rte-valid) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-rte-ring: 0 0 0 var(--_mono-rte-ring-width) color-mix(in oklab, var(--_mono-rte-valid) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n[mono-rich-text-editor][mono-validation-state=\"warning\"] [mono-rte-field] {\r\n --_mono-rte-border-color: color-mix(in oklab, var(--_mono-rte-warning) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-rte-ring: 0 0 0 var(--_mono-rte-ring-width) color-mix(in oklab, var(--_mono-rte-warning) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n\r\n/* disabled:cursor-not-allowed disabled:opacity-50 */\r\n[mono-rich-text-editor][mono-disabled] [mono-rte-field] {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n background-color: var(--mono-rich-text-editor-disabled-bg, var(--mono-textarea-disabled-bg, var(--_mono-rte-bg)));\r\n}\r\n\r\n/* EXTENSION — readonly is legible, not dimmed: a muted surface */\r\n[mono-rich-text-editor][mono-readonly]:not([mono-disabled]) [mono-rte-field] {\r\n --_se-main-background: var(--mono-rich-text-editor-readonly-bg, var(--mono-textarea-readonly-bg, var(--muted)));\r\n background-color: var(--mono-rich-text-editor-readonly-bg, var(--mono-textarea-readonly-bg, var(--muted)));\r\n}\r\n\r\n/* =========================================\r\n Variants — EXTENSION: the two other looks Basecoat's styles ship, through\r\n the textarea's own knobs so a flavour that restyles the textarea restyles this\r\n ========================================= */\r\n\r\n[mono-rich-text-editor]:is(:not([mono-variant]), [mono-variant=\"outlined\"]) {\r\n --_mono-rte-bg-preset: var(--mono-rich-text-editor-outline-bg, var(--mono-textarea-outline-bg));\r\n --_mono-rte-border-color-preset: var(--mono-rich-text-editor-outline-border-color, var(--mono-textarea-outline-border-color));\r\n --_mono-rte-side-border-color-preset: var(--mono-rich-text-editor-outline-side-border-color, var(--mono-textarea-outline-side-border-color));\r\n --_mono-rte-shadow-preset: var(--mono-rich-text-editor-outline-shadow, var(--mono-textarea-outline-shadow, var(--mono-shadow-xs)));\r\n --_mono-rte-radius-preset: var(--mono-rich-text-editor-outline-radius, var(--mono-textarea-outline-radius));\r\n --_mono-rte-ring-width-preset: var(--mono-rich-text-editor-outline-ring-width, var(--mono-textarea-outline-ring-width));\r\n}\r\n\r\n/* `filled` ≡ luma / mira / rhea's textarea: a tinted surface, no border, no shadow */\r\n[mono-rich-text-editor][mono-variant=\"filled\"] {\r\n --_mono-rte-bg-preset: var(--mono-rich-text-editor-filled-bg, var(--mono-textarea-filled-bg, color-mix(in oklab, var(--input) 50%, transparent)));\r\n --_mono-rte-border-color-preset: transparent;\r\n --_mono-rte-shadow-preset: 0 0 #0000;\r\n}\r\n\r\n/* `underlined` ≡ sera's: square, the bottom edge only, and no ring */\r\n[mono-rich-text-editor][mono-variant=\"underlined\"] {\r\n --_mono-rte-radius-preset: 0;\r\n --_mono-rte-bg-preset: transparent;\r\n --_mono-rte-side-border-color-preset: transparent;\r\n --_mono-rte-shadow-preset: 0 0 #0000;\r\n --_mono-rte-ring-width-preset: 0px;\r\n}\r\n[mono-rich-text-editor][mono-variant=\"underlined\"] [mono-rte-field] {\r\n --_se-main-background: transparent;\r\n --_mono-rte-toolbar-bg: transparent;\r\n}\r\n\r\n/* =========================================\r\n Footer — the message row\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:where([mono-rich-text-editor]) [mono-rte-footer] {\r\n display: flex;\r\n align-items: flex-start;\r\n justify-content: space-between;\r\n gap: calc(var(--mono-spacing) * 2);\r\n}\r\n\r\n:where([mono-rich-text-editor]) [mono-rte-message-wrap] {\r\n flex: 1 1 auto;\r\n min-width: 0;\r\n}\r\n\r\n:where([mono-rich-text-editor]) [mono-rte-message] {\r\n font-size: var(--mono-rich-text-editor-message-font-size, var(--mono-textarea-message-font-size, var(--mono-text-sm)));\r\n line-height: var(--mono-rich-text-editor-message-line-height, var(--mono-textarea-message-line-height, var(--mono-leading-normal)));\r\n font-weight: var(--mono-font-weight-normal);\r\n color: var(--_mono-rte-muted);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field [role=\"alert\"] — text-destructive text-sm */\r\n:where([mono-rich-text-editor]) [mono-rte-message=\"invalid\"] {\r\n color: var(--_mono-rte-invalid);\r\n}\r\n:where([mono-rich-text-editor]) [mono-rte-message=\"valid\"] {\r\n color: var(--_mono-rte-valid);\r\n}\r\n:where([mono-rich-text-editor]) [mono-rte-message=\"warning\"] {\r\n color: var(--_mono-rte-warning);\r\n}\r\n\r\n/* EXTENSION — the peer-missing notice: reads like a validation message, never like a crash */\r\n:where([mono-rich-text-editor]) [mono-rte-unavailable] {\r\n padding: calc(var(--mono-spacing) * 2.5) calc(var(--mono-spacing) * 3);\r\n border: var(--mono-border-width) dashed var(--_mono-rte-danger);\r\n border-radius: var(--_mono-rte-radius);\r\n background: color-mix(in oklab, var(--_mono-rte-danger) var(--mono-mode-tint), transparent);\r\n color: var(--_mono-rte-danger);\r\n font-size: var(--mono-text-sm);\r\n line-height: var(--mono-leading-normal);\r\n overflow-wrap: anywhere;\r\n}\r\n\r\n/* =========================================\r\n SunEditor inside the frame — from the PAGE sheet (the mount is light DOM)\r\n ========================================= */\r\n\r\n[mono-rte-mount] {\r\n display: block;\r\n width: 100%;\r\n min-width: 0;\r\n}\r\n\r\n/* Deliver the remap. `.sun-editor` sets every `--se-*` on itself from\r\n SunEditor's sheet, so the same selector (plus ours for specificity) has to\r\n set them again — the values, though, come from the frame's `--_se-*` above,\r\n which the mount inherits. Only the tokens a theme is made of; the rest keep\r\n SunEditor's defaults. */\r\n[mono-rte-mount] .sun-editor,\r\n[mono-rte-mount] .sun-editor-editable,\r\n.sun-editor.sun-editor-carrier-wrapper {\r\n --se-main-font-family: var(--_se-font-family);\r\n --se-content-font-family: var(--_se-font-family);\r\n --se-main-font-size: var(--_se-font-size);\r\n --se-btn-font-size: var(--_se-font-size);\r\n --se-edit-font-size: calc(var(--_se-font-size) * 1.1);\r\n --se-icon-size: var(--_se-icon-size);\r\n --se-min-height: var(--_se-min-height);\r\n --se-border-radius: var(--_se-radius);\r\n --se-border-radius-lg: var(--_se-radius-lg);\r\n\r\n --se-main-color: var(--_se-main-color);\r\n --se-main-color-lighter: var(--_se-main-color-lighter);\r\n --se-main-font-color: var(--_se-main-color);\r\n --se-main-background-color: var(--_se-main-background);\r\n --se-main-border-color: var(--_se-main-border);\r\n --se-main-divider-color: var(--_se-main-divider);\r\n --se-main-outline-color: var(--_se-main-outline);\r\n --se-main-shadow-color: var(--_se-main-divider);\r\n --se-statusbar-font-color: var(--_se-main-color-lighter);\r\n --se-dropdown-font-color: var(--_se-main-color);\r\n\r\n --se-edit-font-color: var(--_se-main-color);\r\n --se-edit-background-color: var(--_se-main-background);\r\n --se-edit-anchor: var(--_se-active);\r\n --se-caret-color: var(--_se-main-color);\r\n --se-placeholder-color: var(--_se-placeholder);\r\n\r\n --se-hover-color: var(--_se-hover);\r\n --se-hover-dark-color: var(--_se-main-border);\r\n --se-hover-light-color: var(--_se-hover-light);\r\n --se-hover-light2-color: var(--_se-hover-light2);\r\n --se-hover-light3-color: var(--_se-hover-light2);\r\n\r\n /* the accent for outlines and links; the toggle-on state for buttons and\r\n checked list items (ink = --se-active-dark3/4, wash = --se-active-light*) */\r\n --se-active-color: var(--_se-active);\r\n --se-active-hover-color: var(--_se-active-ink);\r\n --se-active-dark-color: var(--_se-main-border);\r\n --se-active-dark2-color: var(--_se-active-dark);\r\n --se-active-dark3-color: var(--_se-active-ink);\r\n --se-active-dark4-color: var(--_se-main-border);\r\n --se-active-dark5-color: var(--_se-active-dark);\r\n --se-active-light-color: var(--_se-active-light);\r\n --se-active-light2-color: var(--_se-active-light);\r\n --se-active-light3-color: var(--_se-active-light2);\r\n --se-active-light4-color: var(--_se-active-light);\r\n --se-active-light5-color: var(--_se-active-light2);\r\n --se-active-light6-color: var(--_se-active-light2);\r\n\r\n --se-error-color: var(--_se-error);\r\n --se-success-color: var(--_se-success);\r\n\r\n --se-select-menu-hover-bg: var(--_se-hover-light);\r\n --se-select-menu-active-bg: var(--_se-active-light);\r\n --se-modal-background-color: var(--_mono-rte-popover-bg);\r\n --se-modal-color: var(--_mono-rte-popover-color);\r\n --se-modal-border-color: var(--_se-main-border);\r\n --se-modal-anchor-color: var(--_se-active);\r\n --se-shadow-layer: var(--_se-shadow-layer);\r\n\r\n /* ── the sub-surfaces SunEditor paints from its own light palette ────────\r\n code view, the table picker, the floating controllers, the modal chrome,\r\n the overlay, the editing area's own colours — every one a page token now */\r\n --se-codeview-font-family: var(--font-mono, ui-monospace, monospace);\r\n --se-markdown-font-family: var(--font-mono, ui-monospace, monospace);\r\n --se-code-view-color: var(--_mono-rte-text);\r\n --se-code-view-background-color: var(--_se-main-background);\r\n --se-code-view-line-color: var(--_mono-rte-muted);\r\n --se-code-view-line-background-color: var(--muted);\r\n --se-markdown-view-color: var(--_mono-rte-text);\r\n --se-markdown-view-background-color: var(--_se-main-background);\r\n --se-markdown-view-line-color: var(--_mono-rte-muted);\r\n --se-markdown-view-line-background-color: var(--muted);\r\n\r\n --se-table-picker-color: var(--_mono-rte-popover-bg);\r\n --se-table-picker-border-color: var(--_se-main-border);\r\n --se-table-picker-highlight-color: color-mix(in oklab, var(--_se-active) var(--mono-mode-tint), var(--_mono-rte-popover-bg));\r\n --se-table-picker-highlight-border-color: var(--_se-active);\r\n\r\n --se-controller-background-color: var(--_mono-rte-popover-bg);\r\n --se-controller-color: var(--_mono-rte-popover-color);\r\n --se-controller-border-color: var(--_se-main-border);\r\n --se-shadow-controller: var(--_se-shadow-layer);\r\n --se-shadow-controller-color: transparent;\r\n --se-shadow-layer-color: transparent;\r\n --se-overlay-background-color: var(--mono-mode-backdrop, #000);\r\n\r\n --se-modal-preview-color: var(--_mono-rte-muted);\r\n --se-modal-file-input-background-color: var(--muted);\r\n --se-modal-input-disabled-color: var(--_mono-rte-muted);\r\n --se-modal-input-disabled-background-color: var(--muted);\r\n --se-input-btn-border-color: var(--_se-main-border);\r\n --se-input-btn-disabled-color: var(--_mono-rte-muted);\r\n --se-main-out-color: var(--_se-main-border);\r\n --se-hover-dark2-color: var(--_se-main-border);\r\n --se-hover-dark3-color: var(--_se-main-border);\r\n --se-loading-color: var(--_se-active);\r\n\r\n --se-drag-caret-color: var(--_se-active);\r\n --se-edit-active: var(--_se-active);\r\n --se-edit-hover: var(--_se-active-light);\r\n --se-edit-outline: var(--_se-main-border);\r\n --se-edit-font-pre: var(--_mono-rte-text);\r\n --se-edit-font-quote: var(--_mono-rte-muted);\r\n --se-edit-background-pre: var(--muted);\r\n --se-edit-border-light: var(--_se-main-border);\r\n --se-edit-border-dark: var(--_se-main-border);\r\n --se-edit-border-dark-n1: var(--_se-main-border);\r\n --se-edit-border-dark-n2: var(--_se-main-border);\r\n --se-edit-border-table: var(--_se-main-border);\r\n --se-edit-hr-color: var(--_se-main-border);\r\n --se-edit-hr-on-back: var(--_se-active-light);\r\n --se-edit-anchor-on-back: color-mix(in oklab, var(--_se-active) var(--mono-mode-tint), transparent);\r\n --se-edit-anchor-on-font: var(--_se-active);\r\n\r\n --se-success-dark-color: var(--_se-success);\r\n --se-success-dark2-color: var(--_se-success);\r\n --se-success-dark3-color: var(--_se-success);\r\n --se-success-light-color: color-mix(in oklab, var(--_se-success) var(--mono-mode-tint), transparent);\r\n --se-success-light2-color: color-mix(in oklab, var(--_se-success) var(--mono-mode-tint), transparent);\r\n --se-success-light3-color: color-mix(in oklab, var(--_se-success) var(--mono-mode-tint-hover), transparent);\r\n --se-success-light4-color: var(--_se-success);\r\n --se-success-light5-color: var(--_se-success);\r\n --se-error-dark-color: var(--_se-error);\r\n --se-error-dark2-color: var(--_se-error);\r\n --se-error-dark3-color: var(--_se-error);\r\n --se-error-light-color: color-mix(in oklab, var(--_se-error) var(--mono-mode-tint-hover), transparent);\r\n --se-error-light2-color: color-mix(in oklab, var(--_se-error) var(--mono-mode-tint), transparent);\r\n --se-error-light3-color: color-mix(in oklab, var(--_se-error) var(--mono-mode-tint), transparent);\r\n --se-error-light4-color: color-mix(in oklab, var(--_se-error) var(--mono-mode-tint), transparent);\r\n --se-error-light5-color: color-mix(in oklab, var(--_se-error) var(--mono-mode-tint), transparent);\r\n}\r\n\r\n/* In the carrier \"main background\" is the LAYER surface — the dropdown lists,\r\n dialogs and alerts — so it is the popover surface there, not the editing\r\n surface (which is transparent in light mode: an invisible list). */\r\n.sun-editor.sun-editor-carrier-wrapper {\r\n --se-main-background-color: var(--_mono-rte-popover-bg);\r\n --se-main-font-color: var(--_mono-rte-popover-color);\r\n --se-dropdown-font-color: var(--_mono-rte-popover-color);\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 — bg-muted text-foreground\r\n a checked list item (the current font, size, format …) is a selected option:\r\n SunEditor only re-inks it, and its ink was the primary tint */\r\n[mono-rte-mount] .sun-editor .se-list-inner li.se-checked > button,\r\n.sun-editor.sun-editor-carrier-wrapper .se-list-inner li.se-checked > button {\r\n background-color: var(--_se-active-light);\r\n color: var(--_se-active-ink);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > textarea, .textarea — placeholder:text-muted-foreground\r\n Every placeholder the editor shows — the Size / Font inputs in the toolbar,\r\n the empty editing area, a dialog's fields — is the field placeholder: the\r\n muted ink, OPAQUE. Left alone, a host page's preflight (Tailwind / UnoCSS)\r\n makes a placeholder 50% translucent currentColor, which over a tinted page\r\n reads as a colour of its own; and SunEditor inks its empty-area placeholder\r\n with its OUTLINE token, the accent. */\r\n[mono-rte-mount] .sun-editor input::placeholder,\r\n[mono-rte-mount] .sun-editor textarea::placeholder,\r\n.sun-editor.sun-editor-carrier-wrapper input::placeholder,\r\n.sun-editor.sun-editor-carrier-wrapper textarea::placeholder {\r\n color: var(--_mono-rte-placeholder);\r\n opacity: 1;\r\n}\r\n[mono-rte-mount] .sun-editor .se-wrapper .se-placeholder,\r\n[mono-rte-mount] .sun-editor .se-wrapper .se-placeholder-line:before {\r\n color: var(--_mono-rte-placeholder);\r\n}\r\n\r\n/* The frame replaces SunEditor's own — no double border, no second radius. */\r\n[mono-rte-mount] .sun-editor {\r\n border: 0;\r\n border-radius: 0;\r\n background: transparent;\r\n width: 100% !important;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css [data-tooltip]::before — bg-foreground text-background inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs\r\n SunEditor's toolbar tooltips, painted as Basecoat's tooltip: it drew them in\r\n `--se-main-font-color` on `--se-main-background-color`, which in dark mode\r\n is a translucent wash under near-white text. (0,5,0) over SunEditor's (0,4,0). */\r\n[mono-rte-mount] .sun-editor .se-tooltip .se-tooltip-inner .se-tooltip-text,\r\n.sun-editor.sun-editor-carrier-wrapper .se-tooltip .se-tooltip-inner .se-tooltip-text {\r\n padding: calc(var(--mono-spacing) * 1.5) calc(var(--mono-spacing) * 3);\r\n border-radius: var(--_mono-rte-tooltip-radius);\r\n background-color: var(--_mono-rte-tooltip-bg);\r\n color: var(--_mono-rte-tooltip-color);\r\n /* the page font, handed over by the element: a tooltip inside the font list\r\n would otherwise inherit the item's own face */\r\n font-family: var(--_mono-rte-page-font, inherit);\r\n font-size: var(--mono-text-xs);\r\n line-height: var(--mono-text-xs--lh);\r\n font-weight: var(--mono-font-weight-normal);\r\n white-space: nowrap;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css [data-tooltip]::before — the dropdown items (font family,\r\n font size, the colour palettes …) carried native `title` tooltips, which no theme can\r\n paint; the element rewrites them into `data-tooltip`, drawn here the way Basecoat\r\n draws its own: a pseudo-element with the attribute as content, above the item\r\n (the anchor is `position: relative`, as in Basecoat's compiled `[data-tooltip]`) */\r\n[mono-rte-mount] .sun-editor [data-tooltip],\r\n.sun-editor.sun-editor-carrier-wrapper [data-tooltip] {\r\n position: relative;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css [data-tooltip]::before — bg-foreground text-background inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs */\r\n[mono-rte-mount] .sun-editor [data-tooltip]::after,\r\n.sun-editor.sun-editor-carrier-wrapper [data-tooltip]::after {\r\n content: attr(data-tooltip);\r\n position: absolute;\r\n left: 50%;\r\n bottom: calc(100% + calc(var(--mono-spacing) * 1.5));\r\n z-index: 60;\r\n width: max-content;\r\n max-width: 20rem;\r\n padding: calc(var(--mono-spacing) * 1.5) calc(var(--mono-spacing) * 3);\r\n border-radius: var(--_mono-rte-tooltip-radius);\r\n background-color: var(--_mono-rte-tooltip-bg);\r\n color: var(--_mono-rte-tooltip-color);\r\n font-family: var(--_mono-rte-page-font, inherit);\r\n font-size: var(--mono-text-xs);\r\n line-height: var(--mono-text-xs--lh);\r\n font-weight: var(--mono-font-weight-normal);\r\n font-style: normal;\r\n text-indent: 0;\r\n text-transform: none;\r\n letter-spacing: normal;\r\n white-space: nowrap;\r\n text-overflow: ellipsis;\r\n overflow: hidden;\r\n pointer-events: none;\r\n visibility: hidden;\r\n opacity: 0;\r\n transform: translateX(-50%) scale(0.95);\r\n transform-origin: bottom center;\r\n transition-property: opacity, transform, visibility;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration-fast, 100ms);\r\n}\r\n\r\n[mono-rte-mount] .sun-editor [data-tooltip]:hover::after,\r\n[mono-rte-mount] .sun-editor [data-tooltip]:focus-visible::after,\r\n.sun-editor.sun-editor-carrier-wrapper [data-tooltip]:hover::after,\r\n.sun-editor.sun-editor-carrier-wrapper [data-tooltip]:focus-visible::after {\r\n visibility: visible;\r\n opacity: 1;\r\n transform: translateX(-50%) scale(1);\r\n}\r\n\r\n/* a dropdown layer clips its own overflow, so a tooltip above the FIRST row of a\r\n palette would be cut off at the layer edge: that row opens its tooltips below */\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet:first-child [data-tooltip]::after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet:first-child [data-tooltip]::after {\r\n bottom: auto;\r\n top: calc(100% + calc(var(--mono-spacing) * 1.5));\r\n transform-origin: top center;\r\n}\r\n\r\n/* SunEditor shrinks a hovered / active swatch with `transform: scale(.8)`. A\r\n transform makes the button a stacking context, so its tooltip — a child —\r\n can never rise above the swatches painted after it (the next row covers a\r\n first-row tooltip) and shrinks with it. The same \"pressed\" read as an inset\r\n ring of the layer surface instead; the hovered swatch lifts above its row. */\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet button:hover,\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet button.active,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet button:hover,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet button.active {\r\n transform: none;\r\n box-shadow: inset 0 0 0 3px var(--_mono-rte-popover-bg, var(--popover));\r\n}\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet button:hover,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet button:hover {\r\n z-index: 1;\r\n}\r\n\r\n/* …and the same clip sideways: a centred tooltip on the first / last column of\r\n a palette row runs past the layer's edge, so those hang from the item's own\r\n outer edge instead */\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet li:first-child [data-tooltip]::after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet li:first-child [data-tooltip]::after {\r\n left: 0;\r\n transform: scale(0.95);\r\n transform-origin: left center;\r\n}\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet li:last-child [data-tooltip]::after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet li:last-child [data-tooltip]::after {\r\n left: auto;\r\n right: 0;\r\n transform: scale(0.95);\r\n transform-origin: right center;\r\n}\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet li:is(:first-child, :last-child) [data-tooltip]:hover::after,\r\n[mono-rte-mount] .sun-editor .se-dropdown .se-color-pallet li:is(:first-child, :last-child) [data-tooltip]:focus-visible::after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet li:is(:first-child, :last-child) [data-tooltip]:hover::after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-dropdown .se-color-pallet li:is(:first-child, :last-child) [data-tooltip]:focus-visible::after {\r\n transform: scale(1);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css [data-tooltip][data-arrow]::after — bg-foreground */\r\n[mono-rte-mount] .sun-editor .se-tooltip .se-tooltip-inner .se-tooltip-text:after,\r\n.sun-editor.sun-editor-carrier-wrapper .se-tooltip .se-tooltip-inner .se-tooltip-text:after {\r\n border-color: transparent transparent var(--_mono-rte-tooltip-bg) transparent;\r\n}\r\n[mono-rte-mount] .sun-editor .se-toolbar.se-toolbar-bottom .se-tooltip .se-tooltip-inner .se-tooltip-text:after {\r\n border-color: var(--_mono-rte-tooltip-bg) transparent transparent transparent;\r\n}\r\n\r\n/* EXTENSION — the toolbar band, on a hairline */\r\n[mono-rte-mount] .sun-editor .se-toolbar {\r\n background: var(--_mono-rte-toolbar-bg);\r\n box-shadow: inset 0 calc(var(--mono-border-width) * -1) 0 0 var(--border);\r\n}\r\n\r\n/* The carrier — modals, alerts and the dropdown lists SunEditor parks on <body>\r\n — is in the token block and the delivery rule above: it paints exactly like\r\n the frame it belongs to, at the element's default `color` and `size`. */\r\n\r\n/* =========================================\r\n SunEditor's dialogs — the modal SunEditor parks in its carrier: its chrome\r\n is the page's dialog, its fields the ported input, its buttons the ported\r\n button, its tabs the ported tabs. Selectors mirror SunEditor's own chains\r\n (prefixed by the scope) so they out-weigh them by exactly the scope.\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .dialog > * — bg-popover text-popover-foreground */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-content {\r\n border: var(--mono-border-width) solid var(--_se-main-border);\r\n border-radius: var(--_mono-rte-popover-radius);\r\n box-shadow: var(--_mono-rte-popover-shadow);\r\n color: var(--_mono-rte-popover-color);\r\n}\r\n\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-header .se-modal-title {\r\n font-size: var(--mono-text-base);\r\n font-weight: var(--mono-font-weight-semibold);\r\n color: var(--_mono-rte-popover-color);\r\n}\r\n\r\n/* the close button: a ghost button, muted at rest */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-header .se-close-btn {\r\n color: var(--_mono-rte-muted);\r\n text-shadow: none;\r\n border-radius: var(--mono-radius-sm);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .tabs > [role='tablist'] — the modal's Image / Link tabs:\r\n a text tab with the accent under the active one, not a boxed strip */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-tabs {\r\n /* SunEditor floats the tab buttons inside a 25px-high strip; as a flex row the\r\n strip is as tall as the tabs and stays in flow above the form */\r\n display: flex;\r\n align-items: stretch;\r\n gap: calc(var(--mono-spacing) * 1);\r\n height: auto;\r\n margin-bottom: calc(var(--mono-spacing) * 3);\r\n border-bottom: var(--mono-border-width) solid var(--_se-main-border);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-tabs button {\r\n background-color: transparent;\r\n border: 0;\r\n border-bottom: 2px solid transparent;\r\n margin-bottom: calc(var(--mono-border-width) * -1);\r\n padding: calc(var(--mono-spacing) * 1.5) calc(var(--mono-spacing) * 3);\r\n color: var(--_mono-rte-muted);\r\n font-size: var(--mono-text-sm);\r\n font-weight: var(--mono-font-weight-medium);\r\n transition-property: color, border-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-tabs button:hover {\r\n background-color: transparent;\r\n color: var(--_mono-rte-text);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-tabs button.active {\r\n background-color: transparent;\r\n border-bottom-color: var(--_se-active);\r\n color: var(--_mono-rte-text);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group — rounded-md border border-input\r\n the modal's text fields and selects are the ported input: its surface, edge,\r\n corner and ring, through the input's own public knobs */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-input-form,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-input-select,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form select,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-controller input[type='text'],\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-controller select {\r\n background-color: var(--mono-input-bg, var(--mono-input-surface, var(--mono-input-outline-bg, var(--mono-mode-surface))));\r\n border: var(--mono-border-width) solid var(--mono-input-rest-border, var(--mono-input-border-color, var(--mono-input-outline-border-color, var(--input))));\r\n border-radius: var(--mono-input-radius-sm, var(--mono-input-outline-radius, var(--mono-input-radius, var(--mono-radius-md))));\r\n color: var(--_mono-rte-text);\r\n box-shadow: var(--mono-input-outline-shadow, var(--mono-shadow-xs));\r\n font-size: var(--mono-text-sm);\r\n outline: none;\r\n transition-property: border-color, box-shadow;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-input-form:focus,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form select:focus {\r\n border-color: var(--_se-active);\r\n box-shadow: 0 0 0 var(--mono-ring-width) color-mix(in oklab, var(--_se-active) var(--mono-ring-alpha), transparent);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner input:disabled {\r\n opacity: 0.5;\r\n}\r\n\r\n/* the file drop area: a dashed muted panel */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-flex-input-wrapper > .se-input-form-abs {\r\n border-radius: var(--mono-input-radius-sm, var(--mono-input-outline-radius, var(--mono-input-radius, var(--mono-radius-md))));\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .btn — Submit is the primary button */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-btn-primary,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-content .se-btn-primary {\r\n background-color: var(--mono-button-bg, var(--primary));\r\n border: var(--mono-border-width) solid transparent;\r\n border-radius: var(--mono-button-sm-radius, var(--mono-button-radius, var(--mono-radius-md)));\r\n color: var(--mono-button-color, var(--primary-foreground));\r\n font-size: var(--mono-text-sm);\r\n font-weight: var(--mono-font-weight-medium);\r\n box-shadow: var(--mono-shadow-xs);\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-btn-primary:hover,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-btn-primary:focus {\r\n background-color: color-mix(in oklab, var(--mono-button-bg, var(--primary)) 90%, transparent);\r\n border-color: transparent;\r\n color: var(--mono-button-color, var(--primary-foreground));\r\n}\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-btn-primary:disabled {\r\n opacity: 0.5;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .btn[data-variant='outline'] — the modal's secondary buttons */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-btn-revert,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-modal-form-files .se-modal-files-edge-button,\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-modal-area .se-modal-inner .se-modal-form .se-modal-flex-form .se-btn {\r\n border: var(--mono-border-width) solid var(--input);\r\n border-radius: var(--mono-button-sm-radius, var(--mono-button-radius, var(--mono-radius-md)));\r\n background-color: var(--background);\r\n color: var(--_mono-rte-text);\r\n opacity: 1;\r\n}\r\n\r\n/* the native checkboxes and radios take the accent */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) input[type='checkbox'],\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) input[type='radio'] {\r\n accent-color: var(--_se-active);\r\n}\r\n\r\n/* the floating controllers (link / image / table) are popovers */\r\n:is([mono-rte-mount] .sun-editor, .sun-editor.sun-editor-carrier-wrapper) .se-controller {\r\n border-radius: var(--_mono-rte-popover-radius);\r\n}\r\n\r\n/* Full screen — SunEditor fixes its root over the page (inline style, no class of\r\n its own; the element marks the mount when SunEditor reports the toggle, and the\r\n inline style is the fallback). The frame stays behind, so the editor takes the\r\n PAGE surface itself: opaque, in the mode's colours, the toolbar band on top. */\r\n[mono-rte-mount][mono-fullscreen] .sun-editor,\r\n[mono-rte-mount] .sun-editor[style*=\"position: fixed\"] {\r\n --_se-main-background: var(--mono-rich-text-editor-fullscreen-bg, var(--background));\r\n --_mono-rte-toolbar-bg: var(--mono-rich-text-editor-toolbar-bg, color-mix(in oklab, var(--muted) 60%, var(--mono-rich-text-editor-fullscreen-bg, var(--background))));\r\n background: var(--mono-rich-text-editor-fullscreen-bg, var(--background));\r\n color: var(--_mono-rte-text);\r\n}\r\n\r\n/* code view: the page's mono face on the editing surface, the line column muted */\r\n[mono-rte-mount] .sun-editor .se-wrapper .se-code-viewer,\r\n[mono-rte-mount] .sun-editor .se-wrapper .se-code-wrapper .se-code-view-line {\r\n font-family: var(--font-mono, ui-monospace, monospace);\r\n font-size: var(--mono-text-sm);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n :where([mono-rich-text-editor]) [mono-rte-field] {\r\n transition: none;\r\n }\r\n}\r\n";
|
|
1285
|
+
|
|
1281
1286
|
//#endregion
|
|
1282
1287
|
//#region src/components/rich-text-editor/mono-rich-text-editor.ts
|
|
1283
|
-
|
|
1288
|
+
let MonoRichTextEditor = class MonoRichTextEditor extends MonoRichTextEditorCore(LitElement) {
|
|
1284
1289
|
constructor(..._args) {
|
|
1285
1290
|
super(..._args);
|
|
1286
1291
|
this._slotsCaptured = false;
|
|
@@ -1288,7 +1293,7 @@ var MonoRichTextEditor = class MonoRichTextEditor extends MonoRichTextEditorCore
|
|
|
1288
1293
|
this._slotHelper = [];
|
|
1289
1294
|
}
|
|
1290
1295
|
static {
|
|
1291
|
-
this.styles = [unsafeCSS(
|
|
1296
|
+
this.styles = [unsafeCSS(rich_text_editor_css_raw_default)];
|
|
1292
1297
|
}
|
|
1293
1298
|
createRenderRoot() {
|
|
1294
1299
|
return this;
|
|
@@ -1334,5 +1339,6 @@ var MonoRichTextEditor = class MonoRichTextEditor extends MonoRichTextEditorCore
|
|
|
1334
1339
|
}
|
|
1335
1340
|
};
|
|
1336
1341
|
MonoRichTextEditor = __decorate([customElement("mono-rich-text-editor")], MonoRichTextEditor);
|
|
1342
|
+
|
|
1337
1343
|
//#endregion
|
|
1338
|
-
export { AUTO_EXCLUDED_PLUGINS, MonoRichTextEditor, SUNEDITOR_CORE_BUTTONS, SUNEDITOR_LANG_CODES, TOOLBAR_BASIC, TOOLBAR_DEFAULT, TOOLBAR_FULL, TOOLBAR_PRESETS, TOOLBAR_STANDARD, loadSunEditor, loadSunEditorCss, loadSunEditorLang, loadSunEditorPlugins, pruneToolbar, resolvePlugins, resolveToolbar };
|
|
1344
|
+
export { AUTO_EXCLUDED_PLUGINS, MonoRichTextEditor, SUNEDITOR_CORE_BUTTONS, SUNEDITOR_LANG_CODES, TOOLBAR_BASIC, TOOLBAR_DEFAULT, TOOLBAR_FULL, TOOLBAR_PRESETS, TOOLBAR_STANDARD, loadSunEditor, loadSunEditorCss, loadSunEditorLang, loadSunEditorPlugins, pruneToolbar, resolvePlugins, resolveToolbar };
|