@fastnd/components 1.0.14 → 1.0.17

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