@solibo/solibo-ui 1.2.2 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/index13.css +1 -1
- package/dist/assets/index31.css +1 -1
- package/dist/assets/index40.css +1 -1
- package/dist/assets/index42.css +1 -1
- package/dist/components/button/index.cjs +1 -1
- package/dist/components/button/index.js +24 -24
- package/dist/components/dropdown/index.cjs +1 -1
- package/dist/components/dropdown/index.cjs.map +1 -1
- package/dist/components/dropdown/index.js +71 -71
- package/dist/components/dropdown/index.js.map +1 -1
- package/dist/components/editor/index.cjs +21 -21
- package/dist/components/editor/index.cjs.map +1 -1
- package/dist/components/editor/index.js +1510 -1496
- package/dist/components/editor/index.js.map +1 -1
- package/dist/components/nav/index.cjs +1 -1
- package/dist/components/nav/index.js +32 -32
- package/dist/tokens.json +1 -1
- package/package.json +1 -1
package/dist/assets/index13.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
._nav_xrgjg_3 a{display:block}._label_xrgjg_9{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._item_xrgjg_17{align-items:center;border-radius:var(--shape-border-radius-radius-md);display:grid;grid-template-columns:auto minmax(0,1fr) auto auto}._item_xrgjg_17>a{display:grid;grid-column:1 / -1;grid-row:1;grid-template-columns:subgrid;margin-bottom:0}._item_xrgjg_17>a>[data-component=badge]{grid-column:3}._actions_xrgjg_36{grid-column:4;grid-row:1;justify-self:end;margin-right:var(--shape-spacing-2xs);margin-top:var(--shape-spacing-2xs);width:-moz-max-content;width:max-content;z-index:1}._actions_xrgjg_36:has([data-component=popover]){display:none}._item_xrgjg_17:hover ._actions_xrgjg_36,._item_xrgjg_17:focus-within ._actions_xrgjg_36{display:block}._item_xrgjg_17:hover ._actions_xrgjg_36 [data-component=popover],._item_xrgjg_17:focus-within ._actions_xrgjg_36 [data-component=popover]{visibility:visible}._highlighted_xrgjg_60>a{background:var(--colors-semantic-primary-primary-subtle);border-color:var(--colors-semantic-primary-primary-subtle-border);color:var(--colors-semantic-content-primary);font-weight:var(--font-font-weight-semibold)}._horizontal_xrgjg_64 a,._horizontal_xrgjg_64 li{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._sidebar_xrgjg_74 a{align-items:center;border:var(--scale-1) solid transparent;border-radius:var(--shape-border-radius-radius-md);color:var(--colors-semantic-content-secondary);display:flex;line-height:var(--utils-tokens-unit);overflow:hidden;padding:var(--shape-spacing-md) var(--shape-spacing-sm);text-decoration:none;text-overflow:ellipsis;white-space:nowrap}._sidebar_xrgjg_74 a [data-component=badge]{margin-left:auto}._sidebar_xrgjg_74 a[aria-current=page]{background:var(--colors-semantic-primary-primary-subtle);border-color:var(--colors-semantic-primary-primary-subtle-border);color:var(--colors-semantic-content-primary);font-weight:var(--font-font-weight-semibold)}._sidebar_xrgjg_74 a:has(~a){margin-bottom:var(--shape-spacing-2xs)}._sidebar_xrgjg_74 ._item_xrgjg_17>a{display:grid}._sidebar_xrgjg_74 input{margin:3px 0!important}._sidebar_xrgjg_74~._sidebar_xrgjg_74{border-top:solid 1px var(--colors-semantic-border-default);margin-top:var(--shape-spacing-lg);padding-top:var(--shape-spacing-2xs)}._nav_xrgjg_3._tabs_xrgjg_117._tabs_xrgjg_117{display:flex;gap:var(--utils-tokens-unit)}._nav_xrgjg_3._tabs_xrgjg_117._tabs_xrgjg_117 a,._nav_xrgjg_3._tabs_xrgjg_117._tabs_xrgjg_117 li{color:var(--colors-semantic-content-tertiary);display:inline-block;font-weight:var(--font-font-weight-semibold);padding:var(--scale-4) var(--scale-2) var(--scale-8) var(--scale-2);text-align:center;text-decoration:none}._nav_xrgjg_3._tabs_xrgjg_117._tabs_xrgjg_117 a[aria-current=page],._nav_xrgjg_3._tabs_xrgjg_117._tabs_xrgjg_117 li[aria-current=page]{border-bottom:var(--shape-border-width-default) solid var(--colors-semantic-content-primary);color:var(--colors-semantic-content-primary)}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137{-webkit-backdrop-filter:blur(var(--scale-8));backdrop-filter:blur(var(--scale-8));background-color:var(--colors-translucent);border:var(--scale-2) solid var(--colors-semantic-bg-surface);border-radius:var(--shape-border-radius-radius-2xl);box-shadow:var(--shape-box-shadow-sm-position-x) var(--shape-box-shadow-sm-position-y) var(--shape-box-shadow-sm-blur) var(--shape-box-shadow-sm-spread) var(--shape-box-shadow-sm-color);display:flex;left:50%;margin:0 auto;position:sticky;top:var(--utils-tokens-unit);transform:translate(-50%);width:-moz-fit-content;width:fit-content;z-index:2}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137:has(>:only-child){display:none}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137:before{background:var(--colors-purple-500);border-radius:var(--shape-border-radius-radius-2xl);content:"";inset-block:0;left:anchor(left);position:absolute;position-anchor:--current;transition:left var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function),top var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function),width var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function);width:anchor-size(width);z-index:0}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137 a{border-radius:var(--scale-32);color:var(--colors-semantic-primary-primary);display:inline-block;font-weight:var(--font-font-weight-bold);padding:var(--utils-tokens-unit);position:relative;text-decoration:none;text-overflow:ellipsis;transition:color var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function),padding var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function);white-space:nowrap;z-index:2}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137 a[aria-current=page]{anchor-name:--current;color:var(--colors-semantic-bg-surface)}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137 a[aria-current=page]:hover{color:var(--colors-semantic-bg-surface)}@media (width <= 1024px){._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137{flex-direction:column}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137 a[aria-current=page]{background-color:var(--colors-purple-500)}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137 a[aria-current=page]:after{background-color:var(--colors-semantic-bg-surface);content:"";display:inline-block;height:var(--utils-tokens-unit);margin-left:var(--scale-8);-webkit-mask-image:var(--icon-svg);mask-image:var(--icon-svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:transform var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function);vertical-align:middle;width:var(--utils-tokens-unit)}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137 a:not([aria-current=page]){display:none}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137:before{display:none}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137[data-open=true] a{display:block}._nav_xrgjg_3._pills_xrgjg_137._pills_xrgjg_137[data-open=true] a[aria-current=page]:after{transform:rotateX(180deg)}}@supports not (position-anchor: --x){._pills_xrgjg_137:before{display:none}._pills_xrgjg_137 a[aria-current=page]{background:var(--colors-purple-500);color:var(--colors-semantic-bg-surface)}}._sidebar_xrgjg_74 a:hover:not([aria-current=page]),._sidebar_xrgjg_74 ._item_xrgjg_17:hover>a:not([aria-current=page]){background:var(--colors-semantic-interactive-hover-subtle);border-color:var(--colors-semantic-interactive-hover-subtle);color:var(--colors-semantic-content-primary)}
|
package/dist/assets/index31.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
._button_qo4o4_1{align-items:center;background-color:var(--colors-semantic-bg-page);border:none;border-radius:var(--shape-border-radius-radius-lg);box-shadow:var(--shape-box-shadow-xs-position-x) var(--shape-box-shadow-xs-position-y) var(--shape-box-shadow-xs-blur) var(--shape-box-shadow-xs-spread) var(--shape-box-shadow-xs-color);color:var(--colors-semantic-content-secondary);cursor:pointer;display:inline-flex;font-family:var(--utils-tokens-font-family);font-size:var(--typography-font-sizes-body-md);font-weight:var(--font-font-weight-semibold);gap:var(--shape-spacing-xs);padding:var(--shape-spacing-sm);transition:all var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function)}._button_qo4o4_1._large_qo4o4_20{font-size:var(--typography-font-sizes-label-lg)}._button_qo4o4_1._small_qo4o4_24{font-size:var(--typography-font-sizes-label-sm);padding:var(--shape-spacing-xs)}._button_qo4o4_1:disabled{cursor:not-allowed;opacity:var(--utils-tokens-opacity-minimal)}._button_qo4o4_1._danger_qo4o4_34 [data-component=loading]{border-color:var(--colors-semantic-status-error-bg);border-bottom-color:var(--colors-semantic-status-error-content)}._simple_qo4o4_40{background-color:transparent;border:none;border-radius:0;box-shadow:none;margin:0;padding:0}._primary_qo4o4_49{background-color:var(--colors-semantic-primary-primary);color:var(--colors-semantic-bg-surface)}._primary_qo4o4_49:not([disabled]):hover{background-color:var(--colors-semantic-primary-primary-active)}._secondary_qo4o4_58{background-color:var(--colors-semantic-interactive-secondary-bg)}._secondary_qo4o4_58:not([disabled]):hover{background-color:var(--colors-semantic-interactive-secondary-hover)}._primary_qo4o4_49._danger_qo4o4_34,._secondary_qo4o4_58._danger_qo4o4_34{background-color:var(--colors-semantic-interactive-destructive-bg);color:var(--colors-semantic-bg-surface)}._primary_qo4o4_49._danger_qo4o4_34:not([disabled]):hover,._secondary_qo4o4_58._danger_qo4o4_34:not([disabled]):hover{background-color:var(--colors-semantic-interactive-destructive-hover);box-shadow:var(--shape-box-shadow-sm-position-x) var(--shape-box-shadow-sm-position-y) var(--shape-box-shadow-sm-blur) var(--shape-box-shadow-sm-spread) var(--shape-box-shadow-sm-color)}._tertiary_qo4o4_81{background-color:transparent;border:none;border-radius:var(--shape-border-radius-radius-md);box-shadow:none}._tertiary_qo4o4_81:not([disabled]):hover{background-color:var(--colors-semantic-interactive-hover-subtle)}._tertiary_qo4o4_81._danger_qo4o4_34{color:var(--colors-semantic-content-destructive)}._tertiary_qo4o4_81._danger_qo4o4_34:not([disabled]):active{outline:var(--shape-outline-selected) solid var(--colors-semantic-status-error-border)}._tertiary_qo4o4_81._danger_qo4o4_34:not([disabled]):hover{background-color:var(--colors-semantic-interactive-secondary-destructive-hover)}._primary_qo4o4_49:not([disabled]):active,._secondary_qo4o4_58:not([disabled]):active,._tertiary_qo4o4_81:not([disabled]):active{outline:var(--shape-outline-selected) solid var(--colors-semantic-primary-primary-subtle-border)}._primary_qo4o4_49:not([disabled]):focus,._secondary_qo4o4_58:not([disabled]):focus,._tertiary_qo4o4_81:not([disabled]):focus{outline:var(--shape-outline-focus) solid var(--colors-semantic-border-focus)}@media (width <= 768px){[data-component=button]{justify-content:center}}
|
package/dist/assets/index40.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
._combobox_ej99h_3{align-items:center;display:flex;flex-wrap:wrap;gap:var(--shape-spacing-2xs);min-height:calc(var(--scale-32) + var(--scale-8));padding:var(--shape-spacing-2xs) 0}._combobox-input_ej99h_12{background-color:transparent;border:0;box-shadow:none;color:var(--colors-semantic-content-primary);flex:1 1 calc(10 * var(--utils-tokens-unit));font:inherit;min-width:calc(10 * var(--utils-tokens-unit));padding:var(--utils-tokens-unit)}._combobox-input_ej99h_12::-moz-placeholder{color:var(--colors-semantic-content-tertiary)}._combobox-input_ej99h_12::placeholder{color:var(--colors-semantic-content-tertiary)}._dropdown_ej99h_27{min-width:0;position:relative;width:100%}._dropdown_ej99h_27 ._empty_ej99h_32,._dropdown_ej99h_27 ._group_ej99h_33,._dropdown_ej99h_27 ._placeholder_ej99h_34{color:var(--colors-semantic-content-secondary)}._dropdown_ej99h_27 ._empty_ej99h_32{padding:var(--scale-4) var(--scale-8)}._dropdown_ej99h_27 ._filter_ej99h_42{font-size:var(--typography-font-sizes-label-sm);margin:var(--scale-4);width:calc(100% - var(--shape-spacing-xs))}._dropdown_ej99h_27 ._group_ej99h_33{flex-shrink:0}._dropdown_ej99h_27 ._native_ej99h_52{height:var(--scale-1);left:0;opacity:0;pointer-events:none;position:absolute;top:0;width:var(--scale-1)}._dropdown_ej99h_27 ._option_ej99h_62{align-items:center;background-color:transparent;border:0;border-radius:var(--shape-border-radius-radius-md);color:inherit;display:flex;font-weight:var(--font-font-weight-regular);gap:var(--scale-8);justify-content:space-between;overflow:hidden;text-align:left;white-space:nowrap;width:100%}._dropdown_ej99h_27 ._option_ej99h_62:disabled{color:var(--colors-neutral-300);cursor:not-allowed}._dropdown_ej99h_27 ._options_ej99h_83{margin:0;max-height:calc(var(--scale-32) * 8);overflow-y:auto;padding:var(--scale-4);scrollbar-color:var(--colors-semantic-border-default) transparent;scrollbar-width:thin}._dropdown_ej99h_27 ._options_ej99h_83::-webkit-scrollbar{width:var(--scale-8)}._dropdown_ej99h_27 ._options_ej99h_83::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:var(--colors-semantic-bg-surface);border:var(--scale-2) solid transparent;border-radius:var(--shape-border-radius-radius-md)}._dropdown_ej99h_27 ._options_ej99h_83::-webkit-scrollbar-track{background:transparent}._dropdown_ej99h_27 ._panel_ej99h_107{background-color:var(--colors-semantic-bg-surface);border:var(--scale-1) solid var(--colors-semantic-border-default);border-radius:var(--shape-border-radius-radius-md);box-shadow:var(--shape-box-shadow-sm-position-x) var(--shape-box-shadow-sm-position-y) var(--shape-box-shadow-sm-blur) var(--shape-box-shadow-sm-spread) var(--shape-box-shadow-sm-color);display:grid;left:0;margin-top:var(--shape-spacing-2xs);max-height:80vh;max-width:min(95vw,var(--shape-width-max));min-width:100%;overflow:hidden;padding:var(--scale-4);position:absolute;width:-moz-max-content;width:max-content;z-index:var(--utils-tokens-z-max)}._dropdown_ej99h_27 ._placeholder_ej99h_34{color:var(--colors-semantic-content-primary);font-weight:var(--font-font-weight-regular)}._dropdown_ej99h_27 ._selected_ej99h_132{font-weight:var(--font-font-weight-semibold)}._dropdown_ej99h_27 ._text_ej99h_136{flex:1 1 auto;font-size:var(--typography-font-sizes-label-sm);line-height:var(--typography-font-sizes-label-lg);min-width:0;white-space:pre-wrap}._dropdown_ej99h_27 ._trigger_ej99h_144{border:var(--scale-1) solid var(--colors-semantic-border-default);border-radius:var(--shape-border-radius-radius-md);box-shadow:var(--shape-box-shadow-xs-position-x) var(--shape-box-shadow-xs-position-y) var(--shape-box-shadow-xs-blur) var(--shape-box-shadow-xs-spread) var(--shape-box-shadow-xs-color);color:var(--colors-semantic-content-primary);font-size:var(--typography-font-sizes-body-md);padding:var(--utils-tokens-unit);transition:border var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function);align-items:center;background-color:var(--colors-semantic-bg-surface);display:flex;font-weight:var(--font-font-weight-regular);max-width:100%;min-height:calc(var(--scale-32) + var(--scale-8));overflow:hidden;padding-right:var(--scale-32);padding-top:calc(var(--utils-tokens-unit) - var(--scale-1));position:relative;text-align:left;width:100%}._dropdown_ej99h_27 ._trigger_ej99h_144::-moz-placeholder{color:var(--colors-semantic-content-tertiary)}._dropdown_ej99h_27 ._trigger_ej99h_144::placeholder{color:var(--colors-semantic-content-tertiary)}._dropdown_ej99h_27 ._trigger_ej99h_144:disabled{background-color:var(--colors-semantic-interactive-disabled);color:var(--colors-semantic-content-primary);pointer-events:none}._dropdown_ej99h_27 ._trigger_ej99h_144:after{background-image:var(--icon-svg);background-position:center;background-repeat:no-repeat;background-size:contain;content:"";height:var(--utils-tokens-icon-medium);position:absolute;right:var(--scale-8);top:50%;transform:translateY(-50%);transition:transform var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function);width:var(--utils-tokens-icon-medium)}._dropdown_ej99h_27 ._trigger_ej99h_144[data-open=true]:after{transform:translateY(-50%) rotate(180deg)}._dropdown_ej99h_27._minimal_ej99h_181{--dropdown-background: rgb(0 0 0 / 85%);--dropdown-muted: rgb(255 255 255 / 65%);--dropdown-placeholder: rgb(255 255 255 / 65%)}._dropdown_ej99h_27._minimal_ej99h_181 ._empty_ej99h_32,._dropdown_ej99h_27._minimal_ej99h_181 ._group_ej99h_33{color:var(--dropdown-muted)}._dropdown_ej99h_27._minimal_ej99h_181 ._filter_ej99h_42{border:0;box-shadow:none;padding:var(--scale-4);padding-left:calc(var(--scale-32) - var(--scale-4))}._dropdown_ej99h_27._minimal_ej99h_181 ._option_ej99h_62{color:var(--colors-semantic-bg-surface)}._dropdown_ej99h_27._minimal_ej99h_181 ._option_ej99h_62:disabled{color:#ffffff73}._dropdown_ej99h_27._minimal_ej99h_181 ._option_ej99h_62:not([disabled]):hover{background-color:var(--colors-semantic-primary-primary-hover)}._dropdown_ej99h_27._minimal_ej99h_181 ._panel_ej99h_107{background-color:var(--dropdown-background);border:none;color:var(--colors-semantic-bg-surface);margin-top:calc(var(--scale-12) * -1)}._dropdown_ej99h_27._minimal_ej99h_181 ._panel_ej99h_107 input{background-color:transparent;border-color:var(--colors-neutral-300);color:var(--colors-semantic-bg-surface)}._dropdown_ej99h_27._minimal_ej99h_181 ._panel_ej99h_107 input::-moz-placeholder{color:var(--dropdown-muted)}._dropdown_ej99h_27._minimal_ej99h_181 ._panel_ej99h_107 input::placeholder{color:var(--dropdown-muted)}._dropdown_ej99h_27._minimal_ej99h_181 ._placeholder_ej99h_34{color:var(--dropdown-placeholder)}._dropdown_ej99h_27._minimal_ej99h_181 ._trigger_ej99h_144{background-color:var(--dropdown-background);border:none;color:var(--colors-semantic-bg-surface);margin-bottom:var(--utils-tokens-unit);padding:0 var(--shape-spacing-xs)}._dropdown_ej99h_27._inline_ej99h_240{flex:1 1 auto;min-width:0}._dropdown_ej99h_27._inline_ej99h_240 ._combobox_ej99h_3{border:0;border-radius:0;box-shadow:none;outline:0;min-height:calc(var(--scale-32) + var(--scale-8));padding:0}._dropdown_ej99h_27._inline_ej99h_240 ._combobox-input_ej99h_12{border:0;border-radius:0;box-shadow:none;outline:0;padding:var(--shape-spacing-xs) 0}._dropdown_ej99h_27._inline_ej99h_240 ._text_ej99h_136{font-size:var(--typography-font-sizes-body-md)}._dropdown_ej99h_27._inline_ej99h_240 ._trigger_ej99h_144{border:0;border-radius:0;box-shadow:none;outline:0;min-height:calc(var(--scale-32) + var(--scale-8));padding-bottom:var(--shape-spacing-xs);padding-left:0;padding-top:var(--shape-spacing-xs)}._label_ej99h_272{display:grid;gap:var(--scale-8);width:100%}._inline-field_ej99h_278{align-items:center;border-bottom:var(--scale-1) solid var(--colors-semantic-border-default);display:flex;gap:var(--shape-spacing-sm);min-height:calc(var(--scale-32) + var(--scale-8));transition:border-color var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function);width:100%}._inline-field_ej99h_278:focus-within{border-bottom-color:var(--colors-semantic-primary-primary)}._inline-field_ej99h_278>span{color:var(--colors-semantic-content-tertiary);flex:none;margin-bottom:0!important}
|
package/dist/assets/index42.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.
|
|
1
|
+
._field_1mb0i_3{min-width:0;width:100%}._editor_1mb0i_8{background-color:var(--colors-semantic-bg-surface);border:var(--scale-1) solid var(--colors-semantic-border-default);border-radius:var(--shape-border-radius-radius-md);box-shadow:var(--shape-box-shadow-xs-position-x) var(--shape-box-shadow-xs-position-y) var(--shape-box-shadow-xs-blur) var(--shape-box-shadow-xs-spread) var(--shape-box-shadow-xs-color)}._editor_1mb0i_8 [role=textbox]{border-radius:0 0 var(--shape-border-radius-radius-md) var(--shape-border-radius-radius-md);box-sizing:border-box;line-height:1.25;max-height:var(--editor-max-height);min-height:var(--editor-min-height);overflow-y:auto;padding:var(--scale-8) var(--utils-tokens-unit)}._editor_1mb0i_8 img{max-width:100%}@media (width <= 370px){._editor_1mb0i_8 [data-component=toolbar]:first-of-type{justify-content:space-between}._editor_1mb0i_8 button{padding-inline:calc(var(--scale-12) - var(--scale-1))!important}}._has-files_1mb0i_42 [role=textbox]{border-radius:0}._invalid_1mb0i_46{border-color:var(--colors-semantic-status-error-border)}._error_1mb0i_50{color:var(--colors-semantic-status-error-content);font-size:var(--typography-font-sizes-body-sm);margin-top:var(--scale-4)}._dragging_1mb0i_56{background-color:var(--colors-semantic-primary-primary-subtle)}._content_1mb0i_60{position:relative;transition:background-color var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function)}._files_1mb0i_66{border-top:var(--scale-1) solid var(--colors-semantic-border-default);display:flex;flex-wrap:wrap;gap:var(--scale-8);padding:var(--scale-8) var(--utils-tokens-unit)}._placeholder_1mb0i_74{color:var(--colors-semantic-content-secondary);left:var(--utils-tokens-unit);pointer-events:none;position:absolute;top:var(--scale-8)}._fill_1mb0i_82{display:grid;grid-template-rows:minmax(0,1fr) auto;height:100%;min-height:0}._fill-editor_1mb0i_89{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%;min-height:0}._fill-editor_1mb0i_89 ._content_1mb0i_60{min-height:0}._fill-editor_1mb0i_89 [role=textbox]{height:100%;max-height:none}._meta_1mb0i_105{align-items:center;display:grid;flex-basis:100%;grid-template-columns:minmax(0,1fr) auto auto auto;opacity:0;transition:all var(--utils-tokens-transition-duration) var(--utils-tokens-transition-timing-function)}._meta_1mb0i_105._active_1mb0i_114{border-top:var(--scale-1) solid var(--colors-semantic-border-default);height:auto;opacity:1}._meta_1mb0i_105 input{border-radius:0;width:100%}._image-sizes_1mb0i_126{display:flex;flex-wrap:wrap;gap:var(--scale-4);padding:var(--scale-4)}._submit_1mb0i_133{margin-left:auto!important}._bold_1mb0i_137{font-weight:700}._italic_1mb0i_141{font-style:italic}._underline_1mb0i_145{text-decoration:underline}._link_1mb0i_149{color:var(--colors-semantic-primary-primary);cursor:pointer;text-decoration:underline}._list_1mb0i_155,._paragraph_1mb0i_156{margin:var(--scale-8) 0}._paragraph_1mb0i_156:first-child{margin-top:0}._list_1mb0i_155{list-style-type:disc!important}._list_1mb0i_155 li{list-style:inherit;margin-bottom:var(--scale-8);margin-left:var(--scale-16)}@media (width < 480px){._image-sizes_1mb0i_126{grid-row:1;grid-column:1 / 5}}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index31.css');const t=require("react/jsx-runtime"),g=require("../../classix-5H4IWnMA.cjs"),y=require("../loading/index.cjs"),p=require("../badge/index.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index31.css');const t=require("react/jsx-runtime"),g=require("../../classix-5H4IWnMA.cjs"),y=require("../loading/index.cjs"),p=require("../badge/index.cjs"),q=require("../icon/index.cjs"),b="_button_qo4o4_1",x="_large_qo4o4_20",j="_small_qo4o4_24",f="_danger_qo4o4_34",h="_simple_qo4o4_40",v="_primary_qo4o4_49",B="_secondary_qo4o4_58",S="_tertiary_qo4o4_81",e={button:b,large:x,small:j,danger:f,simple:h,primary:v,secondary:B,tertiary:S},z={primary:e.primary,secondary:e.secondary,simple:e.simple,tertiary:e.tertiary},I={large:e.large,medium:e.medium,small:e.small};function L({badge:r,children:s,className:a,disabled:i=!1,icon:n,intent:l="default",isLoading:m=!1,onClick:c,ref:_,size:o="medium",variant:d="secondary",...u}){return t.jsxs("button",{className:g.t(e.button,z[d],I[o],a,l==="danger"&&e.danger),disabled:i,onClick:c,ref:_,type:"button",...u,"data-component":"button",children:[m?t.jsx(y.Loading,{size:o==="large"?"medium":"small"}):n&&t.jsx(q.Icon,{name:n,size:o==="large"?"medium":"small"}),s,t.jsx(p.Badge,{variant:"highlight",children:r})]})}exports.Button=L;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { t as
|
|
3
|
-
import { Loading as
|
|
1
|
+
import { jsxs as y, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { t as g } from "../../classix-DG18itHa.js";
|
|
3
|
+
import { Loading as u } from "../loading/index.js";
|
|
4
4
|
import { Badge as f } from "../badge/index.js";
|
|
5
|
-
import { Icon as
|
|
6
|
-
import '../../assets/index31.css';const b = "
|
|
5
|
+
import { Icon as q } from "../icon/index.js";
|
|
6
|
+
import '../../assets/index31.css';const b = "_button_qo4o4_1", h = "_large_qo4o4_20", x = "_small_qo4o4_24", j = "_danger_qo4o4_34", v = "_simple_qo4o4_40", B = "_primary_qo4o4_49", z = "_secondary_qo4o4_58", I = "_tertiary_qo4o4_81", o = {
|
|
7
7
|
button: b,
|
|
8
8
|
large: h,
|
|
9
9
|
small: x,
|
|
@@ -13,33 +13,33 @@ import '../../assets/index31.css';const b = "_button_uik79_1", h = "_large_uik79
|
|
|
13
13
|
secondary: z,
|
|
14
14
|
tertiary: I
|
|
15
15
|
}, L = {
|
|
16
|
-
primary:
|
|
17
|
-
secondary:
|
|
18
|
-
simple:
|
|
19
|
-
tertiary:
|
|
16
|
+
primary: o.primary,
|
|
17
|
+
secondary: o.secondary,
|
|
18
|
+
simple: o.simple,
|
|
19
|
+
tertiary: o.tertiary
|
|
20
20
|
}, N = {
|
|
21
|
-
large:
|
|
22
|
-
medium:
|
|
23
|
-
small:
|
|
21
|
+
large: o.large,
|
|
22
|
+
medium: o.medium,
|
|
23
|
+
small: o.small
|
|
24
24
|
};
|
|
25
25
|
function E({
|
|
26
|
-
badge:
|
|
26
|
+
badge: e,
|
|
27
27
|
children: n,
|
|
28
28
|
className: s,
|
|
29
29
|
disabled: m = !1,
|
|
30
|
-
icon:
|
|
31
|
-
intent:
|
|
32
|
-
isLoading:
|
|
33
|
-
onClick:
|
|
34
|
-
ref:
|
|
35
|
-
size:
|
|
36
|
-
variant:
|
|
37
|
-
...
|
|
30
|
+
icon: a,
|
|
31
|
+
intent: l = "default",
|
|
32
|
+
isLoading: i = !1,
|
|
33
|
+
onClick: _,
|
|
34
|
+
ref: c,
|
|
35
|
+
size: r = "medium",
|
|
36
|
+
variant: d = "secondary",
|
|
37
|
+
...p
|
|
38
38
|
}) {
|
|
39
|
-
return /* @__PURE__ */
|
|
40
|
-
|
|
39
|
+
return /* @__PURE__ */ y("button", { className: g(o.button, L[d], N[r], s, l === "danger" && o.danger), disabled: m, onClick: _, ref: c, type: "button", ...p, "data-component": "button", children: [
|
|
40
|
+
i ? /* @__PURE__ */ t(u, { size: r === "large" ? "medium" : "small" }) : a && /* @__PURE__ */ t(q, { name: a, size: r === "large" ? "medium" : "small" }),
|
|
41
41
|
n,
|
|
42
|
-
/* @__PURE__ */
|
|
42
|
+
/* @__PURE__ */ t(f, { variant: "highlight", children: e })
|
|
43
43
|
] });
|
|
44
44
|
}
|
|
45
45
|
export {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index40.css');const l=require("react/jsx-runtime"),j=require("../../classix-5H4IWnMA.cjs"),a=require("react"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index40.css');const l=require("react/jsx-runtime"),j=require("../../classix-5H4IWnMA.cjs"),a=require("react"),F=require("../button/index.cjs"),de=require("../../icons-Dv_p0bUF.cjs"),X=require("../../index-CQlMdqOp.cjs"),pe=require("../list/index.cjs"),V=require("../../index-Bt7vnwji.cjs");function L(t){return typeof t=="string"||typeof t=="number"?String(t):Array.isArray(t)?t.map(L).join(" "):a.isValidElement(t)?L(t.props.children):""}function fe(t){return a.isValidElement(t)&&t.type==="option"}function me(t){return a.isValidElement(t)&&t.type==="optgroup"}function he(t){return a.isValidElement(t)&&t.type===a.Fragment}function _e(t){return a.isValidElement(t)&&t.type===V.Select}function M(t,i,s=!1){const r=[];return a.Children.forEach(t,n=>{if(he(n))r.push(...M(n.props.children,i,s));else if(fe(n)){const c=L(n.props.children).trim(),f=n.props.value!=null?String(n.props.value):c;r.push({disabled:s||!!n.props.disabled,groupLabel:i,hidden:!!n.props.hidden,isPlaceholder:!!(n.props.hidden&&f===""),label:n.props.children,selected:!!n.props.selected,text:c,value:f})}else me(n)&&r.push(...M(n.props.children,n.props.label,s||!!n.props.disabled))}),r}function ge(t){const i=t.trim();if(!i)return null;const r=[.../[*?]/.test(i)?i:`*${i}*`].map(n=>n==="*"?".*":n==="?"?".":n.replace(/[|\\{}()[\]^$+.,]/g,"\\$&")).join("");return new RegExp(`^${r}$`,"i")}function xe(t,i){const s=ge(i),r=t.filter(n=>!n.hidden&&!n.isPlaceholder);return s?r.filter(n=>s.test([n.groupLabel,n.text,n.value].filter(Boolean).join(" "))):r}function be(t,i){return t.find(s=>s.value===i)??t.find(s=>s.isPlaceholder)??t[0]}function je(t,i,s){var r,n;return i!=null?String(i):s!=null?String(s):((r=t.find(c=>c.selected))==null?void 0:r.value)??((n=t[0])==null?void 0:n.value)??""}function ve(t){if(_e(t)){const{children:i,placeholder:s,...r}=t.props;return{children:l.jsxs(l.Fragment,{children:[s&&l.jsx("option",{hidden:!0,value:"",children:s}),i]}),props:r}}return{children:t.props.children,props:t.props}}const ye="_combobox_ej99h_3",we="_dropdown_ej99h_27",Se="_empty_ej99h_32",Ne="_group_ej99h_33",Ce="_placeholder_ej99h_34",Ee="_filter_ej99h_42",Ve="_native_ej99h_52",Le="_option_ej99h_62",Re="_options_ej99h_83",$e="_panel_ej99h_107",Be="_selected_ej99h_132",Ie="_text_ej99h_136",qe="_trigger_ej99h_144",De="_minimal_ej99h_181",Pe="_inline_ej99h_240",ke="_label_ej99h_272",o={combobox:ye,"combobox-input":"_combobox-input_ej99h_12",dropdown:we,empty:Se,group:Ne,placeholder:Ce,filter:Ee,native:Ve,option:Le,options:Re,panel:$e,selected:Be,text:Ie,trigger:qe,minimal:De,inline:Pe,label:ke,"inline-field":"_inline-field_ej99h_278"};function Y(t,i){return{"--icon-svg":de.iconSVG(t,i)}}const Fe=({children:t,className:i,combobox:s=!1,createOption:r,emptyLabel:n="No matches found",label:c,renderOption:f,searchPlaceholder:R="Filter",selectedItems:Z,variant:g="default",...ee})=>{const $=ve(t),{defaultValue:te,onChange:B,value:I,...ne}=$.props,v=V.sanitizeSelectProps(ne),{className:se,...re}=v,W=a.useRef(null),G=a.useRef(null),y=a.useId(),Q=a.useRef(null),m=a.useRef(null),x=M($.children),b=I!=null,q=je(x,I,te),[D,P]=a.useState(()=>q),[u,p]=a.useState(!1),[w,S]=a.useState(""),N=b?String(I):D,z={default:V.resolveColor("--colors-semantic-content-secondary"),white:V.resolveColor("--color-white","white")},O=g==="minimal"?z.white:z.default,C=be(x,N),le=Y("CaretDown",O),oe=Y("MagnifyingGlass",O),T=xe(x,w),h=w.trim(),E=!!(s&&r&&h&&r.isValid(h)),ie=c&&g==="inline"?X.formatInlineLabel(c):c,A=e=>e?(f==null?void 0:f({groupLabel:e.groupLabel,isSelected:e.value===N,label:e.label,text:e.text,value:e.value}))??e.label:"Select an option";a.useEffect(()=>{!b&&!x.some(e=>e.value===D)&&P(q)},[q,D,b,x]),a.useEffect(()=>{var e;if(!u){S("");return}(e=m.current)==null||e.focus()},[u]),a.useEffect(()=>{if(!u)return;const e=d=>{var _;(_=G.current)!=null&&_.contains(d.target)||p(!1)};return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[u]);const ae=e=>{b||P(e.target.value),B==null||B(e)},k=()=>{var e;p(!1),s||(e=W.current)==null||e.focus()},K=()=>{var e;S(""),p(!0),(e=m.current)==null||e.focus()},H=()=>{!r||!E||(r.onCreate(h),K())},ce=e=>{var U;b||P(e);const d=Q.current;if(!d){k();return}const _=(U=Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype,"value"))==null?void 0:U.set;_==null||_.call(d,e),d.dispatchEvent(new Event("change",{bubbles:!0})),s?K():k()},ue=e=>{e.key==="Escape"&&k(),e.key==="Enter"&&e.target===m.current&&E&&(e.preventDefault(),H())},J=l.jsxs("div",{className:j.t(o.dropdown,g==="inline"&&o.inline,g==="minimal"&&o.minimal,i),onKeyDown:ue,ref:G,...ee,children:[l.jsx("select",{...re,"aria-hidden":"true",className:j.t(o.native,se),onChange:ae,ref:Q,tabIndex:-1,value:N,children:$.children}),s?l.jsxs("div",{className:o.combobox,onClick:()=>{var e;return(e=m.current)==null?void 0:e.focus()},children:[Z,l.jsx("input",{"aria-autocomplete":"list","aria-expanded":u,"aria-label":v["aria-label"]??c??R,className:o["combobox-input"],disabled:v.disabled,onChange:e=>{S(e.target.value),p(!0)},onClick:()=>p(!0),onFocus:()=>p(!0),placeholder:R||void 0,ref:m,role:"combobox",type:"text",value:w})]}):l.jsx(F.Button,{"aria-expanded":u,"aria-haspopup":"dialog","aria-labelledby":c?`${y} ${y}-value`:void 0,className:j.t(o.trigger,(C==null?void 0:C.isPlaceholder)&&o.placeholder),"data-open":u?"true":void 0,disabled:v.disabled,onClick:()=>p(e=>!e),ref:W,style:le,variant:"simple",children:l.jsx("span",{className:o.text,id:`${y}-value`,children:A(C)})}),u&&l.jsxs("div",{className:o.panel,children:[!s&&l.jsx(X.Input,{"aria-label":"Filter",className:o.filter,icon:"MagnifyingGlass",onChange:e=>S(e.target.value),placeholder:R,ref:m,style:oe,type:"search",value:w}),l.jsxs(pe.List,{"aria-label":"Dropdown",className:o.options,children:[T.map(e=>{const d=e.value===N;return l.jsx("li",{"data-component":"dropdown",children:l.jsxs(F.Button,{"aria-label":d?`${e.text}, selected`:e.text,className:j.t(o.option,d&&o.selected),disabled:e.disabled,onClick:()=>ce(e.value),variant:"tertiary",children:[l.jsx("span",{className:o.text,children:A(e)}),e.groupLabel&&l.jsx("small",{className:o.group,children:e.groupLabel})]})},`${e.groupLabel??"root"}-${e.value}`)}),E&&r&&l.jsx("li",{children:l.jsx(F.Button,{"aria-label":L(r.render(h))||h,className:o.option,onClick:H,variant:"tertiary",children:l.jsx("span",{className:o.text,children:r.render(h)})})}),T.length===0&&!E&&l.jsx("li",{className:o.empty,children:n})]})]})]});return c?l.jsxs("div",{className:j.t(o.label,g==="inline"&&o["inline-field"]),"data-component":"dropdown",children:[l.jsx("span",{id:y,children:ie}),J]}):J};exports.Dropdown=Fe;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/dropdown/options.tsx","../../../src/components/dropdown/index.tsx"],"sourcesContent":["import React, { Children, isValidElement } from 'react';\n\nimport { Select, type SelectProps } from '@/components/select';\n\ntype NativeSelectProps = Omit<React.ComponentPropsWithoutRef<'select'>, 'children' | 'multiple'> & {\n children: React.ReactNode;\n multiple?: false;\n};\n\ntype NativeSelectElement = React.ReactElement<NativeSelectProps, 'select'>;\ntype WrappedSelectElement = React.ReactElement<SelectProps, typeof Select>;\n\nexport type DropdownSelectElement = NativeSelectElement | WrappedSelectElement;\n\nexport type DropdownOption = {\n disabled: boolean;\n groupLabel?: string;\n hidden: boolean;\n isPlaceholder: boolean;\n label: React.ReactNode;\n selected: boolean;\n text: string;\n value: string;\n};\n\nexport type DropdownRenderOption = Pick<\n DropdownOption,\n 'groupLabel' | 'label' | 'text' | 'value'\n> & {\n isSelected: boolean;\n};\n\nexport function getNodeText(node: React.ReactNode): string {\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(getNodeText).join(' ');\n if (isValidElement<{ children?: React.ReactNode }>(node)) return getNodeText(node.props.children);\n return '';\n}\n\nfunction isOptionElement(\n node: React.ReactNode\n): node is React.ReactElement<React.ComponentPropsWithoutRef<'option'>, 'option'> {\n return isValidElement(node) && node.type === 'option';\n}\n\nfunction isOptGroupElement(\n node: React.ReactNode\n): node is React.ReactElement<React.ComponentPropsWithoutRef<'optgroup'>, 'optgroup'> {\n return isValidElement(node) && node.type === 'optgroup';\n}\n\nfunction isFragmentElement(\n node: React.ReactNode\n): node is React.ReactElement<{ children?: React.ReactNode }, typeof React.Fragment> {\n return isValidElement(node) && node.type === React.Fragment;\n}\n\nfunction isWrappedSelectElement(node: React.ReactNode): node is WrappedSelectElement {\n return isValidElement(node) && node.type === Select;\n}\n\nexport function extractOptions(\n children: React.ReactNode,\n groupLabel?: string,\n groupDisabled = false\n): DropdownOption[] {\n const options: DropdownOption[] = [];\n\n Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n options.push(...extractOptions(child.props.children, groupLabel, groupDisabled));\n } else if (isOptionElement(child)) {\n const text = getNodeText(child.props.children).trim();\n const value = child.props.value != null ? String(child.props.value) : text;\n options.push({\n disabled: groupDisabled || Boolean(child.props.disabled),\n groupLabel,\n hidden: Boolean(child.props.hidden),\n isPlaceholder: Boolean(child.props.hidden && value === ''),\n label: child.props.children,\n selected: Boolean(child.props.selected),\n text,\n value,\n });\n } else if (isOptGroupElement(child)) {\n options.push(\n ...extractOptions(\n child.props.children,\n child.props.label,\n groupDisabled || Boolean(child.props.disabled)\n )\n );\n }\n });\n\n return options;\n}\n\nfunction buildWildcardMatcher(query: string) {\n const trimmedQuery = query.trim();\n if (!trimmedQuery) return null;\n\n const wildcardQuery = /[*?]/.test(trimmedQuery) ? trimmedQuery : `*${trimmedQuery}*`;\n const expression = [...wildcardQuery]\n .map((character) => {\n if (character === '*') return '.*';\n if (character === '?') return '.';\n return character.replace(/[|\\\\{}()[\\]^$+.,]/g, '\\\\$&');\n })\n .join('');\n\n return new RegExp(`^${expression}$`, 'i');\n}\n\nexport function filterOptions(options: DropdownOption[], query: string) {\n const matcher = buildWildcardMatcher(query);\n const selectableOptions = options.filter((option) => !option.hidden && !option.isPlaceholder);\n return matcher\n ? selectableOptions.filter((option) =>\n matcher.test([option.groupLabel, option.text, option.value].filter(Boolean).join(' '))\n )\n : selectableOptions;\n}\n\nexport function getDisplayOption(options: DropdownOption[], selectedValue: string) {\n return (\n options.find((option) => option.value === selectedValue) ??\n options.find((option) => option.isPlaceholder) ??\n options[0]\n );\n}\n\nexport function getInitialValue(\n options: DropdownOption[],\n value?: NativeSelectProps['value'],\n defaultValue?: NativeSelectProps['defaultValue']\n) {\n if (value != null) return String(value);\n if (defaultValue != null) return String(defaultValue);\n return options.find((option) => option.selected)?.value ?? options[0]?.value ?? '';\n}\n\nexport function normalizeSelectElement(selectElement: DropdownSelectElement) {\n if (isWrappedSelectElement(selectElement)) {\n const { children, placeholder, ...props } = selectElement.props;\n return {\n children: (\n <>\n {placeholder && (\n <option\n hidden\n value=''\n >\n {placeholder}\n </option>\n )}\n {children}\n </>\n ),\n props,\n };\n }\n\n return { children: selectElement.props.children, props: selectElement.props };\n}\n","import cx from 'classix';\nimport React, { useEffect, useId, useRef, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { type IconName, iconSVG } from '@/components/icon/icons';\nimport { Input } from '@/components/input';\nimport { List } from '@/components/list';\nimport { sanitizeSelectProps } from '@/components/select/sanitize-select-props';\nimport { resolveColor } from '@/utils/color';\nimport { formatInlineLabel } from '@/utils/text';\n\nimport {\n type DropdownOption,\n type DropdownRenderOption,\n type DropdownSelectElement,\n extractOptions,\n filterOptions,\n getDisplayOption,\n getInitialValue,\n getNodeText,\n normalizeSelectElement,\n} from './options';\nimport styles from './styles.module.css';\n\nexport type { DropdownRenderOption } from './options';\n\nexport type DropdownCreateOption = {\n isValid: (value: string) => boolean;\n onCreate: (value: string) => void;\n render: (value: string) => React.ReactNode;\n};\n\nexport type DropdownProps = Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> & {\n children: DropdownSelectElement;\n combobox?: boolean;\n createOption?: DropdownCreateOption;\n emptyLabel?: string;\n label?: string;\n renderOption?: (option: DropdownRenderOption) => React.ReactNode;\n searchPlaceholder?: string;\n selectedItems?: React.ReactNode;\n variant?: 'default' | 'inline' | 'minimal';\n};\n\ntype withVars = React.CSSProperties & {\n '--icon-svg'?: string;\n};\n\nfunction getIconWithVars(icon: IconName, color: string): withVars {\n return {\n '--icon-svg': iconSVG(icon, color),\n };\n}\n\nexport const Dropdown = ({\n children: selectElement,\n className,\n combobox = false,\n createOption,\n emptyLabel = 'No matches found',\n label,\n renderOption,\n searchPlaceholder = 'Filter',\n selectedItems,\n variant = 'default',\n ...props\n}: DropdownProps) => {\n const normalizedSelect = normalizeSelectElement(selectElement);\n const { defaultValue, onChange, value, ...restSelectProps } = normalizedSelect.props;\n const selectProps = sanitizeSelectProps(restSelectProps);\n const { className: selectClassName, ...nativeSelectProps } = selectProps;\n const buttonRef = useRef<HTMLButtonElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const labelId = useId();\n const nativeSelectRef = useRef<HTMLSelectElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const options = extractOptions(normalizedSelect.children);\n const isControlled = value != null;\n const initialValue = getInitialValue(options, value, defaultValue);\n const [internalValue, setInternalValue] = useState(() => initialValue);\n const [isOpen, setIsOpen] = useState(false);\n const [query, setQuery] = useState('');\n const selectedValue = isControlled ? String(value) : internalValue;\n const iconColors = {\n default: resolveColor('--colors-semantic-content-secondary'),\n white: resolveColor('--color-white', 'white'),\n };\n const dropdownIconColor = variant === 'minimal' ? iconColors.white : iconColors.default;\n const displayOption = getDisplayOption(options, selectedValue);\n const triggerWithVars = getIconWithVars('CaretDown', dropdownIconColor);\n const filterWithVars = getIconWithVars('MagnifyingGlass', dropdownIconColor);\n const filteredOptions = filterOptions(options, query);\n const customValue = query.trim();\n const canCreateOption = Boolean(\n combobox && createOption && customValue && createOption.isValid(customValue)\n );\n const displayLabel = label && variant === 'inline' ? formatInlineLabel(label) : label;\n const renderDropdownOption = (option: DropdownOption | undefined) => {\n if (!option) return 'Select an option';\n\n return (\n renderOption?.({\n groupLabel: option.groupLabel,\n isSelected: option.value === selectedValue,\n label: option.label,\n text: option.text,\n value: option.value,\n }) ?? option.label\n );\n };\n\n useEffect(() => {\n if (!isControlled && !options.some((option) => option.value === internalValue)) {\n setInternalValue(initialValue);\n }\n }, [initialValue, internalValue, isControlled, options]);\n\n useEffect(() => {\n if (!isOpen) {\n setQuery('');\n return;\n }\n\n searchRef.current?.focus();\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handlePointerDown = (event: MouseEvent) => {\n if (!containerRef.current?.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n\n return () => {\n document.removeEventListener('mousedown', handlePointerDown);\n };\n }, [isOpen]);\n\n const handleNativeChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n\n onChange?.(event);\n };\n\n const closeMenu = () => {\n setIsOpen(false);\n if (!combobox) {\n buttonRef.current?.focus();\n }\n };\n\n const continueComboboxSelection = () => {\n setQuery('');\n setIsOpen(true);\n searchRef.current?.focus();\n };\n\n const commitCustomValue = () => {\n if (!createOption || !canCreateOption) return;\n\n createOption.onCreate(customValue);\n continueComboboxSelection();\n };\n\n const commitValue = (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n const nativeSelect = nativeSelectRef.current;\n\n if (!nativeSelect) {\n closeMenu();\n return;\n }\n\n const valueSetter = Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype, 'value')?.set;\n\n valueSetter?.call(nativeSelect, nextValue);\n nativeSelect.dispatchEvent(new Event('change', { bubbles: true }));\n if (combobox) {\n continueComboboxSelection();\n } else {\n closeMenu();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape') {\n closeMenu();\n }\n\n if (event.key === 'Enter' && event.target === searchRef.current && canCreateOption) {\n event.preventDefault();\n commitCustomValue();\n }\n };\n\n const dropdown = (\n <div\n className={cx(\n styles.dropdown,\n variant === 'inline' && styles.inline,\n variant === 'minimal' && styles.minimal,\n className\n )}\n onKeyDown={handleKeyDown}\n ref={containerRef}\n {...props}\n >\n <select\n {...nativeSelectProps}\n aria-hidden='true'\n className={cx(styles.native, selectClassName)}\n onChange={handleNativeChange}\n ref={nativeSelectRef}\n tabIndex={-1}\n value={selectedValue}\n >\n {normalizedSelect.children}\n </select>\n {combobox ? (\n <div\n className={styles.combobox}\n onClick={() => searchRef.current?.focus()}\n >\n {selectedItems}\n <input\n aria-autocomplete='list'\n aria-expanded={isOpen}\n aria-label={selectProps['aria-label'] ?? label ?? searchPlaceholder}\n className={styles['combobox-input']}\n disabled={selectProps.disabled}\n onChange={(event) => {\n setQuery(event.target.value);\n setIsOpen(true);\n }}\n onClick={() => setIsOpen(true)}\n onFocus={() => setIsOpen(true)}\n placeholder={searchPlaceholder || undefined}\n ref={searchRef}\n role='combobox'\n type='text'\n value={query}\n />\n </div>\n ) : (\n <Button\n aria-expanded={isOpen}\n aria-haspopup='dialog'\n aria-labelledby={label ? `${labelId} ${labelId}-value` : undefined}\n className={cx(styles.trigger, displayOption?.isPlaceholder && styles.placeholder)}\n data-open={isOpen ? 'true' : undefined}\n disabled={selectProps.disabled}\n onClick={() => setIsOpen((currentValue) => !currentValue)}\n ref={buttonRef}\n style={triggerWithVars}\n variant='tertiary'\n >\n <span\n className={styles.text}\n id={`${labelId}-value`}\n >\n {renderDropdownOption(displayOption)}\n </span>\n </Button>\n )}\n {isOpen && (\n <div className={styles.panel}>\n {!combobox && (\n <Input\n aria-label='Filter'\n className={styles.filter}\n icon='MagnifyingGlass'\n onChange={(event) => setQuery(event.target.value)}\n placeholder={searchPlaceholder}\n ref={searchRef}\n style={filterWithVars}\n type='search'\n value={query}\n />\n )}\n <List\n aria-label='Dropdown'\n className={styles.options}\n >\n {filteredOptions.map((option) => {\n const isSelected = option.value === selectedValue;\n\n return (\n <li key={`${option.groupLabel ?? 'root'}-${option.value}`}>\n <Button\n aria-label={isSelected ? `${option.text}, selected` : option.text}\n className={cx(styles.option, isSelected && styles.selected)}\n disabled={option.disabled}\n onClick={() => commitValue(option.value)}\n variant='tertiary'\n >\n <span className={styles.text}>{renderDropdownOption(option)}</span>\n {option.groupLabel && (\n <small className={styles.group}>{option.groupLabel}</small>\n )}\n </Button>\n </li>\n );\n })}\n {canCreateOption && createOption && (\n <li>\n <Button\n aria-label={getNodeText(createOption.render(customValue)) || customValue}\n className={styles.option}\n onClick={commitCustomValue}\n variant='tertiary'\n >\n <span className={styles.text}>{createOption.render(customValue)}</span>\n </Button>\n </li>\n )}\n {filteredOptions.length === 0 && !canCreateOption && (\n <li className={styles.empty}>{emptyLabel}</li>\n )}\n </List>\n </div>\n )}\n </div>\n );\n\n return label ? (\n <div className={cx(styles.label, variant === 'inline' && styles['inline-field'])}>\n <span id={labelId}>{displayLabel}</span>\n {dropdown}\n </div>\n ) : (\n dropdown\n );\n};\n"],"names":["getNodeText","node","String","Array","isArray","map","join","isValidElement","props","children","isOptionElement","type","isOptGroupElement","isFragmentElement","React","Fragment","isWrappedSelectElement","Select","extractOptions","groupLabel","groupDisabled","options","Children","forEach","child","push","text","trim","value","disabled","Boolean","hidden","isPlaceholder","label","selected","buildWildcardMatcher","query","trimmedQuery","expression","test","character","replace","RegExp","filterOptions","matcher","selectableOptions","filter","option","getDisplayOption","selectedValue","find","getInitialValue","defaultValue","normalizeSelectElement","selectElement","placeholder","jsxs","getIconWithVars","icon","color","iconSVG","Dropdown","className","combobox","createOption","emptyLabel","renderOption","searchPlaceholder","selectedItems","variant","normalizedSelect","onChange","restSelectProps","selectProps","sanitizeSelectProps","selectClassName","nativeSelectProps","buttonRef","useRef","containerRef","labelId","useId","nativeSelectRef","searchRef","isControlled","initialValue","internalValue","setInternalValue","useState","isOpen","setIsOpen","setQuery","iconColors","default","resolveColor","white","dropdownIconColor","displayOption","triggerWithVars","filterWithVars","filteredOptions","customValue","canCreateOption","isValid","displayLabel","formatInlineLabel","renderDropdownOption","isSelected","useEffect","some","current","focus","handlePointerDown","event","contains","target","document","addEventListener","removeEventListener","handleNativeChange","closeMenu","continueComboboxSelection","commitCustomValue","onCreate","commitValue","nextValue","nativeSelect","valueSetter","Object","getOwnPropertyDescriptor","HTMLSelectElement","prototype","set","call","dispatchEvent","Event","bubbles","handleKeyDown","key","preventDefault","dropdown","cx","styles","inline","minimal","jsx","native","undefined","Button","trigger","currentValue","panel","Input","List","group","render","length","empty"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/dropdown/options.tsx","../../../src/components/dropdown/index.tsx"],"sourcesContent":["import React, { Children, isValidElement } from 'react';\n\nimport { Select, type SelectProps } from '@/components/select';\n\ntype NativeSelectProps = Omit<React.ComponentPropsWithoutRef<'select'>, 'children' | 'multiple'> & {\n children: React.ReactNode;\n multiple?: false;\n};\n\ntype NativeSelectElement = React.ReactElement<NativeSelectProps, 'select'>;\ntype WrappedSelectElement = React.ReactElement<SelectProps, typeof Select>;\n\nexport type DropdownSelectElement = NativeSelectElement | WrappedSelectElement;\n\nexport type DropdownOption = {\n disabled: boolean;\n groupLabel?: string;\n hidden: boolean;\n isPlaceholder: boolean;\n label: React.ReactNode;\n selected: boolean;\n text: string;\n value: string;\n};\n\nexport type DropdownRenderOption = Pick<\n DropdownOption,\n 'groupLabel' | 'label' | 'text' | 'value'\n> & {\n isSelected: boolean;\n};\n\nexport function getNodeText(node: React.ReactNode): string {\n if (typeof node === 'string' || typeof node === 'number') return String(node);\n if (Array.isArray(node)) return node.map(getNodeText).join(' ');\n if (isValidElement<{ children?: React.ReactNode }>(node)) return getNodeText(node.props.children);\n return '';\n}\n\nfunction isOptionElement(\n node: React.ReactNode\n): node is React.ReactElement<React.ComponentPropsWithoutRef<'option'>, 'option'> {\n return isValidElement(node) && node.type === 'option';\n}\n\nfunction isOptGroupElement(\n node: React.ReactNode\n): node is React.ReactElement<React.ComponentPropsWithoutRef<'optgroup'>, 'optgroup'> {\n return isValidElement(node) && node.type === 'optgroup';\n}\n\nfunction isFragmentElement(\n node: React.ReactNode\n): node is React.ReactElement<{ children?: React.ReactNode }, typeof React.Fragment> {\n return isValidElement(node) && node.type === React.Fragment;\n}\n\nfunction isWrappedSelectElement(node: React.ReactNode): node is WrappedSelectElement {\n return isValidElement(node) && node.type === Select;\n}\n\nexport function extractOptions(\n children: React.ReactNode,\n groupLabel?: string,\n groupDisabled = false\n): DropdownOption[] {\n const options: DropdownOption[] = [];\n\n Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n options.push(...extractOptions(child.props.children, groupLabel, groupDisabled));\n } else if (isOptionElement(child)) {\n const text = getNodeText(child.props.children).trim();\n const value = child.props.value != null ? String(child.props.value) : text;\n options.push({\n disabled: groupDisabled || Boolean(child.props.disabled),\n groupLabel,\n hidden: Boolean(child.props.hidden),\n isPlaceholder: Boolean(child.props.hidden && value === ''),\n label: child.props.children,\n selected: Boolean(child.props.selected),\n text,\n value,\n });\n } else if (isOptGroupElement(child)) {\n options.push(\n ...extractOptions(\n child.props.children,\n child.props.label,\n groupDisabled || Boolean(child.props.disabled)\n )\n );\n }\n });\n\n return options;\n}\n\nfunction buildWildcardMatcher(query: string) {\n const trimmedQuery = query.trim();\n if (!trimmedQuery) return null;\n\n const wildcardQuery = /[*?]/.test(trimmedQuery) ? trimmedQuery : `*${trimmedQuery}*`;\n const expression = [...wildcardQuery]\n .map((character) => {\n if (character === '*') return '.*';\n if (character === '?') return '.';\n return character.replace(/[|\\\\{}()[\\]^$+.,]/g, '\\\\$&');\n })\n .join('');\n\n return new RegExp(`^${expression}$`, 'i');\n}\n\nexport function filterOptions(options: DropdownOption[], query: string) {\n const matcher = buildWildcardMatcher(query);\n const selectableOptions = options.filter((option) => !option.hidden && !option.isPlaceholder);\n return matcher\n ? selectableOptions.filter((option) =>\n matcher.test([option.groupLabel, option.text, option.value].filter(Boolean).join(' '))\n )\n : selectableOptions;\n}\n\nexport function getDisplayOption(options: DropdownOption[], selectedValue: string) {\n return (\n options.find((option) => option.value === selectedValue) ??\n options.find((option) => option.isPlaceholder) ??\n options[0]\n );\n}\n\nexport function getInitialValue(\n options: DropdownOption[],\n value?: NativeSelectProps['value'],\n defaultValue?: NativeSelectProps['defaultValue']\n) {\n if (value != null) return String(value);\n if (defaultValue != null) return String(defaultValue);\n return options.find((option) => option.selected)?.value ?? options[0]?.value ?? '';\n}\n\nexport function normalizeSelectElement(selectElement: DropdownSelectElement) {\n if (isWrappedSelectElement(selectElement)) {\n const { children, placeholder, ...props } = selectElement.props;\n return {\n children: (\n <>\n {placeholder && (\n <option\n hidden\n value=''\n >\n {placeholder}\n </option>\n )}\n {children}\n </>\n ),\n props,\n };\n }\n\n return { children: selectElement.props.children, props: selectElement.props };\n}\n","import cx from 'classix';\nimport React, { useEffect, useId, useRef, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { type IconName, iconSVG } from '@/components/icon/icons';\nimport { Input } from '@/components/input';\nimport { List } from '@/components/list';\nimport { sanitizeSelectProps } from '@/components/select/sanitize-select-props';\nimport { resolveColor } from '@/utils/color';\nimport { formatInlineLabel } from '@/utils/text';\n\nimport {\n type DropdownOption,\n type DropdownRenderOption,\n type DropdownSelectElement,\n extractOptions,\n filterOptions,\n getDisplayOption,\n getInitialValue,\n getNodeText,\n normalizeSelectElement,\n} from './options';\nimport styles from './styles.module.css';\n\nexport type { DropdownRenderOption } from './options';\n\nexport type DropdownCreateOption = {\n isValid: (value: string) => boolean;\n onCreate: (value: string) => void;\n render: (value: string) => React.ReactNode;\n};\n\nexport type DropdownProps = Omit<React.ComponentPropsWithoutRef<'div'>, 'children'> & {\n children: DropdownSelectElement;\n combobox?: boolean;\n createOption?: DropdownCreateOption;\n emptyLabel?: string;\n label?: string;\n renderOption?: (option: DropdownRenderOption) => React.ReactNode;\n searchPlaceholder?: string;\n selectedItems?: React.ReactNode;\n variant?: 'default' | 'inline' | 'minimal';\n};\n\ntype withVars = React.CSSProperties & {\n '--icon-svg'?: string;\n};\n\nfunction getIconWithVars(icon: IconName, color: string): withVars {\n return {\n '--icon-svg': iconSVG(icon, color),\n };\n}\n\nexport const Dropdown = ({\n children: selectElement,\n className,\n combobox = false,\n createOption,\n emptyLabel = 'No matches found',\n label,\n renderOption,\n searchPlaceholder = 'Filter',\n selectedItems,\n variant = 'default',\n ...props\n}: DropdownProps) => {\n const normalizedSelect = normalizeSelectElement(selectElement);\n const { defaultValue, onChange, value, ...restSelectProps } = normalizedSelect.props;\n const selectProps = sanitizeSelectProps(restSelectProps);\n const { className: selectClassName, ...nativeSelectProps } = selectProps;\n const buttonRef = useRef<HTMLButtonElement>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const labelId = useId();\n const nativeSelectRef = useRef<HTMLSelectElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n const options = extractOptions(normalizedSelect.children);\n const isControlled = value != null;\n const initialValue = getInitialValue(options, value, defaultValue);\n const [internalValue, setInternalValue] = useState(() => initialValue);\n const [isOpen, setIsOpen] = useState(false);\n const [query, setQuery] = useState('');\n const selectedValue = isControlled ? String(value) : internalValue;\n const iconColors = {\n default: resolveColor('--colors-semantic-content-secondary'),\n white: resolveColor('--color-white', 'white'),\n };\n const dropdownIconColor = variant === 'minimal' ? iconColors.white : iconColors.default;\n const displayOption = getDisplayOption(options, selectedValue);\n const triggerWithVars = getIconWithVars('CaretDown', dropdownIconColor);\n const filterWithVars = getIconWithVars('MagnifyingGlass', dropdownIconColor);\n const filteredOptions = filterOptions(options, query);\n const customValue = query.trim();\n const canCreateOption = Boolean(\n combobox && createOption && customValue && createOption.isValid(customValue)\n );\n const displayLabel = label && variant === 'inline' ? formatInlineLabel(label) : label;\n const renderDropdownOption = (option: DropdownOption | undefined) => {\n if (!option) return 'Select an option';\n\n return (\n renderOption?.({\n groupLabel: option.groupLabel,\n isSelected: option.value === selectedValue,\n label: option.label,\n text: option.text,\n value: option.value,\n }) ?? option.label\n );\n };\n\n useEffect(() => {\n if (!isControlled && !options.some((option) => option.value === internalValue)) {\n setInternalValue(initialValue);\n }\n }, [initialValue, internalValue, isControlled, options]);\n\n useEffect(() => {\n if (!isOpen) {\n setQuery('');\n return;\n }\n\n searchRef.current?.focus();\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n const handlePointerDown = (event: MouseEvent) => {\n if (!containerRef.current?.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handlePointerDown);\n\n return () => {\n document.removeEventListener('mousedown', handlePointerDown);\n };\n }, [isOpen]);\n\n const handleNativeChange = (event: React.ChangeEvent<HTMLSelectElement>) => {\n if (!isControlled) {\n setInternalValue(event.target.value);\n }\n\n onChange?.(event);\n };\n\n const closeMenu = () => {\n setIsOpen(false);\n if (!combobox) {\n buttonRef.current?.focus();\n }\n };\n\n const continueComboboxSelection = () => {\n setQuery('');\n setIsOpen(true);\n searchRef.current?.focus();\n };\n\n const commitCustomValue = () => {\n if (!createOption || !canCreateOption) return;\n\n createOption.onCreate(customValue);\n continueComboboxSelection();\n };\n\n const commitValue = (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n const nativeSelect = nativeSelectRef.current;\n\n if (!nativeSelect) {\n closeMenu();\n return;\n }\n\n const valueSetter = Object.getOwnPropertyDescriptor(HTMLSelectElement.prototype, 'value')?.set;\n\n valueSetter?.call(nativeSelect, nextValue);\n nativeSelect.dispatchEvent(new Event('change', { bubbles: true }));\n if (combobox) {\n continueComboboxSelection();\n } else {\n closeMenu();\n }\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape') {\n closeMenu();\n }\n\n if (event.key === 'Enter' && event.target === searchRef.current && canCreateOption) {\n event.preventDefault();\n commitCustomValue();\n }\n };\n\n const dropdown = (\n <div\n className={cx(\n styles.dropdown,\n variant === 'inline' && styles.inline,\n variant === 'minimal' && styles.minimal,\n className\n )}\n onKeyDown={handleKeyDown}\n ref={containerRef}\n {...props}\n >\n <select\n {...nativeSelectProps}\n aria-hidden='true'\n className={cx(styles.native, selectClassName)}\n onChange={handleNativeChange}\n ref={nativeSelectRef}\n tabIndex={-1}\n value={selectedValue}\n >\n {normalizedSelect.children}\n </select>\n {combobox ? (\n <div\n className={styles.combobox}\n onClick={() => searchRef.current?.focus()}\n >\n {selectedItems}\n <input\n aria-autocomplete='list'\n aria-expanded={isOpen}\n aria-label={selectProps['aria-label'] ?? label ?? searchPlaceholder}\n className={styles['combobox-input']}\n disabled={selectProps.disabled}\n onChange={(event) => {\n setQuery(event.target.value);\n setIsOpen(true);\n }}\n onClick={() => setIsOpen(true)}\n onFocus={() => setIsOpen(true)}\n placeholder={searchPlaceholder || undefined}\n ref={searchRef}\n role='combobox'\n type='text'\n value={query}\n />\n </div>\n ) : (\n <Button\n aria-expanded={isOpen}\n aria-haspopup='dialog'\n aria-labelledby={label ? `${labelId} ${labelId}-value` : undefined}\n className={cx(styles.trigger, displayOption?.isPlaceholder && styles.placeholder)}\n data-open={isOpen ? 'true' : undefined}\n disabled={selectProps.disabled}\n onClick={() => setIsOpen((currentValue) => !currentValue)}\n ref={buttonRef}\n style={triggerWithVars}\n variant='simple'\n >\n <span\n className={styles.text}\n id={`${labelId}-value`}\n >\n {renderDropdownOption(displayOption)}\n </span>\n </Button>\n )}\n {isOpen && (\n <div className={styles.panel}>\n {!combobox && (\n <Input\n aria-label='Filter'\n className={styles.filter}\n icon='MagnifyingGlass'\n onChange={(event) => setQuery(event.target.value)}\n placeholder={searchPlaceholder}\n ref={searchRef}\n style={filterWithVars}\n type='search'\n value={query}\n />\n )}\n <List\n aria-label='Dropdown'\n className={styles.options}\n >\n {filteredOptions.map((option) => {\n const isSelected = option.value === selectedValue;\n\n return (\n <li key={`${option.groupLabel ?? 'root'}-${option.value}`}>\n <Button\n aria-label={isSelected ? `${option.text}, selected` : option.text}\n className={cx(styles.option, isSelected && styles.selected)}\n disabled={option.disabled}\n onClick={() => commitValue(option.value)}\n variant='tertiary'\n >\n <span className={styles.text}>{renderDropdownOption(option)}</span>\n {option.groupLabel && (\n <small className={styles.group}>{option.groupLabel}</small>\n )}\n </Button>\n </li>\n );\n })}\n {canCreateOption && createOption && (\n <li>\n <Button\n aria-label={getNodeText(createOption.render(customValue)) || customValue}\n className={styles.option}\n onClick={commitCustomValue}\n variant='tertiary'\n >\n <span className={styles.text}>{createOption.render(customValue)}</span>\n </Button>\n </li>\n )}\n {filteredOptions.length === 0 && !canCreateOption && (\n <li className={styles.empty}>{emptyLabel}</li>\n )}\n </List>\n </div>\n )}\n </div>\n );\n\n return label ? (\n <div className={cx(styles.label, variant === 'inline' && styles['inline-field'])}>\n <span id={labelId}>{displayLabel}</span>\n {dropdown}\n </div>\n ) : (\n dropdown\n );\n};\n"],"names":["getNodeText","node","String","Array","isArray","map","join","isValidElement","props","children","isOptionElement","type","isOptGroupElement","isFragmentElement","React","Fragment","isWrappedSelectElement","Select","extractOptions","groupLabel","groupDisabled","options","Children","forEach","child","push","text","trim","value","disabled","Boolean","hidden","isPlaceholder","label","selected","buildWildcardMatcher","query","trimmedQuery","expression","test","character","replace","RegExp","filterOptions","matcher","selectableOptions","filter","option","getDisplayOption","selectedValue","find","getInitialValue","defaultValue","normalizeSelectElement","selectElement","placeholder","jsxs","getIconWithVars","icon","color","iconSVG","Dropdown","className","combobox","createOption","emptyLabel","renderOption","searchPlaceholder","selectedItems","variant","normalizedSelect","onChange","restSelectProps","selectProps","sanitizeSelectProps","selectClassName","nativeSelectProps","buttonRef","useRef","containerRef","labelId","useId","nativeSelectRef","searchRef","isControlled","initialValue","internalValue","setInternalValue","useState","isOpen","setIsOpen","setQuery","iconColors","default","resolveColor","white","dropdownIconColor","displayOption","triggerWithVars","filterWithVars","filteredOptions","customValue","canCreateOption","isValid","displayLabel","formatInlineLabel","renderDropdownOption","isSelected","useEffect","some","current","focus","handlePointerDown","event","contains","target","document","addEventListener","removeEventListener","handleNativeChange","closeMenu","continueComboboxSelection","commitCustomValue","onCreate","commitValue","nextValue","nativeSelect","valueSetter","Object","getOwnPropertyDescriptor","HTMLSelectElement","prototype","set","call","dispatchEvent","Event","bubbles","handleKeyDown","key","preventDefault","dropdown","cx","styles","inline","minimal","jsx","native","undefined","Button","trigger","currentValue","panel","Input","List","group","render","length","empty"],"mappings":"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"}
|