add composer-unused, comprehensive docs, and project restructure
- Add icanhazstring/composer-unused as dev dependency for dependency hygiene checks
- Add German documentation (docs/) covering architecture, conventions, workflows, and developer checklists
- Add API layer (ApiAuth, ApiBootstrap, ApiResponse), audit, scheduler, custom fields, and SSO services
- Add Microsoft OIDC SSO, API token management, and user lifecycle features
- Add swagger-ui vendor integration and OpenAPI spec
- Add production Docker setup and bin/ scripts
- Update composer dependencies, config, templates, and frontend assets throughout
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 15:27:35 +01:00
|
|
|
@layer components {
|
2026-03-13 22:21:37 +01:00
|
|
|
/* Action button variants — success and danger colors with outline and focus states. */
|
2026-03-12 16:47:53 +01:00
|
|
|
.app-action-success:is(button, [type="submit"], [type="button"], [role="button"]) {
|
|
|
|
|
--app-background-color: var(--app-action-success-background);
|
|
|
|
|
--app-border-color: var(--app-action-success-border);
|
|
|
|
|
--app-color: var(--app-action-success-color);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.app-action-success:is(button, [type="submit"], [type="button"], [role="button"]):is(
|
|
|
|
|
[aria-current]:not([aria-current="false"]),
|
|
|
|
|
:hover,
|
|
|
|
|
:active,
|
|
|
|
|
:focus
|
|
|
|
|
) {
|
|
|
|
|
--app-background-color: var(--app-action-success-hover-background);
|
|
|
|
|
--app-border-color: var(--app-action-success-hover-border);
|
|
|
|
|
--app-color: var(--app-action-success-color);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.app-action-success:is(button, [type="submit"], [type="button"], [role="button"]).outline {
|
|
|
|
|
--app-background-color: transparent;
|
|
|
|
|
--app-border-color: var(--app-action-success-border);
|
|
|
|
|
--app-color: var(--app-action-success-border);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.app-action-success:is(
|
|
|
|
|
button,
|
|
|
|
|
[type="submit"],
|
|
|
|
|
[type="button"],
|
|
|
|
|
[role="button"]
|
|
|
|
|
).outline:is(
|
|
|
|
|
[aria-current]:not([aria-current="false"]),
|
|
|
|
|
:hover,
|
|
|
|
|
:active,
|
|
|
|
|
:focus
|
|
|
|
|
) {
|
|
|
|
|
--app-background-color: var(--app-action-success-outline-background);
|
|
|
|
|
--app-border-color: var(--app-action-success-border);
|
|
|
|
|
--app-color: var(--app-action-success-border);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.app-action-success:is(button, [type="submit"], [type="button"], [role="button"]):focus {
|
|
|
|
|
--app-box-shadow:
|
|
|
|
|
var(--app-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
|
|
|
|
|
0 0 0 var(--app-outline-width) var(--app-action-success-focus-color);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.danger:is(button, [type="submit"], [type="button"], [role="button"]),
|
|
|
|
|
.app-action-danger:is(button, [type="submit"], [type="button"], [role="button"]) {
|
|
|
|
|
--app-background-color: var(--app-action-danger-background);
|
|
|
|
|
--app-border-color: var(--app-action-danger-border);
|
|
|
|
|
--app-color: var(--app-action-danger-color);
|
2026-02-04 23:31:53 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.danger:is(button, [type="submit"], [type="button"], [role="button"]):is(
|
|
|
|
|
[aria-current]:not([aria-current="false"]),
|
|
|
|
|
:hover,
|
|
|
|
|
:active,
|
|
|
|
|
:focus
|
2026-03-12 16:47:53 +01:00
|
|
|
),
|
|
|
|
|
.app-action-danger:is(button, [type="submit"], [type="button"], [role="button"]):is(
|
|
|
|
|
[aria-current]:not([aria-current="false"]),
|
|
|
|
|
:hover,
|
|
|
|
|
:active,
|
|
|
|
|
:focus
|
2026-02-04 23:31:53 +01:00
|
|
|
) {
|
2026-03-12 16:47:53 +01:00
|
|
|
--app-background-color: var(--app-action-danger-hover-background);
|
|
|
|
|
--app-border-color: var(--app-action-danger-hover-border);
|
|
|
|
|
--app-color: var(--app-action-danger-color);
|
2026-02-04 23:31:53 +01:00
|
|
|
}
|
|
|
|
|
|
2026-03-12 16:47:53 +01:00
|
|
|
.danger:is(button, [type="submit"], [type="button"], [role="button"]).outline,
|
|
|
|
|
.app-action-danger:is(button, [type="submit"], [type="button"], [role="button"]).outline {
|
2026-02-04 23:31:53 +01:00
|
|
|
--app-background-color: transparent;
|
2026-03-12 16:47:53 +01:00
|
|
|
--app-border-color: var(--app-action-danger-border);
|
|
|
|
|
--app-color: var(--app-action-danger-border);
|
2026-02-04 23:31:53 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.danger:is(
|
|
|
|
|
button,
|
|
|
|
|
[type="submit"],
|
|
|
|
|
[type="button"],
|
|
|
|
|
[role="button"]
|
|
|
|
|
).outline:is(
|
|
|
|
|
[aria-current]:not([aria-current="false"]),
|
|
|
|
|
:hover,
|
|
|
|
|
:active,
|
|
|
|
|
:focus
|
2026-03-12 16:47:53 +01:00
|
|
|
),
|
|
|
|
|
.app-action-danger:is(
|
|
|
|
|
button,
|
|
|
|
|
[type="submit"],
|
|
|
|
|
[type="button"],
|
|
|
|
|
[role="button"]
|
|
|
|
|
).outline:is(
|
|
|
|
|
[aria-current]:not([aria-current="false"]),
|
|
|
|
|
:hover,
|
|
|
|
|
:active,
|
|
|
|
|
:focus
|
2026-02-04 23:31:53 +01:00
|
|
|
) {
|
2026-03-12 16:47:53 +01:00
|
|
|
--app-background-color: var(--app-action-danger-outline-background);
|
|
|
|
|
--app-border-color: var(--app-action-danger-border);
|
|
|
|
|
--app-color: var(--app-action-danger-border);
|
2026-02-04 23:31:53 +01:00
|
|
|
}
|
|
|
|
|
|
2026-03-12 16:47:53 +01:00
|
|
|
.danger:is(button, [type="submit"], [type="button"], [role="button"]):focus,
|
|
|
|
|
.app-action-danger:is(button, [type="submit"], [type="button"], [role="button"]):focus {
|
2026-02-04 23:31:53 +01:00
|
|
|
--app-box-shadow:
|
|
|
|
|
var(--app-button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),
|
2026-03-12 16:47:53 +01:00
|
|
|
0 0 0 var(--app-outline-width) var(--app-action-danger-focus-color);
|
2026-02-04 23:31:53 +01:00
|
|
|
}
|
add composer-unused, comprehensive docs, and project restructure
- Add icanhazstring/composer-unused as dev dependency for dependency hygiene checks
- Add German documentation (docs/) covering architecture, conventions, workflows, and developer checklists
- Add API layer (ApiAuth, ApiBootstrap, ApiResponse), audit, scheduler, custom fields, and SSO services
- Add Microsoft OIDC SSO, API token management, and user lifecycle features
- Add swagger-ui vendor integration and OpenAPI spec
- Add production Docker setup and bin/ scripts
- Update composer dependencies, config, templates, and frontend assets throughout
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 15:27:35 +01:00
|
|
|
}
|