@flood-md/react 0.2.6 → 0.2.8

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 (85) hide show
  1. package/README.md +42 -1
  2. package/dist/alert-dialog.js +1 -1
  3. package/dist/calendar-period-grid.d.ts +17 -0
  4. package/dist/calendar-period-grid.js +13 -0
  5. package/dist/calendar-value.d.ts +10 -0
  6. package/dist/calendar-value.js +48 -0
  7. package/dist/calendar.d.ts +21 -0
  8. package/dist/calendar.js +259 -0
  9. package/dist/checkbox.js +1 -1
  10. package/dist/choice-group.js +1 -1
  11. package/dist/collection-cards.d.ts +4 -0
  12. package/dist/collection-cards.js +21 -0
  13. package/dist/color-controls.d.ts +5 -0
  14. package/dist/color-controls.js +110 -0
  15. package/dist/combobox.js +22 -13
  16. package/dist/command-list.d.ts +3 -0
  17. package/dist/command-list.js +93 -0
  18. package/dist/content-elements.js +7 -7
  19. package/dist/context-menu.d.ts +2 -0
  20. package/dist/context-menu.js +76 -0
  21. package/dist/data-display.js +2 -2
  22. package/dist/data-table.d.ts +2 -0
  23. package/dist/data-table.js +58 -0
  24. package/dist/date-field.d.ts +2 -0
  25. package/dist/date-field.js +172 -0
  26. package/dist/date-picker.d.ts +3 -0
  27. package/dist/date-picker.js +108 -0
  28. package/dist/date-range-field.d.ts +3 -0
  29. package/dist/date-range-field.js +84 -0
  30. package/dist/date-range-picker.d.ts +2 -0
  31. package/dist/date-range-picker.js +81 -0
  32. package/dist/date-range-value.d.ts +8 -0
  33. package/dist/date-range-value.js +13 -0
  34. package/dist/date-time-picker.d.ts +3 -0
  35. package/dist/date-time-picker.js +31 -0
  36. package/dist/date-time-range-picker.d.ts +2 -0
  37. package/dist/date-time-range-picker.js +51 -0
  38. package/dist/date-value.d.ts +10 -0
  39. package/dist/date-value.js +31 -0
  40. package/dist/disclosure.js +1 -1
  41. package/dist/editable.d.ts +3 -0
  42. package/dist/editable.js +135 -0
  43. package/dist/error-summary.d.ts +3 -0
  44. package/dist/error-summary.js +39 -0
  45. package/dist/feedback-actions.js +2 -2
  46. package/dist/feedback.js +2 -2
  47. package/dist/file-input.js +1 -1
  48. package/dist/file-records.d.ts +5 -0
  49. package/dist/file-records.js +55 -0
  50. package/dist/form-controls.js +25 -13
  51. package/dist/foundations.css +387 -1
  52. package/dist/hover-card.d.ts +3 -0
  53. package/dist/hover-card.js +144 -0
  54. package/dist/index.d.ts +661 -2
  55. package/dist/index.js +190 -86
  56. package/dist/menu.d.ts +27 -1
  57. package/dist/menu.js +327 -89
  58. package/dist/navigation-layout.js +6 -6
  59. package/dist/navigation-tree.d.ts +3 -0
  60. package/dist/navigation-tree.js +98 -0
  61. package/dist/navigation.js +3 -3
  62. package/dist/numeric-input.js +1 -1
  63. package/dist/overlays.js +11 -10
  64. package/dist/range-calendar.d.ts +2 -0
  65. package/dist/range-calendar.js +35 -0
  66. package/dist/resizable-panels.d.ts +3 -0
  67. package/dist/resizable-panels.js +205 -0
  68. package/dist/scroll-area.js +1 -1
  69. package/dist/select.js +1 -1
  70. package/dist/slider.js +1 -1
  71. package/dist/tag-input.d.ts +3 -0
  72. package/dist/tag-input.js +181 -0
  73. package/dist/text-inputs.js +2 -2
  74. package/dist/time-field.d.ts +2 -0
  75. package/dist/time-field.js +176 -0
  76. package/dist/time-picker.d.ts +2 -0
  77. package/dist/time-picker.js +83 -0
  78. package/dist/time-value.d.ts +12 -0
  79. package/dist/time-value.js +36 -0
  80. package/dist/toolbar.js +1 -1
  81. package/dist/tree-select.d.ts +3 -0
  82. package/dist/tree-select.js +113 -0
  83. package/dist/tree.d.ts +3 -0
  84. package/dist/tree.js +206 -0
  85. package/package.json +2 -2
@@ -12,7 +12,7 @@
12
12
  .flood-root .flood-list[data-marker="false"] { list-style: none; padding: 0; }
13
13
  .flood-root .flood-empty-state { box-sizing: border-box; align-items: center; text-align: center; padding-block: var(--flood-sys-space-8); padding-inline: min(var(--flood-sys-space-8), 8%); }
14
14
  .flood-root .flood-empty-state[data-density="compact"] { padding-block: var(--flood-sys-space-6); padding-inline: min(var(--flood-sys-space-6), 8%); }
15
- .flood-root .flood-empty-state__icon { padding: var(--flood-sys-space-3); border-radius: var(--flood-sys-radius-action); background: var(--flood-sys-color-surface-default); }
15
+ .flood-root .flood-empty-state__icon { display:grid; place-items:center; flex:none; padding: var(--flood-sys-space-3); border-radius: var(--flood-sys-radius-action); background: var(--flood-sys-color-surface-default); }
16
16
  .flood-root .flood-empty-state__actions { justify-content: center; }
17
17
  .flood-root :is(.flood-container, .flood-grid, .flood-aspect-ratio, .flood-list, .flood-image, .flood-empty-state)[hidden] { display: none; }
18
18
 
@@ -49,6 +49,8 @@
49
49
  .flood-root .flood-menu__icon { display: inline-flex; align-items: center; justify-content: center; flex: none; inline-size: var(--flood-control-icon); block-size: var(--flood-control-icon); }
50
50
  .flood-root .flood-menu__icon > svg { inline-size: 100%; block-size: 100%; }
51
51
  .flood-root .flood-menu__label { min-inline-size: 0; overflow-wrap: anywhere; }
52
+ .flood-root .flood-menu__indicator { margin-inline-start: auto; }
53
+ .flood-root .flood-menu__group-label { padding: var(--flood-sys-space-2) var(--flood-sys-space-3) var(--flood-sys-space-1); color: var(--flood-sys-color-content-subtle); font-size: var(--flood-sys-type-helper-size); line-height: var(--flood-sys-type-helper-line-height); }
52
54
  .flood-root .flood-menu__shortcut { margin-inline-start: auto; flex: none; color: var(--flood-sys-color-content-subtle); font-size: var(--flood-sys-type-helper-size); white-space: nowrap; }
53
55
  .flood-root .flood-menu__separator { block-size: var(--flood-sys-stroke-width); margin: var(--flood-sys-space-1) var(--flood-sys-space-2); background: var(--flood-sys-color-divider-decorative); }
54
56
  @media (forced-colors: active) {
@@ -209,6 +211,7 @@
209
211
  .flood-root .flood-overlay-close { flex: none; align-self: flex-start; }
210
212
  .flood-root .flood-overlay-title { margin: 0; min-inline-size: 0; font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); font-weight: var(--flood-sys-type-label-weight); overflow-wrap: anywhere; }
211
213
  .flood-root .flood-overlay-body { margin-block-start: var(--flood-sys-space-3); font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); }
214
+ .flood-root .flood-popover[data-chrome="minimal"] > .flood-overlay-body { margin-block-start:0; }
212
215
  .flood-root .flood-overlay-description { margin: var(--flood-sys-space-2) 0 0; color: var(--flood-sys-color-content-subtle); font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); }
213
216
  .flood-root .flood-dialog { padding: var(--flood-sys-space-6); inline-size: min(32rem, calc(100% - var(--flood-sys-space-8))); max-inline-size: calc(100% - var(--flood-sys-space-8)); max-block-size: calc(100dvh - var(--flood-sys-space-8)); overflow: auto; }
214
217
  .flood-root .flood-dialog:not([open]) { display: none; }
@@ -1056,6 +1059,11 @@
1056
1059
  .flood-root .flood-list-box-field, .flood-root .flood-pin-input-field { min-inline-size: 0; max-inline-size: 100%; }
1057
1060
  .flood-root .flood-list-box { box-sizing: border-box; max-block-size: 16rem; overflow: auto; scrollbar-width: thin; scrollbar-color: var(--flood-sys-color-content-subtle) transparent; min-inline-size: 0; padding: var(--flood-sys-space-1); border: var(--flood-sys-stroke-width) solid var(--flood-sys-color-field-border); border-radius: var(--flood-sys-radius-field); background: var(--flood-sys-color-field-background); }
1058
1061
  .flood-root .flood-list-box:focus-visible { outline: var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset: calc(-1 * var(--flood-sys-focus-width)); }
1062
+ .flood-root .flood-list-box-field { position:relative; }
1063
+ .flood-root .flood-list-box[data-status] { border-color:var(--flood-field-feedback); }
1064
+ .flood-root .flood-list-box[aria-readonly="true"][data-appearance="surface"] { background:var(--flood-sys-color-surface-canvas); border-style:dashed; }
1065
+ .flood-root .flood-list-box__feedback { margin-block-start:var(--flood-sys-space-1); }
1066
+ .flood-root .flood-list-box[data-appearance="plain"] { max-block-size:none; overflow:visible; padding:0; border:0; border-radius:0; background:transparent; }
1059
1067
  .flood-root .flood-list-box__option { display: flex; align-items: center; justify-content: space-between; gap: var(--flood-sys-space-2); padding: var(--flood-sys-space-2) var(--flood-sys-space-3); min-block-size: var(--flood-control-height); box-sizing: border-box; border-radius: max(0px, calc(var(--flood-sys-radius-field) - var(--flood-sys-space-1) - var(--flood-sys-stroke-width))); cursor: pointer; font-size: var(--flood-control-text); line-height: var(--flood-control-line); }
1060
1068
  .flood-root .flood-list-box__copy { display: grid; min-inline-size: 0; gap: var(--flood-sys-space-1); overflow-wrap: anywhere; }
1061
1069
  .flood-root .flood-list-box__description { color: var(--flood-sys-color-content-subtle); font-size: var(--flood-sys-type-helper-size); line-height: var(--flood-sys-type-helper-line-height); }
@@ -1128,3 +1136,381 @@
1128
1136
  .flood-root .flood-toast[data-status="info"] .flood-toast__title::before { background: var(--flood-sys-color-feedback-info); }
1129
1137
  .flood-root .flood-toast__action { grid-column: 1 / -1; justify-self: start; }
1130
1138
  @media (forced-colors: active) { .flood-root .flood-toast { background: Canvas; color: CanvasText; border-color: CanvasText; box-shadow: none; } }
1139
+
1140
+ .flood-root .flood-editable { display: grid; gap: var(--flood-sys-space-1); min-inline-size: 0; inline-size: 100%; }
1141
+ .flood-root .flood-editable[hidden] { display: none; }
1142
+ .flood-root .flood-editable > .flood-label { margin: 0; }
1143
+ .flood-root .flood-editable__preview { justify-content: space-between; min-inline-size: 0; inline-size: 100%; text-align: start; gap: var(--flood-sys-space-2); }
1144
+ .flood-root .flood-editable__value { flex: 1 1 0; min-inline-size: 0; overflow-wrap: anywhere; }
1145
+ .flood-root .flood-editable__value[data-empty] { color: var(--flood-sys-color-content-subtle); }
1146
+ .flood-root .flood-editable__preview > .flood-icon { flex: none; color: var(--flood-sys-color-content-subtle); }
1147
+ .flood-root .flood-editable .flood-input-group:has(.flood-editable__actions) { padding-inline-end: calc(var(--flood-group-inset) - var(--flood-group-stroke)); }
1148
+ .flood-root .flood-editable__actions { display: inline-flex; align-items: center; gap: var(--flood-sys-space-1); flex: none; }
1149
+ .flood-root .flood-editable__actions > .flood-button { --flood-control-height: calc(var(--flood-group-height) - 2 * var(--flood-group-inset)); min-inline-size: var(--flood-control-height); flex: none; border-radius: max(0px, calc(var(--flood-sys-radius-field) - var(--flood-group-inset))); }
1150
+ @media (forced-colors: active) { .flood-root .flood-editable__value[data-empty] { color: CanvasText; } }
1151
+
1152
+ .flood-root .flood-tag-input { display: grid; gap: var(--flood-sys-space-1); min-inline-size: 0; }
1153
+ .flood-root .flood-tag-input[hidden] { display: none; }
1154
+ .flood-root .flood-tag-input__control { gap: var(--flood-sys-space-1); padding: calc(var(--flood-group-inset) - var(--flood-group-stroke)); }
1155
+ .flood-root .flood-tag-input__control > .flood-tag { --flood-tag-height: calc(var(--flood-group-height) - 2 * var(--flood-group-inset)); border-radius: max(0px, calc(var(--flood-sys-radius-field) - var(--flood-group-inset))); font-size: var(--flood-control-text); line-height: var(--flood-control-line); }
1156
+ .flood-root .flood-tag-input__control > .flood-input { flex-basis: 6rem; padding-inline: var(--flood-sys-space-2); }
1157
+ .flood-root .flood-tag-input__control > .flood-input:focus-visible { padding-inline: var(--flood-sys-space-2); }
1158
+ .flood-root .flood-tag-input__control:has(> .flood-input:disabled) { background: var(--flood-sys-color-field-disabled); color: var(--flood-sys-color-field-disabled-content); }
1159
+ .flood-root .flood-tag-input__control:has(> .flood-input:disabled) > .flood-tag { color: var(--flood-sys-color-content-subtle); }
1160
+
1161
+ .flood-root .flood-command-list { display: grid; min-inline-size: 0; gap: var(--flood-sys-space-1); }
1162
+ .flood-root .flood-command-list[hidden] { display: none; }
1163
+ .flood-root .flood-command-list > .flood-command-list__surface { border: var(--flood-sys-stroke-width) solid var(--flood-sys-color-border-decorative); border-radius: var(--flood-sys-radius-field); }
1164
+ .flood-root .flood-command-list__viewport { border-radius: max(0px, calc(var(--flood-sys-radius-field) - var(--flood-sys-space-1) - var(--flood-sys-stroke-width))); }
1165
+ .flood-root .flood-command-list__option { box-sizing: border-box; display: grid; align-content: center; min-inline-size: 0; min-block-size: var(--flood-control-height); padding: var(--flood-sys-space-2) var(--flood-sys-space-3); gap: calc(var(--flood-sys-space-1) / 2); border-radius: max(0px, calc(var(--flood-sys-radius-field) - var(--flood-sys-space-1) - var(--flood-sys-stroke-width))); color: var(--flood-sys-color-content-default); font-size: var(--flood-control-text); line-height: var(--flood-control-line); overflow-wrap: anywhere; cursor: pointer; }
1166
+ .flood-root .flood-command-list__option[data-active="true"] { background: var(--flood-sys-color-selection-background); color: var(--flood-sys-color-selection-content); }
1167
+ .flood-root .flood-command-list__description { font-size: var(--flood-sys-type-helper-size); line-height: var(--flood-sys-type-helper-line-height); color: var(--flood-sys-color-content-subtle); }
1168
+ .flood-root .flood-command-list__option[aria-disabled="true"], .flood-root .flood-command-list__option[aria-disabled="true"] .flood-command-list__description { color: var(--flood-sys-color-field-disabled-content); cursor: default; }
1169
+ .flood-root .flood-command-list__group-label { padding: var(--flood-sys-space-2) var(--flood-sys-space-3) var(--flood-sys-space-1); }
1170
+ .flood-root .flood-command-list__group + .flood-command-list__group { margin-block-start: var(--flood-sys-space-1); }
1171
+ .flood-root .flood-command-list__empty { padding: var(--flood-sys-space-4) var(--flood-sys-space-3); }
1172
+ @media (pointer: coarse) { .flood-root .flood-command-list__option { min-block-size: max(var(--flood-control-height), var(--flood-sys-size-touch)); } }
1173
+ @media (forced-colors: active) {
1174
+ .flood-root .flood-command-list > .flood-command-list__surface { border-color: CanvasText; }
1175
+ .flood-root .flood-command-list__option[data-active="true"] { background: Highlight; color: HighlightText; }
1176
+ .flood-root .flood-command-list__option[data-active="true"] .flood-command-list__description { color: inherit; }
1177
+ .flood-root .flood-command-list__option[aria-disabled="true"], .flood-root .flood-command-list__option[aria-disabled="true"] .flood-command-list__description { color: GrayText; }
1178
+ }
1179
+
1180
+ .flood-root .flood-date-field { display:grid; gap:var(--flood-sys-space-1); min-inline-size:0; inline-size:100%; container-type:inline-size; container-name:flood-date; }
1181
+ .flood-root .flood-date-field[hidden] { display:none; }
1182
+ .flood-root .flood-date-field > .flood-label { margin:0; }
1183
+ .flood-root .flood-date-field__control { --flood-date-stroke:var(--flood-sys-stroke-width); box-sizing:border-box; display:flex; align-items:center; justify-content:flex-start; min-inline-size:0; inline-size:100%; min-block-size:var(--flood-control-height); padding-inline:calc(var(--flood-control-padding) - var(--flood-date-stroke)); border:var(--flood-date-stroke) solid var(--flood-sys-color-field-border); border-radius:var(--flood-sys-radius-field); background:var(--flood-sys-color-field-background); color:var(--flood-sys-color-field-content); }
1184
+ .flood-root .flood-date-field__part { display:inline-flex; align-items:center; min-inline-size:0; flex:0 1 auto; }
1185
+ .flood-root .flood-date-field__segment { box-sizing:content-box; appearance:none; min-inline-size:0; inline-size:max(2.5ch,2em); padding:var(--flood-sys-space-1) 0; margin:0; border:0; border-radius:0; outline:none; background:transparent; color:inherit; font:inherit; font-size:var(--flood-control-text); line-height:var(--flood-control-line); font-variant-numeric:tabular-nums; text-align:center; }
1186
+ .flood-root .flood-date-field__segment[data-segment="year"] { inline-size:max(4.5ch,3em); }
1187
+ .flood-root .flood-date-field__segment::placeholder { color:var(--flood-sys-color-field-placeholder); opacity:1; }
1188
+ .flood-root .flood-date-field__separator { padding-inline:var(--flood-sys-space-1); color:var(--flood-sys-color-content-subtle); font-size:var(--flood-control-text); line-height:var(--flood-control-line); }
1189
+ .flood-root .flood-date-field__control:has(> .flood-date-field__end) { --flood-date-height:var(--flood-control-height); padding-inline-end:calc(var(--flood-sys-space-1) - var(--flood-date-stroke)); }
1190
+ .flood-root .flood-date-field__end { --flood-date-end-size:calc(var(--flood-date-height) - 2 * var(--flood-sys-space-1)); display:flex; align-items:center; margin-inline-start:auto; flex:none; }
1191
+ .flood-root .flood-date-field__end > .flood-button { --flood-control-height:var(--flood-date-end-size); }
1192
+ .flood-root .flood-date-field__control:has(.flood-date-field__segment:focus-visible) { --flood-date-stroke:var(--flood-sys-focus-width); border-color:var(--flood-sys-color-focus-ring); }
1193
+ .flood-root .flood-date-field__control[data-status] { border-color:var(--flood-field-feedback); }
1194
+ .flood-root .flood-date-field__control[data-status="error"] { --flood-field-feedback:var(--flood-sys-color-feedback-error); }
1195
+ .flood-root .flood-date-field__control[data-status="warning"] { --flood-field-feedback:var(--flood-sys-color-feedback-warning); }
1196
+ .flood-root .flood-date-field__control[data-status="success"] { --flood-field-feedback:var(--flood-sys-color-feedback-success); }
1197
+ .flood-root .flood-date-field__control[data-status="info"] { --flood-field-feedback:var(--flood-sys-color-feedback-info); }
1198
+ .flood-root .flood-date-field__control[data-readonly] { background:var(--flood-sys-color-surface-canvas); border-style:dashed; }
1199
+ .flood-root .flood-date-field__control:has(.flood-date-field__segment:focus-visible) { border-color:var(--flood-sys-color-focus-ring); border-style:solid; }
1200
+ .flood-root .flood-date-field__control[data-disabled] { background:var(--flood-sys-color-field-disabled); color:var(--flood-sys-color-field-disabled-content); border-color:var(--flood-sys-color-field-border); }
1201
+ .flood-root .flood-date-field__description,.flood-root .flood-date-field__error { font-size:var(--flood-sys-type-helper-size); line-height:var(--flood-sys-type-helper-line-height); }
1202
+ .flood-root .flood-date-field__description { color:var(--flood-sys-color-content-subtle); }
1203
+ .flood-root .flood-date-field__error { color:var(--flood-sys-color-feedback-error); }
1204
+ @media (pointer:coarse) {
1205
+ .flood-root .flood-date-field__end { --flood-date-end-size:var(--flood-sys-size-touch); }
1206
+ .flood-root .flood-date-field__control { min-block-size:max(var(--flood-control-height),calc(var(--flood-sys-size-touch) + 2 * var(--flood-sys-focus-width))); padding-block:calc(var(--flood-sys-focus-width) - var(--flood-date-stroke)); padding-inline:calc(var(--flood-sys-space-1) - var(--flood-date-stroke)); }
1207
+ .flood-root .flood-date-field__segment { min-block-size:var(--flood-sys-size-touch); min-inline-size:var(--flood-sys-size-touch); padding-block:0; }
1208
+ @container flood-date (max-width:14rem) {
1209
+ .flood-root .flood-date-field__part { position:relative; flex:0 0 auto; }
1210
+ .flood-root .flood-date-field__separator { position:absolute; inset-inline-start:-.25em; inline-size:.5em; padding:0; text-align:center; pointer-events:none; }
1211
+ }
1212
+ @container flood-date (max-width:9rem) {
1213
+ .flood-root .flood-date-field__control { flex-wrap:wrap; padding-inline:calc(var(--flood-sys-focus-width) - var(--flood-date-stroke)); }
1214
+ }
1215
+ }
1216
+ @media (forced-colors:active) { .flood-root .flood-date-field__control { border-color:CanvasText; background:Canvas; color:CanvasText; } .flood-root .flood-date-field__control:has(.flood-date-field__segment:focus-visible) { border-color:Highlight; } .flood-root .flood-date-field__control[data-disabled] { border-color:GrayText; color:GrayText; } .flood-root .flood-date-field__separator,.flood-root .flood-date-field__error { color:CanvasText; } }
1217
+
1218
+ .flood-root .flood-time-field { display: grid; gap: var(--flood-sys-space-1); min-inline-size: 0; inline-size: 100%; }
1219
+ .flood-root .flood-time-field[hidden] { display: none; }
1220
+ .flood-root .flood-time-field > .flood-label { margin: 0; }
1221
+ .flood-root .flood-time-field__control { --flood-time-stroke: var(--flood-sys-stroke-width); box-sizing: border-box; display: flex; align-items: center; min-inline-size: 0; inline-size: 100%; min-block-size: var(--flood-control-height); padding-block: calc(var(--flood-sys-space-1) - var(--flood-time-stroke)); padding-inline: calc(var(--flood-control-padding) - var(--flood-time-stroke)); border: var(--flood-time-stroke) solid var(--flood-sys-color-field-border); border-radius: var(--flood-sys-radius-field); background: var(--flood-sys-color-field-background); color: var(--flood-sys-color-field-content); }
1222
+ .flood-root .flood-time-field__part { display: inline-flex; align-items: center; min-inline-size: 0; flex: 0 1 auto; }
1223
+ .flood-root .flood-time-field__segment { appearance: none; box-sizing: border-box; inline-size: max(3ch, 2.25em); min-inline-size: 0; min-block-size: calc(var(--flood-control-height) - 2 * var(--flood-sys-space-1)); margin: 0; padding: 0; border: 0; border-radius: 0; outline: none; background: transparent; color: inherit; font: inherit; font-size: var(--flood-control-text); line-height: var(--flood-control-line); font-variant-numeric: tabular-nums; text-align: center; }
1224
+ .flood-root .flood-time-field__segment::placeholder { color: var(--flood-sys-color-field-placeholder); opacity: 1; }
1225
+ .flood-root .flood-time-field__separator { padding-inline: var(--flood-sys-space-1); color: var(--flood-sys-color-content-subtle); font-size:var(--flood-control-text); line-height:var(--flood-control-line); }
1226
+ .flood-root .flood-time-field__control[data-status] { border-color: var(--flood-field-feedback); }
1227
+ .flood-root .flood-time-field__control[data-readonly] { background: var(--flood-sys-color-surface-canvas); border-style: dashed; }
1228
+ .flood-root .flood-time-field__control:has(.flood-time-field__segment:focus-visible) { --flood-time-stroke: var(--flood-sys-focus-width); border-color: var(--flood-sys-color-focus-ring); border-style: solid; }
1229
+ .flood-root .flood-time-field__control[data-disabled] { border-color: var(--flood-sys-color-field-border); background: var(--flood-sys-color-field-disabled); color: var(--flood-sys-color-field-disabled-content); }
1230
+ .flood-root .flood-time-field__description, .flood-root .flood-time-field__error { font-size: var(--flood-sys-type-helper-size); line-height: var(--flood-sys-type-helper-line-height); }
1231
+ .flood-root .flood-time-field__description { color: var(--flood-sys-color-content-subtle); }
1232
+ .flood-root .flood-time-field__error { color: var(--flood-sys-color-feedback-error); }
1233
+ @media (pointer: coarse) {
1234
+ .flood-root .flood-time-field__control { min-block-size: max(var(--flood-control-height), calc(var(--flood-sys-size-touch) + 2 * var(--flood-sys-space-1))); }
1235
+ .flood-root .flood-time-field__segment { min-inline-size: var(--flood-sys-size-touch); min-block-size: var(--flood-sys-size-touch); }
1236
+ }
1237
+ @media (forced-colors: active) {
1238
+ .flood-root .flood-time-field__control { border-color: CanvasText; background: Canvas; color: CanvasText; }
1239
+ .flood-root .flood-time-field__control:has(.flood-time-field__segment:focus-visible) { border-color: Highlight; }
1240
+ .flood-root .flood-time-field__control[data-disabled] { border-color: GrayText; color: GrayText; }
1241
+ .flood-root .flood-time-field__separator, .flood-root .flood-time-field__error { color: CanvasText; }
1242
+ }
1243
+
1244
+ .flood-root .flood-time-field__control:has(> .flood-time-field__end) { --flood-time-height:var(--flood-control-height); padding-inline-end:calc(var(--flood-sys-space-1) - var(--flood-time-stroke)); }
1245
+ .flood-root .flood-time-field__end { --flood-time-end-size:calc(var(--flood-time-height) - 2 * var(--flood-sys-space-1)); display:flex; align-items:center; flex:none; margin-inline-start:auto; }
1246
+ .flood-root .flood-time-field__end > .flood-button { --flood-control-height:var(--flood-time-end-size); }
1247
+ @media (pointer:coarse) { .flood-root .flood-time-field__control:has(> .flood-time-field__end) { --flood-time-height:max(var(--flood-control-height),calc(var(--flood-sys-size-touch) + 2 * var(--flood-sys-space-1))); } }
1248
+
1249
+ .flood-root .flood-calendar { box-sizing:border-box; display:grid; gap:var(--flood-sys-space-2); inline-size:min(100%,22rem); min-inline-size:0; padding:var(--flood-sys-space-4); border:var(--flood-sys-stroke-width) solid var(--flood-sys-color-field-border); border-radius:var(--flood-sys-radius-surface); background:var(--flood-sys-color-surface-raised); color:var(--flood-sys-color-content-default); container-type:inline-size; container-name:flood-calendar; }
1250
+ .flood-root .flood-calendar[hidden] { display:none; }
1251
+ .flood-root .flood-calendar__header { display:flex; align-items:center; justify-content:space-between; gap:var(--flood-sys-space-2); min-inline-size:0; }
1252
+ .flood-root .flood-calendar__month { font-size:var(--flood-sys-type-label-size); line-height:var(--flood-sys-type-label-line-height); font-weight:var(--flood-sys-type-label-weight); overflow-wrap:anywhere; }
1253
+ .flood-root .flood-calendar__month { display:flex; align-items:center; min-inline-size:0; gap:0; }
1254
+ .flood-root .flood-calendar__month > .flood-button { --flood-action-rest:transparent; padding-inline:var(--flood-sys-space-2); min-inline-size:0; }
1255
+ .flood-root .flood-calendar__body { --flood-calendar-cell-height:var(--flood-sys-control-sm-height); min-block-size:calc(6 * var(--flood-calendar-cell-height) + 6 * var(--flood-sys-space-1) + 1.5rem); display:grid; }
1256
+ .flood-root .flood-calendar__periods { grid-template-rows:repeat(4,minmax(0,1fr)); }
1257
+ .flood-root .flood-calendar__period-choice { inline-size:100%; block-size:100%; }
1258
+ .flood-root .flood-calendar__navigation { display:flex; align-items:center; flex:none; gap:var(--flood-sys-space-1); }
1259
+ .flood-root .flood-calendar__navigation .flood-icon { direction:ltr; }
1260
+ .flood-root .flood-calendar[data-calendar-direction="rtl"] .flood-calendar__navigation svg { rotate:180deg; }
1261
+ .flood-root .flood-calendar__grid { display:grid; gap:var(--flood-sys-space-1); min-inline-size:0; }
1262
+ .flood-root .flood-calendar__week { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:var(--flood-sys-space-1); min-inline-size:0; }
1263
+ .flood-root .flood-calendar__weekday { display:flex; justify-content:center; align-items:center; min-inline-size:0; font-size:var(--flood-sys-type-helper-size); line-height:var(--flood-sys-type-helper-line-height); color:var(--flood-sys-color-content-subtle); }
1264
+ .flood-root .flood-calendar__weekday abbr { text-decoration:none; overflow:hidden; text-overflow:ellipsis; }
1265
+ .flood-root .flood-calendar__cell { display:flex; min-inline-size:0; }
1266
+ .flood-root .flood-calendar__day { appearance:none; box-sizing:border-box; display:flex; align-items:center; justify-content:center; inline-size:100%; min-inline-size:0; min-block-size:var(--flood-sys-control-sm-height); padding:0; border:var(--flood-sys-focus-width) solid transparent; border-radius:var(--flood-sys-radius-action); background:transparent; color:inherit; font:inherit; font-size:var(--flood-sys-type-label-size); font-variant-numeric:tabular-nums; line-height:var(--flood-sys-type-label-line-height); cursor:pointer; }
1267
+ .flood-root .flood-calendar__day[data-outside] { color:var(--flood-sys-color-content-subtle); }
1268
+ .flood-root .flood-calendar__day:not(:disabled):not([aria-disabled="true"]):hover { background:var(--flood-sys-color-action-subtle-hover); }
1269
+ .flood-root .flood-calendar__day[data-today]:not([data-selected]) { text-decoration:underline; text-underline-offset:.25em; }
1270
+ .flood-root .flood-calendar__day[data-selected] { background:var(--flood-sys-color-selection-background); color:var(--flood-sys-color-selection-content); }
1271
+ .flood-root .flood-calendar__day:focus-visible { outline:none; border-color:var(--flood-sys-color-focus-ring); }
1272
+ .flood-root .flood-calendar__day[aria-disabled="true"],.flood-root .flood-calendar__day:disabled { color:var(--flood-sys-color-field-disabled-content); cursor:default; }
1273
+ @media(pointer:coarse) {
1274
+ .flood-root .flood-calendar__body { --flood-calendar-cell-height:var(--flood-sys-size-touch); }
1275
+ .flood-root .flood-calendar { padding:var(--flood-sys-space-1); }
1276
+ .flood-root .flood-calendar__week { column-gap:0; }
1277
+ .flood-root .flood-calendar__day { min-block-size:var(--flood-sys-size-touch); }
1278
+ }
1279
+ @container flood-calendar (max-width:14rem) {
1280
+ .flood-root .flood-calendar__header { flex-direction:column; align-items:stretch; gap:var(--flood-sys-space-1); }
1281
+ .flood-root .flood-calendar__navigation { align-self:flex-end; }
1282
+ }
1283
+ @media(forced-colors:active) { .flood-root .flood-calendar { background:Canvas; color:CanvasText; border-color:CanvasText; } .flood-root .flood-calendar__day[data-selected] { background:Highlight; color:HighlightText; forced-color-adjust:none; } .flood-root .flood-calendar__day:focus-visible { border-color:Highlight; } .flood-root .flood-calendar__day[data-selected]:focus-visible { border-color:CanvasText; } .flood-root .flood-calendar__day[aria-disabled="true"],.flood-root .flood-calendar__day:disabled { color:GrayText; } }
1284
+
1285
+ .flood-root .flood-date-picker__panel { inline-size:min(var(--flood-date-picker-width,22rem),var(--flood-overlay-available-width,calc(100dvw - 1rem))); padding:var(--flood-sys-space-3); }
1286
+ .flood-root .flood-date-picker__panel > .flood-overlay-header { display:none; }
1287
+ .flood-root .flood-date-picker__panel > .flood-overlay-body { margin-block-start:0; }
1288
+ .flood-root .flood-date-picker__panel .flood-calendar { inline-size:100%; padding:0; border:0; border-radius:0; background:transparent; }
1289
+
1290
+ .flood-root .flood-error-summary { min-inline-size:0; border-radius:var(--flood-sys-radius-field); }
1291
+ .flood-root .flood-error-summary:focus { outline:var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset:0; }
1292
+ .flood-root .flood-error-summary__title { font-weight:var(--flood-sys-type-label-weight); }
1293
+ .flood-root .flood-error-summary__description { margin-block-start:var(--flood-sys-space-1); }
1294
+ .flood-root .flood-error-summary .flood-error-summary__list { margin-block-start:var(--flood-sys-space-2); margin-block-end:0; }
1295
+ .flood-root .flood-error-summary__list .flood-link { overflow-wrap:anywhere; }
1296
+ @media(forced-colors:active) { .flood-root .flood-error-summary:focus { outline-color:Highlight; } }
1297
+
1298
+ .flood-root .flood-resizable-panels { --flood-resize-track: var(--flood-sys-space-3); box-sizing: border-box; display: grid; min-inline-size: 0; min-block-size: 0; inline-size: 100%; grid-template-columns: minmax(0, var(--flood-main-weight)) var(--flood-resize-track) minmax(0, var(--flood-secondary-weight)); }
1299
+ .flood-root .flood-resizable-panels[hidden] { display: none; }
1300
+ .flood-root .flood-resizable-panels[data-orientation="vertical"] { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, var(--flood-main-weight)) var(--flood-resize-track) minmax(0, var(--flood-secondary-weight)); }
1301
+ .flood-root .flood-resizable-panels__panel { min-inline-size: 0; min-block-size: 0; overflow: hidden; }
1302
+ .flood-root .flood-resizable-panels__separator { position: relative; min-inline-size: 0; min-block-size: var(--flood-sys-size-touch); align-self: stretch; cursor: col-resize; touch-action: none; user-select: none; outline: none; }
1303
+ .flood-root .flood-resizable-panels__separator::before { content: ""; position: absolute; inset-block: var(--flood-sys-space-3); inset-inline-start: calc(50% - var(--flood-sys-stroke-width) / 2); inline-size: var(--flood-sys-stroke-width); background: var(--flood-sys-color-border-decorative); border-radius: var(--flood-sys-radius-action); pointer-events: none; }
1304
+ .flood-root .flood-resizable-panels__separator::after { content:""; position:absolute; inset:50% auto auto 50%; transform:translate(-50%,-50%); inline-size:calc(3 * var(--flood-sys-stroke-width)); block-size:var(--flood-sys-space-6); border-radius:var(--flood-sys-radius-action); background:var(--flood-sys-color-content-subtle); pointer-events:none; }
1305
+ .flood-root .flood-resizable-panels[data-orientation="vertical"] > .flood-resizable-panels__separator::after { inline-size:var(--flood-sys-space-6); block-size:calc(3 * var(--flood-sys-stroke-width)); }
1306
+ .flood-root .flood-resizable-panels[data-orientation="vertical"] > .flood-resizable-panels__separator { min-block-size: 0; min-inline-size: var(--flood-sys-size-touch); cursor: row-resize; }
1307
+ .flood-root .flood-resizable-panels[data-orientation="vertical"] > .flood-resizable-panels__separator::before { inset-inline: var(--flood-sys-space-3); inset-block-start: calc(50% - var(--flood-sys-stroke-width) / 2); inset-block-end: auto; block-size: var(--flood-sys-stroke-width); inline-size: auto; }
1308
+ .flood-root .flood-resizable-panels__separator:focus-visible { outline: var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset: calc(-1 * var(--flood-sys-focus-width)); border-radius: var(--flood-sys-radius-field); }
1309
+ .flood-root .flood-resizable-panels__separator:hover::before, .flood-root .flood-resizable-panels[data-dragging] > .flood-resizable-panels__separator::before { background: var(--flood-sys-color-content-subtle); }
1310
+ .flood-root .flood-resizable-panels__separator:hover::after, .flood-root .flood-resizable-panels[data-dragging] > .flood-resizable-panels__separator::after { background:var(--flood-sys-color-content-default); }
1311
+ .flood-root .flood-resizable-panels[data-disabled] > .flood-resizable-panels__separator { cursor: default; }
1312
+ .flood-root .flood-resizable-panels[data-disabled] > .flood-resizable-panels__separator::before { background: var(--flood-sys-color-border-decorative); }
1313
+ .flood-root .flood-resizable-panels[data-disabled] > .flood-resizable-panels__separator::after { background:var(--flood-sys-color-field-disabled-content); }
1314
+ @media (pointer: coarse) { .flood-root .flood-resizable-panels { --flood-resize-track: var(--flood-sys-size-touch); } }
1315
+ @media (forced-colors: active) {
1316
+ .flood-root .flood-resizable-panels__separator::before, .flood-root .flood-resizable-panels__separator::after { background: CanvasText; }
1317
+ .flood-root .flood-resizable-panels__separator:focus-visible { outline-color: Highlight; }
1318
+ .flood-root .flood-resizable-panels[data-disabled] > .flood-resizable-panels__separator::before, .flood-root .flood-resizable-panels[data-disabled] > .flood-resizable-panels__separator::after { background: GrayText; }
1319
+ }
1320
+
1321
+ .flood-root .flood-range-calendar .flood-calendar__week { column-gap:0; }
1322
+ .flood-root .flood-range-calendar .flood-calendar__cell[data-in-range] { background:var(--flood-sys-color-selection-background); color:var(--flood-sys-color-selection-content); }
1323
+ .flood-root .flood-range-calendar .flood-calendar__cell[data-range-start] { border-start-start-radius:var(--flood-sys-radius-action); border-end-start-radius:var(--flood-sys-radius-action); }
1324
+ .flood-root .flood-range-calendar .flood-calendar__cell[data-range-end] { border-start-end-radius:var(--flood-sys-radius-action); border-end-end-radius:var(--flood-sys-radius-action); }
1325
+ .flood-root .flood-range-calendar .flood-calendar__cell[data-range-preview] { background:var(--flood-sys-color-action-subtle-hover); }
1326
+ .flood-root .flood-range-calendar .flood-calendar__cell[data-in-range]:not([data-range-start]):not([data-range-end]) .flood-calendar__day[data-selected] { background:transparent; }
1327
+ .flood-root .flood-range-calendar .flood-calendar__cell:is([data-range-start],[data-range-end]) .flood-calendar__day { background:var(--flood-sys-color-action-primary-rest); color:var(--flood-sys-color-action-primary-content); }
1328
+ .flood-root .flood-range-calendar .flood-calendar__cell[data-range-unavailable] { outline:var(--flood-sys-stroke-width) dashed var(--flood-sys-color-feedback-error); outline-offset:calc(0px - var(--flood-sys-stroke-width)); }
1329
+ .flood-root .flood-range-calendar__instruction { min-block-size:calc(var(--flood-sys-type-helper-size) * var(--flood-sys-type-helper-line-height)); color:var(--flood-sys-color-content-subtle); font-size:var(--flood-sys-type-helper-size); line-height:var(--flood-sys-type-helper-line-height); }
1330
+ @media(forced-colors:active){.flood-root .flood-range-calendar .flood-calendar__cell:is([data-range-start],[data-range-end]) .flood-calendar__day { background:CanvasText;color:Canvas;forced-color-adjust:none; }.flood-root .flood-range-calendar .flood-calendar__cell:is([data-range-start],[data-range-end]) .flood-calendar__day:focus-visible { border-color:Highlight; }}
1331
+ @media(forced-colors:active){.flood-root .flood-range-calendar .flood-calendar__cell[data-in-range]{background:Highlight;color:HighlightText;forced-color-adjust:none;}.flood-root .flood-range-calendar .flood-calendar__cell[data-range-preview]{background:Canvas;color:CanvasText;outline:1px dashed Highlight;outline-offset:-1px;}.flood-root .flood-range-calendar .flood-calendar__cell[data-range-unavailable]{outline-color:CanvasText;}}
1332
+
1333
+ .flood-root .flood-date-range-field { display:grid; gap:var(--flood-sys-space-1); inline-size:100%; min-inline-size:0; container-type:inline-size; container-name:flood-date-range; }
1334
+ .flood-root .flood-date-range-field[hidden] { display:none; }
1335
+ .flood-root .flood-date-range-field>.flood-label { margin:0; }
1336
+ .flood-root .flood-date-range-field__fields { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:start; gap:var(--flood-sys-space-2); min-inline-size:0; }
1337
+ .flood-root .flood-date-range-field__fields>[data-range-endpoint] { min-inline-size:0; }
1338
+ .flood-root .flood-date-range-field__separator { display:grid; place-items:center; min-block-size:var(--flood-control-height); color:var(--flood-sys-color-content-subtle); font-size:var(--flood-control-text); }
1339
+ .flood-root .flood-date-range-field__description { color:var(--flood-sys-color-content-subtle); font-size:var(--flood-sys-type-helper-size); line-height:var(--flood-sys-type-helper-line-height); }
1340
+ @media(pointer:coarse){.flood-root .flood-date-range-field__separator { min-block-size:max(var(--flood-control-height),calc(var(--flood-sys-size-touch) + 2 * var(--flood-sys-focus-width))); }}
1341
+ @container flood-date-range (max-width:30rem){.flood-root .flood-date-range-field__fields { grid-template-columns:minmax(0,1fr); }.flood-root .flood-date-range-field__separator { display:none; }}
1342
+
1343
+ .flood-root .flood-date-range-picker__panel { inline-size:min(var(--flood-date-range-picker-width,22rem),var(--flood-overlay-available-width,calc(100dvw - 1rem))); padding:var(--flood-sys-space-3); }
1344
+ .flood-root .flood-date-range-picker__panel>.flood-overlay-header { display:none; }
1345
+ .flood-root .flood-date-range-picker__panel>.flood-overlay-body { margin-block-start:0; }
1346
+ .flood-root .flood-date-range-picker__panel .flood-calendar { inline-size:100%; padding:0; border:0; border-radius:0; background:transparent; }
1347
+
1348
+ .flood-root .flood-menu__submenu-indicator { margin-inline-start:auto; }
1349
+ .flood-root .flood-menu[data-menu-direction="rtl"] > .flood-menu__viewport .flood-menu__submenu-indicator svg { rotate:180deg; }
1350
+ .flood-root .flood-overlay-panel.flood-menu--submenu { inline-size:min(15rem,calc(var(--flood-overlay-available-width,100vw - 1rem) / 2)); z-index:var(--flood-sys-layer-popover); }
1351
+ .flood-root .flood-context-menu { min-inline-size:0; }
1352
+ .flood-root .flood-context-menu:focus-visible { outline:var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset:0; border-radius:var(--flood-sys-radius-field); }
1353
+ @media(forced-colors:active) { .flood-root .flood-context-menu:focus-visible { outline-color:Highlight; } }
1354
+
1355
+ .flood-root .flood-tree { display:grid; gap:var(--flood-sys-space-1); min-inline-size:0; inline-size:100%; color:var(--flood-sys-color-content-default); }
1356
+ .flood-root .flood-tree[hidden] { display:none; }
1357
+ .flood-root .flood-tree>.flood-label { margin:0; }
1358
+ .flood-root .flood-tree__viewport,.flood-root .flood-tree__item,.flood-root .flood-tree__group { min-inline-size:0; margin:0; padding:0; outline:none; }
1359
+ .flood-root .flood-tree__viewport { min-block-size:var(--flood-control-height); }
1360
+ .flood-root .flood-tree__branch { position:relative; min-inline-size:0; }
1361
+ .flood-root .flood-tree__row { box-sizing:border-box; display:flex; align-items:center; gap:var(--flood-sys-space-2); min-inline-size:0; min-block-size:var(--flood-control-height); padding-block:var(--flood-sys-space-1); padding-inline-end:var(--flood-sys-space-2); padding-inline-start:calc(var(--flood-sys-space-2) + min(30%,calc(var(--flood-tree-depth) * var(--flood-sys-space-4)))); border:var(--flood-sys-focus-width) solid transparent; border-radius:var(--flood-sys-radius-field); font-size:var(--flood-control-text); line-height:var(--flood-control-line); cursor:default; }
1362
+ .flood-root .flood-tree__row:hover { background:var(--flood-sys-color-action-subtle-hover); }
1363
+ .flood-root .flood-tree__row[data-selected] { background:var(--flood-sys-color-selection-background); color:var(--flood-sys-color-selection-content); }
1364
+ .flood-root .flood-tree__item:focus-visible>.flood-tree__row { border-color:var(--flood-sys-color-focus-ring); }
1365
+ .flood-root .flood-tree__disclosure,.flood-root .flood-tree__icon { display:inline-flex; align-items:center; justify-content:center; flex:none; inline-size:var(--flood-control-icon); block-size:var(--flood-control-icon); color:var(--flood-sys-color-content-subtle); }
1366
+ .flood-root .flood-tree__disclosure[data-tree-toggle] { cursor:pointer; }
1367
+ .flood-root .flood-tree__chevron,.flood-root .flood-tree__icon>svg { display:block; inline-size:100%; block-size:100%; }
1368
+ .flood-root .flood-tree__chevron[data-expanded] { rotate:90deg; }
1369
+ .flood-root .flood-tree[data-tree-direction="rtl"] .flood-tree__chevron:not([data-expanded]) { rotate:180deg; }
1370
+ .flood-root .flood-tree__text { display:grid; gap:var(--flood-sys-space-1); min-inline-size:0; }
1371
+ .flood-root .flood-tree__label { min-inline-size:0; overflow-wrap:anywhere; }
1372
+ .flood-root .flood-tree__description { color:var(--flood-sys-color-content-subtle); font-size:var(--flood-sys-type-helper-size); line-height:var(--flood-sys-type-helper-line-height); overflow-wrap:anywhere; }
1373
+ .flood-root .flood-tree__item[data-disabled]>.flood-tree__row { color:var(--flood-sys-color-field-disabled-content); }
1374
+ .flood-root .flood-tree__item[data-disabled]>.flood-tree__row:hover { background:transparent; }
1375
+ .flood-root .flood-tree__item[data-disabled]>.flood-tree__row .flood-tree__disclosure { cursor:default; }
1376
+ .flood-root .flood-tree__branch-status,.flood-root .flood-tree__empty { padding:var(--flood-sys-space-1) var(--flood-sys-space-2); color:var(--flood-sys-color-content-subtle); font-size:var(--flood-sys-type-helper-size); line-height:var(--flood-sys-type-helper-line-height); }
1377
+ .flood-root .flood-tree__viewport:focus-visible { outline:var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset:var(--flood-sys-focus-offset); border-radius:var(--flood-sys-radius-field); }
1378
+ @media(pointer:coarse){.flood-root .flood-tree__row { min-block-size:max(var(--flood-control-height),var(--flood-sys-size-touch)); }}
1379
+ @media(forced-colors:active){.flood-root .flood-tree__row[data-selected]{background:Highlight;color:HighlightText;forced-color-adjust:none;}.flood-root .flood-tree__item:focus-visible>.flood-tree__row{border-color:Highlight;}.flood-root .flood-tree__item[data-disabled]>.flood-tree__row{color:GrayText;}.flood-root .flood-tree__description,.flood-root .flood-tree__disclosure,.flood-root .flood-tree__icon{color:inherit;}}
1380
+
1381
+ .flood-root .flood-navigation-tree { min-inline-size:0; --flood-navigation-row:var(--flood-sys-control-md-height); --flood-navigation-text:var(--flood-sys-control-md-text-size); --flood-navigation-line:var(--flood-sys-control-md-line-height); --flood-navigation-padding:var(--flood-sys-control-md-padding-inline); }
1382
+ .flood-root .flood-navigation-tree[data-size="sm"] { --flood-navigation-row:var(--flood-sys-control-sm-height); --flood-navigation-text:var(--flood-sys-control-sm-text-size); --flood-navigation-line:var(--flood-sys-control-sm-line-height); --flood-navigation-padding:var(--flood-sys-control-sm-padding-inline); }
1383
+ .flood-root .flood-navigation-tree[data-size="lg"] { --flood-navigation-row:var(--flood-sys-control-lg-height); --flood-navigation-text:var(--flood-sys-control-lg-text-size); --flood-navigation-line:var(--flood-sys-control-lg-line-height); --flood-navigation-padding:var(--flood-sys-control-lg-padding-inline); }
1384
+ .flood-root .flood-navigation-tree ul { list-style:none; padding:0; margin:0; }
1385
+ .flood-root .flood-navigation-tree li { min-inline-size:0; }
1386
+ .flood-root .flood-navigation-tree__row { display:flex; align-items:center; gap:var(--flood-sys-space-1); min-inline-size:0; border-radius:var(--flood-sys-radius-action); }
1387
+ .flood-root .flood-navigation-tree__row[data-current] { background:var(--flood-sys-color-action-on-surface-hover); }
1388
+ .flood-root .flood-navigation-tree__row .flood-navigation-tree__link,
1389
+ .flood-root .flood-navigation-tree__text { display:flex; flex:1; justify-content:flex-start; align-items:center; gap:var(--flood-sys-space-2); min-inline-size:0; min-block-size:var(--flood-navigation-row); box-sizing:border-box; white-space:normal; text-align:start; color:var(--flood-sys-color-content-default); }
1390
+ .flood-root .flood-navigation-tree__text { padding-inline:var(--flood-navigation-padding); font-size:var(--flood-navigation-text); line-height:var(--flood-navigation-line); font-weight:var(--flood-sys-type-control-weight); letter-spacing:var(--flood-sys-type-control-tracking); }
1391
+ .flood-root .flood-navigation-tree__text[aria-disabled] { color:var(--flood-sys-color-field-disabled-content); }
1392
+ .flood-root .flood-navigation-tree__label { overflow-wrap:anywhere; min-inline-size:0; }
1393
+ .flood-root .flood-navigation-tree__row .flood-navigation-tree__disclosure { flex:none; }
1394
+ .flood-root .flood-navigation-tree__disclosure svg { rotate:0deg; }
1395
+ .flood-root .flood-navigation-tree:dir(rtl) .flood-navigation-tree__disclosure svg { rotate:180deg; }
1396
+ .flood-root .flood-navigation-tree__disclosure[aria-expanded="true"] svg { rotate:90deg; }
1397
+ .flood-root .flood-navigation-tree__branch { padding-inline-start:var(--flood-sys-space-4); }
1398
+ .flood-root .flood-navigation-tree__content { padding:var(--flood-sys-space-2) var(--flood-sys-space-3); color:var(--flood-sys-color-content-subtle); font-size:var(--flood-sys-type-helper-size); line-height:var(--flood-sys-type-helper-line-height); }
1399
+ .flood-root .flood-navigation-tree:focus-visible { outline:var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset:0; }
1400
+ @media(pointer:coarse) { .flood-root .flood-navigation-tree__row { min-block-size:var(--flood-sys-size-touch); } .flood-root .flood-navigation-tree__text { min-block-size:var(--flood-sys-size-touch); } }
1401
+ @media(forced-colors:active) { .flood-root .flood-navigation-tree__row[data-current] { outline:1px solid Highlight; } .flood-root .flood-navigation-tree__text[aria-disabled] { color:GrayText; } .flood-root .flood-navigation-tree:focus-visible { outline-color:Highlight; } }
1402
+
1403
+ [data-flood-foundations="neutral"] .flood-date-time-picker { min-inline-size:0; inline-size:100%; }
1404
+ [data-flood-foundations="neutral"] .flood-date-time-picker__fields { display:grid; grid-template-columns:minmax(0, 1.5fr) minmax(0, 1fr); align-items:start; gap:var(--flood-sys-space-3); }
1405
+ @media (max-width:30rem) { [data-flood-foundations="neutral"] .flood-date-time-picker__fields { grid-template-columns:minmax(0,1fr); } }
1406
+
1407
+ .flood-root .flood-hover-card { inline-size: 20rem; }
1408
+ .flood-root .flood-hover-card .flood-overlay-header { align-items: center; gap: var(--flood-sys-space-2); }
1409
+ .flood-root .flood-hover-card .flood-overlay-close { align-self: center; }
1410
+ .flood-root .flood-hover-card__body { margin-block-start: var(--flood-sys-space-2); font-size: var(--flood-sys-type-compact-size); line-height: var(--flood-sys-type-compact-line-height); }
1411
+ .flood-root .flood-hover-card:focus-visible { outline: var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset: 0; }
1412
+
1413
+ .flood-root .flood-color-swatch { display:inline-block; flex:none; box-sizing:border-box; inline-size:2rem; block-size:2rem; border:var(--flood-sys-stroke-width) solid var(--flood-sys-color-border-decorative); border-radius:var(--flood-sys-radius-field); vertical-align:middle; }
1414
+ .flood-root .flood-color-swatch--sm { inline-size:1.5rem; block-size:1.5rem; border-radius:var(--flood-sys-radius-action); }
1415
+ .flood-root .flood-color-swatch--lg { inline-size:3rem; block-size:3rem; }
1416
+ .flood-root .flood-color-picker { display:grid; gap:var(--flood-sys-space-1); min-inline-size:0; inline-size:20rem; max-inline-size:100%; }
1417
+ .flood-root .flood-color-picker[hidden], .flood-root .flood-color-swatch[hidden] { display:none; }
1418
+ .flood-root .flood-color-picker__panel { display:grid; gap:var(--flood-sys-space-4); padding:var(--flood-sys-space-4); border:var(--flood-sys-stroke-width) solid var(--flood-sys-color-border-decorative); border-radius:var(--flood-sys-radius-field); background:var(--flood-sys-color-surface-default); }
1419
+ .flood-root .flood-color-picker__value { display:flex; align-items:center; gap:var(--flood-sys-space-3); min-inline-size:0; }
1420
+ .flood-root .flood-color-picker__hex { display:grid; gap:var(--flood-sys-space-1); flex:1; min-inline-size:0; }
1421
+ .flood-root .flood-color-picker__hex .flood-input { inline-size:100%; font-family:var(--flood-sys-font-mono); }
1422
+ .flood-root .flood-color-picker__empty { display:block; inline-size:3rem; block-size:3rem; flex:none; box-sizing:border-box; border:var(--flood-sys-stroke-width) dashed var(--flood-sys-color-border-decorative); border-radius:var(--flood-sys-radius-field); }
1423
+ .flood-root .flood-color-picker__channels { display:grid; gap:var(--flood-sys-space-2); }
1424
+ .flood-root .flood-color-picker__presets { display:flex; flex-wrap:wrap; gap:var(--flood-sys-space-1); }
1425
+ .flood-root .flood-color-picker__preset { display:grid; place-items:center; padding:var(--flood-sys-space-1); min-inline-size:2rem; min-block-size:2rem; background:transparent; border:var(--flood-sys-stroke-width) solid transparent; border-radius:var(--flood-sys-radius-action); cursor:pointer; }
1426
+ .flood-root .flood-color-picker__preset[aria-pressed="true"] { border-color:var(--flood-sys-color-content-default); }
1427
+ .flood-root .flood-color-picker__preset:focus-visible { outline:var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset:0; }
1428
+ .flood-root .flood-color-picker__preset:disabled { opacity:.5; cursor:not-allowed; }
1429
+ .flood-root .flood-color-picker[data-readonly] .flood-color-picker__preset { cursor:default; }
1430
+ @media (pointer:coarse) { .flood-root .flood-color-picker__preset { min-inline-size:var(--flood-sys-size-touch); min-block-size:var(--flood-sys-size-touch); } }
1431
+
1432
+ .flood-root .flood-tree-select { display:grid; gap:var(--flood-sys-space-1); min-inline-size:0; inline-size:100%; }
1433
+ .flood-root .flood-tree-select[hidden] { display:none; }
1434
+ .flood-root .flood-tree-select>.flood-label { margin:0; }
1435
+ .flood-root .flood-tree-select [data-placeholder] { color:var(--flood-sys-color-field-placeholder); }
1436
+ .flood-root .flood-tree-select [data-readonly]:not(:focus-visible) { background:var(--flood-sys-color-surface-canvas); border-style:dashed; cursor:default; }
1437
+ .flood-root .flood-tree-select__panel { inline-size:min(var(--flood-tree-select-width,22rem),var(--flood-overlay-available-width,calc(100dvw - 1rem))); padding:var(--flood-sys-space-1); }
1438
+ .flood-root .flood-tree-select__panel>.flood-overlay-header { display:none; }
1439
+ .flood-root .flood-tree-select__panel>.flood-overlay-body { margin-block-start:0; }
1440
+ .flood-root .flood-tree-select__scroll { max-block-size:min(22rem,var(--flood-overlay-available-height,60dvh)); }
1441
+ .flood-root .flood-tree-select__panel .flood-tree__row { border-radius:max(0px,calc(var(--flood-sys-radius-field) - var(--flood-sys-space-1) - var(--flood-sys-stroke-width))); }
1442
+ .flood-root .flood-tree-select__validation { color:var(--flood-sys-color-feedback-error); font-size:var(--flood-sys-type-helper-size); line-height:var(--flood-sys-type-helper-line-height); }
1443
+
1444
+ .flood-root .flood-data-list { list-style:none; margin:0; padding:0; inline-size:100%; min-inline-size:0; --flood-data-row-padding:var(--flood-sys-space-4); }
1445
+ .flood-root .flood-data-list[data-density="compact"] { --flood-data-row-padding:var(--flood-sys-space-3); }
1446
+ .flood-root .flood-data-list-item { display:flex; align-items:center; gap:var(--flood-sys-space-3); min-inline-size:0; padding-block:var(--flood-data-row-padding,var(--flood-sys-space-4)); font-size:var(--flood-sys-type-compact-size); line-height:var(--flood-sys-type-compact-line-height); }
1447
+ .flood-root .flood-data-list[data-dividers="true"]>.flood-data-list-item+.flood-data-list-item { border-block-start:var(--flood-sys-stroke-width) solid var(--flood-sys-color-border-decorative); }
1448
+ .flood-root .flood-data-list[hidden],.flood-root .flood-data-list-item[hidden] { display:none; }
1449
+ .flood-root .flood-data-list-item__media { flex:none; display:flex; align-items:center; }
1450
+ .flood-root .flood-data-list-item__copy { flex:1; min-inline-size:0; display:grid; gap:var(--flood-sys-space-1); }
1451
+ .flood-root .flood-data-list-item__title { font-weight:500; overflow-wrap:anywhere; }
1452
+ .flood-root .flood-data-list-item__description { color:var(--flood-sys-color-content-subtle); overflow-wrap:anywhere; }
1453
+ .flood-root .flood-data-list-item__trailing { display:flex; align-items:center; gap:var(--flood-sys-space-3); flex-wrap:wrap; justify-content:flex-end; min-inline-size:0; max-inline-size:50%; }
1454
+ .flood-root .flood-data-list-item__metadata { color:var(--flood-sys-color-content-subtle); font-size:var(--flood-sys-type-helper-size); overflow-wrap:anywhere; }
1455
+ .flood-root .flood-data-list-item__actions { display:flex; align-items:center; gap:var(--flood-sys-space-1); }
1456
+ .flood-root .flood-choice-card { box-sizing:border-box; display:flex; align-items:flex-start; inline-size:100%; min-inline-size:0; gap:var(--flood-sys-space-3); padding:var(--flood-sys-space-4); border:var(--flood-sys-stroke-width) solid var(--flood-sys-color-field-border); border-radius:var(--flood-sys-radius-field); background:var(--flood-sys-color-field-background); cursor:pointer; }
1457
+ .flood-root .flood-choice-card--compact { padding:var(--flood-sys-space-3); }
1458
+ .flood-root .flood-choice-card>input { flex:none; margin-block-start:calc((1em * var(--flood-sys-type-compact-line-height) - var(--flood-sys-size-choice)) / 2); }
1459
+ .flood-root .flood-choice-card>span { flex:1; }
1460
+ .flood-root .flood-choice-card__content { display:flex; align-items:flex-start; gap:var(--flood-sys-space-3); min-inline-size:0; }
1461
+ .flood-root .flood-choice-card__copy { flex:1; min-inline-size:0; display:grid; gap:var(--flood-sys-space-1); }
1462
+ .flood-root .flood-choice-card__title { font-weight:500; overflow-wrap:anywhere; }
1463
+ .flood-root .flood-choice-card__description,.flood-root .flood-choice-card__metadata { color:var(--flood-sys-color-content-subtle); font-weight:400; overflow-wrap:anywhere; }
1464
+ .flood-root .flood-choice-card__metadata { flex:none; max-inline-size:35%; }
1465
+ .flood-root .flood-choice-card__icon { display:flex; align-items:center; color:var(--flood-sys-color-content-subtle); }
1466
+ .flood-root .flood-choice-card:has(input:checked),.flood-root .flood-choice-card:has(input:indeterminate) { background:var(--flood-sys-color-selection-background); }
1467
+ .flood-root .flood-choice-card:has(input:focus-visible) { outline:var(--flood-sys-focus-width) solid var(--flood-sys-color-focus-ring); outline-offset:0; }
1468
+ .flood-root .flood-choice-card input:focus-visible { outline:none; }
1469
+ .flood-root .flood-choice-card:has(input:disabled) { cursor:not-allowed; background:var(--flood-sys-color-field-disabled); }
1470
+ .flood-root .flood-choice-card:has(input[readonly]) { cursor:default; border-style:dashed; }
1471
+ .flood-root .flood-choice-card:has(input:disabled) :is(.flood-choice-card__description,.flood-choice-card__metadata,.flood-choice-card__icon) { color:inherit; }
1472
+ @media(forced-colors:active) { .flood-root .flood-choice-card:has(input:checked) { border-color:Highlight; } .flood-root .flood-choice-card:has(input:disabled) { border-color:GrayText; } }
1473
+
1474
+ @media(max-width:30rem) { .flood-root .flood-data-list-item { flex-wrap:wrap; } .flood-root .flood-data-list-item__trailing { max-inline-size:100%; } }
1475
+
1476
+ .flood-root .flood-data-table { min-inline-size:0; inline-size:100%; }
1477
+ .flood-root .flood-data-table[hidden] { display:none; }
1478
+ .flood-root .flood-data-table thead th[data-sortable] { padding-inline:max(0px,calc(var(--flood-data-padding) - var(--flood-sys-space-2))); }
1479
+ .flood-root .flood-data-table__sort { gap:var(--flood-sys-space-2); min-block-size:var(--flood-sys-control-sm-height); padding-inline:calc(var(--flood-sys-space-2) - var(--flood-sys-stroke-width)); color:inherit; font:inherit; font-weight:500; }
1480
+ .flood-root .flood-data-table__choice { inline-size:1%; white-space:nowrap; }
1481
+ .flood-root .flood-data-table__choice .flood-choice { min-block-size:var(--flood-sys-control-sm-height); }
1482
+ .flood-root .flood-data-table tr[data-selected] { background:var(--flood-sys-color-selection-background); }
1483
+ .flood-root .flood-data-table .flood-data-table__state { padding-block:var(--flood-sys-space-8); text-align:center; }
1484
+ .flood-root .flood-data-table__state>.flood-stack { align-items:center; }
1485
+ .flood-root .flood-data-table__footer { display:flex; align-items:center; flex-wrap:wrap; gap:var(--flood-sys-space-3); padding:var(--flood-sys-space-3) var(--flood-sys-space-4); border-block-start:var(--flood-sys-stroke-width) solid var(--flood-sys-color-border-decorative); background:var(--flood-sys-color-surface-default); border-end-start-radius:var(--flood-sys-radius-field); border-end-end-radius:var(--flood-sys-radius-field); }
1486
+ .flood-root .flood-data-table__footer p { margin:0; }
1487
+ .flood-root .flood-data-table__footer nav { margin-inline-start:auto; max-inline-size:100%; }
1488
+ @media(forced-colors:active) { .flood-root .flood-data-table tr[data-selected] { outline:1px solid Highlight; } }
1489
+
1490
+ .flood-root .flood-file-list { box-sizing:border-box; padding-inline:var(--flood-sys-space-4); border:var(--flood-sys-stroke-width) solid var(--flood-sys-color-border-decorative); border-radius:var(--flood-sys-radius-field); background:var(--flood-sys-color-surface-default); }
1491
+ .flood-root .flood-file-item__thumbnail { display:grid; place-items:center; flex:none; inline-size:var(--flood-sys-control-md-height); block-size:var(--flood-sys-control-md-height); border-radius:var(--flood-sys-radius-action); color:var(--flood-sys-color-content-subtle); overflow:hidden; background:var(--flood-sys-color-field-background); }
1492
+ .flood-root .flood-file-item__thumbnail img { display:block; inline-size:100%; block-size:100%; object-fit:cover; }
1493
+ .flood-root .flood-file-item__name { overflow-wrap:anywhere; }
1494
+ .flood-root .flood-file-item__heading { display:flex; align-items:center; flex-wrap:wrap; gap:var(--flood-sys-space-1) var(--flood-sys-space-2); min-inline-size:0; }
1495
+ .flood-root .flood-file-item__heading>.flood-file-item__name { min-inline-size:0; }
1496
+ .flood-root .flood-file-meta { flex:none; white-space:nowrap; color:var(--flood-sys-color-content-subtle); font-weight:400; }
1497
+ .flood-root .flood-file-item .flood-data-list-item__trailing { flex:none; max-inline-size:none; }
1498
+ .flood-root .flood-upload-item .flood-data-list-item__copy { align-self:center; }
1499
+ .flood-root .flood-upload-item__status-row { display:flex; align-items:center; gap:var(--flood-sys-space-2); min-inline-size:0; }
1500
+ .flood-root .flood-upload-item__status-row[data-progress]>.flood-status-indicator { flex:none; white-space:nowrap; }
1501
+ .flood-root .flood-upload-item .flood-indicator { flex:1; min-inline-size:0; }
1502
+ .flood-root .flood-upload-item .flood-status-indicator { overflow-wrap:anywhere; }
1503
+ .flood-root .flood-image-preview { inline-size:min(56rem,calc(100% - var(--flood-sys-space-8))); }
1504
+ .flood-root .flood-image-preview__figure { margin:0; }
1505
+ .flood-root .flood-image-preview__media { display:grid; place-items:center; min-block-size:12rem; max-inline-size:100%; background:var(--flood-sys-color-surface-canvas); border-radius:var(--flood-sys-radius-field); overflow:hidden; }
1506
+ .flood-root .flood-image-preview__image { grid-area:1/1; inline-size:auto; max-inline-size:100%; max-block-size:60dvh; object-fit:contain; }
1507
+ .flood-root .flood-image-preview__media[data-state="loading"] .flood-image-preview__image { visibility:hidden; }
1508
+ .flood-root .flood-image-preview__media>[role="status"] { grid-area:1/1; }
1509
+ .flood-root .flood-image-preview__caption { margin-block-start:var(--flood-sys-space-2); font-size:var(--flood-sys-type-compact-size); line-height:var(--flood-sys-type-compact-line-height); color:var(--flood-sys-color-content-subtle); }
1510
+ .flood-root .flood-image-preview__actions { display:flex; justify-content:flex-end; margin-block-start:var(--flood-sys-space-4); }
1511
+ @media(max-width:30rem){.flood-root .flood-file-list>.flood-file-item { flex-wrap:nowrap; }.flood-root .flood-file-item__thumbnail{inline-size:var(--flood-sys-control-sm-height);block-size:var(--flood-sys-control-sm-height);}}
1512
+
1513
+ .flood-root .flood-time-picker__panel { inline-size:min(var(--flood-time-picker-width,22rem),var(--flood-overlay-available-width,calc(100dvw - 1rem))); padding:var(--flood-sys-space-1); }
1514
+ .flood-root .flood-time-picker__scroll { max-block-size:min(15rem,calc(var(--flood-overlay-available-height,60dvh) - 1rem)); }
1515
+
1516
+ .flood-root .flood-date-time-range-picker { min-inline-size:0; inline-size:100%; }
@@ -0,0 +1,3 @@
1
+ import type { HoverCardProps } from "./index.js";
2
+ /** A focus-preserving preview; explicit activation pins it for pointer/touch use. */
3
+ export declare const HoverPreview: import("react").ForwardRefExoticComponent<HoverCardProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,144 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { forwardRef, useCallback, useEffect, useId, useImperativeHandle, useLayoutEffect, useRef, useState } from "react";
3
+ import { IconButton } from "./index.js";
4
+ import { positionLayer, registerLayer, returnFocus, tabbables } from "./overlay-runtime.js";
5
+ const useBrowserLayoutEffect = typeof window === "undefined" ? useEffect : useLayoutEffect;
6
+ const delay = (value, fallback) => Number.isFinite(value) ? Math.max(0, value) : fallback;
7
+ /** A focus-preserving preview; explicit activation pins it for pointer/touch use. */
8
+ export const HoverPreview = /* @__PURE__ */ forwardRef(function HoverPreview({ trigger, title, children, open: controlled, defaultOpen = false, onOpenChange, openDelay = 300, closeDelay = 180, side = "bottom", align = "start", disabled = false, closeLabel = "Close preview", id: explicitId, className, onPointerEnter, onPointerLeave, onFocus, onBlur, ...attributes }, forwardedRef) {
9
+ const [local, setLocal] = useState(defaultOpen);
10
+ const open = !disabled && (controlled ?? local);
11
+ const anchor = useRef(null), panel = useRef(null);
12
+ const generated = useId(), id = explicitId ?? `flood-hover-card-${generated}`;
13
+ const timer = useRef(undefined);
14
+ const hovered = useRef(false), overPanel = useRef(false), focused = useRef(false);
15
+ const pinned = useRef(defaultOpen), suppressed = useRef(false), focusRequested = useRef(false);
16
+ const current = useRef({ controlled, onOpenChange, open, disabled });
17
+ useBrowserLayoutEffect(() => { current.current = { controlled, onOpenChange, open, disabled }; });
18
+ const setAnchor = useCallback((element) => { anchor.current = element; }, []);
19
+ useImperativeHandle(forwardedRef, () => panel.current, []);
20
+ const clear = () => { clearTimeout(timer.current); timer.current = undefined; };
21
+ const request = (next) => {
22
+ clear();
23
+ if (next && (current.current.disabled || anchor.current?.matches(":disabled")))
24
+ return;
25
+ if (current.current.controlled === undefined)
26
+ setLocal(next);
27
+ if (current.current.open !== next)
28
+ current.current.onOpenChange?.(next);
29
+ };
30
+ const close = () => { pinned.current = false; suppressed.current = true; focusRequested.current = false; request(false); };
31
+ const latest = useRef({ request, close });
32
+ useBrowserLayoutEffect(() => { latest.current = { request, close }; });
33
+ const leave = () => {
34
+ clear();
35
+ if (hovered.current || overPanel.current || focused.current || pinned.current)
36
+ return;
37
+ suppressed.current = false;
38
+ timer.current = setTimeout(() => latest.current.request(false), delay(closeDelay, 180));
39
+ };
40
+ const enter = (immediate = false) => {
41
+ clear();
42
+ if (suppressed.current || disabled)
43
+ return;
44
+ if (immediate)
45
+ request(true);
46
+ else
47
+ timer.current = setTimeout(() => latest.current.request(true), delay(openDelay, 300));
48
+ };
49
+ useEffect(() => () => clearTimeout(timer.current), []);
50
+ useEffect(() => { if (disabled) {
51
+ clear();
52
+ pinned.current = false;
53
+ suppressed.current = false;
54
+ setLocal(false);
55
+ } }, [disabled]);
56
+ useBrowserLayoutEffect(() => {
57
+ if (!open || !panel.current)
58
+ return;
59
+ const element = panel.current, document = element.ownerDocument, view = document.defaultView;
60
+ let alive = true, frame = 0, unregister = () => { };
61
+ const position = () => {
62
+ if (!alive)
63
+ return;
64
+ if (!anchor.current?.isConnected) {
65
+ latest.current.close();
66
+ return;
67
+ }
68
+ positionLayer(anchor.current, element, side, align);
69
+ frame = view.requestAnimationFrame(position);
70
+ };
71
+ const start = () => {
72
+ if (!alive || !anchor.current?.isConnected)
73
+ return;
74
+ const parent = anchor.current.closest("dialog");
75
+ if (parent && !parent.open) {
76
+ frame = view.requestAnimationFrame(start);
77
+ return;
78
+ }
79
+ if (typeof element.showPopover !== "function")
80
+ throw new Error("Flood HoverCard requires the native Popover API");
81
+ element.style.visibility = "hidden";
82
+ element.showPopover();
83
+ unregister = registerLayer(document, { panel: element, anchor: () => anchor.current, close: () => latest.current.close() });
84
+ position();
85
+ if (focusRequested.current) {
86
+ focusRequested.current = false;
87
+ (tabbables(element)[0] ?? element).focus({ preventScroll: true });
88
+ }
89
+ };
90
+ const toggle = (event) => {
91
+ if (!alive || event.newState !== "closed" || element.matches(":popover-open") || !current.current.open)
92
+ return;
93
+ latest.current.close();
94
+ // A controlled owner may reject dismissal. Keep its rendered state authoritative.
95
+ queueMicrotask(() => { if (alive && current.current.open && element.isConnected && !element.matches(":popover-open")) {
96
+ element.showPopover();
97
+ if (anchor.current)
98
+ positionLayer(anchor.current, element, side, align);
99
+ } });
100
+ };
101
+ element.addEventListener("toggle", toggle);
102
+ start();
103
+ return () => {
104
+ alive = false;
105
+ view.cancelAnimationFrame(frame);
106
+ unregister();
107
+ element.removeEventListener("toggle", toggle);
108
+ returnFocus(element, anchor.current);
109
+ if (element.matches(":popover-open"))
110
+ element.hidePopover();
111
+ };
112
+ }, [open, side, align]);
113
+ const triggerProps = {
114
+ ref: setAnchor, type: "button", disabled, "aria-haspopup": "dialog", "aria-expanded": open, "aria-controls": id,
115
+ onPointerEnter: event => { if (event.pointerType === "touch")
116
+ return; hovered.current = true; enter(); },
117
+ onPointerLeave: () => { hovered.current = false; leave(); },
118
+ onFocus: () => { focused.current = true; enter(true); },
119
+ onBlur: event => { focused.current = Boolean(panel.current?.contains(event.relatedTarget)); leave(); },
120
+ onClick: () => {
121
+ if (pinned.current && open)
122
+ close();
123
+ else {
124
+ suppressed.current = false;
125
+ pinned.current = true;
126
+ request(true);
127
+ }
128
+ },
129
+ onKeyDown: event => {
130
+ if (event.defaultPrevented || event.key !== "ArrowDown" || disabled)
131
+ return;
132
+ event.preventDefault();
133
+ suppressed.current = false;
134
+ pinned.current = true;
135
+ if (open && panel.current)
136
+ (tabbables(panel.current)[0] ?? panel.current).focus({ preventScroll: true });
137
+ else {
138
+ focusRequested.current = true;
139
+ request(true);
140
+ }
141
+ },
142
+ };
143
+ return _jsxs(_Fragment, { children: [trigger(triggerProps), _jsxs("div", { ...attributes, ref: panel, id: id, popover: "manual", role: "dialog", "aria-modal": "false", "aria-labelledby": `${id}-title`, tabIndex: -1, className: ["flood-overlay-panel", "flood-hover-card", className].filter(Boolean).join(" "), onPointerEnter: event => { onPointerEnter?.(event); overPanel.current = true; clear(); }, onPointerLeave: event => { onPointerLeave?.(event); overPanel.current = false; leave(); }, onFocus: event => { onFocus?.(event); focused.current = true; clear(); }, onBlur: event => { onBlur?.(event); const target = event.relatedTarget; focused.current = Boolean(panel.current?.contains(target) || anchor.current?.contains(target)); leave(); }, children: [_jsxs("div", { className: "flood-overlay-header", children: [_jsx("h2", { id: `${id}-title`, className: "flood-overlay-title", children: title }), _jsx(IconButton, { label: closeLabel, size: "xs", variant: "ghost", className: "flood-overlay-close", onClick: close, children: _jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", "aria-hidden": "true", focusable: "false", children: _jsx("path", { d: "m6 6 12 12M18 6 6 18" }) }) })] }), open && _jsx("div", { className: "flood-hover-card__body", children: children })] })] });
144
+ });