Add business Finance hub with invoices and templates.

Ship invoice issue/list/templates under Finance, fix tenant theme reset and owner role badge, and show customers-joined charts by Persian months.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-08-11 15:17:03 +03:30
co-authored by Cursor
parent 722933dda9
commit 917b840ee5
44 changed files with 5136 additions and 105 deletions
@@ -0,0 +1,117 @@
.sectionHeader {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 16px;
margin-bottom: 14px;
}
.sectionTitleRow {
display: flex;
align-items: flex-start;
gap: 10px;
color: var(--primary);
}
.sectionTitle {
margin: 0 0 2px;
font-size: 15px;
font-weight: 700;
color: var(--text-primary);
}
.sectionSubtitle {
margin: 0;
font-size: 12.5px;
color: var(--text-secondary);
max-width: min(560px, 100%);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.emptyState {
display: flex;
align-items: center;
gap: 10px;
padding: 18px 4px;
color: var(--text-secondary);
font-size: 13px;
}
.topTextPreview {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.hint {
margin-top: 16px;
font-size: 12.5px;
color: var(--text-secondary);
}
.hint a {
color: var(--primary);
font-weight: 600;
}
.hint a:hover {
text-decoration: underline;
}
/* Invoice templates list: name+subtext ~ half width (6/12) */
.invoiceTemplatesTable col.nameCol {
width: 50%;
}
.invoiceTemplatesTable col.countCol {
width: 12%;
}
.invoiceTemplatesTable col.actionsCol {
width: 14%;
}
/* Item templates: title+desc ~ half width (6/12), rest share the other half */
.itemTemplatesTable col.nameCol {
width: 50%;
}
.itemTemplatesTable col.durationCol,
.itemTemplatesTable col.worktimeCol {
width: 10%;
}
.itemTemplatesTable col.priceCol,
.itemTemplatesTable col.discountedCol {
width: 11%;
}
.itemTemplatesTable col.actionsCol {
width: 8%;
}
.nameCell {
min-width: 0;
}
.nameCell .subText,
.nameCellDesc,
.nameCell .topTextPreview {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
white-space: normal;
word-break: break-word;
line-height: 1.4;
margin-top: 2px;
max-width: none;
}
@media (max-width: 720px) {
.sectionHeader {
flex-direction: column;
}
}