diff --git a/test-footer-shadcn.html b/test-footer-shadcn.html
new file mode 100644
index 0000000..aea47d1
--- /dev/null
+++ b/test-footer-shadcn.html
@@ -0,0 +1,132 @@
+
+
+
+
+
+ Footer Component - shadcn Style
+
+
+
+
+
+ Footer Component with Full shadcn Styling
+ The footer below has been fully updated to embrace shadcn design principles:
+
+ - Minimal design with subtle borders
+ - Consistent spacing and typography
+ - No transform effects, only color transitions
+ - Flat design with no gradients
+ - Proper muted colors for secondary text
+ - Clean hover states
+ - Simplified social icons in square containers
+ - Native-looking form controls
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ts_web/elements/upl-statuspage-footer.ts b/ts_web/elements/upl-statuspage-footer.ts
index 63236f7..0346f3d 100644
--- a/ts_web/elements/upl-statuspage-footer.ts
+++ b/ts_web/elements/upl-statuspage-footer.ts
@@ -118,10 +118,10 @@ export class UplStatuspageFooter extends DeesElement {
}
.footer-main {
- display: grid;
- grid-template-columns: 1fr auto;
- gap: ${unsafeCSS(spacing['2xl'])};
+ display: flex;
+ justify-content: space-between;
align-items: start;
+ gap: ${unsafeCSS(spacing['2xl'])};
}
.company-info {
@@ -131,9 +131,10 @@ export class UplStatuspageFooter extends DeesElement {
}
.company-name {
- font-size: 20px;
- font-weight: 600;
+ font-size: 16px;
+ font-weight: 500;
color: ${colors.text.primary};
+ letter-spacing: -0.01em;
}
.company-links {
@@ -143,15 +144,15 @@ export class UplStatuspageFooter extends DeesElement {
}
.footer-link {
- color: ${colors.text.secondary};
+ color: ${cssManager.bdTheme('#6b7280', '#a1a1aa')};
text-decoration: none;
- transition: color 0.2s ease;
- font-size: 14px;
+ transition: color 0.15s ease;
+ font-size: 13px;
+ font-weight: 400;
}
.footer-link:hover {
color: ${colors.text.primary};
- text-decoration: underline;
}
.footer-actions {
@@ -161,37 +162,36 @@ export class UplStatuspageFooter extends DeesElement {
}
.action-button {
- padding: ${unsafeCSS(spacing.sm)} ${unsafeCSS(spacing.md)};
- border: 1px solid ${colors.border.default};
- background: transparent;
- border-radius: ${unsafeCSS(borderRadius.base)};
+ padding: 8px 16px;
+ height: 36px;
+ border: 1px solid ${cssManager.bdTheme('#e5e7eb', '#27272a')};
+ background: ${cssManager.bdTheme('#ffffff', '#0a0a0a')};
+ border-radius: 6px;
cursor: pointer;
text-align: center;
- transition: all 0.2s ease;
+ transition: all 0.15s ease;
white-space: nowrap;
- font-size: 14px;
- font-weight: 500;
+ font-size: 13px;
+ font-weight: 400;
color: ${colors.text.primary};
font-family: ${unsafeCSS(fonts.base)};
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
}
.action-button:hover {
- background: ${colors.background.secondary};
- border-color: ${colors.border.muted};
- transform: translateY(-1px);
- }
-
- .action-button:active {
- transform: translateY(0);
+ background: ${cssManager.bdTheme('#f9fafb', '#18181b')};
+ border-color: ${cssManager.bdTheme('#d1d5db', '#3f3f46')};
}
.footer-bottom {
display: flex;
justify-content: space-between;
align-items: center;
- padding-top: ${unsafeCSS(spacing.xl)};
- margin-top: ${unsafeCSS(spacing.xl)};
- border-top: 1px solid ${colors.border.default};
+ padding-top: ${unsafeCSS(spacing.lg)};
+ margin-top: ${unsafeCSS(spacing.lg)};
+ border-top: 1px solid ${cssManager.bdTheme('#e5e7eb', '#27272a')};
}
.footer-meta {
@@ -208,60 +208,62 @@ export class UplStatuspageFooter extends DeesElement {
}
.social-link {
- display: inline-block;
- width: 20px;
- height: 20px;
- opacity: 0.7;
- transition: all 0.2s ease;
- color: ${colors.text.secondary};
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 32px;
+ height: 32px;
+ border-radius: 6px;
+ transition: all 0.15s ease;
+ color: ${cssManager.bdTheme('#6b7280', '#a1a1aa')};
}
.social-link:hover {
- opacity: 1;
color: ${colors.text.primary};
- transform: translateY(-1px);
+ background: ${cssManager.bdTheme('#f3f4f6', '#27272a')};
}
.social-link svg {
- width: 100%;
- height: 100%;
+ width: 16px;
+ height: 16px;
fill: currentColor;
}
.copyright {
- font-size: 14px;
- color: ${colors.text.secondary};
+ font-size: 13px;
+ color: ${cssManager.bdTheme('#6b7280', '#a1a1aa')};
}
.last-updated {
- font-size: 13px;
- color: ${colors.text.muted};
+ font-size: 12px;
+ color: ${cssManager.bdTheme('#9ca3af', '#71717a')};
}
.powered-by {
- font-size: 13px;
- color: ${colors.text.muted};
+ font-size: 12px;
+ color: ${cssManager.bdTheme('#9ca3af', '#71717a')};
text-align: right;
}
.powered-by a {
- color: ${colors.text.secondary};
+ color: ${cssManager.bdTheme('#6b7280', '#a1a1aa')};
text-decoration: none;
- transition: color 0.2s ease;
+ transition: color 0.15s ease;
}
.powered-by a:hover {
color: ${colors.text.primary};
- text-decoration: underline;
}
.status-update {
- padding: ${unsafeCSS(spacing.md)} ${unsafeCSS(spacing.lg)};
- background: ${colors.background.muted};
- border-radius: ${unsafeCSS(borderRadius.base)};
- font-size: 14px;
+ padding: 12px 16px;
+ background: ${cssManager.bdTheme('#f9fafb', '#18181b')};
+ border: 1px solid ${cssManager.bdTheme('#e5e7eb', '#27272a')};
+ border-radius: 6px;
+ font-size: 13px;
margin-bottom: ${unsafeCSS(spacing.lg)};
- line-height: 1.6;
+ line-height: 1.5;
+ color: ${cssManager.bdTheme('#4b5563', '#d1d5db')};
}
.language-selector {
@@ -348,25 +350,24 @@ export class UplStatuspageFooter extends DeesElement {
}
.additional-link {
- font-size: 14px;
- color: ${colors.text.secondary};
+ font-size: 13px;
+ color: ${cssManager.bdTheme('#6b7280', '#a1a1aa')};
text-decoration: none;
- transition: color 0.2s ease;
+ transition: color 0.15s ease;
}
.additional-link:hover {
color: ${colors.text.primary};
- text-decoration: underline;
}
@media (max-width: 640px) {
.container {
- padding: ${unsafeCSS(spacing.xl)} ${unsafeCSS(spacing.md)};
+ padding: ${unsafeCSS(spacing.lg)} ${unsafeCSS(spacing.md)};
}
.footer-main {
- grid-template-columns: 1fr;
- gap: ${unsafeCSS(spacing.xl)};
+ flex-direction: column;
+ gap: ${unsafeCSS(spacing.lg)};
}
.footer-bottom {
@@ -411,13 +412,16 @@ export class UplStatuspageFooter extends DeesElement {
${this.offline ? html`
-
⚠ You are currently offline
+
+ You are currently offline
` : ''}
${this.latestStatusUpdate ? html`
- Latest Update: ${this.latestStatusUpdate}
+ Latest Update: ${this.latestStatusUpdate}
` : ''}