@memobit/libs 3.6.0 → 3.8.0

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.
@@ -285,7 +285,7 @@ var H = 3, f = (e) => Array.isArray(e) ? e : e == null || typeof e == "boolean"
285
285
  },
286
286
  options: t,
287
287
  placeholder: e.placeholder,
288
- searchable: e.searchable ?? !1,
288
+ searchable: e.searchable ?? !0,
289
289
  selectedCountDisplay: "inline",
290
290
  usePortal: !1,
291
291
  value: typeof e.value == "boolean" ? null : e.value
@@ -1 +1 @@
1
- .dropdown-container{width:100%;position:relative}.dropdown-container.disabled{cursor:not-allowed;pointer-events:none;opacity:.6}.dropdown-container .dropdown-label{margin-bottom:var(--spacing-8);color:var(--form-control-label-color,var(--body-color));font-size:var(--form-control-label-font-size,var(--font-size-sm));font-weight:var(--form-control-label-font-weight,var(--font-weight-medium));letter-spacing:var(--form-control-label-letter-spacing,normal);text-transform:var(--form-control-label-text-transform,none);display:block}.dropdown-container .dropdown-input-container{--dropdown-actions-space:var(--spacing-48);background-color:var(--dropdown-header-background-color);width:100%;color:var(--dropdown-header-color);position:relative;overflow:hidden;container-type:inline-size}.dropdown-container .dropdown-input-container .input-text{background-color:#0000}.dropdown-container .dropdown-input-container--clearable{--dropdown-actions-space:calc(var(--spacing-80) + var(--spacing-12))}.dropdown-container .dropdown-input-container:not(.dropdown-input-container--chips) input[type=text]{padding-right:var(--dropdown-actions-space);text-overflow:ellipsis}.dropdown-container .dropdown-input-container--has-prefix-icon input[type=text]{padding-left:var(--spacing-40)}.dropdown-container .dropdown-input-container .dropdown-selected-icon{color:var(--dropdown-header-color);align-items:center;display:flex}.dropdown-container .dropdown-input-container .dropdown-selected-icon--prefix{top:50%;left:var(--spacing-12);z-index:1;pointer-events:none;position:absolute;transform:translateY(-50%)}.dropdown-container .dropdown-input-container .dropdown-selected-icon--suffix{padding:0 var(--spacing-4);pointer-events:none}.dropdown-container .dropdown-input-container input[type=text]{transition:border-color .2s ease-in-out,box-shadow .2s ease-in-out}.dropdown-container .dropdown-input-container .dropdown-value-chip{box-sizing:border-box;top:50%;left:var(--spacing-12);z-index:1;align-items:center;gap:var(--spacing-4);padding:var(--spacing-2) var(--spacing-8);border-radius:var(--radius-full);border:var(--spacing-1) solid var(--chip-selected-border-color,var(--body-accent-color));background:var(--chip-selected-background-color,var(--card-background-accent-color));color:var(--chip-selected-color,var(--body-accent-color));font-size:var(--font-size-xs);max-width:calc(100% - var(--spacing-12) - var(--dropdown-actions-space));cursor:pointer;display:inline-flex;position:absolute;transform:translateY(-50%)}.dropdown-container .dropdown-input-container .dropdown-value-chip__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dropdown-container .dropdown-input-container .dropdown-value-chip svg{width:var(--spacing-12);height:var(--spacing-12);flex-shrink:0}.dropdown-container .dropdown-input-container--chips{align-items:center;gap:var(--spacing-4);padding:var(--spacing-4) var(--spacing-80) var(--spacing-4) var(--spacing-8);flex-wrap:nowrap;display:flex;overflow:auto hidden}.dropdown-container .dropdown-input-container--chips::-webkit-scrollbar{height:var(--scrollbar-size)}.dropdown-container .dropdown-input-container--chips .input-text-wrapper{flex:1 1 var(--spacing-80);min-width:var(--spacing-80)}.dropdown-container .dropdown-input-container--chips input[type=text]{padding:var(--spacing-4);border:none}.dropdown-container .dropdown-input-container--chips-multiline{min-height:var(--spacing-40);flex-wrap:wrap;overflow:visible}.dropdown-container .dropdown-input-container--chips-multiline .dropdown-actions-buttons{top:var(--spacing-4);transform:none}.dropdown-container .dropdown-input-container .dropdown-chip{align-items:center;gap:var(--spacing-4);padding:var(--spacing-2) var(--spacing-8);border-radius:var(--radius-full);border:var(--spacing-1) solid var(--chip-selected-border-color,var(--body-accent-color));background:var(--chip-selected-background-color,var(--card-background-accent-color));color:var(--chip-selected-color,var(--body-accent-color));font-size:var(--font-size-xs);flex-shrink:0;max-width:100%;display:inline-flex}.dropdown-container .dropdown-input-container .dropdown-chip__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dropdown-container .dropdown-input-container .dropdown-chip__remove{cursor:pointer;color:inherit;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.dropdown-container .dropdown-input-container .dropdown-chip__remove svg{width:var(--spacing-12);height:var(--spacing-12)}.dropdown-container .dropdown-input-container .dropdown-selected-count{font-size:var(--font-size-xs);color:var(--body-color-muted);pointer-events:none;position:absolute;bottom:-20px;left:0}.dropdown-container .dropdown-input-container .dropdown-actions-buttons{z-index:1;justify-content:center;align-items:center;height:calc(100% - 2px);padding:0 6px;display:flex;position:absolute;top:50%;right:1px;transform:translateY(-50%)}.dropdown-container .dropdown-input-container .dropdown-actions-buttons:before{content:"";opacity:.9;z-index:-1;position:absolute;inset:0}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button{justify-content:center;align-items:center;display:flex}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button button{padding:var(--spacing-8);border-radius:0}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button button span{justify-content:center;align-items:center;display:flex}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button button:hover{background-color:var(--dropdown-action-hover-background-color)}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button button svg{fill:var(--dropdown-action-color)}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button button svg:hover{fill:var(--dropdown-action-hover-color)}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-clear-button:focus{box-shadow:0 0 0 var(--spacing-2) var(--form-control-focus-ring);outline:none}@media (width<=768px){.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-clear-button{width:var(--spacing-40);height:var(--spacing-40);right:var(--spacing-40)}}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-toggle-button button{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-toggle-button svg{width:var(--spacing-16);height:var(--spacing-16);transition:transform .2s ease-in-out}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-toggle-button:focus{box-shadow:inset 0 0 0 var(--spacing-2) var(--form-control-focus-ring);outline:none}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-toggle-button.open svg{transform:rotate(180deg)}.dropdown-container.dropdown-highlighted .dropdown-input-container input[type=text]{border-color:var(--form-control-focus-border-color)}.dropdown-container.dropdown-error .dropdown-input-container{background-color:var(--form-control-error-background-color)}.dropdown-container.dropdown-error .dropdown-input-container input[type=text]{background-color:var(--form-control-error-background-color);border-color:var(--form-control-error-border-color);color:var(--form-control-error-color)}.dropdown-container.dropdown-error .dropdown-input-container input[type=text]:focus{background-color:var(--form-control-error-background-color);border-color:var(--form-control-error-border-color);box-shadow:0 0 0 var(--spacing-2) var(--box-shadow)}.dropdown-container .dropdown-error-message{font-size:var(--font-size-xs);color:var(--form-control-error-color)}.dropdown-container.dropdown-success .dropdown-input-container{background-color:var(--form-control-success-background-color)}.dropdown-container.dropdown-success .dropdown-input-container input[type=text]{background-color:var(--form-control-success-background-color);border-color:var(--form-control-success-border-color);color:var(--form-control-success-color)}.dropdown-container.dropdown-success .dropdown-input-container input[type=text]:focus{background-color:var(--form-control-success-background-color);border-color:var(--form-control-success-border-color);box-shadow:0 0 0 var(--spacing-2) var(--box-shadow)}.dropdown-container .dropdown-success-message{font-size:var(--font-size-xs);color:var(--form-control-success-color)}.dropdown-container.multiple .dropdown-input-container,.dropdown-container.multiple input[type=text]{min-height:var(--spacing-40)}.dropdown-container.multiple .dropdown-input-container--chips input[type=text]{min-height:var(--spacing-24)}.dropdown-container.count-display-floating .dropdown-input-container{overflow:visible}.dropdown-menu{z-index:1000;width:100%;margin-top:var(--spacing-4);background-color:var(--dropdown-options-background-color);color:var(--dropdown-options-color);border:var(--spacing-1) solid var(--dropdown-border-color);border-radius:var(--radius-sm);box-shadow:0 var(--spacing-8) var(--spacing-16) -3px var(--box-shadow), 0 var(--spacing-4) var(--spacing-8) -2px var(--box-shadow);max-height:240px;position:absolute;overflow-y:auto}.dropdown-menu--portal{margin-top:var(--spacing-4)}.dropdown-menu--upward{margin-top:0;margin-bottom:var(--spacing-4);top:auto;bottom:100%}.dropdown-menu::-webkit-scrollbar{width:var(--scrollbar-size)}.dropdown-menu::-webkit-scrollbar-track{background:var(--scrollbar-track-color);border-radius:var(--scrollbar-radius)}.dropdown-menu::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:var(--scrollbar-radius)}.dropdown-menu::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.dropdown-menu .dropdown-options-list{padding:var(--spacing-4) 0;margin:0;list-style:none}.dropdown-menu .dropdown-options-list .dropdown-option{padding:var(--spacing-12) var(--spacing-12);cursor:pointer;border-left:var(--spacing-4) solid transparent;align-items:center;transition:background-color .2s ease-in-out;display:flex}.dropdown-menu .dropdown-options-list .dropdown-option.focused{color:var(--dropdown-options-hover-color);background-color:var(--dropdown-options-hover-background-color);outline:none}.dropdown-menu .dropdown-options-list .dropdown-option.dropdown-option--disabled{opacity:.45;cursor:not-allowed}.dropdown-menu .dropdown-options-list .dropdown-option.dropdown-option--disabled:hover,.dropdown-menu .dropdown-options-list .dropdown-option.dropdown-option--disabled.focused{color:inherit;background-color:#0000}.dropdown-menu .dropdown-options-list .dropdown-option.selected{background-color:var(--dropdown-options-selected-background-color);color:var(--dropdown-options-selected-color)}.dropdown-menu .dropdown-options-list .dropdown-option.selected:hover,.dropdown-menu .dropdown-options-list .dropdown-option.selected.focused{color:var(--dropdown-options-hover-color);background-color:var(--dropdown-options-hover-background-color);opacity:.9}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-checkbox{margin-right:var(--spacing-8);flex-shrink:0}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-checkbox .checkbox{width:var(--spacing-16);height:var(--spacing-16);border:var(--spacing-2) solid var(--form-control-selection-border-color);border-radius:var(--spacing-4);background-color:#0000;justify-content:center;align-items:center;transition:all .2s ease-in-out;display:flex}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-checkbox .checkbox.checked{background-color:var(--form-control-selection-background-color);color:var(--form-control-selection-color)}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-content{flex:1;min-width:0}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-content .dropdown-option-label{align-items:center;gap:var(--spacing-8);min-width:0;display:inline-flex}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-content .dropdown-option-prefix{flex:none;justify-content:center;align-items:center;display:inline-flex}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-content .dropdown-option-details{width:100%;font-size:var(--font-size-xs);margin-top:var(--spacing-2);display:block}@media (width<=768px){.dropdown-menu .dropdown-options-list .dropdown-option{padding:var(--spacing-16) var(--spacing-12)}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-content{font-size:var(--font-size-md)}}.dropdown-menu .dropdown-no-options{padding:var(--spacing-12);text-align:center;font-style:italic}.dropdown-menu .dropdown-options-list .dropdown-option--create{color:var(--body-accent-color);border-top:1px solid var(--delimiter-color);font-weight:var(--font-weight-medium)}@media (width<=768px){.dropdown-menu{max-height:var(--spacing-300)}.dropdown-menu .dropdown-options-list .dropdown-option{min-height:var(--spacing-48)}}@container (width<=160px){.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button.dropdown-clear-button{display:none}.dropdown-container .dropdown-input-container .dropdown-value-chip{max-width:calc(100% - var(--spacing-12) - var(--spacing-48))}.dropdown-container .dropdown-input-container:not(.dropdown-input-container--chips) input[type=text]{padding-right:var(--spacing-48)}}
1
+ .dropdown-container{width:100%;position:relative}.dropdown-container.disabled{cursor:not-allowed;pointer-events:none;opacity:.6}.dropdown-container .dropdown-label{margin-bottom:var(--spacing-8);color:var(--form-control-label-color,var(--body-color));font-size:var(--form-control-label-font-size,var(--font-size-sm));font-weight:var(--form-control-label-font-weight,var(--font-weight-medium));letter-spacing:var(--form-control-label-letter-spacing,normal);text-transform:var(--form-control-label-text-transform,none);display:block}.dropdown-container .dropdown-input-container{--dropdown-actions-space:var(--spacing-48);background-color:var(--dropdown-header-background-color);width:100%;color:var(--dropdown-header-color);position:relative;overflow:hidden;container-type:inline-size}.dropdown-container .dropdown-input-container .input-text{background-color:#0000}.dropdown-container .dropdown-input-container .input-text:read-only:not(:disabled){cursor:pointer}.dropdown-container .dropdown-input-container--clearable{--dropdown-actions-space:calc(var(--spacing-80) + var(--spacing-12))}.dropdown-container .dropdown-input-container:not(.dropdown-input-container--chips) input[type=text]{padding-right:var(--dropdown-actions-space);text-overflow:ellipsis}.dropdown-container .dropdown-input-container--has-prefix-icon input[type=text]{padding-left:var(--spacing-40)}.dropdown-container .dropdown-input-container .dropdown-selected-icon{color:var(--dropdown-header-color);align-items:center;display:flex}.dropdown-container .dropdown-input-container .dropdown-selected-icon--prefix{top:50%;left:var(--spacing-12);z-index:1;pointer-events:none;position:absolute;transform:translateY(-50%)}.dropdown-container .dropdown-input-container .dropdown-selected-icon--suffix{padding:0 var(--spacing-4);pointer-events:none}.dropdown-container .dropdown-input-container input[type=text]{transition:border-color .2s ease-in-out,box-shadow .2s ease-in-out}.dropdown-container .dropdown-input-container .dropdown-value-chip{box-sizing:border-box;top:50%;left:var(--spacing-12);z-index:1;align-items:center;gap:var(--spacing-4);padding:var(--spacing-2) var(--spacing-8);border-radius:var(--radius-full);border:var(--spacing-1) solid var(--chip-selected-border-color,var(--body-accent-color));background:var(--chip-selected-background-color,var(--card-background-accent-color));color:var(--chip-selected-color,var(--body-accent-color));font-size:var(--font-size-xs);max-width:calc(100% - var(--spacing-12) - var(--dropdown-actions-space));cursor:pointer;display:inline-flex;position:absolute;transform:translateY(-50%)}.dropdown-container .dropdown-input-container .dropdown-value-chip__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dropdown-container .dropdown-input-container .dropdown-value-chip svg{width:var(--spacing-12);height:var(--spacing-12);flex-shrink:0}.dropdown-container .dropdown-input-container--chips{align-items:center;gap:var(--spacing-4);padding:var(--spacing-4) var(--spacing-80) var(--spacing-4) var(--spacing-8);flex-wrap:nowrap;display:flex;overflow:auto hidden}.dropdown-container .dropdown-input-container--chips::-webkit-scrollbar{height:var(--scrollbar-size)}.dropdown-container .dropdown-input-container--chips .input-text-wrapper{flex:1 1 var(--spacing-80);min-width:var(--spacing-80)}.dropdown-container .dropdown-input-container--chips input[type=text]{padding:var(--spacing-4);border:none}.dropdown-container .dropdown-input-container--chips-multiline{min-height:var(--spacing-40);flex-wrap:wrap;overflow:visible}.dropdown-container .dropdown-input-container--chips-multiline .dropdown-actions-buttons{top:var(--spacing-4);transform:none}.dropdown-container .dropdown-input-container .dropdown-chip{align-items:center;gap:var(--spacing-4);padding:var(--spacing-2) var(--spacing-8);border-radius:var(--radius-full);border:var(--spacing-1) solid var(--chip-selected-border-color,var(--body-accent-color));background:var(--chip-selected-background-color,var(--card-background-accent-color));color:var(--chip-selected-color,var(--body-accent-color));font-size:var(--font-size-xs);flex-shrink:0;max-width:100%;display:inline-flex}.dropdown-container .dropdown-input-container .dropdown-chip__label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dropdown-container .dropdown-input-container .dropdown-chip__remove{cursor:pointer;color:inherit;background:0 0;border:none;justify-content:center;align-items:center;padding:0;display:flex}.dropdown-container .dropdown-input-container .dropdown-chip__remove svg{width:var(--spacing-12);height:var(--spacing-12)}.dropdown-container .dropdown-input-container .dropdown-selected-count{font-size:var(--font-size-xs);color:var(--body-color-muted);pointer-events:none;position:absolute;bottom:-20px;left:0}.dropdown-container .dropdown-input-container .dropdown-actions-buttons{z-index:1;justify-content:center;align-items:center;height:calc(100% - 2px);padding:0 6px;display:flex;position:absolute;top:50%;right:1px;transform:translateY(-50%)}.dropdown-container .dropdown-input-container .dropdown-actions-buttons:before{content:"";opacity:.9;z-index:-1;position:absolute;inset:0}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button{justify-content:center;align-items:center;display:flex}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button button{padding:var(--spacing-8);border-radius:0}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button button span{justify-content:center;align-items:center;display:flex}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button button:hover{background-color:var(--dropdown-action-hover-background-color)}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button button svg{fill:var(--dropdown-action-color)}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button button svg:hover{fill:var(--dropdown-action-hover-color)}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-clear-button:focus{box-shadow:0 0 0 var(--spacing-2) var(--form-control-focus-ring);outline:none}@media (width<=768px){.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-clear-button{width:var(--spacing-40);height:var(--spacing-40);right:var(--spacing-40)}}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-toggle-button button{border-radius:0 var(--radius-sm) var(--radius-sm) 0}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-toggle-button svg{width:var(--spacing-16);height:var(--spacing-16);transition:transform .2s ease-in-out}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-toggle-button:focus{box-shadow:inset 0 0 0 var(--spacing-2) var(--form-control-focus-ring);outline:none}.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-toggle-button.open svg{transform:rotate(180deg)}.dropdown-container.dropdown-highlighted .dropdown-input-container input[type=text]{border-color:var(--form-control-focus-border-color)}.dropdown-container.dropdown-error .dropdown-input-container{background-color:var(--form-control-error-background-color)}.dropdown-container.dropdown-error .dropdown-input-container input[type=text]{background-color:var(--form-control-error-background-color);border-color:var(--form-control-error-border-color);color:var(--form-control-error-color)}.dropdown-container.dropdown-error .dropdown-input-container input[type=text]:focus{background-color:var(--form-control-error-background-color);border-color:var(--form-control-error-border-color);box-shadow:0 0 0 var(--spacing-2) var(--box-shadow)}.dropdown-container .dropdown-error-message{font-size:var(--font-size-xs);color:var(--form-control-error-color)}.dropdown-container.dropdown-success .dropdown-input-container{background-color:var(--form-control-success-background-color)}.dropdown-container.dropdown-success .dropdown-input-container input[type=text]{background-color:var(--form-control-success-background-color);border-color:var(--form-control-success-border-color);color:var(--form-control-success-color)}.dropdown-container.dropdown-success .dropdown-input-container input[type=text]:focus{background-color:var(--form-control-success-background-color);border-color:var(--form-control-success-border-color);box-shadow:0 0 0 var(--spacing-2) var(--box-shadow)}.dropdown-container .dropdown-success-message{font-size:var(--font-size-xs);color:var(--form-control-success-color)}.dropdown-container.multiple .dropdown-input-container,.dropdown-container.multiple input[type=text]{min-height:var(--spacing-40)}.dropdown-container.multiple .dropdown-input-container--chips input[type=text]{min-height:var(--spacing-24)}.dropdown-container.count-display-floating .dropdown-input-container{overflow:visible}.dropdown-menu{z-index:1000;width:100%;margin-top:var(--spacing-4);background-color:var(--dropdown-options-background-color);color:var(--dropdown-options-color);border:var(--spacing-1) solid var(--dropdown-border-color);border-radius:var(--radius-sm);box-shadow:0 var(--spacing-8) var(--spacing-16) -3px var(--box-shadow), 0 var(--spacing-4) var(--spacing-8) -2px var(--box-shadow);max-height:240px;position:absolute;overflow-y:auto}.dropdown-menu--portal{margin-top:var(--spacing-4)}.dropdown-menu--upward{margin-top:0;margin-bottom:var(--spacing-4);top:auto;bottom:100%}.dropdown-menu::-webkit-scrollbar{width:var(--scrollbar-size)}.dropdown-menu::-webkit-scrollbar-track{background:var(--scrollbar-track-color);border-radius:var(--scrollbar-radius)}.dropdown-menu::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color);border-radius:var(--scrollbar-radius)}.dropdown-menu::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color)}.dropdown-menu .dropdown-options-list{padding:var(--spacing-4) 0;margin:0;list-style:none}.dropdown-menu .dropdown-options-list .dropdown-option{padding:var(--spacing-12) var(--spacing-12);cursor:pointer;border-left:var(--spacing-4) solid transparent;align-items:center;transition:background-color .2s ease-in-out;display:flex}.dropdown-menu .dropdown-options-list .dropdown-option.focused{color:var(--dropdown-options-hover-color);background-color:var(--dropdown-options-hover-background-color);outline:none}.dropdown-menu .dropdown-options-list .dropdown-option.dropdown-option--disabled{opacity:.45;cursor:not-allowed}.dropdown-menu .dropdown-options-list .dropdown-option.dropdown-option--disabled:hover,.dropdown-menu .dropdown-options-list .dropdown-option.dropdown-option--disabled.focused{color:inherit;background-color:#0000}.dropdown-menu .dropdown-options-list .dropdown-option.selected{background-color:var(--dropdown-options-selected-background-color);color:var(--dropdown-options-selected-color)}.dropdown-menu .dropdown-options-list .dropdown-option.selected:hover,.dropdown-menu .dropdown-options-list .dropdown-option.selected.focused{color:var(--dropdown-options-hover-color);background-color:var(--dropdown-options-hover-background-color);opacity:.9}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-checkbox{margin-right:var(--spacing-8);flex-shrink:0}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-checkbox .checkbox{width:var(--spacing-16);height:var(--spacing-16);border:var(--spacing-2) solid var(--form-control-selection-border-color);border-radius:var(--spacing-4);background-color:#0000;justify-content:center;align-items:center;transition:all .2s ease-in-out;display:flex}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-checkbox .checkbox.checked{background-color:var(--form-control-selection-background-color);color:var(--form-control-selection-color)}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-content{flex:1;min-width:0}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-content .dropdown-option-label{align-items:center;gap:var(--spacing-8);min-width:0;display:inline-flex}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-content .dropdown-option-prefix{flex:none;justify-content:center;align-items:center;display:inline-flex}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-content .dropdown-option-details{width:100%;font-size:var(--font-size-xs);margin-top:var(--spacing-2);display:block}@media (width<=768px){.dropdown-menu .dropdown-options-list .dropdown-option{padding:var(--spacing-16) var(--spacing-12)}.dropdown-menu .dropdown-options-list .dropdown-option .dropdown-option-content{font-size:var(--font-size-md)}}.dropdown-menu .dropdown-no-options{padding:var(--spacing-12);text-align:center;font-style:italic}.dropdown-menu .dropdown-options-list .dropdown-option--create{color:var(--body-accent-color);border-top:1px solid var(--delimiter-color);font-weight:var(--font-weight-medium)}@media (width<=768px){.dropdown-menu{max-height:var(--spacing-300)}.dropdown-menu .dropdown-options-list .dropdown-option{min-height:var(--spacing-48)}}@container (width<=160px){.dropdown-container .dropdown-input-container .dropdown-actions-buttons .dropdown-action-button.dropdown-clear-button{display:none}.dropdown-container .dropdown-input-container .dropdown-value-chip{max-width:calc(100% - var(--spacing-12) - var(--spacing-48))}.dropdown-container .dropdown-input-container:not(.dropdown-input-container--chips) input[type=text]{padding-right:var(--spacing-48)}}
@@ -1,40 +1,40 @@
1
1
  import './Dropdown.css';
2
2
  import { Icon as I } from "../Icon/Icon2.js";
3
- import { Button as le } from "../Button/Button2.js";
4
- import { Tooltip as Ae } from "../Tooltip/Tooltip2.js";
5
- import { InputText as Ce } from "../InputText/InputText2.js";
6
- import { foldDiacritics as ae } from "../../helpers/Search.js";
3
+ import { Button as ae } from "../Button/Button2.js";
4
+ import { Tooltip as He } from "../Tooltip/Tooltip2.js";
5
+ import { InputText as je } from "../InputText/InputText2.js";
6
+ import { foldDiacritics as fe } from "../../helpers/Search.js";
7
7
  /* empty css */
8
- import { useEffect as E, useId as He, useRef as D, useState as k } from "react";
8
+ import { useEffect as E, useId as Ce, useRef as D, useState as k } from "react";
9
9
  import { jsx as c, jsxs as g } from "react/jsx-runtime";
10
- import { createPortal as je } from "react-dom";
11
- import { caretDown as _e, clear as fe } from "@memobit/icons";
12
- var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", disabled: x = !1, error: A, highlighted: we = !1, id: he, label: J, maxVisibleSelectedLabels: me = 1, multilineChips: ge = !1, multiple: o = !1, name: N, onChange: u, onSearchChange: ve, options: m, placeholder: C = "Select an option", searchable: f = !0, searchValue: M, selectedCountDisplay: H = "inline", showChips: j = !1, sortSelectedFirst: Q = !1, success: _, usePortal: $ = !0, value: d, valueAsChip: be = !0 }) => {
13
- const [p, v] = k(!1), [s, l] = k(M || ""), [a, X] = k(m), [L, S] = k(-1), [i, w] = k([]), [R, xe] = k({
10
+ import { createPortal as _e } from "react-dom";
11
+ import { caretDown as ze, clear as pe } from "@memobit/icons";
12
+ var Ze = ({ allowCustomValue: h = !1, autofocus: ue = !1, className: we = "", disabled: x = !1, error: A, highlighted: he = !1, id: me, label: J, maxVisibleSelectedLabels: ge = 1, multilineChips: ve = !1, multiple: i = !1, name: N, onChange: u, onSearchChange: be, options: m, placeholder: H = "Select an option", searchable: f = !0, searchValue: M, selectedCountDisplay: j = "inline", showChips: C = !1, sortSelectedFirst: Q = !1, success: _, usePortal: $ = !0, value: d, valueAsChip: xe = !0 }) => {
13
+ const [p, v] = k(!1), [s, l] = k(M || ""), [a, X] = k(m), [L, O] = k(-1), [o, w] = k([]), [R, Ne] = k({
14
14
  top: 0,
15
15
  bottom: 0,
16
16
  left: 0,
17
17
  width: 0,
18
18
  maxHeight: 300
19
- }), [z, Ne] = k(!1), O = D(null), y = D([]), F = D(null), $e = D(null), Y = He(), Z = he ?? `dropdown-${Y}`, U = D(null);
19
+ }), [z, $e] = k(!1), S = D(null), y = D([]), F = D(null), ke = D(null), Y = Ce(), Z = me ?? `dropdown-${Y}`, U = D(null);
20
20
  E(() => {
21
- if (p && Q && o) {
22
- const n = new Set(i.map((r) => r.value)), e = [], t = [];
21
+ if (p && Q && i) {
22
+ const n = new Set(o.map((r) => r.value)), e = [], t = [];
23
23
  m.forEach((r) => (n.has(r.value) ? e : t).push(r)), U.current = [...e, ...t];
24
24
  } else p || (U.current = null);
25
25
  }, [
26
26
  p,
27
27
  Q,
28
- o,
28
+ i,
29
29
  m
30
30
  ]), E(() => {
31
31
  const n = U.current ?? m;
32
32
  if (!f || !s) X(n);
33
33
  else {
34
- const e = ae(s), t = n.filter((r) => ae(r.label).includes(e));
34
+ const e = fe(s), t = n.filter((r) => fe(r.label).includes(e));
35
35
  X(t);
36
36
  }
37
- S(-1);
37
+ O(-1);
38
38
  }, [
39
39
  s,
40
40
  m,
@@ -50,19 +50,19 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
50
50
  e && (w([]), l(""));
51
51
  return;
52
52
  }
53
- if (o && Array.isArray(d) && d.length === 0) {
53
+ if (i && Array.isArray(d) && d.length === 0) {
54
54
  e && (w([]), l(""));
55
55
  return;
56
56
  }
57
- if (!o && d === "") {
57
+ if (!i && d === "") {
58
58
  e && (w([]), l(""));
59
59
  return;
60
60
  }
61
61
  if (m.length > 0) {
62
- if (o && Array.isArray(d)) {
62
+ if (i && Array.isArray(d)) {
63
63
  const t = m.filter((r) => typeof r.value == "number" ? d.includes(r.value) : d.includes(r.value.toString()));
64
64
  w(t), e && l("");
65
- } else if (!o && (typeof d == "string" || typeof d == "number")) {
65
+ } else if (!i && (typeof d == "string" || typeof d == "number")) {
66
66
  const t = m.find((r) => typeof r.value == "number" && typeof d == "number" ? r.value === d : r.value.toString() === d.toString());
67
67
  if (t)
68
68
  w([t]), e && l(t.label);
@@ -75,7 +75,7 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
75
75
  w([r]), e && l(d.trim());
76
76
  } else e && (w([]), l(""));
77
77
  }
78
- } else if (h && !o && typeof d == "string" && d.trim()) {
78
+ } else if (h && !i && typeof d == "string" && d.trim()) {
79
79
  const t = {
80
80
  label: d.trim(),
81
81
  value: d.trim(),
@@ -86,24 +86,24 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
86
86
  }, [
87
87
  d,
88
88
  m,
89
- o,
89
+ i,
90
90
  f,
91
91
  h
92
92
  ]), E(() => {
93
93
  f && M !== void 0 && l(M);
94
94
  }, [M, f]), E(() => {
95
- if (!p || !O.current) return;
95
+ if (!p || !S.current) return;
96
96
  const n = () => {
97
- if (!O.current) return;
98
- const t = O.current.getBoundingClientRect(), r = window.visualViewport, T = r?.offsetTop ?? 0, Be = T + (r?.height ?? window.innerHeight), se = 300, Me = 8, G = Be - t.bottom, ce = t.top - T, de = G < se && ce > G;
99
- if (Ne(de), $) {
100
- const Te = Math.max(0, (de ? ce : G) - Me);
101
- xe({
97
+ if (!S.current) return;
98
+ const t = S.current.getBoundingClientRect(), r = window.visualViewport, T = r?.offsetTop ?? 0, Me = T + (r?.height ?? window.innerHeight), ce = 300, Te = 8, G = Me - t.bottom, de = t.top - T, le = G < ce && de > G;
99
+ if ($e(le), $) {
100
+ const Ae = Math.max(0, (le ? de : G) - Te);
101
+ Ne({
102
102
  top: t.bottom,
103
103
  bottom: window.innerHeight - t.top,
104
104
  left: t.left,
105
105
  width: t.width,
106
- maxHeight: Math.min(se, Te)
106
+ maxHeight: Math.min(ce, Ae)
107
107
  });
108
108
  }
109
109
  };
@@ -114,12 +114,12 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
114
114
  };
115
115
  }, [p, $]), E(() => {
116
116
  const n = (e) => {
117
- if (O.current && !O.current.contains(e.target)) {
117
+ if (S.current && !S.current.contains(e.target)) {
118
118
  if ($ && p) {
119
119
  const t = document.querySelector(".dropdown-menu--portal");
120
120
  if (t && t.contains(e.target)) return;
121
121
  }
122
- if (h && !o && s.trim() && !(i.length > 0 && i[0].label.toLowerCase() === s.trim().toLowerCase())) {
122
+ if (h && !i && s.trim() && !(o.length > 0 && o[0].label.toLowerCase() === s.trim().toLowerCase())) {
123
123
  const t = m.find((r) => r.label.toLowerCase() === s.toLowerCase() || r.value.toString() === s) || {
124
124
  label: s.trim(),
125
125
  value: s.trim(),
@@ -128,7 +128,7 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
128
128
  w([t]), l(t.label), v(!1), u && u(t, N);
129
129
  return;
130
130
  }
131
- v(!1), !o && i.length > 0 ? l(i[0].label) : o && f && l("");
131
+ v(!1), !i && o.length > 0 ? l(o[0].label) : i && f && l("");
132
132
  }
133
133
  };
134
134
  return document.addEventListener("mousedown", n), () => {
@@ -138,20 +138,20 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
138
138
  h,
139
139
  s,
140
140
  p,
141
- o,
141
+ i,
142
142
  N,
143
143
  u,
144
144
  m,
145
145
  f,
146
- i,
146
+ o,
147
147
  $
148
148
  ]);
149
149
  const K = (n) => {
150
150
  if (!n.disabled)
151
- if (o) {
152
- const e = i.some((r) => r.value === n.value);
151
+ if (i) {
152
+ const e = o.some((r) => r.value === n.value);
153
153
  let t;
154
- e ? t = i.filter((r) => r.value !== n.value) : t = [...i, n], w(t), f && l(""), u && u(t, N);
154
+ e ? t = o.filter((r) => r.value !== n.value) : t = [...o, n], w(t), f && l(""), u && u(t, N);
155
155
  } else
156
156
  l(n.label), w([n]), v(!1), u && u(n, N);
157
157
  }, P = () => {
@@ -166,23 +166,23 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
166
166
  value: s.trim(),
167
167
  className: "custom-option"
168
168
  };
169
- if (o) {
170
- const t = [...i, e];
169
+ if (i) {
170
+ const t = [...o, e];
171
171
  w(t), l(""), u && u(t, N);
172
172
  } else
173
173
  w([e]), l(e.label), v(!1), u && u(e, N);
174
174
  }, ee = (n) => {
175
- const e = i.filter((t) => t.value !== n.value);
176
- w(e), u && (o ? u(e, N) : (u(null, N), f || l("")));
177
- }, ke = () => {
178
- w([]), (!f || !o) && l(""), v(!1), u && u(o ? [] : null, N);
179
- }, Le = (n) => {
180
- l(n), p || v(!0), ve?.(n);
175
+ const e = o.filter((t) => t.value !== n.value);
176
+ w(e), u && (i ? u(e, N) : (u(null, N), f || l("")));
177
+ }, Le = () => {
178
+ w([]), (!f || !i) && l(""), v(!1), u && u(i ? [] : null, N);
179
+ }, Oe = (n) => {
180
+ l(n), p || v(!0), be?.(n);
181
181
  }, ne = () => {
182
- x || (v(!0), !o && f && i.length > 0 && l(""), (o || f) && F.current?.focus());
182
+ x || (v(!0), !i && f && o.length > 0 && l(""), (i || f) && F.current?.focus());
183
183
  }, Se = () => {
184
- x || (v(!p), p || (S(-1), !o && f && i.length > 0 && l(""), (o || f) && F.current?.focus()));
185
- }, Oe = (n) => {
184
+ x || (v(!p), p || (O(-1), !i && f && o.length > 0 && l(""), (i || f) && F.current?.focus()));
185
+ }, ye = (n) => {
186
186
  if (!x) {
187
187
  if (!p) {
188
188
  (n.key === "ArrowDown" || n.key === "Enter") && (v(!0), n.preventDefault());
@@ -191,14 +191,14 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
191
191
  switch (n.key) {
192
192
  case "ArrowDown":
193
193
  if (n.preventDefault(), h && s && a.length === 0) return;
194
- S((e) => {
194
+ O((e) => {
195
195
  const t = e < (h && s && !a.some((r) => r.label.toLowerCase() === s.toLowerCase()) ? a.length : a.length - 1) ? e + 1 : 0;
196
196
  return t < a.length && y.current[t] && y.current[t]?.scrollIntoView({ block: "nearest" }), t;
197
197
  });
198
198
  break;
199
199
  case "ArrowUp":
200
200
  if (n.preventDefault(), h && s && a.length === 0) return;
201
- S((e) => {
201
+ O((e) => {
202
202
  const t = h && s && !a.some((T) => T.label.toLowerCase() === s.toLowerCase()) ? a.length : a.length - 1, r = e > 0 ? e - 1 : t;
203
203
  return r < a.length && y.current[r] && y.current[r]?.scrollIntoView({ block: "nearest" }), r;
204
204
  });
@@ -207,25 +207,25 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
207
207
  n.preventDefault(), L >= 0 && L < a.length ? K(a[L]) : (h && s && L === a.length || h && s && a.length === 0) && P();
208
208
  break;
209
209
  case "Escape":
210
- n.preventDefault(), v(!1), !o && i.length > 0 ? l(i[0].label) : o && f && l("");
210
+ n.preventDefault(), v(!1), !i && o.length > 0 ? l(o[0].label) : i && f && l("");
211
211
  break;
212
212
  case "Backspace":
213
- o && s === "" && i.length > 0 && (n.preventDefault(), ee(i[i.length - 1]));
213
+ i && s === "" && o.length > 0 && (n.preventDefault(), ee(o[o.length - 1]));
214
214
  }
215
215
  }
216
- }, q = (n) => i.some((e) => e.value === n.value), ye = () => {
217
- if (i.length === 0) return "";
218
- const n = Math.max(1, me);
219
- if (i.length <= n) return i.map((r) => r.label).join(", ");
220
- const e = i.slice(0, n).map((r) => r.label).join(", "), t = i.length - n;
216
+ }, q = (n) => o.some((e) => e.value === n.value), Ie = () => {
217
+ if (o.length === 0) return "";
218
+ const n = Math.max(1, ge);
219
+ if (o.length <= n) return o.map((r) => r.label).join(", ");
220
+ const e = o.slice(0, n).map((r) => r.label).join(", "), t = o.length - n;
221
221
  return `${e} (+${t} ${t === 1 ? "other" : "others"})`;
222
- }, Ie = () => o && j || f && p ? s : i.length > 0 ? o ? ye() : i[0].label : "", Ee = () => o && j ? i.length > 0 ? "" : C : p && f ? C : i.length > 0 ? "" : C, De = () => !o || i.length === 0 || H === "none" ? null : H === "floating" ? /* @__PURE__ */ g("div", {
222
+ }, Ee = () => i && C || f && p ? s : o.length > 0 ? i ? Ie() : o[0].label : "", De = () => i && C ? o.length > 0 ? "" : H : p && f ? H : o.length > 0 ? "" : H, Re = () => !i || o.length === 0 || j === "none" ? null : j === "floating" ? /* @__PURE__ */ g("div", {
223
223
  className: "dropdown-selected-count",
224
- children: [i.length, " selected"]
225
- }) : null, te = () => !!(h && s && s.trim() && !a.some((n) => n.label.toLowerCase() === s.toLowerCase() || n.value.toString() === s)), Re = () => {
224
+ children: [o.length, " selected"]
225
+ }) : null, te = () => !!(h && s && s.trim() && !a.some((n) => n.label.toLowerCase() === s.toLowerCase() || n.value.toString() === s)), Be = () => {
226
226
  if (!p || x) return null;
227
227
  const n = /* @__PURE__ */ c("div", {
228
- ref: $e,
228
+ ref: ke,
229
229
  className: `dropdown-menu ${$ ? "dropdown-menu--portal" : ""} ${z ? "dropdown-menu--upward" : ""}`,
230
230
  style: $ ? {
231
231
  position: "fixed",
@@ -244,9 +244,9 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
244
244
  },
245
245
  className: `dropdown-option ${e.className || ""} ${L === t ? "focused" : ""} ${q(e) ? "selected" : ""} ${e.disabled ? "dropdown-option--disabled" : ""}`,
246
246
  onClick: () => K(e),
247
- onMouseEnter: () => S(t),
247
+ onMouseEnter: () => O(t),
248
248
  title: e.tooltip,
249
- children: [o && /* @__PURE__ */ c("div", {
249
+ children: [i && /* @__PURE__ */ c("div", {
250
250
  className: "dropdown-option-checkbox",
251
251
  children: /* @__PURE__ */ c("div", {
252
252
  className: `checkbox ${q(e) ? "checked" : ""}`,
@@ -288,7 +288,7 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
288
288
  },
289
289
  className: `dropdown-option dropdown-option--create ${L === a.length ? "focused" : ""}`,
290
290
  onClick: P,
291
- onMouseEnter: () => S(a.length),
291
+ onMouseEnter: () => O(a.length),
292
292
  children: /* @__PURE__ */ c("div", {
293
293
  className: "dropdown-option-content",
294
294
  children: /* @__PURE__ */ g("span", {
@@ -306,11 +306,11 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
306
306
  children: "No options found"
307
307
  })
308
308
  });
309
- return $ ? je(n, document.body) : n;
310
- }, b = !o && i.length === 1 ? i[0] : null, B = be && !p && !o && i.length > 0, re = !!(b?.icon && !s && !B), oe = !!(b?.suffixIcon && !B), W = o && j, ie = i.length > 0;
309
+ return $ ? _e(n, document.body) : n;
310
+ }, b = !i && o.length === 1 ? o[0] : null, B = xe && !p && !i && o.length > 0, re = !!(b?.icon && !s && !B), oe = !!(b?.suffixIcon && !B), W = i && C, ie = o.length > 0, se = f || h;
311
311
  return /* @__PURE__ */ g("div", {
312
- className: `dropdown-container ${A ? "dropdown-error" : ""} ${_ ? "dropdown-success" : ""} ${we ? "dropdown-highlighted" : ""} ${o ? "multiple" : ""} ${x ? "disabled" : ""} ${o ? `count-display-${H}` : ""} ${ue}`,
313
- ref: O,
312
+ className: `dropdown-container ${A ? "dropdown-error" : ""} ${_ ? "dropdown-success" : ""} ${he ? "dropdown-highlighted" : ""} ${i ? "multiple" : ""} ${x ? "disabled" : ""} ${i ? `count-display-${j}` : ""} ${we}`,
313
+ ref: S,
314
314
  children: [
315
315
  J && /* @__PURE__ */ c("label", {
316
316
  htmlFor: Z,
@@ -318,7 +318,7 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
318
318
  children: J
319
319
  }),
320
320
  /* @__PURE__ */ g("div", {
321
- className: `dropdown-input-container ${re ? "dropdown-input-container--has-prefix-icon" : ""} ${oe ? "dropdown-input-container--has-suffix-icon" : ""} ${W ? "dropdown-input-container--chips" : ""} ${W && ge ? "dropdown-input-container--chips-multiline" : ""} ${ie ? "dropdown-input-container--clearable" : ""}`,
321
+ className: `dropdown-input-container ${re ? "dropdown-input-container--has-prefix-icon" : ""} ${oe ? "dropdown-input-container--has-suffix-icon" : ""} ${W ? "dropdown-input-container--chips" : ""} ${W && ve ? "dropdown-input-container--chips-multiline" : ""} ${ie ? "dropdown-input-container--clearable" : ""}`,
322
322
  children: [
323
323
  re && b?.icon && /* @__PURE__ */ c("span", {
324
324
  className: "dropdown-selected-icon dropdown-selected-icon--prefix",
@@ -332,12 +332,12 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
332
332
  children: b.label
333
333
  })]
334
334
  }),
335
- W && i.map((n) => /* @__PURE__ */ g("span", {
335
+ W && o.map((n) => /* @__PURE__ */ g("span", {
336
336
  className: "dropdown-chip",
337
337
  children: [/* @__PURE__ */ c("span", {
338
338
  className: "dropdown-chip__label",
339
339
  children: n.label
340
- }), /* @__PURE__ */ c(Ae, {
340
+ }), /* @__PURE__ */ c(He, {
341
341
  title: "Remove",
342
342
  children: /* @__PURE__ */ c("button", {
343
343
  type: "button",
@@ -346,22 +346,22 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
346
346
  onClick: (e) => {
347
347
  e.stopPropagation(), ee(n);
348
348
  },
349
- children: fe
349
+ children: pe
350
350
  })
351
351
  })]
352
352
  }, `dd-chip-${n.value}`)),
353
- /* @__PURE__ */ c(Ce, {
353
+ /* @__PURE__ */ c(je, {
354
354
  ref: F,
355
355
  id: Z,
356
- placeholder: B ? "" : Ee(),
357
- value: B ? "" : Ie(),
358
- onChange: f || o ? Le : () => {
359
- },
356
+ placeholder: B ? "" : De(),
357
+ value: B ? "" : Ee(),
358
+ onChange: se ? Oe : void 0,
360
359
  onClick: ne,
361
- onKeyDown: Oe,
360
+ onKeyDown: ye,
362
361
  autoComplete: "off",
363
- autoFocus: pe,
364
- disabled: x
362
+ autoFocus: ue,
363
+ disabled: x,
364
+ readOnly: !se
365
365
  }),
366
366
  /* @__PURE__ */ g("div", {
367
367
  className: "dropdown-actions-buttons",
@@ -372,28 +372,28 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
372
372
  }),
373
373
  ie && /* @__PURE__ */ c("span", {
374
374
  className: "dropdown-action-button dropdown-clear-button",
375
- children: /* @__PURE__ */ c(le, {
375
+ children: /* @__PURE__ */ c(ae, {
376
376
  variant: "plain",
377
- onClick: ke,
377
+ onClick: Le,
378
378
  disabled: x,
379
- children: fe
379
+ children: pe
380
380
  })
381
381
  }),
382
382
  /* @__PURE__ */ c("span", {
383
383
  className: `dropdown-action-button dropdown-toggle-button ${p ? "open" : ""}`,
384
- children: /* @__PURE__ */ c(le, {
384
+ children: /* @__PURE__ */ c(ae, {
385
385
  variant: "plain",
386
386
  onClick: Se,
387
387
  disabled: x,
388
- children: _e
388
+ children: ze
389
389
  })
390
390
  })
391
391
  ]
392
392
  }),
393
- De()
393
+ Re()
394
394
  ]
395
395
  }),
396
- Re(),
396
+ Be(),
397
397
  A && /* @__PURE__ */ c("span", {
398
398
  className: "dropdown-error-message",
399
399
  children: A
@@ -406,5 +406,5 @@ var Ye = ({ allowCustomValue: h = !1, autofocus: pe = !1, className: ue = "", di
406
406
  });
407
407
  };
408
408
  export {
409
- Ye as Dropdown
409
+ Ze as Dropdown
410
410
  };
@@ -1,19 +1,25 @@
1
- var s = "/data-files/images", g = () => `${s}/default.jpg`, i = (t) => `${s}/category/${t}.jpg`, c = (t, a) => typeof t != "string" ? URL.createObjectURL(t) : t ? t.includes("/data-files/images") || t.startsWith("blob:") || t.startsWith("http") ? t : `${s}/specific/${t}` : a ? i(a) : g(), l = (t, a) => {
2
- const r = g(), e = a ? i(a) : r;
3
- return t ? t.endsWith(r) ? null : t.includes("/data-files/images/category/") ? r : e : e;
4
- }, u = (t, a) => {
5
- const r = t.currentTarget, e = l(r.src, a);
6
- if (e && !r.src.endsWith(e)) {
7
- r.src = e;
8
- return;
9
- }
10
- r.onerror = null;
1
+ var u = "/data-files", p = (l) => {
2
+ const e = `${u}/${l.replace(/^\/+|\/+$/g, "")}`, c = () => `${e}/default.jpg`, g = (t) => `${e}/category/${t}.jpg`, o = (t, a) => typeof t != "string" ? URL.createObjectURL(t) : t ? t.includes(e) || t.startsWith("blob:") || t.startsWith("http") ? t : `${e}/specific/${t}` : a ? g(a) : c(), n = (t, a) => {
3
+ const r = c(), s = a ? g(a) : r;
4
+ return t ? t.endsWith(r) ? null : t.includes(`${e}/category/`) ? r : s : s;
5
+ };
6
+ return {
7
+ basePath: e,
8
+ getDefaultImageUrl: c,
9
+ getCategoryImageUrl: g,
10
+ getImageUrl: o,
11
+ getNextImageFallback: n,
12
+ applyImageFallback: (t, a) => {
13
+ const r = t.currentTarget, s = n(r.src, a);
14
+ if (s && !r.src.endsWith(s)) {
15
+ r.src = s;
16
+ return;
17
+ }
18
+ r.onerror = null;
19
+ }
20
+ };
11
21
  };
12
22
  export {
13
- s as IMAGES_BASE_PATH,
14
- u as applyImageFallback,
15
- i as getCategoryImageUrl,
16
- g as getDefaultImageUrl,
17
- c as getImageUrl,
18
- l as getNextImageFallback
23
+ u as DATA_FILES_PATH,
24
+ p as createImagePaths
19
25
  };
@@ -23,7 +23,7 @@ var r = (i) => {
23
23
  const o = {
24
24
  ...i,
25
25
  lib: d,
26
- libBuildNumber: 484,
26
+ libBuildNumber: 488,
27
27
  libCommit: n,
28
28
  libBuildDate: t
29
29
  };
package/dist/index.d.ts CHANGED
@@ -152,8 +152,6 @@ export declare interface AppHeaderProps {
152
152
  showSeparator?: boolean;
153
153
  }
154
154
 
155
- export declare const applyImageFallback: (event: SyntheticEvent<HTMLImageElement>, categoryKey?: string) => void;
156
-
157
155
  export declare interface AppPersistenceDefaults<TPages, TTheme> {
158
156
  pages?: TPages;
159
157
  theme: TTheme;
@@ -772,6 +770,7 @@ export declare interface ControlPanelFilter {
772
770
  count?: number | string;
773
771
  placeholder?: string;
774
772
  multiple?: boolean;
773
+ /** Dropdown filters are searchable unless set to false; chips filters only show a search box when true. */
775
774
  searchable?: boolean;
776
775
  min?: number;
777
776
  max?: number;
@@ -1031,8 +1030,19 @@ declare interface CountryWithFlagProps {
1031
1030
  */
1032
1031
  export declare const createApiClient: ({ baseUrl, loginPath }: ApiClientConfig) => ApiClient;
1033
1032
 
1033
+ /**
1034
+ * Image paths for one entity folder under /data-files, laid out as:
1035
+ * default.jpg — fallback for the whole folder
1036
+ * category/<key>.jpg — per-category fallback
1037
+ * specific/<filename> — uploaded images
1038
+ * The folder is named after what it holds (e.g. 'books'), never after the app.
1039
+ */
1040
+ export declare const createImagePaths: (folder: string) => ImagePaths;
1041
+
1034
1042
  export declare const CSRF_HEADER = "X-CSRF-Token";
1035
1043
 
1044
+ export declare const DATA_FILES_PATH = "/data-files";
1045
+
1036
1046
  declare function DataView_2<T>({ columns, data, rowKey, pinnedIds, selectable, onSelectionChange, selectedIds: controlledSelectedIds, pageSizeOptions, initialPageSize, showPageSize, card, actions, actionsWidth, timeline, onRowClick, rowHref, rowClassName, rowDetail, empty, initialSortKey, initialSortDirection, sortKey: controlledSortKey, sortDirection: controlledSortDirection, onSortChange, miniSort, showCardSortControls, desktopView, cardMaxWidth, className, onPageChange, onPageSizeChange, currentPage: controlledCurrentPage, totalItems: controlledTotalItems, group, showResultsCount, totalCount, itemNoun, columnSelector, }: DataViewProps<T>): default_2.JSX.Element;
1037
1047
  export { DataView_2 as DataView }
1038
1048
 
@@ -1702,8 +1712,6 @@ export declare const formatSecondsToMediaTime: (seconds: number | undefined) =>
1702
1712
 
1703
1713
  export declare const fuzzyMatch: (text: string, query: string) => boolean;
1704
1714
 
1705
- export declare const getCategoryImageUrl: (categoryKey: string) => string;
1706
-
1707
1715
  export declare const getCsrfToken: () => string | null;
1708
1716
 
1709
1717
  /**
@@ -1711,17 +1719,6 @@ export declare const getCsrfToken: () => string | null;
1711
1719
  */
1712
1720
  export declare const getDaysInMonth: (year: number, month: number) => number;
1713
1721
 
1714
- export declare const getDefaultImageUrl: () => string;
1715
-
1716
- /**
1717
- * Resolves what an <img> should show for a stored image value:
1718
- * - a File (new, unsaved upload) → a blob URL
1719
- * - a full URL, blob URL or already-prefixed path → unchanged
1720
- * - empty → the category fallback, else the app default
1721
- * - a bare filename → its path under specific/
1722
- */
1723
- export declare const getImageUrl: (filename: string | File, categoryKey?: string) => string;
1724
-
1725
1722
  export declare const getIndicatorColor: (bmi: number, ranges: BMIRange[]) => string;
1726
1723
 
1727
1724
  export declare const getIndicatorPosition: (bmi: number, ranges: BMIRange[]) => number;
@@ -1739,8 +1736,6 @@ export declare const getIsoWeek: (date: Date) => number;
1739
1736
  */
1740
1737
  export declare const getMonthMatrix: (year: number, month: number, firstDayOfWeek?: 0 | 1) => Date[][];
1741
1738
 
1742
- export declare const getNextImageFallback: (currentSrc: string, categoryKey?: string) => string | null;
1743
-
1744
1739
  export declare const getPediatricRanges: (p5: number, p85: number, p95: number) => BMIRange[];
1745
1740
 
1746
1741
  export declare const getPercent: (value: number, total: number) => number;
@@ -1906,7 +1901,14 @@ export declare type IconSize = 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'xxxl';
1906
1901
 
1907
1902
  export declare type IconVariant = 'default' | 'muted' | 'accent' | 'info' | 'success' | 'warning' | 'danger';
1908
1903
 
1909
- export declare const IMAGES_BASE_PATH = "/data-files/images";
1904
+ export declare interface ImagePaths {
1905
+ basePath: string;
1906
+ getDefaultImageUrl: () => string;
1907
+ getCategoryImageUrl: (categoryKey: string) => string;
1908
+ getImageUrl: (filename: string | File, categoryKey?: string) => string;
1909
+ getNextImageFallback: (currentSrc: string, categoryKey?: string) => string | null;
1910
+ applyImageFallback: (event: SyntheticEvent<HTMLImageElement>, categoryKey?: string) => void;
1911
+ }
1910
1912
 
1911
1913
  export declare const InfiniteScroll: ({ children, onLoadMore, hasMore, isLoading, threshold, rootMargin, height, onScrollChange, endMessage, className, }: InfiniteScrollProps) => JSX.Element;
1912
1914
 
package/dist/index.js CHANGED
@@ -1,37 +1,37 @@
1
1
  import { Icon as o } from "./components/Icon/Icon2.js";
2
2
  import { Accordion as m } from "./components/Accordion/Accordion2.js";
3
3
  import { useBodyScrollLock as e } from "./hooks/useBodyScrollLock.js";
4
- import { ThemeContext as a } from "./components/ThemeSettings/ThemeContextValue.js";
4
+ import { ThemeContext as f } from "./components/ThemeSettings/ThemeContextValue.js";
5
5
  import { useTheme as n } from "./components/ThemeSettings/useTheme.js";
6
6
  import { useComponentEffect as s } from "./hooks/useComponentEffect.js";
7
- import { Button as g } from "./components/Button/Button2.js";
8
- import { Tooltip as c } from "./components/Tooltip/Tooltip2.js";
7
+ import { Button as d } from "./components/Button/Button2.js";
8
+ import { Tooltip as g } from "./components/Tooltip/Tooltip2.js";
9
9
  import { Modal as S } from "./components/Modal/Modal2.js";
10
10
  import { AlertDialog as P } from "./components/AlertDialog/AlertDialog2.js";
11
11
  import { AnalogClock as D } from "./components/AnalogClock/AnalogClock2.js";
12
- import { AngleSlider as M } from "./components/AngleSlider/AngleSlider2.js";
12
+ import { AngleSlider as A } from "./components/AngleSlider/AngleSlider2.js";
13
13
  import { Separator as B } from "./components/Separator/Separator2.js";
14
14
  import { AppHeader as E } from "./components/AppHeader/AppHeader2.js";
15
- import { AvatarInitials as R } from "./components/AvatarInitials/AvatarInitials2.js";
16
- import { Badge as b } from "./components/Badge/Badge2.js";
15
+ import { AvatarInitials as y } from "./components/AvatarInitials/AvatarInitials2.js";
16
+ import { Badge as _ } from "./components/Badge/Badge2.js";
17
17
  import { Banner as v } from "./components/Banner/Banner2.js";
18
18
  import { Blockquote as H } from "./components/Blockquote/Blockquote2.js";
19
- import { ADULT_RANGES as N, PEDIATRIC_THRESHOLDS as U, calculateBMI as w, getIndicatorColor as O, getIndicatorPosition as V, getPediatricRanges as W, getRangeLabel as Q } from "./components/BMI/bmiUtils.js";
19
+ import { ADULT_RANGES as N, PEDIATRIC_THRESHOLDS as w, calculateBMI as O, getIndicatorColor as U, getIndicatorPosition as V, getPediatricRanges as W, getRangeLabel as Q } from "./components/BMI/bmiUtils.js";
20
20
  import { BMI as G } from "./components/BMI/BMI2.js";
21
21
  import { Breadcrumb as j } from "./components/Breadcrumb/Breadcrumb2.js";
22
22
  import { BulkActionBar as K } from "./components/BulkActionBar/BulkActionBar2.js";
23
- import { APP_DATE_FORMAT as Y, APP_DATE_TIME_FORMAT as Z, addDays as $, addMonths as rr, formatAppDate as or, formatAppDateTime as tr, formatDate as mr, formatDateLocale as ir, formatDuration as er, formatRelativeDuration as pr, formatRelativeTime as ar, formatSecondsToMediaTime as fr, getDaysInMonth as nr, getIsoWeek as lr, getMonthMatrix as sr, getTodayDateString as ur, isAfter as gr, isBefore as dr, isDateInRange as cr, isSameDay as Tr, isToday as Sr, isWeekend as Ir } from "./helpers/Datetime.js";
23
+ import { APP_DATE_FORMAT as Y, APP_DATE_TIME_FORMAT as Z, addDays as $, addMonths as rr, formatAppDate as or, formatAppDateTime as tr, formatDate as mr, formatDateLocale as ir, formatDuration as er, formatRelativeDuration as pr, formatRelativeTime as fr, formatSecondsToMediaTime as ar, getDaysInMonth as nr, getIsoWeek as lr, getMonthMatrix as sr, getTodayDateString as ur, isAfter as dr, isBefore as cr, isDateInRange as gr, isSameDay as Tr, isToday as Sr, isWeekend as Ir } from "./helpers/Datetime.js";
24
24
  import { Calendar as Cr } from "./components/Calendar/Calendar2.js";
25
- import { CalendarHeatmap as Ar } from "./components/CalendarHeatmap/CalendarHeatmap2.js";
26
- import { Card as hr } from "./components/Card/Card2.js";
25
+ import { CalendarHeatmap as hr } from "./components/CalendarHeatmap/CalendarHeatmap2.js";
26
+ import { Card as Mr } from "./components/Card/Card2.js";
27
27
  import { Checkbox as kr } from "./components/Checkbox/Checkbox2.js";
28
- import { Chip as yr } from "./components/Chip/Chip2.js";
28
+ import { Chip as Rr } from "./components/Chip/Chip2.js";
29
29
  import { CollapsibleSection as Lr } from "./components/CollapsibleSection/CollapsibleSection2.js";
30
- import { InputNumber as _r } from "./components/InputNumber/InputNumber2.js";
30
+ import { InputNumber as br } from "./components/InputNumber/InputNumber2.js";
31
31
  import { InputText as xr } from "./components/InputText/InputText2.js";
32
32
  import { ColorPicker as Fr } from "./components/ColorPicker/ColorPicker2.js";
33
- import { CommandPalette as Ur } from "./components/CommandPalette/CommandPalette2.js";
34
- import { Confetti as Or } from "./components/Confetti/Confetti2.js";
33
+ import { CommandPalette as wr } from "./components/CommandPalette/CommandPalette2.js";
34
+ import { Confetti as Ur } from "./components/Confetti/Confetti2.js";
35
35
  import Wr from "./components/ConfirmDialog/ConfirmDialog2.js";
36
36
  import { usePopover as zr } from "./components/Popover/hooks/Popover.hook.js";
37
37
  import { Popover as qr } from "./components/Popover/Popover2.js";
@@ -39,22 +39,22 @@ import { ConfirmPopover as Jr } from "./components/ConfirmPopover/ConfirmPopover
39
39
  import { ContextMenu as Xr } from "./components/ContextMenu/ContextMenu2.js";
40
40
  import { ToastContainer as Zr, ToastProvider as $r, useToast as ro } from "./components/ContextToast/ContextToast2.js";
41
41
  import { breakpoints as to, useBreakpoint as mo } from "./hooks/useBreakpoint.js";
42
- import { ControlPanelProvider as eo, useControlPanel as po, useControlPanelContext as ao } from "./components/ControlPanel/ControlPanelContext.js";
42
+ import { ControlPanelProvider as eo, useControlPanel as po, useControlPanelContext as fo } from "./components/ControlPanel/ControlPanelContext.js";
43
43
  import { TimePicker as no } from "./components/TimePicker/TimePicker2.js";
44
44
  import { DatePicker as so } from "./components/DatePicker/DatePicker2.js";
45
- import { foldDiacritics as go, fuzzyMatch as co } from "./helpers/Search.js";
45
+ import { foldDiacritics as co, fuzzyMatch as go } from "./helpers/Search.js";
46
46
  import { Dropdown as So } from "./components/Dropdown/Dropdown2.js";
47
47
  import { InputDate as Po } from "./components/InputDate/InputDate2.js";
48
48
  import { InputSearch as Do } from "./components/InputSearch/InputSearch2.js";
49
- import { Rating as Mo } from "./components/Rating/Rating2.js";
49
+ import { Rating as Ao } from "./components/Rating/Rating2.js";
50
50
  import { Slider as Bo } from "./components/Slider/Slider2.js";
51
51
  import { ControlPanel as Eo } from "./components/ControlPanel/ControlPanel2.js";
52
- import { CopyButton as Ro } from "./components/CopyButton/CopyButton2.js";
53
- import { Flag as bo } from "./components/Flag/Flag2.js";
52
+ import { CopyButton as yo } from "./components/CopyButton/CopyButton2.js";
53
+ import { Flag as _o } from "./components/Flag/Flag2.js";
54
54
  import { CountryWithFlag as vo } from "./components/CountryWithFlag/CountryWithFlag2.js";
55
55
  import { getResultsCount as Ho } from "./helpers/Pagination.js";
56
56
  import { EmptyState as No } from "./components/EmptyState/EmptyState2.js";
57
- import { Pagination as wo } from "./components/Pagination/Pagination2.js";
57
+ import { Pagination as Oo } from "./components/Pagination/Pagination2.js";
58
58
  import { TimelineMarkerDot as Vo, TimelineMarkers as Wo, TimelineMobileSeparator as Qo, calculateTimelineMarkers as zo } from "./components/TimelineMarkers/TimelineMarkers2.js";
59
59
  import { MiniSort as qo } from "./components/MiniSort/MiniSort2.js";
60
60
  import { DataView as Jo } from "./components/DataView/DataView2.js";
@@ -64,22 +64,22 @@ import { Drawer as rt } from "./components/Drawer/Drawer2.js";
64
64
  import { DayAgenda as tt } from "./components/DayAgenda/DayAgenda2.js";
65
65
  import { DiffViewer as it } from "./components/DiffViewer/DiffViewer2.js";
66
66
  import { EmojiPicker as pt } from "./components/EmojiPicker/EmojiPicker2.js";
67
- import { ErrorBoundary as ft } from "./components/ErrorBoundary/ErrorBoundary2.js";
67
+ import { ErrorBoundary as at } from "./components/ErrorBoundary/ErrorBoundary2.js";
68
68
  import { ToggleButtons as lt } from "./components/ToggleButtons/ToggleButtons2.js";
69
69
  import { EventCalendar as ut } from "./components/EventCalendar/EventCalendar2.js";
70
- import { FileDropzone as dt } from "./components/FileDropzone/FileDropzone2.js";
70
+ import { FileDropzone as ct } from "./components/FileDropzone/FileDropzone2.js";
71
71
  import { FloatButton as Tt } from "./components/FloatButton/FloatButton2.js";
72
72
  import { FloatingWindow as It } from "./components/FloatingWindow/FloatingWindow2.js";
73
73
  import { Loading as Ct } from "./components/Loading/Loading2.js";
74
- import { FolderBrowserModal as At } from "./components/FolderBrowserModal/FolderBrowserModal2.js";
75
- import { Col as ht } from "./components/Grid/Col.js";
74
+ import { FolderBrowserModal as ht } from "./components/FolderBrowserModal/FolderBrowserModal2.js";
75
+ import { Col as Mt } from "./components/Grid/Col.js";
76
76
  import { Grid as kt } from "./components/Grid/Grid2.js";
77
- import { IconPicker as yt } from "./components/IconPicker/IconPicker2.js";
77
+ import { IconPicker as Rt } from "./components/IconPicker/IconPicker2.js";
78
78
  import { InfiniteScroll as Lt } from "./components/InfiniteScroll/InfiniteScroll2.js";
79
- import { InputEmail as _t, validateEmail as vt } from "./components/InputEmail/InputEmail2.js";
79
+ import { InputEmail as bt, validateEmail as vt } from "./components/InputEmail/InputEmail2.js";
80
80
  import { InputFile as Ht } from "./components/InputFile/InputFile2.js";
81
- import { InputMask as Nt, InputMaskPresets as Ut } from "./components/InputMask/InputMask2.js";
82
- import { InputPassword as Ot } from "./components/InputPassword/InputPassword2.js";
81
+ import { InputMask as Nt, InputMaskPresets as wt } from "./components/InputMask/InputMask2.js";
82
+ import { InputPassword as Ut } from "./components/InputPassword/InputPassword2.js";
83
83
  import { InputPhone as Wt } from "./components/InputPhone/InputPhone2.js";
84
84
  import { InputPIN as zt } from "./components/InputPIN/InputPIN2.js";
85
85
  import { InputTextarea as qt } from "./components/InputTextarea/InputTextarea2.js";
@@ -90,20 +90,20 @@ import { List as rm } from "./components/List/List2.js";
90
90
  import { MenuHamburger as tm } from "./components/MenuHamburger/MenuHamburger2.js";
91
91
  import { Minimap as im } from "./components/Minimap/Minimap2.js";
92
92
  import { MiniStatsCard as pm } from "./components/MiniStatsCard/MiniStatsCard2.js";
93
- import { NavBar as fm } from "./components/NavBar/NavBar2.js";
93
+ import { NavBar as am } from "./components/NavBar/NavBar2.js";
94
94
  import { NotificationPanel as lm } from "./components/NotificationPanel/NotificationPanel2.js";
95
95
  import { PieChart as um } from "./components/PieChart/PieChart2.js";
96
- import { clamp as dm, format2Digits as cm, getPercent as Tm, getPercentsOf2Numbers as Sm } from "./helpers/Numbers.js";
96
+ import { clamp as cm, format2Digits as gm, getPercent as Tm, getPercentsOf2Numbers as Sm } from "./helpers/Numbers.js";
97
97
  import { ProgressBar as Pm } from "./components/ProgressBar/ProgressBar2.js";
98
98
  import { ProgressRing as Dm } from "./components/ProgressRing/ProgressRing2.js";
99
- import { QuantitySelector as Mm } from "./components/QuantitySelector/QuantitySelector2.js";
99
+ import { QuantitySelector as Am } from "./components/QuantitySelector/QuantitySelector2.js";
100
100
  import { QuickAdd as Bm } from "./components/QuickAdd/QuickAdd2.js";
101
101
  import { QuickNumberUpdate as Em } from "./components/QuickNumberUpdate/QuickNumberUpdate2.js";
102
- import { Radio as Rm } from "./components/Radio/Radio2.js";
103
- import { QuickOptionUpdate as bm } from "./components/QuickOptionUpdate/QuickOptionUpdate2.js";
102
+ import { Radio as ym } from "./components/Radio/Radio2.js";
103
+ import { QuickOptionUpdate as _m } from "./components/QuickOptionUpdate/QuickOptionUpdate2.js";
104
104
  import { RangeSlider as vm } from "./components/RangeSlider/RangeSlider2.js";
105
- import { ensureHtml as Hm, htmlToMarkdown as Fm, htmlToPlainText as Nm, splitHtmlIntoSteps as Um } from "./helpers/HtmlContent.js";
106
- import { RichTextEditor as Om } from "./components/RichTextEditor/RichTextEditor2.js";
105
+ import { ensureHtml as Hm, htmlToMarkdown as Fm, htmlToPlainText as Nm, splitHtmlIntoSteps as wm } from "./helpers/HtmlContent.js";
106
+ import { RichTextEditor as Um } from "./components/RichTextEditor/RichTextEditor2.js";
107
107
  import { RollingNumber as Wm } from "./components/RollingNumber/RollingNumber2.js";
108
108
  import { ScrollToTop as zm } from "./components/ScrollToTop/ScrollToTop2.js";
109
109
  import { SidebarProvider as qm, useSidebar as jm } from "./components/Sidebar/SidebarContext.js";
@@ -113,40 +113,40 @@ import { Skeleton as $m } from "./components/Skeleton/Skeleton2.js";
113
113
  import { SplitPanel as oi } from "./components/SplitPanel/SplitPanel2.js";
114
114
  import { Splitter as mi } from "./components/Splitter/Splitter2.js";
115
115
  import { StackedBar as ei } from "./components/StackedBar/StackedBar2.js";
116
- import { Stats as ai } from "./components/Stats/Stats2.js";
116
+ import { Stats as fi } from "./components/Stats/Stats2.js";
117
117
  import { StickyBar as ni } from "./components/StickyBar/StickyBar2.js";
118
118
  import { SuggestionsList as si } from "./components/SuggestionsList/SuggestionsList2.js";
119
- import { THEME_CONFIGS as gi, getThemeConfig as di } from "./components/ThemeSettings/themeConfig.js";
119
+ import { THEME_CONFIGS as di, getThemeConfig as ci } from "./components/ThemeSettings/themeConfig.js";
120
120
  import { ThemeProvider as Ti } from "./components/ThemeSettings/ThemeContext.js";
121
121
  import { ToggleSwitch as Ii } from "./components/ToggleSwitch/ToggleSwitch2.js";
122
122
  import { ThemeSettings as Ci } from "./components/ThemeSettings/ThemeSettings2.js";
123
- import { Timeline as Ai } from "./components/Timeline/Timeline2.js";
124
- import { TipsOfTheDay as hi } from "./components/TipsOfTheDay/TipsOfTheDay2.js";
123
+ import { Timeline as hi } from "./components/Timeline/Timeline2.js";
124
+ import { TipsOfTheDay as Mi } from "./components/TipsOfTheDay/TipsOfTheDay2.js";
125
125
  import { Toast as ki } from "./components/Toast/Toast2.js";
126
- import { Toolbar as yi } from "./components/Toolbar/Toolbar2.js";
126
+ import { Toolbar as Ri } from "./components/Toolbar/Toolbar2.js";
127
127
  import { TourHud as Li } from "./components/TourHud/TourHud2.js";
128
- import { Transition as _i } from "./components/Transition/Transition2.js";
128
+ import { Transition as bi } from "./components/Transition/Transition2.js";
129
129
  import { Tree as xi } from "./components/Tree/Tree2.js";
130
130
  import { VirtualList as Fi } from "./components/VirtualList/VirtualList2.js";
131
- import { WHtR as Ui } from "./components/WHtR/WHtR2.js";
132
- import { ApiError as Oi, CSRF_HEADER as Vi, HttpMethod as Wi, HttpStatus as Qi, buildRequestHeaders as zi, createApiClient as Gi, getCsrfToken as qi, isClientErrorStatus as ji, isServerErrorStatus as Ji, isSuccessStatus as Ki, readErrorMessage as Xi } from "./helpers/Http.js";
131
+ import { WHtR as wi } from "./components/WHtR/WHtR2.js";
132
+ import { ApiError as Ui, CSRF_HEADER as Vi, HttpMethod as Wi, HttpStatus as Qi, buildRequestHeaders as zi, createApiClient as Gi, getCsrfToken as qi, isClientErrorStatus as ji, isServerErrorStatus as Ji, isSuccessStatus as Ki, readErrorMessage as Xi } from "./helpers/Http.js";
133
133
  import { AuthContext as Zi, AuthProvider as $i } from "./contexts/AuthContext/AuthContext.js";
134
134
  import { useAuth as oe } from "./hooks/useAuth/useAuth.js";
135
135
  import { ChangePasswordModal as me } from "./components/Auth/ChangePasswordModal/ChangePasswordModal2.js";
136
136
  import { Login as ee } from "./components/Auth/Login/Login2.js";
137
- import { useAccountMenu as ae } from "./hooks/useAccountMenu.js";
137
+ import { useAccountMenu as fe } from "./hooks/useAccountMenu.js";
138
138
  import { AppPersistenceStorage as ne } from "./helpers/AppPersistenceStorage.js";
139
139
  import { useAppPersistence as se } from "./hooks/useAppPersistence.js";
140
- import { chartColors as ge, chartTooltipStyle as de } from "./helpers/Charts.js";
140
+ import { chartColors as de, chartTooltipStyle as ce } from "./helpers/Charts.js";
141
141
  import { formatBigNumber as Te, formatBytes as Se, formatMoney as Ie } from "./helpers/Format.js";
142
142
  import { highlightText as Ce } from "./helpers/Highlight.js";
143
- import { IMAGES_BASE_PATH as Ae, applyImageFallback as Me, getCategoryImageUrl as he, getDefaultImageUrl as Be, getImageUrl as ke, getNextImageFallback as Ee } from "./helpers/Images.js";
144
- import { matchStringsByLogicalOperator as Re } from "./helpers/LogicalOperators.js";
145
- import { shortenText as be, slugify as _e, truncateText as ve } from "./helpers/Strings.js";
146
- import { extractDomainFromUrl as He, stripQueryString as Fe, stripTrackingParams as Ne } from "./helpers/Urls.js";
147
- import { LIB_BUILD_DATE as we, LIB_BUILD_ID as Oe, LIB_BUILD_NUMBER as Ve, LIB_COMMIT as We, LIB_VERSION as Qe } from "./version.js";
148
- import { initVersionInfo as Ge } from "./helpers/VersionInfo.js";
149
- import { validateVin as je } from "./validators/Vin.js";
143
+ import { DATA_FILES_PATH as he, createImagePaths as Ae } from "./helpers/Images.js";
144
+ import { matchStringsByLogicalOperator as Be } from "./helpers/LogicalOperators.js";
145
+ import { shortenText as Ee, slugify as Re, truncateText as ye } from "./helpers/Strings.js";
146
+ import { extractDomainFromUrl as _e, stripQueryString as be, stripTrackingParams as ve } from "./helpers/Urls.js";
147
+ import { LIB_BUILD_DATE as He, LIB_BUILD_ID as Fe, LIB_BUILD_NUMBER as Ne, LIB_COMMIT as we, LIB_VERSION as Oe } from "./version.js";
148
+ import { initVersionInfo as Ve } from "./helpers/VersionInfo.js";
149
+ import { validateVin as Qe } from "./validators/Vin.js";
150
150
  export {
151
151
  N as ADULT_RANGES,
152
152
  Y as APP_DATE_FORMAT,
@@ -154,40 +154,41 @@ export {
154
154
  m as Accordion,
155
155
  P as AlertDialog,
156
156
  D as AnalogClock,
157
- M as AngleSlider,
158
- Oi as ApiError,
157
+ A as AngleSlider,
158
+ Ui as ApiError,
159
159
  E as AppHeader,
160
160
  ne as AppPersistenceStorage,
161
161
  Zi as AuthContext,
162
162
  ee as AuthLogin,
163
163
  $i as AuthProvider,
164
- R as AvatarInitials,
164
+ y as AvatarInitials,
165
165
  G as BMI,
166
- b as Badge,
166
+ _ as Badge,
167
167
  v as Banner,
168
168
  H as Blockquote,
169
169
  j as Breadcrumb,
170
170
  K as BulkActionBar,
171
- g as Button,
171
+ d as Button,
172
172
  Vi as CSRF_HEADER,
173
173
  Cr as Calendar,
174
- Ar as CalendarHeatmap,
175
- hr as Card,
174
+ hr as CalendarHeatmap,
175
+ Mr as Card,
176
176
  me as ChangePasswordModal,
177
177
  kr as Checkbox,
178
- yr as Chip,
179
- ht as Col,
178
+ Rr as Chip,
179
+ Mt as Col,
180
180
  Lr as CollapsibleSection,
181
181
  Fr as ColorPicker,
182
- Ur as CommandPalette,
183
- Or as Confetti,
182
+ wr as CommandPalette,
183
+ Ur as Confetti,
184
184
  Wr as ConfirmDialog,
185
185
  Jr as ConfirmPopover,
186
186
  Xr as ContextMenu,
187
187
  Eo as ControlPanel,
188
188
  eo as ControlPanelProvider,
189
- Ro as CopyButton,
189
+ yo as CopyButton,
190
190
  vo as CountryWithFlag,
191
+ he as DATA_FILES_PATH,
191
192
  Jo as DataView,
192
193
  so as DatePicker,
193
194
  Xo as DateRangePicker,
@@ -197,28 +198,27 @@ export {
197
198
  So as Dropdown,
198
199
  pt as EmojiPicker,
199
200
  No as EmptyState,
200
- ft as ErrorBoundary,
201
+ at as ErrorBoundary,
201
202
  ut as EventCalendar,
202
- dt as FileDropzone,
203
- bo as Flag,
203
+ ct as FileDropzone,
204
+ _o as Flag,
204
205
  Tt as FloatButton,
205
206
  It as FloatingWindow,
206
- At as FolderBrowserModal,
207
+ ht as FolderBrowserModal,
207
208
  kt as Grid,
208
209
  Wi as HttpMethod,
209
210
  Qi as HttpStatus,
210
- Ae as IMAGES_BASE_PATH,
211
211
  o as Icon,
212
- yt as IconPicker,
212
+ Rt as IconPicker,
213
213
  Lt as InfiniteScroll,
214
214
  Po as InputDate,
215
- _t as InputEmail,
215
+ bt as InputEmail,
216
216
  Ht as InputFile,
217
217
  Nt as InputMask,
218
- Ut as InputMaskPresets,
219
- _r as InputNumber,
218
+ wt as InputMaskPresets,
219
+ br as InputNumber,
220
220
  zt as InputPIN,
221
- Ot as InputPassword,
221
+ Ut as InputPassword,
222
222
  Wt as InputPhone,
223
223
  Do as InputSearch,
224
224
  xr as InputText,
@@ -226,11 +226,11 @@ export {
226
226
  Jt as InputTime,
227
227
  Xt as InputUrl,
228
228
  Zt as JourneyWizard,
229
- we as LIB_BUILD_DATE,
230
- Oe as LIB_BUILD_ID,
231
- Ve as LIB_BUILD_NUMBER,
232
- We as LIB_COMMIT,
233
- Qe as LIB_VERSION,
229
+ He as LIB_BUILD_DATE,
230
+ Fe as LIB_BUILD_ID,
231
+ Ne as LIB_BUILD_NUMBER,
232
+ we as LIB_COMMIT,
233
+ Oe as LIB_VERSION,
234
234
  rm as List,
235
235
  Ct as Loading,
236
236
  tm as MenuHamburger,
@@ -238,22 +238,22 @@ export {
238
238
  pm as MiniStatsCard,
239
239
  im as Minimap,
240
240
  S as Modal,
241
- fm as NavBar,
241
+ am as NavBar,
242
242
  lm as NotificationPanel,
243
- U as PEDIATRIC_THRESHOLDS,
244
- wo as Pagination,
243
+ w as PEDIATRIC_THRESHOLDS,
244
+ Oo as Pagination,
245
245
  um as PieChart,
246
246
  qr as Popover,
247
247
  Pm as ProgressBar,
248
248
  Dm as ProgressRing,
249
- Mm as QuantitySelector,
249
+ Am as QuantitySelector,
250
250
  Bm as QuickAdd,
251
251
  Em as QuickNumberUpdate,
252
- bm as QuickOptionUpdate,
253
- Rm as Radio,
252
+ _m as QuickOptionUpdate,
253
+ ym as Radio,
254
254
  vm as RangeSlider,
255
- Mo as Rating,
256
- Om as RichTextEditor,
255
+ Ao as Rating,
256
+ Um as RichTextEditor,
257
257
  Wm as RollingNumber,
258
258
  zm as ScrollToTop,
259
259
  B as Separator,
@@ -265,46 +265,46 @@ export {
265
265
  oi as SplitPanel,
266
266
  mi as Splitter,
267
267
  ei as StackedBar,
268
- ai as Stats,
268
+ fi as Stats,
269
269
  ni as StickyBar,
270
270
  si as SuggestionsList,
271
- gi as THEME_CONFIGS,
272
- a as ThemeContext,
271
+ di as THEME_CONFIGS,
272
+ f as ThemeContext,
273
273
  Ti as ThemeProvider,
274
274
  Ci as ThemeSettings,
275
275
  no as TimePicker,
276
- Ai as Timeline,
276
+ hi as Timeline,
277
277
  Vo as TimelineMarkerDot,
278
278
  Wo as TimelineMarkers,
279
279
  Qo as TimelineMobileSeparator,
280
- hi as TipsOfTheDay,
280
+ Mi as TipsOfTheDay,
281
281
  ki as Toast,
282
282
  Zr as ToastContainer,
283
283
  $r as ToastProvider,
284
284
  lt as ToggleButtons,
285
285
  Ii as ToggleSwitch,
286
- yi as Toolbar,
287
- c as Tooltip,
286
+ Ri as Toolbar,
287
+ g as Tooltip,
288
288
  Li as TourHud,
289
- _i as Transition,
289
+ bi as Transition,
290
290
  xi as Tree,
291
291
  Fi as VirtualList,
292
- Ui as WHtR,
292
+ wi as WHtR,
293
293
  $ as addDays,
294
294
  rr as addMonths,
295
- Me as applyImageFallback,
296
295
  to as breakpoints,
297
296
  zi as buildRequestHeaders,
298
- w as calculateBMI,
297
+ O as calculateBMI,
299
298
  zo as calculateTimelineMarkers,
300
- ge as chartColors,
301
- de as chartTooltipStyle,
302
- dm as clamp,
299
+ de as chartColors,
300
+ ce as chartTooltipStyle,
301
+ cm as clamp,
303
302
  Gi as createApiClient,
303
+ Ae as createImagePaths,
304
304
  Hm as ensureHtml,
305
- He as extractDomainFromUrl,
306
- go as foldDiacritics,
307
- cm as format2Digits,
305
+ _e as extractDomainFromUrl,
306
+ co as foldDiacritics,
307
+ gm as format2Digits,
308
308
  or as formatAppDate,
309
309
  tr as formatAppDateTime,
310
310
  Te as formatBigNumber,
@@ -314,60 +314,56 @@ export {
314
314
  er as formatDuration,
315
315
  Ie as formatMoney,
316
316
  pr as formatRelativeDuration,
317
- ar as formatRelativeTime,
318
- fr as formatSecondsToMediaTime,
319
- co as fuzzyMatch,
320
- he as getCategoryImageUrl,
317
+ fr as formatRelativeTime,
318
+ ar as formatSecondsToMediaTime,
319
+ go as fuzzyMatch,
321
320
  qi as getCsrfToken,
322
321
  nr as getDaysInMonth,
323
- Be as getDefaultImageUrl,
324
- ke as getImageUrl,
325
- O as getIndicatorColor,
322
+ U as getIndicatorColor,
326
323
  V as getIndicatorPosition,
327
324
  lr as getIsoWeek,
328
325
  sr as getMonthMatrix,
329
- Ee as getNextImageFallback,
330
326
  W as getPediatricRanges,
331
327
  Tm as getPercent,
332
328
  Sm as getPercentsOf2Numbers,
333
329
  Q as getRangeLabel,
334
330
  Ho as getResultsCount,
335
- di as getThemeConfig,
331
+ ci as getThemeConfig,
336
332
  ur as getTodayDateString,
337
333
  Ce as highlightText,
338
334
  Fm as htmlToMarkdown,
339
335
  Nm as htmlToPlainText,
340
- Ge as initVersionInfo,
341
- gr as isAfter,
342
- dr as isBefore,
336
+ Ve as initVersionInfo,
337
+ dr as isAfter,
338
+ cr as isBefore,
343
339
  ji as isClientErrorStatus,
344
- cr as isDateInRange,
340
+ gr as isDateInRange,
345
341
  Tr as isSameDay,
346
342
  Ji as isServerErrorStatus,
347
343
  Ki as isSuccessStatus,
348
344
  Sr as isToday,
349
345
  Ir as isWeekend,
350
- Re as matchStringsByLogicalOperator,
346
+ Be as matchStringsByLogicalOperator,
351
347
  Xi as readErrorMessage,
352
- be as shortenText,
353
- _e as slugify,
354
- Um as splitHtmlIntoSteps,
355
- Fe as stripQueryString,
356
- Ne as stripTrackingParams,
357
- ve as truncateText,
358
- ae as useAccountMenu,
348
+ Ee as shortenText,
349
+ Re as slugify,
350
+ wm as splitHtmlIntoSteps,
351
+ be as stripQueryString,
352
+ ve as stripTrackingParams,
353
+ ye as truncateText,
354
+ fe as useAccountMenu,
359
355
  se as useAppPersistence,
360
356
  oe as useAuth,
361
357
  e as useBodyScrollLock,
362
358
  mo as useBreakpoint,
363
359
  s as useComponentEffect,
364
360
  po as useControlPanel,
365
- ao as useControlPanelContext,
361
+ fo as useControlPanelContext,
366
362
  zr as usePopover,
367
363
  jm as useSidebar,
368
364
  Zo as useSwipe,
369
365
  n as useTheme,
370
366
  ro as useToast,
371
367
  vt as validateEmail,
372
- je as validateVin
368
+ Qe as validateVin
373
369
  };
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
- var I = "3.6.0", B = 484, L = "40a4ef2", _ = "2026-10-10T06:47:22.564Z", a = "484";
1
+ var I = "3.8.0", B = 488, L = "e4aa259", _ = "2026-10-12T07:30:32.085Z", a = "488";
2
2
  export {
3
3
  _ as LIB_BUILD_DATE,
4
4
  a as LIB_BUILD_ID,
package/dist/version.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "3.6.0",
3
- "buildNumber": 484,
4
- "commit": "40a4ef2",
5
- "buildDate": "2026-10-10T06:47:22.564Z"
2
+ "version": "3.8.0",
3
+ "buildNumber": 488,
4
+ "commit": "e4aa259",
5
+ "buildDate": "2026-10-12T07:30:32.085Z"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memobit/libs",
3
- "version": "3.6.0",
3
+ "version": "3.8.0",
4
4
  "description": "React component library powering the Memobit apps — 100+ components, helpers and hooks. Icons ship as @memobit/icons and themes as @memobit/themes. TypeScript-first, ESM-only, React 19.",
5
5
  "keywords": [
6
6
  "react",