@fastnd/components 1.0.13 → 1.0.16

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.
@@ -1,181 +1,181 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode('._tableContainer_133qi_4{overflow-x:auto}._table_133qi_4{width:100%;border-collapse:separate;border-spacing:0;text-align:left;table-layout:fixed}._table__head_133qi_18 th{font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);padding:.625rem 1rem;border-bottom:1px solid var(--border);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative}._table__head_133qi_18 th._sortable_133qi_32{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s ease}._table__head_133qi_18 th._sortable_133qi_32:hover{color:var(--on-surface)}._table__head_133qi_18 th:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}._sortIndicator_133qi_48{display:inline-flex;margin-left:.25rem;opacity:.4;vertical-align:middle}._table__head_133qi_18 th[aria-sort] ._sortIndicator_133qi_48{opacity:1;color:var(--primary)}._colResizeHandle_133qi_61{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:5;background:transparent}._colResizeHandle_133qi_61:hover{background-color:var(--primary);opacity:.4}._table--resizing_133qi_77{cursor:col-resize;-webkit-user-select:none;user-select:none}._table--resizing_133qi_77 *{cursor:col-resize!important}._table__row_133qi_87{transition:background-color .1s ease}._table__row_133qi_87:hover{background-color:var(--surface-hover)}._table__row_133qi_87 td{padding:.75rem 1rem;border-bottom:1px solid var(--border);vertical-align:middle;overflow:hidden;text-overflow:ellipsis}._table__row_133qi_87:last-child td{border-bottom:none}._table__row--animated_133qi_108{animation:_fadeInRow_133qi_1 .2s ease both}@keyframes _fadeInRow_133qi_1{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){._table__row--animated_133qi_108{animation:none}}@media(max-width:1024px){._col-hide-tablet_133qi_131{display:none}}@media(max-width:640px){._col-hide-mobile_133qi_137{display:none}}._widgetCard_gx9fj_4{background-color:var(--surface);color:var(--on-surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);display:flex;flex-direction:column;height:100%;overflow:hidden;font-family:var(--font-inter);animation:_fadeIn_gx9fj_1 .4s ease-out}._widgetCard--half_gx9fj_18{max-width:520px}._widgetCard__header_gx9fj_23{display:flex;justify-content:space-between;align-items:center;padding:1rem 5%;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}._widgetCard--full_gx9fj_33 ._widgetCard__header_gx9fj_23{padding:1.5rem 2.5%}._widgetCard__title_gx9fj_37{margin:0;font-family:var(--font-clash);font-size:1.25rem;font-weight:500;line-height:1.3;color:var(--on-surface);letter-spacing:-.02em}._widgetCard--full_gx9fj_33 ._widgetCard__title_gx9fj_37{font-size:1.5rem}._widgetCard__content_gx9fj_52{flex:1 1 0}._widgetCard__content--scrollable_gx9fj_56{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}._widgetCard__content--scrollable_gx9fj_56::-webkit-scrollbar{width:4px}._widgetCard__content--scrollable_gx9fj_56::-webkit-scrollbar-track{background:transparent}._widgetCard__content--scrollable_gx9fj_56::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:2px}._widgetCard__content--padded_gx9fj_76{padding:1rem 5%}._widgetCard--full_gx9fj_33 ._widgetCard__content--padded_gx9fj_76{padding:1.5rem 2.5%}@keyframes _fadeIn_gx9fj_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){._widgetCard_gx9fj_4{animation:none}}._dataCard_19cka_3{background-color:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;transition:box-shadow .15s ease,border-color .15s ease;display:flex;flex-direction:column;gap:.75rem}._dataCard_19cka_3:hover{box-shadow:var(--shadow-md)}._dataCard--clickable_19cka_18{cursor:pointer}._dataCard--clickable_19cka_18:focus-visible{outline:2px solid var(--primary);outline-offset:2px}._baseList_47qml_3{display:flex;flex-direction:column}._baseList--scrollable_47qml_8{overflow-y:auto;flex:1 1 0;scrollbar-width:thin;scrollbar-color:var(--border) transparent}._baseList--scrollable_47qml_8::-webkit-scrollbar{width:4px}._baseList--scrollable_47qml_8::-webkit-scrollbar-track{background:transparent}._baseList--scrollable_47qml_8::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:2px}._listItem_1ssj2_3{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--border);transition:background-color .1s ease;font-family:var(--font-inter)}._listItem_1ssj2_3:last-child{border-bottom:none}._listItem_1ssj2_3:hover{background-color:var(--surface-hover)}._listItem--clickable_1ssj2_21{cursor:pointer}._listItem_1ssj2_3:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}._listItem__leading_1ssj2_31{flex-shrink:0;display:flex;align-items:center}._listItem__content_1ssj2_37{flex:1;min-width:0}._listItem__trailing_1ssj2_42{flex-shrink:0;display:flex;align-items:center;gap:.5rem}@media(max-width:640px){._listItem_1ssj2_3{flex-wrap:wrap;gap:.5rem}}._status-badge_c7rzu_3{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border-radius:1rem;font-size:.75rem;font-weight:500;line-height:1;color:var(--custom-color, var(--current-color));background-color:var(--custom-bg, var(--current-bg));white-space:nowrap}._status-badge_c7rzu_3:before{content:"";display:block;width:6px;height:6px;border-radius:50%;background-color:var(--custom-color, var(--current-color))}._status-badge--neu_c7rzu_26{--current-color: var(--status-neu);--current-bg: color-mix(in srgb, var(--status-neu), transparent 90%)}._status-badge--offen_c7rzu_31{--current-color: var(--status-offen);--current-bg: color-mix(in srgb, var(--status-offen), transparent 90%)}._status-badge--in-prufung_c7rzu_36{--current-color: var(--status-in-prufung);--current-bg: color-mix(in srgb, var(--status-in-prufung), transparent 90%)}._status-badge--validierung_c7rzu_41{--current-color: var(--status-validierung);--current-bg: color-mix(in srgb, var(--status-validierung), transparent 90%)}._status-badge--abgeschlossen_c7rzu_46{--current-color: var(--status-abgeschlossen);--current-bg: color-mix(in srgb, var(--status-abgeschlossen), transparent 90%)}._favorite-btn_1fvb2_3{background:none;border:none;color:var(--custom-color, var(--on-surface-light));cursor:pointer;display:flex;align-items:center;justify-content:center;padding:.375rem;border-radius:var(--radius);transition:all .2s ease}._favorite-btn_1fvb2_3:hover,._favorite-btn_1fvb2_3:focus-visible{background-color:var(--surface-variant);color:var(--custom-active-color, var(--color-warning));outline:none}._favorite-btn--active_1fvb2_23{color:var(--custom-active-color, var(--color-warning))}._favorite-btn--md_1fvb2_28{padding:.375rem}._favorite-btn--md_1fvb2_28 svg{width:18px;height:18px;fill:currentColor}._favorite-btn--sm_1fvb2_39{padding:.25rem}._favorite-btn--sm_1fvb2_39 svg{width:16px;height:16px;fill:currentColor}._status-legend__item_1xv4z_3{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-radius:calc(var(--radius) - 2px);cursor:pointer;transition:background-color .2s ease;border:1px solid transparent;background:none;width:100%}._status-legend__item_1xv4z_3:hover,._status-legend__item_1xv4z_3:focus-visible{background-color:var(--surface-variant);outline:none}._status-legend__item--active_1xv4z_22{background-color:var(--surface-variant);border-color:var(--border)}._status-legend__label-wrap_1xv4z_27{display:flex;align-items:center;gap:.5rem}._status-legend__color_1xv4z_33{width:12px;height:12px;border-radius:50%;flex-shrink:0;background-color:var(--custom-color, var(--current-color))}._status-legend__label_1xv4z_27{font-size:.875rem;color:var(--on-surface);font-weight:500}._status-legend__count_1xv4z_47{font-family:var(--font-grotesk);font-size:.875rem;color:var(--on-surface-variant);font-weight:600;background-color:var(--surface-variant);padding:.125rem .5rem;border-radius:1rem}._color-neu_1xv4z_57{--current-color: var(--status-neu)}._color-offen_1xv4z_61{--current-color: var(--status-offen)}._color-in-prufung_1xv4z_65{--current-color: var(--status-in-prufung)}._color-validierung_1xv4z_69{--current-color: var(--status-validierung)}._color-abgeschlossen_1xv4z_73{--current-color: var(--status-abgeschlossen)}._color-alle_1xv4z_77{--current-color: var(--status-alle)}._status-overview__chart-container_6nwc9_3{position:relative;width:200px;height:200px;margin:1rem auto 2rem;display:flex;align-items:center;justify-content:center}._status-chart-svg_6nwc9_13{width:100%;height:100%;position:absolute;top:0;left:0;filter:drop-shadow(var(--shadow-sm));pointer-events:none}._status-chart__segment_6nwc9_23{transition:all .3s cubic-bezier(.4,0,.2,1);stroke-linecap:butt;pointer-events:stroke}._status-chart__segment_6nwc9_23:hover,._status-chart__segment--hovered_6nwc9_30{stroke-width:48px;filter:brightness(1.1)}._status-chart__segment--dimmed_6nwc9_35{opacity:.6;filter:grayscale(.2)}._status-chart__hole_6nwc9_40{width:120px;height:120px;background-color:var(--surface);border-radius:50%;position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:inset var(--shadow-sm);clip-path:circle(50%)}._status-chart__total-value_6nwc9_55{font-family:var(--font-clash);font-size:2rem;font-weight:600;line-height:1;color:var(--on-surface)}._status-chart__total-label_6nwc9_63{font-size:.75rem;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.05em;margin-top:.25rem}._nameCell_1n6hv_4{display:flex;align-items:center;gap:.5rem}._favorite_1n6hv_10{margin-left:-.5rem}._nameWrapper_1n6hv_14{display:flex;flex-direction:column;overflow:hidden;min-width:0}._name_1n6hv_4{font-weight:500;color:var(--on-surface);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._secondary_1n6hv_31{font-size:.75rem;color:var(--on-surface-variant);margin-top:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._client_1n6hv_41{color:var(--on-surface-variant);font-size:.8125rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._dateMain_1n6hv_51{color:var(--on-surface);font-weight:500;font-size:.8125rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._avatar_17ic7_3{width:1.5rem;height:1.5rem;border-radius:50%;background-color:var(--surface-variant);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:600;color:var(--on-surface);text-transform:uppercase}._avatar-group_17ic7_18{display:flex;align-items:center}._group-member_17ic7_23{margin-right:-.5rem;position:relative;z-index:1;border:2px solid var(--surface)}._group-member_17ic7_23:hover{z-index:10}._btn_7bh63_3{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;white-space:nowrap;border-radius:calc(var(--radius) - 2px);font-size:.875rem;font-weight:500;transition:all .2s cubic-bezier(.16,1,.3,1);cursor:pointer;border:1px solid transparent}._btn_7bh63_3:focus-visible{outline:2px solid var(--primary);outline-offset:2px}._btn_7bh63_3:active{transform:scale(.98)}._btn--primary_7bh63_27{background:var(--gradient-header);color:#fff;padding:.5rem 1rem;box-shadow:var(--shadow-sm)}._btn--primary_7bh63_27:hover{box-shadow:var(--shadow-md);opacity:.9}._btn--outline_7bh63_39{background-color:transparent;border-color:var(--border);color:var(--on-surface);padding:.375rem .75rem;min-width:110px}._btn--outline_7bh63_39:hover{background-color:var(--surface-variant);color:var(--on-surface)}._btn--ghost_7bh63_52{background-color:transparent;color:var(--on-surface-variant);padding:.375rem}._btn--ghost_7bh63_52:hover{background-color:var(--surface-variant);color:var(--on-surface)}._btn--sm_7bh63_63{padding:.2rem .4rem;font-size:.75rem;min-width:auto!important}._badge_1e35x_3{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-grotesk);font-weight:800}._badge--high_1e35x_12{background-color:var(--error-variant);color:var(--error);border:1px solid color-mix(in srgb,var(--error),transparent 80%)}._badge--medium_1e35x_18{background-color:var(--color-warning-variant);color:var(--color-warning);border:1px solid color-mix(in srgb,var(--color-warning),transparent 80%)}._badge--low_1e35x_24{background-color:var(--surface-variant);color:var(--on-surface-variant);border:1px solid var(--border)}._badge--size-small_1e35x_30{width:1.5rem;height:1.5rem;border-radius:.375rem;font-size:.75rem}._badge--size-large_1e35x_37{width:2.25rem;height:2.25rem;border-radius:.5rem;font-size:1.125rem}._badge--size-large_1e35x_37._badge--low_1e35x_24{font-size:.875rem}._badge_1j9lv_3{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;background-color:var(--surface-variant);border-radius:2rem;font-size:.8125rem;font-weight:500}._status-dropdown_15zae_3{position:relative;display:inline-block;width:88px}._status-trigger_15zae_9{width:100%!important;justify-content:space-between!important}._status-menu_15zae_14{position:absolute;top:100%;right:0;margin-top:.25rem;background-color:var(--surface);border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);box-shadow:var(--shadow-lg);z-index:100;width:100%;min-width:88px;display:none;padding:.25rem;animation:_fadeIn_15zae_1 .15s ease-out}._status-menu_15zae_14._is-open_15zae_31{display:block}._status-menu-item_15zae_35{width:100%;padding:.5rem .75rem;font-size:.8125rem;text-align:left;background:none;border:none;cursor:pointer;border-radius:calc(var(--radius) - 4px);color:var(--on-surface);transition:background-color .1s}._status-menu-item_15zae_35:hover{background-color:var(--surface-variant)}._status-menu-item_15zae_35._is-active_15zae_52{font-weight:500}._icon_15zae_56{width:1rem;height:1rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}._icon-sm_15zae_65{width:.875rem;height:.875rem}@keyframes _fadeIn_15zae_1{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}._checklist_1iobh_3{gap:.5rem}._checkItem_1iobh_7{display:flex;align-items:center;gap:.5rem;font-size:.875rem;padding:0}._checkItem_1iobh_7 input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--primary);cursor:pointer}._checkItem_1iobh_7 label{cursor:pointer}._checkItem_1iobh_7._is-done_1iobh_26 label{text-decoration:line-through;color:var(--on-surface-variant)}._checklist--readonly_1iobh_31 ._checkItem_1iobh_7 label{cursor:pointer}._checklist--readonly_1iobh_31 ._checkItem_1iobh_7 input[type=checkbox]{pointer-events:all}._formControl_1iobh_39{width:100%;padding:.125rem;border:none;background:transparent;color:var(--on-surface);font-family:inherit;font-size:.875rem;border-radius:calc(var(--radius) - 2px);transition:background-color .2s}._formControl_1iobh_39:focus{outline:none;background-color:var(--surface)}._is-done_1iobh_26 ._formControl_1iobh_39{text-decoration:line-through;color:var(--on-surface-variant)}._searchInput_16e7c_3{display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border:1px solid var(--border);border-radius:1rem;background-color:var(--surface-variant);transition:border-color .15s ease,box-shadow .15s ease;min-width:200px}._searchInput_16e7c_3:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary),transparent 85%)}._icon_16e7c_20{width:14px;height:14px;color:var(--on-surface-variant);flex-shrink:0}._field_16e7c_27{border:none;background:none;font-family:var(--font-inter);font-size:.8125rem;color:var(--on-surface);outline:none;width:100%}._field_16e7c_27::placeholder{color:var(--on-surface-variant)}@media(max-width:1024px){._searchInput_16e7c_3{min-width:160px}}@media(max-width:640px){._searchInput_16e7c_3{flex:1;min-width:0}}._btn_6gx9b_3{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;border:1px solid var(--border);background:none;border-radius:calc(var(--radius) - 2px);font-family:var(--font-inter);font-size:.6875rem;font-weight:500;color:var(--on-surface-variant);cursor:pointer;transition:all .15s ease}._btn_6gx9b_3:hover{border-color:color-mix(in srgb,var(--primary),transparent 60%);color:var(--primary);background-color:var(--primary-container)}._btn_6gx9b_3:focus-visible{outline:2px solid var(--primary);outline-offset:1px}._chevron_6gx9b_30{width:12px;height:12px;transition:transform .2s ease;flex-shrink:0}._btn--open_6gx9b_37 ._chevron_6gx9b_30{transform:rotate(180deg)}._circle_gvt69_3{position:relative;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center}._svg_gvt69_12{width:100%;height:100%;transform:rotate(-90deg)}._track_gvt69_18{fill:none;stroke:var(--surface-variant);stroke-width:3}._fill_gvt69_24{fill:none;stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset .4s ease}._label_gvt69_31{position:absolute;font-family:var(--font-grotesk);font-size:.5625rem;font-weight:600;color:var(--on-surface)}._bar_l0q8t_3{display:flex;align-items:center;gap:.5rem}._track_l0q8t_9{width:60px;height:4px;background-color:var(--surface-variant);border-radius:2px;overflow:hidden}._fill_l0q8t_17{height:100%;border-radius:2px;background:var(--gradient-primary)}._value_l0q8t_23{font-family:var(--font-grotesk);font-size:.75rem;font-weight:500;color:var(--on-surface-variant);min-width:28px}._empty_26icj_3{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem;text-align:center}._icon_26icj_12{width:48px;height:48px;color:var(--on-surface-light);margin-bottom:1rem}._title_26icj_19{font-family:var(--font-clash);font-size:1.125rem;font-weight:500;color:var(--on-surface);margin-bottom:.25rem}._text_26icj_27{font-size:.8125rem;color:var(--on-surface-variant)}._toggle_176y2_3{display:inline-flex;background-color:var(--surface-variant);border-radius:calc(var(--radius) - 2px);padding:3px;gap:2px}._btn_176y2_11{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border:none;background:none;border-radius:calc(var(--radius) - 4px);font-family:var(--font-inter);font-size:.8125rem;font-weight:500;color:var(--on-surface-variant);cursor:pointer;transition:all .15s ease;white-space:nowrap}._btn_176y2_11:hover{color:var(--on-surface)}._btn_176y2_11:focus-visible{outline:2px solid var(--primary);outline-offset:1px}._btn--active_176y2_37{background-color:var(--surface);color:var(--on-surface);box-shadow:var(--shadow-sm)}._icon_176y2_43{width:16px;height:16px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}._icon_176y2_43>svg{width:100%;height:100%}._dashboard_wq6z7_4{width:100%;display:grid;grid-template-columns:35% 65%;gap:1.5rem}@media(max-width:1024px){._dashboard_wq6z7_4{grid-template-columns:1fr}}._sectionTitle_wq6z7_18{font-family:var(--font-clash);font-size:1.5rem;font-weight:500;color:var(--on-surface);margin:0 0 1.5rem}._statusLegend_wq6z7_27{display:flex;flex-direction:column;gap:.75rem}._projectFilters_wq6z7_34{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding:0 2.5%;flex-wrap:wrap;gap:1rem}._projectFilters_wq6z7_34 ._sectionTitle_wq6z7_18{margin-bottom:0}._projectFilters__search_wq6z7_48{padding:.5rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background-color:var(--surface-variant);font-family:var(--font-inter);font-size:.875rem;color:var(--on-surface);width:250px;transition:border-color .2s,box-shadow .2s}._projectFilters__search_wq6z7_48:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary),transparent 80%)}._taskItem_77jzk_4{display:grid;grid-template-columns:55% 15% 30%;align-items:center;gap:0;padding:.75rem 5%;font-family:var(--font-inter)}._taskItem__content_77jzk_14{display:flex;flex-direction:column;gap:.375rem;min-width:0}._taskItem__titleGroup_77jzk_21{display:flex;align-items:center;gap:.375rem;min-width:0}._taskItem__title_77jzk_21{color:var(--on-surface);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.875rem;font-weight:500;line-height:1.25rem;font-family:var(--font-inter)}._taskItem__meta_77jzk_41{display:flex;align-items:center;gap:1.25rem;color:var(--on-surface-variant);font-size:.625rem;line-height:.875rem;font-family:var(--font-inter);min-width:0}._metaUser_77jzk_52{display:flex;align-items:center;flex-shrink:0}._metaProject_77jzk_58{display:flex;align-items:center;gap:.375rem;color:var(--on-surface-variant);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.75rem;flex:0 1 auto}._metaProject_77jzk_58 ._icon-sm_77jzk_71{flex-shrink:0}._taskItem__deadline_77jzk_76{white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right;font-family:var(--font-grotesk);font-size:.75rem;line-height:1rem}._deadline-urgent_77jzk_85{color:var(--color-danger);font-weight:500}._deadline-normal_77jzk_90{color:var(--on-surface-variant)}._taskItem__actions_77jzk_95{display:flex;align-items:center;gap:.5rem;justify-content:flex-end}._icon-sm_77jzk_71{width:.875rem;height:.875rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}@media(max-width:640px){._taskItem_77jzk_4{grid-template-columns:1fr auto;grid-template-rows:auto auto;grid-template-areas:"content actions" "deadline actions";gap:.25rem .75rem}._taskItem__content_77jzk_14{grid-area:content}._taskItem__deadline_77jzk_76{grid-area:deadline;text-align:left}._taskItem__actions_77jzk_95{grid-area:actions;align-self:center}}._modal-overlay_m18cx_4{position:fixed;inset:0;background-color:#0f172a66;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50;opacity:0;pointer-events:none;transition:opacity .2s ease-out;padding:1rem}._modal-overlay_m18cx_4._is-active_m18cx_19{opacity:1;pointer-events:all}._modal-content_m18cx_25{background-color:var(--surface);color:var(--on-surface);font-family:var(--font-inter);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;transform:scale(.95) translateY(10px);transition:transform .2s ease-out;overflow:hidden}._modal-overlay_m18cx_4._is-active_m18cx_19 ._modal-content_m18cx_25{transform:scale(1) translateY(0)}._modal-header_m18cx_46{padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}._modal-header-title_m18cx_55{margin:0;font-family:var(--font-clash);font-weight:500;font-size:1.25rem;line-height:1.75rem;color:var(--on-surface)}._modal-body_m18cx_65{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1.5rem;scrollbar-width:thin;scrollbar-color:var(--border) transparent}._modal-body_m18cx_65::-webkit-scrollbar{width:4px}._modal-body_m18cx_65::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:2px}._modal-footer_m18cx_84{padding:1rem 1.5rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.5rem;background:var(--surface-hover);flex-shrink:0}._view-group_m18cx_95{display:flex;flex-direction:column;gap:.375rem}._view-label_m18cx_101{font-size:.625rem;line-height:.875rem;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.08em;font-weight:600;font-family:var(--font-inter)}._view-badge-row_m18cx_111{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-start}._view-task-title_m18cx_118{margin:0;font-family:var(--font-clash);font-weight:600;font-size:1.25rem;line-height:1.4;color:var(--on-surface)}._view-value-strong_m18cx_127{font-family:var(--font-grotesk);font-weight:500;font-size:.9375rem;color:var(--on-surface)}._view-description_m18cx_134{font-size:.875rem;line-height:1.6;margin:0;color:var(--on-surface);font-family:var(--font-inter)}._text-muted_m18cx_142{color:var(--on-surface-variant);font-style:italic}._form-group_m18cx_148{display:flex;flex-direction:column;gap:.5rem}._form-row_m18cx_154{display:grid;grid-template-columns:1fr 1fr;gap:1rem}._form-label_m18cx_160{font-size:.625rem;line-height:.875rem;font-weight:600;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.08em;font-family:var(--font-inter)}._form-control_m18cx_170{width:100%;padding:.625rem .75rem;border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);background-color:var(--surface);color:var(--on-surface);font-family:var(--font-inter);font-size:.875rem;line-height:1.25rem;transition:border-color .2s,box-shadow .2s;box-sizing:border-box;appearance:auto}._form-control_m18cx_170:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary),transparent 88%)}._textarea_m18cx_191{resize:vertical;min-height:80px}._icon_m18cx_197{width:1.25rem;height:1.25rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}._icon-pencil_m18cx_207{width:.875rem;height:.875rem;fill:currentColor}@media(max-width:640px){._form-row_m18cx_154{grid-template-columns:1fr}}:root{--surface: #ffffff;--surface-variant: #f0f1f2;--surface-hover: #f7f7f7;--border: #e0e4eb;--border-variant: rgba(0, 20, 41, .1);--on-surface: #001429;--on-surface-variant: #576472;--on-surface-light: #9aa2aa;--primary: #0073e6;--primary-variant: rgba(0, 115, 230, .07);--primary-container: rgba(0, 115, 230, .05);--error: #bd0c38;--error-variant: rgba(189, 12, 56, .07);--color-success: #1ec489;--color-success-dark: #148a5f;--color-success-variant: rgba(69, 220, 166, .2);--color-warning: #efaf55;--color-warning-dark: #b07a1e;--color-warning-variant: rgba(239, 175, 85, .25);--color-info: #8c46c4;--color-info-variant: rgba(169, 62, 255, .15);--color-danger: #f34e2a;--color-danger-variant: rgba(243, 78, 42, .2);--lifecycle-active: var(--color-success);--lifecycle-active-dark: var(--color-success-dark);--lifecycle-nrnd: var(--color-warning);--lifecycle-nrnd-dark: var(--color-warning-dark);--lifecycle-eol: var(--error);--lifecycle-production: var(--primary);--inventory-high: var(--color-success);--inventory-high-dark: var(--color-success-dark);--inventory-medium: var(--color-warning);--inventory-medium-dark: var(--color-warning-dark);--inventory-low: var(--error);--destructive: #bd0c38;--score-high: #1ec489;--score-medium: #efaf55;--score-low: #f34e2a;--sidebar-background: #ffffff;--sidebar-foreground: #001429;--sidebar-primary: #0073e6;--sidebar-accent: #f0f1f2;--sidebar-border: #e0e4eb;--status-alle: #576472;--status-neu: #0073e6;--status-offen: #efaf55;--status-in-prufung: #f34e2a;--status-validierung: #1ec489;--status-abgeschlossen: #1ec489;--radius: .5rem;--font-inter: "Inter", sans-serif;--font-clash: "Clash Grotesk", sans-serif;--font-grotesk: "Space Grotesk", sans-serif;--shadow-sm: 0 1px 2px 0 rgba(0, 20, 41, .04);--shadow-md: 0 4px 6px -1px rgba(0, 20, 41, .08);--shadow-lg: 0 10px 15px -3px rgba(0, 20, 41, .1);--shadow-card: 0 2px 8px rgba(0, 20, 41, .06);--gradient-primary: linear-gradient(135deg, #0073e6, #0053a3);--gradient-header: linear-gradient(135deg, #0053a3, #0073e6)}@media(prefers-color-scheme:dark){:root{--surface: #000000;--surface-variant: #18191b;--surface-hover: #0d0d0d;--border: #14181f;--border-variant: rgba(255, 255, 255, .1);--on-surface: #ffffff;--on-surface-variant: #9aa2aa;--on-surface-light: #576472;--primary: #0073e6;--primary-variant: rgba(0, 115, 230, .07);--primary-container: rgba(0, 115, 230, .05);--error: #bd0c38;--error-variant: rgba(189, 12, 56, .07);--color-success: #1ec489;--color-success-variant: rgba(69, 220, 166, .2);--color-warning: #efaf55;--color-warning-variant: rgba(239, 175, 85, .25);--color-info: #8c46c4;--color-info-variant: rgba(169, 62, 255, .15);--color-danger: #f34e2a;--color-danger-variant: rgba(243, 78, 42, .2);--sidebar-background: #000000;--sidebar-foreground: #ffffff;--sidebar-primary: #0073e6;--sidebar-accent: #18191b;--sidebar-border: #14181f;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5);--shadow-card: 0 2px 8px rgba(0, 0, 0, .3)}}._icon_1rthp_4{width:1rem;height:1rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}._icon-sm_1rthp_14{width:.875rem;height:.875rem}')),document.head.appendChild(r)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
2
- import { jsx as e, jsxs as c, Fragment as Le } from "react/jsx-runtime";
3
- import p, { useCallback as ze, useState as A, useRef as Re, useEffect as le, useMemo as Z } from "react";
4
- function pe(t) {
5
- var a, n, r = "";
6
- if (typeof t == "string" || typeof t == "number") r += t;
7
- else if (typeof t == "object") if (Array.isArray(t)) {
8
- var i = t.length;
9
- for (a = 0; a < i; a++) t[a] && (n = pe(t[a])) && (r && (r += " "), r += n);
10
- } else for (n in t) t[n] && (r && (r += " "), r += n);
1
+ (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode('._tableContainer_uxpjj_4{overflow-x:auto}._table_uxpjj_4{width:100%;border-collapse:separate;border-spacing:0;text-align:left;table-layout:fixed}._table__head_uxpjj_18 th{font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);padding:.625rem 1rem;border-bottom:1px solid var(--ds-border);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative}._table__head_uxpjj_18 th._sortable_uxpjj_32{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s ease}._table__head_uxpjj_18 th._sortable_uxpjj_32:hover{color:var(--on-surface)}._table__head_uxpjj_18 th:focus-visible{outline:2px solid var(--ds-primary);outline-offset:-2px}._sortIndicator_uxpjj_48{display:inline-flex;margin-left:.25rem;opacity:.4;vertical-align:middle}._table__head_uxpjj_18 th[aria-sort] ._sortIndicator_uxpjj_48{opacity:1;color:var(--ds-primary)}._colResizeHandle_uxpjj_61{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:5;background:transparent}._colResizeHandle_uxpjj_61:hover{background-color:var(--ds-primary);opacity:.4}._table--resizing_uxpjj_77{cursor:col-resize;-webkit-user-select:none;user-select:none}._table--resizing_uxpjj_77 *{cursor:col-resize!important}._table__row_uxpjj_87{transition:background-color .1s ease}._table__row_uxpjj_87:hover{background-color:var(--surface-hover)}._table__row_uxpjj_87 td{padding:.75rem 1rem;border-bottom:1px solid var(--ds-border);vertical-align:middle;overflow:hidden;text-overflow:ellipsis}._table__row_uxpjj_87:last-child td{border-bottom:none}._table__row--animated_uxpjj_108{animation:_fadeInRow_uxpjj_1 .2s ease both}@keyframes _fadeInRow_uxpjj_1{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){._table__row--animated_uxpjj_108{animation:none}}@media(max-width:1024px){._col-hide-tablet_uxpjj_131{display:none}}@media(max-width:640px){._col-hide-mobile_uxpjj_137{display:none}}._widgetCard_106xz_4{background-color:var(--surface);color:var(--on-surface);border:1px solid var(--ds-border);border-radius:var(--radius);box-shadow:var(--shadow-card);display:flex;flex-direction:column;height:100%;overflow:hidden;font-family:var(--font-inter);animation:_fadeIn_106xz_1 .4s ease-out}._widgetCard--half_106xz_18{max-width:520px}._widgetCard__header_106xz_23{display:flex;justify-content:space-between;align-items:center;padding:1rem 5%;border-bottom:1px solid var(--ds-border);background:var(--surface);flex-shrink:0}._widgetCard--full_106xz_33 ._widgetCard__header_106xz_23{padding:1.5rem 2.5%}._widgetCard__title_106xz_37{margin:0;font-family:var(--font-clash);font-size:1.25rem;font-weight:500;line-height:1.3;color:var(--on-surface);letter-spacing:-.02em}._widgetCard--full_106xz_33 ._widgetCard__title_106xz_37{font-size:1.5rem}._widgetCard__content_106xz_52{flex:1 1 0}._widgetCard__content--scrollable_106xz_56{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--ds-border) transparent}._widgetCard__content--scrollable_106xz_56::-webkit-scrollbar{width:4px}._widgetCard__content--scrollable_106xz_56::-webkit-scrollbar-track{background:transparent}._widgetCard__content--scrollable_106xz_56::-webkit-scrollbar-thumb{background-color:var(--ds-border);border-radius:2px}._widgetCard__content--padded_106xz_76{padding:1rem 5%}._widgetCard--full_106xz_33 ._widgetCard__content--padded_106xz_76{padding:1.5rem 2.5%}@keyframes _fadeIn_106xz_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){._widgetCard_106xz_4{animation:none}}._dataCard_13ip1_3{background-color:var(--surface);border:1px solid var(--ds-border);border-radius:var(--radius);padding:1rem;transition:box-shadow .15s ease,border-color .15s ease;display:flex;flex-direction:column;gap:.75rem}._dataCard_13ip1_3:hover{box-shadow:var(--shadow-md)}._dataCard--clickable_13ip1_18{cursor:pointer}._dataCard--clickable_13ip1_18:focus-visible{outline:2px solid var(--ds-primary);outline-offset:2px}._baseList_1s0k1_3{display:flex;flex-direction:column}._baseList--scrollable_1s0k1_8{overflow-y:auto;flex:1 1 0;scrollbar-width:thin;scrollbar-color:var(--ds-border) transparent}._baseList--scrollable_1s0k1_8::-webkit-scrollbar{width:4px}._baseList--scrollable_1s0k1_8::-webkit-scrollbar-track{background:transparent}._baseList--scrollable_1s0k1_8::-webkit-scrollbar-thumb{background-color:var(--ds-border);border-radius:2px}._listItem_1x1io_3{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--ds-border);transition:background-color .1s ease;font-family:var(--font-inter)}._listItem_1x1io_3:last-child{border-bottom:none}._listItem_1x1io_3:hover{background-color:var(--surface-hover)}._listItem--clickable_1x1io_21{cursor:pointer}._listItem_1x1io_3:focus-visible{outline:2px solid var(--ds-primary);outline-offset:-2px}._listItem__leading_1x1io_31{flex-shrink:0;display:flex;align-items:center}._listItem__content_1x1io_37{flex:1;min-width:0}._listItem__trailing_1x1io_42{flex-shrink:0;display:flex;align-items:center;gap:.5rem}@media(max-width:640px){._listItem_1x1io_3{flex-wrap:wrap;gap:.5rem}}._status-badge_c7rzu_3{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border-radius:1rem;font-size:.75rem;font-weight:500;line-height:1;color:var(--custom-color, var(--current-color));background-color:var(--custom-bg, var(--current-bg));white-space:nowrap}._status-badge_c7rzu_3:before{content:"";display:block;width:6px;height:6px;border-radius:50%;background-color:var(--custom-color, var(--current-color))}._status-badge--neu_c7rzu_26{--current-color: var(--status-neu);--current-bg: color-mix(in srgb, var(--status-neu), transparent 90%)}._status-badge--offen_c7rzu_31{--current-color: var(--status-offen);--current-bg: color-mix(in srgb, var(--status-offen), transparent 90%)}._status-badge--in-prufung_c7rzu_36{--current-color: var(--status-in-prufung);--current-bg: color-mix(in srgb, var(--status-in-prufung), transparent 90%)}._status-badge--validierung_c7rzu_41{--current-color: var(--status-validierung);--current-bg: color-mix(in srgb, var(--status-validierung), transparent 90%)}._status-badge--abgeschlossen_c7rzu_46{--current-color: var(--status-abgeschlossen);--current-bg: color-mix(in srgb, var(--status-abgeschlossen), transparent 90%)}._favorite-btn_1fvb2_3{background:none;border:none;color:var(--custom-color, var(--on-surface-light));cursor:pointer;display:flex;align-items:center;justify-content:center;padding:.375rem;border-radius:var(--radius);transition:all .2s ease}._favorite-btn_1fvb2_3:hover,._favorite-btn_1fvb2_3:focus-visible{background-color:var(--surface-variant);color:var(--custom-active-color, var(--color-warning));outline:none}._favorite-btn--active_1fvb2_23{color:var(--custom-active-color, var(--color-warning))}._favorite-btn--md_1fvb2_28{padding:.375rem}._favorite-btn--md_1fvb2_28 svg{width:18px;height:18px;fill:currentColor}._favorite-btn--sm_1fvb2_39{padding:.25rem}._favorite-btn--sm_1fvb2_39 svg{width:16px;height:16px;fill:currentColor}._status-legend__item_c03nc_3{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-radius:calc(var(--radius) - 2px);cursor:pointer;transition:background-color .2s ease;border:1px solid transparent;background:none;width:100%}._status-legend__item_c03nc_3:hover,._status-legend__item_c03nc_3:focus-visible{background-color:var(--surface-variant);outline:none}._status-legend__item--active_c03nc_22{background-color:var(--surface-variant);border-color:var(--ds-border)}._status-legend__label-wrap_c03nc_27{display:flex;align-items:center;gap:.5rem}._status-legend__color_c03nc_33{width:12px;height:12px;border-radius:50%;flex-shrink:0;background-color:var(--custom-color, var(--current-color))}._status-legend__label_c03nc_27{font-size:.875rem;color:var(--on-surface);font-weight:500}._status-legend__count_c03nc_47{font-family:var(--font-grotesk);font-size:.875rem;color:var(--on-surface-variant);font-weight:600;background-color:var(--surface-variant);padding:.125rem .5rem;border-radius:1rem}._color-neu_c03nc_57{--current-color: var(--status-neu)}._color-offen_c03nc_61{--current-color: var(--status-offen)}._color-in-prufung_c03nc_65{--current-color: var(--status-in-prufung)}._color-validierung_c03nc_69{--current-color: var(--status-validierung)}._color-abgeschlossen_c03nc_73{--current-color: var(--status-abgeschlossen)}._color-alle_c03nc_77{--current-color: var(--status-alle)}._status-overview__chart-container_6nwc9_3{position:relative;width:200px;height:200px;margin:1rem auto 2rem;display:flex;align-items:center;justify-content:center}._status-chart-svg_6nwc9_13{width:100%;height:100%;position:absolute;top:0;left:0;filter:drop-shadow(var(--shadow-sm));pointer-events:none}._status-chart__segment_6nwc9_23{transition:all .3s cubic-bezier(.4,0,.2,1);stroke-linecap:butt;pointer-events:stroke}._status-chart__segment_6nwc9_23:hover,._status-chart__segment--hovered_6nwc9_30{stroke-width:48px;filter:brightness(1.1)}._status-chart__segment--dimmed_6nwc9_35{opacity:.6;filter:grayscale(.2)}._status-chart__hole_6nwc9_40{width:120px;height:120px;background-color:var(--surface);border-radius:50%;position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:inset var(--shadow-sm);clip-path:circle(50%)}._status-chart__total-value_6nwc9_55{font-family:var(--font-clash);font-size:2rem;font-weight:600;line-height:1;color:var(--on-surface)}._status-chart__total-label_6nwc9_63{font-size:.75rem;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.05em;margin-top:.25rem}._nameCell_1n6hv_4{display:flex;align-items:center;gap:.5rem}._favorite_1n6hv_10{margin-left:-.5rem}._nameWrapper_1n6hv_14{display:flex;flex-direction:column;overflow:hidden;min-width:0}._name_1n6hv_4{font-weight:500;color:var(--on-surface);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._secondary_1n6hv_31{font-size:.75rem;color:var(--on-surface-variant);margin-top:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._client_1n6hv_41{color:var(--on-surface-variant);font-size:.8125rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._dateMain_1n6hv_51{color:var(--on-surface);font-weight:500;font-size:.8125rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._avatar_1elxr_3{width:1.5rem;height:1.5rem;border-radius:50%;background-color:var(--surface-variant);border:1px solid var(--ds-border);display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:600;color:var(--on-surface);text-transform:uppercase}._avatar-group_1elxr_18{display:flex;align-items:center}._group-member_1elxr_23{margin-right:-.5rem;position:relative;z-index:1;border:2px solid var(--surface)}._group-member_1elxr_23:hover{z-index:10}._btn_1icnw_3{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;white-space:nowrap;border-radius:calc(var(--radius) - 2px);font-size:.875rem;font-weight:500;transition:all .2s cubic-bezier(.16,1,.3,1);cursor:pointer;border:1px solid transparent}._btn_1icnw_3:focus-visible{outline:2px solid var(--ds-primary);outline-offset:2px}._btn_1icnw_3:active{transform:scale(.98)}._btn--primary_1icnw_27{background:var(--gradient-header);color:#fff;padding:.5rem 1rem;box-shadow:var(--shadow-sm)}._btn--primary_1icnw_27:hover{box-shadow:var(--shadow-md);opacity:.9}._btn--outline_1icnw_39{background-color:transparent;border-color:var(--ds-border);color:var(--on-surface);padding:.375rem .75rem;min-width:110px}._btn--outline_1icnw_39:hover{background-color:var(--surface-variant);color:var(--on-surface)}._btn--ghost_1icnw_52{background-color:transparent;color:var(--on-surface-variant);padding:.375rem}._btn--ghost_1icnw_52:hover{background-color:var(--surface-variant);color:var(--on-surface)}._btn--sm_1icnw_63{padding:.2rem .4rem;font-size:.75rem;min-width:auto!important}._badge_aax9r_3{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-grotesk);font-weight:800}._badge--high_aax9r_12{background-color:var(--error-variant);color:var(--ds-error);border:1px solid color-mix(in srgb,var(--ds-error),transparent 80%)}._badge--medium_aax9r_18{background-color:var(--color-warning-variant);color:var(--color-warning);border:1px solid color-mix(in srgb,var(--color-warning),transparent 80%)}._badge--low_aax9r_24{background-color:var(--surface-variant);color:var(--on-surface-variant);border:1px solid var(--ds-border)}._badge--size-small_aax9r_30{width:1.5rem;height:1.5rem;border-radius:.375rem;font-size:.75rem}._badge--size-large_aax9r_37{width:2.25rem;height:2.25rem;border-radius:.5rem;font-size:1.125rem}._badge--size-large_aax9r_37._badge--low_aax9r_24{font-size:.875rem}._badge_1j9lv_3{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;background-color:var(--surface-variant);border-radius:2rem;font-size:.8125rem;font-weight:500}._status-dropdown_6t2ce_3{position:relative;display:inline-block;width:88px}._status-trigger_6t2ce_9{width:100%!important;justify-content:space-between!important}._status-menu_6t2ce_14{position:absolute;top:100%;right:0;margin-top:.25rem;background-color:var(--surface);border:1px solid var(--ds-border);border-radius:calc(var(--radius) - 2px);box-shadow:var(--shadow-lg);z-index:100;width:100%;min-width:88px;display:none;padding:.25rem;animation:_fadeIn_6t2ce_1 .15s ease-out}._status-menu_6t2ce_14._is-open_6t2ce_31{display:block}._status-menu-item_6t2ce_35{width:100%;padding:.5rem .75rem;font-size:.8125rem;text-align:left;background:none;border:none;cursor:pointer;border-radius:calc(var(--radius) - 4px);color:var(--on-surface);transition:background-color .1s}._status-menu-item_6t2ce_35:hover{background-color:var(--surface-variant)}._status-menu-item_6t2ce_35._is-active_6t2ce_52{font-weight:500}._icon_6t2ce_56{width:1rem;height:1rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}._icon-sm_6t2ce_65{width:.875rem;height:.875rem}@keyframes _fadeIn_6t2ce_1{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}._checklist_19mhr_3{gap:.5rem}._checkItem_19mhr_7{display:flex;align-items:center;gap:.5rem;font-size:.875rem;padding:0}._checkItem_19mhr_7 input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--ds-primary);cursor:pointer}._checkItem_19mhr_7 label{cursor:pointer}._checkItem_19mhr_7._is-done_19mhr_26 label{text-decoration:line-through;color:var(--on-surface-variant)}._checklist--readonly_19mhr_31 ._checkItem_19mhr_7 label{cursor:pointer}._checklist--readonly_19mhr_31 ._checkItem_19mhr_7 input[type=checkbox]{pointer-events:all}._formControl_19mhr_39{width:100%;padding:.125rem;border:none;background:transparent;color:var(--on-surface);font-family:inherit;font-size:.875rem;border-radius:calc(var(--radius) - 2px);transition:background-color .2s}._formControl_19mhr_39:focus{outline:none;background-color:var(--surface)}._is-done_19mhr_26 ._formControl_19mhr_39{text-decoration:line-through;color:var(--on-surface-variant)}._searchInput_1ms0w_3{display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border:1px solid var(--ds-border);border-radius:1rem;background-color:var(--surface-variant);transition:border-color .15s ease,box-shadow .15s ease;min-width:200px}._searchInput_1ms0w_3:focus-within{border-color:var(--ds-primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--ds-primary),transparent 85%)}._icon_1ms0w_20{width:14px;height:14px;color:var(--on-surface-variant);flex-shrink:0}._field_1ms0w_27{border:none;background:none;font-family:var(--font-inter);font-size:.8125rem;color:var(--on-surface);outline:none;width:100%}._field_1ms0w_27::placeholder{color:var(--on-surface-variant)}@media(max-width:1024px){._searchInput_1ms0w_3{min-width:160px}}@media(max-width:640px){._searchInput_1ms0w_3{flex:1;min-width:0}}._btn_1do3o_3{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;border:1px solid var(--ds-border);background:none;border-radius:calc(var(--radius) - 2px);font-family:var(--font-inter);font-size:.6875rem;font-weight:500;color:var(--on-surface-variant);cursor:pointer;transition:all .15s ease}._btn_1do3o_3:hover{border-color:color-mix(in srgb,var(--ds-primary),transparent 60%);color:var(--ds-primary);background-color:var(--primary-container)}._btn_1do3o_3:focus-visible{outline:2px solid var(--ds-primary);outline-offset:1px}._chevron_1do3o_30{width:12px;height:12px;transition:transform .2s ease;flex-shrink:0}._btn--open_1do3o_37 ._chevron_1do3o_30{transform:rotate(180deg)}._circle_gvt69_3{position:relative;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center}._svg_gvt69_12{width:100%;height:100%;transform:rotate(-90deg)}._track_gvt69_18{fill:none;stroke:var(--surface-variant);stroke-width:3}._fill_gvt69_24{fill:none;stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset .4s ease}._label_gvt69_31{position:absolute;font-family:var(--font-grotesk);font-size:.5625rem;font-weight:600;color:var(--on-surface)}._bar_l0q8t_3{display:flex;align-items:center;gap:.5rem}._track_l0q8t_9{width:60px;height:4px;background-color:var(--surface-variant);border-radius:2px;overflow:hidden}._fill_l0q8t_17{height:100%;border-radius:2px;background:var(--gradient-primary)}._value_l0q8t_23{font-family:var(--font-grotesk);font-size:.75rem;font-weight:500;color:var(--on-surface-variant);min-width:28px}._empty_26icj_3{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem;text-align:center}._icon_26icj_12{width:48px;height:48px;color:var(--on-surface-light);margin-bottom:1rem}._title_26icj_19{font-family:var(--font-clash);font-size:1.125rem;font-weight:500;color:var(--on-surface);margin-bottom:.25rem}._text_26icj_27{font-size:.8125rem;color:var(--on-surface-variant)}._toggle_1uawr_3{display:inline-flex;background-color:var(--surface-variant);border-radius:calc(var(--radius) - 2px);padding:3px;gap:2px}._btn_1uawr_11{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border:none;background:none;border-radius:calc(var(--radius) - 4px);font-family:var(--font-inter);font-size:.8125rem;font-weight:500;color:var(--on-surface-variant);cursor:pointer;transition:all .15s ease;white-space:nowrap}._btn_1uawr_11:hover{color:var(--on-surface)}._btn_1uawr_11:focus-visible{outline:2px solid var(--ds-primary);outline-offset:1px}._btn--active_1uawr_37{background-color:var(--surface);color:var(--on-surface);box-shadow:var(--shadow-sm)}._icon_1uawr_43{width:16px;height:16px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}._icon_1uawr_43>svg{width:100%;height:100%}._filterChip_43db3_4{display:inline-flex;align-items:center;gap:.375rem;padding:.3125rem .75rem;border:1px solid var(--ds-border);background-color:var(--surface);border-radius:1rem;font-family:var(--font-inter);font-size:.75rem;font-weight:500;color:var(--on-surface-variant);cursor:pointer;transition:all .15s ease;position:relative;white-space:nowrap}._filterChip_43db3_4:hover{border-color:color-mix(in srgb,var(--ds-primary),transparent 60%);color:var(--on-surface)}._filterChip_43db3_4:focus-visible{outline:2px solid var(--ds-primary);outline-offset:1px}._filterChip--active_43db3_32{background-color:var(--primary-variant);border-color:color-mix(in srgb,var(--ds-primary),transparent 70%);color:var(--ds-primary)}._filterChip__icon_43db3_38{width:14px;height:14px;flex-shrink:0}._filterChip__chevron_43db3_44{width:12px;height:12px;flex-shrink:0;transition:transform .15s ease}._filterChip--open_43db3_51 ._filterChip__chevron_43db3_44{transform:rotate(180deg)}._filterChip__label_43db3_55{max-width:120px;overflow:hidden;text-overflow:ellipsis}._filterDropdown_43db3_62{position:absolute;top:calc(100% + 4px);left:0;min-width:180px;background-color:var(--surface);border:1px solid var(--ds-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);z-index:30;padding:.375rem;display:none}._filterDropdown--open_43db3_76{display:block}._filterDropdown__item_43db3_80{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4375rem .625rem;border:none;background:none;font-family:var(--font-inter);font-size:.8125rem;color:var(--on-surface);cursor:pointer;border-radius:calc(var(--radius) - 4px);transition:background-color .1s ease;text-align:left}._filterDropdown__item_43db3_80:hover{background-color:var(--surface-variant)}._filterDropdown__item--selected_43db3_101{color:var(--ds-primary);font-weight:500}._filterDropdown__check_43db3_106{width:14px;height:14px;flex-shrink:0;opacity:0}._filterDropdown__item--selected_43db3_101 ._filterDropdown__check_43db3_106{opacity:1}._filterDropdown__search_43db3_117{display:flex;align-items:center;gap:.375rem;padding:.375rem .625rem;margin-bottom:.25rem;border-bottom:1px solid var(--ds-border)}._filterDropdown__searchIcon_43db3_126{width:12px;height:12px;color:var(--on-surface-variant);flex-shrink:0}._filterDropdown__searchInput_43db3_133{border:none;background:none;font-family:var(--font-inter);font-size:.75rem;color:var(--on-surface);outline:none;width:100%}._filterDropdown__searchInput_43db3_133::placeholder{color:var(--on-surface-variant)}._popover_jepnf_3{position:fixed;z-index:50;min-width:280px;background-color:var(--surface);border:1px solid var(--ds-border);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:.5rem;display:none}._popover--open_jepnf_15{display:block}._checkbox_shqzk_3{display:inline-flex;align-items:center;gap:.5rem;cursor:pointer;font-family:var(--font-inter);font-size:.8125rem;color:var(--on-surface)}._checkbox__input_shqzk_13{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}._checkbox__box_shqzk_23{width:16px;height:16px;border:1.5px solid var(--ds-border);border-radius:4px;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s ease}._checkbox--checked_shqzk_35 ._checkbox__box_shqzk_23{background-color:var(--ds-primary);border-color:var(--ds-primary)}._checkbox__icon_shqzk_40{width:10px;height:10px;color:#fff;opacity:0}._checkbox--checked_shqzk_35 ._checkbox__icon_shqzk_40{opacity:1}._checkbox_shqzk_3:hover ._checkbox__box_shqzk_23{border-color:var(--ds-primary)}._checkbox__input_shqzk_13:focus-visible+._checkbox__box_shqzk_23{outline:2px solid var(--ds-primary);outline-offset:1px}._checkbox__label_shqzk_60{flex:1;min-width:0}._formField_v7ze9_3{display:flex;flex-direction:column;gap:.5rem}._formField__label_v7ze9_9{font-size:.625rem;line-height:.875rem;font-weight:600;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.08em;font-family:var(--font-inter)}._formField__error_v7ze9_19{font-size:.75rem;color:var(--ds-error);font-family:var(--font-inter)}._textInput_ix759_3{width:100%;padding:.625rem .75rem;border:1px solid var(--ds-border);border-radius:calc(var(--radius) - 2px);background-color:var(--surface);color:var(--on-surface);font-family:var(--font-inter);font-size:.875rem;line-height:1.25rem;transition:border-color .2s,box-shadow .2s;box-sizing:border-box}._textInput_ix759_3:focus{outline:none;border-color:var(--ds-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--ds-primary),transparent 88%)}._textInput_ix759_3::placeholder{color:var(--on-surface-variant)}._select_6527a_3{width:100%;padding:.625rem .75rem;border:1px solid var(--ds-border);border-radius:calc(var(--radius) - 2px);background-color:var(--surface);color:var(--on-surface);font-family:var(--font-inter);font-size:.875rem;line-height:1.25rem;cursor:pointer;outline:none;transition:border-color .2s,box-shadow .2s;box-sizing:border-box;appearance:auto}._select_6527a_3:focus-visible{border-color:var(--ds-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--ds-primary),transparent 88%)}._textArea_kwln7_3{width:100%;padding:.625rem .75rem;border:1px solid var(--ds-border);border-radius:calc(var(--radius) - 2px);background-color:var(--surface);color:var(--on-surface);font-family:var(--font-inter);font-size:.875rem;line-height:1.25rem;transition:border-color .2s,box-shadow .2s;box-sizing:border-box;resize:vertical;min-height:80px}._textArea_kwln7_3:focus{outline:none;border-color:var(--ds-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--ds-primary),transparent 88%)}._textArea_kwln7_3::placeholder{color:var(--on-surface-variant)}._overlay_1wnad_4{position:fixed;inset:0;background-color:#0f172a66;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50;opacity:0;pointer-events:none;transition:opacity .2s ease-out;padding:1rem}._overlay--active_1wnad_19{opacity:1;pointer-events:all}._content_1wnad_25{background-color:var(--surface);color:var(--on-surface);font-family:var(--font-inter);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;transform:scale(.95) translateY(10px);transition:transform .2s ease-out;overflow:hidden}._overlay--active_1wnad_19 ._content_1wnad_25{transform:scale(1) translateY(0)}._header_1wnad_46{padding:1.25rem 1.5rem;border-bottom:1px solid var(--ds-border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}._header__title_1wnad_55{margin:0;font-family:var(--font-clash);font-weight:500;font-size:1.25rem;line-height:1.75rem;color:var(--on-surface)}._body_1wnad_65{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1.5rem;scrollbar-width:thin;scrollbar-color:var(--ds-border) transparent}._body_1wnad_65::-webkit-scrollbar{width:4px}._body_1wnad_65::-webkit-scrollbar-thumb{background-color:var(--ds-border);border-radius:2px}._footer_1wnad_85{padding:1rem 1.5rem;border-top:1px solid var(--ds-border);display:flex;justify-content:flex-end;gap:.5rem;background:var(--surface-hover);flex-shrink:0}._icon_1wnad_96{width:1.25rem;height:1.25rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}._dashboard_avuww_4{width:100%;display:grid;grid-template-columns:minmax(280px,25%) 1fr;gap:1.5rem}@media(max-width:1024px){._dashboard_avuww_4{grid-template-columns:1fr}}._sectionTitle_avuww_18{font-family:var(--font-clash);font-size:1.5rem;font-weight:500;color:var(--on-surface);margin:0 0 1.5rem}._statusLegend_avuww_27{display:flex;flex-direction:column;gap:.75rem}._projectList_avuww_34 th:first-child,._projectList_avuww_34 td:first-child{padding-left:2.5%}._projectList_avuww_34 th:last-child,._projectList_avuww_34 td:last-child{padding-right:2.5%}._taskItem_77jzk_4{display:grid;grid-template-columns:55% 15% 30%;align-items:center;gap:0;padding:.75rem 5%;font-family:var(--font-inter)}._taskItem__content_77jzk_14{display:flex;flex-direction:column;gap:.375rem;min-width:0}._taskItem__titleGroup_77jzk_21{display:flex;align-items:center;gap:.375rem;min-width:0}._taskItem__title_77jzk_21{color:var(--on-surface);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.875rem;font-weight:500;line-height:1.25rem;font-family:var(--font-inter)}._taskItem__meta_77jzk_41{display:flex;align-items:center;gap:1.25rem;color:var(--on-surface-variant);font-size:.625rem;line-height:.875rem;font-family:var(--font-inter);min-width:0}._metaUser_77jzk_52{display:flex;align-items:center;flex-shrink:0}._metaProject_77jzk_58{display:flex;align-items:center;gap:.375rem;color:var(--on-surface-variant);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.75rem;flex:0 1 auto}._metaProject_77jzk_58 ._icon-sm_77jzk_71{flex-shrink:0}._taskItem__deadline_77jzk_76{white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right;font-family:var(--font-grotesk);font-size:.75rem;line-height:1rem}._deadline-urgent_77jzk_85{color:var(--color-danger);font-weight:500}._deadline-normal_77jzk_90{color:var(--on-surface-variant)}._taskItem__actions_77jzk_95{display:flex;align-items:center;gap:.5rem;justify-content:flex-end}._icon-sm_77jzk_71{width:.875rem;height:.875rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}@media(max-width:640px){._taskItem_77jzk_4{grid-template-columns:1fr auto;grid-template-rows:auto auto;grid-template-areas:"content actions" "deadline actions";gap:.25rem .75rem}._taskItem__content_77jzk_14{grid-area:content}._taskItem__deadline_77jzk_76{grid-area:deadline;text-align:left}._taskItem__actions_77jzk_95{grid-area:actions;align-self:center}}._view-group_1lp4x_4{display:flex;flex-direction:column;gap:.375rem}._view-label_1lp4x_10{font-size:.625rem;line-height:.875rem;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.08em;font-weight:600;font-family:var(--font-inter)}._view-badge-row_1lp4x_20{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-start}._view-task-title_1lp4x_27{margin:0;font-family:var(--font-clash);font-weight:600;font-size:1.25rem;line-height:1.4;color:var(--on-surface)}._view-value-strong_1lp4x_36{font-family:var(--font-grotesk);font-weight:500;font-size:.9375rem;color:var(--on-surface)}._view-description_1lp4x_43{font-size:.875rem;line-height:1.6;margin:0;color:var(--on-surface);font-family:var(--font-inter)}._text-muted_1lp4x_51{color:var(--on-surface-variant);font-style:italic}._form-row_1lp4x_57{display:grid;grid-template-columns:1fr 1fr;gap:1rem}._assignee-row_1lp4x_63{display:flex;align-items:center;gap:.75rem}._assignee-select_1lp4x_69{flex:1}._add-checklist-btn_1lp4x_73{align-self:flex-start;margin-top:.25rem}._icon-pencil_1lp4x_79{width:.875rem;height:.875rem;fill:currentColor}._icon-sm_1lp4x_85{width:.875rem;height:.875rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}@media(max-width:640px){._form-row_1lp4x_57{grid-template-columns:1fr}}._icon_1rthp_4{width:1rem;height:1rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}._icon-sm_1rthp_14{width:.875rem;height:.875rem}._page_1c5lq_3{max-width:1400px;margin:0 auto;padding:2rem 1.5rem}@media(max-width:1024px){._page_1c5lq_3{padding:1.5rem 1rem}}@media(max-width:640px){._page_1c5lq_3{padding:1rem .5rem}}._domainSwitcher_abrin_3{display:flex;align-items:center;gap:.75rem;max-width:1400px;margin:0 auto 1rem}._domainSwitcher__label_abrin_11{font-size:.75rem;font-weight:600;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}._dataGrid_1teg2_3{background-color:var(--surface);border:1px solid var(--ds-border);border-radius:var(--radius);overflow:hidden;position:relative}._dataGrid__viewPanel_1teg2_11{min-height:200px}._resultCount_1teg2_15{display:flex;align-items:center;padding:.625rem 1.25rem;border-top:1px solid var(--ds-border);font-size:.75rem;color:var(--on-surface-variant)}._resultCount__number_1teg2_24{font-weight:600;color:var(--on-surface)}._toolbar_1vf8q_3{position:sticky;top:0;z-index:20;background-color:var(--surface);border-bottom:1px solid var(--ds-border)}._toolbar__row_1vf8q_11{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1.25rem;gap:1rem;flex-wrap:wrap}._toolbar__row--filters_1vf8q_20{border-top:1px solid var(--ds-border);padding-top:.625rem;padding-bottom:.625rem}._toolbar__left_1vf8q_26{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}._toolbar__right_1vf8q_33{display:flex;align-items:center;gap:.75rem}._settingsBtn_1vf8q_40{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border:1px solid var(--ds-border);background-color:var(--surface);border-radius:calc(var(--radius) - 2px);font-family:var(--font-inter);font-size:.8125rem;font-weight:500;color:var(--on-surface-variant);cursor:pointer;transition:all .15s ease;white-space:nowrap}._settingsBtn_1vf8q_40:hover{background-color:var(--surface-variant);color:var(--on-surface)}._settingsBtn_1vf8q_40:focus-visible{outline:2px solid var(--ds-primary);outline-offset:1px}._settingsBtn__icon_1vf8q_67{width:16px;height:16px}._filterMore_1vf8q_73{display:inline-flex;align-items:center;position:relative}._filterMore__btn_1vf8q_79{display:inline-flex;align-items:center;gap:.25rem;padding:.3125rem .625rem;border:none;background:none;font-family:var(--font-inter);font-size:.75rem;font-weight:500;color:var(--on-surface-variant);cursor:pointer;transition:color .15s ease}._filterMore__btn_1vf8q_79:hover{color:var(--ds-primary)}._filterMore__btn_1vf8q_79:focus-visible{outline:2px solid var(--ds-primary);outline-offset:2px;border-radius:calc(var(--radius) - 2px)}._filterMore__badge_1vf8q_104{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--gradient-primary);color:#fff;font-size:.625rem;font-weight:600;margin-left:.25rem}@media(max-width:640px){._toolbar__row_1vf8q_11{padding:.625rem .75rem;flex-direction:column;align-items:stretch}._toolbar__left_1vf8q_26,._toolbar__right_1vf8q_33{width:100%}._toolbar__right_1vf8q_33{justify-content:space-between}}._expansionDrawer_1bj98_4{display:none}._expansionDrawer--open_1bj98_8{display:table-row}._expansionDrawer__cell_1bj98_12{padding:0!important;background-color:var(--surface-hover);border-bottom:1px solid var(--ds-border)}._expansionDrawer__content_1bj98_18{padding:1rem 1.5rem 1rem 3.5rem}._expansionDrawer__title_1bj98_22{font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);font-weight:600;margin-bottom:.625rem}._crossSellTable_1bj98_32{width:100%;border-collapse:separate;border-spacing:0;text-align:left}._crossSellTable_1bj98_32 th{font-size:.625rem;text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);padding:.375rem .75rem;font-weight:600;border-bottom:1px solid var(--ds-border)}._crossSellTable_1bj98_32 td{padding:.5rem .75rem;font-size:.8125rem;border-bottom:1px solid var(--border-variant);vertical-align:middle}._crossSellTable_1bj98_32 tr:last-child td{border-bottom:none}._quickAddBtn_1bj98_61{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .625rem;border:none;background:var(--gradient-primary);border-radius:calc(var(--radius) - 2px);font-family:var(--font-inter);font-size:.6875rem;font-weight:500;color:#fff;cursor:pointer;transition:opacity .15s ease,transform .1s ease}._quickAddBtn_1bj98_61:hover{opacity:.9}._quickAddBtn_1bj98_61:active{transform:scale(.97)}._quickAddBtn_1bj98_61:focus-visible{outline:2px solid var(--ds-primary);outline-offset:2px}._quickAddBtn__icon_1bj98_90{width:12px;height:12px}._cellDouble_1y1lm_4{display:flex;flex-direction:column;gap:.125rem;min-width:0}._cellDouble__primary_1y1lm_11{font-weight:500;color:var(--on-surface);font-size:.8125rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}._cellDouble__secondary_1y1lm_22{font-size:.6875rem;color:var(--on-surface-variant);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._cellLink_1y1lm_31{color:var(--ds-primary);text-decoration:none;font-weight:500;font-size:.8125rem;transition:color .1s ease}._cellLink_1y1lm_31:hover{color:var(--ds-primary);text-decoration:underline}._cellPrice_1y1lm_45{font-family:var(--font-grotesk);font-size:.8125rem;font-weight:500;color:var(--on-surface);font-variant-numeric:tabular-nums}._cellPrice__currency_1y1lm_53{color:var(--on-surface-variant);font-weight:400;margin-left:.125rem}._inventoryBadge_1y1lm_60{display:inline-flex;align-items:center;gap:.25rem;font-family:var(--font-grotesk);font-size:.8125rem;font-weight:500}._inventoryBadge--high_1y1lm_69{color:var(--inventory-high-dark)}._inventoryBadge--medium_1y1lm_73{color:var(--inventory-medium-dark)}._inventoryBadge--low_1y1lm_77{color:var(--ds-error)}._inventoryBadge__indicator_1y1lm_81{width:8px;height:8px;border-radius:50%}._inventoryBadge--high_1y1lm_69 ._inventoryBadge__indicator_1y1lm_81{background-color:var(--inventory-high)}._inventoryBadge--medium_1y1lm_73 ._inventoryBadge__indicator_1y1lm_81{background-color:var(--inventory-medium)}._inventoryBadge--low_1y1lm_77 ._inventoryBadge__indicator_1y1lm_81{background-color:var(--inventory-low)}._statusBadge_1y1lm_100{display:inline-flex;align-items:center;gap:.3125rem;padding:.1875rem .5rem;border-radius:1rem;font-size:.6875rem;font-weight:500;line-height:1.4;white-space:nowrap}._statusBadge__dot_1y1lm_112{width:6px;height:6px;border-radius:50%;flex-shrink:0}._statusBadge--active_1y1lm_119{background-color:color-mix(in srgb,var(--lifecycle-active),transparent 88%);color:var(--lifecycle-active-dark)}._statusBadge--active_1y1lm_119 ._statusBadge__dot_1y1lm_112{background-color:var(--lifecycle-active)}._statusBadge--nrnd_1y1lm_128{background-color:color-mix(in srgb,var(--lifecycle-nrnd),transparent 86%);color:var(--lifecycle-nrnd-dark)}._statusBadge--nrnd_1y1lm_128 ._statusBadge__dot_1y1lm_112{background-color:var(--lifecycle-nrnd)}._statusBadge--eol_1y1lm_137{background-color:color-mix(in srgb,var(--lifecycle-eol),transparent 90%);color:var(--lifecycle-eol)}._statusBadge--eol_1y1lm_137 ._statusBadge__dot_1y1lm_112{background-color:var(--lifecycle-eol)}._statusBadge--production_1y1lm_146{background-color:color-mix(in srgb,var(--lifecycle-production),transparent 90%);color:var(--lifecycle-production)}._statusBadge--production_1y1lm_146 ._statusBadge__dot_1y1lm_112{background-color:var(--lifecycle-production)}._statusBadge--neu_1y1lm_156{background-color:color-mix(in srgb,var(--status-neu),transparent 90%);color:var(--status-neu)}._statusBadge--neu_1y1lm_156 ._statusBadge__dot_1y1lm_112{background-color:var(--status-neu)}._statusBadge--offen_1y1lm_165{background-color:color-mix(in srgb,var(--status-offen),transparent 90%);color:var(--status-offen)}._statusBadge--offen_1y1lm_165 ._statusBadge__dot_1y1lm_112{background-color:var(--status-offen)}._statusBadge--in-prufung_1y1lm_174{background-color:color-mix(in srgb,var(--status-in-prufung),transparent 90%);color:var(--status-in-prufung)}._statusBadge--in-prufung_1y1lm_174 ._statusBadge__dot_1y1lm_112{background-color:var(--status-in-prufung)}._statusBadge--validierung_1y1lm_183{background-color:color-mix(in srgb,var(--status-validierung),transparent 90%);color:var(--status-validierung)}._statusBadge--validierung_1y1lm_183 ._statusBadge__dot_1y1lm_112{background-color:var(--status-validierung)}._statusBadge--abgeschlossen_1y1lm_192{background-color:color-mix(in srgb,var(--status-abgeschlossen),transparent 90%);color:var(--status-abgeschlossen)}._statusBadge--abgeschlossen_1y1lm_192 ._statusBadge__dot_1y1lm_112{background-color:var(--status-abgeschlossen)}._listItem_atiqa_7{padding:.875rem 1.25rem}._title_atiqa_11{font-weight:500;font-size:.875rem;color:var(--on-surface);display:flex;align-items:center;gap:.5rem}._meta_atiqa_20{display:flex;align-items:center;gap:.75rem;margin-top:.25rem;font-size:.75rem;color:var(--on-surface-variant);flex-wrap:wrap}._metaDivider_atiqa_30{color:var(--ds-border)}._badges_atiqa_34{display:flex;align-items:center;gap:.5rem;flex-shrink:0}._price_atiqa_41{font-family:var(--font-grotesk);font-weight:500;font-size:.875rem;color:var(--on-surface);flex-shrink:0;min-width:80px;text-align:right}@media(max-width:640px){._listItem_atiqa_7{flex-wrap:wrap;gap:.5rem}._price_atiqa_41{text-align:left}}._cardGrid_h1jiq_3{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;padding:1.25rem}._header_h1jiq_11{display:flex;align-items:flex-start;justify-content:space-between}._title_h1jiq_17{font-weight:500;font-size:.875rem;color:var(--on-surface)}._subtitle_h1jiq_23{font-size:.6875rem;color:var(--on-surface-variant);margin-top:.125rem}._badges_h1jiq_29{display:flex;gap:.375rem;flex-wrap:wrap}._row_h1jiq_35{display:flex;justify-content:space-between;align-items:center}._label_h1jiq_41{font-size:.6875rem;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.04em}._value_h1jiq_48{font-family:var(--font-grotesk);font-size:.8125rem;font-weight:500;color:var(--on-surface)}._footer_h1jiq_55{display:flex;align-items:center;justify-content:space-between;padding-top:.625rem;border-top:1px solid var(--ds-border)}._footerLink_h1jiq_63{font-size:.75rem;color:var(--ds-primary);font-weight:500}@media(max-width:1024px){._cardGrid_h1jiq_3{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}}@media(max-width:640px){._cardGrid_h1jiq_3{grid-template-columns:1fr;padding:.75rem}}._configPopover__title_1u5mf_3{font-size:.75rem;font-weight:600;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.05em;padding:.5rem .625rem .375rem}._configPopover__item_1u5mf_12{display:flex;align-items:center;gap:.5rem;width:100%;padding:.4375rem .625rem;border:none;background:none;font-family:var(--font-inter);font-size:.8125rem;color:var(--on-surface);cursor:pointer;border-radius:calc(var(--radius) - 4px);transition:background-color .1s ease;text-align:left}._configPopover__item_1u5mf_12:hover{background-color:var(--surface-variant)}._configPopover__item_1u5mf_12[draggable=true]{touch-action:none}._configPopover__dragHandle_1u5mf_38{margin-left:0;color:var(--on-surface-light);cursor:grab;display:flex;align-items:center;padding:0 .125rem}._configPopover__dragHandle_1u5mf_38:active{cursor:grabbing}:root{--surface: #ffffff;--surface-variant: #f0f1f2;--surface-hover: #f7f7f7;--ds-border: #e0e4eb;--ds-border-variant: rgba(0, 20, 41, .1);--on-surface: #001429;--on-surface-variant: #576472;--on-surface-light: #9aa2aa;--ds-primary: #0073e6;--ds-primary-variant: rgba(0, 115, 230, .07);--ds-primary-container: rgba(0, 115, 230, .05);--ds-error: #bd0c38;--ds-error-variant: rgba(189, 12, 56, .07);--color-success: #1ec489;--color-success-dark: #148a5f;--color-success-variant: rgba(69, 220, 166, .2);--color-warning: #efaf55;--color-warning-dark: #b07a1e;--color-warning-variant: rgba(239, 175, 85, .25);--color-info: #8c46c4;--color-info-variant: rgba(169, 62, 255, .15);--color-danger: #f34e2a;--color-danger-variant: rgba(243, 78, 42, .2);--lifecycle-active: var(--color-success);--lifecycle-active-dark: var(--color-success-dark);--lifecycle-nrnd: var(--color-warning);--lifecycle-nrnd-dark: var(--color-warning-dark);--lifecycle-eol: var(--ds-error);--lifecycle-production: var(--ds-primary);--inventory-high: var(--color-success);--inventory-high-dark: var(--color-success-dark);--inventory-medium: var(--color-warning);--inventory-medium-dark: var(--color-warning-dark);--inventory-low: var(--ds-error);--destructive: #bd0c38;--score-high: #1ec489;--score-medium: #efaf55;--score-low: #f34e2a;--sidebar-background: #ffffff;--sidebar-foreground: #001429;--sidebar-primary: #0073e6;--sidebar-accent: #f0f1f2;--sidebar-border: #e0e4eb;--status-alle: #576472;--status-neu: #0073e6;--status-offen: #efaf55;--status-in-prufung: #f34e2a;--status-validierung: #1ec489;--status-abgeschlossen: #1ec489;--radius: .5rem;--font-inter: "Inter", sans-serif;--font-clash: "Clash Grotesk", sans-serif;--font-grotesk: "Space Grotesk", sans-serif;--shadow-sm: 0 1px 2px 0 rgba(0, 20, 41, .04);--shadow-md: 0 4px 6px -1px rgba(0, 20, 41, .08);--shadow-lg: 0 10px 15px -3px rgba(0, 20, 41, .1);--shadow-card: 0 2px 8px rgba(0, 20, 41, .06);--gradient-primary: linear-gradient(135deg, #0073e6, #0053a3);--gradient-header: linear-gradient(135deg, #0053a3, #0073e6)}@media(prefers-color-scheme:dark){:root{--surface: #000000;--surface-variant: #18191b;--surface-hover: #0d0d0d;--ds-border: #14181f;--ds-border-variant: rgba(255, 255, 255, .1);--on-surface: #ffffff;--on-surface-variant: #9aa2aa;--on-surface-light: #576472;--ds-primary: #0073e6;--ds-primary-variant: rgba(0, 115, 230, .07);--ds-primary-container: rgba(0, 115, 230, .05);--ds-error: #bd0c38;--ds-error-variant: rgba(189, 12, 56, .07);--color-success: #1ec489;--color-success-variant: rgba(69, 220, 166, .2);--color-warning: #efaf55;--color-warning-variant: rgba(239, 175, 85, .25);--color-info: #8c46c4;--color-info-variant: rgba(169, 62, 255, .15);--color-danger: #f34e2a;--color-danger-variant: rgba(243, 78, 42, .2);--sidebar-background: #000000;--sidebar-foreground: #ffffff;--sidebar-primary: #0073e6;--sidebar-accent: #18191b;--sidebar-border: #14181f;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5);--shadow-card: 0 2px 8px rgba(0, 0, 0, .3)}}._moreFilters_t87fp_3{max-width:320px;padding:.75rem}._moreFilters__header_t87fp_8{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}._moreFilters__title_t87fp_15{font-size:.8125rem;font-weight:600;color:var(--on-surface)}._moreFilters__clear_t87fp_21{font-size:.6875rem;color:var(--ds-primary);background:none;border:none;cursor:pointer;font-weight:500;padding:0}._moreFilters__clear_t87fp_21:hover{text-decoration:underline}._moreFilters__group_t87fp_35{margin-bottom:.625rem}._moreFilters__select_t87fp_39{padding:.4375rem .625rem;font-size:.8125rem}')),document.head.appendChild(r)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
2
+ import { jsx as e, jsxs as m, Fragment as Q } from "react/jsx-runtime";
3
+ import g, { useCallback as pe, useState as E, useRef as Je, useEffect as je, useMemo as ee, useReducer as jt } from "react";
4
+ function Ze(a) {
5
+ var n, t, r = "";
6
+ if (typeof a == "string" || typeof a == "number") r += a;
7
+ else if (typeof a == "object") if (Array.isArray(a)) {
8
+ var l = a.length;
9
+ for (n = 0; n < l; n++) a[n] && (t = Ze(a[n])) && (r && (r += " "), r += t);
10
+ } else for (t in a) a[t] && (r && (r += " "), r += t);
11
11
  return r;
12
12
  }
13
- function g() {
14
- for (var t, a, n = 0, r = "", i = arguments.length; n < i; n++) (t = arguments[n]) && (a = pe(t)) && (r && (r += " "), r += a);
13
+ function b() {
14
+ for (var a, n, t = 0, r = "", l = arguments.length; t < l; t++) (a = arguments[t]) && (n = Ze(a)) && (r && (r += " "), r += n);
15
15
  return r;
16
16
  }
17
- const Te = "_tableContainer_133qi_4", De = "_table_133qi_4", Pe = "_table__head_133qi_18", Me = "_sortable_133qi_32", Ee = "_sortIndicator_133qi_48", Be = "_colResizeHandle_133qi_61", Fe = "_table__row_133qi_87", j = {
18
- tableContainer: Te,
19
- table: De,
20
- table__head: Pe,
21
- sortable: Me,
22
- sortIndicator: Ee,
23
- colResizeHandle: Be,
24
- "table--resizing": "_table--resizing_133qi_77",
25
- table__row: Fe,
26
- "table__row--animated": "_table__row--animated_133qi_108",
27
- "col-hide-tablet": "_col-hide-tablet_133qi_131",
28
- "col-hide-mobile": "_col-hide-mobile_133qi_137"
17
+ const Ft = "_tableContainer_uxpjj_4", Bt = "_table_uxpjj_4", Tt = "_table__head_uxpjj_18", Pt = "_sortable_uxpjj_32", Et = "_sortIndicator_uxpjj_48", Ot = "_colResizeHandle_uxpjj_61", Mt = "_table__row_uxpjj_87", F = {
18
+ tableContainer: Ft,
19
+ table: Bt,
20
+ table__head: Tt,
21
+ sortable: Pt,
22
+ sortIndicator: Et,
23
+ colResizeHandle: Ot,
24
+ "table--resizing": "_table--resizing_uxpjj_77",
25
+ table__row: Mt,
26
+ "table__row--animated": "_table__row--animated_uxpjj_108",
27
+ "col-hide-tablet": "_col-hide-tablet_uxpjj_131",
28
+ "col-hide-mobile": "_col-hide-mobile_uxpjj_137"
29
29
  };
30
- function Oe({
31
- columns: t,
32
- rows: a,
33
- rowKey: n,
30
+ function zt({
31
+ columns: a,
32
+ rows: n,
33
+ rowKey: t,
34
34
  renderCell: r,
35
- sortColumn: i,
36
- sortDirection: u,
37
- onSort: l,
38
- resizable: h = !1,
39
- columnWidths: _ = {},
40
- onColumnResize: m,
35
+ sortColumn: l,
36
+ sortDirection: c,
37
+ onSort: s,
38
+ resizable: d = !1,
39
+ columnWidths: i = {},
40
+ onColumnResize: u,
41
41
  renderExpandedRow: o,
42
- rowAnimation: w = !1,
43
- rowClassName: x,
44
- rowDataAttributes: C,
45
- ariaLabel: f,
46
- className: k,
47
- ...v
48
- }, y) {
49
- const b = ze(
50
- (s, N, I) => {
51
- const L = N.offsetWidth, F = N.closest("table"), S = (Q) => {
52
- const Ae = Q.clientX - I, J = Math.max(60, L + Ae);
53
- N.style.width = `${J}px`, N.style.minWidth = `${J}px`, m?.(s, J);
54
- }, z = () => {
55
- F?.classList.remove(j["table--resizing"]), document.removeEventListener("mousemove", S), document.removeEventListener("mouseup", z);
42
+ rowAnimation: f = !1,
43
+ rowClassName: v,
44
+ rowDataAttributes: w,
45
+ ariaLabel: p,
46
+ className: y,
47
+ ...h
48
+ }, x) {
49
+ const k = pe(
50
+ (_, N, I) => {
51
+ const A = N.offsetWidth, C = N.closest("table"), L = (D) => {
52
+ const O = D.clientX - I, q = Math.max(60, A + O);
53
+ N.style.width = `${q}px`, N.style.minWidth = `${q}px`, u?.(_, q);
54
+ }, R = () => {
55
+ C?.classList.remove(F["table--resizing"]), document.removeEventListener("mousemove", L), document.removeEventListener("mouseup", R);
56
56
  };
57
- F?.classList.add(j["table--resizing"]), document.addEventListener("mousemove", S), document.addEventListener("mouseup", z);
57
+ C?.classList.add(F["table--resizing"]), document.addEventListener("mousemove", L), document.addEventListener("mouseup", R);
58
58
  },
59
- [m]
59
+ [u]
60
60
  );
61
- return /* @__PURE__ */ e("div", { ref: y, className: g(j.tableContainer, k), tabIndex: 0, ...v, children: /* @__PURE__ */ c("table", { className: j.table, "aria-label": f, children: [
62
- /* @__PURE__ */ e("thead", { className: j.table__head, children: /* @__PURE__ */ e("tr", { children: t.map((s) => {
63
- const N = g({
64
- [j["col-hide-tablet"]]: s.hideTablet,
65
- [j["col-hide-mobile"]]: s.hideMobile
66
- }), I = _[s.key] ? { width: `${_[s.key]}px`, minWidth: `${_[s.key]}px` } : s.width != null ? { width: typeof s.width == "number" ? `${s.width}px` : s.width, minWidth: typeof s.width == "number" ? `${s.width}px` : s.width } : void 0, L = i === s.key, F = L ? u === "asc" ? "ascending" : "descending" : void 0;
67
- return /* @__PURE__ */ c(
61
+ return /* @__PURE__ */ e("div", { ref: x, className: b(F.tableContainer, y), tabIndex: 0, ...h, children: /* @__PURE__ */ m("table", { className: F.table, "aria-label": p, children: [
62
+ /* @__PURE__ */ e("thead", { className: F.table__head, children: /* @__PURE__ */ e("tr", { children: a.map((_) => {
63
+ const N = b({
64
+ [F["col-hide-tablet"]]: _.hideTablet,
65
+ [F["col-hide-mobile"]]: _.hideMobile
66
+ }), I = i[_.key] ? { width: `${i[_.key]}px`, minWidth: `${i[_.key]}px` } : _.width != null ? { width: typeof _.width == "number" ? `${_.width}px` : _.width, minWidth: typeof _.width == "number" ? `${_.width}px` : _.width } : void 0, A = l === _.key, C = A ? c === "asc" ? "ascending" : "descending" : void 0;
67
+ return /* @__PURE__ */ m(
68
68
  "th",
69
69
  {
70
70
  scope: "col",
71
- className: g(N || void 0, { [j.sortable]: s.sortable }),
71
+ className: b(N || void 0, { [F.sortable]: _.sortable }),
72
72
  style: I,
73
- "aria-sort": F,
74
- tabIndex: s.sortable ? 0 : void 0,
75
- onClick: (S) => {
76
- h && S.target.closest(`.${j.colResizeHandle}`) || s.sortable && l && l(s.key);
73
+ "aria-sort": C,
74
+ tabIndex: _.sortable ? 0 : void 0,
75
+ onClick: (L) => {
76
+ d && L.target.closest(`.${F.colResizeHandle}`) || _.sortable && s && s(_.key);
77
77
  },
78
- onKeyDown: (S) => {
79
- (S.key === "Enter" || S.key === " ") && s.sortable && l && (S.preventDefault(), l(s.key));
78
+ onKeyDown: (L) => {
79
+ (L.key === "Enter" || L.key === " ") && _.sortable && s && (L.preventDefault(), s(_.key));
80
80
  },
81
81
  children: [
82
- s.headerContent != null ? s.headerContent : /* @__PURE__ */ c(Le, { children: [
83
- s.label,
84
- s.sortable && /* @__PURE__ */ e("span", { className: j.sortIndicator, "aria-hidden": "true", children: L ? u === "asc" ? "↑" : "↓" : "↕" })
82
+ _.headerContent != null ? _.headerContent : /* @__PURE__ */ m(Q, { children: [
83
+ _.label,
84
+ _.sortable && /* @__PURE__ */ e("span", { className: F.sortIndicator, "aria-hidden": "true", children: A ? c === "asc" ? "↑" : "↓" : "↕" })
85
85
  ] }),
86
- h && /* @__PURE__ */ e(
86
+ d && /* @__PURE__ */ e(
87
87
  "span",
88
88
  {
89
- className: j.colResizeHandle,
90
- "data-resize-col": s.key,
91
- onMouseDown: (S) => {
92
- S.preventDefault(), S.stopPropagation();
93
- const z = S.target.closest("th");
94
- b(s.key, z, S.clientX);
89
+ className: F.colResizeHandle,
90
+ "data-resize-col": _.key,
91
+ onMouseDown: (L) => {
92
+ L.preventDefault(), L.stopPropagation();
93
+ const R = L.target.closest("th");
94
+ k(_.key, R, L.clientX);
95
95
  }
96
96
  }
97
97
  )
98
98
  ]
99
99
  },
100
- s.key
100
+ _.key
101
101
  );
102
102
  }) }) }),
103
- /* @__PURE__ */ e("tbody", { children: a.map((s, N) => {
104
- const I = n(s, N), L = x?.(s, N), F = C?.(s) ?? {}, S = o?.(s, N) ?? null;
105
- return /* @__PURE__ */ c(p.Fragment, { children: [
103
+ /* @__PURE__ */ e("tbody", { children: n.map((_, N) => {
104
+ const I = t(_, N), A = v?.(_, N), C = w?.(_) ?? {}, L = o?.(_, N) ?? null;
105
+ return /* @__PURE__ */ m(g.Fragment, { children: [
106
106
  /* @__PURE__ */ e(
107
107
  "tr",
108
108
  {
109
- className: g(
110
- j.table__row,
111
- { [j["table__row--animated"]]: w },
112
- L
109
+ className: b(
110
+ F.table__row,
111
+ { [F["table__row--animated"]]: f },
112
+ A
113
113
  ),
114
- style: w ? { animationDelay: `${N * 20}ms` } : void 0,
115
- ...F,
116
- children: t.map((z) => {
117
- const Q = g({
118
- [j["col-hide-tablet"]]: z.hideTablet,
119
- [j["col-hide-mobile"]]: z.hideMobile
114
+ style: f ? { animationDelay: `${N * 20}ms` } : void 0,
115
+ ...C,
116
+ children: a.map((R) => {
117
+ const D = b({
118
+ [F["col-hide-tablet"]]: R.hideTablet,
119
+ [F["col-hide-mobile"]]: R.hideMobile
120
120
  });
121
- return /* @__PURE__ */ e("td", { className: Q || void 0, children: r(s, z, N) }, z.key);
121
+ return /* @__PURE__ */ e("td", { className: D || void 0, children: r(_, R, N) }, R.key);
122
122
  })
123
123
  }
124
124
  ),
125
- S
125
+ L
126
126
  ] }, I);
127
127
  }) })
128
128
  ] }) });
129
129
  }
130
- const we = p.forwardRef(Oe);
131
- we.displayName = "BaseTable";
132
- const qe = "_widgetCard_gx9fj_4", We = "_fadeIn_gx9fj_1", Ve = "_widgetCard__header_gx9fj_23", He = "_widgetCard__title_gx9fj_37", Ge = "_widgetCard__content_gx9fj_52", E = {
133
- widgetCard: qe,
134
- fadeIn: We,
135
- "widgetCard--half": "_widgetCard--half_gx9fj_18",
136
- widgetCard__header: Ve,
137
- "widgetCard--full": "_widgetCard--full_gx9fj_33",
138
- widgetCard__title: He,
139
- widgetCard__content: Ge,
140
- "widgetCard__content--scrollable": "_widgetCard__content--scrollable_gx9fj_56",
141
- "widgetCard__content--padded": "_widgetCard__content--padded_gx9fj_76"
142
- }, U = p.forwardRef(
130
+ const Fe = g.forwardRef(zt);
131
+ Fe.displayName = "BaseTable";
132
+ const qt = "_widgetCard_106xz_4", Wt = "_fadeIn_106xz_1", Vt = "_widgetCard__header_106xz_23", Gt = "_widgetCard__title_106xz_37", Ht = "_widgetCard__content_106xz_52", Y = {
133
+ widgetCard: qt,
134
+ fadeIn: Wt,
135
+ "widgetCard--half": "_widgetCard--half_106xz_18",
136
+ widgetCard__header: Vt,
137
+ "widgetCard--full": "_widgetCard--full_106xz_33",
138
+ widgetCard__title: Gt,
139
+ widgetCard__content: Ht,
140
+ "widgetCard__content--scrollable": "_widgetCard__content--scrollable_106xz_56",
141
+ "widgetCard__content--padded": "_widgetCard__content--padded_106xz_76"
142
+ }, fe = g.forwardRef(
143
143
  ({
144
- title: t,
145
- headerAction: a,
146
- variant: n = "half",
144
+ title: a,
145
+ headerAction: n,
146
+ variant: t = "half",
147
147
  scrollable: r = !1,
148
- padded: i = !1,
149
- as: u = "div",
150
- children: l,
151
- className: h,
152
- ..._
153
- }, m) => {
154
- const o = t != null || a != null;
155
- return /* @__PURE__ */ c(
156
- u,
148
+ padded: l = !1,
149
+ as: c = "div",
150
+ children: s,
151
+ className: d,
152
+ ...i
153
+ }, u) => {
154
+ const o = a != null || n != null;
155
+ return /* @__PURE__ */ m(
156
+ c,
157
157
  {
158
- ref: m,
159
- className: g(
160
- E.widgetCard,
161
- E[`widgetCard--${n}`],
162
- h
158
+ ref: u,
159
+ className: b(
160
+ Y.widgetCard,
161
+ Y[`widgetCard--${t}`],
162
+ d
163
163
  ),
164
- ..._,
164
+ ...i,
165
165
  children: [
166
- o && /* @__PURE__ */ c("header", { className: E.widgetCard__header, children: [
167
- t != null && /* @__PURE__ */ e("h2", { className: E.widgetCard__title, children: t }),
168
- a
166
+ o && /* @__PURE__ */ m("header", { className: Y.widgetCard__header, children: [
167
+ a != null && /* @__PURE__ */ e("h2", { className: Y.widgetCard__title, children: a }),
168
+ n
169
169
  ] }),
170
170
  /* @__PURE__ */ e(
171
171
  "div",
172
172
  {
173
- className: g(
174
- E.widgetCard__content,
175
- { [E["widgetCard__content--scrollable"]]: r },
176
- { [E["widgetCard__content--padded"]]: i }
173
+ className: b(
174
+ Y.widgetCard__content,
175
+ { [Y["widgetCard__content--scrollable"]]: r },
176
+ { [Y["widgetCard__content--padded"]]: l }
177
177
  ),
178
- children: l
178
+ children: s
179
179
  }
180
180
  )
181
181
  ]
@@ -183,153 +183,153 @@ const qe = "_widgetCard_gx9fj_4", We = "_fadeIn_gx9fj_1", Ve = "_widgetCard__hea
183
183
  );
184
184
  }
185
185
  );
186
- U.displayName = "WidgetCard";
187
- const Ke = "_dataCard_19cka_3", ue = {
188
- dataCard: Ke,
189
- "dataCard--clickable": "_dataCard--clickable_19cka_18"
190
- }, Ue = p.forwardRef(
191
- ({ onClick: t, className: a, children: n, ...r }, i) => {
192
- const u = t != null;
186
+ fe.displayName = "WidgetCard";
187
+ const Ut = "_dataCard_13ip1_3", Ve = {
188
+ dataCard: Ut,
189
+ "dataCard--clickable": "_dataCard--clickable_13ip1_18"
190
+ }, et = g.forwardRef(
191
+ ({ onClick: a, className: n, children: t, ...r }, l) => {
192
+ const c = a != null;
193
193
  return /* @__PURE__ */ e(
194
194
  "div",
195
195
  {
196
- ref: i,
197
- className: g(
198
- ue.dataCard,
199
- { [ue["dataCard--clickable"]]: u },
200
- a
196
+ ref: l,
197
+ className: b(
198
+ Ve.dataCard,
199
+ { [Ve["dataCard--clickable"]]: c },
200
+ n
201
201
  ),
202
- onClick: t,
203
- tabIndex: u ? 0 : void 0,
204
- role: u ? "button" : void 0,
205
- onKeyDown: u ? (l) => {
206
- (l.key === "Enter" || l.key === " ") && (l.preventDefault(), t?.(l));
202
+ onClick: a,
203
+ tabIndex: c ? 0 : void 0,
204
+ role: c ? "button" : void 0,
205
+ onKeyDown: c ? (s) => {
206
+ (s.key === "Enter" || s.key === " ") && (s.preventDefault(), a?.(s));
207
207
  } : void 0,
208
208
  ...r,
209
- children: n
209
+ children: t
210
210
  }
211
211
  );
212
212
  }
213
213
  );
214
- Ue.displayName = "DataCard";
215
- const Qe = "_baseList_47qml_3", me = {
216
- baseList: Qe,
217
- "baseList--scrollable": "_baseList--scrollable_47qml_8"
218
- }, ce = p.forwardRef(
219
- ({ scrollable: t = !1, className: a, children: n, ...r }, i) => /* @__PURE__ */ e(
214
+ et.displayName = "DataCard";
215
+ const Kt = "_baseList_1s0k1_3", Ge = {
216
+ baseList: Kt,
217
+ "baseList--scrollable": "_baseList--scrollable_1s0k1_8"
218
+ }, ge = g.forwardRef(
219
+ ({ scrollable: a = !1, className: n, children: t, ...r }, l) => /* @__PURE__ */ e(
220
220
  "div",
221
221
  {
222
- ref: i,
222
+ ref: l,
223
223
  role: "list",
224
- className: g(
225
- me.baseList,
226
- { [me["baseList--scrollable"]]: t },
227
- a
224
+ className: b(
225
+ Ge.baseList,
226
+ { [Ge["baseList--scrollable"]]: a },
227
+ n
228
228
  ),
229
229
  ...r,
230
- children: n
230
+ children: t
231
231
  }
232
232
  )
233
233
  );
234
- ce.displayName = "BaseList";
235
- const Je = "_listItem_1ssj2_3", Ze = "_listItem__leading_1ssj2_31", Xe = "_listItem__content_1ssj2_37", Ye = "_listItem__trailing_1ssj2_42", O = {
236
- listItem: Je,
237
- "listItem--clickable": "_listItem--clickable_1ssj2_21",
238
- listItem__leading: Ze,
239
- listItem__content: Xe,
240
- listItem__trailing: Ye
241
- }, Ne = p.forwardRef(
242
- ({ leading: t, trailing: a, onClick: n, as: r = "div", className: i, children: u, ...l }, h) => {
243
- const _ = n != null, m = (o) => {
244
- _ && (o.key === "Enter" || o.key === " ") && (o.preventDefault(), n?.());
234
+ ge.displayName = "BaseList";
235
+ const Qt = "_listItem_1x1io_3", Yt = "_listItem__leading_1x1io_31", Xt = "_listItem__content_1x1io_37", Jt = "_listItem__trailing_1x1io_42", se = {
236
+ listItem: Qt,
237
+ "listItem--clickable": "_listItem--clickable_1x1io_21",
238
+ listItem__leading: Yt,
239
+ listItem__content: Xt,
240
+ listItem__trailing: Jt
241
+ }, Be = g.forwardRef(
242
+ ({ leading: a, trailing: n, onClick: t, as: r = "div", className: l, children: c, ...s }, d) => {
243
+ const i = t != null, u = (o) => {
244
+ i && (o.key === "Enter" || o.key === " ") && (o.preventDefault(), t?.());
245
245
  };
246
- return /* @__PURE__ */ c(
246
+ return /* @__PURE__ */ m(
247
247
  r,
248
248
  {
249
- ref: h,
249
+ ref: d,
250
250
  role: "listitem",
251
251
  tabIndex: 0,
252
- className: g(
253
- O.listItem,
254
- { [O["listItem--clickable"]]: _ },
255
- i
252
+ className: b(
253
+ se.listItem,
254
+ { [se["listItem--clickable"]]: i },
255
+ l
256
256
  ),
257
- onClick: _ ? n : void 0,
258
- onKeyDown: m,
259
- ...l,
257
+ onClick: i ? t : void 0,
258
+ onKeyDown: u,
259
+ ...s,
260
260
  children: [
261
- t != null && /* @__PURE__ */ e("div", { className: O.listItem__leading, children: t }),
262
- /* @__PURE__ */ e("div", { className: O.listItem__content, children: u }),
263
- a != null && /* @__PURE__ */ e("div", { className: O.listItem__trailing, children: a })
261
+ a != null && /* @__PURE__ */ e("div", { className: se.listItem__leading, children: a }),
262
+ /* @__PURE__ */ e("div", { className: se.listItem__content, children: c }),
263
+ n != null && /* @__PURE__ */ e("div", { className: se.listItem__trailing, children: n })
264
264
  ]
265
265
  }
266
266
  );
267
267
  }
268
268
  );
269
- Ne.displayName = "ListItem";
270
- const he = {
269
+ Be.displayName = "ListItem";
270
+ const He = {
271
271
  "status-badge": "_status-badge_c7rzu_3",
272
272
  "status-badge--neu": "_status-badge--neu_c7rzu_26",
273
273
  "status-badge--offen": "_status-badge--offen_c7rzu_31",
274
274
  "status-badge--in-prufung": "_status-badge--in-prufung_c7rzu_36",
275
275
  "status-badge--validierung": "_status-badge--validierung_c7rzu_41",
276
276
  "status-badge--abgeschlossen": "_status-badge--abgeschlossen_c7rzu_46"
277
- }, et = {
277
+ }, Zt = {
278
278
  neu: "Neu",
279
279
  offen: "Offen",
280
280
  "in-prufung": "In Prüfung",
281
281
  validierung: "Validierung",
282
282
  abgeschlossen: "Abgeschlossen"
283
- }, ke = p.forwardRef(
284
- ({ status: t, color: a, backgroundColor: n, className: r, style: i, ...u }, l) => {
285
- const h = {
286
- ...i,
287
- "--custom-color": a,
288
- "--custom-bg": n
283
+ }, tt = g.forwardRef(
284
+ ({ status: a, color: n, backgroundColor: t, className: r, style: l, ...c }, s) => {
285
+ const d = {
286
+ ...l,
287
+ "--custom-color": n,
288
+ "--custom-bg": t
289
289
  };
290
290
  return /* @__PURE__ */ e(
291
291
  "span",
292
292
  {
293
- ref: l,
294
- className: g(he["status-badge"], he[`status-badge--${t}`], r),
295
- style: h,
296
- ...u,
297
- children: et[t]
293
+ ref: s,
294
+ className: b(He["status-badge"], He[`status-badge--${a}`], r),
295
+ style: d,
296
+ ...c,
297
+ children: Zt[a]
298
298
  }
299
299
  );
300
300
  }
301
301
  );
302
- ke.displayName = "StatusBadge";
303
- const X = {
302
+ tt.displayName = "StatusBadge";
303
+ const ye = {
304
304
  "favorite-btn": "_favorite-btn_1fvb2_3",
305
305
  "favorite-btn--active": "_favorite-btn--active_1fvb2_23",
306
306
  "favorite-btn--md": "_favorite-btn--md_1fvb2_28",
307
307
  "favorite-btn--sm": "_favorite-btn--sm_1fvb2_39"
308
- }, ye = p.forwardRef(
309
- ({ pressed: t, projectName: a, onToggle: n, size: r = "md", color: i, activeColor: u, className: l, style: h, onClick: _, ...m }, o) => {
310
- const w = {
311
- ...h,
312
- "--custom-color": i,
313
- "--custom-active-color": u
314
- }, x = t ? `Von Favoriten entfernen: ${a}` : `Zu Favoriten hinzufügen: ${a}`;
308
+ }, de = g.forwardRef(
309
+ ({ pressed: a, projectName: n, onToggle: t, size: r = "md", color: l, activeColor: c, className: s, style: d, onClick: i, ...u }, o) => {
310
+ const f = {
311
+ ...d,
312
+ "--custom-color": l,
313
+ "--custom-active-color": c
314
+ }, v = a ? `Von Favoriten entfernen: ${n}` : `Zu Favoriten hinzufügen: ${n}`;
315
315
  return /* @__PURE__ */ e(
316
316
  "button",
317
317
  {
318
318
  ref: o,
319
319
  type: "button",
320
- className: g(
321
- X["favorite-btn"],
322
- X[`favorite-btn--${r}`],
323
- { [X["favorite-btn--active"]]: t },
324
- l
320
+ className: b(
321
+ ye["favorite-btn"],
322
+ ye[`favorite-btn--${r}`],
323
+ { [ye["favorite-btn--active"]]: a },
324
+ s
325
325
  ),
326
- style: w,
327
- "aria-pressed": t,
328
- "aria-label": x,
329
- onClick: (C) => {
330
- n?.(!t), _?.(C);
326
+ style: f,
327
+ "aria-pressed": a,
328
+ "aria-label": v,
329
+ onClick: (w) => {
330
+ t?.(!a), i?.(w);
331
331
  },
332
- ...m,
332
+ ...u,
333
333
  children: /* @__PURE__ */ e(
334
334
  "svg",
335
335
  {
@@ -346,59 +346,59 @@ const X = {
346
346
  );
347
347
  }
348
348
  );
349
- ye.displayName = "FavoriteButton";
350
- const B = {
351
- "status-legend__item": "_status-legend__item_1xv4z_3",
352
- "status-legend__item--active": "_status-legend__item--active_1xv4z_22",
353
- "status-legend__label-wrap": "_status-legend__label-wrap_1xv4z_27",
354
- "status-legend__color": "_status-legend__color_1xv4z_33",
355
- "status-legend__label": "_status-legend__label_1xv4z_27",
356
- "status-legend__count": "_status-legend__count_1xv4z_47",
357
- "color-neu": "_color-neu_1xv4z_57",
358
- "color-offen": "_color-offen_1xv4z_61",
359
- "color-in-prufung": "_color-in-prufung_1xv4z_65",
360
- "color-validierung": "_color-validierung_1xv4z_69",
361
- "color-abgeschlossen": "_color-abgeschlossen_1xv4z_73",
362
- "color-alle": "_color-alle_1xv4z_77"
363
- }, Ce = p.forwardRef(
364
- ({ status: t, label: a, count: n, active: r = !1, color: i, className: u, style: l, ...h }, _) => {
365
- const m = {
366
- ...l,
367
- "--custom-color": i
349
+ de.displayName = "FavoriteButton";
350
+ const X = {
351
+ "status-legend__item": "_status-legend__item_c03nc_3",
352
+ "status-legend__item--active": "_status-legend__item--active_c03nc_22",
353
+ "status-legend__label-wrap": "_status-legend__label-wrap_c03nc_27",
354
+ "status-legend__color": "_status-legend__color_c03nc_33",
355
+ "status-legend__label": "_status-legend__label_c03nc_27",
356
+ "status-legend__count": "_status-legend__count_c03nc_47",
357
+ "color-neu": "_color-neu_c03nc_57",
358
+ "color-offen": "_color-offen_c03nc_61",
359
+ "color-in-prufung": "_color-in-prufung_c03nc_65",
360
+ "color-validierung": "_color-validierung_c03nc_69",
361
+ "color-abgeschlossen": "_color-abgeschlossen_c03nc_73",
362
+ "color-alle": "_color-alle_c03nc_77"
363
+ }, at = g.forwardRef(
364
+ ({ status: a, label: n, count: t, active: r = !1, color: l, className: c, style: s, ...d }, i) => {
365
+ const u = {
366
+ ...s,
367
+ "--custom-color": l
368
368
  };
369
- return /* @__PURE__ */ c(
369
+ return /* @__PURE__ */ m(
370
370
  "button",
371
371
  {
372
- ref: _,
372
+ ref: i,
373
373
  type: "button",
374
374
  role: "option",
375
375
  "aria-selected": r,
376
- className: g(
377
- B["status-legend__item"],
378
- { [B["status-legend__item--active"]]: r },
379
- u
376
+ className: b(
377
+ X["status-legend__item"],
378
+ { [X["status-legend__item--active"]]: r },
379
+ c
380
380
  ),
381
- style: m,
382
- ...h,
381
+ style: u,
382
+ ...d,
383
383
  children: [
384
- /* @__PURE__ */ c("div", { className: B["status-legend__label-wrap"], children: [
384
+ /* @__PURE__ */ m("div", { className: X["status-legend__label-wrap"], children: [
385
385
  /* @__PURE__ */ e(
386
386
  "span",
387
387
  {
388
- className: g(B["status-legend__color"], B[`color-${t}`]),
388
+ className: b(X["status-legend__color"], X[`color-${a}`]),
389
389
  "aria-hidden": "true"
390
390
  }
391
391
  ),
392
- /* @__PURE__ */ e("span", { className: B["status-legend__label"], children: a })
392
+ /* @__PURE__ */ e("span", { className: X["status-legend__label"], children: n })
393
393
  ] }),
394
- /* @__PURE__ */ e("span", { className: B["status-legend__count"], children: n })
394
+ /* @__PURE__ */ e("span", { className: X["status-legend__count"], children: t })
395
395
  ]
396
396
  }
397
397
  );
398
398
  }
399
399
  );
400
- Ce.displayName = "StatusLegendItem";
401
- const T = {
400
+ at.displayName = "StatusLegendItem";
401
+ const V = {
402
402
  "status-overview__chart-container": "_status-overview__chart-container_6nwc9_3",
403
403
  "status-chart-svg": "_status-chart-svg_6nwc9_13",
404
404
  "status-chart__segment": "_status-chart__segment_6nwc9_23",
@@ -407,330 +407,330 @@ const T = {
407
407
  "status-chart__hole": "_status-chart__hole_6nwc9_40",
408
408
  "status-chart__total-value": "_status-chart__total-value_6nwc9_55",
409
409
  "status-chart__total-label": "_status-chart__total-label_6nwc9_63"
410
- }, xe = p.forwardRef(
411
- ({ data: t, totalLabel: a = "Gesamt", onSegmentClick: n, className: r, ...i }, u) => {
412
- const [l, h] = A(null), _ = t.reduce((k, v) => k + v.value, 0), m = 240, o = m / 2, w = 100, x = 40, C = w - x / 2, f = C * 2 * Math.PI;
413
- return /* @__PURE__ */ c(
410
+ }, nt = g.forwardRef(
411
+ ({ data: a, totalLabel: n = "Gesamt", onSegmentClick: t, className: r, ...l }, c) => {
412
+ const [s, d] = E(null), i = a.reduce((y, h) => y + h.value, 0), u = 240, o = u / 2, f = 100, v = 40, w = f - v / 2, p = w * 2 * Math.PI;
413
+ return /* @__PURE__ */ m(
414
414
  "div",
415
415
  {
416
- ref: u,
417
- className: g(T["status-overview__chart-container"], r),
418
- ...i,
416
+ ref: c,
417
+ className: b(V["status-overview__chart-container"], r),
418
+ ...l,
419
419
  children: [
420
420
  /* @__PURE__ */ e(
421
421
  "svg",
422
422
  {
423
- viewBox: `0 0 ${m} ${m}`,
424
- className: T["status-chart-svg"],
423
+ viewBox: `0 0 ${u} ${u}`,
424
+ className: V["status-chart-svg"],
425
425
  role: "img",
426
426
  "aria-label": "Kreisdiagramm der Projektstatus-Verteilung",
427
427
  overflow: "visible",
428
- children: _ === 0 ? /* @__PURE__ */ e(
428
+ children: i === 0 ? /* @__PURE__ */ e(
429
429
  "circle",
430
430
  {
431
431
  cx: o,
432
432
  cy: o,
433
- r: C,
433
+ r: w,
434
434
  fill: "none",
435
435
  stroke: "hsl(var(--border))",
436
- strokeWidth: x
436
+ strokeWidth: v
437
437
  }
438
438
  ) : (() => {
439
- let k = 0;
440
- return t.map((v) => {
441
- if (v.value === 0) return null;
442
- const y = v.value / _ * 100, b = y / 100 * f, s = k / 100 * f;
443
- return k += y, /* @__PURE__ */ e(
439
+ let y = 0;
440
+ return a.map((h) => {
441
+ if (h.value === 0) return null;
442
+ const x = h.value / i * 100, k = x / 100 * p, _ = y / 100 * p;
443
+ return y += x, /* @__PURE__ */ e(
444
444
  "circle",
445
445
  {
446
446
  cx: o,
447
447
  cy: o,
448
- r: C,
448
+ r: w,
449
449
  fill: "none",
450
- stroke: v.color,
451
- strokeWidth: x,
452
- strokeDasharray: `${b} ${f}`,
453
- strokeDashoffset: -s,
450
+ stroke: h.color,
451
+ strokeWidth: v,
452
+ strokeDasharray: `${k} ${p}`,
453
+ strokeDashoffset: -_,
454
454
  transform: `rotate(-90 ${o} ${o})`,
455
- className: g(T["status-chart__segment"], {
456
- [T["status-chart__segment--hovered"]]: l === v.status,
457
- [T["status-chart__segment--dimmed"]]: l && l !== v.status
455
+ className: b(V["status-chart__segment"], {
456
+ [V["status-chart__segment--hovered"]]: s === h.status,
457
+ [V["status-chart__segment--dimmed"]]: s && s !== h.status
458
458
  }),
459
- onClick: () => n?.(v.status),
460
- onMouseEnter: () => h(v.status),
461
- onMouseLeave: () => h(null),
462
- style: { cursor: n ? "pointer" : "default" },
463
- children: /* @__PURE__ */ e("title", { children: `${v.label}: ${v.value}` })
459
+ onClick: () => t?.(h.status),
460
+ onMouseEnter: () => d(h.status),
461
+ onMouseLeave: () => d(null),
462
+ style: { cursor: t ? "pointer" : "default" },
463
+ children: /* @__PURE__ */ e("title", { children: `${h.label}: ${h.value}` })
464
464
  },
465
- v.status
465
+ h.status
466
466
  );
467
467
  });
468
468
  })()
469
469
  }
470
470
  ),
471
- /* @__PURE__ */ c("div", { className: T["status-chart__hole"], children: [
472
- /* @__PURE__ */ e("span", { className: T["status-chart__total-value"], children: _ }),
473
- /* @__PURE__ */ e("span", { className: T["status-chart__total-label"], children: a })
471
+ /* @__PURE__ */ m("div", { className: V["status-chart__hole"], children: [
472
+ /* @__PURE__ */ e("span", { className: V["status-chart__total-value"], children: i }),
473
+ /* @__PURE__ */ e("span", { className: V["status-chart__total-label"], children: n })
474
474
  ] })
475
475
  ]
476
476
  }
477
477
  );
478
478
  }
479
479
  );
480
- xe.displayName = "StatusChart";
481
- function ve(t) {
482
- const a = new Date(t);
483
- if (isNaN(a.getTime())) return "Ungültiges Datum";
484
- const r = (/* @__PURE__ */ new Date()).getTime() - a.getTime(), i = Math.floor(r / (1e3 * 60 * 60 * 24));
485
- if (i === 0) return "Heute";
486
- if (i === 1) return "Gestern";
487
- if (i < 7) return `vor ${i} Tagen`;
488
- const u = Math.floor(i / 7);
489
- if (u < 4)
490
- return u === 1 ? "vor einer Woche" : `vor ${u} Wochen`;
491
- const l = Math.floor(i / 30);
492
- if (l < 12)
493
- return l === 1 ? "vor einem Monat" : `vor ${l} Monaten`;
494
- const h = Math.floor(i / 365);
495
- return h === 1 ? "vor einem Jahr" : `vor ${h} Jahren`;
480
+ nt.displayName = "StatusChart";
481
+ function Ue(a) {
482
+ const n = new Date(a);
483
+ if (isNaN(n.getTime())) return "Ungültiges Datum";
484
+ const r = (/* @__PURE__ */ new Date()).getTime() - n.getTime(), l = Math.floor(r / (1e3 * 60 * 60 * 24));
485
+ if (l === 0) return "Heute";
486
+ if (l === 1) return "Gestern";
487
+ if (l < 7) return `vor ${l} Tagen`;
488
+ const c = Math.floor(l / 7);
489
+ if (c < 4)
490
+ return c === 1 ? "vor einer Woche" : `vor ${c} Wochen`;
491
+ const s = Math.floor(l / 30);
492
+ if (s < 12)
493
+ return s === 1 ? "vor einem Monat" : `vor ${s} Monaten`;
494
+ const d = Math.floor(l / 365);
495
+ return d === 1 ? "vor einem Jahr" : `vor ${d} Jahren`;
496
496
  }
497
- const tt = "_nameCell_1n6hv_4", at = "_favorite_1n6hv_10", st = "_nameWrapper_1n6hv_14", lt = "_name_1n6hv_4", nt = "_secondary_1n6hv_31", it = "_client_1n6hv_41", rt = "_dateMain_1n6hv_51", D = {
498
- nameCell: tt,
499
- favorite: at,
500
- nameWrapper: st,
501
- name: lt,
502
- secondary: nt,
503
- client: it,
504
- dateMain: rt
505
- }, ot = [
497
+ const ea = "_nameCell_1n6hv_4", ta = "_favorite_1n6hv_10", aa = "_nameWrapper_1n6hv_14", na = "_name_1n6hv_4", ra = "_secondary_1n6hv_31", sa = "_client_1n6hv_41", la = "_dateMain_1n6hv_51", G = {
498
+ nameCell: ea,
499
+ favorite: ta,
500
+ nameWrapper: aa,
501
+ name: na,
502
+ secondary: ra,
503
+ client: sa,
504
+ dateMain: la
505
+ }, ia = [
506
506
  { key: "name", label: "Projekt / Applikation" },
507
507
  { key: "client", label: "Kunde", width: "20%" },
508
508
  { key: "status", label: "Status", width: 150 },
509
509
  { key: "activity", label: "Aktivität", width: 160 }
510
- ], Ie = p.forwardRef(
511
- ({ rows: t, onToggleFavorite: a, className: n, ...r }, i) => /* @__PURE__ */ e(
512
- we,
510
+ ], rt = g.forwardRef(
511
+ ({ rows: a, onToggleFavorite: n, className: t, ...r }, l) => /* @__PURE__ */ e(
512
+ Fe,
513
513
  {
514
- ref: i,
515
- columns: ot,
516
- rows: t,
517
- rowKey: (l) => l.id,
518
- renderCell: (l, h) => {
519
- switch (h.key) {
514
+ ref: l,
515
+ columns: ia,
516
+ rows: a,
517
+ rowKey: (s) => s.id,
518
+ renderCell: (s, d) => {
519
+ switch (d.key) {
520
520
  case "name":
521
- return /* @__PURE__ */ c("div", { className: D.nameCell, children: [
521
+ return /* @__PURE__ */ m("div", { className: G.nameCell, children: [
522
522
  /* @__PURE__ */ e(
523
- ye,
523
+ de,
524
524
  {
525
- pressed: l.favorite,
526
- projectName: l.name,
525
+ pressed: s.favorite,
526
+ projectName: s.name,
527
527
  size: "sm",
528
- onToggle: (_) => a?.(l.id, _),
529
- className: D.favorite
528
+ onToggle: (i) => n?.(s.id, i),
529
+ className: G.favorite
530
530
  }
531
531
  ),
532
- /* @__PURE__ */ c("div", { className: D.nameWrapper, title: `${l.name}
533
- ${l.app}`, children: [
534
- /* @__PURE__ */ e("div", { className: D.name, children: l.name }),
535
- /* @__PURE__ */ e("div", { className: D.secondary, children: l.app })
532
+ /* @__PURE__ */ m("div", { className: G.nameWrapper, title: `${s.name}
533
+ ${s.app}`, children: [
534
+ /* @__PURE__ */ e("div", { className: G.name, children: s.name }),
535
+ /* @__PURE__ */ e("div", { className: G.secondary, children: s.app })
536
536
  ] })
537
537
  ] });
538
538
  case "client":
539
- return /* @__PURE__ */ e("span", { className: D.client, title: l.client, children: l.client });
539
+ return /* @__PURE__ */ e("span", { className: G.client, title: s.client, children: s.client });
540
540
  case "status":
541
- return /* @__PURE__ */ e(ke, { status: l.status });
541
+ return /* @__PURE__ */ e(tt, { status: s.status });
542
542
  case "activity":
543
- return /* @__PURE__ */ c("div", { title: `Geändert: ${ve(l.updatedAt)}
544
- Erstellt: ${l.createdAt}`, children: [
545
- /* @__PURE__ */ e("div", { className: D.dateMain, children: ve(l.updatedAt) }),
546
- /* @__PURE__ */ c("div", { className: D.secondary, children: [
543
+ return /* @__PURE__ */ m("div", { title: `Geändert: ${Ue(s.updatedAt)}
544
+ Erstellt: ${s.createdAt}`, children: [
545
+ /* @__PURE__ */ e("div", { className: G.dateMain, children: Ue(s.updatedAt) }),
546
+ /* @__PURE__ */ m("div", { className: G.secondary, children: [
547
547
  "Erstellt: ",
548
- l.createdAt
548
+ s.createdAt
549
549
  ] })
550
550
  ] });
551
551
  default:
552
552
  return null;
553
553
  }
554
554
  },
555
- rowDataAttributes: (l) => ({ "data-status": l.status }),
556
- className: n,
555
+ rowDataAttributes: (s) => ({ "data-status": s.status }),
556
+ className: t,
557
557
  ...r
558
558
  }
559
559
  )
560
560
  );
561
- Ie.displayName = "ProjectTable";
562
- const ct = "_avatar_17ic7_3", ne = {
563
- avatar: ct,
564
- "avatar-group": "_avatar-group_17ic7_18",
565
- "group-member": "_group-member_17ic7_23"
566
- }, V = p.forwardRef(
567
- ({ initials: t, name: a, className: n, ...r }, i) => /* @__PURE__ */ e(
561
+ rt.displayName = "ProjectTable";
562
+ const oa = "_avatar_1elxr_3", De = {
563
+ avatar: oa,
564
+ "avatar-group": "_avatar-group_1elxr_18",
565
+ "group-member": "_group-member_1elxr_23"
566
+ }, ce = g.forwardRef(
567
+ ({ initials: a, name: n, className: t, ...r }, l) => /* @__PURE__ */ e(
568
568
  "div",
569
569
  {
570
- ref: i,
571
- className: g(ne.avatar, n),
572
- title: a,
573
- "aria-label": a,
570
+ ref: l,
571
+ className: b(De.avatar, t),
572
+ title: n,
573
+ "aria-label": n,
574
574
  ...r,
575
- children: t
575
+ children: a
576
576
  }
577
577
  )
578
578
  );
579
- V.displayName = "Avatar";
580
- const de = p.forwardRef(
581
- ({ children: t, className: a, ...n }, r) => /* @__PURE__ */ e(
579
+ ce.displayName = "Avatar";
580
+ const Te = g.forwardRef(
581
+ ({ children: a, className: n, ...t }, r) => /* @__PURE__ */ e(
582
582
  "div",
583
583
  {
584
584
  ref: r,
585
- className: g(ne["avatar-group"], a),
586
- ...n,
587
- children: p.Children.map(t, (i) => p.isValidElement(i) ? p.cloneElement(i, {
588
- className: g(i.props.className, ne["group-member"])
589
- }) : i)
585
+ className: b(De["avatar-group"], n),
586
+ ...t,
587
+ children: g.Children.map(a, (l) => g.isValidElement(l) ? g.cloneElement(l, {
588
+ className: b(l.props.className, De["group-member"])
589
+ }) : l)
590
590
  }
591
591
  )
592
592
  );
593
- de.displayName = "AvatarGroup";
594
- const dt = "_btn_7bh63_3", Y = {
595
- btn: dt,
596
- "btn--primary": "_btn--primary_7bh63_27",
597
- "btn--outline": "_btn--outline_7bh63_39",
598
- "btn--ghost": "_btn--ghost_7bh63_52",
599
- "btn--sm": "_btn--sm_7bh63_63"
600
- }, R = p.forwardRef(
601
- ({ variant: t, size: a = "md", className: n, children: r, ...i }, u) => /* @__PURE__ */ e(
593
+ Te.displayName = "AvatarGroup";
594
+ const ca = "_btn_1icnw_3", we = {
595
+ btn: ca,
596
+ "btn--primary": "_btn--primary_1icnw_27",
597
+ "btn--outline": "_btn--outline_1icnw_39",
598
+ "btn--ghost": "_btn--ghost_1icnw_52",
599
+ "btn--sm": "_btn--sm_1icnw_63"
600
+ }, W = g.forwardRef(
601
+ ({ variant: a, size: n = "md", className: t, children: r, ...l }, c) => /* @__PURE__ */ e(
602
602
  "button",
603
603
  {
604
- ref: u,
605
- className: g(
606
- Y.btn,
604
+ ref: c,
605
+ className: b(
606
+ we.btn,
607
607
  {
608
- [Y[`btn--${t}`]]: t,
609
- [Y[`btn--${a}`]]: a && a !== "md"
608
+ [we[`btn--${a}`]]: a,
609
+ [we[`btn--${n}`]]: n && n !== "md"
610
610
  },
611
- n
611
+ t
612
612
  ),
613
- ...i,
613
+ ...l,
614
614
  children: r
615
615
  }
616
616
  )
617
617
  );
618
- R.displayName = "Button";
619
- const _t = "_badge_1e35x_3", ee = {
620
- badge: _t,
621
- "badge--high": "_badge--high_1e35x_12",
622
- "badge--medium": "_badge--medium_1e35x_18",
623
- "badge--low": "_badge--low_1e35x_24",
624
- "badge--size-small": "_badge--size-small_1e35x_30",
625
- "badge--size-large": "_badge--size-large_1e35x_37"
626
- }, ut = {
618
+ W.displayName = "Button";
619
+ const da = "_badge_aax9r_3", ke = {
620
+ badge: da,
621
+ "badge--high": "_badge--high_aax9r_12",
622
+ "badge--medium": "_badge--medium_aax9r_18",
623
+ "badge--low": "_badge--low_aax9r_24",
624
+ "badge--size-small": "_badge--size-small_aax9r_30",
625
+ "badge--size-large": "_badge--size-large_aax9r_37"
626
+ }, _a = {
627
627
  high: "!!",
628
628
  medium: "!",
629
629
  low: "-"
630
- }, mt = {
630
+ }, ua = {
631
631
  high: "Hohe Priorität",
632
632
  medium: "Mittlere Priorität",
633
633
  low: "Niedrige Priorität"
634
- }, _e = p.forwardRef(
635
- ({ level: t, size: a = "small", className: n, "aria-label": r, ...i }, u) => {
636
- const l = mt[t];
634
+ }, Pe = g.forwardRef(
635
+ ({ level: a, size: n = "small", className: t, "aria-label": r, ...l }, c) => {
636
+ const s = ua[a];
637
637
  return /* @__PURE__ */ e(
638
638
  "span",
639
639
  {
640
- ref: u,
641
- className: g(
642
- ee.badge,
643
- ee[`badge--${t}`],
644
- ee[`badge--size-${a}`],
645
- n
640
+ ref: c,
641
+ className: b(
642
+ ke.badge,
643
+ ke[`badge--${a}`],
644
+ ke[`badge--size-${n}`],
645
+ t
646
646
  ),
647
- "aria-label": r || l,
648
- ...i,
649
- children: ut[t]
647
+ "aria-label": r || s,
648
+ ...l,
649
+ children: _a[a]
650
650
  }
651
651
  );
652
652
  }
653
653
  );
654
- _e.displayName = "PriorityBadge";
655
- const ht = "_badge_1j9lv_3", vt = {
656
- badge: ht
657
- }, ie = p.forwardRef(
658
- ({ className: t, children: a, ...n }, r) => /* @__PURE__ */ e(
654
+ Pe.displayName = "PriorityBadge";
655
+ const ha = "_badge_1j9lv_3", ma = {
656
+ badge: ha
657
+ }, Ie = g.forwardRef(
658
+ ({ className: a, children: n, ...t }, r) => /* @__PURE__ */ e(
659
659
  "span",
660
660
  {
661
661
  ref: r,
662
- className: g(vt.badge, t),
663
- ...n,
664
- children: a
662
+ className: b(ma.badge, a),
663
+ ...t,
664
+ children: n
665
665
  }
666
666
  )
667
667
  );
668
- ie.displayName = "Badge";
669
- const gt = "_icon_15zae_56", P = {
670
- "status-dropdown": "_status-dropdown_15zae_3",
671
- "status-trigger": "_status-trigger_15zae_9",
672
- "status-menu": "_status-menu_15zae_14",
673
- "is-open": "_is-open_15zae_31",
674
- "status-menu-item": "_status-menu-item_15zae_35",
675
- "is-active": "_is-active_15zae_52",
676
- icon: gt,
677
- "icon-sm": "_icon-sm_15zae_65"
678
- }, Se = p.forwardRef(
679
- ({ value: t, onChange: a, options: n, className: r, "aria-label": i, ...u }, l) => {
680
- const [h, _] = A(!1), m = Re(null), o = (f) => {
681
- typeof l == "function" ? l(f) : l && (l.current = f), m.current = f;
682
- }, w = n.find((f) => f.value === t) || n[0];
683
- le(() => {
684
- const f = (k) => {
685
- m.current && !m.current.contains(k.target) && _(!1);
668
+ Ie.displayName = "Badge";
669
+ const pa = "_icon_6t2ce_56", H = {
670
+ "status-dropdown": "_status-dropdown_6t2ce_3",
671
+ "status-trigger": "_status-trigger_6t2ce_9",
672
+ "status-menu": "_status-menu_6t2ce_14",
673
+ "is-open": "_is-open_6t2ce_31",
674
+ "status-menu-item": "_status-menu-item_6t2ce_35",
675
+ "is-active": "_is-active_6t2ce_52",
676
+ icon: pa,
677
+ "icon-sm": "_icon-sm_6t2ce_65"
678
+ }, st = g.forwardRef(
679
+ ({ value: a, onChange: n, options: t, className: r, "aria-label": l, ...c }, s) => {
680
+ const [d, i] = E(!1), u = Je(null), o = (p) => {
681
+ typeof s == "function" ? s(p) : s && (s.current = p), u.current = p;
682
+ }, f = t.find((p) => p.value === a) || t[0];
683
+ je(() => {
684
+ const p = (y) => {
685
+ u.current && !u.current.contains(y.target) && i(!1);
686
686
  };
687
- return document.addEventListener("mousedown", f), () => document.removeEventListener("mousedown", f);
687
+ return document.addEventListener("mousedown", p), () => document.removeEventListener("mousedown", p);
688
688
  }, []);
689
- const x = (f) => {
690
- f.stopPropagation(), _(!h);
691
- }, C = (f, k) => {
692
- f.stopPropagation(), a && a(k.value), _(!1);
689
+ const v = (p) => {
690
+ p.stopPropagation(), i(!d);
691
+ }, w = (p, y) => {
692
+ p.stopPropagation(), n && n(y.value), i(!1);
693
693
  };
694
- return /* @__PURE__ */ c(
694
+ return /* @__PURE__ */ m(
695
695
  "div",
696
696
  {
697
697
  ref: o,
698
- className: g(P["status-dropdown"], r),
699
- ...u,
698
+ className: b(H["status-dropdown"], r),
699
+ ...c,
700
700
  children: [
701
- /* @__PURE__ */ c(
702
- R,
701
+ /* @__PURE__ */ m(
702
+ W,
703
703
  {
704
704
  variant: "outline",
705
705
  size: "sm",
706
- className: P["status-trigger"],
707
- onClick: x,
706
+ className: H["status-trigger"],
707
+ onClick: v,
708
708
  "aria-haspopup": "listbox",
709
- "aria-expanded": h,
710
- "aria-label": i,
709
+ "aria-expanded": d,
710
+ "aria-label": l,
711
711
  children: [
712
- w?.label,
713
- /* @__PURE__ */ e("svg", { className: g(P.icon, P["icon-sm"]), viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: /* @__PURE__ */ e("path", { d: "m6 9 6 6 6-6" }) })
712
+ f?.label,
713
+ /* @__PURE__ */ e("svg", { className: b(H.icon, H["icon-sm"]), viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: /* @__PURE__ */ e("path", { d: "m6 9 6 6 6-6" }) })
714
714
  ]
715
715
  }
716
716
  ),
717
717
  /* @__PURE__ */ e(
718
718
  "div",
719
719
  {
720
- className: g(P["status-menu"], { [P["is-open"]]: h }),
720
+ className: b(H["status-menu"], { [H["is-open"]]: d }),
721
721
  role: "listbox",
722
- children: n.map((f) => /* @__PURE__ */ e(
722
+ children: t.map((p) => /* @__PURE__ */ e(
723
723
  "button",
724
724
  {
725
- className: g(P["status-menu-item"], {
726
- [P["is-active"]]: f.value === w?.value
725
+ className: b(H["status-menu-item"], {
726
+ [H["is-active"]]: p.value === f?.value
727
727
  }),
728
728
  role: "option",
729
- "aria-selected": f.value === w?.value,
730
- onClick: (k) => C(k, f),
731
- children: f.label
729
+ "aria-selected": p.value === f?.value,
730
+ onClick: (y) => w(y, p),
731
+ children: p.label
732
732
  },
733
- f.value
733
+ p.value
734
734
  ))
735
735
  }
736
736
  )
@@ -739,70 +739,70 @@ const gt = "_icon_15zae_56", P = {
739
739
  );
740
740
  }
741
741
  );
742
- Se.displayName = "StatusDropdown";
743
- const bt = "_checklist_1iobh_3", ft = "_checkItem_1iobh_7", pt = "_formControl_1iobh_39", q = {
744
- checklist: bt,
745
- checkItem: ft,
746
- "is-done": "_is-done_1iobh_26",
747
- "checklist--readonly": "_checklist--readonly_1iobh_31",
748
- formControl: pt
749
- }, re = p.forwardRef(
750
- ({ items: t, onChange: a, editable: n = !1, className: r, ...i }, u) => {
751
- const l = (_, m) => {
752
- a && a(t.map((o) => o.id === _ ? { ...o, checked: m } : o));
753
- }, h = (_, m) => {
754
- a && a(t.map((o) => o.id === _ ? { ...o, text: m } : o));
742
+ st.displayName = "StatusDropdown";
743
+ const fa = "_checklist_19mhr_3", ba = "_checkItem_19mhr_7", ga = "_formControl_19mhr_39", le = {
744
+ checklist: fa,
745
+ checkItem: ba,
746
+ "is-done": "_is-done_19mhr_26",
747
+ "checklist--readonly": "_checklist--readonly_19mhr_31",
748
+ formControl: ga
749
+ }, Le = g.forwardRef(
750
+ ({ items: a, onChange: n, editable: t = !1, className: r, ...l }, c) => {
751
+ const s = (i, u) => {
752
+ n && n(a.map((o) => o.id === i ? { ...o, checked: u } : o));
753
+ }, d = (i, u) => {
754
+ n && n(a.map((o) => o.id === i ? { ...o, text: u } : o));
755
755
  };
756
756
  return /* @__PURE__ */ e(
757
- ce,
757
+ ge,
758
758
  {
759
- ref: u,
760
- className: g(q.checklist, { [q["checklist--readonly"]]: !n }, r),
761
- ...i,
762
- children: t.map((_) => /* @__PURE__ */ c("div", { role: "listitem", className: g(q.checkItem, { [q["is-done"]]: _.checked }), children: [
759
+ ref: c,
760
+ className: b(le.checklist, { [le["checklist--readonly"]]: !t }, r),
761
+ ...l,
762
+ children: a.map((i) => /* @__PURE__ */ m("div", { role: "listitem", className: b(le.checkItem, { [le["is-done"]]: i.checked }), children: [
763
763
  /* @__PURE__ */ e(
764
764
  "input",
765
765
  {
766
766
  type: "checkbox",
767
- id: _.id,
768
- checked: _.checked,
769
- onChange: (m) => l(_.id, m.target.checked)
767
+ id: i.id,
768
+ checked: i.checked,
769
+ onChange: (u) => s(i.id, u.target.checked)
770
770
  }
771
771
  ),
772
- n ? /* @__PURE__ */ e(
772
+ t ? /* @__PURE__ */ e(
773
773
  "input",
774
774
  {
775
775
  type: "text",
776
- className: q.formControl,
777
- value: _.text,
778
- onChange: (m) => h(_.id, m.target.value),
776
+ className: le.formControl,
777
+ value: i.text,
778
+ onChange: (u) => d(i.id, u.target.value),
779
779
  placeholder: "Was ist zu tun?",
780
780
  "aria-label": "Aufgabenbeschreibung bearbeiten"
781
781
  }
782
- ) : /* @__PURE__ */ e("label", { htmlFor: _.id, children: _.text })
783
- ] }, _.id))
782
+ ) : /* @__PURE__ */ e("label", { htmlFor: i.id, children: i.text })
783
+ ] }, i.id))
784
784
  }
785
785
  );
786
786
  }
787
787
  );
788
- re.displayName = "Checklist";
789
- const wt = "_searchInput_16e7c_3", Nt = "_icon_16e7c_20", kt = "_field_16e7c_27", te = {
790
- searchInput: wt,
791
- icon: Nt,
792
- field: kt
793
- }, yt = p.forwardRef(
788
+ Le.displayName = "Checklist";
789
+ const va = "_searchInput_1ms0w_3", ya = "_icon_1ms0w_20", wa = "_field_1ms0w_27", Ne = {
790
+ searchInput: va,
791
+ icon: ya,
792
+ field: wa
793
+ }, Ee = g.forwardRef(
794
794
  ({
795
- value: t,
796
- placeholder: a = "Suche...",
797
- onChange: n,
795
+ value: a,
796
+ placeholder: n = "Suche...",
797
+ onChange: t,
798
798
  "aria-label": r = "Daten durchsuchen",
799
- id: i,
800
- className: u
801
- }, l) => /* @__PURE__ */ c("label", { className: g(te.searchInput, u), htmlFor: i, children: [
802
- /* @__PURE__ */ c(
799
+ id: l,
800
+ className: c
801
+ }, s) => /* @__PURE__ */ m("label", { className: b(Ne.searchInput, c), htmlFor: l, children: [
802
+ /* @__PURE__ */ m(
803
803
  "svg",
804
804
  {
805
- className: te.icon,
805
+ className: Ne.icon,
806
806
  viewBox: "0 0 24 24",
807
807
  fill: "none",
808
808
  stroke: "currentColor",
@@ -819,46 +819,46 @@ const wt = "_searchInput_16e7c_3", Nt = "_icon_16e7c_20", kt = "_field_16e7c_27"
819
819
  /* @__PURE__ */ e(
820
820
  "input",
821
821
  {
822
- ref: l,
823
- className: te.field,
822
+ ref: s,
823
+ className: Ne.field,
824
824
  type: "search",
825
- id: i,
826
- value: t,
827
- placeholder: a,
825
+ id: l,
826
+ value: a,
827
+ placeholder: n,
828
828
  "aria-label": r,
829
- onChange: (h) => n?.(h.target.value)
829
+ onChange: (d) => t?.(d.target.value)
830
830
  }
831
831
  )
832
832
  ] })
833
833
  );
834
- yt.displayName = "SearchInput";
835
- const Ct = "_btn_6gx9b_3", xt = "_chevron_6gx9b_30", ae = {
836
- btn: Ct,
837
- chevron: xt,
838
- "btn--open": "_btn--open_6gx9b_37"
839
- }, It = p.forwardRef(
834
+ Ee.displayName = "SearchInput";
835
+ const ka = "_btn_1do3o_3", Na = "_chevron_1do3o_30", xe = {
836
+ btn: ka,
837
+ chevron: Na,
838
+ "btn--open": "_btn--open_1do3o_37"
839
+ }, ve = g.forwardRef(
840
840
  ({
841
- expanded: t = !1,
842
- count: a,
843
- label: n,
841
+ expanded: a = !1,
842
+ count: n,
843
+ label: t,
844
844
  onClick: r,
845
- "aria-label": i,
846
- className: u
847
- }, l) => {
848
- const h = n ? `${a ?? ""} ${n}`.trim() : a != null ? String(a) : "";
849
- return /* @__PURE__ */ c(
845
+ "aria-label": l,
846
+ className: c
847
+ }, s) => {
848
+ const d = t ? `${n ?? ""} ${t}`.trim() : n != null ? String(n) : "";
849
+ return /* @__PURE__ */ m(
850
850
  "button",
851
851
  {
852
- ref: l,
853
- className: g(ae.btn, { [ae["btn--open"]]: t }, u),
852
+ ref: s,
853
+ className: b(xe.btn, { [xe["btn--open"]]: a }, c),
854
854
  onClick: r,
855
- "aria-expanded": t,
856
- "aria-label": i,
855
+ "aria-expanded": a,
856
+ "aria-label": l,
857
857
  children: [
858
858
  /* @__PURE__ */ e(
859
859
  "svg",
860
860
  {
861
- className: ae.chevron,
861
+ className: xe.chevron,
862
862
  viewBox: "0 0 24 24",
863
863
  fill: "none",
864
864
  stroke: "currentColor",
@@ -869,132 +869,421 @@ const Ct = "_btn_6gx9b_3", xt = "_chevron_6gx9b_30", ae = {
869
869
  children: /* @__PURE__ */ e("polyline", { points: "6 9 12 15 18 9" })
870
870
  }
871
871
  ),
872
- h
872
+ d
873
873
  ]
874
874
  }
875
875
  );
876
876
  }
877
877
  );
878
- It.displayName = "ExpandButton";
879
- const St = "_circle_gvt69_3", jt = "_svg_gvt69_12", $t = "_track_gvt69_18", At = "_fill_gvt69_24", Lt = "_label_gvt69_31", W = {
880
- circle: St,
881
- svg: jt,
882
- track: $t,
883
- fill: At,
884
- label: Lt
885
- }, oe = 14, se = 2 * Math.PI * oe;
886
- function zt(t) {
887
- return t >= 75 ? "var(--color-success)" : t >= 50 ? "var(--color-warning)" : "var(--error)";
878
+ ve.displayName = "ExpandButton";
879
+ const xa = "_circle_gvt69_3", Ca = "_svg_gvt69_12", Sa = "_track_gvt69_18", Da = "_fill_gvt69_24", Ia = "_label_gvt69_31", ie = {
880
+ circle: xa,
881
+ svg: Ca,
882
+ track: Sa,
883
+ fill: Da,
884
+ label: Ia
885
+ }, Ae = 14, Ce = 2 * Math.PI * Ae;
886
+ function La(a) {
887
+ return a >= 75 ? "var(--color-success)" : a >= 50 ? "var(--color-warning)" : "var(--error)";
888
888
  }
889
- const Rt = p.forwardRef(
890
- ({ value: t, className: a }, n) => {
891
- const r = Math.max(0, Math.min(100, t)), i = se - r / 100 * se;
892
- return /* @__PURE__ */ c("div", { ref: n, className: g(W.circle, a), role: "meter", "aria-valuenow": r, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": `${r}%`, children: [
893
- /* @__PURE__ */ c("svg", { className: W.svg, viewBox: "0 0 36 36", children: [
894
- /* @__PURE__ */ e("circle", { className: W.track, cx: "18", cy: "18", r: oe }),
889
+ const lt = g.forwardRef(
890
+ ({ value: a, className: n }, t) => {
891
+ const r = Math.max(0, Math.min(100, a)), l = Ce - r / 100 * Ce;
892
+ return /* @__PURE__ */ m("div", { ref: t, className: b(ie.circle, n), role: "meter", "aria-valuenow": r, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": `${r}%`, children: [
893
+ /* @__PURE__ */ m("svg", { className: ie.svg, viewBox: "0 0 36 36", children: [
894
+ /* @__PURE__ */ e("circle", { className: ie.track, cx: "18", cy: "18", r: Ae }),
895
895
  /* @__PURE__ */ e(
896
896
  "circle",
897
897
  {
898
- className: W.fill,
898
+ className: ie.fill,
899
899
  cx: "18",
900
900
  cy: "18",
901
- r: oe,
902
- stroke: zt(r),
903
- strokeDasharray: se,
904
- strokeDashoffset: i
901
+ r: Ae,
902
+ stroke: La(r),
903
+ strokeDasharray: Ce,
904
+ strokeDashoffset: l
905
905
  }
906
906
  )
907
907
  ] }),
908
- /* @__PURE__ */ c("span", { className: W.label, children: [
908
+ /* @__PURE__ */ m("span", { className: ie.label, children: [
909
909
  r,
910
910
  "%"
911
911
  ] })
912
912
  ] });
913
913
  }
914
914
  );
915
- Rt.displayName = "ProgressCircle";
916
- const Tt = "_bar_l0q8t_3", Dt = "_track_l0q8t_9", Pt = "_fill_l0q8t_17", Mt = "_value_l0q8t_23", H = {
917
- bar: Tt,
918
- track: Dt,
919
- fill: Pt,
920
- value: Mt
921
- }, Et = p.forwardRef(
922
- ({ value: t, className: a }, n) => {
923
- const r = typeof t == "number" && t <= 1 ? t * 100 : t, i = Math.round(r);
924
- return /* @__PURE__ */ c("div", { ref: n, className: g(H.bar, a), role: "meter", "aria-valuenow": i, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": `${i}%`, children: [
925
- /* @__PURE__ */ e("div", { className: H.track, children: /* @__PURE__ */ e("div", { className: H.fill, style: { width: `${r}%` } }) }),
926
- /* @__PURE__ */ c("span", { className: H.value, children: [
927
- i,
915
+ lt.displayName = "ProgressCircle";
916
+ const Aa = "_bar_l0q8t_3", Ra = "_track_l0q8t_9", $a = "_fill_l0q8t_17", ja = "_value_l0q8t_23", ue = {
917
+ bar: Aa,
918
+ track: Ra,
919
+ fill: $a,
920
+ value: ja
921
+ }, it = g.forwardRef(
922
+ ({ value: a, className: n }, t) => {
923
+ const r = typeof a == "number" && a <= 1 ? a * 100 : a, l = Math.round(r);
924
+ return /* @__PURE__ */ m("div", { ref: t, className: b(ue.bar, n), role: "meter", "aria-valuenow": l, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": `${l}%`, children: [
925
+ /* @__PURE__ */ e("div", { className: ue.track, children: /* @__PURE__ */ e("div", { className: ue.fill, style: { width: `${r}%` } }) }),
926
+ /* @__PURE__ */ m("span", { className: ue.value, children: [
927
+ l,
928
928
  "%"
929
929
  ] })
930
930
  ] });
931
931
  }
932
932
  );
933
- Et.displayName = "ScoreBar";
934
- const Bt = "_empty_26icj_3", Ft = "_icon_26icj_12", Ot = "_title_26icj_19", qt = "_text_26icj_27", G = {
935
- empty: Bt,
936
- icon: Ft,
937
- title: Ot,
938
- text: qt
939
- }, Wt = p.forwardRef(
940
- ({ title: t, text: a, icon: n, className: r }, i) => /* @__PURE__ */ c("div", { ref: i, className: g(G.empty, r), role: "status", children: [
941
- n && /* @__PURE__ */ e("div", { className: G.icon, "aria-hidden": "true", children: n }),
942
- /* @__PURE__ */ e("div", { className: G.title, children: t }),
943
- a && /* @__PURE__ */ e("div", { className: G.text, children: a })
933
+ it.displayName = "ScoreBar";
934
+ const Fa = "_empty_26icj_3", Ba = "_icon_26icj_12", Ta = "_title_26icj_19", Pa = "_text_26icj_27", he = {
935
+ empty: Fa,
936
+ icon: Ba,
937
+ title: Ta,
938
+ text: Pa
939
+ }, Oe = g.forwardRef(
940
+ ({ title: a, text: n, icon: t, className: r }, l) => /* @__PURE__ */ m("div", { ref: l, className: b(he.empty, r), role: "status", children: [
941
+ t && /* @__PURE__ */ e("div", { className: he.icon, "aria-hidden": "true", children: t }),
942
+ /* @__PURE__ */ e("div", { className: he.title, children: a }),
943
+ n && /* @__PURE__ */ e("div", { className: he.text, children: n })
944
944
  ] })
945
945
  );
946
- Wt.displayName = "EmptyState";
947
- const Vt = "_toggle_176y2_3", Ht = "_btn_176y2_11", Gt = "_icon_176y2_43", K = {
948
- toggle: Vt,
949
- btn: Ht,
950
- "btn--active": "_btn--active_176y2_37",
951
- icon: Gt
952
- }, Kt = p.forwardRef(
946
+ Oe.displayName = "EmptyState";
947
+ const Ea = "_toggle_1uawr_3", Oa = "_btn_1uawr_11", Ma = "_icon_1uawr_43", me = {
948
+ toggle: Ea,
949
+ btn: Oa,
950
+ "btn--active": "_btn--active_1uawr_37",
951
+ icon: Ma
952
+ }, Me = g.forwardRef(
953
953
  ({
954
- options: t,
955
- value: a,
956
- onChange: n,
954
+ options: a,
955
+ value: n,
956
+ onChange: t,
957
957
  "aria-label": r,
958
- role: i = "tablist",
959
- className: u
960
- }, l) => {
961
- const h = i === "tablist" ? "tab" : "radio", _ = i === "tablist" ? "aria-selected" : "aria-checked";
958
+ role: l = "tablist",
959
+ className: c
960
+ }, s) => {
961
+ const d = l === "tablist" ? "tab" : "radio", i = l === "tablist" ? "aria-selected" : "aria-checked";
962
962
  return /* @__PURE__ */ e(
963
963
  "div",
964
964
  {
965
- ref: l,
966
- className: g(K.toggle, u),
967
- role: i,
965
+ ref: s,
966
+ className: b(me.toggle, c),
967
+ role: l,
968
968
  "aria-label": r,
969
- children: t.map((m) => {
970
- const o = m.value === a;
971
- return /* @__PURE__ */ c(
969
+ children: a.map((u) => {
970
+ const o = u.value === n;
971
+ return /* @__PURE__ */ m(
972
972
  "button",
973
973
  {
974
- className: g(K.btn, { [K["btn--active"]]: o }),
975
- role: h,
976
- [_]: o,
977
- onClick: () => n?.(m.value),
974
+ className: b(me.btn, { [me["btn--active"]]: o }),
975
+ role: d,
976
+ [i]: o,
977
+ onClick: () => t?.(u.value),
978
978
  children: [
979
- m.icon && /* @__PURE__ */ e("span", { className: K.icon, "aria-hidden": "true", children: m.icon }),
980
- m.label
979
+ u.icon && /* @__PURE__ */ e("span", { className: me.icon, "aria-hidden": "true", children: u.icon }),
980
+ u.label
981
981
  ]
982
982
  },
983
- m.value
983
+ u.value
984
984
  );
985
985
  })
986
986
  }
987
987
  );
988
988
  }
989
989
  );
990
- Kt.displayName = "SegmentedControl";
991
- const Ut = "_dashboard_wq6z7_4", Qt = "_sectionTitle_wq6z7_18", Jt = "_statusLegend_wq6z7_27", Zt = "_projectFilters_wq6z7_34", Xt = "_projectFilters__search_wq6z7_48", M = {
992
- dashboard: Ut,
993
- sectionTitle: Qt,
994
- statusLegend: Jt,
995
- projectFilters: Zt,
996
- projectFilters__search: Xt
997
- }, Yt = [
990
+ Me.displayName = "SegmentedControl";
991
+ const za = "_filterChip_43db3_4", qa = "_filterChip__icon_43db3_38", Wa = "_filterChip__chevron_43db3_44", Va = "_filterChip__label_43db3_55", Ga = "_filterDropdown_43db3_62", Ha = "_filterDropdown__item_43db3_80", Ua = "_filterDropdown__check_43db3_106", Ka = "_filterDropdown__search_43db3_117", Qa = "_filterDropdown__searchIcon_43db3_126", Ya = "_filterDropdown__searchInput_43db3_133", $ = {
992
+ filterChip: za,
993
+ "filterChip--active": "_filterChip--active_43db3_32",
994
+ filterChip__icon: qa,
995
+ filterChip__chevron: Wa,
996
+ "filterChip--open": "_filterChip--open_43db3_51",
997
+ filterChip__label: Va,
998
+ filterDropdown: Ga,
999
+ "filterDropdown--open": "_filterDropdown--open_43db3_76",
1000
+ filterDropdown__item: Ha,
1001
+ "filterDropdown__item--selected": "_filterDropdown__item--selected_43db3_101",
1002
+ filterDropdown__check: Ua,
1003
+ filterDropdown__search: Ka,
1004
+ filterDropdown__searchIcon: Qa,
1005
+ filterDropdown__searchInput: Ya
1006
+ }, ot = g.forwardRef(
1007
+ ({
1008
+ label: a,
1009
+ options: n,
1010
+ value: t,
1011
+ onChange: r,
1012
+ searchable: l = !0,
1013
+ dataFilter: c,
1014
+ className: s
1015
+ }, d) => {
1016
+ const [i, u] = g.useState(!1), [o, f] = g.useState(""), v = g.useRef(null), w = (h) => {
1017
+ typeof d == "function" ? d(h) : d && (d.current = h), v.current = h;
1018
+ }, p = o ? n.filter((h) => h.toLowerCase().includes(o.toLowerCase())) : n, y = !!t;
1019
+ return g.useEffect(() => {
1020
+ function h(x) {
1021
+ v.current && !v.current.contains(x.target) && (u(!1), f(""));
1022
+ }
1023
+ if (i)
1024
+ return document.addEventListener("click", h), () => document.removeEventListener("click", h);
1025
+ }, [i]), /* @__PURE__ */ m(
1026
+ "button",
1027
+ {
1028
+ ref: w,
1029
+ className: b(
1030
+ $.filterChip,
1031
+ { [$["filterChip--active"]]: y, [$["filterChip--open"]]: i },
1032
+ s
1033
+ ),
1034
+ "data-filter": c,
1035
+ "aria-haspopup": "listbox",
1036
+ "aria-expanded": i,
1037
+ onClick: (h) => {
1038
+ const x = h.target;
1039
+ x.closest(`.${$.filterDropdown__item}`) || x.closest(`.${$.filterDropdown__search}`) || u(!i);
1040
+ },
1041
+ children: [
1042
+ /* @__PURE__ */ e("svg", { className: $.filterChip__icon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ e("path", { d: "M22 3H2l8 9.46V19l4 2v-8.54L22 3z" }) }),
1043
+ /* @__PURE__ */ e("span", { className: $.filterChip__label, children: t || a }),
1044
+ /* @__PURE__ */ e("svg", { className: $.filterChip__chevron, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ e("polyline", { points: "6 9 12 15 18 9" }) }),
1045
+ i && /* @__PURE__ */ m(
1046
+ "div",
1047
+ {
1048
+ className: b($.filterDropdown, $["filterDropdown--open"]),
1049
+ role: "listbox",
1050
+ "aria-label": `${a} filtern`,
1051
+ children: [
1052
+ l && /* @__PURE__ */ m("div", { className: $.filterDropdown__search, onClick: (h) => h.stopPropagation(), children: [
1053
+ /* @__PURE__ */ m("svg", { className: $.filterDropdown__searchIcon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
1054
+ /* @__PURE__ */ e("circle", { cx: "11", cy: "11", r: "8" }),
1055
+ /* @__PURE__ */ e("line", { x1: "21", y1: "21", x2: "16.65", y2: "16.65" })
1056
+ ] }),
1057
+ /* @__PURE__ */ e(
1058
+ "input",
1059
+ {
1060
+ className: $.filterDropdown__searchInput,
1061
+ type: "text",
1062
+ placeholder: "Suchen...",
1063
+ "aria-label": "Filteroptionen durchsuchen",
1064
+ value: o,
1065
+ onChange: (h) => f(h.target.value),
1066
+ onClick: (h) => h.stopPropagation()
1067
+ }
1068
+ )
1069
+ ] }),
1070
+ /* @__PURE__ */ m(
1071
+ "div",
1072
+ {
1073
+ role: "option",
1074
+ "aria-selected": !t,
1075
+ className: b($.filterDropdown__item, {
1076
+ [$["filterDropdown__item--selected"]]: !t
1077
+ }),
1078
+ onClick: (h) => {
1079
+ h.stopPropagation(), r?.(null), u(!1), f("");
1080
+ },
1081
+ children: [
1082
+ /* @__PURE__ */ e("svg", { className: $.filterDropdown__check, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ e("polyline", { points: "20 6 9 17 4 12" }) }),
1083
+ "Alle"
1084
+ ]
1085
+ }
1086
+ ),
1087
+ p.map((h) => /* @__PURE__ */ m(
1088
+ "div",
1089
+ {
1090
+ role: "option",
1091
+ "aria-selected": t === h,
1092
+ className: b($.filterDropdown__item, {
1093
+ [$["filterDropdown__item--selected"]]: t === h
1094
+ }),
1095
+ "data-value": h,
1096
+ onClick: (x) => {
1097
+ x.stopPropagation(), r?.(h), u(!1), f("");
1098
+ },
1099
+ children: [
1100
+ /* @__PURE__ */ e("svg", { className: $.filterDropdown__check, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ e("polyline", { points: "20 6 9 17 4 12" }) }),
1101
+ h
1102
+ ]
1103
+ },
1104
+ h
1105
+ ))
1106
+ ]
1107
+ }
1108
+ )
1109
+ ]
1110
+ }
1111
+ );
1112
+ }
1113
+ );
1114
+ ot.displayName = "FilterChip";
1115
+ const Xa = "_popover_jepnf_3", Ke = {
1116
+ popover: Xa,
1117
+ "popover--open": "_popover--open_jepnf_15"
1118
+ }, ze = g.forwardRef(
1119
+ ({ open: a, children: n, className: t, ...r }, l) => /* @__PURE__ */ e(
1120
+ "div",
1121
+ {
1122
+ ref: l,
1123
+ className: b(Ke.popover, { [Ke["popover--open"]]: a }, t),
1124
+ role: "dialog",
1125
+ ...r,
1126
+ children: n
1127
+ }
1128
+ )
1129
+ );
1130
+ ze.displayName = "Popover";
1131
+ const Ja = "_checkbox_shqzk_3", Za = "_checkbox__input_shqzk_13", en = "_checkbox__box_shqzk_23", tn = "_checkbox__icon_shqzk_40", an = "_checkbox__label_shqzk_60", ae = {
1132
+ checkbox: Ja,
1133
+ checkbox__input: Za,
1134
+ checkbox__box: en,
1135
+ "checkbox--checked": "_checkbox--checked_shqzk_35",
1136
+ checkbox__icon: tn,
1137
+ checkbox__label: an
1138
+ }, ct = g.forwardRef(
1139
+ ({ checked: a, onChange: n, label: t, id: r, className: l }, c) => /* @__PURE__ */ m(
1140
+ "label",
1141
+ {
1142
+ ref: c,
1143
+ className: b(ae.checkbox, { [ae["checkbox--checked"]]: a }, l),
1144
+ htmlFor: r,
1145
+ children: [
1146
+ /* @__PURE__ */ e(
1147
+ "input",
1148
+ {
1149
+ className: ae.checkbox__input,
1150
+ type: "checkbox",
1151
+ id: r,
1152
+ checked: a,
1153
+ onChange: (s) => n?.(s.target.checked)
1154
+ }
1155
+ ),
1156
+ /* @__PURE__ */ e("span", { className: ae.checkbox__box, children: /* @__PURE__ */ e(
1157
+ "svg",
1158
+ {
1159
+ className: ae.checkbox__icon,
1160
+ viewBox: "0 0 24 24",
1161
+ fill: "none",
1162
+ stroke: "currentColor",
1163
+ strokeWidth: "3",
1164
+ strokeLinecap: "round",
1165
+ strokeLinejoin: "round",
1166
+ "aria-hidden": "true",
1167
+ children: /* @__PURE__ */ e("polyline", { points: "20 6 9 17 4 12" })
1168
+ }
1169
+ ) }),
1170
+ t && /* @__PURE__ */ e("span", { className: ae.checkbox__label, children: t })
1171
+ ]
1172
+ }
1173
+ )
1174
+ );
1175
+ ct.displayName = "Checkbox";
1176
+ const nn = "_formField_v7ze9_3", rn = "_formField__label_v7ze9_9", sn = "_formField__error_v7ze9_19", Se = {
1177
+ formField: nn,
1178
+ formField__label: rn,
1179
+ formField__error: sn
1180
+ }, z = g.forwardRef(
1181
+ ({ label: a, htmlFor: n, error: t, children: r, className: l }, c) => /* @__PURE__ */ m("div", { ref: c, className: b(Se.formField, l), children: [
1182
+ /* @__PURE__ */ e("label", { className: Se.formField__label, htmlFor: n, children: a }),
1183
+ r,
1184
+ t && /* @__PURE__ */ e("span", { className: Se.formField__error, role: "alert", children: t })
1185
+ ] })
1186
+ );
1187
+ z.displayName = "FormField";
1188
+ const ln = "_textInput_ix759_3", on = {
1189
+ textInput: ln
1190
+ }, Re = g.forwardRef(
1191
+ ({ value: a, onChange: n, className: t, type: r = "text", ...l }, c) => /* @__PURE__ */ e(
1192
+ "input",
1193
+ {
1194
+ ref: c,
1195
+ type: r,
1196
+ className: b(on.textInput, t),
1197
+ value: a,
1198
+ onChange: (s) => n?.(s.target.value),
1199
+ ...l
1200
+ }
1201
+ )
1202
+ );
1203
+ Re.displayName = "TextInput";
1204
+ const cn = "_select_6527a_3", dn = {
1205
+ select: cn
1206
+ }, re = g.forwardRef(
1207
+ ({ options: a, value: n, onChange: t, placeholder: r, className: l, ...c }, s) => /* @__PURE__ */ m(
1208
+ "select",
1209
+ {
1210
+ ref: s,
1211
+ className: b(dn.select, l),
1212
+ value: n,
1213
+ onChange: (d) => t?.(d.target.value),
1214
+ ...c,
1215
+ children: [
1216
+ r && /* @__PURE__ */ e("option", { value: "", children: r }),
1217
+ a.map((d) => /* @__PURE__ */ e("option", { value: d.value, children: d.label }, d.value))
1218
+ ]
1219
+ }
1220
+ )
1221
+ );
1222
+ re.displayName = "Select";
1223
+ const _n = "_textArea_kwln7_3", un = {
1224
+ textArea: _n
1225
+ }, dt = g.forwardRef(
1226
+ ({ value: a, onChange: n, className: t, ...r }, l) => /* @__PURE__ */ e(
1227
+ "textarea",
1228
+ {
1229
+ ref: l,
1230
+ className: b(un.textArea, t),
1231
+ value: a,
1232
+ onChange: (c) => n?.(c.target.value),
1233
+ ...r
1234
+ }
1235
+ )
1236
+ );
1237
+ dt.displayName = "TextArea";
1238
+ const hn = "_overlay_1wnad_4", mn = "_content_1wnad_25", pn = "_header_1wnad_46", fn = "_header__title_1wnad_55", bn = "_body_1wnad_65", gn = "_footer_1wnad_85", vn = "_icon_1wnad_96", U = {
1239
+ overlay: hn,
1240
+ "overlay--active": "_overlay--active_1wnad_19",
1241
+ content: mn,
1242
+ header: pn,
1243
+ header__title: fn,
1244
+ body: bn,
1245
+ footer: gn,
1246
+ icon: vn
1247
+ }, _t = g.forwardRef(
1248
+ ({ isOpen: a, onClose: n, title: t, footer: r, children: l, className: c, ...s }, d) => {
1249
+ if (je(() => {
1250
+ const u = (o) => {
1251
+ o.key === "Escape" && a && n();
1252
+ };
1253
+ return document.addEventListener("keydown", u), () => document.removeEventListener("keydown", u);
1254
+ }, [a, n]), !a) return null;
1255
+ const i = (u) => {
1256
+ u.target === u.currentTarget && n();
1257
+ };
1258
+ return /* @__PURE__ */ e(
1259
+ "div",
1260
+ {
1261
+ ref: d,
1262
+ className: b(U.overlay, { [U["overlay--active"]]: a }, c),
1263
+ onClick: i,
1264
+ role: "dialog",
1265
+ "aria-modal": "true",
1266
+ "aria-labelledby": t ? "modal-title" : void 0,
1267
+ ...s,
1268
+ children: /* @__PURE__ */ m("div", { className: U.content, children: [
1269
+ t && /* @__PURE__ */ m("header", { className: U.header, children: [
1270
+ /* @__PURE__ */ e("h2", { className: U.header__title, id: "modal-title", children: t }),
1271
+ /* @__PURE__ */ e(W, { variant: "ghost", onClick: n, "aria-label": "Schließen", children: /* @__PURE__ */ e("svg", { className: U.icon, viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M18 6 6 18M6 6l12 12" }) }) })
1272
+ ] }),
1273
+ /* @__PURE__ */ e("div", { className: U.body, children: l }),
1274
+ r && /* @__PURE__ */ e("footer", { className: U.footer, children: r })
1275
+ ] })
1276
+ }
1277
+ );
1278
+ }
1279
+ );
1280
+ _t.displayName = "Modal";
1281
+ const yn = "_dashboard_avuww_4", wn = "_sectionTitle_avuww_18", kn = "_statusLegend_avuww_27", Nn = "_projectList_avuww_34", oe = {
1282
+ dashboard: yn,
1283
+ sectionTitle: wn,
1284
+ statusLegend: kn,
1285
+ projectList: Nn
1286
+ }, xn = [
998
1287
  { id: "1", name: "E-Commerce Relaunch", client: "Müller GmbH", app: "Shopify CMS", status: "neu", favorite: !1, createdAt: "12.02.2026", updatedAt: (/* @__PURE__ */ new Date()).toISOString() },
999
1288
  { id: "2", name: "CRM Integration MVP", client: "TechCorp Inc.", app: "Salesforce API", status: "offen", favorite: !0, createdAt: "15.01.2026", updatedAt: new Date(Date.now() - 2880 * 60 * 1e3).toISOString() },
1000
1289
  { id: "3", name: "Data Analytics Dashboard", client: "DataViz AG", app: "React / Supabase", status: "in-prufung", favorite: !1, createdAt: "20.02.2026", updatedAt: new Date(Date.now() - 10080 * 60 * 1e3).toISOString() },
@@ -1021,123 +1310,123 @@ const Ut = "_dashboard_wq6z7_4", Qt = "_sectionTitle_wq6z7_18", Jt = "_statusLeg
1021
1310
  createdAt: "05.01.2026",
1022
1311
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
1023
1312
  }
1024
- ], ea = [
1313
+ ], Cn = [
1025
1314
  { status: "alle", label: "Alle" },
1026
1315
  { status: "neu", label: "Neu" },
1027
1316
  { status: "offen", label: "Offen" },
1028
1317
  { status: "in-prufung", label: "In Prüfung" },
1029
1318
  { status: "validierung", label: "Validierung" },
1030
1319
  { status: "abgeschlossen", label: "Abgeschlossen" }
1031
- ], ta = {
1320
+ ], Sn = {
1032
1321
  neu: "Neu",
1033
1322
  offen: "Offen",
1034
1323
  "in-prufung": "In Prüfung",
1035
1324
  validierung: "Validierung",
1036
1325
  abgeschlossen: "Abgeschlossen"
1037
- }, aa = p.forwardRef(
1038
- ({ initialRows: t = Yt, className: a, ...n }, r) => {
1039
- const [i, u] = A(t), [l, h] = A("alle"), [_, m] = A(""), o = Z(() => {
1040
- const v = {
1041
- alle: i.length,
1326
+ }, Dn = g.forwardRef(
1327
+ ({ initialRows: a = xn, className: n, ...t }, r) => {
1328
+ const [l, c] = E(a), [s, d] = E("alle"), [i, u] = E(""), o = ee(() => {
1329
+ const h = {
1330
+ alle: l.length,
1042
1331
  neu: 0,
1043
1332
  offen: 0,
1044
1333
  "in-prufung": 0,
1045
1334
  validierung: 0,
1046
1335
  abgeschlossen: 0
1047
1336
  };
1048
- return i.forEach((y) => {
1049
- v[y.status]++;
1050
- }), v;
1051
- }, [i]), w = Z(() => {
1052
- let v = i;
1053
- if (l !== "alle" && (v = v.filter((y) => y.status === l)), _.trim() !== "") {
1054
- const y = _.toLowerCase().trim();
1055
- v = v.filter(
1056
- (b) => b.name.toLowerCase().includes(y) || b.client.toLowerCase().includes(y) || b.app.toLowerCase().includes(y)
1337
+ return l.forEach((x) => {
1338
+ h[x.status]++;
1339
+ }), h;
1340
+ }, [l]), f = ee(() => {
1341
+ let h = l;
1342
+ if (s !== "alle" && (h = h.filter((x) => x.status === s)), i.trim() !== "") {
1343
+ const x = i.toLowerCase().trim();
1344
+ h = h.filter(
1345
+ (k) => k.name.toLowerCase().includes(x) || k.client.toLowerCase().includes(x) || k.app.toLowerCase().includes(x)
1057
1346
  );
1058
1347
  }
1059
- return l === "alle" && (v = [...v].sort((y, b) => Number(b.favorite) - Number(y.favorite))), v;
1060
- }, [i, l, _]), x = l === "alle" ? "Alle Projekte" : `Projekte: ${ta[l]}`, C = (v, y) => {
1061
- u((b) => b.map((s) => s.id === v ? { ...s, favorite: y } : s));
1062
- }, f = Z(() => [
1063
- { status: "neu", label: "Neu", value: o.neu, color: "hsl(var(--status-neu))" },
1064
- { status: "offen", label: "Offen", value: o.offen, color: "hsl(var(--status-offen))" },
1065
- { status: "in-prufung", label: "In Prüfung", value: o["in-prufung"], color: "hsl(var(--status-in-prufung))" },
1066
- { status: "validierung", label: "Validierung", value: o.validierung, color: "hsl(var(--status-validierung))" },
1067
- { status: "abgeschlossen", label: "Abgeschlossen", value: o.abgeschlossen, color: "hsl(var(--status-abgeschlossen))" }
1068
- ], [o]), k = (v) => {
1069
- h(v);
1348
+ return s === "alle" && (h = [...h].sort((x, k) => Number(k.favorite) - Number(x.favorite))), h;
1349
+ }, [l, s, i]), v = s === "alle" ? "Alle Projekte" : `Projekte: ${Sn[s]}`, w = (h, x) => {
1350
+ c((k) => k.map((_) => _.id === h ? { ..._, favorite: x } : _));
1351
+ }, p = ee(() => [
1352
+ { status: "neu", label: "Neu", value: o.neu, color: "var(--status-neu)" },
1353
+ { status: "offen", label: "Offen", value: o.offen, color: "var(--status-offen)" },
1354
+ { status: "in-prufung", label: "In Prüfung", value: o["in-prufung"], color: "var(--status-in-prufung)" },
1355
+ { status: "validierung", label: "Validierung", value: o.validierung, color: "var(--status-validierung)" },
1356
+ { status: "abgeschlossen", label: "Abgeschlossen", value: o.abgeschlossen, color: "var(--status-abgeschlossen)" }
1357
+ ], [o]), y = (h) => {
1358
+ d(h);
1070
1359
  };
1071
- return /* @__PURE__ */ c(
1360
+ return /* @__PURE__ */ m(
1072
1361
  "main",
1073
1362
  {
1074
1363
  ref: r,
1075
- className: g(M.dashboard, a),
1076
- ...n,
1364
+ className: b(oe.dashboard, n),
1365
+ ...t,
1077
1366
  children: [
1078
- /* @__PURE__ */ c(
1079
- U,
1367
+ /* @__PURE__ */ m(
1368
+ fe,
1080
1369
  {
1081
1370
  as: "section",
1082
1371
  variant: "full",
1083
1372
  padded: !0,
1084
1373
  "aria-label": "Projektstatus Übersicht",
1085
- className: M.statusOverview,
1374
+ className: oe.statusOverview,
1086
1375
  children: [
1087
- /* @__PURE__ */ e("h1", { className: M.sectionTitle, children: "Projekte" }),
1376
+ /* @__PURE__ */ e("h1", { className: oe.sectionTitle, children: "Projekte" }),
1088
1377
  /* @__PURE__ */ e(
1089
- xe,
1378
+ nt,
1090
1379
  {
1091
- data: f,
1092
- onSegmentClick: k
1380
+ data: p,
1381
+ onSegmentClick: y
1093
1382
  }
1094
1383
  ),
1095
1384
  /* @__PURE__ */ e(
1096
1385
  "div",
1097
1386
  {
1098
- className: M.statusLegend,
1387
+ className: oe.statusLegend,
1099
1388
  role: "listbox",
1100
1389
  "aria-label": "Nach Status filtern",
1101
- children: ea.map(({ status: v, label: y }) => /* @__PURE__ */ e(
1102
- Ce,
1390
+ children: Cn.map(({ status: h, label: x }) => /* @__PURE__ */ e(
1391
+ at,
1103
1392
  {
1104
- status: v,
1105
- label: y,
1106
- count: o[v],
1107
- active: l === v,
1108
- onClick: () => h(v)
1393
+ status: h,
1394
+ label: x,
1395
+ count: o[h],
1396
+ active: s === h,
1397
+ onClick: () => d(h)
1109
1398
  },
1110
- v
1399
+ h
1111
1400
  ))
1112
1401
  }
1113
1402
  )
1114
1403
  ]
1115
1404
  }
1116
1405
  ),
1117
- /* @__PURE__ */ c(
1118
- U,
1406
+ /* @__PURE__ */ e(
1407
+ fe,
1119
1408
  {
1120
1409
  as: "section",
1121
1410
  variant: "full",
1122
1411
  "aria-label": "Projektliste",
1123
- className: M.projectList,
1124
- children: [
1125
- /* @__PURE__ */ c("div", { className: M.projectFilters, children: [
1126
- /* @__PURE__ */ e("h2", { className: M.sectionTitle, children: x }),
1127
- /* @__PURE__ */ e(
1128
- "input",
1129
- {
1130
- type: "search",
1131
- className: M.projectFilters__search,
1132
- "aria-label": "Projekte durchsuchen",
1133
- placeholder: "Suchen...",
1134
- value: _,
1135
- onChange: (v) => m(v.target.value)
1136
- }
1137
- )
1138
- ] }),
1139
- /* @__PURE__ */ e(Ie, { rows: w, onToggleFavorite: C })
1140
- ]
1412
+ className: oe.projectList,
1413
+ title: v,
1414
+ headerAction: /* @__PURE__ */ e(
1415
+ Ee,
1416
+ {
1417
+ value: i,
1418
+ onChange: u,
1419
+ placeholder: "Projekte durchsuchen...",
1420
+ "aria-label": "Projekte durchsuchen"
1421
+ }
1422
+ ),
1423
+ children: f.length > 0 ? /* @__PURE__ */ e(rt, { rows: f, onToggleFavorite: w }) : /* @__PURE__ */ e(
1424
+ Oe,
1425
+ {
1426
+ title: "Keine Projekte gefunden",
1427
+ text: i ? `Keine Ergebnisse für „${i}"` : void 0
1428
+ }
1429
+ )
1141
1430
  }
1142
1431
  )
1143
1432
  ]
@@ -1145,54 +1434,54 @@ const Ut = "_dashboard_wq6z7_4", Qt = "_sectionTitle_wq6z7_18", Jt = "_statusLeg
1145
1434
  );
1146
1435
  }
1147
1436
  );
1148
- aa.displayName = "DashboardPage";
1149
- const sa = "_taskItem_77jzk_4", la = "_taskItem__content_77jzk_14", na = "_taskItem__titleGroup_77jzk_21", ia = "_taskItem__title_77jzk_21", ra = "_taskItem__meta_77jzk_41", oa = "_metaUser_77jzk_52", ca = "_metaProject_77jzk_58", da = "_taskItem__deadline_77jzk_76", _a = "_taskItem__actions_77jzk_95", $ = {
1150
- taskItem: sa,
1151
- taskItem__content: la,
1152
- taskItem__titleGroup: na,
1153
- taskItem__title: ia,
1154
- taskItem__meta: ra,
1155
- metaUser: oa,
1156
- metaProject: ca,
1437
+ Dn.displayName = "DashboardPage";
1438
+ const In = "_taskItem_77jzk_4", Ln = "_taskItem__content_77jzk_14", An = "_taskItem__titleGroup_77jzk_21", Rn = "_taskItem__title_77jzk_21", $n = "_taskItem__meta_77jzk_41", jn = "_metaUser_77jzk_52", Fn = "_metaProject_77jzk_58", Bn = "_taskItem__deadline_77jzk_76", Tn = "_taskItem__actions_77jzk_95", P = {
1439
+ taskItem: In,
1440
+ taskItem__content: Ln,
1441
+ taskItem__titleGroup: An,
1442
+ taskItem__title: Rn,
1443
+ taskItem__meta: $n,
1444
+ metaUser: jn,
1445
+ metaProject: Fn,
1157
1446
  "icon-sm": "_icon-sm_77jzk_71",
1158
- taskItem__deadline: da,
1447
+ taskItem__deadline: Bn,
1159
1448
  "deadline-urgent": "_deadline-urgent_77jzk_85",
1160
1449
  "deadline-normal": "_deadline-normal_77jzk_90",
1161
- taskItem__actions: _a
1162
- }, ua = [
1450
+ taskItem__actions: Tn
1451
+ }, Pn = [
1163
1452
  { value: "Offen", label: "Offen" },
1164
1453
  { value: "In Arbeit", label: "In Arbeit" },
1165
1454
  { value: "Erledigt", label: "Erledigt" }
1166
- ], je = p.forwardRef(
1167
- ({ title: t, project: a, projectLabel: n, status: r, deadline: i, deadlineType: u = "normal", priority: l, assignees: h, description: _, onClick: m, onStatusChange: o, className: w, ...x }, C) => {
1168
- const f = (k) => {
1169
- k.stopPropagation();
1455
+ ], ut = g.forwardRef(
1456
+ ({ title: a, project: n, projectLabel: t, status: r, deadline: l, deadlineType: c = "normal", priority: s, assignees: d, description: i, onClick: u, onStatusChange: o, className: f, ...v }, w) => {
1457
+ const p = (y) => {
1458
+ y.stopPropagation();
1170
1459
  };
1171
- return /* @__PURE__ */ c(
1172
- Ne,
1460
+ return /* @__PURE__ */ m(
1461
+ Be,
1173
1462
  {
1174
- ref: C,
1463
+ ref: w,
1175
1464
  as: "article",
1176
- onClick: m,
1177
- className: g($.taskItem, w),
1178
- ...x,
1465
+ onClick: u,
1466
+ className: b(P.taskItem, f),
1467
+ ...v,
1179
1468
  children: [
1180
- /* @__PURE__ */ c("div", { className: $.taskItem__content, children: [
1181
- /* @__PURE__ */ e("div", { className: $.taskItem__titleGroup, children: /* @__PURE__ */ e("h3", { className: $.taskItem__title, children: t }) }),
1182
- /* @__PURE__ */ c("div", { className: $.taskItem__meta, children: [
1183
- h.length > 0 && /* @__PURE__ */ e("div", { className: $.metaUser, children: /* @__PURE__ */ e(de, { children: h.map((k, v) => /* @__PURE__ */ e(V, { initials: k.initials, name: k.name }, v)) }) }),
1184
- /* @__PURE__ */ c("div", { className: $.metaProject, "aria-label": `Projekt: ${n || a}`, children: [
1185
- /* @__PURE__ */ e("svg", { className: $["icon-sm"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) }),
1186
- n || a
1469
+ /* @__PURE__ */ m("div", { className: P.taskItem__content, children: [
1470
+ /* @__PURE__ */ e("div", { className: P.taskItem__titleGroup, children: /* @__PURE__ */ e("h3", { className: P.taskItem__title, children: a }) }),
1471
+ /* @__PURE__ */ m("div", { className: P.taskItem__meta, children: [
1472
+ d.length > 0 && /* @__PURE__ */ e("div", { className: P.metaUser, children: /* @__PURE__ */ e(Te, { children: d.map((y, h) => /* @__PURE__ */ e(ce, { initials: y.initials, name: y.name }, h)) }) }),
1473
+ /* @__PURE__ */ m("div", { className: P.metaProject, "aria-label": `Projekt: ${t || n}`, children: [
1474
+ /* @__PURE__ */ e("svg", { className: P["icon-sm"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) }),
1475
+ t || n
1187
1476
  ] }),
1188
- l && l !== "low" && /* @__PURE__ */ e(_e, { level: l, size: "small" })
1477
+ s && s !== "low" && /* @__PURE__ */ e(Pe, { level: s, size: "small" })
1189
1478
  ] })
1190
1479
  ] }),
1191
- /* @__PURE__ */ e("div", { className: g($.taskItem__deadline, $[`deadline-${u}`]), children: i }),
1192
- /* @__PURE__ */ e("div", { className: $.taskItem__actions, onClick: f, children: /* @__PURE__ */ e(
1193
- Se,
1480
+ /* @__PURE__ */ e("div", { className: b(P.taskItem__deadline, P[`deadline-${c}`]), children: l }),
1481
+ /* @__PURE__ */ e("div", { className: P.taskItem__actions, onClick: p, children: /* @__PURE__ */ e(
1482
+ st,
1194
1483
  {
1195
- options: ua,
1484
+ options: Pn,
1196
1485
  value: r,
1197
1486
  onChange: o
1198
1487
  }
@@ -1202,278 +1491,226 @@ const sa = "_taskItem_77jzk_4", la = "_taskItem__content_77jzk_14", na = "_taskI
1202
1491
  );
1203
1492
  }
1204
1493
  );
1205
- je.displayName = "TaskItem";
1206
- const ma = "_textarea_m18cx_191", ha = "_icon_m18cx_197", d = {
1207
- "modal-overlay": "_modal-overlay_m18cx_4",
1208
- "is-active": "_is-active_m18cx_19",
1209
- "modal-content": "_modal-content_m18cx_25",
1210
- "modal-header": "_modal-header_m18cx_46",
1211
- "modal-header-title": "_modal-header-title_m18cx_55",
1212
- "modal-body": "_modal-body_m18cx_65",
1213
- "modal-footer": "_modal-footer_m18cx_84",
1214
- "view-group": "_view-group_m18cx_95",
1215
- "view-label": "_view-label_m18cx_101",
1216
- "view-badge-row": "_view-badge-row_m18cx_111",
1217
- "view-task-title": "_view-task-title_m18cx_118",
1218
- "view-value-strong": "_view-value-strong_m18cx_127",
1219
- "view-description": "_view-description_m18cx_134",
1220
- "text-muted": "_text-muted_m18cx_142",
1221
- "form-group": "_form-group_m18cx_148",
1222
- "form-row": "_form-row_m18cx_154",
1223
- "form-label": "_form-label_m18cx_160",
1224
- "form-control": "_form-control_m18cx_170",
1225
- textarea: ma,
1226
- icon: ha,
1227
- "icon-pencil": "_icon-pencil_m18cx_207"
1228
- }, ge = [
1494
+ ut.displayName = "TaskItem";
1495
+ const S = {
1496
+ "view-group": "_view-group_1lp4x_4",
1497
+ "view-label": "_view-label_1lp4x_10",
1498
+ "view-badge-row": "_view-badge-row_1lp4x_20",
1499
+ "view-task-title": "_view-task-title_1lp4x_27",
1500
+ "view-value-strong": "_view-value-strong_1lp4x_36",
1501
+ "view-description": "_view-description_1lp4x_43",
1502
+ "text-muted": "_text-muted_1lp4x_51",
1503
+ "form-row": "_form-row_1lp4x_57",
1504
+ "assignee-row": "_assignee-row_1lp4x_63",
1505
+ "assignee-select": "_assignee-select_1lp4x_69",
1506
+ "add-checklist-btn": "_add-checklist-btn_1lp4x_73",
1507
+ "icon-pencil": "_icon-pencil_1lp4x_79",
1508
+ "icon-sm": "_icon-sm_1lp4x_85"
1509
+ }, Qe = [
1229
1510
  { value: "Q1", label: "Q1 Roadmap" },
1230
1511
  { value: "FR", label: "Frontend Relaunch" },
1231
1512
  { value: "UR", label: "User Research" }
1232
- ], be = [
1513
+ ], En = [
1514
+ { value: "Offen", label: "Offen" },
1515
+ { value: "In Arbeit", label: "In Arbeit" },
1516
+ { value: "Erledigt", label: "Erledigt" }
1517
+ ], On = [
1518
+ { value: "", label: "Keine" },
1519
+ { value: "high", label: "Hoch (!!)" },
1520
+ { value: "medium", label: "Medium (!)" },
1521
+ { value: "low", label: "Niedrig" }
1522
+ ], ht = [
1233
1523
  { initials: "FV", name: "Fabian Venmann" },
1234
1524
  { initials: "LV", name: "Luca Vitiello" },
1235
1525
  { initials: "AS", name: "Anna Schmidt" }
1236
- ], $e = p.forwardRef(
1237
- ({ isOpen: t, onClose: a, task: n, onSave: r, initialMode: i = "view", className: u, ...l }, h) => {
1238
- const [_, m] = A(i), [o, w] = A(null);
1239
- if (le(() => {
1240
- t && n && (w({ ...n, checklist: [...n.checklist] }), m(i));
1241
- }, [t, n, i]), le(() => {
1242
- const s = (N) => {
1243
- N.key === "Escape" && t && a();
1244
- };
1245
- return document.addEventListener("keydown", s), () => document.removeEventListener("keydown", s);
1246
- }, [t, a]), !t || !n || !o) return null;
1247
- const x = () => {
1248
- r && r(o), m("view");
1249
- }, C = () => {
1250
- a();
1251
- }, f = (s) => {
1252
- w({ ...o, checklist: s });
1253
- }, k = (s) => {
1254
- const N = ge.find((I) => I.value === s.target.value);
1255
- w({
1526
+ ], Mn = ht.map((a) => ({
1527
+ value: a.initials.toLowerCase(),
1528
+ label: a.name
1529
+ })), mt = g.forwardRef(
1530
+ ({ isOpen: a, onClose: n, task: t, onSave: r, initialMode: l = "view", className: c, ...s }, d) => {
1531
+ const [i, u] = E(l), [o, f] = E(null);
1532
+ if (je(() => {
1533
+ a && t && (f({ ...t, checklist: [...t.checklist] }), u(l));
1534
+ }, [a, t, l]), !a || !t || !o) return null;
1535
+ const v = () => {
1536
+ r && r(o), u("view");
1537
+ }, w = (_) => {
1538
+ f({ ...o, checklist: _ });
1539
+ }, p = (_) => {
1540
+ const N = Qe.find((I) => I.value === _);
1541
+ f({
1256
1542
  ...o,
1257
- project: s.target.value,
1258
- projectLabel: N?.label || s.target.value
1543
+ project: _,
1544
+ projectLabel: N?.label || _
1259
1545
  });
1260
- }, v = (s) => {
1261
- const N = be.find((I) => I.initials.toLowerCase() === s.target.value);
1262
- N && w({ ...o, assignees: [N] });
1263
- }, y = () => {
1264
- const s = {
1546
+ }, y = (_) => {
1547
+ const N = ht.find((I) => I.initials.toLowerCase() === _);
1548
+ N && f({ ...o, assignees: [N] });
1549
+ }, h = () => {
1550
+ const _ = {
1265
1551
  id: `check-${Date.now()}`,
1266
1552
  text: "",
1267
1553
  checked: !1
1268
1554
  };
1269
- w({
1555
+ f({
1270
1556
  ...o,
1271
- checklist: [...o.checklist, s]
1557
+ checklist: [...o.checklist, _]
1272
1558
  });
1273
- }, b = (s) => {
1274
- s.target === s.currentTarget && C();
1275
- };
1559
+ }, x = i === "edit" ? "Aufgabe bearbeiten" : "Aufgaben-Details", k = i === "view" ? /* @__PURE__ */ m(Q, { children: [
1560
+ /* @__PURE__ */ e(W, { variant: "outline", onClick: n, children: "Schließen" }),
1561
+ /* @__PURE__ */ m(W, { variant: "primary", onClick: () => u("edit"), children: [
1562
+ /* @__PURE__ */ e("svg", { className: S["icon-pencil"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" }) }),
1563
+ "Bearbeiten"
1564
+ ] })
1565
+ ] }) : /* @__PURE__ */ m(Q, { children: [
1566
+ /* @__PURE__ */ e(W, { variant: "outline", onClick: () => u("view"), children: "Abbrechen" }),
1567
+ /* @__PURE__ */ e(W, { variant: "primary", onClick: v, children: "Speichern" })
1568
+ ] });
1276
1569
  return /* @__PURE__ */ e(
1277
- "div",
1570
+ _t,
1278
1571
  {
1279
- ref: h,
1280
- className: g(d["modal-overlay"], { [d["is-active"]]: t }, u),
1281
- onClick: b,
1282
- role: "dialog",
1283
- "aria-modal": "true",
1284
- "aria-labelledby": "modalTitle",
1285
- ...l,
1286
- children: /* @__PURE__ */ c("div", { className: d["modal-content"], "data-mode": _, children: [
1287
- /* @__PURE__ */ c("header", { className: d["modal-header"], children: [
1288
- /* @__PURE__ */ e("h2", { className: d["modal-header-title"], id: "modalTitle", children: _ === "edit" ? "Aufgabe bearbeiten" : "Aufgaben-Details" }),
1289
- /* @__PURE__ */ e(R, { variant: "ghost", onClick: C, "aria-label": "Schließen", children: /* @__PURE__ */ e("svg", { className: d.icon, viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M18 6 6 18M6 6l12 12" }) }) })
1572
+ ref: d,
1573
+ isOpen: a,
1574
+ onClose: n,
1575
+ title: x,
1576
+ footer: k,
1577
+ className: c,
1578
+ ...s,
1579
+ children: i === "view" ? /* @__PURE__ */ m(Q, { children: [
1580
+ /* @__PURE__ */ m("div", { className: S["view-group"], children: [
1581
+ /* @__PURE__ */ e("span", { className: S["view-label"], children: "Titel" }),
1582
+ /* @__PURE__ */ e("h3", { className: S["view-task-title"], children: o.title })
1290
1583
  ] }),
1291
- _ === "view" ? /* @__PURE__ */ c("div", { className: d["modal-body"], children: [
1292
- /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1293
- /* @__PURE__ */ e("span", { className: d["view-label"], children: "Titel" }),
1294
- /* @__PURE__ */ e("h3", { className: d["view-task-title"], children: o.title })
1584
+ /* @__PURE__ */ m("div", { className: S["view-badge-row"], children: [
1585
+ /* @__PURE__ */ m("div", { className: S["view-group"], children: [
1586
+ /* @__PURE__ */ e("span", { className: S["view-label"], children: "Verantwortlich" }),
1587
+ o.assignees.length > 0 ? /* @__PURE__ */ e(Te, { children: o.assignees.map((_, N) => /* @__PURE__ */ e(ce, { initials: _.initials, name: _.name }, N)) }) : /* @__PURE__ */ e(ce, { initials: "?", name: "Nicht zugewiesen" })
1295
1588
  ] }),
1296
- /* @__PURE__ */ c("div", { className: d["view-badge-row"], children: [
1297
- /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1298
- /* @__PURE__ */ e("span", { className: d["view-label"], children: "Verantwortlich" }),
1299
- o.assignees.length > 0 ? /* @__PURE__ */ e(de, { children: o.assignees.map((s, N) => /* @__PURE__ */ e(V, { initials: s.initials, name: s.name }, N)) }) : /* @__PURE__ */ e(V, { initials: "?", name: "Nicht zugewiesen" })
1300
- ] }),
1301
- /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1302
- /* @__PURE__ */ e("span", { className: d["view-label"], children: "Projekt" }),
1303
- /* @__PURE__ */ c(ie, { children: [
1304
- /* @__PURE__ */ e("svg", { className: d["icon-sm"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) }),
1305
- o.projectLabel || o.project
1306
- ] })
1307
- ] }),
1308
- /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1309
- /* @__PURE__ */ e("span", { className: d["view-label"], children: "Priorität" }),
1310
- o.priority ? /* @__PURE__ */ e(_e, { level: o.priority, size: "large" }) : /* @__PURE__ */ e("div", { className: d["text-muted"], children: "Keine" })
1311
- ] }),
1312
- /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1313
- /* @__PURE__ */ e("span", { className: d["view-label"], children: "Status" }),
1314
- /* @__PURE__ */ e(ie, { children: o.status })
1315
- ] }),
1316
- /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1317
- /* @__PURE__ */ e("span", { className: d["view-label"], children: "Fälligkeit" }),
1318
- /* @__PURE__ */ e("div", { className: d["view-value-strong"], children: o.deadline })
1589
+ /* @__PURE__ */ m("div", { className: S["view-group"], children: [
1590
+ /* @__PURE__ */ e("span", { className: S["view-label"], children: "Projekt" }),
1591
+ /* @__PURE__ */ m(Ie, { children: [
1592
+ /* @__PURE__ */ e("svg", { className: S["icon-sm"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) }),
1593
+ o.projectLabel || o.project
1319
1594
  ] })
1320
1595
  ] }),
1321
- /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1322
- /* @__PURE__ */ e("span", { className: d["view-label"], children: "Beschreibung" }),
1323
- /* @__PURE__ */ e("p", { className: d["view-description"], children: o.description || /* @__PURE__ */ e("span", { className: d["text-muted"], children: "Keine Beschreibung vorhanden." }) })
1596
+ /* @__PURE__ */ m("div", { className: S["view-group"], children: [
1597
+ /* @__PURE__ */ e("span", { className: S["view-label"], children: "Priorität" }),
1598
+ o.priority ? /* @__PURE__ */ e(Pe, { level: o.priority, size: "large" }) : /* @__PURE__ */ e("div", { className: S["text-muted"], children: "Keine" })
1324
1599
  ] }),
1325
- /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1326
- /* @__PURE__ */ e("span", { className: d["view-label"], children: "To-Do Checkliste" }),
1327
- /* @__PURE__ */ e(re, { items: o.checklist, onChange: f, editable: !1 })
1328
- ] })
1329
- ] }) : /* @__PURE__ */ c("div", { className: d["modal-body"], children: [
1330
- /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1331
- /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskTitle", children: "Titel" }),
1332
- /* @__PURE__ */ e(
1333
- "input",
1334
- {
1335
- type: "text",
1336
- id: "taskTitle",
1337
- className: d["form-control"],
1338
- value: o.title,
1339
- onChange: (s) => w({ ...o, title: s.target.value })
1340
- }
1341
- )
1600
+ /* @__PURE__ */ m("div", { className: S["view-group"], children: [
1601
+ /* @__PURE__ */ e("span", { className: S["view-label"], children: "Status" }),
1602
+ /* @__PURE__ */ e(Ie, { children: o.status })
1342
1603
  ] }),
1343
- /* @__PURE__ */ c("div", { className: d["form-row"], children: [
1344
- /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1345
- /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskProject", children: "Projekt" }),
1346
- /* @__PURE__ */ e(
1347
- "select",
1348
- {
1349
- id: "taskProject",
1350
- className: d["form-control"],
1351
- value: o.project,
1352
- onChange: k,
1353
- children: ge.map((s) => /* @__PURE__ */ e("option", { value: s.value, children: s.label }, s.value))
1354
- }
1355
- )
1356
- ] }),
1357
- /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1358
- /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskStatus", children: "Status" }),
1359
- /* @__PURE__ */ c(
1360
- "select",
1361
- {
1362
- id: "taskStatus",
1363
- className: d["form-control"],
1364
- value: o.status,
1365
- onChange: (s) => w({ ...o, status: s.target.value }),
1366
- children: [
1367
- /* @__PURE__ */ e("option", { value: "Offen", children: "Offen" }),
1368
- /* @__PURE__ */ e("option", { value: "In Arbeit", children: "In Arbeit" }),
1369
- /* @__PURE__ */ e("option", { value: "Erledigt", children: "Erledigt" })
1370
- ]
1371
- }
1372
- )
1373
- ] })
1374
- ] }),
1375
- /* @__PURE__ */ c("div", { className: d["form-row"], children: [
1376
- /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1377
- /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskDate", children: "Fälligkeitsdatum" }),
1378
- /* @__PURE__ */ e(
1379
- "input",
1380
- {
1381
- type: "text",
1382
- id: "taskDate",
1383
- className: d["form-control"],
1384
- value: o.deadline,
1385
- onChange: (s) => w({ ...o, deadline: s.target.value })
1386
- }
1387
- )
1388
- ] }),
1389
- /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1390
- /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskPriority", children: "Priorität" }),
1391
- /* @__PURE__ */ c(
1392
- "select",
1393
- {
1394
- id: "taskPriority",
1395
- className: d["form-control"],
1396
- value: o.priority || "",
1397
- onChange: (s) => w({ ...o, priority: s.target.value || void 0 }),
1398
- children: [
1399
- /* @__PURE__ */ e("option", { value: "", children: "Keine" }),
1400
- /* @__PURE__ */ e("option", { value: "high", children: "Hoch (!!)" }),
1401
- /* @__PURE__ */ e("option", { value: "medium", children: "Medium (!)" }),
1402
- /* @__PURE__ */ e("option", { value: "low", children: "Niedrig" })
1403
- ]
1404
- }
1405
- )
1406
- ] })
1407
- ] }),
1408
- /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1409
- /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskAssignee", children: "Verantwortlich" }),
1410
- /* @__PURE__ */ c("div", { style: { display: "flex", alignItems: "center", gap: "0.75rem" }, children: [
1411
- /* @__PURE__ */ e(V, { initials: o.assignees[0]?.initials || "?" }),
1412
- /* @__PURE__ */ e(
1413
- "select",
1414
- {
1415
- id: "taskAssignee",
1416
- className: d["form-control"],
1417
- style: { flex: 1 },
1418
- value: o.assignees[0]?.initials.toLowerCase() || "",
1419
- onChange: v,
1420
- children: be.map((s) => /* @__PURE__ */ e("option", { value: s.initials.toLowerCase(), children: s.name }, s.initials))
1421
- }
1422
- )
1423
- ] })
1424
- ] }),
1425
- /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1426
- /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskDescription", children: "Beschreibung" }),
1427
- /* @__PURE__ */ e(
1428
- "textarea",
1429
- {
1430
- id: "taskDescription",
1431
- className: g(d["form-control"], d.textarea),
1432
- placeholder: "Weitere Details zur Aufgabe...",
1433
- value: o.description || "",
1434
- onChange: (s) => w({ ...o, description: s.target.value })
1435
- }
1436
- )
1437
- ] }),
1438
- /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1439
- /* @__PURE__ */ e("label", { className: d["form-label"], children: "To-Do Checkliste" }),
1440
- /* @__PURE__ */ e(re, { items: o.checklist, onChange: f, editable: !0 }),
1441
- /* @__PURE__ */ e(
1442
- R,
1443
- {
1444
- variant: "ghost",
1445
- onClick: y,
1446
- style: { alignSelf: "flex-start", marginTop: "0.25rem" },
1447
- children: "+ Neues Element"
1448
- }
1449
- )
1604
+ /* @__PURE__ */ m("div", { className: S["view-group"], children: [
1605
+ /* @__PURE__ */ e("span", { className: S["view-label"], children: "Fälligkeit" }),
1606
+ /* @__PURE__ */ e("div", { className: S["view-value-strong"], children: o.deadline })
1450
1607
  ] })
1451
1608
  ] }),
1452
- _ === "view" ? /* @__PURE__ */ c("footer", { className: d["modal-footer"], children: [
1453
- /* @__PURE__ */ e(R, { variant: "outline", onClick: C, children: "Schließen" }),
1454
- /* @__PURE__ */ c(R, { variant: "primary", onClick: () => m("edit"), children: [
1455
- /* @__PURE__ */ e("svg", { className: d["icon-pencil"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" }) }),
1456
- "Bearbeiten"
1457
- ] })
1458
- ] }) : /* @__PURE__ */ c("footer", { className: d["modal-footer"], children: [
1459
- /* @__PURE__ */ e(R, { variant: "outline", onClick: () => m("view"), children: "Abbrechen" }),
1460
- /* @__PURE__ */ e(R, { variant: "primary", onClick: x, children: "Speichern" })
1609
+ /* @__PURE__ */ m("div", { className: S["view-group"], children: [
1610
+ /* @__PURE__ */ e("span", { className: S["view-label"], children: "Beschreibung" }),
1611
+ /* @__PURE__ */ e("p", { className: S["view-description"], children: o.description || /* @__PURE__ */ e("span", { className: S["text-muted"], children: "Keine Beschreibung vorhanden." }) })
1612
+ ] }),
1613
+ /* @__PURE__ */ m("div", { className: S["view-group"], children: [
1614
+ /* @__PURE__ */ e("span", { className: S["view-label"], children: "To-Do Checkliste" }),
1615
+ /* @__PURE__ */ e(Le, { items: o.checklist, onChange: w, editable: !1 })
1616
+ ] })
1617
+ ] }) : /* @__PURE__ */ m(Q, { children: [
1618
+ /* @__PURE__ */ e(z, { label: "Titel", htmlFor: "taskTitle", children: /* @__PURE__ */ e(
1619
+ Re,
1620
+ {
1621
+ id: "taskTitle",
1622
+ value: o.title,
1623
+ onChange: (_) => f({ ...o, title: _ })
1624
+ }
1625
+ ) }),
1626
+ /* @__PURE__ */ m("div", { className: S["form-row"], children: [
1627
+ /* @__PURE__ */ e(z, { label: "Projekt", htmlFor: "taskProject", children: /* @__PURE__ */ e(
1628
+ re,
1629
+ {
1630
+ id: "taskProject",
1631
+ options: Qe,
1632
+ value: o.project,
1633
+ onChange: p
1634
+ }
1635
+ ) }),
1636
+ /* @__PURE__ */ e(z, { label: "Status", htmlFor: "taskStatus", children: /* @__PURE__ */ e(
1637
+ re,
1638
+ {
1639
+ id: "taskStatus",
1640
+ options: En,
1641
+ value: o.status,
1642
+ onChange: (_) => f({ ...o, status: _ })
1643
+ }
1644
+ ) })
1645
+ ] }),
1646
+ /* @__PURE__ */ m("div", { className: S["form-row"], children: [
1647
+ /* @__PURE__ */ e(z, { label: "Fälligkeitsdatum", htmlFor: "taskDate", children: /* @__PURE__ */ e(
1648
+ Re,
1649
+ {
1650
+ id: "taskDate",
1651
+ value: o.deadline,
1652
+ onChange: (_) => f({ ...o, deadline: _ })
1653
+ }
1654
+ ) }),
1655
+ /* @__PURE__ */ e(z, { label: "Priorität", htmlFor: "taskPriority", children: /* @__PURE__ */ e(
1656
+ re,
1657
+ {
1658
+ id: "taskPriority",
1659
+ options: On,
1660
+ value: o.priority || "",
1661
+ onChange: (_) => f({ ...o, priority: _ || void 0 })
1662
+ }
1663
+ ) })
1664
+ ] }),
1665
+ /* @__PURE__ */ e(z, { label: "Verantwortlich", htmlFor: "taskAssignee", children: /* @__PURE__ */ m("div", { className: S["assignee-row"], children: [
1666
+ /* @__PURE__ */ e(ce, { initials: o.assignees[0]?.initials || "?" }),
1667
+ /* @__PURE__ */ e(
1668
+ re,
1669
+ {
1670
+ id: "taskAssignee",
1671
+ options: Mn,
1672
+ value: o.assignees[0]?.initials.toLowerCase() || "",
1673
+ onChange: y,
1674
+ className: S["assignee-select"]
1675
+ }
1676
+ )
1677
+ ] }) }),
1678
+ /* @__PURE__ */ e(z, { label: "Beschreibung", htmlFor: "taskDescription", children: /* @__PURE__ */ e(
1679
+ dt,
1680
+ {
1681
+ id: "taskDescription",
1682
+ placeholder: "Weitere Details zur Aufgabe...",
1683
+ value: o.description || "",
1684
+ onChange: (_) => f({ ...o, description: _ })
1685
+ }
1686
+ ) }),
1687
+ /* @__PURE__ */ m(z, { label: "To-Do Checkliste", children: [
1688
+ /* @__PURE__ */ e(Le, { items: o.checklist, onChange: w, editable: !0 }),
1689
+ /* @__PURE__ */ e(
1690
+ W,
1691
+ {
1692
+ variant: "ghost",
1693
+ onClick: h,
1694
+ className: S["add-checklist-btn"],
1695
+ children: "+ Neues Element"
1696
+ }
1697
+ )
1461
1698
  ] })
1462
1699
  ] })
1463
1700
  }
1464
1701
  );
1465
1702
  }
1466
1703
  );
1467
- $e.displayName = "TaskDetailModal";
1468
- const va = "_icon_1rthp_4", fe = {
1469
- icon: va,
1704
+ mt.displayName = "TaskDetailModal";
1705
+ const zn = "_icon_1rthp_4", Ye = {
1706
+ icon: zn,
1470
1707
  "icon-sm": "_icon-sm_1rthp_14"
1471
- }, ga = p.forwardRef(
1472
- ({ tasks: t, onTaskUpdate: a, onTaskAdd: n, className: r, ...i }, u) => {
1473
- const [l, h] = A(t), [_, m] = A(!1), [o, w] = A(null), [x, C] = A("view"), f = (b) => {
1474
- w(b), C("view"), m(!0);
1475
- }, k = () => {
1476
- const b = {
1708
+ }, qn = g.forwardRef(
1709
+ ({ tasks: a, onTaskUpdate: n, onTaskAdd: t, className: r, ...l }, c) => {
1710
+ const [s, d] = E(a), [i, u] = E(!1), [o, f] = E(null), [v, w] = E("view"), p = (k) => {
1711
+ f(k), w("view"), u(!0);
1712
+ }, y = () => {
1713
+ const k = {
1477
1714
  id: `new-${Date.now()}`,
1478
1715
  title: "Neue Aufgabe",
1479
1716
  project: "Q1",
@@ -1485,64 +1722,64 @@ const va = "_icon_1rthp_4", fe = {
1485
1722
  description: "",
1486
1723
  checklist: []
1487
1724
  };
1488
- w(b), C("edit"), m(!0);
1489
- }, v = (b) => {
1490
- if (l.some((N) => N.id === b.id)) {
1491
- const N = l.map((I) => I.id === b.id ? b : I);
1492
- h(N), a && a(b);
1725
+ f(k), w("edit"), u(!0);
1726
+ }, h = (k) => {
1727
+ if (s.some((N) => N.id === k.id)) {
1728
+ const N = s.map((I) => I.id === k.id ? k : I);
1729
+ d(N), n && n(k);
1493
1730
  } else
1494
- h([...l, b]), n && n(b);
1495
- w(b);
1496
- }, y = (b, s) => {
1497
- const N = l.map((I) => {
1498
- if (I.id === b) {
1499
- const L = { ...I, status: s };
1500
- return a && a(L), L;
1731
+ d([...s, k]), t && t(k);
1732
+ f(k);
1733
+ }, x = (k, _) => {
1734
+ const N = s.map((I) => {
1735
+ if (I.id === k) {
1736
+ const A = { ...I, status: _ };
1737
+ return n && n(A), A;
1501
1738
  }
1502
1739
  return I;
1503
1740
  });
1504
- h(N);
1741
+ d(N);
1505
1742
  };
1506
- return /* @__PURE__ */ c(
1507
- U,
1743
+ return /* @__PURE__ */ m(
1744
+ fe,
1508
1745
  {
1509
- ref: u,
1746
+ ref: c,
1510
1747
  as: "main",
1511
1748
  title: "Aufgaben",
1512
1749
  variant: "half",
1513
1750
  scrollable: !0,
1514
- headerAction: /* @__PURE__ */ c(R, { variant: "primary", onClick: k, "aria-label": "Neue Aufgabe erstellen", children: [
1515
- /* @__PURE__ */ e("svg", { className: g(fe.icon, fe["icon-sm"]), viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M12 5v14M5 12h14" }) }),
1751
+ headerAction: /* @__PURE__ */ m(W, { variant: "primary", onClick: y, "aria-label": "Neue Aufgabe erstellen", children: [
1752
+ /* @__PURE__ */ e("svg", { className: b(Ye.icon, Ye["icon-sm"]), viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M12 5v14M5 12h14" }) }),
1516
1753
  "Neu"
1517
1754
  ] }),
1518
1755
  className: r,
1519
- ...i,
1756
+ ...l,
1520
1757
  children: [
1521
- /* @__PURE__ */ e(ce, { "aria-label": "Aufgabenliste", children: l.map((b) => /* @__PURE__ */ e(
1522
- je,
1758
+ /* @__PURE__ */ e(ge, { "aria-label": "Aufgabenliste", children: s.map((k) => /* @__PURE__ */ e(
1759
+ ut,
1523
1760
  {
1524
- title: b.title,
1525
- project: b.project,
1526
- projectLabel: b.projectLabel,
1527
- status: b.status,
1528
- deadline: b.deadline,
1529
- deadlineType: b.deadlineType,
1530
- priority: b.priority,
1531
- assignees: b.assignees,
1532
- description: b.description,
1533
- onClick: () => f(b),
1534
- onStatusChange: (s) => y(b.id, s)
1761
+ title: k.title,
1762
+ project: k.project,
1763
+ projectLabel: k.projectLabel,
1764
+ status: k.status,
1765
+ deadline: k.deadline,
1766
+ deadlineType: k.deadlineType,
1767
+ priority: k.priority,
1768
+ assignees: k.assignees,
1769
+ description: k.description,
1770
+ onClick: () => p(k),
1771
+ onStatusChange: (_) => x(k.id, _)
1535
1772
  },
1536
- b.id
1773
+ k.id
1537
1774
  )) }),
1538
1775
  /* @__PURE__ */ e(
1539
- $e,
1776
+ mt,
1540
1777
  {
1541
- isOpen: _,
1542
- onClose: () => m(!1),
1778
+ isOpen: i,
1779
+ onClose: () => u(!1),
1543
1780
  task: o,
1544
- initialMode: x,
1545
- onSave: v
1781
+ initialMode: v,
1782
+ onSave: h
1546
1783
  }
1547
1784
  )
1548
1785
  ]
@@ -1550,33 +1787,1114 @@ const va = "_icon_1rthp_4", fe = {
1550
1787
  );
1551
1788
  }
1552
1789
  );
1553
- ga.displayName = "TaskWidget";
1790
+ qn.displayName = "TaskWidget";
1791
+ const Wn = "_page_1c5lq_3", Vn = {
1792
+ page: Wn
1793
+ }, Gn = "_domainSwitcher_abrin_3", Hn = "_domainSwitcher__label_abrin_11", Xe = {
1794
+ domainSwitcher: Gn,
1795
+ domainSwitcher__label: Hn
1796
+ }, pt = g.forwardRef(
1797
+ ({ sources: a, activeSourceKey: n, onSourceChange: t, className: r }, l) => {
1798
+ const c = a.map((s) => ({
1799
+ value: s.key,
1800
+ label: s.label
1801
+ }));
1802
+ return /* @__PURE__ */ m("div", { ref: l, className: b(Xe.domainSwitcher, r), children: [
1803
+ /* @__PURE__ */ e("span", { className: Xe.domainSwitcher__label, children: "Datenquelle" }),
1804
+ /* @__PURE__ */ e(
1805
+ Me,
1806
+ {
1807
+ options: c,
1808
+ value: n,
1809
+ onChange: t,
1810
+ role: "radiogroup",
1811
+ "aria-label": "Datenquelle wechseln"
1812
+ }
1813
+ )
1814
+ ] });
1815
+ }
1816
+ );
1817
+ pt.displayName = "DomainSwitcher";
1818
+ const Un = "_dataGrid_1teg2_3", Kn = "_dataGrid__viewPanel_1teg2_11", Qn = "_resultCount_1teg2_15", Yn = "_resultCount__number_1teg2_24", be = {
1819
+ dataGrid: Un,
1820
+ dataGrid__viewPanel: Kn,
1821
+ resultCount: Qn,
1822
+ resultCount__number: Yn
1823
+ }, Xn = "_toolbar_1vf8q_3", Jn = "_toolbar__row_1vf8q_11", Zn = "_toolbar__left_1vf8q_26", er = "_toolbar__right_1vf8q_33", tr = "_settingsBtn_1vf8q_40", ar = "_settingsBtn__icon_1vf8q_67", nr = "_filterMore_1vf8q_73", rr = "_filterMore__btn_1vf8q_79", sr = "_filterMore__badge_1vf8q_104", B = {
1824
+ toolbar: Xn,
1825
+ toolbar__row: Jn,
1826
+ "toolbar__row--filters": "_toolbar__row--filters_1vf8q_20",
1827
+ toolbar__left: Zn,
1828
+ toolbar__right: er,
1829
+ settingsBtn: tr,
1830
+ settingsBtn__icon: ar,
1831
+ filterMore: nr,
1832
+ filterMore__btn: rr,
1833
+ filterMore__badge: sr
1834
+ }, lr = /* @__PURE__ */ m("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
1835
+ /* @__PURE__ */ e("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2" }),
1836
+ /* @__PURE__ */ e("line", { x1: "3", y1: "9", x2: "21", y2: "9" }),
1837
+ /* @__PURE__ */ e("line", { x1: "3", y1: "15", x2: "21", y2: "15" }),
1838
+ /* @__PURE__ */ e("line", { x1: "9", y1: "3", x2: "9", y2: "21" }),
1839
+ /* @__PURE__ */ e("line", { x1: "15", y1: "3", x2: "15", y2: "21" })
1840
+ ] }), ir = /* @__PURE__ */ m("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
1841
+ /* @__PURE__ */ e("line", { x1: "8", y1: "6", x2: "21", y2: "6" }),
1842
+ /* @__PURE__ */ e("line", { x1: "8", y1: "12", x2: "21", y2: "12" }),
1843
+ /* @__PURE__ */ e("line", { x1: "8", y1: "18", x2: "21", y2: "18" }),
1844
+ /* @__PURE__ */ e("line", { x1: "3", y1: "6", x2: "3.01", y2: "6" }),
1845
+ /* @__PURE__ */ e("line", { x1: "3", y1: "12", x2: "3.01", y2: "12" }),
1846
+ /* @__PURE__ */ e("line", { x1: "3", y1: "18", x2: "3.01", y2: "18" })
1847
+ ] }), or = /* @__PURE__ */ m("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
1848
+ /* @__PURE__ */ e("rect", { x: "3", y: "3", width: "7", height: "7", rx: "1" }),
1849
+ /* @__PURE__ */ e("rect", { x: "14", y: "3", width: "7", height: "7", rx: "1" }),
1850
+ /* @__PURE__ */ e("rect", { x: "3", y: "14", width: "7", height: "7", rx: "1" }),
1851
+ /* @__PURE__ */ e("rect", { x: "14", y: "14", width: "7", height: "7", rx: "1" })
1852
+ ] }), cr = [
1853
+ { value: "table", label: "Tabelle", icon: lr },
1854
+ { value: "list", label: "Liste", icon: ir },
1855
+ { value: "cards", label: "Karten", icon: or }
1856
+ ], ft = g.forwardRef(
1857
+ ({
1858
+ currentView: a,
1859
+ onViewChange: n,
1860
+ searchQuery: t,
1861
+ onSearchChange: r,
1862
+ columns: l,
1863
+ filters: c,
1864
+ filterOptions: s,
1865
+ onFilterChange: d,
1866
+ onSettingsClick: i,
1867
+ settingsExpanded: u = !1,
1868
+ onMoreFiltersClick: o,
1869
+ moreFiltersExpanded: f = !1,
1870
+ activeSecondaryFilterCount: v = 0,
1871
+ className: w
1872
+ }, p) => {
1873
+ const y = l.filter(
1874
+ ([, h]) => h.filterable && h.primaryFilter && h.visible
1875
+ );
1876
+ return /* @__PURE__ */ m("div", { ref: p, className: b(B.toolbar, w), role: "toolbar", "aria-label": "DataGrid Steuerung", children: [
1877
+ /* @__PURE__ */ m("div", { className: B.toolbar__row, children: [
1878
+ /* @__PURE__ */ e("div", { className: B.toolbar__left, children: /* @__PURE__ */ e(
1879
+ Me,
1880
+ {
1881
+ options: cr,
1882
+ value: a,
1883
+ onChange: (h) => n?.(h),
1884
+ role: "tablist",
1885
+ "aria-label": "Ansicht wechseln"
1886
+ }
1887
+ ) }),
1888
+ /* @__PURE__ */ e("div", { className: B.toolbar__right, children: /* @__PURE__ */ m(
1889
+ "button",
1890
+ {
1891
+ className: B.settingsBtn,
1892
+ "aria-label": "Datenfelder konfigurieren",
1893
+ "aria-haspopup": "true",
1894
+ "aria-expanded": u,
1895
+ onClick: i,
1896
+ children: [
1897
+ /* @__PURE__ */ m("svg", { className: B.settingsBtn__icon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
1898
+ /* @__PURE__ */ e("circle", { cx: "12", cy: "12", r: "3" }),
1899
+ /* @__PURE__ */ e("path", { d: "M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z" })
1900
+ ] }),
1901
+ "Konfigurieren"
1902
+ ]
1903
+ }
1904
+ ) })
1905
+ ] }),
1906
+ /* @__PURE__ */ m("div", { className: b(B.toolbar__row, B["toolbar__row--filters"]), children: [
1907
+ /* @__PURE__ */ m("div", { className: B.toolbar__left, children: [
1908
+ y.map(([h, x]) => {
1909
+ const k = s[h] || [], _ = c[h];
1910
+ return /* @__PURE__ */ e(
1911
+ ot,
1912
+ {
1913
+ label: x.label,
1914
+ options: k,
1915
+ value: _,
1916
+ onChange: (N) => d?.(h, N),
1917
+ dataFilter: h
1918
+ },
1919
+ h
1920
+ );
1921
+ }),
1922
+ /* @__PURE__ */ e("div", { className: B.filterMore, children: /* @__PURE__ */ m(
1923
+ "button",
1924
+ {
1925
+ className: B.filterMore__btn,
1926
+ "aria-label": "Weitere Filter anzeigen",
1927
+ "aria-haspopup": "true",
1928
+ "aria-expanded": f,
1929
+ onClick: o,
1930
+ children: [
1931
+ "+ mehr Filter",
1932
+ v > 0 && /* @__PURE__ */ e("span", { className: B.filterMore__badge, children: v })
1933
+ ]
1934
+ }
1935
+ ) })
1936
+ ] }),
1937
+ /* @__PURE__ */ e("div", { className: B.toolbar__right, children: /* @__PURE__ */ e(
1938
+ Ee,
1939
+ {
1940
+ value: t,
1941
+ onChange: r,
1942
+ "aria-label": "Daten durchsuchen"
1943
+ }
1944
+ ) })
1945
+ ] })
1946
+ ] });
1947
+ }
1948
+ );
1949
+ ft.displayName = "Toolbar";
1950
+ const dr = "_expansionDrawer_1bj98_4", _r = "_expansionDrawer__cell_1bj98_12", ur = "_expansionDrawer__content_1bj98_18", hr = "_expansionDrawer__title_1bj98_22", mr = "_crossSellTable_1bj98_32", pr = "_quickAddBtn_1bj98_61", fr = "_quickAddBtn__icon_1bj98_90", K = {
1951
+ expansionDrawer: dr,
1952
+ "expansionDrawer--open": "_expansionDrawer--open_1bj98_8",
1953
+ expansionDrawer__cell: _r,
1954
+ expansionDrawer__content: ur,
1955
+ expansionDrawer__title: hr,
1956
+ crossSellTable: mr,
1957
+ quickAddBtn: pr,
1958
+ quickAddBtn__icon: fr
1959
+ }, br = "_cellDouble_1y1lm_4", gr = "_cellDouble__primary_1y1lm_11", vr = "_cellDouble__secondary_1y1lm_22", yr = "_cellLink_1y1lm_31", wr = "_cellPrice_1y1lm_45", kr = "_cellPrice__currency_1y1lm_53", Nr = "_inventoryBadge_1y1lm_60", xr = "_inventoryBadge__indicator_1y1lm_81", Cr = "_statusBadge_1y1lm_100", Sr = "_statusBadge__dot_1y1lm_112", T = {
1960
+ cellDouble: br,
1961
+ cellDouble__primary: gr,
1962
+ cellDouble__secondary: vr,
1963
+ cellLink: yr,
1964
+ cellPrice: wr,
1965
+ cellPrice__currency: kr,
1966
+ inventoryBadge: Nr,
1967
+ "inventoryBadge--high": "_inventoryBadge--high_1y1lm_69",
1968
+ "inventoryBadge--medium": "_inventoryBadge--medium_1y1lm_73",
1969
+ "inventoryBadge--low": "_inventoryBadge--low_1y1lm_77",
1970
+ inventoryBadge__indicator: xr,
1971
+ statusBadge: Cr,
1972
+ statusBadge__dot: Sr,
1973
+ "statusBadge--active": "_statusBadge--active_1y1lm_119",
1974
+ "statusBadge--nrnd": "_statusBadge--nrnd_1y1lm_128",
1975
+ "statusBadge--eol": "_statusBadge--eol_1y1lm_137",
1976
+ "statusBadge--production": "_statusBadge--production_1y1lm_146",
1977
+ "statusBadge--neu": "_statusBadge--neu_1y1lm_156",
1978
+ "statusBadge--offen": "_statusBadge--offen_1y1lm_165",
1979
+ "statusBadge--in-prufung": "_statusBadge--in-prufung_1y1lm_174",
1980
+ "statusBadge--validierung": "_statusBadge--validierung_1y1lm_183",
1981
+ "statusBadge--abgeschlossen": "_statusBadge--abgeschlossen_1y1lm_192"
1982
+ }, bt = g.forwardRef(
1983
+ ({ primary: a, secondary: n, className: t }, r) => /* @__PURE__ */ m("div", { ref: r, className: b(T.cellDouble, t), children: [
1984
+ /* @__PURE__ */ e("span", { className: T.cellDouble__primary, children: a }),
1985
+ n && /* @__PURE__ */ e("span", { className: T.cellDouble__secondary, children: n })
1986
+ ] })
1987
+ );
1988
+ bt.displayName = "CellDouble";
1989
+ const gt = g.forwardRef(
1990
+ ({ href: a = "#", children: n, className: t }, r) => /* @__PURE__ */ e("a", { ref: r, href: a, className: b(T.cellLink, t), title: typeof n == "string" ? n : void 0, children: n })
1991
+ );
1992
+ gt.displayName = "CellLink";
1993
+ function Dr(a) {
1994
+ return a.toFixed(2).replace(".", ",");
1995
+ }
1996
+ const vt = g.forwardRef(
1997
+ ({ value: a, currency: n, className: t }, r) => /* @__PURE__ */ m("span", { ref: r, className: b(T.cellPrice, t), children: [
1998
+ Dr(a),
1999
+ n && /* @__PURE__ */ e("span", { className: T.cellPrice__currency, children: n })
2000
+ ] })
2001
+ );
2002
+ vt.displayName = "CellPrice";
2003
+ const $e = g.forwardRef(
2004
+ ({ level: a, children: n, className: t }, r) => /* @__PURE__ */ m("span", { ref: r, className: b(T.inventoryBadge, T[`inventoryBadge--${a}`], t), children: [
2005
+ /* @__PURE__ */ e("span", { className: T.inventoryBadge__indicator, "aria-hidden": "true" }),
2006
+ n
2007
+ ] })
2008
+ );
2009
+ $e.displayName = "InventoryBadge";
2010
+ const yt = g.forwardRef(
2011
+ ({ status: a, statusClass: n, className: t }, r) => {
2012
+ const l = n || a.toLowerCase().replace(/\s+/g, "-");
2013
+ return /* @__PURE__ */ m("span", { ref: r, className: b(T.statusBadge, T[`statusBadge--${l}`], t), children: [
2014
+ /* @__PURE__ */ e("span", { className: T.statusBadge__dot, "aria-hidden": "true" }),
2015
+ a
2016
+ ] });
2017
+ }
2018
+ );
2019
+ yt.displayName = "LifecycleStatusBadge";
2020
+ function Ir(a, n, t, r, l, c, s) {
2021
+ const d = t[a];
2022
+ switch (n.type) {
2023
+ case "text":
2024
+ return /* @__PURE__ */ e("span", { children: d ?? "" });
2025
+ case "double-text": {
2026
+ const i = n.secondary ? t[n.secondary] ?? "" : "";
2027
+ return /* @__PURE__ */ e(bt, { primary: d ?? "", secondary: i });
2028
+ }
2029
+ case "link":
2030
+ return /* @__PURE__ */ e(gt, { children: d ?? "" });
2031
+ case "status-badge": {
2032
+ const i = n.statusMap || {}, u = d, o = i[u] || u.toLowerCase().replace(/\s+/g, "-");
2033
+ return /* @__PURE__ */ e(yt, { status: u, statusClass: o });
2034
+ }
2035
+ case "currency": {
2036
+ const i = n.currencyField ? t[n.currencyField] ?? "" : "";
2037
+ return /* @__PURE__ */ e(vt, { value: d, currency: i });
2038
+ }
2039
+ case "inventory": {
2040
+ const u = (n.levelFn || (() => "medium"))(d), o = n.formatFn ? n.formatFn(d) : String(d);
2041
+ return /* @__PURE__ */ e($e, { level: u, children: o });
2042
+ }
2043
+ case "inventory-label": {
2044
+ const u = (n.levelFn || (() => "medium"))(d), o = n.labelMap || { high: "Hoch", medium: "Mittel", low: "Niedrig" };
2045
+ return /* @__PURE__ */ e($e, { level: u, children: o[u] });
2046
+ }
2047
+ case "progress":
2048
+ return /* @__PURE__ */ e(lt, { value: d });
2049
+ case "favorite": {
2050
+ const i = r.has(t.id);
2051
+ return /* @__PURE__ */ e(
2052
+ de,
2053
+ {
2054
+ pressed: i,
2055
+ projectName: t.id,
2056
+ size: "sm",
2057
+ onToggle: () => c?.(t.id),
2058
+ onClick: (u) => u.stopPropagation()
2059
+ }
2060
+ );
2061
+ }
2062
+ case "expand": {
2063
+ const i = d;
2064
+ if (!i || !Array.isArray(i) || i.length === 0)
2065
+ return /* @__PURE__ */ e("span", { style: { color: "var(--on-surface-variant)", fontSize: "0.75rem" }, children: "—" });
2066
+ const u = `${t.id}::${a}`, o = l.has(u), f = n.expandLabel || "Einträge";
2067
+ return /* @__PURE__ */ e(
2068
+ ve,
2069
+ {
2070
+ expanded: o,
2071
+ count: i.length,
2072
+ label: f,
2073
+ "aria-label": `${i.length} ${f} anzeigen`,
2074
+ onClick: () => s?.(u)
2075
+ }
2076
+ );
2077
+ }
2078
+ default:
2079
+ return /* @__PURE__ */ e("span", { children: String(d ?? "") });
2080
+ }
2081
+ }
2082
+ function Lr(a, n, t, r, l) {
2083
+ const c = a[n];
2084
+ if (!c || !Array.isArray(c) || c.length === 0) return null;
2085
+ const s = `${a.id}::${n}`, d = l.has(s), i = t.expandColumns || [], u = t.expandTitleFn ? t.expandTitleFn(a) : n;
2086
+ return /* @__PURE__ */ e(
2087
+ "tr",
2088
+ {
2089
+ className: b(K.expansionDrawer, { [K["expansionDrawer--open"]]: d }),
2090
+ "data-drawer-id": s,
2091
+ children: /* @__PURE__ */ e("td", { className: K.expansionDrawer__cell, colSpan: r, children: /* @__PURE__ */ m("div", { className: K.expansionDrawer__content, children: [
2092
+ /* @__PURE__ */ e("div", { className: K.expansionDrawer__title, children: u }),
2093
+ /* @__PURE__ */ m("table", { className: K.crossSellTable, "aria-label": u, children: [
2094
+ /* @__PURE__ */ e("thead", { children: /* @__PURE__ */ m("tr", { children: [
2095
+ i.map((o) => /* @__PURE__ */ e("th", { scope: "col", children: o.label }, o.key)),
2096
+ /* @__PURE__ */ e("th", { scope: "col" })
2097
+ ] }) }),
2098
+ /* @__PURE__ */ e("tbody", { children: c.map((o, f) => /* @__PURE__ */ m("tr", { children: [
2099
+ i.map((v) => {
2100
+ const w = o[v.key];
2101
+ return v.type === "score-bar" ? /* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(it, { value: w }) }, v.key) : v.bold ? /* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { style: { fontWeight: 500 }, children: w }) }, v.key) : v.muted ? /* @__PURE__ */ e("td", { children: /* @__PURE__ */ e("span", { style: { fontSize: "0.75rem", color: "var(--on-surface-variant)" }, children: w }) }, v.key) : /* @__PURE__ */ e("td", { children: w }, v.key);
2102
+ }),
2103
+ /* @__PURE__ */ e("td", { children: /* @__PURE__ */ m(
2104
+ "button",
2105
+ {
2106
+ className: K.quickAddBtn,
2107
+ "aria-label": `${o[i[0]?.key] || ""} hinzufügen`,
2108
+ children: [
2109
+ /* @__PURE__ */ m(
2110
+ "svg",
2111
+ {
2112
+ className: K.quickAddBtn__icon,
2113
+ viewBox: "0 0 24 24",
2114
+ fill: "none",
2115
+ stroke: "currentColor",
2116
+ strokeWidth: "2.5",
2117
+ "aria-hidden": "true",
2118
+ children: [
2119
+ /* @__PURE__ */ e("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
2120
+ /* @__PURE__ */ e("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
2121
+ ]
2122
+ }
2123
+ ),
2124
+ "Hinzufügen"
2125
+ ]
2126
+ }
2127
+ ) })
2128
+ ] }, f)) })
2129
+ ] })
2130
+ ] }) })
2131
+ },
2132
+ s
2133
+ );
2134
+ }
2135
+ const wt = g.forwardRef(
2136
+ ({
2137
+ rows: a,
2138
+ columns: n,
2139
+ sortColumn: t,
2140
+ sortDirection: r,
2141
+ onSort: l,
2142
+ expandedRows: c,
2143
+ onToggleExpand: s,
2144
+ favorites: d,
2145
+ onToggleFavorite: i,
2146
+ columnWidths: u = {},
2147
+ onColumnResize: o,
2148
+ className: f
2149
+ }, v) => {
2150
+ const w = n.filter(([, _]) => _.visible), p = w.filter(([, _]) => _.type === "expand"), y = w.length, h = w.map(([_, N]) => ({
2151
+ key: _,
2152
+ label: N.type === "favorite" ? void 0 : N.label,
2153
+ sortable: N.sortable,
2154
+ hideTablet: N.hideTablet,
2155
+ hideMobile: N.hideMobile,
2156
+ width: N.type === "favorite" ? 40 : void 0,
2157
+ headerContent: N.type === "favorite" ? /* @__PURE__ */ e("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: /* @__PURE__ */ e("polygon", { points: "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" }) }) : void 0
2158
+ }));
2159
+ return /* @__PURE__ */ e(
2160
+ Fe,
2161
+ {
2162
+ ref: v,
2163
+ columns: h,
2164
+ rows: a,
2165
+ rowKey: (_) => _.id,
2166
+ renderCell: (_, N) => {
2167
+ const I = w.find(([A]) => A === N.key)?.[1];
2168
+ return I ? Ir(N.key, I, _, d, c, i, s) : null;
2169
+ },
2170
+ sortColumn: t,
2171
+ sortDirection: r ?? void 0,
2172
+ onSort: l,
2173
+ resizable: !0,
2174
+ columnWidths: u,
2175
+ onColumnResize: o,
2176
+ renderExpandedRow: (_) => {
2177
+ if (p.length === 0) return null;
2178
+ const N = p.map(
2179
+ ([I, A]) => Lr(_, I, A, y, c)
2180
+ );
2181
+ return N.some(Boolean) ? /* @__PURE__ */ e(Q, { children: N }) : null;
2182
+ },
2183
+ rowAnimation: !0,
2184
+ rowDataAttributes: (_) => ({ "data-row-id": _.id }),
2185
+ ariaLabel: "Datentabelle",
2186
+ className: f
2187
+ }
2188
+ );
2189
+ }
2190
+ );
2191
+ wt.displayName = "DataTable";
2192
+ const Ar = "_listView_atiqa_3", Rr = "_listItem_atiqa_7", $r = "_title_atiqa_11", jr = "_meta_atiqa_20", Fr = "_metaDivider_atiqa_30", Br = "_badges_atiqa_34", Tr = "_price_atiqa_41", J = {
2193
+ listView: Ar,
2194
+ listItem: Rr,
2195
+ title: $r,
2196
+ meta: jr,
2197
+ metaDivider: Fr,
2198
+ badges: Br,
2199
+ price: Tr
2200
+ }, kt = g.forwardRef(
2201
+ ({
2202
+ rows: a,
2203
+ columns: n,
2204
+ visibleColumns: t,
2205
+ titleField: r,
2206
+ metaFields: l = [],
2207
+ badgeFields: c = [],
2208
+ valueField: s,
2209
+ expandField: d,
2210
+ favorites: i,
2211
+ onToggleFavorite: u,
2212
+ expandedRows: o,
2213
+ onToggleExpand: f,
2214
+ renderCell: v,
2215
+ className: w
2216
+ }, p) => {
2217
+ const y = Object.fromEntries(n);
2218
+ return /* @__PURE__ */ e(ge, { ref: p, className: b(J.listView, w), children: a.map((h) => {
2219
+ const x = i.has(h.id), k = h[r] ?? "", _ = l.filter((C) => !y[C] || t.has(C)), N = c.filter((C) => t.has(C)), I = /* @__PURE__ */ e(
2220
+ de,
2221
+ {
2222
+ pressed: x,
2223
+ projectName: h.id,
2224
+ size: "sm",
2225
+ onToggle: () => u?.(h.id),
2226
+ onClick: (C) => C.stopPropagation()
2227
+ }
2228
+ ), A = /* @__PURE__ */ m(Q, { children: [
2229
+ N.length > 0 && /* @__PURE__ */ e("div", { className: J.badges, children: N.map((C) => {
2230
+ const L = y[C];
2231
+ return !L || !v ? null : /* @__PURE__ */ e(g.Fragment, { children: v(C, L, h) }, C);
2232
+ }) }),
2233
+ s && t.has(s) && /* @__PURE__ */ e("div", { className: J.price, children: y[s] && v ? v(s, y[s], h) : String(h[s] ?? "") }),
2234
+ d && t.has(d) && (() => {
2235
+ const C = h[d];
2236
+ if (!C || !Array.isArray(C) || C.length === 0) return null;
2237
+ const R = y[d]?.expandLabel || "Einträge", D = `${h.id}::${d}`;
2238
+ return /* @__PURE__ */ e(
2239
+ ve,
2240
+ {
2241
+ expanded: o.has(D),
2242
+ count: C.length,
2243
+ "aria-label": `${C.length} ${R}`,
2244
+ onClick: () => f?.(D)
2245
+ }
2246
+ );
2247
+ })()
2248
+ ] });
2249
+ return /* @__PURE__ */ m(
2250
+ Be,
2251
+ {
2252
+ leading: I,
2253
+ trailing: A,
2254
+ className: J.listItem,
2255
+ "data-row-id": h.id,
2256
+ children: [
2257
+ /* @__PURE__ */ e("div", { className: J.title, children: k }),
2258
+ _.length > 0 && /* @__PURE__ */ e("div", { className: J.meta, children: _.map((C, L) => {
2259
+ const R = y[C], D = R && v ? v(C, R, h) : /* @__PURE__ */ e("span", { children: String(h[C] ?? "") });
2260
+ return /* @__PURE__ */ m(g.Fragment, { children: [
2261
+ /* @__PURE__ */ e("span", { children: D }),
2262
+ L < _.length - 1 && /* @__PURE__ */ e("span", { className: J.metaDivider, "aria-hidden": "true", children: "·" })
2263
+ ] }, C);
2264
+ }) })
2265
+ ]
2266
+ },
2267
+ h.id
2268
+ );
2269
+ }) });
2270
+ }
2271
+ );
2272
+ kt.displayName = "ListView";
2273
+ const Pr = "_cardGrid_h1jiq_3", Er = "_header_h1jiq_11", Or = "_title_h1jiq_17", Mr = "_subtitle_h1jiq_23", zr = "_badges_h1jiq_29", qr = "_row_h1jiq_35", Wr = "_label_h1jiq_41", Vr = "_value_h1jiq_48", Gr = "_footer_h1jiq_55", Hr = "_footerLink_h1jiq_63", M = {
2274
+ cardGrid: Pr,
2275
+ header: Er,
2276
+ title: Or,
2277
+ subtitle: Mr,
2278
+ badges: zr,
2279
+ row: qr,
2280
+ label: Wr,
2281
+ value: Vr,
2282
+ footer: Gr,
2283
+ footerLink: Hr
2284
+ }, Nt = g.forwardRef(
2285
+ ({
2286
+ rows: a,
2287
+ columns: n,
2288
+ visibleColumns: t,
2289
+ titleField: r,
2290
+ subtitleField: l,
2291
+ badgeFields: c = [],
2292
+ cardRows: s = [],
2293
+ footerField: d,
2294
+ expandField: i,
2295
+ favorites: u,
2296
+ onToggleFavorite: o,
2297
+ expandedRows: f,
2298
+ onToggleExpand: v,
2299
+ renderCell: w,
2300
+ className: p
2301
+ }, y) => {
2302
+ const h = Object.fromEntries(n), x = c.filter((_) => t.has(_)), k = s.filter((_) => t.has(_.field));
2303
+ return /* @__PURE__ */ e("div", { ref: y, className: b(M.cardGrid, p), children: a.map((_) => {
2304
+ const N = u.has(_.id), I = _[r] ?? "", A = !l || !h[l] || t.has(l), C = l && A ? _[l] ?? "" : "", L = !d || !h[d] || t.has(d), R = d && L ? _[d] ?? "" : "";
2305
+ return /* @__PURE__ */ m(et, { "data-row-id": _.id, children: [
2306
+ /* @__PURE__ */ m("div", { className: M.header, children: [
2307
+ /* @__PURE__ */ m("div", { children: [
2308
+ /* @__PURE__ */ e("div", { className: M.title, children: I }),
2309
+ C && /* @__PURE__ */ e("div", { className: M.subtitle, children: C })
2310
+ ] }),
2311
+ /* @__PURE__ */ e(
2312
+ de,
2313
+ {
2314
+ pressed: N,
2315
+ projectName: _.id,
2316
+ size: "sm",
2317
+ onToggle: () => o?.(_.id),
2318
+ onClick: (D) => D.stopPropagation()
2319
+ }
2320
+ )
2321
+ ] }),
2322
+ x.length > 0 && /* @__PURE__ */ e("div", { className: M.badges, children: x.map((D) => {
2323
+ const O = h[D];
2324
+ return !O || !w ? null : /* @__PURE__ */ e(g.Fragment, { children: w(D, O, _) }, D);
2325
+ }) }),
2326
+ k.map((D) => {
2327
+ const O = h[D.field];
2328
+ if (!O) return null;
2329
+ const q = w ? w(D.field, O, _) : String(_[D.field] ?? "");
2330
+ return /* @__PURE__ */ m("div", { className: M.row, children: [
2331
+ /* @__PURE__ */ e("span", { className: M.label, children: D.label }),
2332
+ /* @__PURE__ */ e("span", { className: M.value, children: q })
2333
+ ] }, D.field);
2334
+ }),
2335
+ (R || i && t.has(i)) && /* @__PURE__ */ m("div", { className: M.footer, children: [
2336
+ /* @__PURE__ */ e("span", { className: M.footerLink, children: R }),
2337
+ i && t.has(i) && (() => {
2338
+ const D = _[i];
2339
+ if (!D || !Array.isArray(D) || D.length === 0) return null;
2340
+ const q = h[i]?.expandLabel || "Einträge", _e = `${_.id}::${i}`;
2341
+ return /* @__PURE__ */ e(
2342
+ ve,
2343
+ {
2344
+ expanded: f.has(_e),
2345
+ count: D.length,
2346
+ "aria-label": `${D.length} ${q}`,
2347
+ onClick: () => v?.(_e)
2348
+ }
2349
+ );
2350
+ })()
2351
+ ] })
2352
+ ] }, _.id);
2353
+ }) });
2354
+ }
2355
+ );
2356
+ Nt.displayName = "CardView";
2357
+ const Ur = "_configPopover__title_1u5mf_3", Kr = "_configPopover__item_1u5mf_12", Qr = "_configPopover__dragHandle_1u5mf_38", Z = {
2358
+ configPopover__title: Ur,
2359
+ configPopover__item: Kr,
2360
+ configPopover__dragHandle: Qr
2361
+ }, xt = g.forwardRef(
2362
+ ({
2363
+ open: a,
2364
+ columns: n,
2365
+ columnOrder: t,
2366
+ visibleColumns: r,
2367
+ onToggleColumn: l,
2368
+ onReorder: c,
2369
+ className: s
2370
+ }, d) => {
2371
+ const i = Je(null), u = pe((f) => {
2372
+ i.current = f;
2373
+ }, []), o = pe(
2374
+ (f) => {
2375
+ if (!i.current || i.current === f) return;
2376
+ const v = [...t], w = v.indexOf(i.current), p = v.indexOf(f);
2377
+ w === -1 || p === -1 || (v.splice(w, 1), v.splice(p, 0, i.current), i.current = null, c?.(v));
2378
+ },
2379
+ [t, c]
2380
+ );
2381
+ return /* @__PURE__ */ m(
2382
+ ze,
2383
+ {
2384
+ ref: d,
2385
+ open: a,
2386
+ "aria-label": "Datenfelder konfigurieren",
2387
+ className: b(Z.configPopover, s),
2388
+ children: [
2389
+ /* @__PURE__ */ e("div", { className: Z.configPopover__title, children: "Sichtbare Datenfelder" }),
2390
+ t.map((f) => {
2391
+ const v = n[f];
2392
+ if (!v) return null;
2393
+ const w = r.has(f);
2394
+ return /* @__PURE__ */ m(
2395
+ "div",
2396
+ {
2397
+ className: b(Z.configPopover__item, {
2398
+ [Z["configPopover__item--checked"]]: w
2399
+ }),
2400
+ draggable: !0,
2401
+ onDragStart: () => u(f),
2402
+ onDragOver: (p) => {
2403
+ p.preventDefault(), p.dataTransfer.dropEffect = "move";
2404
+ },
2405
+ onDrop: (p) => {
2406
+ p.preventDefault(), o(f);
2407
+ },
2408
+ onClick: (p) => {
2409
+ p.target.closest(`.${Z.configPopover__dragHandle}`) || l?.(f);
2410
+ },
2411
+ children: [
2412
+ /* @__PURE__ */ e(
2413
+ ct,
2414
+ {
2415
+ checked: w,
2416
+ label: v.label,
2417
+ className: Z.configPopover__checkbox
2418
+ }
2419
+ ),
2420
+ /* @__PURE__ */ e("span", { className: Z.configPopover__dragHandle, "aria-hidden": "true", children: /* @__PURE__ */ m("svg", { width: "10", height: "16", viewBox: "0 0 10 16", fill: "currentColor", children: [
2421
+ /* @__PURE__ */ e("circle", { cx: "3", cy: "2", r: "1.25" }),
2422
+ /* @__PURE__ */ e("circle", { cx: "7", cy: "2", r: "1.25" }),
2423
+ /* @__PURE__ */ e("circle", { cx: "3", cy: "6", r: "1.25" }),
2424
+ /* @__PURE__ */ e("circle", { cx: "7", cy: "6", r: "1.25" }),
2425
+ /* @__PURE__ */ e("circle", { cx: "3", cy: "10", r: "1.25" }),
2426
+ /* @__PURE__ */ e("circle", { cx: "7", cy: "10", r: "1.25" }),
2427
+ /* @__PURE__ */ e("circle", { cx: "3", cy: "14", r: "1.25" }),
2428
+ /* @__PURE__ */ e("circle", { cx: "7", cy: "14", r: "1.25" })
2429
+ ] }) })
2430
+ ]
2431
+ },
2432
+ f
2433
+ );
2434
+ })
2435
+ ]
2436
+ }
2437
+ );
2438
+ }
2439
+ );
2440
+ xt.displayName = "ConfigPopover";
2441
+ const Yr = "_moreFilters_t87fp_3", Xr = "_moreFilters__header_t87fp_8", Jr = "_moreFilters__title_t87fp_15", Zr = "_moreFilters__clear_t87fp_21", es = "_moreFilters__group_t87fp_35", ts = "_moreFilters__select_t87fp_39", ne = {
2442
+ moreFilters: Yr,
2443
+ moreFilters__header: Xr,
2444
+ moreFilters__title: Jr,
2445
+ moreFilters__clear: Zr,
2446
+ moreFilters__group: es,
2447
+ moreFilters__select: ts
2448
+ }, Ct = g.forwardRef(
2449
+ ({
2450
+ open: a,
2451
+ columns: n,
2452
+ filters: t,
2453
+ filterOptions: r,
2454
+ onFilterChange: l,
2455
+ onClearAll: c,
2456
+ className: s
2457
+ }, d) => {
2458
+ const i = n.filter(
2459
+ ([, o]) => o.filterable && !o.primaryFilter
2460
+ ), u = i.filter(
2461
+ ([o]) => t[o] != null
2462
+ ).length;
2463
+ return /* @__PURE__ */ m(
2464
+ ze,
2465
+ {
2466
+ ref: d,
2467
+ open: a,
2468
+ "aria-label": "Weitere Filter",
2469
+ className: b(ne.moreFilters, s),
2470
+ children: [
2471
+ /* @__PURE__ */ m("div", { className: ne.moreFilters__header, children: [
2472
+ /* @__PURE__ */ e("span", { className: ne.moreFilters__title, children: "Weitere Filter" }),
2473
+ u > 0 && /* @__PURE__ */ e(
2474
+ "button",
2475
+ {
2476
+ className: ne.moreFilters__clear,
2477
+ onClick: c,
2478
+ children: "Alle zurücksetzen"
2479
+ }
2480
+ )
2481
+ ] }),
2482
+ i.map(([o, f]) => {
2483
+ const v = r[o] || [], w = t[o], p = v.map((y) => ({ value: y, label: y }));
2484
+ return /* @__PURE__ */ e(
2485
+ z,
2486
+ {
2487
+ label: f.label,
2488
+ htmlFor: `filter-${o}`,
2489
+ className: ne.moreFilters__group,
2490
+ children: /* @__PURE__ */ e(
2491
+ re,
2492
+ {
2493
+ id: `filter-${o}`,
2494
+ options: p,
2495
+ value: w ?? "",
2496
+ onChange: (y) => l?.(o, y === "" ? null : y),
2497
+ placeholder: "Alle",
2498
+ className: ne.moreFilters__select
2499
+ }
2500
+ )
2501
+ },
2502
+ o
2503
+ );
2504
+ })
2505
+ ]
2506
+ }
2507
+ );
2508
+ }
2509
+ );
2510
+ Ct.displayName = "MoreFiltersPopover";
2511
+ const St = g.forwardRef(
2512
+ ({ count: a, total: n, label: t = "Einträge", className: r }, l) => /* @__PURE__ */ m("div", { ref: l, className: b(be.resultCount, r), children: [
2513
+ /* @__PURE__ */ e("span", { className: be.resultCount__number, children: a }),
2514
+ " von ",
2515
+ n,
2516
+ " ",
2517
+ t,
2518
+ " angezeigt"
2519
+ ] })
2520
+ );
2521
+ St.displayName = "ResultCount";
2522
+ const Dt = g.forwardRef(
2523
+ ({
2524
+ rows: a,
2525
+ totalRows: n,
2526
+ columns: t,
2527
+ columnOrder: r,
2528
+ visibleColumns: l,
2529
+ layout: c,
2530
+ resultLabel: s = "Einträge",
2531
+ currentView: d,
2532
+ onViewChange: i,
2533
+ searchQuery: u,
2534
+ onSearchChange: o,
2535
+ filters: f,
2536
+ filterOptions: v,
2537
+ onFilterChange: w,
2538
+ sortColumn: p,
2539
+ sortDirection: y,
2540
+ onSort: h,
2541
+ expandedRows: x,
2542
+ onToggleExpand: k,
2543
+ favorites: _,
2544
+ onToggleFavorite: N,
2545
+ columnWidths: I,
2546
+ onColumnResize: A,
2547
+ onToggleColumn: C,
2548
+ onReorderColumns: L,
2549
+ onClearSecondaryFilters: R,
2550
+ renderListCell: D,
2551
+ renderCardCell: O,
2552
+ className: q
2553
+ }, _e) => {
2554
+ const [qe, Lt] = g.useState(!1), [We, At] = g.useState(!1), te = r.filter((j) => t[j]).map((j) => [j, t[j]]), Rt = te.filter(
2555
+ ([j]) => l.has(j)
2556
+ ), $t = te.filter(
2557
+ ([, j]) => j.filterable && !j.primaryFilter
2558
+ ).filter(
2559
+ ([j]) => f[j] != null
2560
+ ).length;
2561
+ return /* @__PURE__ */ m("div", { ref: _e, className: b(be.dataGrid, q), children: [
2562
+ /* @__PURE__ */ e(
2563
+ ft,
2564
+ {
2565
+ currentView: d,
2566
+ onViewChange: i,
2567
+ searchQuery: u,
2568
+ onSearchChange: o,
2569
+ columns: te,
2570
+ filters: f,
2571
+ filterOptions: v,
2572
+ onFilterChange: w,
2573
+ onSettingsClick: () => Lt((j) => !j),
2574
+ settingsExpanded: qe,
2575
+ onMoreFiltersClick: () => At((j) => !j),
2576
+ moreFiltersExpanded: We,
2577
+ activeSecondaryFilterCount: $t
2578
+ }
2579
+ ),
2580
+ /* @__PURE__ */ e(
2581
+ xt,
2582
+ {
2583
+ open: qe,
2584
+ columns: t,
2585
+ columnOrder: r,
2586
+ visibleColumns: l,
2587
+ onToggleColumn: C,
2588
+ onReorder: L
2589
+ }
2590
+ ),
2591
+ /* @__PURE__ */ e(
2592
+ Ct,
2593
+ {
2594
+ open: We,
2595
+ columns: te,
2596
+ filters: f,
2597
+ filterOptions: v,
2598
+ onFilterChange: w,
2599
+ onClearAll: R
2600
+ }
2601
+ ),
2602
+ /* @__PURE__ */ e("div", { className: be.dataGrid__viewPanel, children: a.length === 0 ? /* @__PURE__ */ e(
2603
+ Oe,
2604
+ {
2605
+ title: "Keine Ergebnisse",
2606
+ text: "Versuche andere Filter oder Suchbegriffe."
2607
+ }
2608
+ ) : /* @__PURE__ */ m(Q, { children: [
2609
+ d === "table" && /* @__PURE__ */ e(
2610
+ wt,
2611
+ {
2612
+ rows: a,
2613
+ columns: Rt,
2614
+ sortColumn: p,
2615
+ sortDirection: y,
2616
+ onSort: h,
2617
+ expandedRows: x,
2618
+ onToggleExpand: k,
2619
+ favorites: _,
2620
+ onToggleFavorite: N,
2621
+ columnWidths: I,
2622
+ onColumnResize: A
2623
+ }
2624
+ ),
2625
+ d === "list" && /* @__PURE__ */ e(
2626
+ kt,
2627
+ {
2628
+ rows: a,
2629
+ columns: te,
2630
+ visibleColumns: l,
2631
+ titleField: c.list.titleField,
2632
+ metaFields: c.list.metaFields,
2633
+ badgeFields: c.list.badgeFields,
2634
+ valueField: c.list.valueField,
2635
+ expandField: c.list.expandField,
2636
+ favorites: _,
2637
+ onToggleFavorite: N,
2638
+ expandedRows: x,
2639
+ onToggleExpand: k,
2640
+ renderCell: D
2641
+ }
2642
+ ),
2643
+ d === "cards" && /* @__PURE__ */ e(
2644
+ Nt,
2645
+ {
2646
+ rows: a,
2647
+ columns: te,
2648
+ visibleColumns: l,
2649
+ titleField: c.card.titleField,
2650
+ subtitleField: c.card.subtitleField,
2651
+ badgeFields: c.card.badgeFields,
2652
+ cardRows: c.card.rows,
2653
+ footerField: c.card.footerField,
2654
+ expandField: c.card.expandField,
2655
+ favorites: _,
2656
+ onToggleFavorite: N,
2657
+ expandedRows: x,
2658
+ onToggleExpand: k,
2659
+ renderCell: O
2660
+ }
2661
+ )
2662
+ ] }) }),
2663
+ /* @__PURE__ */ e(
2664
+ St,
2665
+ {
2666
+ count: a.length,
2667
+ total: n,
2668
+ label: s
2669
+ }
2670
+ )
2671
+ ] });
2672
+ }
2673
+ );
2674
+ Dt.displayName = "DataGrid";
2675
+ function It(a, n) {
2676
+ return {
2677
+ currentView: "table",
2678
+ searchQuery: "",
2679
+ filters: {},
2680
+ sortColumn: null,
2681
+ sortDirection: "asc",
2682
+ expandedRows: /* @__PURE__ */ new Set(),
2683
+ favorites: /* @__PURE__ */ new Set(),
2684
+ visibleColumns: new Set(
2685
+ n.filter((t) => a[t]?.visible !== !1)
2686
+ ),
2687
+ columnOrder: n,
2688
+ columnWidths: {}
2689
+ };
2690
+ }
2691
+ function as(a, n) {
2692
+ switch (n.type) {
2693
+ case "SET_VIEW":
2694
+ return { ...a, currentView: n.view, expandedRows: /* @__PURE__ */ new Set() };
2695
+ case "SET_SEARCH":
2696
+ return { ...a, searchQuery: n.query };
2697
+ case "SET_FILTER": {
2698
+ const t = { ...a.filters };
2699
+ return n.value === null ? delete t[n.key] : t[n.key] = n.value, { ...a, filters: t, expandedRows: /* @__PURE__ */ new Set() };
2700
+ }
2701
+ case "SET_SORT": {
2702
+ let { sortColumn: t, sortDirection: r } = a;
2703
+ return t === n.column ? r = r === "asc" ? "desc" : "asc" : (t = n.column, r = "asc"), { ...a, sortColumn: t, sortDirection: r };
2704
+ }
2705
+ case "TOGGLE_EXPAND": {
2706
+ const t = new Set(a.expandedRows);
2707
+ return t.has(n.compositeKey) ? t.delete(n.compositeKey) : t.add(n.compositeKey), { ...a, expandedRows: t };
2708
+ }
2709
+ case "TOGGLE_FAVORITE": {
2710
+ const t = new Set(a.favorites);
2711
+ return t.has(n.id) ? t.delete(n.id) : t.add(n.id), { ...a, favorites: t };
2712
+ }
2713
+ case "SET_COLUMN_WIDTH":
2714
+ return {
2715
+ ...a,
2716
+ columnWidths: { ...a.columnWidths, [n.colKey]: n.width }
2717
+ };
2718
+ case "TOGGLE_COLUMN": {
2719
+ const t = new Set(a.visibleColumns);
2720
+ return t.has(n.key) ? t.delete(n.key) : t.add(n.key), { ...a, visibleColumns: t };
2721
+ }
2722
+ case "REORDER_COLUMNS":
2723
+ return { ...a, columnOrder: n.newOrder };
2724
+ case "CLEAR_SECONDARY_FILTERS": {
2725
+ const t = { ...a.filters };
2726
+ return Object.keys(t).forEach((r) => {
2727
+ n.primaryFilterKeys.has(r) || delete t[r];
2728
+ }), { ...a, filters: t };
2729
+ }
2730
+ case "SWITCH_SOURCE":
2731
+ return {
2732
+ ...It(n.columns, n.columnOrder),
2733
+ favorites: a.favorites
2734
+ };
2735
+ default:
2736
+ return a;
2737
+ }
2738
+ }
2739
+ function ns(a, n, t) {
2740
+ let r = a;
2741
+ if (t.searchQuery) {
2742
+ const l = t.searchQuery.toLowerCase(), c = Object.entries(n).filter(([, s]) => s.searchable !== !1 && s.type !== "expand").map(([s]) => s);
2743
+ r = r.filter(
2744
+ (s) => c.some((d) => {
2745
+ const i = s[d];
2746
+ return i != null && String(i).toLowerCase().includes(l);
2747
+ })
2748
+ );
2749
+ }
2750
+ if (Object.entries(t.filters).forEach(([l, c]) => {
2751
+ if (c == null) return;
2752
+ const s = n[l];
2753
+ s && (s.filterFn ? r = r.filter((d) => s.filterFn(d, c)) : r = r.filter((d) => String(d[l]) === c));
2754
+ }), t.sortColumn) {
2755
+ const l = t.sortColumn, c = t.sortDirection === "asc" ? 1 : -1;
2756
+ r = [...r].sort((s, d) => {
2757
+ const i = s[l], u = d[l];
2758
+ return i == null && u == null ? 0 : i == null ? c : u == null ? -c : typeof i == "number" && typeof u == "number" ? (i - u) * c : String(i).localeCompare(String(u)) * c;
2759
+ });
2760
+ }
2761
+ return r;
2762
+ }
2763
+ function rs(a, n) {
2764
+ const t = {};
2765
+ return Object.entries(n).forEach(([r, l]) => {
2766
+ if (!l.filterable) return;
2767
+ if (l.filterOptions) {
2768
+ t[r] = l.filterOptions;
2769
+ return;
2770
+ }
2771
+ const c = /* @__PURE__ */ new Set();
2772
+ a.forEach((s) => {
2773
+ const d = s[r];
2774
+ d != null && c.add(String(d));
2775
+ }), t[r] = [...c].sort();
2776
+ }), t;
2777
+ }
2778
+ const ss = g.forwardRef(
2779
+ ({ sources: a, initialSourceKey: n, className: t }, r) => {
2780
+ const [l, c] = g.useState(
2781
+ n ?? a[0]?.key ?? ""
2782
+ ), s = a.find((p) => p.key === l) ?? a[0], d = ee(() => Object.keys(s.columns), [s]), [i, u] = jt(
2783
+ as,
2784
+ { columns: s.columns, columnOrder: d },
2785
+ ({ columns: p, columnOrder: y }) => It(p, y)
2786
+ ), o = pe(
2787
+ (p) => {
2788
+ const y = a.find((x) => x.key === p);
2789
+ if (!y) return;
2790
+ c(p);
2791
+ const h = Object.keys(y.columns);
2792
+ u({
2793
+ type: "SWITCH_SOURCE",
2794
+ columns: y.columns,
2795
+ columnOrder: h
2796
+ });
2797
+ },
2798
+ [a]
2799
+ ), f = ee(
2800
+ () => ns(s.data, s.columns, i),
2801
+ [s.data, s.columns, i]
2802
+ ), v = ee(
2803
+ () => rs(s.data, s.columns),
2804
+ [s.data, s.columns]
2805
+ ), w = ee(
2806
+ () => new Set(
2807
+ Object.entries(s.columns).filter(([, p]) => p.filterable && p.primaryFilter).map(([p]) => p)
2808
+ ),
2809
+ [s.columns]
2810
+ );
2811
+ return /* @__PURE__ */ m("div", { ref: r, className: b(Vn.page, t), children: [
2812
+ /* @__PURE__ */ e(
2813
+ pt,
2814
+ {
2815
+ sources: a,
2816
+ activeSourceKey: l,
2817
+ onSourceChange: o
2818
+ }
2819
+ ),
2820
+ /* @__PURE__ */ e(
2821
+ Dt,
2822
+ {
2823
+ rows: f,
2824
+ totalRows: s.data.length,
2825
+ columns: s.columns,
2826
+ columnOrder: i.columnOrder,
2827
+ visibleColumns: i.visibleColumns,
2828
+ layout: s.layout,
2829
+ resultLabel: s.resultLabel,
2830
+ currentView: i.currentView,
2831
+ onViewChange: (p) => u({ type: "SET_VIEW", view: p }),
2832
+ searchQuery: i.searchQuery,
2833
+ onSearchChange: (p) => u({ type: "SET_SEARCH", query: p }),
2834
+ filters: i.filters,
2835
+ filterOptions: v,
2836
+ onFilterChange: (p, y) => u({ type: "SET_FILTER", key: p, value: y }),
2837
+ sortColumn: i.sortColumn,
2838
+ sortDirection: i.sortDirection,
2839
+ onSort: (p) => u({ type: "SET_SORT", column: p }),
2840
+ expandedRows: i.expandedRows,
2841
+ onToggleExpand: (p) => u({ type: "TOGGLE_EXPAND", compositeKey: p }),
2842
+ favorites: i.favorites,
2843
+ onToggleFavorite: (p) => u({ type: "TOGGLE_FAVORITE", id: p }),
2844
+ columnWidths: i.columnWidths,
2845
+ onColumnResize: (p, y) => u({ type: "SET_COLUMN_WIDTH", colKey: p, width: y }),
2846
+ onToggleColumn: (p) => u({ type: "TOGGLE_COLUMN", key: p }),
2847
+ onReorderColumns: (p) => u({ type: "REORDER_COLUMNS", newOrder: p }),
2848
+ onClearSecondaryFilters: () => u({ type: "CLEAR_SECONDARY_FILTERS", primaryFilterKeys: w })
2849
+ }
2850
+ )
2851
+ ] });
2852
+ }
2853
+ );
2854
+ ss.displayName = "DataVisualizationPage";
1554
2855
  export {
1555
- V as Avatar,
1556
- de as AvatarGroup,
1557
- ie as Badge,
1558
- ce as BaseList,
1559
- we as BaseTable,
1560
- R as Button,
1561
- re as Checklist,
1562
- aa as DashboardPage,
1563
- Ue as DataCard,
1564
- Wt as EmptyState,
1565
- It as ExpandButton,
1566
- ye as FavoriteButton,
1567
- Ne as ListItem,
1568
- _e as PriorityBadge,
1569
- Rt as ProgressCircle,
1570
- Ie as ProjectTable,
1571
- Et as ScoreBar,
1572
- yt as SearchInput,
1573
- Kt as SegmentedControl,
1574
- ke as StatusBadge,
1575
- xe as StatusChart,
1576
- Se as StatusDropdown,
1577
- Ce as StatusLegendItem,
1578
- $e as TaskDetailModal,
1579
- je as TaskItem,
1580
- ga as TaskWidget,
1581
- U as WidgetCard
2856
+ ce as Avatar,
2857
+ Te as AvatarGroup,
2858
+ Ie as Badge,
2859
+ ge as BaseList,
2860
+ Fe as BaseTable,
2861
+ W as Button,
2862
+ Nt as CardView,
2863
+ ct as Checkbox,
2864
+ Le as Checklist,
2865
+ xt as ConfigPopover,
2866
+ Dn as DashboardPage,
2867
+ et as DataCard,
2868
+ Dt as DataGrid,
2869
+ wt as DataTable,
2870
+ ss as DataVisualizationPage,
2871
+ pt as DomainSwitcher,
2872
+ Oe as EmptyState,
2873
+ ve as ExpandButton,
2874
+ de as FavoriteButton,
2875
+ ot as FilterChip,
2876
+ z as FormField,
2877
+ Be as ListItem,
2878
+ kt as ListView,
2879
+ _t as Modal,
2880
+ Ct as MoreFiltersPopover,
2881
+ ze as Popover,
2882
+ Pe as PriorityBadge,
2883
+ lt as ProgressCircle,
2884
+ rt as ProjectTable,
2885
+ it as ScoreBar,
2886
+ Ee as SearchInput,
2887
+ Me as SegmentedControl,
2888
+ re as Select,
2889
+ tt as StatusBadge,
2890
+ nt as StatusChart,
2891
+ st as StatusDropdown,
2892
+ at as StatusLegendItem,
2893
+ mt as TaskDetailModal,
2894
+ ut as TaskItem,
2895
+ qn as TaskWidget,
2896
+ dt as TextArea,
2897
+ Re as TextInput,
2898
+ ft as Toolbar,
2899
+ fe as WidgetCard
1582
2900
  };