|
|
21c558de00
|
feat(slider-component): Range-Slider mit Value-Display [tsc:fail]
|
2026-05-23 10:08:48 +02:00 |
|
|
|
bb164bb1e0
|
feat(spinner-component): Spinner mit Size-Varianten [tsc:fail]
|
2026-05-23 10:08:35 +02:00 |
|
|
|
5759154f61
|
feat(empty-chart-component): EmptyChart-Placeholder für Charts ohne Daten [tsc:fail]
|
2026-05-23 10:04:23 +02:00 |
|
|
|
b278c4e4e8
|
feat(skeleton-block-component): SkeletonBlock für Loading-Placeholders [tsc:fail]
|
2026-05-23 10:04:15 +02:00 |
|
|
|
d7fcf9f90c
|
feat(timeline-component): Timeline für Activity-Feed [tsc:fail]
|
2026-05-23 10:04:04 +02:00 |
|
|
|
d6bddc51ed
|
feat(stepper-component): Stepper für Wizard-Flows [tsc:fail]
|
2026-05-23 10:03:47 +02:00 |
|
|
|
239d2f9e17
|
feat(search-box-component): SearchBox mit clear-button [tsc:fail]
|
2026-05-23 09:59:39 +02:00 |
|
|
|
116da565a7
|
feat(select-component): Select mit custom-styling [tsc:fail]
|
2026-05-23 09:59:25 +02:00 |
|
|
|
9b65f8793d
|
feat(textarea-component): Textarea mit auto-resize + char-count [tsc:fail]
|
2026-05-23 09:59:03 +02:00 |
|
|
|
f086436ec4
|
feat(input-component): Input mit Label + Error-State [tsc:fail]
|
2026-05-23 09:58:44 +02:00 |
|
|
|
dea538987b
|
feat(radio-group-component): RadioGroup mit Optionen [tsc:fail]
|
2026-05-23 09:54:27 +02:00 |
|
|
|
6eb9428c2e
|
feat(switch-toggle-component): Switch/Toggle mit slide-Animation [tsc:fail]
|
2026-05-23 09:54:11 +02:00 |
|
|
|
aec1d96e66
|
feat(checkbox-component): Checkbox mit Label [tsc:fail]
|
2026-05-23 09:53:55 +02:00 |
|
|
|
df55212a6d
|
feat(dropdown-menu-component): DropdownMenu mit Items [tsc:fail]
|
2026-05-23 09:53:44 +02:00 |
|
|
|
304e86dd42
|
feat(progress-bar-component): ProgressBar mit Animation [tsc:fail]
|
2026-05-23 09:49:34 +02:00 |
|
|
|
eb8f225e85
|
feat(alert-component): Alert-Banner mit dismiss [tsc:fail]
|
2026-05-23 09:49:22 +02:00 |
|
|
|
8c9a0e8674
|
feat(accordion-component): Accordion mit collapsible Sections [tsc:fail]
|
2026-05-23 09:49:00 +02:00 |
|
|
|
11f4d10645
|
feat(tabs-component): Tabs mit aktivem State [tsc:fail]
|
2026-05-23 09:48:43 +02:00 |
|
|
|
727f1a45ef
|
feat(color-picker-component): ColorPicker mit Preset-Swatches [tsc:fail]
|
2026-05-23 09:44:37 +02:00 |
|
|
|
e0db2668b3
|
feat(pagination-component): Pagination mit Prev/Next + Page-Numbers [tsc:fail]
|
2026-05-23 09:44:19 +02:00 |
|
|
|
581d3334eb
|
feat(divider-component): Divider horizontal/vertikal [tsc:fail]
|
2026-05-23 09:43:56 +02:00 |
|
|
|
bd0c071efa
|
feat(avatar-component): Avatar mit Initial-Fallback [tsc:fail]
|
2026-05-23 09:43:45 +02:00 |
|
|
|
0b4d4029a0
|
feat(status-dot-component): StatusDot für Indicator (online/offline/busy) [tsc:fail]
|
2026-05-23 09:39:17 +02:00 |
|
|
|
d50d5253ca
|
feat(card-component): Card-Container mit padding/shadow [tsc:fail]
|
2026-05-23 09:39:04 +02:00 |
|
|
|
d8ae2e0200
|
feat(badge-component): Badge mit color-variants [tsc:fail]
|
2026-05-23 09:38:54 +02:00 |
|
|
|
14bb8fd16a
|
feat(tooltip-component): Tooltip mit hover-delay [tsc:fail]
|
2026-05-23 09:38:42 +02:00 |
|
|
|
e8df82e0f0
|
feat(copy-to-clipboard-component): CopyButton mit visual feedback [tsc:fail]
|
2026-05-23 09:34:15 +02:00 |
|
|
|
72025919f3
|
feat(button-loading-states): Button mit loading-prop zeigt Spinner [tsc:fail]
|
2026-05-23 09:34:02 +02:00 |
|
|
|
9a71f7e13e
|
feat(empty-state-illustrations): EmptyState-Component für leere Listen [tsc:fail]
|
2026-05-23 09:33:49 +02:00 |
|
|
|
141c7f81dd
|
feat(toast-undo-pattern): Toast mit Undo-Button bei Delete-Actions [tsc:fail]
|
2026-05-23 09:33:36 +02:00 |
|
|
|
b6c1dd21f0
|
feat(meta-tags-and-title): Page-Titles + Meta-Description aktualisieren beim Route-Chan [tsc:fail]
|
2026-05-23 09:30:29 +02:00 |
|
|
|
809dc95dd5
|
feat(loading-everywhere): LoadingSpinner consistent in allen Pages [tsc:fail]
|
2026-05-23 09:30:25 +02:00 |
|
|
|
3fd79e0747
|
feat(accessibility-final): ARIA labels + keyboard-trap-modal-fix + focus-management [tsc:fail]
|
2026-05-23 09:26:34 +02:00 |
|
|
|
f371eeb3be
|
feat(api-error-pages): 500-Error-Page bei API-Down [tsc:fail]
|
2026-05-23 09:26:06 +02:00 |
|
|
|
960b1f9dfd
|
feat(404-not-found-page): 404-Page als catchall Route [tsc:fail]
|
2026-05-23 09:24:53 +02:00 |
|
|
|
46ef0d44cc
|
feat(dashboard-favorites-section): Dashboard zeigt Favorites als Quick-Access [tsc:fail]
|
2026-05-23 09:22:13 +02:00 |
|
|
|
a36f1a6096
|
feat(onboarding-improvements): Onboarding-Tour: 3 Schritte (Dashboard → Customer anlegen → [tsc:fail]
|
2026-05-23 09:20:46 +02:00 |
|
|
|
d6fe3ba005
|
feat(more-keyboard-shortcuts): ? für Help, G+H for home, etc — Hotkey-Registry [tsc:fail]
|
2026-05-23 09:19:54 +02:00 |
|
|
|
29646c8015
|
feat(favorites-system): User kann Customer/Project favoritisieren (localStorage) [tsc:fail]
|
2026-05-23 09:19:24 +02:00 |
|
|
|
eb65bea128
|
feat(recently-viewed-widget): Recently-Viewed Widget für Dashboard (last 5 customers + pro [tsc:fail]
|
2026-05-23 09:19:02 +02:00 |
|
|
|
2fe907da4e
|
feat(breadcrumbs-everywhere): Breadcrumb auf allen List-Pages [tsc:fail]
|
2026-05-23 09:15:44 +02:00 |
|
|
|
43861d5ff9
|
feat(time-entry-clone): Clone-Button pro TimeEntry (copy + reset time) [tsc:fail]
|
2026-05-23 09:10:31 +02:00 |
|
|
|
969f7be8f6
|
feat(project-billing-rate): Project bekommt billingRate (€/h) [tsc:fail]
|
2026-05-23 09:08:36 +02:00 |
|
|
|
6e7f2a4514
|
feat(customer-contact-info): Customers: contactEmail + contactPhone optional fields [tsc:fail]
|
2026-05-23 09:06:25 +02:00 |
|
|
|
570be9c6d8
|
feat(search-pagination): Pagination in search-results (10 per page) [tsc:fail]
|
2026-05-23 08:58:44 +02:00 |
|
|
|
c5d0d3b0ef
|
feat(bulk-customer-tag): Bulk-Add-Tag zu mehreren Customers [tsc:fail]
|
2026-05-23 08:57:43 +02:00 |
|
|
|
571b564508
|
feat(advanced-filters): AdvancedFilters für TimeEntries: status, project, user, bill [tsc:fail]
|
2026-05-23 08:56:08 +02:00 |
|
|
|
f9ccda43ec
|
feat(performance-memoization): React.memo + useMemo in heavy Lists (Customers, Projects, Ti [tsc:fail]
|
2026-05-23 08:54:17 +02:00 |
|
|
|
a2a81d0205
|
feat(hover-tooltips): Tooltip-Component (für Icon-Only-Buttons) [tsc:fail]
|
2026-05-23 08:52:26 +02:00 |
|
|
|
fb3a7d6c0e
|
feat(confirm-modal): Reusable Confirm-Modal statt window.confirm() [tsc:fail]
|
2026-05-23 08:52:18 +02:00 |
|