@fastnd/components 1.0.11 → 1.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/dist/components/BaseList/BaseList.d.ts +6 -0
  2. package/dist/components/BaseTable/BaseTable.d.ts +31 -0
  3. package/dist/components/DataCard/DataCard.d.ts +6 -0
  4. package/dist/components/EmptyState/EmptyState.d.ts +8 -0
  5. package/dist/components/ExpandButton/ExpandButton.d.ts +10 -0
  6. package/dist/components/FavoriteButton/FavoriteButton.d.ts +2 -0
  7. package/dist/components/ListItem/ListItem.d.ts +9 -0
  8. package/dist/components/ProgressCircle/ProgressCircle.d.ts +6 -0
  9. package/dist/components/ScoreBar/ScoreBar.d.ts +6 -0
  10. package/dist/components/SearchInput/SearchInput.d.ts +10 -0
  11. package/dist/components/SegmentedControl/SegmentedControl.d.ts +15 -0
  12. package/dist/components/WidgetCard/WidgetCard.d.ts +11 -0
  13. package/dist/components/index.d.ts +23 -1
  14. package/dist/components.js +1064 -604
  15. package/dist/features/data-visualization/CardView/CardView.d.ts +24 -0
  16. package/dist/features/data-visualization/ConfigPopover/ConfigPopover.d.ts +12 -0
  17. package/dist/features/data-visualization/DataGrid/DataGrid.d.ts +34 -0
  18. package/dist/features/data-visualization/DataGrid/ResultCount.d.ts +8 -0
  19. package/dist/features/data-visualization/DataTable/DataTable.d.ts +17 -0
  20. package/dist/features/data-visualization/DataVisualizationPage/DataVisualizationPage.d.ts +8 -0
  21. package/dist/features/data-visualization/DomainSwitcher/DomainSwitcher.d.ts +9 -0
  22. package/dist/features/data-visualization/ListView/ListView.d.ts +19 -0
  23. package/dist/features/data-visualization/MoreFiltersPopover/MoreFiltersPopover.d.ts +12 -0
  24. package/dist/features/data-visualization/Toolbar/Toolbar.d.ts +22 -0
  25. package/dist/features/data-visualization/cells/CellDouble.d.ts +7 -0
  26. package/dist/features/data-visualization/cells/CellLink.d.ts +7 -0
  27. package/dist/features/data-visualization/cells/CellPrice.d.ts +7 -0
  28. package/dist/features/data-visualization/cells/InventoryBadge.d.ts +8 -0
  29. package/dist/features/data-visualization/cells/LifecycleStatusBadge.d.ts +8 -0
  30. package/dist/features/data-visualization/cells/index.d.ts +10 -0
  31. package/dist/features/data-visualization/index.d.ts +19 -0
  32. package/dist/features/data-visualization/types.d.ts +79 -0
  33. package/package.json +1 -1
@@ -1,77 +1,333 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode('._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_1jlmc_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_1jlmc_3:hover,._favorite-btn_1jlmc_3:focus-visible{background-color:var(--surface-variant);color:var(--custom-active-color, var(--color-warning));outline:none}._favorite-btn--active_1jlmc_23{color:var(--custom-active-color, var(--color-warning))}._favorite-btn_1jlmc_3 svg{width:18px;height:18px;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}._table-container_y8cqq_3{overflow-x:auto}._project-table_y8cqq_7{width:100%;border-collapse:separate;border-spacing:0;text-align:left;table-layout:fixed}._project-table__head_y8cqq_15 th{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);padding:.75rem 1rem;border-bottom:1px solid var(--border);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._project-table__head_y8cqq_15 th:nth-child(1){width:auto}._project-table__head_y8cqq_15 th:nth-child(2){width:20%}._project-table__head_y8cqq_15 th:nth-child(3){width:150px}._project-table__head_y8cqq_15 th:nth-child(4){width:160px}._project-table__row_y8cqq_33{transition:background-color .15s ease;cursor:default}._project-table__row_y8cqq_33:hover{background-color:var(--surface-hover)}._project-table__row_y8cqq_33 td{padding:1rem;border-bottom:1px solid var(--border);font-size:.875rem;color:var(--on-surface);vertical-align:middle}._project-table__row_y8cqq_33 td:nth-child(1),._project-table__row_y8cqq_33 td:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._project-table__row_y8cqq_33 td:nth-child(3),._project-table__row_y8cqq_33 td:nth-child(4){overflow:visible}._project-table__row_y8cqq_33:last-child td{border-bottom:none}._project-table__name-cell_y8cqq_66{display:flex;align-items:center;gap:.5rem}._project-table__favorite_y8cqq_72{margin-left:-.5rem}._project-table__name-wrapper_y8cqq_76{display:flex;flex-direction:column;overflow:hidden;min-width:0}._project-table__name_y8cqq_66{font-weight:500;color:var(--on-surface);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._project-table__app_y8cqq_92,._project-table__date-secondary_y8cqq_93{font-size:.75rem;color:var(--on-surface-variant);margin-top:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._project-table__client_y8cqq_102,._project-table__date-main_y8cqq_103{color:var(--on-surface-variant);font-size:.8125rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._project-table__date-main_y8cqq_103{color:var(--on-surface);font-weight:500}._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_ulozz_3{display:flex;flex-direction:column;gap:.5rem}._check-item_ulozz_9{display:flex;align-items:center;gap:.5rem;font-size:.875rem}._check-item_ulozz_9 input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--primary);cursor:pointer}._check-item_ulozz_9 label{cursor:pointer}._check-item_ulozz_9._is-done_ulozz_27 label{text-decoration:line-through;color:var(--on-surface-variant)}._checklist--readonly_ulozz_32 ._check-item_ulozz_9 label{cursor:pointer}._checklist--readonly_ulozz_32 ._check-item_ulozz_9 input[type=checkbox]{pointer-events:all}._form-control_ulozz_40{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}._form-control_ulozz_40:focus{outline:none;background-color:var(--surface)}._is-done_ulozz_27 ._form-control_ulozz_40{text-decoration:line-through;color:var(--on-surface-variant)}._dashboard_1mbco_4{width:100%;display:grid;grid-template-columns:35% 65%;gap:1.5rem}@media(max-width:1024px){._dashboard_1mbco_4{grid-template-columns:1fr}}._dashboard-card_1mbco_17{background-color:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-card);border:1px solid var(--border);padding:1.5rem 2.5%;display:flex;flex-direction:column}._dashboard-card__header_1mbco_27{margin-bottom:1.5rem}._dashboard-card__title_1mbco_31{font-family:var(--font-clash);font-size:1.5rem;font-weight:500;color:var(--on-surface);margin:0}._status-legend_1mbco_39{display:flex;flex-direction:column;gap:.75rem}._project-filters_1mbco_45{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}._project-filters__search_1mbco_54{padding:.5rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background-color:var(--surface-variant);font-family:var(--font-inter);font-size:.875rem;color:var(--on-surface);width:250px;transition:border-color .2s,box-shadow .2s}._project-filters__search_1mbco_54:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary),transparent 80%)}._task-item_15khb_4{display:grid;grid-template-columns:55% 15% 30%;align-items:center;gap:0;padding:.75rem 5%;border-bottom:1px solid var(--border);transition:background-color .2s ease;cursor:pointer;font-family:var(--font-inter)}._task-item_15khb_4:last-child{border-bottom:none}._task-item_15khb_4:hover{background-color:var(--surface-hover)}._task-item__content_15khb_25{display:flex;flex-direction:column;gap:.375rem;min-width:0}._task-item__title-group_15khb_32{display:flex;align-items:center;gap:.375rem;min-width:0}._task-item__title_15khb_32{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)}._task-item__meta_15khb_52{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}._meta-user_15khb_64{display:flex;align-items:center;flex-shrink:0}._meta-project_15khb_70{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}._meta-project_15khb_70 ._icon-sm_15khb_83{flex-shrink:0}._task-item__deadline_15khb_88{white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right;font-family:var(--font-grotesk);font-size:.75rem;line-height:1rem}._deadline-urgent_15khb_97{color:var(--color-danger);font-weight:500}._deadline-normal_15khb_102{color:var(--on-surface-variant)}._task-item__actions_15khb_107{display:flex;align-items:center;gap:.5rem;justify-content:flex-end}._icon_15khb_83{width:1rem;height:1rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}._icon-sm_15khb_83{width:.875rem;height:.875rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}@media(max-width:640px){._task-item_15khb_4{grid-template-columns:1fr auto;grid-template-rows:auto auto;grid-template-areas:"content actions" "deadline actions";gap:.25rem .75rem}._task-item__content_15khb_25{grid-area:content}._task-item__deadline_15khb_88{grid-area:deadline;text-align:left}._task-item__actions_15khb_107{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-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);--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)}}._widget-card_gqjal_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%;max-width:520px;overflow:hidden;font-family:var(--font-inter);animation:_fadeIn_gqjal_1 .4s ease-out}._widget-header_gqjal_20{display:flex;justify-content:space-between;align-items:center;padding:1rem 5%;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}._widget-header__title_gqjal_30{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}._task-list_gqjal_41{display:flex;flex-direction:column;overflow-y:auto;flex:1 1 0;scrollbar-width:thin;scrollbar-color:var(--border) transparent}._task-list_gqjal_41::-webkit-scrollbar{width:4px}._task-list_gqjal_41::-webkit-scrollbar-track{background:transparent}._task-list_gqjal_41::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:2px}._icon_gqjal_64{width:1rem;height:1rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}._icon-sm_gqjal_74{width:.875rem;height:.875rem}@keyframes _fadeIn_gqjal_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}')),document.head.appendChild(r)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
2
- import { jsx as e, jsxs as n } from "react/jsx-runtime";
3
- import w, { useState as z, useRef as oe, useEffect as E, useMemo as q } from "react";
4
- function X(t) {
5
- var l, r, o = "";
6
- if (typeof t == "string" || typeof t == "number") o += t;
1
+ (function(){"use strict";try{if(typeof document<"u"){var r=document.createElement("style");r.appendChild(document.createTextNode('._tableContainer_133qi_4{overflow-x:auto}._table_133qi_4{width:100%;border-collapse:separate;border-spacing:0;text-align:left;table-layout:fixed}._table__head_133qi_18 th{font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em;color:var(--on-surface-variant);padding:.625rem 1rem;border-bottom:1px solid var(--border);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;position:relative}._table__head_133qi_18 th._sortable_133qi_32{cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s ease}._table__head_133qi_18 th._sortable_133qi_32:hover{color:var(--on-surface)}._table__head_133qi_18 th:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}._sortIndicator_133qi_48{display:inline-flex;margin-left:.25rem;opacity:.4;vertical-align:middle}._table__head_133qi_18 th[aria-sort] ._sortIndicator_133qi_48{opacity:1;color:var(--primary)}._colResizeHandle_133qi_61{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:5;background:transparent}._colResizeHandle_133qi_61:hover{background-color:var(--primary);opacity:.4}._table--resizing_133qi_77{cursor:col-resize;-webkit-user-select:none;user-select:none}._table--resizing_133qi_77 *{cursor:col-resize!important}._table__row_133qi_87{transition:background-color .1s ease}._table__row_133qi_87:hover{background-color:var(--surface-hover)}._table__row_133qi_87 td{padding:.75rem 1rem;border-bottom:1px solid var(--border);vertical-align:middle;overflow:hidden;text-overflow:ellipsis}._table__row_133qi_87:last-child td{border-bottom:none}._table__row--animated_133qi_108{animation:_fadeInRow_133qi_1 .2s ease both}@keyframes _fadeInRow_133qi_1{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){._table__row--animated_133qi_108{animation:none}}@media(max-width:1024px){._col-hide-tablet_133qi_131{display:none}}@media(max-width:640px){._col-hide-mobile_133qi_137{display:none}}._widgetCard_gx9fj_4{background-color:var(--surface);color:var(--on-surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);display:flex;flex-direction:column;height:100%;overflow:hidden;font-family:var(--font-inter);animation:_fadeIn_gx9fj_1 .4s ease-out}._widgetCard--half_gx9fj_18{max-width:520px}._widgetCard__header_gx9fj_23{display:flex;justify-content:space-between;align-items:center;padding:1rem 5%;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0}._widgetCard--full_gx9fj_33 ._widgetCard__header_gx9fj_23{padding:1.5rem 2.5%}._widgetCard__title_gx9fj_37{margin:0;font-family:var(--font-clash);font-size:1.25rem;font-weight:500;line-height:1.3;color:var(--on-surface);letter-spacing:-.02em}._widgetCard--full_gx9fj_33 ._widgetCard__title_gx9fj_37{font-size:1.5rem}._widgetCard__content_gx9fj_52{flex:1 1 0}._widgetCard__content--scrollable_gx9fj_56{overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}._widgetCard__content--scrollable_gx9fj_56::-webkit-scrollbar{width:4px}._widgetCard__content--scrollable_gx9fj_56::-webkit-scrollbar-track{background:transparent}._widgetCard__content--scrollable_gx9fj_56::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:2px}._widgetCard__content--padded_gx9fj_76{padding:1rem 5%}._widgetCard--full_gx9fj_33 ._widgetCard__content--padded_gx9fj_76{padding:1.5rem 2.5%}@keyframes _fadeIn_gx9fj_1{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){._widgetCard_gx9fj_4{animation:none}}._dataCard_19cka_3{background-color:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;transition:box-shadow .15s ease,border-color .15s ease;display:flex;flex-direction:column;gap:.75rem}._dataCard_19cka_3:hover{box-shadow:var(--shadow-md)}._dataCard--clickable_19cka_18{cursor:pointer}._dataCard--clickable_19cka_18:focus-visible{outline:2px solid var(--primary);outline-offset:2px}._baseList_47qml_3{display:flex;flex-direction:column}._baseList--scrollable_47qml_8{overflow-y:auto;flex:1 1 0;scrollbar-width:thin;scrollbar-color:var(--border) transparent}._baseList--scrollable_47qml_8::-webkit-scrollbar{width:4px}._baseList--scrollable_47qml_8::-webkit-scrollbar-track{background:transparent}._baseList--scrollable_47qml_8::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:2px}._listItem_1ssj2_3{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--border);transition:background-color .1s ease;font-family:var(--font-inter)}._listItem_1ssj2_3:last-child{border-bottom:none}._listItem_1ssj2_3:hover{background-color:var(--surface-hover)}._listItem--clickable_1ssj2_21{cursor:pointer}._listItem_1ssj2_3:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}._listItem__leading_1ssj2_31{flex-shrink:0;display:flex;align-items:center}._listItem__content_1ssj2_37{flex:1;min-width:0}._listItem__trailing_1ssj2_42{flex-shrink:0;display:flex;align-items:center;gap:.5rem}@media(max-width:640px){._listItem_1ssj2_3{flex-wrap:wrap;gap:.5rem}}._status-badge_c7rzu_3{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border-radius:1rem;font-size:.75rem;font-weight:500;line-height:1;color:var(--custom-color, var(--current-color));background-color:var(--custom-bg, var(--current-bg));white-space:nowrap}._status-badge_c7rzu_3:before{content:"";display:block;width:6px;height:6px;border-radius:50%;background-color:var(--custom-color, var(--current-color))}._status-badge--neu_c7rzu_26{--current-color: var(--status-neu);--current-bg: color-mix(in srgb, var(--status-neu), transparent 90%)}._status-badge--offen_c7rzu_31{--current-color: var(--status-offen);--current-bg: color-mix(in srgb, var(--status-offen), transparent 90%)}._status-badge--in-prufung_c7rzu_36{--current-color: var(--status-in-prufung);--current-bg: color-mix(in srgb, var(--status-in-prufung), transparent 90%)}._status-badge--validierung_c7rzu_41{--current-color: var(--status-validierung);--current-bg: color-mix(in srgb, var(--status-validierung), transparent 90%)}._status-badge--abgeschlossen_c7rzu_46{--current-color: var(--status-abgeschlossen);--current-bg: color-mix(in srgb, var(--status-abgeschlossen), transparent 90%)}._favorite-btn_1fvb2_3{background:none;border:none;color:var(--custom-color, var(--on-surface-light));cursor:pointer;display:flex;align-items:center;justify-content:center;padding:.375rem;border-radius:var(--radius);transition:all .2s ease}._favorite-btn_1fvb2_3:hover,._favorite-btn_1fvb2_3:focus-visible{background-color:var(--surface-variant);color:var(--custom-active-color, var(--color-warning));outline:none}._favorite-btn--active_1fvb2_23{color:var(--custom-active-color, var(--color-warning))}._favorite-btn--md_1fvb2_28{padding:.375rem}._favorite-btn--md_1fvb2_28 svg{width:18px;height:18px;fill:currentColor}._favorite-btn--sm_1fvb2_39{padding:.25rem}._favorite-btn--sm_1fvb2_39 svg{width:16px;height:16px;fill:currentColor}._status-legend__item_1xv4z_3{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-radius:calc(var(--radius) - 2px);cursor:pointer;transition:background-color .2s ease;border:1px solid transparent;background:none;width:100%}._status-legend__item_1xv4z_3:hover,._status-legend__item_1xv4z_3:focus-visible{background-color:var(--surface-variant);outline:none}._status-legend__item--active_1xv4z_22{background-color:var(--surface-variant);border-color:var(--border)}._status-legend__label-wrap_1xv4z_27{display:flex;align-items:center;gap:.5rem}._status-legend__color_1xv4z_33{width:12px;height:12px;border-radius:50%;flex-shrink:0;background-color:var(--custom-color, var(--current-color))}._status-legend__label_1xv4z_27{font-size:.875rem;color:var(--on-surface);font-weight:500}._status-legend__count_1xv4z_47{font-family:var(--font-grotesk);font-size:.875rem;color:var(--on-surface-variant);font-weight:600;background-color:var(--surface-variant);padding:.125rem .5rem;border-radius:1rem}._color-neu_1xv4z_57{--current-color: var(--status-neu)}._color-offen_1xv4z_61{--current-color: var(--status-offen)}._color-in-prufung_1xv4z_65{--current-color: var(--status-in-prufung)}._color-validierung_1xv4z_69{--current-color: var(--status-validierung)}._color-abgeschlossen_1xv4z_73{--current-color: var(--status-abgeschlossen)}._color-alle_1xv4z_77{--current-color: var(--status-alle)}._status-overview__chart-container_6nwc9_3{position:relative;width:200px;height:200px;margin:1rem auto 2rem;display:flex;align-items:center;justify-content:center}._status-chart-svg_6nwc9_13{width:100%;height:100%;position:absolute;top:0;left:0;filter:drop-shadow(var(--shadow-sm));pointer-events:none}._status-chart__segment_6nwc9_23{transition:all .3s cubic-bezier(.4,0,.2,1);stroke-linecap:butt;pointer-events:stroke}._status-chart__segment_6nwc9_23:hover,._status-chart__segment--hovered_6nwc9_30{stroke-width:48px;filter:brightness(1.1)}._status-chart__segment--dimmed_6nwc9_35{opacity:.6;filter:grayscale(.2)}._status-chart__hole_6nwc9_40{width:120px;height:120px;background-color:var(--surface);border-radius:50%;position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:inset var(--shadow-sm);clip-path:circle(50%)}._status-chart__total-value_6nwc9_55{font-family:var(--font-clash);font-size:2rem;font-weight:600;line-height:1;color:var(--on-surface)}._status-chart__total-label_6nwc9_63{font-size:.75rem;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.05em;margin-top:.25rem}._nameCell_1n6hv_4{display:flex;align-items:center;gap:.5rem}._favorite_1n6hv_10{margin-left:-.5rem}._nameWrapper_1n6hv_14{display:flex;flex-direction:column;overflow:hidden;min-width:0}._name_1n6hv_4{font-weight:500;color:var(--on-surface);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._secondary_1n6hv_31{font-size:.75rem;color:var(--on-surface-variant);margin-top:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._client_1n6hv_41{color:var(--on-surface-variant);font-size:.8125rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._dateMain_1n6hv_51{color:var(--on-surface);font-weight:500;font-size:.8125rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._avatar_17ic7_3{width:1.5rem;height:1.5rem;border-radius:50%;background-color:var(--surface-variant);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:.625rem;font-weight:600;color:var(--on-surface);text-transform:uppercase}._avatar-group_17ic7_18{display:flex;align-items:center}._group-member_17ic7_23{margin-right:-.5rem;position:relative;z-index:1;border:2px solid var(--surface)}._group-member_17ic7_23:hover{z-index:10}._btn_7bh63_3{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;white-space:nowrap;border-radius:calc(var(--radius) - 2px);font-size:.875rem;font-weight:500;transition:all .2s cubic-bezier(.16,1,.3,1);cursor:pointer;border:1px solid transparent}._btn_7bh63_3:focus-visible{outline:2px solid var(--primary);outline-offset:2px}._btn_7bh63_3:active{transform:scale(.98)}._btn--primary_7bh63_27{background:var(--gradient-header);color:#fff;padding:.5rem 1rem;box-shadow:var(--shadow-sm)}._btn--primary_7bh63_27:hover{box-shadow:var(--shadow-md);opacity:.9}._btn--outline_7bh63_39{background-color:transparent;border-color:var(--border);color:var(--on-surface);padding:.375rem .75rem;min-width:110px}._btn--outline_7bh63_39:hover{background-color:var(--surface-variant);color:var(--on-surface)}._btn--ghost_7bh63_52{background-color:transparent;color:var(--on-surface-variant);padding:.375rem}._btn--ghost_7bh63_52:hover{background-color:var(--surface-variant);color:var(--on-surface)}._btn--sm_7bh63_63{padding:.2rem .4rem;font-size:.75rem;min-width:auto!important}._badge_1e35x_3{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-grotesk);font-weight:800}._badge--high_1e35x_12{background-color:var(--error-variant);color:var(--error);border:1px solid color-mix(in srgb,var(--error),transparent 80%)}._badge--medium_1e35x_18{background-color:var(--color-warning-variant);color:var(--color-warning);border:1px solid color-mix(in srgb,var(--color-warning),transparent 80%)}._badge--low_1e35x_24{background-color:var(--surface-variant);color:var(--on-surface-variant);border:1px solid var(--border)}._badge--size-small_1e35x_30{width:1.5rem;height:1.5rem;border-radius:.375rem;font-size:.75rem}._badge--size-large_1e35x_37{width:2.25rem;height:2.25rem;border-radius:.5rem;font-size:1.125rem}._badge--size-large_1e35x_37._badge--low_1e35x_24{font-size:.875rem}._badge_1j9lv_3{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;background-color:var(--surface-variant);border-radius:2rem;font-size:.8125rem;font-weight:500}._status-dropdown_15zae_3{position:relative;display:inline-block;width:88px}._status-trigger_15zae_9{width:100%!important;justify-content:space-between!important}._status-menu_15zae_14{position:absolute;top:100%;right:0;margin-top:.25rem;background-color:var(--surface);border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);box-shadow:var(--shadow-lg);z-index:100;width:100%;min-width:88px;display:none;padding:.25rem;animation:_fadeIn_15zae_1 .15s ease-out}._status-menu_15zae_14._is-open_15zae_31{display:block}._status-menu-item_15zae_35{width:100%;padding:.5rem .75rem;font-size:.8125rem;text-align:left;background:none;border:none;cursor:pointer;border-radius:calc(var(--radius) - 4px);color:var(--on-surface);transition:background-color .1s}._status-menu-item_15zae_35:hover{background-color:var(--surface-variant)}._status-menu-item_15zae_35._is-active_15zae_52{font-weight:500}._icon_15zae_56{width:1rem;height:1rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}._icon-sm_15zae_65{width:.875rem;height:.875rem}@keyframes _fadeIn_15zae_1{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}._checklist_1iobh_3{gap:.5rem}._checkItem_1iobh_7{display:flex;align-items:center;gap:.5rem;font-size:.875rem;padding:0}._checkItem_1iobh_7 input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--primary);cursor:pointer}._checkItem_1iobh_7 label{cursor:pointer}._checkItem_1iobh_7._is-done_1iobh_26 label{text-decoration:line-through;color:var(--on-surface-variant)}._checklist--readonly_1iobh_31 ._checkItem_1iobh_7 label{cursor:pointer}._checklist--readonly_1iobh_31 ._checkItem_1iobh_7 input[type=checkbox]{pointer-events:all}._formControl_1iobh_39{width:100%;padding:.125rem;border:none;background:transparent;color:var(--on-surface);font-family:inherit;font-size:.875rem;border-radius:calc(var(--radius) - 2px);transition:background-color .2s}._formControl_1iobh_39:focus{outline:none;background-color:var(--surface)}._is-done_1iobh_26 ._formControl_1iobh_39{text-decoration:line-through;color:var(--on-surface-variant)}._searchInput_16e7c_3{display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border:1px solid var(--border);border-radius:1rem;background-color:var(--surface-variant);transition:border-color .15s ease,box-shadow .15s ease;min-width:200px}._searchInput_16e7c_3:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary),transparent 85%)}._icon_16e7c_20{width:14px;height:14px;color:var(--on-surface-variant);flex-shrink:0}._field_16e7c_27{border:none;background:none;font-family:var(--font-inter);font-size:.8125rem;color:var(--on-surface);outline:none;width:100%}._field_16e7c_27::placeholder{color:var(--on-surface-variant)}@media(max-width:1024px){._searchInput_16e7c_3{min-width:160px}}@media(max-width:640px){._searchInput_16e7c_3{flex:1;min-width:0}}._btn_6gx9b_3{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;border:1px solid var(--border);background:none;border-radius:calc(var(--radius) - 2px);font-family:var(--font-inter);font-size:.6875rem;font-weight:500;color:var(--on-surface-variant);cursor:pointer;transition:all .15s ease}._btn_6gx9b_3:hover{border-color:color-mix(in srgb,var(--primary),transparent 60%);color:var(--primary);background-color:var(--primary-container)}._btn_6gx9b_3:focus-visible{outline:2px solid var(--primary);outline-offset:1px}._chevron_6gx9b_30{width:12px;height:12px;transition:transform .2s ease;flex-shrink:0}._btn--open_6gx9b_37 ._chevron_6gx9b_30{transform:rotate(180deg)}._circle_gvt69_3{position:relative;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center}._svg_gvt69_12{width:100%;height:100%;transform:rotate(-90deg)}._track_gvt69_18{fill:none;stroke:var(--surface-variant);stroke-width:3}._fill_gvt69_24{fill:none;stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset .4s ease}._label_gvt69_31{position:absolute;font-family:var(--font-grotesk);font-size:.5625rem;font-weight:600;color:var(--on-surface)}._bar_l0q8t_3{display:flex;align-items:center;gap:.5rem}._track_l0q8t_9{width:60px;height:4px;background-color:var(--surface-variant);border-radius:2px;overflow:hidden}._fill_l0q8t_17{height:100%;border-radius:2px;background:var(--gradient-primary)}._value_l0q8t_23{font-family:var(--font-grotesk);font-size:.75rem;font-weight:500;color:var(--on-surface-variant);min-width:28px}._empty_26icj_3{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem;text-align:center}._icon_26icj_12{width:48px;height:48px;color:var(--on-surface-light);margin-bottom:1rem}._title_26icj_19{font-family:var(--font-clash);font-size:1.125rem;font-weight:500;color:var(--on-surface);margin-bottom:.25rem}._text_26icj_27{font-size:.8125rem;color:var(--on-surface-variant)}._toggle_176y2_3{display:inline-flex;background-color:var(--surface-variant);border-radius:calc(var(--radius) - 2px);padding:3px;gap:2px}._btn_176y2_11{display:inline-flex;align-items:center;gap:.375rem;padding:.375rem .75rem;border:none;background:none;border-radius:calc(var(--radius) - 4px);font-family:var(--font-inter);font-size:.8125rem;font-weight:500;color:var(--on-surface-variant);cursor:pointer;transition:all .15s ease;white-space:nowrap}._btn_176y2_11:hover{color:var(--on-surface)}._btn_176y2_11:focus-visible{outline:2px solid var(--primary);outline-offset:1px}._btn--active_176y2_37{background-color:var(--surface);color:var(--on-surface);box-shadow:var(--shadow-sm)}._icon_176y2_43{width:16px;height:16px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}._icon_176y2_43>svg{width:100%;height:100%}._dashboard_wq6z7_4{width:100%;display:grid;grid-template-columns:35% 65%;gap:1.5rem}@media(max-width:1024px){._dashboard_wq6z7_4{grid-template-columns:1fr}}._sectionTitle_wq6z7_18{font-family:var(--font-clash);font-size:1.5rem;font-weight:500;color:var(--on-surface);margin:0 0 1.5rem}._statusLegend_wq6z7_27{display:flex;flex-direction:column;gap:.75rem}._projectFilters_wq6z7_34{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;padding:0 2.5%;flex-wrap:wrap;gap:1rem}._projectFilters_wq6z7_34 ._sectionTitle_wq6z7_18{margin-bottom:0}._projectFilters__search_wq6z7_48{padding:.5rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background-color:var(--surface-variant);font-family:var(--font-inter);font-size:.875rem;color:var(--on-surface);width:250px;transition:border-color .2s,box-shadow .2s}._projectFilters__search_wq6z7_48:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary),transparent 80%)}._taskItem_77jzk_4{display:grid;grid-template-columns:55% 15% 30%;align-items:center;gap:0;padding:.75rem 5%;font-family:var(--font-inter)}._taskItem__content_77jzk_14{display:flex;flex-direction:column;gap:.375rem;min-width:0}._taskItem__titleGroup_77jzk_21{display:flex;align-items:center;gap:.375rem;min-width:0}._taskItem__title_77jzk_21{color:var(--on-surface);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.875rem;font-weight:500;line-height:1.25rem;font-family:var(--font-inter)}._taskItem__meta_77jzk_41{display:flex;align-items:center;gap:1.25rem;color:var(--on-surface-variant);font-size:.625rem;line-height:.875rem;font-family:var(--font-inter);min-width:0}._metaUser_77jzk_52{display:flex;align-items:center;flex-shrink:0}._metaProject_77jzk_58{display:flex;align-items:center;gap:.375rem;color:var(--on-surface-variant);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.75rem;flex:0 1 auto}._metaProject_77jzk_58 ._icon-sm_77jzk_71{flex-shrink:0}._taskItem__deadline_77jzk_76{white-space:nowrap;font-variant-numeric:tabular-nums;text-align:right;font-family:var(--font-grotesk);font-size:.75rem;line-height:1rem}._deadline-urgent_77jzk_85{color:var(--color-danger);font-weight:500}._deadline-normal_77jzk_90{color:var(--on-surface-variant)}._taskItem__actions_77jzk_95{display:flex;align-items:center;gap:.5rem;justify-content:flex-end}._icon-sm_77jzk_71{width:.875rem;height:.875rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}@media(max-width:640px){._taskItem_77jzk_4{grid-template-columns:1fr auto;grid-template-rows:auto auto;grid-template-areas:"content actions" "deadline actions";gap:.25rem .75rem}._taskItem__content_77jzk_14{grid-area:content}._taskItem__deadline_77jzk_76{grid-area:deadline;text-align:left}._taskItem__actions_77jzk_95{grid-area:actions;align-self:center}}._modal-overlay_m18cx_4{position:fixed;inset:0;background-color:#0f172a66;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:50;opacity:0;pointer-events:none;transition:opacity .2s ease-out;padding:1rem}._modal-overlay_m18cx_4._is-active_m18cx_19{opacity:1;pointer-events:all}._modal-content_m18cx_25{background-color:var(--surface);color:var(--on-surface);font-family:var(--font-inter);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:600px;max-height:90vh;display:flex;flex-direction:column;transform:scale(.95) translateY(10px);transition:transform .2s ease-out;overflow:hidden}._modal-overlay_m18cx_4._is-active_m18cx_19 ._modal-content_m18cx_25{transform:scale(1) translateY(0)}._modal-header_m18cx_46{padding:1.25rem 1.5rem;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}._modal-header-title_m18cx_55{margin:0;font-family:var(--font-clash);font-weight:500;font-size:1.25rem;line-height:1.75rem;color:var(--on-surface)}._modal-body_m18cx_65{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1.5rem;scrollbar-width:thin;scrollbar-color:var(--border) transparent}._modal-body_m18cx_65::-webkit-scrollbar{width:4px}._modal-body_m18cx_65::-webkit-scrollbar-thumb{background-color:var(--border);border-radius:2px}._modal-footer_m18cx_84{padding:1rem 1.5rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.5rem;background:var(--surface-hover);flex-shrink:0}._view-group_m18cx_95{display:flex;flex-direction:column;gap:.375rem}._view-label_m18cx_101{font-size:.625rem;line-height:.875rem;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.08em;font-weight:600;font-family:var(--font-inter)}._view-badge-row_m18cx_111{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-start}._view-task-title_m18cx_118{margin:0;font-family:var(--font-clash);font-weight:600;font-size:1.25rem;line-height:1.4;color:var(--on-surface)}._view-value-strong_m18cx_127{font-family:var(--font-grotesk);font-weight:500;font-size:.9375rem;color:var(--on-surface)}._view-description_m18cx_134{font-size:.875rem;line-height:1.6;margin:0;color:var(--on-surface);font-family:var(--font-inter)}._text-muted_m18cx_142{color:var(--on-surface-variant);font-style:italic}._form-group_m18cx_148{display:flex;flex-direction:column;gap:.5rem}._form-row_m18cx_154{display:grid;grid-template-columns:1fr 1fr;gap:1rem}._form-label_m18cx_160{font-size:.625rem;line-height:.875rem;font-weight:600;color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.08em;font-family:var(--font-inter)}._form-control_m18cx_170{width:100%;padding:.625rem .75rem;border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);background-color:var(--surface);color:var(--on-surface);font-family:var(--font-inter);font-size:.875rem;line-height:1.25rem;transition:border-color .2s,box-shadow .2s;box-sizing:border-box;appearance:auto}._form-control_m18cx_170:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary),transparent 88%)}._textarea_m18cx_191{resize:vertical;min-height:80px}._icon_m18cx_197{width:1.25rem;height:1.25rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}._icon-pencil_m18cx_207{width:.875rem;height:.875rem;fill:currentColor}@media(max-width:640px){._form-row_m18cx_154{grid-template-columns:1fr}}:root{--surface: #ffffff;--surface-variant: #f0f1f2;--surface-hover: #f7f7f7;--border: #e0e4eb;--border-variant: rgba(0, 20, 41, .1);--on-surface: #001429;--on-surface-variant: #576472;--on-surface-light: #9aa2aa;--primary: #0073e6;--primary-variant: rgba(0, 115, 230, .07);--primary-container: rgba(0, 115, 230, .05);--error: #bd0c38;--error-variant: rgba(189, 12, 56, .07);--color-success: #1ec489;--color-success-dark: #148a5f;--color-success-variant: rgba(69, 220, 166, .2);--color-warning: #efaf55;--color-warning-dark: #b07a1e;--color-warning-variant: rgba(239, 175, 85, .25);--color-info: #8c46c4;--color-info-variant: rgba(169, 62, 255, .15);--color-danger: #f34e2a;--color-danger-variant: rgba(243, 78, 42, .2);--lifecycle-active: var(--color-success);--lifecycle-active-dark: var(--color-success-dark);--lifecycle-nrnd: var(--color-warning);--lifecycle-nrnd-dark: var(--color-warning-dark);--lifecycle-eol: var(--error);--lifecycle-production: var(--primary);--inventory-high: var(--color-success);--inventory-high-dark: var(--color-success-dark);--inventory-medium: var(--color-warning);--inventory-medium-dark: var(--color-warning-dark);--inventory-low: var(--error);--destructive: #bd0c38;--score-high: #1ec489;--score-medium: #efaf55;--score-low: #f34e2a;--sidebar-background: #ffffff;--sidebar-foreground: #001429;--sidebar-primary: #0073e6;--sidebar-accent: #f0f1f2;--sidebar-border: #e0e4eb;--status-alle: #576472;--status-neu: #0073e6;--status-offen: #efaf55;--status-in-prufung: #f34e2a;--status-validierung: #1ec489;--status-abgeschlossen: #1ec489;--radius: .5rem;--font-inter: "Inter", sans-serif;--font-clash: "Clash Grotesk", sans-serif;--font-grotesk: "Space Grotesk", sans-serif;--shadow-sm: 0 1px 2px 0 rgba(0, 20, 41, .04);--shadow-md: 0 4px 6px -1px rgba(0, 20, 41, .08);--shadow-lg: 0 10px 15px -3px rgba(0, 20, 41, .1);--shadow-card: 0 2px 8px rgba(0, 20, 41, .06);--gradient-primary: linear-gradient(135deg, #0073e6, #0053a3);--gradient-header: linear-gradient(135deg, #0053a3, #0073e6)}@media(prefers-color-scheme:dark){:root{--surface: #000000;--surface-variant: #18191b;--surface-hover: #0d0d0d;--border: #14181f;--border-variant: rgba(255, 255, 255, .1);--on-surface: #ffffff;--on-surface-variant: #9aa2aa;--on-surface-light: #576472;--primary: #0073e6;--primary-variant: rgba(0, 115, 230, .07);--primary-container: rgba(0, 115, 230, .05);--error: #bd0c38;--error-variant: rgba(189, 12, 56, .07);--color-success: #1ec489;--color-success-variant: rgba(69, 220, 166, .2);--color-warning: #efaf55;--color-warning-variant: rgba(239, 175, 85, .25);--color-info: #8c46c4;--color-info-variant: rgba(169, 62, 255, .15);--color-danger: #f34e2a;--color-danger-variant: rgba(243, 78, 42, .2);--sidebar-background: #000000;--sidebar-foreground: #ffffff;--sidebar-primary: #0073e6;--sidebar-accent: #18191b;--sidebar-border: #14181f;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5);--shadow-card: 0 2px 8px rgba(0, 0, 0, .3)}}._icon_1rthp_4{width:1rem;height:1rem;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;fill:none}._icon-sm_1rthp_14{width:.875rem;height:.875rem}')),document.head.appendChild(r)}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
2
+ import { jsx as e, jsxs as c, Fragment as Le } from "react/jsx-runtime";
3
+ import p, { useCallback as ze, useState as A, useRef as Re, useEffect as le, useMemo as Z } from "react";
4
+ function pe(t) {
5
+ var a, n, r = "";
6
+ if (typeof t == "string" || typeof t == "number") r += t;
7
7
  else if (typeof t == "object") if (Array.isArray(t)) {
8
8
  var i = t.length;
9
- for (l = 0; l < i; l++) t[l] && (r = X(t[l])) && (o && (o += " "), o += r);
10
- } else for (r in t) t[r] && (o && (o += " "), o += r);
11
- return o;
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);
11
+ return r;
12
12
  }
13
- function p() {
14
- for (var t, l, r = 0, o = "", i = arguments.length; r < i; r++) (t = arguments[r]) && (l = X(t)) && (o && (o += " "), o += l);
15
- return o;
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);
15
+ return r;
16
16
  }
17
- const Q = {
17
+ const Te = "_tableContainer_133qi_4", De = "_table_133qi_4", Pe = "_table__head_133qi_18", Me = "_sortable_133qi_32", Ee = "_sortIndicator_133qi_48", Be = "_colResizeHandle_133qi_61", Fe = "_table__row_133qi_87", j = {
18
+ tableContainer: Te,
19
+ table: De,
20
+ table__head: Pe,
21
+ sortable: Me,
22
+ sortIndicator: Ee,
23
+ colResizeHandle: Be,
24
+ "table--resizing": "_table--resizing_133qi_77",
25
+ table__row: Fe,
26
+ "table__row--animated": "_table__row--animated_133qi_108",
27
+ "col-hide-tablet": "_col-hide-tablet_133qi_131",
28
+ "col-hide-mobile": "_col-hide-mobile_133qi_137"
29
+ };
30
+ function Oe({
31
+ columns: t,
32
+ rows: a,
33
+ rowKey: n,
34
+ renderCell: r,
35
+ sortColumn: i,
36
+ sortDirection: u,
37
+ onSort: l,
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 = ze(
50
+ (s, N, I) => {
51
+ const L = N.offsetWidth, F = N.closest("table"), S = (Q) => {
52
+ const Ae = Q.clientX - I, J = Math.max(60, L + Ae);
53
+ N.style.width = `${J}px`, N.style.minWidth = `${J}px`, m?.(s, J);
54
+ }, z = () => {
55
+ F?.classList.remove(j["table--resizing"]), document.removeEventListener("mousemove", S), document.removeEventListener("mouseup", z);
56
+ };
57
+ F?.classList.add(j["table--resizing"]), document.addEventListener("mousemove", S), document.addEventListener("mouseup", z);
58
+ },
59
+ [m]
60
+ );
61
+ return /* @__PURE__ */ e("div", { ref: y, className: g(j.tableContainer, k), tabIndex: 0, ...v, children: /* @__PURE__ */ c("table", { className: j.table, "aria-label": f, children: [
62
+ /* @__PURE__ */ e("thead", { className: j.table__head, children: /* @__PURE__ */ e("tr", { children: t.map((s) => {
63
+ const N = g({
64
+ [j["col-hide-tablet"]]: s.hideTablet,
65
+ [j["col-hide-mobile"]]: s.hideMobile
66
+ }), I = _[s.key] ? { width: `${_[s.key]}px`, minWidth: `${_[s.key]}px` } : s.width != null ? { width: typeof s.width == "number" ? `${s.width}px` : s.width, minWidth: typeof s.width == "number" ? `${s.width}px` : s.width } : void 0, L = i === s.key, F = L ? u === "asc" ? "ascending" : "descending" : void 0;
67
+ return /* @__PURE__ */ c(
68
+ "th",
69
+ {
70
+ scope: "col",
71
+ className: g(N || void 0, { [j.sortable]: s.sortable }),
72
+ style: I,
73
+ "aria-sort": F,
74
+ tabIndex: s.sortable ? 0 : void 0,
75
+ onClick: (S) => {
76
+ h && S.target.closest(`.${j.colResizeHandle}`) || s.sortable && l && l(s.key);
77
+ },
78
+ onKeyDown: (S) => {
79
+ (S.key === "Enter" || S.key === " ") && s.sortable && l && (S.preventDefault(), l(s.key));
80
+ },
81
+ children: [
82
+ s.headerContent != null ? s.headerContent : /* @__PURE__ */ c(Le, { children: [
83
+ s.label,
84
+ s.sortable && /* @__PURE__ */ e("span", { className: j.sortIndicator, "aria-hidden": "true", children: L ? u === "asc" ? "↑" : "↓" : "↕" })
85
+ ] }),
86
+ h && /* @__PURE__ */ e(
87
+ "span",
88
+ {
89
+ className: j.colResizeHandle,
90
+ "data-resize-col": s.key,
91
+ onMouseDown: (S) => {
92
+ S.preventDefault(), S.stopPropagation();
93
+ const z = S.target.closest("th");
94
+ b(s.key, z, S.clientX);
95
+ }
96
+ }
97
+ )
98
+ ]
99
+ },
100
+ s.key
101
+ );
102
+ }) }) }),
103
+ /* @__PURE__ */ e("tbody", { children: a.map((s, N) => {
104
+ const I = n(s, N), L = x?.(s, N), F = C?.(s) ?? {}, S = o?.(s, N) ?? null;
105
+ return /* @__PURE__ */ c(p.Fragment, { children: [
106
+ /* @__PURE__ */ e(
107
+ "tr",
108
+ {
109
+ className: g(
110
+ j.table__row,
111
+ { [j["table__row--animated"]]: w },
112
+ L
113
+ ),
114
+ style: w ? { animationDelay: `${N * 20}ms` } : void 0,
115
+ ...F,
116
+ children: t.map((z) => {
117
+ const Q = g({
118
+ [j["col-hide-tablet"]]: z.hideTablet,
119
+ [j["col-hide-mobile"]]: z.hideMobile
120
+ });
121
+ return /* @__PURE__ */ e("td", { className: Q || void 0, children: r(s, z, N) }, z.key);
122
+ })
123
+ }
124
+ ),
125
+ S
126
+ ] }, I);
127
+ }) })
128
+ ] }) });
129
+ }
130
+ const we = p.forwardRef(Oe);
131
+ we.displayName = "BaseTable";
132
+ const qe = "_widgetCard_gx9fj_4", We = "_fadeIn_gx9fj_1", Ve = "_widgetCard__header_gx9fj_23", He = "_widgetCard__title_gx9fj_37", Ge = "_widgetCard__content_gx9fj_52", E = {
133
+ widgetCard: qe,
134
+ fadeIn: We,
135
+ "widgetCard--half": "_widgetCard--half_gx9fj_18",
136
+ widgetCard__header: Ve,
137
+ "widgetCard--full": "_widgetCard--full_gx9fj_33",
138
+ widgetCard__title: He,
139
+ widgetCard__content: Ge,
140
+ "widgetCard__content--scrollable": "_widgetCard__content--scrollable_gx9fj_56",
141
+ "widgetCard__content--padded": "_widgetCard__content--padded_gx9fj_76"
142
+ }, U = p.forwardRef(
143
+ ({
144
+ title: t,
145
+ headerAction: a,
146
+ variant: n = "half",
147
+ scrollable: r = !1,
148
+ padded: i = !1,
149
+ as: u = "div",
150
+ children: l,
151
+ className: h,
152
+ ..._
153
+ }, m) => {
154
+ const o = t != null || a != null;
155
+ return /* @__PURE__ */ c(
156
+ u,
157
+ {
158
+ ref: m,
159
+ className: g(
160
+ E.widgetCard,
161
+ E[`widgetCard--${n}`],
162
+ h
163
+ ),
164
+ ..._,
165
+ children: [
166
+ o && /* @__PURE__ */ c("header", { className: E.widgetCard__header, children: [
167
+ t != null && /* @__PURE__ */ e("h2", { className: E.widgetCard__title, children: t }),
168
+ a
169
+ ] }),
170
+ /* @__PURE__ */ e(
171
+ "div",
172
+ {
173
+ className: g(
174
+ E.widgetCard__content,
175
+ { [E["widgetCard__content--scrollable"]]: r },
176
+ { [E["widgetCard__content--padded"]]: i }
177
+ ),
178
+ children: l
179
+ }
180
+ )
181
+ ]
182
+ }
183
+ );
184
+ }
185
+ );
186
+ U.displayName = "WidgetCard";
187
+ const Ke = "_dataCard_19cka_3", ue = {
188
+ dataCard: Ke,
189
+ "dataCard--clickable": "_dataCard--clickable_19cka_18"
190
+ }, Ue = p.forwardRef(
191
+ ({ onClick: t, className: a, children: n, ...r }, i) => {
192
+ const u = t != null;
193
+ return /* @__PURE__ */ e(
194
+ "div",
195
+ {
196
+ ref: i,
197
+ className: g(
198
+ ue.dataCard,
199
+ { [ue["dataCard--clickable"]]: u },
200
+ a
201
+ ),
202
+ onClick: t,
203
+ tabIndex: u ? 0 : void 0,
204
+ role: u ? "button" : void 0,
205
+ onKeyDown: u ? (l) => {
206
+ (l.key === "Enter" || l.key === " ") && (l.preventDefault(), t?.(l));
207
+ } : void 0,
208
+ ...r,
209
+ children: n
210
+ }
211
+ );
212
+ }
213
+ );
214
+ Ue.displayName = "DataCard";
215
+ const Qe = "_baseList_47qml_3", me = {
216
+ baseList: Qe,
217
+ "baseList--scrollable": "_baseList--scrollable_47qml_8"
218
+ }, ce = p.forwardRef(
219
+ ({ scrollable: t = !1, className: a, children: n, ...r }, i) => /* @__PURE__ */ e(
220
+ "div",
221
+ {
222
+ ref: i,
223
+ role: "list",
224
+ className: g(
225
+ me.baseList,
226
+ { [me["baseList--scrollable"]]: t },
227
+ a
228
+ ),
229
+ ...r,
230
+ children: n
231
+ }
232
+ )
233
+ );
234
+ ce.displayName = "BaseList";
235
+ const Je = "_listItem_1ssj2_3", Ze = "_listItem__leading_1ssj2_31", Xe = "_listItem__content_1ssj2_37", Ye = "_listItem__trailing_1ssj2_42", O = {
236
+ listItem: Je,
237
+ "listItem--clickable": "_listItem--clickable_1ssj2_21",
238
+ listItem__leading: Ze,
239
+ listItem__content: Xe,
240
+ listItem__trailing: Ye
241
+ }, Ne = p.forwardRef(
242
+ ({ leading: t, trailing: a, onClick: n, as: r = "div", className: i, children: u, ...l }, h) => {
243
+ const _ = n != null, m = (o) => {
244
+ _ && (o.key === "Enter" || o.key === " ") && (o.preventDefault(), n?.());
245
+ };
246
+ return /* @__PURE__ */ c(
247
+ r,
248
+ {
249
+ ref: h,
250
+ role: "listitem",
251
+ tabIndex: 0,
252
+ className: g(
253
+ O.listItem,
254
+ { [O["listItem--clickable"]]: _ },
255
+ i
256
+ ),
257
+ onClick: _ ? n : void 0,
258
+ onKeyDown: m,
259
+ ...l,
260
+ children: [
261
+ t != null && /* @__PURE__ */ e("div", { className: O.listItem__leading, children: t }),
262
+ /* @__PURE__ */ e("div", { className: O.listItem__content, children: u }),
263
+ a != null && /* @__PURE__ */ e("div", { className: O.listItem__trailing, children: a })
264
+ ]
265
+ }
266
+ );
267
+ }
268
+ );
269
+ Ne.displayName = "ListItem";
270
+ const he = {
18
271
  "status-badge": "_status-badge_c7rzu_3",
19
272
  "status-badge--neu": "_status-badge--neu_c7rzu_26",
20
273
  "status-badge--offen": "_status-badge--offen_c7rzu_31",
21
274
  "status-badge--in-prufung": "_status-badge--in-prufung_c7rzu_36",
22
275
  "status-badge--validierung": "_status-badge--validierung_c7rzu_41",
23
276
  "status-badge--abgeschlossen": "_status-badge--abgeschlossen_c7rzu_46"
24
- }, ce = {
277
+ }, et = {
25
278
  neu: "Neu",
26
279
  offen: "Offen",
27
280
  "in-prufung": "In Prüfung",
28
281
  validierung: "Validierung",
29
282
  abgeschlossen: "Abgeschlossen"
30
- }, ee = w.forwardRef(
31
- ({ status: t, color: l, backgroundColor: r, className: o, style: i, ..._ }, u) => {
32
- const b = {
283
+ }, ke = p.forwardRef(
284
+ ({ status: t, color: a, backgroundColor: n, className: r, style: i, ...u }, l) => {
285
+ const h = {
33
286
  ...i,
34
- "--custom-color": l,
35
- "--custom-bg": r
287
+ "--custom-color": a,
288
+ "--custom-bg": n
36
289
  };
37
290
  return /* @__PURE__ */ e(
38
291
  "span",
39
292
  {
40
- ref: u,
41
- className: p(Q["status-badge"], Q[`status-badge--${t}`], o),
42
- style: b,
43
- ..._,
44
- children: ce[t]
293
+ ref: l,
294
+ className: g(he["status-badge"], he[`status-badge--${t}`], r),
295
+ style: h,
296
+ ...u,
297
+ children: et[t]
45
298
  }
46
299
  );
47
300
  }
48
301
  );
49
- ee.displayName = "StatusBadge";
50
- const Z = {
51
- "favorite-btn": "_favorite-btn_1jlmc_3",
52
- "favorite-btn--active": "_favorite-btn--active_1jlmc_23"
53
- }, ae = w.forwardRef(
54
- ({ pressed: t, projectName: l, onToggle: r, color: o, activeColor: i, className: _, style: u, onClick: b, ...m }, g) => {
55
- const a = {
56
- ...u,
57
- "--custom-color": o,
58
- "--custom-active-color": i
59
- }, f = t ? `Von Favoriten entfernen: ${l}` : `Zu Favoriten hinzufügen: ${l}`;
302
+ ke.displayName = "StatusBadge";
303
+ const X = {
304
+ "favorite-btn": "_favorite-btn_1fvb2_3",
305
+ "favorite-btn--active": "_favorite-btn--active_1fvb2_23",
306
+ "favorite-btn--md": "_favorite-btn--md_1fvb2_28",
307
+ "favorite-btn--sm": "_favorite-btn--sm_1fvb2_39"
308
+ }, ye = p.forwardRef(
309
+ ({ pressed: t, projectName: a, onToggle: n, size: r = "md", color: i, activeColor: u, className: l, style: h, onClick: _, ...m }, o) => {
310
+ const w = {
311
+ ...h,
312
+ "--custom-color": i,
313
+ "--custom-active-color": u
314
+ }, x = t ? `Von Favoriten entfernen: ${a}` : `Zu Favoriten hinzufügen: ${a}`;
60
315
  return /* @__PURE__ */ e(
61
316
  "button",
62
317
  {
63
- ref: g,
318
+ ref: o,
64
319
  type: "button",
65
- className: p(
66
- Z["favorite-btn"],
67
- { [Z["favorite-btn--active"]]: t },
68
- _
320
+ className: g(
321
+ X["favorite-btn"],
322
+ X[`favorite-btn--${r}`],
323
+ { [X["favorite-btn--active"]]: t },
324
+ l
69
325
  ),
70
- style: a,
326
+ style: w,
71
327
  "aria-pressed": t,
72
- "aria-label": f,
73
- onClick: (j) => {
74
- r?.(!t), b?.(j);
328
+ "aria-label": x,
329
+ onClick: (C) => {
330
+ n?.(!t), _?.(C);
75
331
  },
76
332
  ...m,
77
333
  children: /* @__PURE__ */ e(
@@ -90,8 +346,8 @@ const Z = {
90
346
  );
91
347
  }
92
348
  );
93
- ae.displayName = "FavoriteButton";
94
- const $ = {
349
+ ye.displayName = "FavoriteButton";
350
+ const B = {
95
351
  "status-legend__item": "_status-legend__item_1xv4z_3",
96
352
  "status-legend__item--active": "_status-legend__item--active_1xv4z_22",
97
353
  "status-legend__label-wrap": "_status-legend__label-wrap_1xv4z_27",
@@ -104,45 +360,45 @@ const $ = {
104
360
  "color-validierung": "_color-validierung_1xv4z_69",
105
361
  "color-abgeschlossen": "_color-abgeschlossen_1xv4z_73",
106
362
  "color-alle": "_color-alle_1xv4z_77"
107
- }, te = w.forwardRef(
108
- ({ status: t, label: l, count: r, active: o = !1, color: i, className: _, style: u, ...b }, m) => {
109
- const g = {
110
- ...u,
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,
111
367
  "--custom-color": i
112
368
  };
113
- return /* @__PURE__ */ n(
369
+ return /* @__PURE__ */ c(
114
370
  "button",
115
371
  {
116
- ref: m,
372
+ ref: _,
117
373
  type: "button",
118
374
  role: "option",
119
- "aria-selected": o,
120
- className: p(
121
- $["status-legend__item"],
122
- { [$["status-legend__item--active"]]: o },
123
- _
375
+ "aria-selected": r,
376
+ className: g(
377
+ B["status-legend__item"],
378
+ { [B["status-legend__item--active"]]: r },
379
+ u
124
380
  ),
125
- style: g,
126
- ...b,
381
+ style: m,
382
+ ...h,
127
383
  children: [
128
- /* @__PURE__ */ n("div", { className: $["status-legend__label-wrap"], children: [
384
+ /* @__PURE__ */ c("div", { className: B["status-legend__label-wrap"], children: [
129
385
  /* @__PURE__ */ e(
130
386
  "span",
131
387
  {
132
- className: p($["status-legend__color"], $[`color-${t}`]),
388
+ className: g(B["status-legend__color"], B[`color-${t}`]),
133
389
  "aria-hidden": "true"
134
390
  }
135
391
  ),
136
- /* @__PURE__ */ e("span", { className: $["status-legend__label"], children: l })
392
+ /* @__PURE__ */ e("span", { className: B["status-legend__label"], children: a })
137
393
  ] }),
138
- /* @__PURE__ */ e("span", { className: $["status-legend__count"], children: r })
394
+ /* @__PURE__ */ e("span", { className: B["status-legend__count"], children: n })
139
395
  ]
140
396
  }
141
397
  );
142
398
  }
143
399
  );
144
- te.displayName = "StatusLegendItem";
145
- const P = {
400
+ Ce.displayName = "StatusLegendItem";
401
+ const T = {
146
402
  "status-overview__chart-container": "_status-overview__chart-container_6nwc9_3",
147
403
  "status-chart-svg": "_status-chart-svg_6nwc9_13",
148
404
  "status-chart__segment": "_status-chart__segment_6nwc9_23",
@@ -151,334 +407,330 @@ const P = {
151
407
  "status-chart__hole": "_status-chart__hole_6nwc9_40",
152
408
  "status-chart__total-value": "_status-chart__total-value_6nwc9_55",
153
409
  "status-chart__total-label": "_status-chart__total-label_6nwc9_63"
154
- }, se = w.forwardRef(
155
- ({ data: t, totalLabel: l = "Gesamt", onSegmentClick: r, className: o, ...i }, _) => {
156
- const [u, b] = z(null), m = t.reduce((k, c) => k + c.value, 0), g = 240, a = g / 2, f = 100, j = 40, y = f - j / 2, v = y * 2 * Math.PI;
157
- return /* @__PURE__ */ n(
410
+ }, xe = p.forwardRef(
411
+ ({ data: t, totalLabel: a = "Gesamt", onSegmentClick: n, className: r, ...i }, u) => {
412
+ const [l, h] = A(null), _ = t.reduce((k, v) => k + v.value, 0), m = 240, o = m / 2, w = 100, x = 40, C = w - x / 2, f = C * 2 * Math.PI;
413
+ return /* @__PURE__ */ c(
158
414
  "div",
159
415
  {
160
- ref: _,
161
- className: p(P["status-overview__chart-container"], o),
416
+ ref: u,
417
+ className: g(T["status-overview__chart-container"], r),
162
418
  ...i,
163
419
  children: [
164
420
  /* @__PURE__ */ e(
165
421
  "svg",
166
422
  {
167
- viewBox: `0 0 ${g} ${g}`,
168
- className: P["status-chart-svg"],
423
+ viewBox: `0 0 ${m} ${m}`,
424
+ className: T["status-chart-svg"],
169
425
  role: "img",
170
426
  "aria-label": "Kreisdiagramm der Projektstatus-Verteilung",
171
427
  overflow: "visible",
172
- children: m === 0 ? /* @__PURE__ */ e(
428
+ children: _ === 0 ? /* @__PURE__ */ e(
173
429
  "circle",
174
430
  {
175
- cx: a,
176
- cy: a,
177
- r: y,
431
+ cx: o,
432
+ cy: o,
433
+ r: C,
178
434
  fill: "none",
179
435
  stroke: "hsl(var(--border))",
180
- strokeWidth: j
436
+ strokeWidth: x
181
437
  }
182
438
  ) : (() => {
183
439
  let k = 0;
184
- return t.map((c) => {
185
- if (c.value === 0) return null;
186
- const N = c.value / m * 100, h = N / 100 * v, d = k / 100 * v;
187
- return k += N, /* @__PURE__ */ e(
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(
188
444
  "circle",
189
445
  {
190
- cx: a,
191
- cy: a,
192
- r: y,
446
+ cx: o,
447
+ cy: o,
448
+ r: C,
193
449
  fill: "none",
194
- stroke: c.color,
195
- strokeWidth: j,
196
- strokeDasharray: `${h} ${v}`,
197
- strokeDashoffset: -d,
198
- transform: `rotate(-90 ${a} ${a})`,
199
- className: p(P["status-chart__segment"], {
200
- [P["status-chart__segment--hovered"]]: u === c.status,
201
- [P["status-chart__segment--dimmed"]]: u && u !== c.status
450
+ stroke: v.color,
451
+ strokeWidth: x,
452
+ strokeDasharray: `${b} ${f}`,
453
+ strokeDashoffset: -s,
454
+ transform: `rotate(-90 ${o} ${o})`,
455
+ className: g(T["status-chart__segment"], {
456
+ [T["status-chart__segment--hovered"]]: l === v.status,
457
+ [T["status-chart__segment--dimmed"]]: l && l !== v.status
202
458
  }),
203
- onClick: () => r?.(c.status),
204
- onMouseEnter: () => b(c.status),
205
- onMouseLeave: () => b(null),
206
- style: { cursor: r ? "pointer" : "default" },
207
- children: /* @__PURE__ */ e("title", { children: `${c.label}: ${c.value}` })
459
+ onClick: () => n?.(v.status),
460
+ onMouseEnter: () => h(v.status),
461
+ onMouseLeave: () => h(null),
462
+ style: { cursor: n ? "pointer" : "default" },
463
+ children: /* @__PURE__ */ e("title", { children: `${v.label}: ${v.value}` })
208
464
  },
209
- c.status
465
+ v.status
210
466
  );
211
467
  });
212
468
  })()
213
469
  }
214
470
  ),
215
- /* @__PURE__ */ n("div", { className: P["status-chart__hole"], children: [
216
- /* @__PURE__ */ e("span", { className: P["status-chart__total-value"], children: m }),
217
- /* @__PURE__ */ e("span", { className: P["status-chart__total-label"], children: l })
471
+ /* @__PURE__ */ c("div", { className: T["status-chart__hole"], children: [
472
+ /* @__PURE__ */ e("span", { className: T["status-chart__total-value"], children: _ }),
473
+ /* @__PURE__ */ e("span", { className: T["status-chart__total-label"], children: a })
218
474
  ] })
219
475
  ]
220
476
  }
221
477
  );
222
478
  }
223
479
  );
224
- se.displayName = "StatusChart";
225
- function J(t) {
226
- const l = new Date(t);
227
- if (isNaN(l.getTime())) return "Ungültiges Datum";
228
- const o = (/* @__PURE__ */ new Date()).getTime() - l.getTime(), i = Math.floor(o / (1e3 * 60 * 60 * 24));
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));
229
485
  if (i === 0) return "Heute";
230
486
  if (i === 1) return "Gestern";
231
487
  if (i < 7) return `vor ${i} Tagen`;
232
- const _ = Math.floor(i / 7);
233
- if (_ < 4)
234
- return _ === 1 ? "vor einer Woche" : `vor ${_} Wochen`;
235
- const u = Math.floor(i / 30);
236
- if (u < 12)
237
- return u === 1 ? "vor einem Monat" : `vor ${u} Monaten`;
238
- const b = Math.floor(i / 365);
239
- return b === 1 ? "vor einem Jahr" : `vor ${b} Jahren`;
488
+ const u = Math.floor(i / 7);
489
+ if (u < 4)
490
+ return u === 1 ? "vor einer Woche" : `vor ${u} Wochen`;
491
+ const l = Math.floor(i / 30);
492
+ if (l < 12)
493
+ return l === 1 ? "vor einem Monat" : `vor ${l} Monaten`;
494
+ const h = Math.floor(i / 365);
495
+ return h === 1 ? "vor einem Jahr" : `vor ${h} Jahren`;
240
496
  }
241
- const S = {
242
- "table-container": "_table-container_y8cqq_3",
243
- "project-table": "_project-table_y8cqq_7",
244
- "project-table__head": "_project-table__head_y8cqq_15",
245
- "project-table__row": "_project-table__row_y8cqq_33",
246
- "project-table__name-cell": "_project-table__name-cell_y8cqq_66",
247
- "project-table__favorite": "_project-table__favorite_y8cqq_72",
248
- "project-table__name-wrapper": "_project-table__name-wrapper_y8cqq_76",
249
- "project-table__name": "_project-table__name_y8cqq_66",
250
- "project-table__app": "_project-table__app_y8cqq_92",
251
- "project-table__date-secondary": "_project-table__date-secondary_y8cqq_93",
252
- "project-table__client": "_project-table__client_y8cqq_102",
253
- "project-table__date-main": "_project-table__date-main_y8cqq_103"
254
- }, le = w.forwardRef(
255
- ({ rows: t, onToggleFavorite: l, className: r, ...o }, i) => /* @__PURE__ */ e(
256
- "div",
497
+ const tt = "_nameCell_1n6hv_4", at = "_favorite_1n6hv_10", st = "_nameWrapper_1n6hv_14", lt = "_name_1n6hv_4", nt = "_secondary_1n6hv_31", it = "_client_1n6hv_41", rt = "_dateMain_1n6hv_51", D = {
498
+ nameCell: tt,
499
+ favorite: at,
500
+ nameWrapper: st,
501
+ name: lt,
502
+ secondary: nt,
503
+ client: it,
504
+ dateMain: rt
505
+ }, ot = [
506
+ { key: "name", label: "Projekt / Applikation" },
507
+ { key: "client", label: "Kunde", width: "20%" },
508
+ { key: "status", label: "Status", width: 150 },
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,
257
513
  {
258
514
  ref: i,
259
- className: p(S["table-container"], r),
260
- tabIndex: 0,
261
- ...o,
262
- children: /* @__PURE__ */ n("table", { className: S["project-table"], children: [
263
- /* @__PURE__ */ e("thead", { className: S["project-table__head"], children: /* @__PURE__ */ n("tr", { children: [
264
- /* @__PURE__ */ e("th", { scope: "col", children: "Projekt / Applikation" }),
265
- /* @__PURE__ */ e("th", { scope: "col", children: "Kunde" }),
266
- /* @__PURE__ */ e("th", { scope: "col", children: "Status" }),
267
- /* @__PURE__ */ e("th", { scope: "col", children: "Aktivität" })
268
- ] }) }),
269
- /* @__PURE__ */ e("tbody", { className: S["project-table__body"], children: t.map((_) => /* @__PURE__ */ n(
270
- "tr",
271
- {
272
- className: S["project-table__row"],
273
- "data-status": _.status,
274
- children: [
275
- /* @__PURE__ */ e("td", { children: /* @__PURE__ */ n("div", { className: S["project-table__name-cell"], children: [
276
- /* @__PURE__ */ e(
277
- ae,
278
- {
279
- pressed: _.favorite,
280
- projectName: _.name,
281
- onToggle: (u) => l?.(_.id, u),
282
- className: S["project-table__favorite"]
283
- }
284
- ),
285
- /* @__PURE__ */ n("div", { className: S["project-table__name-wrapper"], title: `${_.name}
286
- ${_.app}`, children: [
287
- /* @__PURE__ */ e("div", { className: S["project-table__name"], children: _.name }),
288
- /* @__PURE__ */ e("div", { className: S["project-table__app"], children: _.app })
289
- ] })
290
- ] }) }),
291
- /* @__PURE__ */ e("td", { title: _.client, children: /* @__PURE__ */ e("span", { className: S["project-table__client"], children: _.client }) }),
292
- /* @__PURE__ */ e("td", { children: /* @__PURE__ */ e(ee, { status: _.status }) }),
293
- /* @__PURE__ */ n("td", { title: `Geändert: ${J(_.updatedAt)}
294
- Erstellt: ${_.createdAt}`, children: [
295
- /* @__PURE__ */ e("div", { className: S["project-table__date-main"], children: J(_.updatedAt) }),
296
- /* @__PURE__ */ n("div", { className: S["project-table__date-secondary"], children: [
297
- "Erstellt: ",
298
- _.createdAt
299
- ] })
515
+ columns: ot,
516
+ rows: t,
517
+ rowKey: (l) => l.id,
518
+ renderCell: (l, h) => {
519
+ switch (h.key) {
520
+ case "name":
521
+ return /* @__PURE__ */ c("div", { className: D.nameCell, children: [
522
+ /* @__PURE__ */ e(
523
+ ye,
524
+ {
525
+ pressed: l.favorite,
526
+ projectName: l.name,
527
+ size: "sm",
528
+ onToggle: (_) => a?.(l.id, _),
529
+ className: D.favorite
530
+ }
531
+ ),
532
+ /* @__PURE__ */ c("div", { className: D.nameWrapper, title: `${l.name}
533
+ ${l.app}`, children: [
534
+ /* @__PURE__ */ e("div", { className: D.name, children: l.name }),
535
+ /* @__PURE__ */ e("div", { className: D.secondary, children: l.app })
300
536
  ] })
301
- ]
302
- },
303
- _.id
304
- )) })
305
- ] })
537
+ ] });
538
+ case "client":
539
+ return /* @__PURE__ */ e("span", { className: D.client, title: l.client, children: l.client });
540
+ case "status":
541
+ return /* @__PURE__ */ e(ke, { status: l.status });
542
+ case "activity":
543
+ return /* @__PURE__ */ c("div", { title: `Geändert: ${ve(l.updatedAt)}
544
+ Erstellt: ${l.createdAt}`, children: [
545
+ /* @__PURE__ */ e("div", { className: D.dateMain, children: ve(l.updatedAt) }),
546
+ /* @__PURE__ */ c("div", { className: D.secondary, children: [
547
+ "Erstellt: ",
548
+ l.createdAt
549
+ ] })
550
+ ] });
551
+ default:
552
+ return null;
553
+ }
554
+ },
555
+ rowDataAttributes: (l) => ({ "data-status": l.status }),
556
+ className: n,
557
+ ...r
306
558
  }
307
559
  )
308
560
  );
309
- le.displayName = "ProjectTable";
310
- const de = "_avatar_17ic7_3", O = {
311
- avatar: de,
561
+ Ie.displayName = "ProjectTable";
562
+ const ct = "_avatar_17ic7_3", ne = {
563
+ avatar: ct,
312
564
  "avatar-group": "_avatar-group_17ic7_18",
313
565
  "group-member": "_group-member_17ic7_23"
314
- }, M = w.forwardRef(
315
- ({ initials: t, name: l, className: r, ...o }, i) => /* @__PURE__ */ e(
566
+ }, V = p.forwardRef(
567
+ ({ initials: t, name: a, className: n, ...r }, i) => /* @__PURE__ */ e(
316
568
  "div",
317
569
  {
318
570
  ref: i,
319
- className: p(O.avatar, r),
320
- title: l,
321
- "aria-label": l,
322
- ...o,
571
+ className: g(ne.avatar, n),
572
+ title: a,
573
+ "aria-label": a,
574
+ ...r,
323
575
  children: t
324
576
  }
325
577
  )
326
578
  );
327
- M.displayName = "Avatar";
328
- const W = w.forwardRef(
329
- ({ children: t, className: l, ...r }, o) => /* @__PURE__ */ e(
579
+ V.displayName = "Avatar";
580
+ const de = p.forwardRef(
581
+ ({ children: t, className: a, ...n }, r) => /* @__PURE__ */ e(
330
582
  "div",
331
583
  {
332
- ref: o,
333
- className: p(O["avatar-group"], l),
334
- ...r,
335
- children: w.Children.map(t, (i) => w.isValidElement(i) ? w.cloneElement(i, {
336
- className: p(i.props.className, O["group-member"])
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"])
337
589
  }) : i)
338
590
  }
339
591
  )
340
592
  );
341
- W.displayName = "AvatarGroup";
342
- const _e = "_btn_7bh63_3", B = {
343
- btn: _e,
593
+ de.displayName = "AvatarGroup";
594
+ const dt = "_btn_7bh63_3", Y = {
595
+ btn: dt,
344
596
  "btn--primary": "_btn--primary_7bh63_27",
345
597
  "btn--outline": "_btn--outline_7bh63_39",
346
598
  "btn--ghost": "_btn--ghost_7bh63_52",
347
599
  "btn--sm": "_btn--sm_7bh63_63"
348
- }, T = w.forwardRef(
349
- ({ variant: t, size: l = "md", className: r, children: o, ...i }, _) => /* @__PURE__ */ e(
600
+ }, R = p.forwardRef(
601
+ ({ variant: t, size: a = "md", className: n, children: r, ...i }, u) => /* @__PURE__ */ e(
350
602
  "button",
351
603
  {
352
- ref: _,
353
- className: p(
354
- B.btn,
604
+ ref: u,
605
+ className: g(
606
+ Y.btn,
355
607
  {
356
- [B[`btn--${t}`]]: t,
357
- [B[`btn--${l}`]]: l && l !== "md"
608
+ [Y[`btn--${t}`]]: t,
609
+ [Y[`btn--${a}`]]: a && a !== "md"
358
610
  },
359
- r
611
+ n
360
612
  ),
361
613
  ...i,
362
- children: o
614
+ children: r
363
615
  }
364
616
  )
365
617
  );
366
- T.displayName = "Button";
367
- const ue = "_badge_1e35x_3", F = {
368
- badge: ue,
618
+ R.displayName = "Button";
619
+ const _t = "_badge_1e35x_3", ee = {
620
+ badge: _t,
369
621
  "badge--high": "_badge--high_1e35x_12",
370
622
  "badge--medium": "_badge--medium_1e35x_18",
371
623
  "badge--low": "_badge--low_1e35x_24",
372
624
  "badge--size-small": "_badge--size-small_1e35x_30",
373
625
  "badge--size-large": "_badge--size-large_1e35x_37"
374
- }, me = {
626
+ }, ut = {
375
627
  high: "!!",
376
628
  medium: "!",
377
629
  low: "-"
378
- }, he = {
630
+ }, mt = {
379
631
  high: "Hohe Priorität",
380
632
  medium: "Mittlere Priorität",
381
633
  low: "Niedrige Priorität"
382
- }, H = w.forwardRef(
383
- ({ level: t, size: l = "small", className: r, "aria-label": o, ...i }, _) => {
384
- const u = he[t];
634
+ }, _e = p.forwardRef(
635
+ ({ level: t, size: a = "small", className: n, "aria-label": r, ...i }, u) => {
636
+ const l = mt[t];
385
637
  return /* @__PURE__ */ e(
386
638
  "span",
387
639
  {
388
- ref: _,
389
- className: p(
390
- F.badge,
391
- F[`badge--${t}`],
392
- F[`badge--size-${l}`],
393
- r
640
+ ref: u,
641
+ className: g(
642
+ ee.badge,
643
+ ee[`badge--${t}`],
644
+ ee[`badge--size-${a}`],
645
+ n
394
646
  ),
395
- "aria-label": o || u,
647
+ "aria-label": r || l,
396
648
  ...i,
397
- children: me[t]
649
+ children: ut[t]
398
650
  }
399
651
  );
400
652
  }
401
653
  );
402
- H.displayName = "PriorityBadge";
403
- const ge = "_badge_1j9lv_3", ve = {
404
- badge: ge
405
- }, V = w.forwardRef(
406
- ({ className: t, children: l, ...r }, o) => /* @__PURE__ */ e(
654
+ _e.displayName = "PriorityBadge";
655
+ const ht = "_badge_1j9lv_3", vt = {
656
+ badge: ht
657
+ }, ie = p.forwardRef(
658
+ ({ className: t, children: a, ...n }, r) => /* @__PURE__ */ e(
407
659
  "span",
408
660
  {
409
- ref: o,
410
- className: p(ve.badge, t),
411
- ...r,
412
- children: l
661
+ ref: r,
662
+ className: g(vt.badge, t),
663
+ ...n,
664
+ children: a
413
665
  }
414
666
  )
415
667
  );
416
- V.displayName = "Badge";
417
- const be = "_icon_15zae_56", L = {
668
+ ie.displayName = "Badge";
669
+ const gt = "_icon_15zae_56", P = {
418
670
  "status-dropdown": "_status-dropdown_15zae_3",
419
671
  "status-trigger": "_status-trigger_15zae_9",
420
672
  "status-menu": "_status-menu_15zae_14",
421
673
  "is-open": "_is-open_15zae_31",
422
674
  "status-menu-item": "_status-menu-item_15zae_35",
423
675
  "is-active": "_is-active_15zae_52",
424
- icon: be,
676
+ icon: gt,
425
677
  "icon-sm": "_icon-sm_15zae_65"
426
- }, ne = w.forwardRef(
427
- ({ value: t, onChange: l, options: r, className: o, "aria-label": i, ..._ }, u) => {
428
- const [b, m] = z(!1), g = oe(null), a = (v) => {
429
- typeof u == "function" ? u(v) : u && (u.current = v), g.current = v;
430
- }, f = r.find((v) => v.value === t) || r[0];
431
- E(() => {
432
- const v = (k) => {
433
- g.current && !g.current.contains(k.target) && m(!1);
678
+ }, Se = p.forwardRef(
679
+ ({ value: t, onChange: a, options: n, className: r, "aria-label": i, ...u }, l) => {
680
+ const [h, _] = A(!1), m = Re(null), o = (f) => {
681
+ typeof l == "function" ? l(f) : l && (l.current = f), m.current = f;
682
+ }, w = n.find((f) => f.value === t) || n[0];
683
+ le(() => {
684
+ const f = (k) => {
685
+ m.current && !m.current.contains(k.target) && _(!1);
434
686
  };
435
- return document.addEventListener("mousedown", v), () => document.removeEventListener("mousedown", v);
687
+ return document.addEventListener("mousedown", f), () => document.removeEventListener("mousedown", f);
436
688
  }, []);
437
- const j = (v) => {
438
- v.stopPropagation(), m(!b);
439
- }, y = (v, k) => {
440
- v.stopPropagation(), l && l(k.value), m(!1);
689
+ const x = (f) => {
690
+ f.stopPropagation(), _(!h);
691
+ }, C = (f, k) => {
692
+ f.stopPropagation(), a && a(k.value), _(!1);
441
693
  };
442
- return /* @__PURE__ */ n(
694
+ return /* @__PURE__ */ c(
443
695
  "div",
444
696
  {
445
- ref: a,
446
- className: p(L["status-dropdown"], o),
447
- ..._,
697
+ ref: o,
698
+ className: g(P["status-dropdown"], r),
699
+ ...u,
448
700
  children: [
449
- /* @__PURE__ */ n(
450
- T,
701
+ /* @__PURE__ */ c(
702
+ R,
451
703
  {
452
704
  variant: "outline",
453
705
  size: "sm",
454
- className: L["status-trigger"],
455
- onClick: j,
706
+ className: P["status-trigger"],
707
+ onClick: x,
456
708
  "aria-haspopup": "listbox",
457
- "aria-expanded": b,
709
+ "aria-expanded": h,
458
710
  "aria-label": i,
459
711
  children: [
460
- f?.label,
461
- /* @__PURE__ */ e("svg", { className: p(L.icon, L["icon-sm"]), viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: /* @__PURE__ */ e("path", { d: "m6 9 6 6 6-6" }) })
712
+ w?.label,
713
+ /* @__PURE__ */ e("svg", { className: g(P.icon, P["icon-sm"]), viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", children: /* @__PURE__ */ e("path", { d: "m6 9 6 6 6-6" }) })
462
714
  ]
463
715
  }
464
716
  ),
465
717
  /* @__PURE__ */ e(
466
718
  "div",
467
719
  {
468
- className: p(L["status-menu"], { [L["is-open"]]: b }),
720
+ className: g(P["status-menu"], { [P["is-open"]]: h }),
469
721
  role: "listbox",
470
- children: r.map((v) => /* @__PURE__ */ e(
722
+ children: n.map((f) => /* @__PURE__ */ e(
471
723
  "button",
472
724
  {
473
- className: p(L["status-menu-item"], {
474
- [L["is-active"]]: v.value === f?.value
725
+ className: g(P["status-menu-item"], {
726
+ [P["is-active"]]: f.value === w?.value
475
727
  }),
476
728
  role: "option",
477
- "aria-selected": v.value === f?.value,
478
- onClick: (k) => y(k, v),
479
- children: v.label
729
+ "aria-selected": f.value === w?.value,
730
+ onClick: (k) => C(k, f),
731
+ children: f.label
480
732
  },
481
- v.value
733
+ f.value
482
734
  ))
483
735
  }
484
736
  )
@@ -487,62 +739,262 @@ const be = "_icon_15zae_56", L = {
487
739
  );
488
740
  }
489
741
  );
490
- ne.displayName = "StatusDropdown";
491
- const pe = "_checklist_ulozz_3", R = {
492
- checklist: pe,
493
- "check-item": "_check-item_ulozz_9",
494
- "is-done": "_is-done_ulozz_27",
495
- "checklist--readonly": "_checklist--readonly_ulozz_32",
496
- "form-control": "_form-control_ulozz_40"
497
- }, G = w.forwardRef(
498
- ({ items: t, onChange: l, editable: r = !1, className: o, ...i }, _) => {
499
- const u = (m, g) => {
500
- l && l(t.map((a) => a.id === m ? { ...a, checked: g } : a));
501
- }, b = (m, g) => {
502
- l && l(t.map((a) => a.id === m ? { ...a, text: g } : a));
742
+ Se.displayName = "StatusDropdown";
743
+ const bt = "_checklist_1iobh_3", ft = "_checkItem_1iobh_7", pt = "_formControl_1iobh_39", q = {
744
+ checklist: bt,
745
+ checkItem: ft,
746
+ "is-done": "_is-done_1iobh_26",
747
+ "checklist--readonly": "_checklist--readonly_1iobh_31",
748
+ formControl: pt
749
+ }, re = p.forwardRef(
750
+ ({ items: t, onChange: a, editable: n = !1, className: r, ...i }, u) => {
751
+ const l = (_, m) => {
752
+ a && a(t.map((o) => o.id === _ ? { ...o, checked: m } : o));
753
+ }, h = (_, m) => {
754
+ a && a(t.map((o) => o.id === _ ? { ...o, text: m } : o));
503
755
  };
504
756
  return /* @__PURE__ */ e(
505
- "div",
757
+ ce,
506
758
  {
507
- ref: _,
508
- className: p(R.checklist, { [R["checklist--readonly"]]: !r }, o),
759
+ ref: u,
760
+ className: g(q.checklist, { [q["checklist--readonly"]]: !n }, r),
509
761
  ...i,
510
- children: t.map((m) => /* @__PURE__ */ n("div", { className: p(R["check-item"], { [R["is-done"]]: m.checked }), children: [
762
+ children: t.map((_) => /* @__PURE__ */ c("div", { role: "listitem", className: g(q.checkItem, { [q["is-done"]]: _.checked }), children: [
511
763
  /* @__PURE__ */ e(
512
764
  "input",
513
765
  {
514
766
  type: "checkbox",
515
- id: m.id,
516
- checked: m.checked,
517
- onChange: (g) => u(m.id, g.target.checked)
767
+ id: _.id,
768
+ checked: _.checked,
769
+ onChange: (m) => l(_.id, m.target.checked)
518
770
  }
519
771
  ),
520
- r ? /* @__PURE__ */ e(
772
+ n ? /* @__PURE__ */ e(
521
773
  "input",
522
774
  {
523
775
  type: "text",
524
- className: R["form-control"],
525
- value: m.text,
526
- onChange: (g) => b(m.id, g.target.value),
776
+ className: q.formControl,
777
+ value: _.text,
778
+ onChange: (m) => h(_.id, m.target.value),
527
779
  placeholder: "Was ist zu tun?",
528
780
  "aria-label": "Aufgabenbeschreibung bearbeiten"
529
781
  }
530
- ) : /* @__PURE__ */ e("label", { htmlFor: m.id, children: m.text })
531
- ] }, m.id))
782
+ ) : /* @__PURE__ */ e("label", { htmlFor: _.id, children: _.text })
783
+ ] }, _.id))
532
784
  }
533
785
  );
534
786
  }
535
787
  );
536
- G.displayName = "Checklist";
537
- const fe = "_dashboard_1mbco_4", A = {
538
- dashboard: fe,
539
- "dashboard-card": "_dashboard-card_1mbco_17",
540
- "dashboard-card__header": "_dashboard-card__header_1mbco_27",
541
- "dashboard-card__title": "_dashboard-card__title_1mbco_31",
542
- "status-legend": "_status-legend_1mbco_39",
543
- "project-filters": "_project-filters_1mbco_45",
544
- "project-filters__search": "_project-filters__search_1mbco_54"
545
- }, Ne = [
788
+ re.displayName = "Checklist";
789
+ const wt = "_searchInput_16e7c_3", Nt = "_icon_16e7c_20", kt = "_field_16e7c_27", te = {
790
+ searchInput: wt,
791
+ icon: Nt,
792
+ field: kt
793
+ }, yt = p.forwardRef(
794
+ ({
795
+ value: t,
796
+ placeholder: a = "Suche...",
797
+ onChange: n,
798
+ "aria-label": r = "Daten durchsuchen",
799
+ id: i,
800
+ className: u
801
+ }, l) => /* @__PURE__ */ c("label", { className: g(te.searchInput, u), htmlFor: i, children: [
802
+ /* @__PURE__ */ c(
803
+ "svg",
804
+ {
805
+ className: te.icon,
806
+ viewBox: "0 0 24 24",
807
+ fill: "none",
808
+ stroke: "currentColor",
809
+ strokeWidth: "2",
810
+ strokeLinecap: "round",
811
+ strokeLinejoin: "round",
812
+ "aria-hidden": "true",
813
+ children: [
814
+ /* @__PURE__ */ e("circle", { cx: "11", cy: "11", r: "8" }),
815
+ /* @__PURE__ */ e("line", { x1: "21", y1: "21", x2: "16.65", y2: "16.65" })
816
+ ]
817
+ }
818
+ ),
819
+ /* @__PURE__ */ e(
820
+ "input",
821
+ {
822
+ ref: l,
823
+ className: te.field,
824
+ type: "search",
825
+ id: i,
826
+ value: t,
827
+ placeholder: a,
828
+ "aria-label": r,
829
+ onChange: (h) => n?.(h.target.value)
830
+ }
831
+ )
832
+ ] })
833
+ );
834
+ yt.displayName = "SearchInput";
835
+ const Ct = "_btn_6gx9b_3", xt = "_chevron_6gx9b_30", ae = {
836
+ btn: Ct,
837
+ chevron: xt,
838
+ "btn--open": "_btn--open_6gx9b_37"
839
+ }, It = p.forwardRef(
840
+ ({
841
+ expanded: t = !1,
842
+ count: a,
843
+ label: n,
844
+ onClick: r,
845
+ "aria-label": i,
846
+ className: u
847
+ }, l) => {
848
+ const h = n ? `${a ?? ""} ${n}`.trim() : a != null ? String(a) : "";
849
+ return /* @__PURE__ */ c(
850
+ "button",
851
+ {
852
+ ref: l,
853
+ className: g(ae.btn, { [ae["btn--open"]]: t }, u),
854
+ onClick: r,
855
+ "aria-expanded": t,
856
+ "aria-label": i,
857
+ children: [
858
+ /* @__PURE__ */ e(
859
+ "svg",
860
+ {
861
+ className: ae.chevron,
862
+ viewBox: "0 0 24 24",
863
+ fill: "none",
864
+ stroke: "currentColor",
865
+ strokeWidth: "2",
866
+ strokeLinecap: "round",
867
+ strokeLinejoin: "round",
868
+ "aria-hidden": "true",
869
+ children: /* @__PURE__ */ e("polyline", { points: "6 9 12 15 18 9" })
870
+ }
871
+ ),
872
+ h
873
+ ]
874
+ }
875
+ );
876
+ }
877
+ );
878
+ It.displayName = "ExpandButton";
879
+ const St = "_circle_gvt69_3", jt = "_svg_gvt69_12", $t = "_track_gvt69_18", At = "_fill_gvt69_24", Lt = "_label_gvt69_31", W = {
880
+ circle: St,
881
+ svg: jt,
882
+ track: $t,
883
+ fill: At,
884
+ label: Lt
885
+ }, oe = 14, se = 2 * Math.PI * oe;
886
+ function zt(t) {
887
+ return t >= 75 ? "var(--color-success)" : t >= 50 ? "var(--color-warning)" : "var(--error)";
888
+ }
889
+ const Rt = p.forwardRef(
890
+ ({ value: t, className: a }, n) => {
891
+ const r = Math.max(0, Math.min(100, t)), i = se - r / 100 * se;
892
+ return /* @__PURE__ */ c("div", { ref: n, className: g(W.circle, a), role: "meter", "aria-valuenow": r, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": `${r}%`, children: [
893
+ /* @__PURE__ */ c("svg", { className: W.svg, viewBox: "0 0 36 36", children: [
894
+ /* @__PURE__ */ e("circle", { className: W.track, cx: "18", cy: "18", r: oe }),
895
+ /* @__PURE__ */ e(
896
+ "circle",
897
+ {
898
+ className: W.fill,
899
+ cx: "18",
900
+ cy: "18",
901
+ r: oe,
902
+ stroke: zt(r),
903
+ strokeDasharray: se,
904
+ strokeDashoffset: i
905
+ }
906
+ )
907
+ ] }),
908
+ /* @__PURE__ */ c("span", { className: W.label, children: [
909
+ r,
910
+ "%"
911
+ ] })
912
+ ] });
913
+ }
914
+ );
915
+ Rt.displayName = "ProgressCircle";
916
+ const Tt = "_bar_l0q8t_3", Dt = "_track_l0q8t_9", Pt = "_fill_l0q8t_17", Mt = "_value_l0q8t_23", H = {
917
+ bar: Tt,
918
+ track: Dt,
919
+ fill: Pt,
920
+ value: Mt
921
+ }, Et = p.forwardRef(
922
+ ({ value: t, className: a }, n) => {
923
+ const r = typeof t == "number" && t <= 1 ? t * 100 : t, i = Math.round(r);
924
+ return /* @__PURE__ */ c("div", { ref: n, className: g(H.bar, a), role: "meter", "aria-valuenow": i, "aria-valuemin": 0, "aria-valuemax": 100, "aria-label": `${i}%`, children: [
925
+ /* @__PURE__ */ e("div", { className: H.track, children: /* @__PURE__ */ e("div", { className: H.fill, style: { width: `${r}%` } }) }),
926
+ /* @__PURE__ */ c("span", { className: H.value, children: [
927
+ i,
928
+ "%"
929
+ ] })
930
+ ] });
931
+ }
932
+ );
933
+ Et.displayName = "ScoreBar";
934
+ const Bt = "_empty_26icj_3", Ft = "_icon_26icj_12", Ot = "_title_26icj_19", qt = "_text_26icj_27", G = {
935
+ empty: Bt,
936
+ icon: Ft,
937
+ title: Ot,
938
+ text: qt
939
+ }, Wt = p.forwardRef(
940
+ ({ title: t, text: a, icon: n, className: r }, i) => /* @__PURE__ */ c("div", { ref: i, className: g(G.empty, r), role: "status", children: [
941
+ n && /* @__PURE__ */ e("div", { className: G.icon, "aria-hidden": "true", children: n }),
942
+ /* @__PURE__ */ e("div", { className: G.title, children: t }),
943
+ a && /* @__PURE__ */ e("div", { className: G.text, children: a })
944
+ ] })
945
+ );
946
+ Wt.displayName = "EmptyState";
947
+ const Vt = "_toggle_176y2_3", Ht = "_btn_176y2_11", Gt = "_icon_176y2_43", K = {
948
+ toggle: Vt,
949
+ btn: Ht,
950
+ "btn--active": "_btn--active_176y2_37",
951
+ icon: Gt
952
+ }, Kt = p.forwardRef(
953
+ ({
954
+ options: t,
955
+ value: a,
956
+ onChange: n,
957
+ "aria-label": r,
958
+ role: i = "tablist",
959
+ className: u
960
+ }, l) => {
961
+ const h = i === "tablist" ? "tab" : "radio", _ = i === "tablist" ? "aria-selected" : "aria-checked";
962
+ return /* @__PURE__ */ e(
963
+ "div",
964
+ {
965
+ ref: l,
966
+ className: g(K.toggle, u),
967
+ role: i,
968
+ "aria-label": r,
969
+ children: t.map((m) => {
970
+ const o = m.value === a;
971
+ return /* @__PURE__ */ c(
972
+ "button",
973
+ {
974
+ className: g(K.btn, { [K["btn--active"]]: o }),
975
+ role: h,
976
+ [_]: o,
977
+ onClick: () => n?.(m.value),
978
+ children: [
979
+ m.icon && /* @__PURE__ */ e("span", { className: K.icon, "aria-hidden": "true", children: m.icon }),
980
+ m.label
981
+ ]
982
+ },
983
+ m.value
984
+ );
985
+ })
986
+ }
987
+ );
988
+ }
989
+ );
990
+ Kt.displayName = "SegmentedControl";
991
+ const Ut = "_dashboard_wq6z7_4", Qt = "_sectionTitle_wq6z7_18", Jt = "_statusLegend_wq6z7_27", Zt = "_projectFilters_wq6z7_34", Xt = "_projectFilters__search_wq6z7_48", M = {
992
+ dashboard: Ut,
993
+ sectionTitle: Qt,
994
+ statusLegend: Jt,
995
+ projectFilters: Zt,
996
+ projectFilters__search: Xt
997
+ }, Yt = [
546
998
  { 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() },
547
999
  { 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() },
548
1000
  { 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() },
@@ -569,23 +1021,23 @@ const fe = "_dashboard_1mbco_4", A = {
569
1021
  createdAt: "05.01.2026",
570
1022
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
571
1023
  }
572
- ], we = [
1024
+ ], ea = [
573
1025
  { status: "alle", label: "Alle" },
574
1026
  { status: "neu", label: "Neu" },
575
1027
  { status: "offen", label: "Offen" },
576
1028
  { status: "in-prufung", label: "In Prüfung" },
577
1029
  { status: "validierung", label: "Validierung" },
578
1030
  { status: "abgeschlossen", label: "Abgeschlossen" }
579
- ], ke = {
1031
+ ], ta = {
580
1032
  neu: "Neu",
581
1033
  offen: "Offen",
582
1034
  "in-prufung": "In Prüfung",
583
1035
  validierung: "Validierung",
584
1036
  abgeschlossen: "Abgeschlossen"
585
- }, ye = w.forwardRef(
586
- ({ initialRows: t = Ne, className: l, ...r }, o) => {
587
- const [i, _] = z(t), [u, b] = z("alle"), [m, g] = z(""), a = q(() => {
588
- const c = {
1037
+ }, aa = p.forwardRef(
1038
+ ({ initialRows: t = Yt, className: a, ...n }, r) => {
1039
+ const [i, u] = A(t), [l, h] = A("alle"), [_, m] = A(""), o = Z(() => {
1040
+ const v = {
589
1041
  alle: i.length,
590
1042
  neu: 0,
591
1043
  offen: 0,
@@ -593,93 +1045,98 @@ const fe = "_dashboard_1mbco_4", A = {
593
1045
  validierung: 0,
594
1046
  abgeschlossen: 0
595
1047
  };
596
- return i.forEach((N) => {
597
- c[N.status]++;
598
- }), c;
599
- }, [i]), f = q(() => {
600
- let c = i;
601
- if (u !== "alle" && (c = c.filter((N) => N.status === u)), m.trim() !== "") {
602
- const N = m.toLowerCase().trim();
603
- c = c.filter(
604
- (h) => h.name.toLowerCase().includes(N) || h.client.toLowerCase().includes(N) || h.app.toLowerCase().includes(N)
1048
+ return i.forEach((y) => {
1049
+ v[y.status]++;
1050
+ }), v;
1051
+ }, [i]), w = Z(() => {
1052
+ let v = i;
1053
+ if (l !== "alle" && (v = v.filter((y) => y.status === l)), _.trim() !== "") {
1054
+ const y = _.toLowerCase().trim();
1055
+ v = v.filter(
1056
+ (b) => b.name.toLowerCase().includes(y) || b.client.toLowerCase().includes(y) || b.app.toLowerCase().includes(y)
605
1057
  );
606
1058
  }
607
- return u === "alle" && (c = [...c].sort((N, h) => Number(h.favorite) - Number(N.favorite))), c;
608
- }, [i, u, m]), j = u === "alle" ? "Alle Projekte" : `Projekte: ${ke[u]}`, y = (c, N) => {
609
- _((h) => h.map((d) => d.id === c ? { ...d, favorite: N } : d));
610
- }, v = q(() => [
611
- { status: "neu", label: "Neu", value: a.neu, color: "hsl(var(--status-neu))" },
612
- { status: "offen", label: "Offen", value: a.offen, color: "hsl(var(--status-offen))" },
613
- { status: "in-prufung", label: "In Prüfung", value: a["in-prufung"], color: "hsl(var(--status-in-prufung))" },
614
- { status: "validierung", label: "Validierung", value: a.validierung, color: "hsl(var(--status-validierung))" },
615
- { status: "abgeschlossen", label: "Abgeschlossen", value: a.abgeschlossen, color: "hsl(var(--status-abgeschlossen))" }
616
- ], [a]), k = (c) => {
617
- b(c);
1059
+ return l === "alle" && (v = [...v].sort((y, b) => Number(b.favorite) - Number(y.favorite))), v;
1060
+ }, [i, l, _]), x = l === "alle" ? "Alle Projekte" : `Projekte: ${ta[l]}`, C = (v, y) => {
1061
+ u((b) => b.map((s) => s.id === v ? { ...s, favorite: y } : s));
1062
+ }, f = Z(() => [
1063
+ { status: "neu", label: "Neu", value: o.neu, color: "hsl(var(--status-neu))" },
1064
+ { status: "offen", label: "Offen", value: o.offen, color: "hsl(var(--status-offen))" },
1065
+ { status: "in-prufung", label: "In Prüfung", value: o["in-prufung"], color: "hsl(var(--status-in-prufung))" },
1066
+ { status: "validierung", label: "Validierung", value: o.validierung, color: "hsl(var(--status-validierung))" },
1067
+ { status: "abgeschlossen", label: "Abgeschlossen", value: o.abgeschlossen, color: "hsl(var(--status-abgeschlossen))" }
1068
+ ], [o]), k = (v) => {
1069
+ h(v);
618
1070
  };
619
- return /* @__PURE__ */ n(
1071
+ return /* @__PURE__ */ c(
620
1072
  "main",
621
1073
  {
622
- ref: o,
623
- className: p(A.dashboard, l),
624
- ...r,
1074
+ ref: r,
1075
+ className: g(M.dashboard, a),
1076
+ ...n,
625
1077
  children: [
626
- /* @__PURE__ */ n(
627
- "section",
1078
+ /* @__PURE__ */ c(
1079
+ U,
628
1080
  {
629
- className: p(A["dashboard-card"], A["status-overview"]),
1081
+ as: "section",
1082
+ variant: "full",
1083
+ padded: !0,
630
1084
  "aria-label": "Projektstatus Übersicht",
1085
+ className: M.statusOverview,
631
1086
  children: [
632
- /* @__PURE__ */ e("header", { className: A["dashboard-card__header"], children: /* @__PURE__ */ e("h1", { className: A["dashboard-card__title"], children: "Projekte" }) }),
1087
+ /* @__PURE__ */ e("h1", { className: M.sectionTitle, children: "Projekte" }),
633
1088
  /* @__PURE__ */ e(
634
- se,
1089
+ xe,
635
1090
  {
636
- data: v,
1091
+ data: f,
637
1092
  onSegmentClick: k
638
1093
  }
639
1094
  ),
640
1095
  /* @__PURE__ */ e(
641
1096
  "div",
642
1097
  {
643
- className: A["status-legend"],
1098
+ className: M.statusLegend,
644
1099
  role: "listbox",
645
1100
  "aria-label": "Nach Status filtern",
646
- children: we.map(({ status: c, label: N }) => /* @__PURE__ */ e(
647
- te,
1101
+ children: ea.map(({ status: v, label: y }) => /* @__PURE__ */ e(
1102
+ Ce,
648
1103
  {
649
- status: c,
650
- label: N,
651
- count: a[c],
652
- active: u === c,
653
- onClick: () => b(c)
1104
+ status: v,
1105
+ label: y,
1106
+ count: o[v],
1107
+ active: l === v,
1108
+ onClick: () => h(v)
654
1109
  },
655
- c
1110
+ v
656
1111
  ))
657
1112
  }
658
1113
  )
659
1114
  ]
660
1115
  }
661
1116
  ),
662
- /* @__PURE__ */ n(
663
- "section",
1117
+ /* @__PURE__ */ c(
1118
+ U,
664
1119
  {
665
- className: p(A["dashboard-card"], A["project-list"]),
1120
+ as: "section",
1121
+ variant: "full",
666
1122
  "aria-label": "Projektliste",
1123
+ className: M.projectList,
667
1124
  children: [
668
- /* @__PURE__ */ n("div", { className: A["project-filters"], children: [
669
- /* @__PURE__ */ e("h2", { className: A["dashboard-card__title"], children: j }),
1125
+ /* @__PURE__ */ c("div", { className: M.projectFilters, children: [
1126
+ /* @__PURE__ */ e("h2", { className: M.sectionTitle, children: x }),
670
1127
  /* @__PURE__ */ e(
671
1128
  "input",
672
1129
  {
673
1130
  type: "search",
674
- className: A["project-filters__search"],
1131
+ className: M.projectFilters__search,
675
1132
  "aria-label": "Projekte durchsuchen",
676
1133
  placeholder: "Suchen...",
677
- value: m,
678
- onChange: (c) => g(c.target.value)
1134
+ value: _,
1135
+ onChange: (v) => m(v.target.value)
679
1136
  }
680
1137
  )
681
1138
  ] }),
682
- /* @__PURE__ */ e(le, { rows: f, onToggleFavorite: y })
1139
+ /* @__PURE__ */ e(Ie, { rows: w, onToggleFavorite: C })
683
1140
  ]
684
1141
  }
685
1142
  )
@@ -688,61 +1145,56 @@ const fe = "_dashboard_1mbco_4", A = {
688
1145
  );
689
1146
  }
690
1147
  );
691
- ye.displayName = "DashboardPage";
692
- const je = "_icon_15khb_83", C = {
693
- "task-item": "_task-item_15khb_4",
694
- "task-item__content": "_task-item__content_15khb_25",
695
- "task-item__title-group": "_task-item__title-group_15khb_32",
696
- "task-item__title": "_task-item__title_15khb_32",
697
- "task-item__meta": "_task-item__meta_15khb_52",
698
- "meta-user": "_meta-user_15khb_64",
699
- "meta-project": "_meta-project_15khb_70",
700
- "icon-sm": "_icon-sm_15khb_83",
701
- "task-item__deadline": "_task-item__deadline_15khb_88",
702
- "deadline-urgent": "_deadline-urgent_15khb_97",
703
- "deadline-normal": "_deadline-normal_15khb_102",
704
- "task-item__actions": "_task-item__actions_15khb_107",
705
- icon: je
706
- }, xe = [
1148
+ aa.displayName = "DashboardPage";
1149
+ const sa = "_taskItem_77jzk_4", la = "_taskItem__content_77jzk_14", na = "_taskItem__titleGroup_77jzk_21", ia = "_taskItem__title_77jzk_21", ra = "_taskItem__meta_77jzk_41", oa = "_metaUser_77jzk_52", ca = "_metaProject_77jzk_58", da = "_taskItem__deadline_77jzk_76", _a = "_taskItem__actions_77jzk_95", $ = {
1150
+ taskItem: sa,
1151
+ taskItem__content: la,
1152
+ taskItem__titleGroup: na,
1153
+ taskItem__title: ia,
1154
+ taskItem__meta: ra,
1155
+ metaUser: oa,
1156
+ metaProject: ca,
1157
+ "icon-sm": "_icon-sm_77jzk_71",
1158
+ taskItem__deadline: da,
1159
+ "deadline-urgent": "_deadline-urgent_77jzk_85",
1160
+ "deadline-normal": "_deadline-normal_77jzk_90",
1161
+ taskItem__actions: _a
1162
+ }, ua = [
707
1163
  { value: "Offen", label: "Offen" },
708
1164
  { value: "In Arbeit", label: "In Arbeit" },
709
1165
  { value: "Erledigt", label: "Erledigt" }
710
- ], re = w.forwardRef(
711
- ({ title: t, project: l, projectLabel: r, status: o, deadline: i, deadlineType: _ = "normal", priority: u, assignees: b, description: m, onClick: g, onStatusChange: a, className: f, ...j }, y) => {
712
- const v = (c) => {
713
- (c.key === "Enter" || c.key === " ") && (c.preventDefault(), g?.());
714
- }, k = (c) => {
715
- c.stopPropagation();
1166
+ ], je = p.forwardRef(
1167
+ ({ title: t, project: a, projectLabel: n, status: r, deadline: i, deadlineType: u = "normal", priority: l, assignees: h, description: _, onClick: m, onStatusChange: o, className: w, ...x }, C) => {
1168
+ const f = (k) => {
1169
+ k.stopPropagation();
716
1170
  };
717
- return /* @__PURE__ */ n(
718
- "article",
1171
+ return /* @__PURE__ */ c(
1172
+ Ne,
719
1173
  {
720
- ref: y,
721
- className: p(C["task-item"], f),
722
- role: "listitem",
723
- tabIndex: 0,
724
- onClick: g,
725
- onKeyDown: v,
726
- ...j,
1174
+ ref: C,
1175
+ as: "article",
1176
+ onClick: m,
1177
+ className: g($.taskItem, w),
1178
+ ...x,
727
1179
  children: [
728
- /* @__PURE__ */ n("div", { className: C["task-item__content"], children: [
729
- /* @__PURE__ */ e("div", { className: C["task-item__title-group"], children: /* @__PURE__ */ e("h3", { className: C["task-item__title"], children: t }) }),
730
- /* @__PURE__ */ n("div", { className: C["task-item__meta"], children: [
731
- b.length > 0 && /* @__PURE__ */ e("div", { className: C["meta-user"], children: /* @__PURE__ */ e(W, { children: b.map((c, N) => /* @__PURE__ */ e(M, { initials: c.initials, name: c.name }, N)) }) }),
732
- /* @__PURE__ */ n("div", { className: C["meta-project"], "aria-label": `Projekt: ${r || l}`, children: [
733
- /* @__PURE__ */ e("svg", { className: C["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" }) }),
734
- r || l
1180
+ /* @__PURE__ */ c("div", { className: $.taskItem__content, children: [
1181
+ /* @__PURE__ */ e("div", { className: $.taskItem__titleGroup, children: /* @__PURE__ */ e("h3", { className: $.taskItem__title, children: t }) }),
1182
+ /* @__PURE__ */ c("div", { className: $.taskItem__meta, children: [
1183
+ h.length > 0 && /* @__PURE__ */ e("div", { className: $.metaUser, children: /* @__PURE__ */ e(de, { children: h.map((k, v) => /* @__PURE__ */ e(V, { initials: k.initials, name: k.name }, v)) }) }),
1184
+ /* @__PURE__ */ c("div", { className: $.metaProject, "aria-label": `Projekt: ${n || a}`, children: [
1185
+ /* @__PURE__ */ e("svg", { className: $["icon-sm"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) }),
1186
+ n || a
735
1187
  ] }),
736
- u && u !== "low" && /* @__PURE__ */ e(H, { level: u, size: "small" })
1188
+ l && l !== "low" && /* @__PURE__ */ e(_e, { level: l, size: "small" })
737
1189
  ] })
738
1190
  ] }),
739
- /* @__PURE__ */ e("div", { className: p(C["task-item__deadline"], C[`deadline-${_}`]), children: i }),
740
- /* @__PURE__ */ e("div", { className: C["task-item__actions"], onClick: k, children: /* @__PURE__ */ e(
741
- ne,
1191
+ /* @__PURE__ */ e("div", { className: g($.taskItem__deadline, $[`deadline-${u}`]), children: i }),
1192
+ /* @__PURE__ */ e("div", { className: $.taskItem__actions, onClick: f, children: /* @__PURE__ */ e(
1193
+ Se,
742
1194
  {
743
- options: xe,
744
- value: o,
745
- onChange: a
1195
+ options: ua,
1196
+ value: r,
1197
+ onChange: o
746
1198
  }
747
1199
  ) })
748
1200
  ]
@@ -750,8 +1202,8 @@ const je = "_icon_15khb_83", C = {
750
1202
  );
751
1203
  }
752
1204
  );
753
- re.displayName = "TaskItem";
754
- const Se = "_textarea_m18cx_191", Ae = "_icon_m18cx_197", s = {
1205
+ je.displayName = "TaskItem";
1206
+ const ma = "_textarea_m18cx_191", ha = "_icon_m18cx_197", d = {
755
1207
  "modal-overlay": "_modal-overlay_m18cx_4",
756
1208
  "is-active": "_is-active_m18cx_19",
757
1209
  "modal-content": "_modal-content_m18cx_25",
@@ -770,147 +1222,147 @@ const Se = "_textarea_m18cx_191", Ae = "_icon_m18cx_197", s = {
770
1222
  "form-row": "_form-row_m18cx_154",
771
1223
  "form-label": "_form-label_m18cx_160",
772
1224
  "form-control": "_form-control_m18cx_170",
773
- textarea: Se,
774
- icon: Ae,
1225
+ textarea: ma,
1226
+ icon: ha,
775
1227
  "icon-pencil": "_icon-pencil_m18cx_207"
776
- }, U = [
1228
+ }, ge = [
777
1229
  { value: "Q1", label: "Q1 Roadmap" },
778
1230
  { value: "FR", label: "Frontend Relaunch" },
779
1231
  { value: "UR", label: "User Research" }
780
- ], Y = [
1232
+ ], be = [
781
1233
  { initials: "FV", name: "Fabian Venmann" },
782
1234
  { initials: "LV", name: "Luca Vitiello" },
783
1235
  { initials: "AS", name: "Anna Schmidt" }
784
- ], ie = w.forwardRef(
785
- ({ isOpen: t, onClose: l, task: r, onSave: o, initialMode: i = "view", className: _, ...u }, b) => {
786
- const [m, g] = z(i), [a, f] = z(null);
787
- if (E(() => {
788
- t && r && (f({ ...r, checklist: [...r.checklist] }), g(i));
789
- }, [t, r, i]), E(() => {
790
- const d = (x) => {
791
- x.key === "Escape" && t && l();
1236
+ ], $e = p.forwardRef(
1237
+ ({ isOpen: t, onClose: a, task: n, onSave: r, initialMode: i = "view", className: u, ...l }, h) => {
1238
+ const [_, m] = A(i), [o, w] = A(null);
1239
+ if (le(() => {
1240
+ t && n && (w({ ...n, checklist: [...n.checklist] }), m(i));
1241
+ }, [t, n, i]), le(() => {
1242
+ const s = (N) => {
1243
+ N.key === "Escape" && t && a();
792
1244
  };
793
- return document.addEventListener("keydown", d), () => document.removeEventListener("keydown", d);
794
- }, [t, l]), !t || !r || !a) return null;
795
- const j = () => {
796
- o && o(a), g("view");
797
- }, y = () => {
798
- l();
799
- }, v = (d) => {
800
- f({ ...a, checklist: d });
801
- }, k = (d) => {
802
- const x = U.find((I) => I.value === d.target.value);
803
- f({
804
- ...a,
805
- project: d.target.value,
806
- projectLabel: x?.label || d.target.value
1245
+ return document.addEventListener("keydown", s), () => document.removeEventListener("keydown", s);
1246
+ }, [t, a]), !t || !n || !o) return null;
1247
+ const x = () => {
1248
+ r && r(o), m("view");
1249
+ }, C = () => {
1250
+ a();
1251
+ }, f = (s) => {
1252
+ w({ ...o, checklist: s });
1253
+ }, k = (s) => {
1254
+ const N = ge.find((I) => I.value === s.target.value);
1255
+ w({
1256
+ ...o,
1257
+ project: s.target.value,
1258
+ projectLabel: N?.label || s.target.value
807
1259
  });
808
- }, c = (d) => {
809
- const x = Y.find((I) => I.initials.toLowerCase() === d.target.value);
810
- x && f({ ...a, assignees: [x] });
811
- }, N = () => {
812
- const d = {
1260
+ }, v = (s) => {
1261
+ const N = be.find((I) => I.initials.toLowerCase() === s.target.value);
1262
+ N && w({ ...o, assignees: [N] });
1263
+ }, y = () => {
1264
+ const s = {
813
1265
  id: `check-${Date.now()}`,
814
1266
  text: "",
815
1267
  checked: !1
816
1268
  };
817
- f({
818
- ...a,
819
- checklist: [...a.checklist, d]
1269
+ w({
1270
+ ...o,
1271
+ checklist: [...o.checklist, s]
820
1272
  });
821
- }, h = (d) => {
822
- d.target === d.currentTarget && y();
1273
+ }, b = (s) => {
1274
+ s.target === s.currentTarget && C();
823
1275
  };
824
1276
  return /* @__PURE__ */ e(
825
1277
  "div",
826
1278
  {
827
- ref: b,
828
- className: p(s["modal-overlay"], { [s["is-active"]]: t }, _),
829
- onClick: h,
1279
+ ref: h,
1280
+ className: g(d["modal-overlay"], { [d["is-active"]]: t }, u),
1281
+ onClick: b,
830
1282
  role: "dialog",
831
1283
  "aria-modal": "true",
832
1284
  "aria-labelledby": "modalTitle",
833
- ...u,
834
- children: /* @__PURE__ */ n("div", { className: s["modal-content"], "data-mode": m, children: [
835
- /* @__PURE__ */ n("header", { className: s["modal-header"], children: [
836
- /* @__PURE__ */ e("h2", { className: s["modal-header-title"], id: "modalTitle", children: m === "edit" ? "Aufgabe bearbeiten" : "Aufgaben-Details" }),
837
- /* @__PURE__ */ e(T, { variant: "ghost", onClick: y, "aria-label": "Schließen", children: /* @__PURE__ */ e("svg", { className: s.icon, viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M18 6 6 18M6 6l12 12" }) }) })
1285
+ ...l,
1286
+ children: /* @__PURE__ */ c("div", { className: d["modal-content"], "data-mode": _, children: [
1287
+ /* @__PURE__ */ c("header", { className: d["modal-header"], children: [
1288
+ /* @__PURE__ */ e("h2", { className: d["modal-header-title"], id: "modalTitle", children: _ === "edit" ? "Aufgabe bearbeiten" : "Aufgaben-Details" }),
1289
+ /* @__PURE__ */ e(R, { variant: "ghost", onClick: C, "aria-label": "Schließen", children: /* @__PURE__ */ e("svg", { className: d.icon, viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M18 6 6 18M6 6l12 12" }) }) })
838
1290
  ] }),
839
- m === "view" ? /* @__PURE__ */ n("div", { className: s["modal-body"], children: [
840
- /* @__PURE__ */ n("div", { className: s["view-group"], children: [
841
- /* @__PURE__ */ e("span", { className: s["view-label"], children: "Titel" }),
842
- /* @__PURE__ */ e("h3", { className: s["view-task-title"], children: a.title })
1291
+ _ === "view" ? /* @__PURE__ */ c("div", { className: d["modal-body"], children: [
1292
+ /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1293
+ /* @__PURE__ */ e("span", { className: d["view-label"], children: "Titel" }),
1294
+ /* @__PURE__ */ e("h3", { className: d["view-task-title"], children: o.title })
843
1295
  ] }),
844
- /* @__PURE__ */ n("div", { className: s["view-badge-row"], children: [
845
- /* @__PURE__ */ n("div", { className: s["view-group"], children: [
846
- /* @__PURE__ */ e("span", { className: s["view-label"], children: "Verantwortlich" }),
847
- a.assignees.length > 0 ? /* @__PURE__ */ e(W, { children: a.assignees.map((d, x) => /* @__PURE__ */ e(M, { initials: d.initials, name: d.name }, x)) }) : /* @__PURE__ */ e(M, { initials: "?", name: "Nicht zugewiesen" })
1296
+ /* @__PURE__ */ c("div", { className: d["view-badge-row"], children: [
1297
+ /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1298
+ /* @__PURE__ */ e("span", { className: d["view-label"], children: "Verantwortlich" }),
1299
+ o.assignees.length > 0 ? /* @__PURE__ */ e(de, { children: o.assignees.map((s, N) => /* @__PURE__ */ e(V, { initials: s.initials, name: s.name }, N)) }) : /* @__PURE__ */ e(V, { initials: "?", name: "Nicht zugewiesen" })
848
1300
  ] }),
849
- /* @__PURE__ */ n("div", { className: s["view-group"], children: [
850
- /* @__PURE__ */ e("span", { className: s["view-label"], children: "Projekt" }),
851
- /* @__PURE__ */ n(V, { children: [
852
- /* @__PURE__ */ e("svg", { className: s["icon-sm"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) }),
853
- a.projectLabel || a.project
1301
+ /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1302
+ /* @__PURE__ */ e("span", { className: d["view-label"], children: "Projekt" }),
1303
+ /* @__PURE__ */ c(ie, { children: [
1304
+ /* @__PURE__ */ e("svg", { className: d["icon-sm"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z" }) }),
1305
+ o.projectLabel || o.project
854
1306
  ] })
855
1307
  ] }),
856
- /* @__PURE__ */ n("div", { className: s["view-group"], children: [
857
- /* @__PURE__ */ e("span", { className: s["view-label"], children: "Priorität" }),
858
- a.priority ? /* @__PURE__ */ e(H, { level: a.priority, size: "large" }) : /* @__PURE__ */ e("div", { className: s["text-muted"], children: "Keine" })
1308
+ /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1309
+ /* @__PURE__ */ e("span", { className: d["view-label"], children: "Priorität" }),
1310
+ o.priority ? /* @__PURE__ */ e(_e, { level: o.priority, size: "large" }) : /* @__PURE__ */ e("div", { className: d["text-muted"], children: "Keine" })
859
1311
  ] }),
860
- /* @__PURE__ */ n("div", { className: s["view-group"], children: [
861
- /* @__PURE__ */ e("span", { className: s["view-label"], children: "Status" }),
862
- /* @__PURE__ */ e(V, { children: a.status })
1312
+ /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1313
+ /* @__PURE__ */ e("span", { className: d["view-label"], children: "Status" }),
1314
+ /* @__PURE__ */ e(ie, { children: o.status })
863
1315
  ] }),
864
- /* @__PURE__ */ n("div", { className: s["view-group"], children: [
865
- /* @__PURE__ */ e("span", { className: s["view-label"], children: "Fälligkeit" }),
866
- /* @__PURE__ */ e("div", { className: s["view-value-strong"], children: a.deadline })
1316
+ /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1317
+ /* @__PURE__ */ e("span", { className: d["view-label"], children: "Fälligkeit" }),
1318
+ /* @__PURE__ */ e("div", { className: d["view-value-strong"], children: o.deadline })
867
1319
  ] })
868
1320
  ] }),
869
- /* @__PURE__ */ n("div", { className: s["view-group"], children: [
870
- /* @__PURE__ */ e("span", { className: s["view-label"], children: "Beschreibung" }),
871
- /* @__PURE__ */ e("p", { className: s["view-description"], children: a.description || /* @__PURE__ */ e("span", { className: s["text-muted"], children: "Keine Beschreibung vorhanden." }) })
1321
+ /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1322
+ /* @__PURE__ */ e("span", { className: d["view-label"], children: "Beschreibung" }),
1323
+ /* @__PURE__ */ e("p", { className: d["view-description"], children: o.description || /* @__PURE__ */ e("span", { className: d["text-muted"], children: "Keine Beschreibung vorhanden." }) })
872
1324
  ] }),
873
- /* @__PURE__ */ n("div", { className: s["view-group"], children: [
874
- /* @__PURE__ */ e("span", { className: s["view-label"], children: "To-Do Checkliste" }),
875
- /* @__PURE__ */ e(G, { items: a.checklist, onChange: v, editable: !1 })
1325
+ /* @__PURE__ */ c("div", { className: d["view-group"], children: [
1326
+ /* @__PURE__ */ e("span", { className: d["view-label"], children: "To-Do Checkliste" }),
1327
+ /* @__PURE__ */ e(re, { items: o.checklist, onChange: f, editable: !1 })
876
1328
  ] })
877
- ] }) : /* @__PURE__ */ n("div", { className: s["modal-body"], children: [
878
- /* @__PURE__ */ n("div", { className: s["form-group"], children: [
879
- /* @__PURE__ */ e("label", { className: s["form-label"], htmlFor: "taskTitle", children: "Titel" }),
1329
+ ] }) : /* @__PURE__ */ c("div", { className: d["modal-body"], children: [
1330
+ /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1331
+ /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskTitle", children: "Titel" }),
880
1332
  /* @__PURE__ */ e(
881
1333
  "input",
882
1334
  {
883
1335
  type: "text",
884
1336
  id: "taskTitle",
885
- className: s["form-control"],
886
- value: a.title,
887
- onChange: (d) => f({ ...a, title: d.target.value })
1337
+ className: d["form-control"],
1338
+ value: o.title,
1339
+ onChange: (s) => w({ ...o, title: s.target.value })
888
1340
  }
889
1341
  )
890
1342
  ] }),
891
- /* @__PURE__ */ n("div", { className: s["form-row"], children: [
892
- /* @__PURE__ */ n("div", { className: s["form-group"], children: [
893
- /* @__PURE__ */ e("label", { className: s["form-label"], htmlFor: "taskProject", children: "Projekt" }),
1343
+ /* @__PURE__ */ c("div", { className: d["form-row"], children: [
1344
+ /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1345
+ /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskProject", children: "Projekt" }),
894
1346
  /* @__PURE__ */ e(
895
1347
  "select",
896
1348
  {
897
1349
  id: "taskProject",
898
- className: s["form-control"],
899
- value: a.project,
1350
+ className: d["form-control"],
1351
+ value: o.project,
900
1352
  onChange: k,
901
- children: U.map((d) => /* @__PURE__ */ e("option", { value: d.value, children: d.label }, d.value))
1353
+ children: ge.map((s) => /* @__PURE__ */ e("option", { value: s.value, children: s.label }, s.value))
902
1354
  }
903
1355
  )
904
1356
  ] }),
905
- /* @__PURE__ */ n("div", { className: s["form-group"], children: [
906
- /* @__PURE__ */ e("label", { className: s["form-label"], htmlFor: "taskStatus", children: "Status" }),
907
- /* @__PURE__ */ n(
1357
+ /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1358
+ /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskStatus", children: "Status" }),
1359
+ /* @__PURE__ */ c(
908
1360
  "select",
909
1361
  {
910
1362
  id: "taskStatus",
911
- className: s["form-control"],
912
- value: a.status,
913
- onChange: (d) => f({ ...a, status: d.target.value }),
1363
+ className: d["form-control"],
1364
+ value: o.status,
1365
+ onChange: (s) => w({ ...o, status: s.target.value }),
914
1366
  children: [
915
1367
  /* @__PURE__ */ e("option", { value: "Offen", children: "Offen" }),
916
1368
  /* @__PURE__ */ e("option", { value: "In Arbeit", children: "In Arbeit" }),
@@ -920,29 +1372,29 @@ const Se = "_textarea_m18cx_191", Ae = "_icon_m18cx_197", s = {
920
1372
  )
921
1373
  ] })
922
1374
  ] }),
923
- /* @__PURE__ */ n("div", { className: s["form-row"], children: [
924
- /* @__PURE__ */ n("div", { className: s["form-group"], children: [
925
- /* @__PURE__ */ e("label", { className: s["form-label"], htmlFor: "taskDate", children: "Fälligkeitsdatum" }),
1375
+ /* @__PURE__ */ c("div", { className: d["form-row"], children: [
1376
+ /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1377
+ /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskDate", children: "Fälligkeitsdatum" }),
926
1378
  /* @__PURE__ */ e(
927
1379
  "input",
928
1380
  {
929
1381
  type: "text",
930
1382
  id: "taskDate",
931
- className: s["form-control"],
932
- value: a.deadline,
933
- onChange: (d) => f({ ...a, deadline: d.target.value })
1383
+ className: d["form-control"],
1384
+ value: o.deadline,
1385
+ onChange: (s) => w({ ...o, deadline: s.target.value })
934
1386
  }
935
1387
  )
936
1388
  ] }),
937
- /* @__PURE__ */ n("div", { className: s["form-group"], children: [
938
- /* @__PURE__ */ e("label", { className: s["form-label"], htmlFor: "taskPriority", children: "Priorität" }),
939
- /* @__PURE__ */ n(
1389
+ /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1390
+ /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskPriority", children: "Priorität" }),
1391
+ /* @__PURE__ */ c(
940
1392
  "select",
941
1393
  {
942
1394
  id: "taskPriority",
943
- className: s["form-control"],
944
- value: a.priority || "",
945
- onChange: (d) => f({ ...a, priority: d.target.value || void 0 }),
1395
+ className: d["form-control"],
1396
+ value: o.priority || "",
1397
+ onChange: (s) => w({ ...o, priority: s.target.value || void 0 }),
946
1398
  children: [
947
1399
  /* @__PURE__ */ e("option", { value: "", children: "Keine" }),
948
1400
  /* @__PURE__ */ e("option", { value: "high", children: "Hoch (!!)" }),
@@ -953,79 +1405,75 @@ const Se = "_textarea_m18cx_191", Ae = "_icon_m18cx_197", s = {
953
1405
  )
954
1406
  ] })
955
1407
  ] }),
956
- /* @__PURE__ */ n("div", { className: s["form-group"], children: [
957
- /* @__PURE__ */ e("label", { className: s["form-label"], htmlFor: "taskAssignee", children: "Verantwortlich" }),
958
- /* @__PURE__ */ n("div", { style: { display: "flex", alignItems: "center", gap: "0.75rem" }, children: [
959
- /* @__PURE__ */ e(M, { initials: a.assignees[0]?.initials || "?" }),
1408
+ /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1409
+ /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskAssignee", children: "Verantwortlich" }),
1410
+ /* @__PURE__ */ c("div", { style: { display: "flex", alignItems: "center", gap: "0.75rem" }, children: [
1411
+ /* @__PURE__ */ e(V, { initials: o.assignees[0]?.initials || "?" }),
960
1412
  /* @__PURE__ */ e(
961
1413
  "select",
962
1414
  {
963
1415
  id: "taskAssignee",
964
- className: s["form-control"],
1416
+ className: d["form-control"],
965
1417
  style: { flex: 1 },
966
- value: a.assignees[0]?.initials.toLowerCase() || "",
967
- onChange: c,
968
- children: Y.map((d) => /* @__PURE__ */ e("option", { value: d.initials.toLowerCase(), children: d.name }, d.initials))
1418
+ value: o.assignees[0]?.initials.toLowerCase() || "",
1419
+ onChange: v,
1420
+ children: be.map((s) => /* @__PURE__ */ e("option", { value: s.initials.toLowerCase(), children: s.name }, s.initials))
969
1421
  }
970
1422
  )
971
1423
  ] })
972
1424
  ] }),
973
- /* @__PURE__ */ n("div", { className: s["form-group"], children: [
974
- /* @__PURE__ */ e("label", { className: s["form-label"], htmlFor: "taskDescription", children: "Beschreibung" }),
1425
+ /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1426
+ /* @__PURE__ */ e("label", { className: d["form-label"], htmlFor: "taskDescription", children: "Beschreibung" }),
975
1427
  /* @__PURE__ */ e(
976
1428
  "textarea",
977
1429
  {
978
1430
  id: "taskDescription",
979
- className: p(s["form-control"], s.textarea),
1431
+ className: g(d["form-control"], d.textarea),
980
1432
  placeholder: "Weitere Details zur Aufgabe...",
981
- value: a.description || "",
982
- onChange: (d) => f({ ...a, description: d.target.value })
1433
+ value: o.description || "",
1434
+ onChange: (s) => w({ ...o, description: s.target.value })
983
1435
  }
984
1436
  )
985
1437
  ] }),
986
- /* @__PURE__ */ n("div", { className: s["form-group"], children: [
987
- /* @__PURE__ */ e("label", { className: s["form-label"], children: "To-Do Checkliste" }),
988
- /* @__PURE__ */ e(G, { items: a.checklist, onChange: v, editable: !0 }),
1438
+ /* @__PURE__ */ c("div", { className: d["form-group"], children: [
1439
+ /* @__PURE__ */ e("label", { className: d["form-label"], children: "To-Do Checkliste" }),
1440
+ /* @__PURE__ */ e(re, { items: o.checklist, onChange: f, editable: !0 }),
989
1441
  /* @__PURE__ */ e(
990
- T,
1442
+ R,
991
1443
  {
992
1444
  variant: "ghost",
993
- onClick: N,
1445
+ onClick: y,
994
1446
  style: { alignSelf: "flex-start", marginTop: "0.25rem" },
995
1447
  children: "+ Neues Element"
996
1448
  }
997
1449
  )
998
1450
  ] })
999
1451
  ] }),
1000
- m === "view" ? /* @__PURE__ */ n("footer", { className: s["modal-footer"], children: [
1001
- /* @__PURE__ */ e(T, { variant: "outline", onClick: y, children: "Schließen" }),
1002
- /* @__PURE__ */ n(T, { variant: "primary", onClick: () => g("edit"), children: [
1003
- /* @__PURE__ */ e("svg", { className: s["icon-pencil"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" }) }),
1452
+ _ === "view" ? /* @__PURE__ */ c("footer", { className: d["modal-footer"], children: [
1453
+ /* @__PURE__ */ e(R, { variant: "outline", onClick: C, children: "Schließen" }),
1454
+ /* @__PURE__ */ c(R, { variant: "primary", onClick: () => m("edit"), children: [
1455
+ /* @__PURE__ */ e("svg", { className: d["icon-pencil"], viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" }) }),
1004
1456
  "Bearbeiten"
1005
1457
  ] })
1006
- ] }) : /* @__PURE__ */ n("footer", { className: s["modal-footer"], children: [
1007
- /* @__PURE__ */ e(T, { variant: "outline", onClick: () => g("view"), children: "Abbrechen" }),
1008
- /* @__PURE__ */ e(T, { variant: "primary", onClick: j, children: "Speichern" })
1458
+ ] }) : /* @__PURE__ */ c("footer", { className: d["modal-footer"], children: [
1459
+ /* @__PURE__ */ e(R, { variant: "outline", onClick: () => m("view"), children: "Abbrechen" }),
1460
+ /* @__PURE__ */ e(R, { variant: "primary", onClick: x, children: "Speichern" })
1009
1461
  ] })
1010
1462
  ] })
1011
1463
  }
1012
1464
  );
1013
1465
  }
1014
1466
  );
1015
- ie.displayName = "TaskDetailModal";
1016
- const Ce = "_icon_gqjal_64", D = {
1017
- "widget-card": "_widget-card_gqjal_4",
1018
- "widget-header": "_widget-header_gqjal_20",
1019
- "widget-header__title": "_widget-header__title_gqjal_30",
1020
- "task-list": "_task-list_gqjal_41",
1021
- icon: Ce,
1022
- "icon-sm": "_icon-sm_gqjal_74"
1023
- }, ze = w.forwardRef(
1024
- ({ tasks: t, onTaskUpdate: l, onTaskAdd: r, className: o, ...i }, _) => {
1025
- const [u, b] = z(t), [m, g] = z(!1), [a, f] = z(null), [j, y] = z("view"), v = (h) => {
1026
- f(h), y("view"), g(!0);
1467
+ $e.displayName = "TaskDetailModal";
1468
+ const va = "_icon_1rthp_4", fe = {
1469
+ icon: va,
1470
+ "icon-sm": "_icon-sm_1rthp_14"
1471
+ }, ga = p.forwardRef(
1472
+ ({ tasks: t, onTaskUpdate: a, onTaskAdd: n, className: r, ...i }, u) => {
1473
+ const [l, h] = A(t), [_, m] = A(!1), [o, w] = A(null), [x, C] = A("view"), f = (b) => {
1474
+ w(b), C("view"), m(!0);
1027
1475
  }, k = () => {
1028
- const h = {
1476
+ const b = {
1029
1477
  id: `new-${Date.now()}`,
1030
1478
  title: "Neue Aufgabe",
1031
1479
  project: "Q1",
@@ -1037,63 +1485,64 @@ const Ce = "_icon_gqjal_64", D = {
1037
1485
  description: "",
1038
1486
  checklist: []
1039
1487
  };
1040
- f(h), y("edit"), g(!0);
1041
- }, c = (h) => {
1042
- if (u.some((x) => x.id === h.id)) {
1043
- const x = u.map((I) => I.id === h.id ? h : I);
1044
- b(x), l && l(h);
1488
+ w(b), C("edit"), m(!0);
1489
+ }, v = (b) => {
1490
+ if (l.some((N) => N.id === b.id)) {
1491
+ const N = l.map((I) => I.id === b.id ? b : I);
1492
+ h(N), a && a(b);
1045
1493
  } else
1046
- b([...u, h]), r && r(h);
1047
- f(h);
1048
- }, N = (h, d) => {
1049
- const x = u.map((I) => {
1050
- if (I.id === h) {
1051
- const K = { ...I, status: d };
1052
- return l && l(K), K;
1494
+ h([...l, b]), n && n(b);
1495
+ w(b);
1496
+ }, y = (b, s) => {
1497
+ const N = l.map((I) => {
1498
+ if (I.id === b) {
1499
+ const L = { ...I, status: s };
1500
+ return a && a(L), L;
1053
1501
  }
1054
1502
  return I;
1055
1503
  });
1056
- b(x);
1504
+ h(N);
1057
1505
  };
1058
- return /* @__PURE__ */ n(
1059
- "main",
1506
+ return /* @__PURE__ */ c(
1507
+ U,
1060
1508
  {
1061
- ref: _,
1062
- className: p(D["widget-card"], o),
1509
+ ref: u,
1510
+ as: "main",
1511
+ title: "Aufgaben",
1512
+ variant: "half",
1513
+ scrollable: !0,
1514
+ headerAction: /* @__PURE__ */ c(R, { variant: "primary", onClick: k, "aria-label": "Neue Aufgabe erstellen", children: [
1515
+ /* @__PURE__ */ e("svg", { className: g(fe.icon, fe["icon-sm"]), viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M12 5v14M5 12h14" }) }),
1516
+ "Neu"
1517
+ ] }),
1518
+ className: r,
1063
1519
  ...i,
1064
1520
  children: [
1065
- /* @__PURE__ */ n("header", { className: D["widget-header"], children: [
1066
- /* @__PURE__ */ e("h2", { className: D["widget-header__title"], children: "Aufgaben" }),
1067
- /* @__PURE__ */ n(T, { variant: "primary", onClick: k, "aria-label": "Neue Aufgabe erstellen", children: [
1068
- /* @__PURE__ */ e("svg", { className: p(D.icon, D["icon-sm"]), viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { d: "M12 5v14M5 12h14" }) }),
1069
- "Neu"
1070
- ] })
1071
- ] }),
1072
- /* @__PURE__ */ e("div", { className: D["task-list"], role: "list", "aria-label": "Aufgabenliste", children: u.map((h) => /* @__PURE__ */ e(
1073
- re,
1521
+ /* @__PURE__ */ e(ce, { "aria-label": "Aufgabenliste", children: l.map((b) => /* @__PURE__ */ e(
1522
+ je,
1074
1523
  {
1075
- title: h.title,
1076
- project: h.project,
1077
- projectLabel: h.projectLabel,
1078
- status: h.status,
1079
- deadline: h.deadline,
1080
- deadlineType: h.deadlineType,
1081
- priority: h.priority,
1082
- assignees: h.assignees,
1083
- description: h.description,
1084
- onClick: () => v(h),
1085
- onStatusChange: (d) => N(h.id, d)
1524
+ title: b.title,
1525
+ project: b.project,
1526
+ projectLabel: b.projectLabel,
1527
+ status: b.status,
1528
+ deadline: b.deadline,
1529
+ deadlineType: b.deadlineType,
1530
+ priority: b.priority,
1531
+ assignees: b.assignees,
1532
+ description: b.description,
1533
+ onClick: () => f(b),
1534
+ onStatusChange: (s) => y(b.id, s)
1086
1535
  },
1087
- h.id
1536
+ b.id
1088
1537
  )) }),
1089
1538
  /* @__PURE__ */ e(
1090
- ie,
1539
+ $e,
1091
1540
  {
1092
- isOpen: m,
1093
- onClose: () => g(!1),
1094
- task: a,
1095
- initialMode: j,
1096
- onSave: c
1541
+ isOpen: _,
1542
+ onClose: () => m(!1),
1543
+ task: o,
1544
+ initialMode: x,
1545
+ onSave: v
1097
1546
  }
1098
1547
  )
1099
1548
  ]
@@ -1101,22 +1550,33 @@ const Ce = "_icon_gqjal_64", D = {
1101
1550
  );
1102
1551
  }
1103
1552
  );
1104
- ze.displayName = "TaskWidget";
1553
+ ga.displayName = "TaskWidget";
1105
1554
  export {
1106
- M as Avatar,
1107
- W as AvatarGroup,
1108
- V as Badge,
1109
- T as Button,
1110
- G as Checklist,
1111
- ye as DashboardPage,
1112
- ae as FavoriteButton,
1113
- H as PriorityBadge,
1114
- le as ProjectTable,
1115
- ee as StatusBadge,
1116
- se as StatusChart,
1117
- ne as StatusDropdown,
1118
- te as StatusLegendItem,
1119
- ie as TaskDetailModal,
1120
- re as TaskItem,
1121
- ze as TaskWidget
1555
+ V as Avatar,
1556
+ de as AvatarGroup,
1557
+ ie as Badge,
1558
+ ce as BaseList,
1559
+ we as BaseTable,
1560
+ R as Button,
1561
+ re as Checklist,
1562
+ aa as DashboardPage,
1563
+ Ue as DataCard,
1564
+ Wt as EmptyState,
1565
+ It as ExpandButton,
1566
+ ye as FavoriteButton,
1567
+ Ne as ListItem,
1568
+ _e as PriorityBadge,
1569
+ Rt as ProgressCircle,
1570
+ Ie as ProjectTable,
1571
+ Et as ScoreBar,
1572
+ yt as SearchInput,
1573
+ Kt as SegmentedControl,
1574
+ ke as StatusBadge,
1575
+ xe as StatusChart,
1576
+ Se as StatusDropdown,
1577
+ Ce as StatusLegendItem,
1578
+ $e as TaskDetailModal,
1579
+ je as TaskItem,
1580
+ ga as TaskWidget,
1581
+ U as WidgetCard
1122
1582
  };