@mono-lit/helper 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/control-tooltip-7vegYmq3.js +678 -0
  2. package/dist/{tooltip-FCMRUSLi.js → control-tooltip-C3rA_nSH.js} +12 -119
  3. package/dist/{data-source-controller-Cf_sMxEh.js → data-source-controller-C6C4ej_M.js} +1 -1
  4. package/dist/{data-source-options-Bk-UoaZV.js → data-source-options-Cz9fVLK8.js} +3 -2
  5. package/dist/{data-source-read-Cuqw3LcP.js → data-source-read-i6CYSUEl.js} +2 -1
  6. package/dist/{excel-DtRpxmxs.js → excel-BPdDt06G.js} +1 -1
  7. package/dist/{export-B91P6J1y.js → export-DgomqI_3.js} +2 -2
  8. package/dist/export.js +2 -2
  9. package/dist/{field-icons-FmyBWa0g.js → field-icons-t8rXRCKs.js} +50 -1
  10. package/dist/field-tooltip-FyMi9vNM.js +266 -0
  11. package/dist/field-tooltip.css_raw-DEctHXKm.js +270 -0
  12. package/dist/field-validation-CHHQi1zl.js +170 -0
  13. package/dist/field-validation.css_raw-B3Iu33rS.js +178 -0
  14. package/dist/{form-control-core-CIdMLXMo.js → form-control-core-rW2WvOcb.js} +1 -1
  15. package/dist/{hydration-flush-DHrl4_KK.js → hydration-flush-9AJE8FRl.js} +398 -1
  16. package/dist/index.js +6 -5
  17. package/dist/{index.node-dvrNviMx.js → index.node-tTkISFn2.js} +2 -2
  18. package/dist/index.node.js +6 -5
  19. package/dist/input-format-GrRCJBqV.js +251 -0
  20. package/dist/input.css_raw-CQu2fAsU.js +5 -0
  21. package/dist/{light-slots-DdDdZ6zs.js → light-slots-BnBR29E7.js} +1 -1
  22. package/dist/{light-slots-4ZCjOcBg.js → light-slots-Cb6e-LU3.js} +1 -1
  23. package/dist/{mono-button-CeDB9khW.js → mono-button-Cy5-Y0At.js} +3 -3
  24. package/dist/{mono-button.shadow-D9NdMsmH.js → mono-button.shadow-CIBGisyo.js} +1 -2
  25. package/dist/{mono-data-grid-BHlo1IgR.js → mono-data-grid-KDpu4d4_.js} +5 -4
  26. package/dist/{mono-element-C7vCschg.js → mono-element-Bc9wElPy.js} +1 -1
  27. package/dist/{mono-form-controller-IYn0MuUQ.js → mono-form-controller-BkMR8g14.js} +18 -3
  28. package/dist/mono-ui-KOBJcnXk.js +758 -0
  29. package/dist/{reactive-DFCdZbH9.js → normalize-error-BmLbgANw.js} +1 -48
  30. package/dist/nuxt.js +1 -1
  31. package/dist/{popup-portal-HWhkd7oy.js → popup-portal-C8ttHDRX.js} +17 -1
  32. package/dist/{popup-stack-De05Y-mJ.js → popup-stack-C64WCuXq.js} +21 -1
  33. package/dist/src/components/accordion/accordion-core.d.ts +4 -1
  34. package/dist/src/components/accordion/mono-accordion.shadow.d.ts +4 -1
  35. package/dist/src/components/date/date-core.d.ts +3 -0
  36. package/dist/src/components/date/date-types.d.ts +36 -1
  37. package/dist/src/components/drawer/drawer-core.d.ts +1 -0
  38. package/dist/src/components/dropdown-table/dropdown-table-core.d.ts +3 -0
  39. package/dist/src/components/dropdown-table/dropdown-table-types.d.ts +31 -0
  40. package/dist/src/components/form/form-types.d.ts +23 -5
  41. package/dist/src/components/input/index.d.ts +2 -2
  42. package/dist/src/components/input/index.shadow.d.ts +2 -2
  43. package/dist/src/components/input/input-core.d.ts +23 -3
  44. package/dist/src/components/input/input-types.d.ts +84 -9
  45. package/dist/src/components/input/mono-input.d.ts +3 -2
  46. package/dist/src/components/input/mono-input.shadow.d.ts +3 -2
  47. package/dist/src/components/modal/modal-core.d.ts +1 -0
  48. package/dist/src/components/otp/index.d.ts +5 -0
  49. package/dist/src/components/otp/index.shadow.d.ts +6 -0
  50. package/dist/src/components/otp/mono-otp.d.ts +32 -0
  51. package/dist/src/components/otp/mono-otp.shadow.d.ts +30 -0
  52. package/dist/src/components/otp/otp-core.d.ts +91 -0
  53. package/dist/src/components/otp/otp-types.d.ts +161 -0
  54. package/dist/src/components/otp/otp-utils.d.ts +41 -0
  55. package/dist/src/components/select/select-core.d.ts +3 -0
  56. package/dist/src/components/select/select-types.d.ts +31 -0
  57. package/dist/src/components/slider/index.d.ts +5 -0
  58. package/dist/src/components/slider/index.shadow.d.ts +6 -0
  59. package/dist/src/components/slider/mono-slider.d.ts +33 -0
  60. package/dist/src/components/slider/mono-slider.shadow.d.ts +29 -0
  61. package/dist/src/components/slider/slider-core.d.ts +77 -0
  62. package/dist/src/components/slider/slider-math.d.ts +102 -0
  63. package/dist/src/components/slider/slider-types.d.ts +188 -0
  64. package/dist/src/components/table/column-autosize.d.ts +74 -0
  65. package/dist/src/components/table/mono-data-grid.d.ts +10 -0
  66. package/dist/src/components/table/mono-table-th-core.d.ts +3 -0
  67. package/dist/src/components/table/table-types.d.ts +8 -1
  68. package/dist/src/components/tag-input/mono-tag-input.d.ts +12 -0
  69. package/dist/src/components/tag-input/mono-tag-input.shadow.d.ts +9 -1
  70. package/dist/src/components/tag-input/tag-input-core.d.ts +12 -1
  71. package/dist/src/components/tag-input/tag-input-types.d.ts +33 -0
  72. package/dist/src/components/textarea/textarea-core.d.ts +3 -0
  73. package/dist/src/components/textarea/textarea-types.d.ts +31 -0
  74. package/dist/src/composables/field-bubble.d.ts +34 -0
  75. package/dist/src/composables/field-icons.d.ts +10 -0
  76. package/dist/src/composables/field-tooltip.d.ts +52 -0
  77. package/dist/src/composables/field-validation.d.ts +58 -0
  78. package/dist/src/composables/mono-size-attrs.d.ts +10 -0
  79. package/dist/src/composables/popup-portal.d.ts +12 -0
  80. package/dist/src/composables/popup-stack.d.ts +21 -0
  81. package/dist/src/entries/index.d.ts +3 -2
  82. package/dist/src/entries/index.node.d.ts +3 -2
  83. package/dist/ssr-lit/runtime/components/LitWrapper.vue +11 -11
  84. package/dist/ssr-lit/runtime/components/LitWrapperClient.vue +11 -11
  85. package/dist/ssr-lit/runtime/components/LitWrapperServer.vue +38 -38
  86. package/dist/ssr-lit/runtime/plugins/antiFouc.server.js +25 -25
  87. package/dist/ssr-lit/runtime/plugins/hydrateSupport.client.js +4 -4
  88. package/dist/ssr-lit/runtime/plugins/polyfill.client.js +9 -9
  89. package/dist/ssr-lit/runtime/utils/customElements.js +11 -11
  90. package/dist/ssr-lit/runtime/utils/litElementRenderer.js +28 -28
  91. package/dist/{styles-D-ergrfR.js → styles-BODNpZV1.js} +1 -1
  92. package/dist/tooltip-Drekihf5.js +102 -0
  93. package/dist/tooltip-loader-3U9FTOXj.js +20 -0
  94. package/dist/tooltip-loader-Dcp9AUZn.js +23 -0
  95. package/dist/tooltip.js +3 -1
  96. package/dist/ui/accordion.js +19 -6
  97. package/dist/ui/alert.js +3 -3
  98. package/dist/ui/breadcrumb.js +3 -3
  99. package/dist/ui/button-dropdown.js +3 -3
  100. package/dist/ui/button.js +1 -1
  101. package/dist/ui/card.js +3 -3
  102. package/dist/ui/chart.js +3 -4
  103. package/dist/ui/checkbox.js +3 -3
  104. package/dist/ui/chip.js +2 -2
  105. package/dist/ui/date.js +68 -7
  106. package/dist/ui/drawer.js +14 -5
  107. package/dist/ui/dropdown-table.js +63 -9
  108. package/dist/ui/dropdown.js +6 -5
  109. package/dist/ui/file-upload.js +3 -3
  110. package/dist/ui/filter.js +2 -2
  111. package/dist/ui/form.js +1 -1
  112. package/dist/ui/index.css +4276 -2543
  113. package/dist/ui/input.js +365 -264
  114. package/dist/ui/menu.js +3 -3
  115. package/dist/ui/modal.js +15 -6
  116. package/dist/ui/nav.js +3 -3
  117. package/dist/ui/otp.js +834 -0
  118. package/dist/ui/radio.js +3 -3
  119. package/dist/ui/rich-text-editor.js +3 -4
  120. package/dist/ui/select.js +70 -7
  121. package/dist/ui/shadow/accordion.js +31 -4
  122. package/dist/ui/shadow/alert.js +2 -2
  123. package/dist/ui/shadow/breadcrumb.js +1 -1
  124. package/dist/ui/shadow/button-dropdown.js +3 -3
  125. package/dist/ui/shadow/button.js +1 -1
  126. package/dist/ui/shadow/card.js +1 -2
  127. package/dist/ui/shadow/chart.js +5 -6
  128. package/dist/ui/shadow/checkbox.js +2 -2
  129. package/dist/ui/shadow/chip.js +1 -1
  130. package/dist/ui/shadow/date.js +69 -9
  131. package/dist/ui/shadow/drawer.js +12 -3
  132. package/dist/ui/shadow/dropdown-table.js +64 -10
  133. package/dist/ui/shadow/dropdown.js +4 -3
  134. package/dist/ui/shadow/file-upload.js +2 -2
  135. package/dist/ui/shadow/filter.js +1 -2
  136. package/dist/ui/shadow/input.js +369 -264
  137. package/dist/ui/shadow/menu.js +1 -1
  138. package/dist/ui/shadow/modal.js +13 -4
  139. package/dist/ui/shadow/nav.js +1 -1
  140. package/dist/ui/shadow/otp.js +841 -0
  141. package/dist/ui/shadow/radio.js +2 -2
  142. package/dist/ui/shadow/rich-text-editor.js +2 -3
  143. package/dist/ui/shadow/select.js +74 -10
  144. package/dist/ui/shadow/sidebar.js +3 -3
  145. package/dist/ui/shadow/slider.js +1081 -0
  146. package/dist/ui/shadow/switch.js +2 -2
  147. package/dist/ui/shadow/table.js +40 -11
  148. package/dist/ui/shadow/tabs.js +1 -1
  149. package/dist/ui/shadow/tag-input.js +160 -15
  150. package/dist/ui/shadow/textarea.js +65 -5
  151. package/dist/ui/sidebar.js +5 -5
  152. package/dist/ui/slider.js +1078 -0
  153. package/dist/ui/switch.js +3 -3
  154. package/dist/ui/table.js +36 -7
  155. package/dist/ui/tabs.js +3 -3
  156. package/dist/ui/tag-input.js +167 -7
  157. package/dist/ui/textarea.js +65 -5
  158. package/dist/ui/theme/luma.css +505 -466
  159. package/dist/ui/theme/lyra.css +505 -466
  160. package/dist/ui/theme/maia.css +501 -466
  161. package/dist/ui/theme/mira.css +505 -466
  162. package/dist/ui/theme/nova.css +503 -466
  163. package/dist/ui/theme/one.css +742 -699
  164. package/dist/ui/theme/rhea.css +506 -466
  165. package/dist/ui/theme/sera.css +507 -466
  166. package/dist/ui/theme/vega.css +495 -466
  167. package/dist/{vite-DcyRlTTf.js → vite-CivRCJaf.js} +2 -0
  168. package/dist/vite.js +1 -1
  169. package/dist/vue.d.ts +10 -0
  170. package/package.json +31 -13
  171. package/dist/css-size-DWAPgQdT.js +0 -38
  172. package/dist/input.css_raw-CGESifay.js +0 -5
  173. package/dist/mono-ui-BwUc0L6B.js +0 -360
@@ -1,7 +1,8 @@
1
- import { a as __decorate, f as customElement, l as defineHybridPropAliases, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration } from "../../hydration-flush-DHrl4_KK.js";
1
+ import { _ as buildSizeStyle, a as __decorate, f as customElement, l as defineHybridPropAliases, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration } from "../../hydration-flush-9AJE8FRl.js";
2
2
  import { t as dispatchMonoEvent } from "../../mono-event-BPku9HpS.js";
3
- import { t as buildSizeStyle } from "../../css-size-DWAPgQdT.js";
4
- import { t as MonoFormControlCore } from "../../form-control-core-CIdMLXMo.js";
3
+ import { t as MonoFormControlCore } from "../../form-control-core-rW2WvOcb.js";
4
+ import { n as FieldTooltipController, t as field_tooltip_css_raw_default } from "../../field-tooltip.css_raw-DEctHXKm.js";
5
+ import { n as label_position_css_raw_default, r as FieldValidationController, t as field_validation_css_raw_default } from "../../field-validation.css_raw-B3Iu33rS.js";
5
6
  import { LitElement, html, isServer, nothing, unsafeCSS } from "lit";
6
7
  import { property, query, state } from "lit/decorators.js";
7
8
  import { ifDefined } from "lit/directives/if-defined.js";
@@ -42,6 +43,18 @@ const MonoDateCore = (superClass) => {
42
43
  this.size = "md";
43
44
  this.color = "primary";
44
45
  this.variant = "outlined";
46
+ this.labelPosition = "top";
47
+ this.validationPosition = "bottom";
48
+ this.tooltip = null;
49
+ this._tooltip = new FieldTooltipController(this, () => this.tooltip);
50
+ this._validation = new FieldValidationController(this, () => ({
51
+ position: this.validationPosition,
52
+ ...this._validationNotice ?? {
53
+ state: void 0,
54
+ text: void 0
55
+ },
56
+ suppressed: !!this._fp?.isOpen
57
+ }), () => this.renderRoot?.querySelector?.("[mono-date] > [mono-field]"));
45
58
  this.error = false;
46
59
  this.success = false;
47
60
  this.disabled = false;
@@ -66,6 +79,8 @@ const MonoDateCore = (superClass) => {
66
79
  if (this._fp.formatDate(parsed, fmt) === raw) this._fp.setDate(parsed, true);
67
80
  };
68
81
  defineHybridPropAliases(this, [
82
+ "labelPosition",
83
+ "validationPosition",
69
84
  "modelValue",
70
85
  "helperText",
71
86
  "validationState",
@@ -279,8 +294,14 @@ const MonoDateCore = (superClass) => {
279
294
  ...named,
280
295
  onReady: [(_d, _s, instance) => this._onReady(instance)],
281
296
  onChange: [(dates, dateStr, instance) => this._onChange(dates, dateStr, instance)],
282
- onOpen: [(dates, _s, instance) => this._emitOpenClose("open", dates, instance)],
283
- onClose: [(dates, _s, instance) => this._emitOpenClose("close", dates, instance)]
297
+ onOpen: [(dates, _s, instance) => {
298
+ this._emitOpenClose("open", dates, instance);
299
+ this._validation.refresh();
300
+ }],
301
+ onClose: [(dates, _s, instance) => {
302
+ this._emitOpenClose("close", dates, instance);
303
+ this._validation.refresh();
304
+ }]
284
305
  };
285
306
  if (this.modelValue) config.defaultDate = this.modelValue;
286
307
  if (this.disabled || this.readonly) config.clickOpens = false;
@@ -422,7 +443,10 @@ const MonoDateCore = (superClass) => {
422
443
  get _resolvedState() {
423
444
  if (this.error) return "error";
424
445
  if (this.success) return "success";
425
- return this.validationState ?? "default";
446
+ const state = this.validationState;
447
+ if (state === "invalid") return "error";
448
+ if (state === "valid") return "success";
449
+ return state ?? "default";
426
450
  }
427
451
  get _message() {
428
452
  if (this._resolvedState === "error") return this.errorMessage || this.validationMessage || void 0;
@@ -470,7 +494,30 @@ const MonoDateCore = (superClass) => {
470
494
  * date's block exactly one row-gap shorter than its siblings' — visible as soon
471
495
  * as a labelled date sits beside a labelled input in the same row.
472
496
  */
497
+ /** The validation message and its state — the same precedence `_message` uses. */
498
+ get _validationNotice() {
499
+ const state = this._resolvedState;
500
+ const text = state === "error" ? this.errorMessage || this.validationMessage : state === "success" ? this.successMessage || this.validationMessage : "";
501
+ return text ? {
502
+ state,
503
+ text
504
+ } : null;
505
+ }
473
506
  _renderMessage() {
507
+ if (this._validation.moved) {
508
+ const notice = this._validationNotice;
509
+ return html`
510
+ <div class=${this._cls("mono-date-message-wrap", "messageWrap")} mono-message-wrap>
511
+ ${this.helperText ? html`<div class=${`${this._cls("mono-date-message", "message")} default`} mono-message="helper">${this.helperText}</div>` : nothing}
512
+ <div
513
+ class=${`${this._cls("mono-date-message", "message")} ${notice.state}`}
514
+ mono-message=${notice.state}
515
+ mono-sr-only
516
+ role=${notice.state === "error" ? "alert" : nothing}
517
+ >${notice.text}</div>
518
+ </div>
519
+ `;
520
+ }
474
521
  const msg = this._message;
475
522
  return html`
476
523
  <div class=${this._cls("mono-date-message-wrap", "messageWrap")} mono-message-wrap>
@@ -492,6 +539,8 @@ const MonoDateCore = (superClass) => {
492
539
  mono-size=${this.size === "md" ? nothing : this.size}
493
540
  mono-color=${this.color === "primary" ? nothing : this.color}
494
541
  mono-variant=${this.variant === "outlined" ? nothing : this.variant}
542
+ mono-label-position=${this.labelPosition === "top" ? nothing : this.labelPosition}
543
+ mono-validation-position=${this.validationPosition === "bottom" ? nothing : this.validationPosition}
495
544
  mono-validation-state=${state === "default" ? nothing : state}
496
545
  ?mono-disabled=${this.disabled}
497
546
  ?mono-readonly=${this.readonly}
@@ -499,7 +548,7 @@ const MonoDateCore = (superClass) => {
499
548
  ?mono-clearable=${this.clearable}
500
549
  >
501
550
  ${this.label ? html`<label class=${this._cls("mono-date-label", "label")} mono-label for=${this._id}>
502
- ${this.label}${this.required ? html`<span class=${this._cls("mono-date-required", "required")} mono-required-mark>*</span>` : nothing}
551
+ ${this.label}${this.required ? html`<span class=${this._cls("mono-date-required", "required")} mono-required-mark>*</span>` : nothing}${this._tooltip.render()}
503
552
  </label>` : nothing}
504
553
 
505
554
  <div class=${this._fieldClasses} mono-field>
@@ -515,6 +564,7 @@ const MonoDateCore = (superClass) => {
515
564
  aria-label=${ifDefined(this.ariaLabelText || this.label || void 0)}
516
565
  @input=${this._onTyping}
517
566
  />
567
+ ${this._validation.renderIcon()}
518
568
  ${this.clearable && this._hasValue && !this.disabled && !this.readonly ? html`<button
519
569
  type="button"
520
570
  class=${this._cls("mono-date-clear", "clear")}
@@ -527,6 +577,7 @@ const MonoDateCore = (superClass) => {
527
577
  </div>
528
578
 
529
579
  ${this._renderMessage()}
580
+ ${this._validation.renderFloat()}
530
581
  </div>
531
582
  `;
532
583
  }
@@ -539,12 +590,21 @@ const MonoDateCore = (superClass) => {
539
590
  __decorate([property({ type: String })], MonoDateCoreClass.prototype, "size", void 0);
540
591
  __decorate([property({ type: String })], MonoDateCoreClass.prototype, "color", void 0);
541
592
  __decorate([property({ type: String })], MonoDateCoreClass.prototype, "variant", void 0);
593
+ __decorate([property({
594
+ type: String,
595
+ attribute: "label-position"
596
+ })], MonoDateCoreClass.prototype, "labelPosition", void 0);
597
+ __decorate([property({
598
+ type: String,
599
+ attribute: "validation-position"
600
+ })], MonoDateCoreClass.prototype, "validationPosition", void 0);
542
601
  __decorate([property({ type: String })], MonoDateCoreClass.prototype, "label", void 0);
543
602
  __decorate([property({ type: String })], MonoDateCoreClass.prototype, "placeholder", void 0);
544
603
  __decorate([property({
545
604
  type: String,
546
605
  attribute: "helper-text"
547
606
  })], MonoDateCoreClass.prototype, "helperText", void 0);
607
+ __decorate([property()], MonoDateCoreClass.prototype, "tooltip", void 0);
548
608
  __decorate([property({
549
609
  type: String,
550
610
  attribute: "validation-state"
@@ -671,7 +731,7 @@ const MonoDateCore = (superClass) => {
671
731
 
672
732
  //#endregion
673
733
  //#region \0raw:C:\Users\VCT-DEV\Desktop\libs\packages\helper\src\components\date\date.css?raw.js
674
- var date_css_raw_default = "/* @unocss-include */\r\n\r\n/* flatpickr's base stylesheet. The calendar renders into <body>, so this must\r\n live in the global bundle (dist/ui/index.css) — that's why date.css is\r\n @imported from src/entries/index.css. */\r\n@import 'flatpickr/dist/flatpickr.css';\r\n\r\n/* =========================================================================\r\n mono-date — the mono-input box (a port of Basecoat's `.input-group` with a\r\n leading icon, basecoat-css@1.0.2, vega style) around a flatpickr field, plus\r\n a calendar restyled in Basecoat's popover idiom.\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-date size=\"sm\" color=\"danger\" variant=\"filled\" label=\"Start\">\r\n <div mono-date mono-size=\"sm\" mono-color=\"danger\" mono-variant=\"filled\">\r\n <label mono-label>Start</label>\r\n <div mono-field>\r\n <span mono-prefix><span mono-icon class=\"mono-icon i-mdi-calendar-outline\"></span></span>\r\n <input mono-native type=\"text\" placeholder=\"Pick a date\" />\r\n </div>\r\n </div>\r\n\r\n An absent attribute is the prop's default (`:not([mono-size])` = md,\r\n `:not([mono-color])` = primary, `:not([mono-variant])` = outlined). The element\r\n renders these attributes on its wrapper (both builds); the old classes\r\n (`.mono-date.sm.filled`) are still emitted as inert hooks until 2.0 but no\r\n rule here reads them.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-date] ≡ .field (flex column gap-3)\r\n [mono-date] > [mono-label] ≡ .field > label / .label\r\n [mono-date] > [mono-field] ≡ .input-group (h-9 rounded-md border-input shadow-xs)\r\n [mono-field] > [mono-prefix] > [mono-icon] ≡ .input-group > span[data-align='start'] > svg (ps-2, size-4, muted)\r\n [mono-field] > [mono-native] ≡ .input-group > input (borderless, ps-1.5 after an affix, text-sm)\r\n [mono-field] > [mono-clear] > [mono-icon] ≡ .input-group > button[data-align='end']:has(> svg) (ghost, size-6)\r\n [mono-message-wrap] > [mono-message] ≡ .field > p / .field [role='alert']\r\n [mono-validation-state=\"error\"] ≡ .input-group:has([aria-invalid=true]) + .field[data-invalid]\r\n [mono-validation-state=\"success\"] ≡ EXTENSION (the invalid pattern in --success)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION (the --mono-control-height-* ladder)\r\n [mono-variant=\"filled\"] ≡ EXTENSION (luma's .input-group)\r\n [mono-variant=\"underlined\"] ≡ EXTENSION (sera's .input-group: bottom edge only, no ring)\r\n .flatpickr-calendar.mono-flatpickr ≡ [data-popover] frame (bg-popover ring-1 ring-foreground/10 rounded-md shadow-md)\r\n + EXTENSION: shadcn Calendar values (Basecoat 1.0.2 ships no calendar)\r\n\r\n Inner parts are attributes too: [mono-label] (+ [mono-required-mark]),\r\n [mono-field], [mono-prefix] > [mono-icon], [mono-native], [mono-clear] >\r\n [mono-icon], [mono-message-wrap] > [mono-message=\"helper|error|success\"].\r\n\r\n The calendar renders into <body> (both builds), so it is styled through\r\n flatpickr's own classes under our `.mono-flatpickr` marker and reads the page\r\n tokens directly; the element copies the field's accent onto it as\r\n `--cal-accent` / `--cal-accent-foreground` so it follows the `color` prop.\r\n\r\n FLAVORS set the same knobs as mono-input, renamed `--mono-date-*` (see\r\n input.css) plus `--mono-date-calendar-{radius,shadow,ring,day-radius}`. Every\r\n fallback here is vega's value.\r\n ========================================================================= */\r\n\r\nmono-date {\r\n display: block;\r\n}\r\n\r\n[mono-date] {\r\n /* ── palette: each slot is a public knob over a Basecoat token ─────────── */\r\n --_mono-date-text: var(--mono-date-color, var(--mono-date-text, var(--foreground)));\r\n --_mono-date-placeholder: var(--mono-date-placeholder, var(--muted-foreground));\r\n --_mono-date-muted: var(--mono-date-muted, var(--muted-foreground));\r\n --_mono-date-primary: var(--mono-date-primary, var(--_mono-date-primary-preset, var(--ring)));\r\n --_mono-date-primary-foreground: var(--mono-date-primary-foreground, var(--_mono-date-primary-foreground-preset, var(--primary-foreground)));\r\n --_mono-date-danger: var(--mono-date-danger, var(--destructive));\r\n --_mono-date-success: var(--mono-date-success, var(--success));\r\n --_mono-date-warning: var(--mono-date-warning, var(--warning));\r\n --_mono-date-info: var(--mono-date-info, var(--info));\r\n --_mono-date-teal: var(--mono-date-teal, var(--teal));\r\n --_mono-date-purple: var(--mono-date-purple, var(--purple));\r\n --_mono-date-neutral: var(--mono-date-neutral, var(--neutral));\r\n --_mono-date-dark: var(--mono-date-dark, var(--dark));\r\n --_mono-date-secondary: var(--mono-date-secondary, var(--muted-foreground));\r\n\r\n /* ── the painted result — three tiers, base = .input-group (vega) ──────── */\r\n --_mono-date-ring-color: var(--mono-date-ring-color, var(--mono-date-focus-color, var(--_mono-date-primary)));\r\n --_mono-date-ring-width: var(--mono-date-ring-width, var(--_mono-date-ring-width-preset, var(--mono-ring-width)));\r\n --_mono-date-ring-alpha: var(--mono-date-ring-alpha, var(--mono-ring-alpha));\r\n --_mono-date-border-color: var(--mono-date-rest-border, var(--mono-date-border-color, var(--mono-date-border, var(--_mono-date-border-color-preset, var(--input)))));\r\n --_mono-date-bg: var(--mono-date-bg, var(--mono-date-surface, var(--_mono-date-bg-preset, var(--mono-mode-surface))));\r\n --_mono-date-shadow: var(--mono-date-shadow, var(--_mono-date-shadow-preset, 0 0 #0000));\r\n --_mono-date-affix-padding: var(--mono-date-affix-padding, var(--_mono-date-affix-padding-preset, calc(var(--mono-spacing) * 2)));\r\n --_mono-date-affix-icon: var(--mono-date-affix-icon-size, calc(var(--mono-spacing) * 4));\r\n\r\n /* ── md metrics live on the unqualified root ON PURPOSE: hand-written\r\n `<div mono-date>` that names no size renders exactly like size=\"md\".\r\n basecoat@1.0.2 styles/vega.css .input-group — h-9 rounded-md; > input px-2.5 text-sm ── */\r\n --_mono-date-height: var(--mono-date-height-md, var(--mono-control-height-md));\r\n --_mono-date-radius: var(--mono-date-radius-md, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-md, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-date-font-size: var(--mono-date-font-md, var(--mono-text-sm));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-md, var(--mono-text-sm--lh)));\r\n --_mono-date-clear: calc(var(--mono-spacing) * 6);\r\n --_mono-date-clear-glyph: calc(var(--mono-spacing) * 3.5);\r\n\r\n /* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3 */\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--mono-date-gap, calc(var(--mono-spacing) * 3));\r\n width: 100%;\r\n font-family: inherit;\r\n color: var(--_mono-date-text);\r\n}\r\n\r\n[mono-date],\r\n[mono-date] *,\r\n[mono-date] *::before,\r\n[mono-date] *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n[mono-date] :is([mono-label], [mono-message])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n/* =========================================\r\n Sizes — the field's painted height IS the token (tests/perf/field-heights)\r\n EXTENSION: the shared --mono-control-height-* ladder; text follows .btn's steps\r\n ========================================= */\r\n\r\n@media (width < 48rem) {\r\n [mono-date]:is(:not([mono-size]), [mono-size=\"md\"]) {\r\n --_mono-date-font-size: var(--mono-date-font-md, var(--mono-text-base));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-md, var(--mono-text-base--lh)));\r\n }\r\n}\r\n\r\n[mono-date][mono-size=\"xs\"] {\r\n --_mono-date-height: var(--mono-date-height-xs, var(--mono-control-height-xs));\r\n --_mono-date-radius: var(--mono-date-radius-xs, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-xs, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-date-font-size: var(--mono-date-font-xs, var(--mono-text-xs));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-xs, var(--mono-text-xs--lh)));\r\n --_mono-date-affix-icon: var(--mono-date-affix-icon-size, calc(var(--mono-spacing) * 3.5));\r\n --_mono-date-clear: calc(var(--mono-spacing) * 4);\r\n --_mono-date-clear-glyph: calc(var(--mono-spacing) * 3);\r\n}\r\n\r\n[mono-date][mono-size=\"sm\"] {\r\n --_mono-date-height: var(--mono-date-height-sm, var(--mono-control-height-sm));\r\n --_mono-date-radius: var(--mono-date-radius-sm, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-sm, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-date-font-size: var(--mono-date-font-sm, var(--mono-date-font-md, var(--mono-text-sm)));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-sm, var(--mono-text-sm--lh)));\r\n --_mono-date-clear: calc(var(--mono-spacing) * 5);\r\n --_mono-date-clear-glyph: calc(var(--mono-spacing) * 3.5);\r\n}\r\n\r\n[mono-date][mono-size=\"lg\"] {\r\n --_mono-date-height: var(--mono-date-height-lg, var(--mono-control-height-lg));\r\n --_mono-date-radius: var(--mono-date-radius-lg, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-lg, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-date-font-size: var(--mono-date-font-lg, var(--mono-date-font-md, var(--mono-text-sm)));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-lg, var(--mono-text-sm--lh)));\r\n}\r\n\r\n[mono-date][mono-size=\"xl\"] {\r\n --_mono-date-height: var(--mono-date-height-xl, var(--mono-control-height-xl));\r\n --_mono-date-radius: var(--mono-date-radius-xl, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-xl, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 3))));\r\n --_mono-date-font-size: var(--mono-date-font-xl, var(--mono-text-base));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-xl, var(--mono-text-base--lh)));\r\n --_mono-date-affix-icon: var(--mono-date-affix-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-date-clear: calc(var(--mono-spacing) * 7);\r\n --_mono-date-clear-glyph: calc(var(--mono-spacing) * 4);\r\n}\r\n\r\n[mono-date][mono-size=\"xxl\"] {\r\n --_mono-date-height: var(--mono-date-height-xxl, var(--mono-control-height-xxl));\r\n --_mono-date-radius: var(--mono-date-radius-xxl, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-xxl, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 4))));\r\n --_mono-date-font-size: var(--mono-date-font-xxl, var(--mono-text-lg));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-xxl, var(--mono-text-lg--lh)));\r\n --_mono-date-affix-icon: var(--mono-date-affix-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-date-clear: calc(var(--mono-spacing) * 8);\r\n --_mono-date-clear-glyph: calc(var(--mono-spacing) * 4);\r\n}\r\n\r\n/* =========================================\r\n Variants — each writes only `*-preset` slots\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group — rounded-md border border-input\r\n shadow-xs bg-transparent (dark:bg-input/30 via --mono-mode-surface) */\r\n[mono-date]:is(:not([mono-variant]), [mono-variant=\"outlined\"]) {\r\n --_mono-date-bg-preset: var(--mono-date-outline-bg);\r\n --_mono-date-border-color-preset: var(--mono-date-outline-border-color);\r\n --_mono-date-side-border-color-preset: var(--mono-date-outline-side-border-color);\r\n --_mono-date-shadow-preset: var(--mono-date-outline-shadow, var(--mono-shadow-xs));\r\n --_mono-date-ring-width-preset: var(--mono-date-outline-ring-width);\r\n --_mono-date-radius-preset: var(--mono-date-outline-radius);\r\n --_mono-date-padding-x-preset: var(--mono-date-outline-padding-x);\r\n --_mono-date-affix-padding-preset: var(--mono-date-outline-affix-padding);\r\n}\r\n\r\n/* EXTENSION — filled ≡ basecoat@1.0.2 styles/luma.css .input-group */\r\n[mono-date][mono-variant=\"filled\"] {\r\n --_mono-date-bg-preset: var(--mono-date-filled-bg, color-mix(in oklab, var(--input) 50%, transparent));\r\n --_mono-date-border-color-preset: transparent;\r\n --_mono-date-shadow-preset: 0 0 #0000;\r\n}\r\n\r\n/* EXTENSION — underlined ≡ basecoat@1.0.2 styles/sera.css .input-group */\r\n[mono-date][mono-variant=\"underlined\"] {\r\n --_mono-date-bg-preset: transparent;\r\n --_mono-date-side-border-color-preset: transparent;\r\n --_mono-date-shadow-preset: 0 0 #0000;\r\n --_mono-date-ring-width-preset: 0px;\r\n --_mono-date-radius-preset: 0;\r\n --_mono-date-padding-x-preset: 0;\r\n --_mono-date-affix-padding-preset: 0;\r\n}\r\n\r\n/* =========================================\r\n Colours — the `color` prop is the accent: the focus ring + the calendar's\r\n selected day. Primary is Basecoat's --ring for the ring and --primary for the\r\n calendar (copied by the element as --cal-accent).\r\n ========================================= */\r\n\r\n[mono-date]:is(:not([mono-color]), [mono-color=\"primary\"]) {\r\n --_mono-date-primary-preset: var(--ring);\r\n --_mono-date-primary-foreground-preset: var(--primary-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--primary));\r\n}\r\n[mono-date][mono-color=\"secondary\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-secondary);\r\n --_mono-date-primary-foreground-preset: var(--background);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-secondary));\r\n}\r\n[mono-date][mono-color=\"success\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-success);\r\n --_mono-date-primary-foreground-preset: var(--success-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-success));\r\n}\r\n[mono-date][mono-color=\"danger\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-danger);\r\n --_mono-date-primary-foreground-preset: var(--destructive-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-danger));\r\n}\r\n[mono-date][mono-color=\"warning\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-warning);\r\n --_mono-date-primary-foreground-preset: var(--warning-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-warning));\r\n}\r\n[mono-date][mono-color=\"info\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-info);\r\n --_mono-date-primary-foreground-preset: var(--info-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-info));\r\n}\r\n[mono-date][mono-color=\"teal\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-teal);\r\n --_mono-date-primary-foreground-preset: var(--teal-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-teal));\r\n}\r\n[mono-date][mono-color=\"purple\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-purple);\r\n --_mono-date-primary-foreground-preset: var(--purple-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-purple));\r\n}\r\n[mono-date][mono-color=\"neutral\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-neutral);\r\n --_mono-date-primary-foreground-preset: var(--neutral-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-neutral));\r\n}\r\n[mono-date][mono-color=\"dark\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-dark);\r\n --_mono-date-primary-foreground-preset: var(--dark-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-dark));\r\n}\r\n\r\n/* =========================================\r\n Label\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > label, .label — flex items-center\r\n gap-2 text-sm leading-none font-medium select-none w-fit */\r\n[mono-date] > [mono-label] {\r\n display: flex;\r\n align-items: center;\r\n width: fit-content;\r\n gap: var(--mono-date-label-gap, calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-date-label-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-date-label-line-height, 1);\r\n font-weight: var(--mono-date-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)));\r\n text-transform: var(--mono-date-label-text-transform, none);\r\n letter-spacing: var(--mono-date-label-letter-spacing, normal);\r\n color: var(--_mono-date-text);\r\n user-select: none;\r\n}\r\n\r\n[mono-date][mono-disabled] > [mono-label],\r\n[mono-date]:has(> [mono-field] > [mono-native]:disabled) > [mono-label] {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field — data-invalid:text-destructive */\r\n[mono-date][mono-validation-state=\"error\"] > [mono-label] {\r\n color: var(--_mono-date-danger);\r\n}\r\n\r\n[mono-date] [mono-required-mark] {\r\n color: var(--_mono-date-danger);\r\n}\r\n\r\n/* =========================================\r\n The field — the bordered box\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/input-group.css .input-group */\r\n/* basecoat@1.0.2 styles/vega.css .input-group — h-9 rounded-md border border-input\r\n shadow-xs focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 */\r\n[mono-date] > [mono-field] {\r\n --_mono-date-bc: var(--_mono-date-border-color);\r\n --_mono-date-side-bc: var(--mono-date-side-border-color, var(--_mono-date-side-border-color-preset, var(--_mono-date-bc)));\r\n --_mono-date-ring: 0 0 #0000;\r\n\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n min-width: 0;\r\n min-height: var(--_mono-date-height);\r\n padding-block: var(--mono-date-padding-y, 0);\r\n outline-style: none;\r\n border: var(--mono-border-width) solid var(--_mono-date-bc);\r\n border-top-color: var(--_mono-date-side-bc);\r\n border-inline-color: var(--_mono-date-side-bc);\r\n border-radius: var(--_mono-date-radius);\r\n background: var(--_mono-date-bg);\r\n color: var(--_mono-date-text);\r\n box-shadow: var(--_mono-date-ring), var(--_mono-date-shadow);\r\n transition-property: color, box-shadow, border-color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n\r\n &:focus-within {\r\n --_mono-date-bc: var(--_mono-date-ring-color);\r\n --_mono-date-ring: 0 0 0 var(--_mono-date-ring-width) color-mix(in oklab, var(--_mono-date-ring-color) var(--_mono-date-ring-alpha), transparent);\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group — has-[[aria-invalid=true]]:border-destructive\r\n has-[[aria-invalid=true]]:ring-3 has-[[aria-invalid=true]]:ring-destructive/20 */\r\n[mono-date][mono-validation-state=\"error\"] > [mono-field],\r\n[mono-date] > [mono-field]:has(> [mono-native][aria-invalid=\"true\"]) {\r\n --_mono-date-bc: var(--mono-mode-invalid-border);\r\n --_mono-date-ring: 0 0 0 var(--_mono-date-ring-width) var(--mono-mode-invalid-ring);\r\n}\r\n\r\n/* EXTENSION — success is the invalid pattern in --success */\r\n[mono-date][mono-validation-state=\"success\"] > [mono-field] {\r\n --_mono-date-bc: color-mix(in oklab, var(--_mono-date-success) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-date-ring: 0 0 0 var(--_mono-date-ring-width) color-mix(in oklab, var(--_mono-date-success) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n\r\n/* EXTENSION — readonly: a muted surface */\r\n[mono-date][mono-readonly] > [mono-field] {\r\n background: var(--mono-date-readonly-bg, var(--muted));\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group:has(> :is(input, textarea, select, [data-control]):disabled) — opacity-50 */\r\n[mono-date][mono-disabled] > [mono-field],\r\n[mono-date]:not([mono-readonly]) > [mono-field]:has(> [mono-native]:disabled) {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n background: var(--mono-date-disabled-bg, var(--_mono-date-bg));\r\n}\r\n\r\n/* =========================================\r\n The native input (flatpickr's altInput takes the same rule: it replaces the\r\n native in the DOM and inherits its class + attributes)\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/input-group.css .input-group > :is(input, textarea, select, [data-control]) */\r\n/* basecoat@1.0.2 styles/vega.css .input-group > :is(input, select, [data-control]) — px-2.5 py-1 text-sm */\r\n[mono-date] [mono-native],\r\n[mono-date] [mono-field] > input.flatpickr-input.altInput {\r\n display: block;\r\n flex: 1 1 auto;\r\n width: 100%;\r\n min-width: 0;\r\n align-self: stretch;\r\n appearance: none;\r\n margin: 0;\r\n border: 0;\r\n border-radius: 0;\r\n outline: none;\r\n background: transparent;\r\n box-shadow: none;\r\n color: var(--_mono-date-text);\r\n font-family: inherit;\r\n font-size: var(--_mono-date-font-size);\r\n line-height: var(--_mono-date-line-height);\r\n padding-inline: var(--_mono-date-padding-x);\r\n padding-block: 0;\r\n\r\n &::placeholder {\r\n color: var(--_mono-date-placeholder);\r\n }\r\n\r\n &:disabled {\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n }\r\n\r\n &:read-only {\r\n cursor: inherit;\r\n }\r\n\r\n &:focus,\r\n &:focus-visible {\r\n outline: none !important;\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group:not([data-orientation='vertical']):has(> :is([data-align='start'], [data-align='inline-start'])) > :is(input, select, [data-control]) — ps-1.5 */\r\n[mono-date] > [mono-field]:has(> [mono-prefix]:not([mono-empty])) > :is([mono-native], input.flatpickr-input.altInput) {\r\n padding-inline-start: var(--mono-date-affix-gap, calc(var(--mono-spacing) * 1.5));\r\n}\r\n[mono-date] > [mono-field]:has(> [mono-clear]) > :is([mono-native], input.flatpickr-input.altInput) {\r\n padding-inline-end: var(--mono-date-affix-gap, calc(var(--mono-spacing) * 1.5));\r\n}\r\n\r\n/* =========================================\r\n The leading icon\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group > :is(span, [role='group'], header, footer), .input-group > :is(svg, kbd, .popover, .dropdown-menu)\r\n — text-muted-foreground select-none, svg size-4; [data-align='start'] ps-2 */\r\n[mono-date] [mono-prefix] {\r\n flex: 0 0 auto;\r\n display: inline-flex;\r\n align-items: center;\r\n padding-inline-start: var(--_mono-date-affix-padding);\r\n color: var(--_mono-date-muted);\r\n user-select: none;\r\n pointer-events: none;\r\n}\r\n\r\n[mono-date] [mono-prefix] > :is(svg, .mono-icon, [mono-icon]) {\r\n display: block;\r\n width: var(--_mono-date-affix-icon);\r\n height: var(--_mono-date-affix-icon);\r\n flex-shrink: 0;\r\n}\r\n\r\n/* =========================================\r\n Clear button — a ghost icon button in the end slot\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group > :is(button, [role='group'] > button, header > button, footer > button):has(> svg):not(:has(> :not(svg)))\r\n — size-6 rounded-[calc(var(--radius)-5px)] p-0 shadow-none, svg size-3.5; me-1 */\r\n[mono-date] [mono-clear] {\r\n flex: 0 0 auto;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--_mono-date-clear);\r\n height: var(--_mono-date-clear);\r\n padding: 0;\r\n margin: 0;\r\n margin-inline-end: var(--mono-spacing);\r\n border: 0;\r\n border-radius: var(--mono-date-clear-radius, calc(var(--radius) - 5px));\r\n background: transparent;\r\n box-shadow: none;\r\n color: var(--_mono-date-muted);\r\n font: inherit;\r\n line-height: 1;\r\n cursor: pointer;\r\n outline-style: none;\r\n transition-property: color, background-color, box-shadow;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n\r\n &:focus-visible {\r\n box-shadow: 0 0 0 var(--_mono-date-ring-width) color-mix(in oklab, var(--_mono-date-ring-color) var(--_mono-date-ring-alpha), transparent);\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .btn[data-variant='ghost'] — hover:bg-muted hover:text-foreground */\r\n@media (hover: hover) {\r\n [mono-date] [mono-clear]:hover {\r\n background: var(--mono-mode-ghost-hover);\r\n color: var(--_mono-date-text);\r\n }\r\n}\r\n\r\n[mono-date] [mono-clear] > :is(svg, .mono-icon, [mono-icon]) {\r\n display: block;\r\n width: var(--_mono-date-clear-glyph);\r\n height: var(--_mono-date-clear-glyph);\r\n pointer-events: none;\r\n}\r\n\r\n/* =========================================\r\n Message\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .fieldset legend + p, .field > p, .field section > p */\r\n[mono-date] > [mono-message-wrap] {\r\n display: block;\r\n}\r\n\r\n[mono-date] > [mono-message-wrap]:not(:has([mono-message]:not([mono-empty]))) {\r\n display: none;\r\n}\r\n\r\n[mono-date] [mono-message] {\r\n font-size: var(--mono-date-message-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-date-message-line-height, var(--mono-leading-normal));\r\n font-weight: var(--mono-font-weight-normal);\r\n text-align: start;\r\n color: var(--_mono-date-muted);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field [role=\"alert\"] — text-destructive text-sm */\r\n[mono-date] [mono-message=\"error\"] {\r\n color: var(--_mono-date-danger);\r\n}\r\n\r\n[mono-date] [mono-message=\"success\"] {\r\n color: var(--_mono-date-success);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n [mono-date] > [mono-field],\r\n [mono-date] [mono-clear] {\r\n transition: none;\r\n }\r\n}\r\n\r\n/* =========================================\r\n flatpickr calendar — restyled in Basecoat's idiom\r\n -----------------------------------------\r\n The calendar renders into <body>, so it reads the page tokens and cannot see\r\n the field's resolvers; the element copies the field's accent onto it as\r\n `--cal-accent` / `--cal-accent-foreground` (inline) so it follows the `color`\r\n prop. Every rule is scoped to our `.mono-flatpickr` marker; flatpickr's own\r\n geometry (day cells, container widths) is kept — only colour, radius,\r\n typography and the frame are ours.\r\n\r\n basecoat@1.0.2 styles/vega.css .select:not(select) [data-popover] — the frame:\r\n bg-popover text-popover-foreground ring-1 ring-foreground/10 rounded-md\r\n shadow-md. EXTENSION: the day / caption / nav values are shadcn's Calendar\r\n (Basecoat 1.0.2 ships no calendar): day size-8 rounded-md text-sm,\r\n hover / today / in-range bg-accent text-accent-foreground, selected\r\n bg-primary text-primary-foreground, outside days text-muted-foreground/50,\r\n caption text-sm font-medium, weekdays text-muted-foreground text-[0.8rem].\r\n ========================================= */\r\n.flatpickr-calendar.mono-flatpickr {\r\n --cal-bg: var(--mono-date-calendar-bg, var(--popover));\r\n --cal-text: var(--mono-date-calendar-color, var(--popover-foreground));\r\n --cal-muted: var(--muted-foreground);\r\n --cal-faint: color-mix(in oklab, var(--muted-foreground) 50%, transparent);\r\n --cal-border: var(--border);\r\n --cal-soft: var(--accent);\r\n --cal-soft-foreground: var(--accent-foreground);\r\n --cal-accent: var(--primary);\r\n --cal-accent-foreground: var(--primary-foreground);\r\n --cal-radius: var(--mono-date-calendar-day-radius, var(--mono-radius-md));\r\n\r\n background: var(--cal-bg);\r\n border: 0;\r\n border-radius: var(--mono-date-calendar-radius, var(--mono-radius-md));\r\n box-shadow: var(--mono-date-calendar-ring, 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent)), var(--mono-date-calendar-shadow, var(--mono-shadow-md));\r\n color: var(--cal-text);\r\n font-family: inherit;\r\n font-size: var(--mono-text-sm);\r\n line-height: var(--mono-text-sm--lh);\r\n}\r\n\r\n/* a popover has no pointer arrow */\r\n.flatpickr-calendar.mono-flatpickr::before,\r\n.flatpickr-calendar.mono-flatpickr::after {\r\n display: none;\r\n}\r\n\r\n/* months / header — text-sm font-medium */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-month,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-current-month,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-current-month input.cur-year {\r\n color: var(--cal-text);\r\n fill: var(--cal-text);\r\n font-size: var(--mono-text-sm);\r\n font-weight: var(--mono-font-weight-medium);\r\n}\r\n\r\n/* nav — .btn[data-variant='outline'][data-size='icon-sm']: size-7 rounded-md\r\n border-border bg-background hover:bg-muted, painted flat here */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-prev-month,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-next-month {\r\n color: var(--cal-muted);\r\n fill: var(--cal-muted);\r\n border-radius: var(--cal-radius);\r\n transition-property: color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-prev-month svg,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-next-month svg {\r\n fill: currentColor;\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-prev-month:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-next-month:hover {\r\n background: var(--cal-soft);\r\n color: var(--cal-soft-foreground);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-prev-month:hover svg,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-next-month:hover svg {\r\n fill: var(--cal-soft-foreground);\r\n}\r\n\r\n/* month dropdown — a native <select>. Its popup list is drawn by the browser\r\n from the select's OWN background-color and the option colours (a transparent\r\n select falls back to the OS palette, which is what mismatched the dark popover),\r\n so the select carries the popover surface and never changes it on hover. */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-monthDropdown-months {\r\n background: var(--cal-bg);\r\n color: var(--cal-text);\r\n color-scheme: inherit;\r\n font-weight: var(--mono-font-weight-medium);\r\n border-radius: var(--cal-radius);\r\n transition-property: color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-monthDropdown-months:hover {\r\n background: var(--cal-bg);\r\n color: var(--cal-accent);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {\r\n background: var(--cal-bg);\r\n color: var(--cal-text);\r\n font-weight: var(--mono-font-weight-normal);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month:checked {\r\n background: var(--cal-soft);\r\n color: var(--cal-soft-foreground);\r\n}\r\n\r\n/* year stepper */\r\n\r\n.flatpickr-calendar.mono-flatpickr .numInputWrapper:hover {\r\n background: var(--cal-soft);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .numInputWrapper span {\r\n border-color: var(--cal-border);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .numInputWrapper span:hover {\r\n background: var(--cal-soft);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .numInputWrapper span.arrowUp::after {\r\n border-bottom-color: var(--cal-muted);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .numInputWrapper span.arrowDown::after {\r\n border-top-color: var(--cal-muted);\r\n}\r\n\r\n/* weekdays — text-muted-foreground text-[0.8rem] font-normal */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-weekdays {\r\n background: transparent;\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr span.flatpickr-weekday {\r\n background: transparent;\r\n color: var(--cal-muted);\r\n font-size: 0.8rem;\r\n font-weight: var(--mono-font-weight-normal);\r\n}\r\n\r\n/* days — rounded-md text-sm; hover bg-accent; today bg-accent; selected bg-primary */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day {\r\n color: var(--cal-text);\r\n border: 1px solid transparent;\r\n border-radius: var(--cal-radius);\r\n font-size: var(--mono-text-sm);\r\n font-weight: var(--mono-font-weight-normal);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day:focus {\r\n background: var(--cal-soft);\r\n border-color: transparent;\r\n color: var(--cal-soft-foreground);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.today {\r\n background: var(--cal-soft);\r\n border-color: transparent;\r\n color: var(--cal-soft-foreground);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.selected,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.startRange,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.endRange,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.selected:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.startRange:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.endRange:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.selected:focus,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.startRange:focus,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.endRange:focus,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.selected.today {\r\n background: var(--cal-accent);\r\n border-color: var(--cal-accent);\r\n color: var(--cal-accent-foreground);\r\n}\r\n\r\n/* range middle — bg-accent, squared between the two ends */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.inRange {\r\n background: var(--cal-soft);\r\n border-color: transparent;\r\n color: var(--cal-soft-foreground);\r\n border-radius: 0;\r\n box-shadow: -5px 0 0 var(--cal-soft), 5px 0 0 var(--cal-soft);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.prevMonthDay,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.nextMonthDay {\r\n color: var(--cal-faint);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.flatpickr-disabled,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.flatpickr-disabled:hover {\r\n color: var(--cal-faint);\r\n background: transparent;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* week numbers */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-weekwrapper .flatpickr-weekday,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-weekwrapper span.flatpickr-day {\r\n color: var(--cal-faint);\r\n}\r\n\r\n/* time */\r\n.flatpickr-calendar.mono-flatpickr.hasTime .flatpickr-time {\r\n border-top: 1px solid var(--cal-border);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time input,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time .flatpickr-time-separator,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time .flatpickr-am-pm {\r\n color: var(--cal-text);\r\n background: transparent;\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time input:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time input:focus,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time .flatpickr-am-pm:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time .flatpickr-am-pm:focus {\r\n background: var(--cal-soft);\r\n color: var(--cal-soft-foreground);\r\n}\r\n\r\n/* the inline calendar (`inline`) sits in the page flow, on the field's own surface */\r\n.flatpickr-calendar.mono-flatpickr.inline {\r\n box-shadow: var(--mono-date-calendar-ring, 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent));\r\n}\r\n";
734
+ var date_css_raw_default = "/* @unocss-include */\r\n\r\n/* flatpickr's base stylesheet. The calendar renders into <body>, so this must\r\n live in the global bundle (dist/ui/index.css) — that's why date.css is\r\n @imported from src/entries/index.css. */\r\n@import 'flatpickr/dist/flatpickr.css';\r\n\r\n/* =========================================================================\r\n mono-date — the mono-input box (a port of Basecoat's `.input-group` with a\r\n leading icon, basecoat-css@1.0.2, vega style) around a flatpickr field, plus\r\n a calendar restyled in Basecoat's popover idiom.\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-date size=\"sm\" color=\"danger\" variant=\"filled\" label=\"Start\">\r\n <div mono-date mono-size=\"sm\" mono-color=\"danger\" mono-variant=\"filled\">\r\n <label mono-label>Start</label>\r\n <div mono-field>\r\n <span mono-prefix><span mono-icon class=\"mono-icon i-mdi-calendar-outline\"></span></span>\r\n <input mono-native type=\"text\" placeholder=\"Pick a date\" />\r\n </div>\r\n </div>\r\n\r\n An absent attribute is the prop's default (`:not([mono-size])` = md,\r\n `:not([mono-color])` = primary, `:not([mono-variant])` = outlined). The element\r\n renders these attributes on its wrapper (both builds); the old classes\r\n (`.mono-date.sm.filled`) are still emitted as inert hooks until 2.0 but no\r\n rule here reads them.\r\n\r\n Selector map (ours ≡ upstream):\r\n [mono-date] ≡ .field (flex column gap-3)\r\n [mono-date] > [mono-label] ≡ .field > label / .label\r\n [mono-date] > [mono-field] ≡ .input-group (h-9 rounded-md border-input shadow-xs)\r\n [mono-field] > [mono-prefix] > [mono-icon] ≡ .input-group > span[data-align='start'] > svg (ps-2, size-4, muted)\r\n [mono-field] > [mono-native] ≡ .input-group > input (borderless, ps-1.5 after an affix, text-sm)\r\n [mono-field] > [mono-clear] > [mono-icon] ≡ .input-group > button[data-align='end']:has(> svg) (ghost, size-6)\r\n [mono-message-wrap] > [mono-message] ≡ .field > p / .field [role='alert']\r\n [mono-validation-state=\"error\"] ≡ .input-group:has([aria-invalid=true]) + .field[data-invalid]\r\n [mono-validation-state=\"success\"] ≡ EXTENSION (the invalid pattern in --success)\r\n [mono-size=\"xs|sm|lg|xl|xxl\"] ≡ EXTENSION (the --mono-control-height-* ladder)\r\n [mono-variant=\"filled\"] ≡ EXTENSION (luma's .input-group)\r\n [mono-variant=\"underlined\"] ≡ EXTENSION (sera's .input-group: bottom edge only, no ring)\r\n .flatpickr-calendar.mono-flatpickr ≡ [data-popover] frame (bg-popover ring-1 ring-foreground/10 rounded-md shadow-md)\r\n + EXTENSION: shadcn Calendar values (Basecoat 1.0.2 ships no calendar)\r\n\r\n Inner parts are attributes too: [mono-label] (+ [mono-required-mark]),\r\n [mono-field], [mono-prefix] > [mono-icon], [mono-native], [mono-clear] >\r\n [mono-icon], [mono-message-wrap] > [mono-message=\"helper|error|success\"].\r\n\r\n The calendar renders into <body> (both builds), so it is styled through\r\n flatpickr's own classes under our `.mono-flatpickr` marker and reads the page\r\n tokens directly; the element copies the field's accent onto it as\r\n `--cal-accent` / `--cal-accent-foreground` so it follows the `color` prop.\r\n\r\n FLAVORS set the same knobs as mono-input, renamed `--mono-date-*` (see\r\n input.css) plus `--mono-date-calendar-{radius,shadow,ring,day-radius}`. Every\r\n fallback here is vega's value.\r\n ========================================================================= */\r\n\r\nmono-date {\r\n display: block;\r\n}\r\n\r\n[mono-date] {\r\n /* ── palette: each slot is a public knob over a Basecoat token ─────────── */\r\n --_mono-date-text: var(--mono-date-color, var(--mono-date-text, var(--foreground)));\r\n --_mono-date-placeholder: var(--mono-date-placeholder, var(--muted-foreground));\r\n --_mono-date-muted: var(--mono-date-muted, var(--muted-foreground));\r\n --_mono-date-primary: var(--mono-date-primary, var(--_mono-date-primary-preset, var(--ring)));\r\n --_mono-date-primary-foreground: var(--mono-date-primary-foreground, var(--_mono-date-primary-foreground-preset, var(--primary-foreground)));\r\n --_mono-date-danger: var(--mono-date-danger, var(--destructive));\r\n --_mono-date-success: var(--mono-date-success, var(--success));\r\n --_mono-date-warning: var(--mono-date-warning, var(--warning));\r\n --_mono-date-info: var(--mono-date-info, var(--info));\r\n --_mono-date-teal: var(--mono-date-teal, var(--teal));\r\n --_mono-date-purple: var(--mono-date-purple, var(--purple));\r\n --_mono-date-neutral: var(--mono-date-neutral, var(--neutral));\r\n --_mono-date-dark: var(--mono-date-dark, var(--dark));\r\n --_mono-date-secondary: var(--mono-date-secondary, var(--muted-foreground));\r\n\r\n /* ── the painted result — three tiers, base = .input-group (vega) ──────── */\r\n --_mono-date-ring-color: var(--mono-date-ring-color, var(--mono-date-focus-color, var(--_mono-date-primary)));\r\n --_mono-date-ring-width: var(--mono-date-ring-width, var(--_mono-date-ring-width-preset, var(--mono-ring-width)));\r\n --_mono-date-ring-alpha: var(--mono-date-ring-alpha, var(--mono-ring-alpha));\r\n --_mono-date-border-color: var(--mono-date-rest-border, var(--mono-date-border-color, var(--mono-date-border, var(--_mono-date-border-color-preset, var(--input)))));\r\n --_mono-date-bg: var(--mono-date-bg, var(--mono-date-surface, var(--_mono-date-bg-preset, var(--mono-mode-surface))));\r\n --_mono-date-shadow: var(--mono-date-shadow, var(--_mono-date-shadow-preset, 0 0 #0000));\r\n --_mono-date-affix-padding: var(--mono-date-affix-padding, var(--_mono-date-affix-padding-preset, calc(var(--mono-spacing) * 2)));\r\n --_mono-date-affix-icon: var(--mono-date-affix-icon-size, calc(var(--mono-spacing) * 4));\r\n\r\n /* ── md metrics live on the unqualified root ON PURPOSE: hand-written\r\n `<div mono-date>` that names no size renders exactly like size=\"md\".\r\n basecoat@1.0.2 styles/vega.css .input-group — h-9 rounded-md; > input px-2.5 text-sm ── */\r\n --_mono-date-height: var(--mono-date-height-md, var(--mono-control-height-md));\r\n --_mono-date-radius: var(--mono-date-radius-md, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-md, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-date-font-size: var(--mono-date-font-md, var(--mono-text-sm));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-md, var(--mono-text-sm--lh)));\r\n --_mono-date-clear: calc(var(--mono-spacing) * 6);\r\n --_mono-date-clear-glyph: calc(var(--mono-spacing) * 3.5);\r\n\r\n /* basecoat@1.0.2 styles/vega.css .field — flex w-full flex-col gap-3 */\r\n display: flex;\r\n flex-direction: column;\r\n gap: var(--mono-date-gap, calc(var(--mono-spacing) * 3));\r\n width: 100%;\r\n font-family: inherit;\r\n color: var(--_mono-date-text);\r\n}\r\n\r\n[mono-date],\r\n[mono-date] *,\r\n[mono-date] *::before,\r\n[mono-date] *::after {\r\n box-sizing: border-box;\r\n}\r\n\r\n[mono-date] :is([mono-label], [mono-message])[mono-empty] {\r\n display: none;\r\n}\r\n\r\n/* =========================================\r\n Sizes — the field's painted height IS the token (tests/perf/field-heights)\r\n EXTENSION: the shared --mono-control-height-* ladder; text follows .btn's steps\r\n ========================================= */\r\n\r\n@media (width < 48rem) {\r\n [mono-date]:is(:not([mono-size]), [mono-size=\"md\"]) {\r\n --_mono-date-font-size: var(--mono-date-font-md, var(--mono-text-base));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-md, var(--mono-text-base--lh)));\r\n }\r\n}\r\n\r\n[mono-date][mono-size=\"xs\"] {\r\n --_mono-date-height: var(--mono-date-height-xs, var(--mono-control-height-xs));\r\n --_mono-date-radius: var(--mono-date-radius-xs, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-xs, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 2))));\r\n --_mono-date-font-size: var(--mono-date-font-xs, var(--mono-text-xs));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-xs, var(--mono-text-xs--lh)));\r\n --_mono-date-affix-icon: var(--mono-date-affix-icon-size, calc(var(--mono-spacing) * 3.5));\r\n --_mono-date-clear: calc(var(--mono-spacing) * 4);\r\n --_mono-date-clear-glyph: calc(var(--mono-spacing) * 3);\r\n}\r\n\r\n[mono-date][mono-size=\"sm\"] {\r\n --_mono-date-height: var(--mono-date-height-sm, var(--mono-control-height-sm));\r\n --_mono-date-radius: var(--mono-date-radius-sm, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-sm, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-date-font-size: var(--mono-date-font-sm, var(--mono-date-font-md, var(--mono-text-sm)));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-sm, var(--mono-text-sm--lh)));\r\n --_mono-date-clear: calc(var(--mono-spacing) * 5);\r\n --_mono-date-clear-glyph: calc(var(--mono-spacing) * 3.5);\r\n}\r\n\r\n[mono-date][mono-size=\"lg\"] {\r\n --_mono-date-height: var(--mono-date-height-lg, var(--mono-control-height-lg));\r\n --_mono-date-radius: var(--mono-date-radius-lg, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-lg, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 2.5))));\r\n --_mono-date-font-size: var(--mono-date-font-lg, var(--mono-date-font-md, var(--mono-text-sm)));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-lg, var(--mono-text-sm--lh)));\r\n}\r\n\r\n[mono-date][mono-size=\"xl\"] {\r\n --_mono-date-height: var(--mono-date-height-xl, var(--mono-control-height-xl));\r\n --_mono-date-radius: var(--mono-date-radius-xl, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-xl, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 3))));\r\n --_mono-date-font-size: var(--mono-date-font-xl, var(--mono-text-base));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-xl, var(--mono-text-base--lh)));\r\n --_mono-date-affix-icon: var(--mono-date-affix-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-date-clear: calc(var(--mono-spacing) * 7);\r\n --_mono-date-clear-glyph: calc(var(--mono-spacing) * 4);\r\n}\r\n\r\n[mono-date][mono-size=\"xxl\"] {\r\n --_mono-date-height: var(--mono-date-height-xxl, var(--mono-control-height-xxl));\r\n --_mono-date-radius: var(--mono-date-radius-xxl, var(--_mono-date-radius-preset, var(--mono-date-radius, var(--mono-radius-md))));\r\n --_mono-date-padding-x: var(--mono-date-padding-x-xxl, var(--mono-date-padding-x, var(--_mono-date-padding-x-preset, calc(var(--mono-spacing) * 4))));\r\n --_mono-date-font-size: var(--mono-date-font-xxl, var(--mono-text-lg));\r\n --_mono-date-line-height: var(--mono-date-line-height, var(--mono-date-line-height-xxl, var(--mono-text-lg--lh)));\r\n --_mono-date-affix-icon: var(--mono-date-affix-icon-size, calc(var(--mono-spacing) * 5));\r\n --_mono-date-clear: calc(var(--mono-spacing) * 8);\r\n --_mono-date-clear-glyph: calc(var(--mono-spacing) * 4);\r\n}\r\n\r\n/* =========================================\r\n Variants — each writes only `*-preset` slots\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group — rounded-md border border-input\r\n shadow-xs bg-transparent (dark:bg-input/30 via --mono-mode-surface) */\r\n[mono-date]:is(:not([mono-variant]), [mono-variant=\"outlined\"]) {\r\n --_mono-date-bg-preset: var(--mono-date-outline-bg);\r\n --_mono-date-border-color-preset: var(--mono-date-outline-border-color);\r\n --_mono-date-side-border-color-preset: var(--mono-date-outline-side-border-color);\r\n --_mono-date-shadow-preset: var(--mono-date-outline-shadow, var(--mono-shadow-xs));\r\n --_mono-date-ring-width-preset: var(--mono-date-outline-ring-width);\r\n --_mono-date-radius-preset: var(--mono-date-outline-radius);\r\n --_mono-date-padding-x-preset: var(--mono-date-outline-padding-x);\r\n --_mono-date-affix-padding-preset: var(--mono-date-outline-affix-padding);\r\n}\r\n\r\n/* EXTENSION — filled ≡ basecoat@1.0.2 styles/luma.css .input-group */\r\n[mono-date][mono-variant=\"filled\"] {\r\n --_mono-date-bg-preset: var(--mono-date-filled-bg, color-mix(in oklab, var(--input) 50%, transparent));\r\n --_mono-date-border-color-preset: transparent;\r\n --_mono-date-shadow-preset: 0 0 #0000;\r\n}\r\n\r\n/* EXTENSION — underlined ≡ basecoat@1.0.2 styles/sera.css .input-group */\r\n[mono-date][mono-variant=\"underlined\"] {\r\n --_mono-date-bg-preset: transparent;\r\n --_mono-date-side-border-color-preset: transparent;\r\n --_mono-date-shadow-preset: 0 0 #0000;\r\n --_mono-date-ring-width-preset: 0px;\r\n --_mono-date-radius-preset: 0;\r\n --_mono-date-padding-x-preset: 0;\r\n --_mono-date-affix-padding-preset: 0;\r\n}\r\n\r\n/* =========================================\r\n Colours — the `color` prop is the accent: the focus ring + the calendar's\r\n selected day. Primary is Basecoat's --ring for the ring and --primary for the\r\n calendar (copied by the element as --cal-accent).\r\n ========================================= */\r\n\r\n[mono-date]:is(:not([mono-color]), [mono-color=\"primary\"]) {\r\n --_mono-date-primary-preset: var(--ring);\r\n --_mono-date-primary-foreground-preset: var(--primary-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--primary));\r\n}\r\n[mono-date][mono-color=\"secondary\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-secondary);\r\n --_mono-date-primary-foreground-preset: var(--background);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-secondary));\r\n}\r\n[mono-date][mono-color=\"success\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-success);\r\n --_mono-date-primary-foreground-preset: var(--success-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-success));\r\n}\r\n[mono-date][mono-color=\"danger\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-danger);\r\n --_mono-date-primary-foreground-preset: var(--destructive-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-danger));\r\n}\r\n[mono-date][mono-color=\"warning\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-warning);\r\n --_mono-date-primary-foreground-preset: var(--warning-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-warning));\r\n}\r\n[mono-date][mono-color=\"info\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-info);\r\n --_mono-date-primary-foreground-preset: var(--info-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-info));\r\n}\r\n[mono-date][mono-color=\"teal\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-teal);\r\n --_mono-date-primary-foreground-preset: var(--teal-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-teal));\r\n}\r\n[mono-date][mono-color=\"purple\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-purple);\r\n --_mono-date-primary-foreground-preset: var(--purple-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-purple));\r\n}\r\n[mono-date][mono-color=\"neutral\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-neutral);\r\n --_mono-date-primary-foreground-preset: var(--neutral-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-neutral));\r\n}\r\n[mono-date][mono-color=\"dark\"] {\r\n --_mono-date-primary-preset: var(--_mono-date-dark);\r\n --_mono-date-primary-foreground-preset: var(--dark-foreground);\r\n --_mono-date-calendar-accent: var(--mono-date-calendar-accent, var(--_mono-date-dark));\r\n}\r\n\r\n/* =========================================\r\n Label\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field > label, .label — flex items-center\r\n gap-2 text-sm leading-none font-medium select-none w-fit */\r\n[mono-date] > [mono-label] {\r\n display: flex;\r\n align-items: center;\r\n width: fit-content;\r\n gap: var(--mono-date-label-gap, calc(var(--mono-spacing) * 2));\r\n font-size: var(--mono-date-label-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-date-label-line-height, 1);\r\n font-weight: var(--mono-date-label-font-weight, var(--mono-label-font-weight, var(--mono-font-weight-medium)));\r\n text-transform: var(--mono-date-label-text-transform, none);\r\n letter-spacing: var(--mono-date-label-letter-spacing, normal);\r\n color: var(--_mono-date-text);\r\n user-select: none;\r\n}\r\n\r\n[mono-date][mono-disabled] > [mono-label],\r\n[mono-date]:has(> [mono-field] > [mono-native]:disabled) > [mono-label] {\r\n opacity: 0.5;\r\n pointer-events: none;\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field — data-invalid:text-destructive */\r\n[mono-date][mono-validation-state=\"error\"] > [mono-label] {\r\n color: var(--_mono-date-danger);\r\n}\r\n\r\n[mono-date] [mono-required-mark] {\r\n color: var(--_mono-date-danger);\r\n}\r\n\r\n/* `tooltip` prop — the info icon at the end of the label row (the label's\r\n flex gap spaces it). `pointer-events` is restored because a disabled field\r\n switches its label's off, and a disabled field is exactly where the reason\r\n is worth a hover. Knobs: --mono-date-label-tooltip-size / -color / -opacity. */\r\n:where([mono-date]) > [mono-label] > [mono-label-tooltip] {\r\n display: inline-flex;\r\n flex: none;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: var(--mono-date-label-tooltip-size, 1.1em);\r\n color: var(--mono-date-label-tooltip-color, currentColor);\r\n opacity: var(--mono-date-label-tooltip-opacity, 0.6);\r\n border-radius: 9999px;\r\n cursor: help;\r\n pointer-events: auto;\r\n outline: none;\r\n transition: opacity 150ms ease;\r\n}\r\n\r\n:where([mono-date]) > [mono-label] > [mono-label-tooltip]:is(:hover, :focus-visible) {\r\n opacity: 1;\r\n}\r\n\r\n:where([mono-date]) > [mono-label] > [mono-label-tooltip]:focus-visible {\r\n outline: 2px solid currentColor;\r\n outline-offset: 2px;\r\n}\r\n\r\n:where([mono-date]) > [mono-label] > [mono-label-tooltip] > [mono-icon] {\r\n width: 1em;\r\n height: 1em;\r\n}\r\n\r\n/* =========================================\r\n The field — the bordered box\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/input-group.css .input-group */\r\n/* basecoat@1.0.2 styles/vega.css .input-group — h-9 rounded-md border border-input\r\n shadow-xs focus-within:border-ring focus-within:ring-3 focus-within:ring-ring/50 */\r\n[mono-date] > [mono-field] {\r\n --_mono-date-bc: var(--_mono-date-border-color);\r\n --_mono-date-side-bc: var(--mono-date-side-border-color, var(--_mono-date-side-border-color-preset, var(--_mono-date-bc)));\r\n --_mono-date-ring: 0 0 #0000;\r\n\r\n position: relative;\r\n display: flex;\r\n align-items: center;\r\n width: 100%;\r\n min-width: 0;\r\n min-height: var(--_mono-date-height);\r\n padding-block: var(--mono-date-padding-y, 0);\r\n outline-style: none;\r\n border: var(--mono-border-width) solid var(--_mono-date-bc);\r\n border-top-color: var(--_mono-date-side-bc);\r\n border-inline-color: var(--_mono-date-side-bc);\r\n border-radius: var(--_mono-date-radius);\r\n background: var(--_mono-date-bg);\r\n color: var(--_mono-date-text);\r\n box-shadow: var(--_mono-date-ring), var(--_mono-date-shadow);\r\n transition-property: color, box-shadow, border-color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n\r\n &:focus-within {\r\n --_mono-date-bc: var(--_mono-date-ring-color);\r\n --_mono-date-ring: 0 0 0 var(--_mono-date-ring-width) color-mix(in oklab, var(--_mono-date-ring-color) var(--_mono-date-ring-alpha), transparent);\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group — has-[[aria-invalid=true]]:border-destructive\r\n has-[[aria-invalid=true]]:ring-3 has-[[aria-invalid=true]]:ring-destructive/20 */\r\n[mono-date][mono-validation-state=\"error\"] > [mono-field],\r\n[mono-date] > [mono-field]:has(> [mono-native][aria-invalid=\"true\"]) {\r\n --_mono-date-bc: var(--mono-mode-invalid-border);\r\n --_mono-date-ring: 0 0 0 var(--_mono-date-ring-width) var(--mono-mode-invalid-ring);\r\n}\r\n\r\n/* EXTENSION — success is the invalid pattern in --success */\r\n[mono-date][mono-validation-state=\"success\"] > [mono-field] {\r\n --_mono-date-bc: color-mix(in oklab, var(--_mono-date-success) var(--mono-mode-state-border-alpha), transparent);\r\n --_mono-date-ring: 0 0 0 var(--_mono-date-ring-width) color-mix(in oklab, var(--_mono-date-success) var(--mono-mode-state-ring-alpha), transparent);\r\n}\r\n\r\n/* EXTENSION — readonly: a muted surface */\r\n[mono-date][mono-readonly] > [mono-field] {\r\n background: var(--mono-date-readonly-bg, var(--muted));\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group:has(> :is(input, textarea, select, [data-control]):disabled) — opacity-50 */\r\n[mono-date][mono-disabled] > [mono-field],\r\n[mono-date]:not([mono-readonly]) > [mono-field]:has(> [mono-native]:disabled) {\r\n opacity: 0.5;\r\n cursor: not-allowed;\r\n background: var(--mono-date-disabled-bg, var(--_mono-date-bg));\r\n}\r\n\r\n/* =========================================\r\n The native input (flatpickr's altInput takes the same rule: it replaces the\r\n native in the DOM and inherits its class + attributes)\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 components/input-group.css .input-group > :is(input, textarea, select, [data-control]) */\r\n/* basecoat@1.0.2 styles/vega.css .input-group > :is(input, select, [data-control]) — px-2.5 py-1 text-sm */\r\n[mono-date] [mono-native],\r\n[mono-date] [mono-field] > input.flatpickr-input.altInput {\r\n display: block;\r\n flex: 1 1 auto;\r\n width: 100%;\r\n min-width: 0;\r\n align-self: stretch;\r\n appearance: none;\r\n margin: 0;\r\n border: 0;\r\n border-radius: 0;\r\n outline: none;\r\n background: transparent;\r\n box-shadow: none;\r\n color: var(--_mono-date-text);\r\n font-family: inherit;\r\n font-size: var(--_mono-date-font-size);\r\n line-height: var(--_mono-date-line-height);\r\n padding-inline: var(--_mono-date-padding-x);\r\n padding-block: 0;\r\n\r\n &::placeholder {\r\n color: var(--_mono-date-placeholder);\r\n }\r\n\r\n &:disabled {\r\n pointer-events: none;\r\n cursor: not-allowed;\r\n }\r\n\r\n &:read-only {\r\n cursor: inherit;\r\n }\r\n\r\n &:focus,\r\n &:focus-visible {\r\n outline: none !important;\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group:not([data-orientation='vertical']):has(> :is([data-align='start'], [data-align='inline-start'])) > :is(input, select, [data-control]) — ps-1.5 */\r\n[mono-date] > [mono-field]:has(> [mono-prefix]:not([mono-empty])) > :is([mono-native], input.flatpickr-input.altInput) {\r\n padding-inline-start: var(--mono-date-affix-gap, calc(var(--mono-spacing) * 1.5));\r\n}\r\n[mono-date] > [mono-field]:has(> [mono-clear]) > :is([mono-native], input.flatpickr-input.altInput) {\r\n padding-inline-end: var(--mono-date-affix-gap, calc(var(--mono-spacing) * 1.5));\r\n}\r\n\r\n/* =========================================\r\n The leading icon\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group > :is(span, [role='group'], header, footer), .input-group > :is(svg, kbd, .popover, .dropdown-menu)\r\n — text-muted-foreground select-none, svg size-4; [data-align='start'] ps-2 */\r\n[mono-date] [mono-prefix] {\r\n flex: 0 0 auto;\r\n display: inline-flex;\r\n align-items: center;\r\n padding-inline-start: var(--_mono-date-affix-padding);\r\n color: var(--_mono-date-muted);\r\n user-select: none;\r\n pointer-events: none;\r\n}\r\n\r\n[mono-date] [mono-prefix] > :is(svg, .mono-icon, [mono-icon]) {\r\n display: block;\r\n width: var(--_mono-date-affix-icon);\r\n height: var(--_mono-date-affix-icon);\r\n flex-shrink: 0;\r\n}\r\n\r\n/* =========================================\r\n Clear button — a ghost icon button in the end slot\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .input-group > :is(button, [role='group'] > button, header > button, footer > button):has(> svg):not(:has(> :not(svg)))\r\n — size-6 rounded-[calc(var(--radius)-5px)] p-0 shadow-none, svg size-3.5; me-1 */\r\n[mono-date] [mono-clear] {\r\n flex: 0 0 auto;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: var(--_mono-date-clear);\r\n height: var(--_mono-date-clear);\r\n padding: 0;\r\n margin: 0;\r\n margin-inline-end: var(--mono-spacing);\r\n border: 0;\r\n border-radius: var(--mono-date-clear-radius, calc(var(--radius) - 5px));\r\n background: transparent;\r\n box-shadow: none;\r\n color: var(--_mono-date-muted);\r\n font: inherit;\r\n line-height: 1;\r\n cursor: pointer;\r\n outline-style: none;\r\n transition-property: color, background-color, box-shadow;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n\r\n &:focus-visible {\r\n box-shadow: 0 0 0 var(--_mono-date-ring-width) color-mix(in oklab, var(--_mono-date-ring-color) var(--_mono-date-ring-alpha), transparent);\r\n }\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .btn[data-variant='ghost'] — hover:bg-muted hover:text-foreground */\r\n@media (hover: hover) {\r\n [mono-date] [mono-clear]:hover {\r\n background: var(--mono-mode-ghost-hover);\r\n color: var(--_mono-date-text);\r\n }\r\n}\r\n\r\n[mono-date] [mono-clear] > :is(svg, .mono-icon, [mono-icon]) {\r\n display: block;\r\n width: var(--_mono-date-clear-glyph);\r\n height: var(--_mono-date-clear-glyph);\r\n pointer-events: none;\r\n}\r\n\r\n/* =========================================\r\n Message\r\n ========================================= */\r\n\r\n/* basecoat@1.0.2 styles/vega.css .fieldset legend + p, .field > p, .field section > p */\r\n[mono-date] > [mono-message-wrap] {\r\n display: block;\r\n}\r\n\r\n[mono-date] > [mono-message-wrap]:not(:has([mono-message]:not([mono-empty]))) {\r\n display: none;\r\n}\r\n\r\n[mono-date] [mono-message] {\r\n font-size: var(--mono-date-message-font-size, var(--mono-text-sm));\r\n line-height: var(--mono-date-message-line-height, var(--mono-leading-normal));\r\n font-weight: var(--mono-font-weight-normal);\r\n text-align: start;\r\n color: var(--_mono-date-muted);\r\n}\r\n\r\n/* basecoat@1.0.2 styles/vega.css .field [role=\"alert\"] — text-destructive text-sm */\r\n[mono-date] [mono-message=\"error\"] {\r\n color: var(--_mono-date-danger);\r\n}\r\n\r\n[mono-date] [mono-message=\"success\"] {\r\n color: var(--_mono-date-success);\r\n}\r\n\r\n@media (prefers-reduced-motion: reduce) {\r\n [mono-date] > [mono-field],\r\n [mono-date] [mono-clear] {\r\n transition: none;\r\n }\r\n}\r\n\r\n/* =========================================\r\n flatpickr calendar — restyled in Basecoat's idiom\r\n -----------------------------------------\r\n The calendar renders into <body>, so it reads the page tokens and cannot see\r\n the field's resolvers; the element copies the field's accent onto it as\r\n `--cal-accent` / `--cal-accent-foreground` (inline) so it follows the `color`\r\n prop. Every rule is scoped to our `.mono-flatpickr` marker; flatpickr's own\r\n geometry (day cells, container widths) is kept — only colour, radius,\r\n typography and the frame are ours.\r\n\r\n basecoat@1.0.2 styles/vega.css .select:not(select) [data-popover] — the frame:\r\n bg-popover text-popover-foreground ring-1 ring-foreground/10 rounded-md\r\n shadow-md. EXTENSION: the day / caption / nav values are shadcn's Calendar\r\n (Basecoat 1.0.2 ships no calendar): day size-8 rounded-md text-sm,\r\n hover / today / in-range bg-accent text-accent-foreground, selected\r\n bg-primary text-primary-foreground, outside days text-muted-foreground/50,\r\n caption text-sm font-medium, weekdays text-muted-foreground text-[0.8rem].\r\n ========================================= */\r\n.flatpickr-calendar.mono-flatpickr {\r\n --cal-bg: var(--mono-date-calendar-bg, var(--popover));\r\n --cal-text: var(--mono-date-calendar-color, var(--popover-foreground));\r\n --cal-muted: var(--muted-foreground);\r\n --cal-faint: color-mix(in oklab, var(--muted-foreground) 50%, transparent);\r\n --cal-border: var(--border);\r\n --cal-soft: var(--accent);\r\n --cal-soft-foreground: var(--accent-foreground);\r\n --cal-accent: var(--primary);\r\n --cal-accent-foreground: var(--primary-foreground);\r\n --cal-radius: var(--mono-date-calendar-day-radius, var(--mono-radius-md));\r\n\r\n background: var(--cal-bg);\r\n border: 0;\r\n border-radius: var(--mono-date-calendar-radius, var(--mono-radius-md));\r\n box-shadow: var(--mono-date-calendar-ring, 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent)), var(--mono-date-calendar-shadow, var(--mono-shadow-md));\r\n color: var(--cal-text);\r\n font-family: inherit;\r\n font-size: var(--mono-text-sm);\r\n line-height: var(--mono-text-sm--lh);\r\n}\r\n\r\n/* a popover has no pointer arrow */\r\n.flatpickr-calendar.mono-flatpickr::before,\r\n.flatpickr-calendar.mono-flatpickr::after {\r\n display: none;\r\n}\r\n\r\n/* months / header — text-sm font-medium */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-month,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-current-month,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-current-month input.cur-year {\r\n color: var(--cal-text);\r\n fill: var(--cal-text);\r\n font-size: var(--mono-text-sm);\r\n font-weight: var(--mono-font-weight-medium);\r\n}\r\n\r\n/* nav — .btn[data-variant='outline'][data-size='icon-sm']: size-7 rounded-md\r\n border-border bg-background hover:bg-muted, painted flat here */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-prev-month,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-next-month {\r\n color: var(--cal-muted);\r\n fill: var(--cal-muted);\r\n border-radius: var(--cal-radius);\r\n transition-property: color, background-color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-prev-month svg,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-next-month svg {\r\n fill: currentColor;\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-prev-month:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-next-month:hover {\r\n background: var(--cal-soft);\r\n color: var(--cal-soft-foreground);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-prev-month:hover svg,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-next-month:hover svg {\r\n fill: var(--cal-soft-foreground);\r\n}\r\n\r\n/* month dropdown — a native <select>. Its popup list is drawn by the browser\r\n from the select's OWN background-color and the option colours (a transparent\r\n select falls back to the OS palette, which is what mismatched the dark popover),\r\n so the select carries the popover surface and never changes it on hover. */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-monthDropdown-months {\r\n background: var(--cal-bg);\r\n color: var(--cal-text);\r\n color-scheme: inherit;\r\n font-weight: var(--mono-font-weight-medium);\r\n border-radius: var(--cal-radius);\r\n transition-property: color;\r\n transition-timing-function: var(--mono-ease);\r\n transition-duration: var(--mono-duration);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-monthDropdown-months:hover {\r\n background: var(--cal-bg);\r\n color: var(--cal-accent);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {\r\n background: var(--cal-bg);\r\n color: var(--cal-text);\r\n font-weight: var(--mono-font-weight-normal);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month:checked {\r\n background: var(--cal-soft);\r\n color: var(--cal-soft-foreground);\r\n}\r\n\r\n/* year stepper */\r\n\r\n.flatpickr-calendar.mono-flatpickr .numInputWrapper:hover {\r\n background: var(--cal-soft);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .numInputWrapper span {\r\n border-color: var(--cal-border);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .numInputWrapper span:hover {\r\n background: var(--cal-soft);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .numInputWrapper span.arrowUp::after {\r\n border-bottom-color: var(--cal-muted);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .numInputWrapper span.arrowDown::after {\r\n border-top-color: var(--cal-muted);\r\n}\r\n\r\n/* weekdays — text-muted-foreground text-[0.8rem] font-normal */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-weekdays {\r\n background: transparent;\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr span.flatpickr-weekday {\r\n background: transparent;\r\n color: var(--cal-muted);\r\n font-size: 0.8rem;\r\n font-weight: var(--mono-font-weight-normal);\r\n}\r\n\r\n/* days — rounded-md text-sm; hover bg-accent; today bg-accent; selected bg-primary */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day {\r\n color: var(--cal-text);\r\n border: 1px solid transparent;\r\n border-radius: var(--cal-radius);\r\n font-size: var(--mono-text-sm);\r\n font-weight: var(--mono-font-weight-normal);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day:focus {\r\n background: var(--cal-soft);\r\n border-color: transparent;\r\n color: var(--cal-soft-foreground);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.today {\r\n background: var(--cal-soft);\r\n border-color: transparent;\r\n color: var(--cal-soft-foreground);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.selected,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.startRange,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.endRange,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.selected:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.startRange:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.endRange:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.selected:focus,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.startRange:focus,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.endRange:focus,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.selected.today {\r\n background: var(--cal-accent);\r\n border-color: var(--cal-accent);\r\n color: var(--cal-accent-foreground);\r\n}\r\n\r\n/* range middle — bg-accent, squared between the two ends */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.inRange {\r\n background: var(--cal-soft);\r\n border-color: transparent;\r\n color: var(--cal-soft-foreground);\r\n border-radius: 0;\r\n box-shadow: -5px 0 0 var(--cal-soft), 5px 0 0 var(--cal-soft);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.prevMonthDay,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.nextMonthDay {\r\n color: var(--cal-faint);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.flatpickr-disabled,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-day.flatpickr-disabled:hover {\r\n color: var(--cal-faint);\r\n background: transparent;\r\n cursor: not-allowed;\r\n}\r\n\r\n/* week numbers */\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-weekwrapper .flatpickr-weekday,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-weekwrapper span.flatpickr-day {\r\n color: var(--cal-faint);\r\n}\r\n\r\n/* time */\r\n.flatpickr-calendar.mono-flatpickr.hasTime .flatpickr-time {\r\n border-top: 1px solid var(--cal-border);\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time input,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time .flatpickr-time-separator,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time .flatpickr-am-pm {\r\n color: var(--cal-text);\r\n background: transparent;\r\n}\r\n\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time input:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time input:focus,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time .flatpickr-am-pm:hover,\r\n.flatpickr-calendar.mono-flatpickr .flatpickr-time .flatpickr-am-pm:focus {\r\n background: var(--cal-soft);\r\n color: var(--cal-soft-foreground);\r\n}\r\n\r\n/* the inline calendar (`inline`) sits in the page flow, on the field's own surface */\r\n.flatpickr-calendar.mono-flatpickr.inline {\r\n box-shadow: var(--mono-date-calendar-ring, 0 0 0 1px color-mix(in oklab, var(--foreground) 10%, transparent));\r\n}\r\n\r\n/* =========================================\r\n label-position — the slots form/label-position.css reads\r\n (top / notched / left / right; public knobs: --mono-date-label-width,\r\n -label-side-gap, -label-notch-font-size, -label-notch-bg)\r\n ========================================= */\r\n\r\n[mono-date][mono-label-position] {\r\n --_mono-lp-width: var(--mono-date-label-width, auto);\r\n --_mono-lp-gap: var(--mono-date-label-side-gap, calc(var(--mono-spacing) * 3));\r\n --_mono-lp-height: var(--_mono-date-height);\r\n --_mono-lp-box-min: var(--_mono-date-height);\r\n --_mono-lp-padding-x: var(--_mono-date-padding-x);\r\n --_mono-lp-padding-y: 0px;\r\n --_mono-lp-font: var(--mono-date-label-notch-font-size, var(--mono-text-xs));\r\n --_mono-lp-notch-bg: var(--mono-date-label-notch-bg, var(--background));\r\n --_mono-lp-field-bg: var(--_mono-date-bg);\r\n}\r\n";
675
735
 
676
736
  //#endregion
677
737
  //#region src/components/date/mono-date.shadow.ts
@@ -681,7 +741,7 @@ let MonoDateShadow = class MonoDateShadow extends MonoDateCore(LitElement) {
681
741
  this.disableWarning?.("change-in-update");
682
742
  }
683
743
  static {
684
- this.styles = [unsafeCSS(toShadowCss(SHADOW_DATE_CSS, { host: "mono-date" }))];
744
+ this.styles = [unsafeCSS(toShadowCss(SHADOW_DATE_CSS + label_position_css_raw_default + field_tooltip_css_raw_default + field_validation_css_raw_default, { host: "mono-date" }))];
685
745
  }
686
746
  connectedCallback() {
687
747
  super.connectedCallback();
@@ -1,8 +1,8 @@
1
- import { a as __decorate, d as optionalNumberConverter, f as customElement, i as withShadowUtilityStyles, l as defineHybridPropAliases, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration } from "../../hydration-flush-DHrl4_KK.js";
1
+ import { a as __decorate, d as optionalNumberConverter, f as customElement, i as withShadowUtilityStyles, l as defineHybridPropAliases, r as toShadowCss, s as booleanStringConverter, t as flushSsrHydration } from "../../hydration-flush-9AJE8FRl.js";
2
2
  import { t as dispatchMonoEvent } from "../../mono-event-BPku9HpS.js";
3
3
  import { n as isBelowBreakpoint, r as resolveAutoFullscreen, t as autoFullscreenConverter } from "../../breakpoints-DllybT82.js";
4
- import { a as unregisterPopupLayer, n as refreshPopupStack, r as registerPopupLayer, t as getOpenPopupLayers } from "../../popup-stack-De05Y-mJ.js";
5
- import { i as pathOwnedBy } from "../../popup-portal-HWhkd7oy.js";
4
+ import { i as registerPopupLayer, o as unregisterPopupLayer, r as refreshPopupStack, t as getOpenPopupLayers } from "../../popup-stack-C64WCuXq.js";
5
+ import { i as pathOwnedBy } from "../../popup-portal-C8ttHDRX.js";
6
6
  import { LitElement, html, isServer, nothing, unsafeCSS } from "lit";
7
7
  import { ref } from "lit/directives/ref.js";
8
8
  import { property, query, state } from "lit/decorators.js";
@@ -399,6 +399,15 @@ const MonoDrawerCore = (superClass) => {
399
399
  this._outsideBound = false;
400
400
  }
401
401
  }
402
+ /**
403
+ * PopupLayer hook — the path lands in this drawer: the host, its render root,
404
+ * or a popup opened from within. The same test `_onOutsideClick` uses; the stack
405
+ * asks it so a dropdown open BELOW this drawer leaves its clicks alone.
406
+ */
407
+ containsEventPath(path) {
408
+ const root = this.renderRoot instanceof Element ? this.renderRoot : null;
409
+ return pathOwnedBy(path, root ? [this, root] : [this]);
410
+ }
402
411
  /** Body-scroll lock is wanted while this drawer is open and `lockScroll` is set. */
403
412
  get lockBodyScroll() {
404
413
  return this.lockScroll;