fix app layouts: remove style tags from content fragments, use component classes

This commit is contained in:
2026-01-20 17:40:38 +01:00
parent 4b47611902
commit 82bc0c78fe
25 changed files with 5350 additions and 537 deletions

View File

@@ -6,6 +6,7 @@
<link type="text/rcss" href="../../ui/layout.rcss"/>
<script src="../../scripts/navigation.lua"></script>
<script src="../../scripts/layout.lua"></script>
<script src="contacts.lua"></script>
<title>Contacts</title>
<style>
.contacts-list {
@@ -89,6 +90,123 @@
pointer-events: none;
}
/* Contact Detail View */
#contact-detail {
display: none;
flex-direction: column;
flex: 1;
}
.detail-header {
padding: 32px 16px;
text-align: center;
background-color: #1E1E1E;
}
.detail-avatar {
width: 96px;
height: 96px;
border-radius: 48px;
margin: 0 auto 16px auto;
display: flex;
align-items: center;
justify-content: center;
font-size: 40px;
color: #000000;
}
.detail-name {
font-size: 28px;
font-weight: 500;
color: #FFFFFF;
}
.detail-actions {
display: flex;
justify-content: center;
gap: 32px;
padding: 20px;
background-color: #1E1E1E;
border-bottom: 1px solid #333333;
}
.detail-action-btn {
display: flex;
flex-direction: column;
align-items: center;
cursor: pointer;
padding: 8px;
}
.detail-action-btn:hover {
opacity: 0.8;
}
.detail-action-icon {
width: 48px;
height: 48px;
border-radius: 24px;
background-color: #BB86FC;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 8px;
}
.detail-action-icon img {
width: 24px;
height: 24px;
pointer-events: none;
}
.detail-action-label {
font-size: 14px;
color: #FFFFFF;
}
.detail-info {
flex: 1;
padding: 16px;
}
.detail-row {
display: flex;
align-items: center;
padding: 16px 0;
border-bottom: 1px solid #333333;
cursor: pointer;
}
.detail-row:hover {
background-color: rgba(255, 255, 255, 0.05);
}
.detail-icon {
width: 40px;
margin-right: 16px;
display: flex;
justify-content: center;
}
.detail-content {
flex: 1;
}
.detail-label {
font-size: 14px;
color: #888888;
}
.detail-value {
font-size: 18px;
color: #FFFFFF;
margin-top: 4px;
}
.detail-action {
padding: 8px;
}
/* Phone app bottom tabs */
.phone-tabs {
height: 72px;
@@ -123,9 +241,17 @@
.phone-tab span {
font-size: 14px;
}
/* Search style adjustments */
.search-input {
flex: 1;
background-color: transparent;
font-size: 18px;
color: #FFFFFF;
}
</style>
</head>
<body class="app-screen" onload="initLayout(document)" data-model="contacts">
<body class="app-screen" onload="initLayout(document); initContacts(document)" data-model="contacts">
<!-- System Status Bar -->
<div class="system-status-bar">
<span id="status-time" class="system-status-time">12:30</span>
@@ -143,162 +269,67 @@
</div>
<span class="app-bar-title">Contacts</span>
<div class="app-bar-actions">
<div class="app-bar-action">
<img src="../../icons/search.tga"/>
</div>
<div class="app-bar-action">
<div class="app-bar-action" onclick="addContact()">
<img src="../../icons/add.tga"/>
</div>
</div>
</div>
<!-- Search Bar -->
<div class="search-bar">
<img src="../../icons/search.tga" class="search-icon" style="width: 24px; height: 24px;"/>
<input class="search-input" type="text" placeholder="Search contacts"/>
<!-- Contacts List Container -->
<div id="contacts-list-container" class="app-content" style="display: flex; flex-direction: column;">
<!-- Search Bar -->
<div class="search-bar">
<img src="../../icons/search.tga" class="search-icon" style="width: 24px; height: 24px;"/>
<input class="search-input" type="text" placeholder="Search contacts" onchange="onSearchInput(this)"/>
</div>
<!-- Contacts List -->
<div class="contacts-list" id="contacts-list">
<!-- Populated by Lua -->
</div>
</div>
<!-- Contacts List -->
<div class="app-content">
<div class="contacts-list">
<!-- A -->
<div class="contact-letter">A</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #E91E63;">A</div>
<div class="contact-info">
<div class="contact-name">Alice Johnson</div>
<div class="contact-phone">+1 555-0101</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
</div>
</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #9C27B0;">A</div>
<div class="contact-info">
<div class="contact-name">Andrew Smith</div>
<div class="contact-phone">+1 555-0102</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
</div>
</div>
<!-- Contact Detail View -->
<div id="contact-detail">
<div class="detail-header">
<div class="detail-avatar" id="detail-avatar">A</div>
<div class="detail-name" id="detail-name">Contact Name</div>
</div>
<!-- B -->
<div class="contact-letter">B</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #2196F3;">B</div>
<div class="contact-info">
<div class="contact-name">Bob Williams</div>
<div class="contact-phone">+1 555-0201</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
<div class="detail-actions">
<div class="detail-action-btn" onclick="callContact(selected_contact and selected_contact.id or '')">
<div class="detail-action-icon">
<img src="../../icons/call_small.tga"/>
</div>
<span class="detail-action-label">Call</span>
</div>
<div class="detail-action-btn" onclick="messageContact(selected_contact and selected_contact.id or '')">
<div class="detail-action-icon" style="background-color: #03DAC6;">
<img src="../../icons/message.tga"/>
</div>
<span class="detail-action-label">Message</span>
</div>
<div class="detail-action-btn" onclick="editContact(selected_contact and selected_contact.id or '')">
<div class="detail-action-icon" style="background-color: #FF9800;">
<img src="../../icons/edit.tga"/>
</div>
<span class="detail-action-label">Edit</span>
</div>
</div>
<!-- C -->
<div class="contact-letter">C</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #4CAF50;">C</div>
<div class="contact-info">
<div class="contact-name">Carol Davis</div>
<div class="contact-phone">+1 555-0301</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
</div>
</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #FF9800;">C</div>
<div class="contact-info">
<div class="contact-name">Chris Miller</div>
<div class="contact-phone">+1 555-0302</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
</div>
</div>
<div class="detail-info" id="detail-info">
<!-- Populated by Lua -->
</div>
<!-- D -->
<div class="contact-letter">D</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #F44336;">D</div>
<div class="contact-info">
<div class="contact-name">David Brown</div>
<div class="contact-phone">+1 555-0401</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
</div>
</div>
<!-- E -->
<div class="contact-letter">E</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #00BCD4;">E</div>
<div class="contact-info">
<div class="contact-name">Emma Wilson</div>
<div class="contact-phone">+1 555-0501</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
</div>
</div>
<!-- J -->
<div class="contact-letter">J</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #673AB7;">J</div>
<div class="contact-info">
<div class="contact-name">John Doe</div>
<div class="contact-phone">+1 555-1234</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
</div>
</div>
<!-- M -->
<div class="contact-letter">M</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #3F51B5;">M</div>
<div class="contact-info">
<div class="contact-name">Mary Taylor</div>
<div class="contact-phone">+1 555-0601</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
</div>
</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #009688;">M</div>
<div class="contact-info">
<div class="contact-name">Michael Lee</div>
<div class="contact-phone">+1 555-0602</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
</div>
</div>
<!-- S -->
<div class="contact-letter">S</div>
<div class="contact-item">
<div class="contact-avatar" style="background-color: #795548;">S</div>
<div class="contact-info">
<div class="contact-name">Sarah Anderson</div>
<div class="contact-phone">+1 555-0701</div>
</div>
<div class="contact-call-btn">
<img src="../../icons/phone.tga"/>
</div>
<div style="padding: 16px;">
<div class="btn btn-outlined" style="width: 100%; text-align: center;" onclick="hideContactDetail()">
Back to Contacts
</div>
</div>
</div>
<!-- FAB -->
<div class="btn-fab">
<div class="btn-fab" onclick="addContact()">
<img src="../../icons/add.tga" style="width: 32px; height: 32px;"/>
</div>
@@ -308,7 +339,7 @@
<img src="../../icons/dialpad.tga"/>
<span>Keypad</span>
</div>
<div class="phone-tab">
<div class="phone-tab" onclick="switchTab('recent')">
<img src="../../icons/history.tga"/>
<span>Recent</span>
</div>