feat: Standardize button sizes and icons across multiple manager components for improved UI consistency
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 6m14s

This commit is contained in:
2025-08-12 13:08:06 +07:00
parent 026d2a9379
commit f06a433d77
8 changed files with 35 additions and 35 deletions
+4 -4
View File
@@ -605,13 +605,13 @@ function ASNsNewManager() {
communities={communities} communities={communities}
className={`form-control d-inline-block w-auto me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`} className={`form-control d-inline-block w-auto me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
/> />
<button className="btn btn-success btn-icon me-1" onClick={() => handleSaveEdit(item.asn)} disabled={!isValidCommunity(editingValue)}><IconCheck size={18} /></button> <button className="btn btn-success btn-icon btn-sm me-1" onClick={() => handleSaveEdit(item.asn)} disabled={!isValidCommunity(editingValue)}><IconCheck size={16} /></button>
<button className="btn btn-secondary btn-icon" onClick={handleCancelEdit}><IconX size={18} /></button> <button className="btn btn-secondary btn-icon btn-sm" onClick={handleCancelEdit}><IconX size={16} /></button>
</> </>
) : ( ) : (
<> <>
<button className="btn btn-outline-primary btn-icon me-1" onClick={() => handleEdit(item)}><IconEdit size={18} /></button> <button className="btn btn-outline-primary btn-icon btn-sm me-1" onClick={() => handleEdit(item)}><IconEdit size={16} /></button>
<button className="btn btn-outline-danger btn-icon" onClick={() => confirmDelete(item)}><IconTrash size={18} /></button> <button className="btn btn-outline-danger btn-icon btn-sm" onClick={() => confirmDelete(item)}><IconTrash size={16} /></button>
</> </>
)} )}
</td> </td>
+1 -1
View File
@@ -278,7 +278,7 @@ function AutoUrlManager() {
</td> </td>
<td className="text-end"> <td className="text-end">
<button <button
className="btn btn-outline-danger btn-sm" className="btn btn-outline-danger btn-icon btn-sm"
onClick={() => removeUrl(index)} onClick={() => removeUrl(index)}
disabled={saving || processing} disabled={saving || processing}
> >
+6 -6
View File
@@ -835,14 +835,14 @@ function BillingManager() {
<td> <td>
<div className="btn-list"> <div className="btn-list">
<button <button
className="btn btn-outline-primary btn-icon" className="btn btn-outline-primary btn-icon btn-sm"
onClick={() => handleEditItem(item)} onClick={() => handleEditItem(item)}
title="Редактировать" title="Редактировать"
> >
<IconEdit size={18} /> <IconEdit size={16} />
</button> </button>
<button <button
className="btn btn-outline-success btn-icon" className="btn btn-outline-success btn-icon btn-sm"
onClick={() => { onClick={() => {
setPaymentDraft({ setPaymentDraft({
serverId: item.id, serverId: item.id,
@@ -855,14 +855,14 @@ function BillingManager() {
}} }}
title="Добавить платеж" title="Добавить платеж"
> >
<IconPlus size={18} /> <IconPlus size={16} />
</button> </button>
<button <button
className="btn btn-outline-danger btn-icon" className="btn btn-outline-danger btn-icon btn-sm"
onClick={() => handleDeleteItem(item)} onClick={() => handleDeleteItem(item)}
title="Удалить" title="Удалить"
> >
<IconTrash size={18} /> <IconTrash size={16} />
</button> </button>
</div> </div>
</td> </td>
+4 -4
View File
@@ -400,13 +400,13 @@ function DataManager({ entityName, entityKey, placeholder }) {
onKeyDown={e => handleEditKeyDown(e, item.domain)} onKeyDown={e => handleEditKeyDown(e, item.domain)}
style={{maxWidth: 120}} style={{maxWidth: 120}}
/> />
<button className="btn btn-success btn-icon me-1" onClick={() => handleSaveEdit(item.domain)}><IconCheck size={18} /></button> <button className="btn btn-success btn-icon btn-sm me-1" onClick={() => handleSaveEdit(item.domain)}><IconCheck size={16} /></button>
<button className="btn btn-secondary btn-icon" onClick={handleCancelEdit}><IconX size={18} /></button> <button className="btn btn-secondary btn-icon btn-sm" onClick={handleCancelEdit}><IconX size={16} /></button>
</> </>
) : ( ) : (
<> <>
<button className="btn btn-outline-primary btn-icon me-1" onClick={() => handleEdit(item)}><IconEdit size={18} /></button> <button className="btn btn-outline-primary btn-icon btn-sm me-1" onClick={() => handleEdit(item)}><IconEdit size={16} /></button>
<button className="btn btn-outline-danger btn-icon" onClick={() => confirmDelete(item)}><IconTrash size={18} /></button> <button className="btn btn-outline-danger btn-icon btn-sm" onClick={() => confirmDelete(item)}><IconTrash size={16} /></button>
</> </>
)} )}
</td> </td>
+4 -4
View File
@@ -613,13 +613,13 @@ function DomainsNewManager() {
communities={communities} communities={communities}
className={`form-control d-inline-block w-auto me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`} className={`form-control d-inline-block w-auto me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
/> />
<button className="btn btn-success btn-icon me-1" onClick={() => handleSaveEdit(item.domain)} disabled={!isValidCommunity(editingValue)}><IconCheck size={18} /></button> <button className="btn btn-success btn-icon btn-sm me-1" onClick={() => handleSaveEdit(item.domain)} disabled={!isValidCommunity(editingValue)}><IconCheck size={16} /></button>
<button className="btn btn-secondary btn-icon" onClick={handleCancelEdit}><IconX size={18} /></button> <button className="btn btn-secondary btn-icon btn-sm" onClick={handleCancelEdit}><IconX size={16} /></button>
</> </>
) : ( ) : (
<> <>
<button className="btn btn-outline-primary btn-icon me-1" onClick={() => handleEdit(item)}><IconEdit size={18} /></button> <button className="btn btn-outline-primary btn-icon btn-sm me-1" onClick={() => handleEdit(item)}><IconEdit size={16} /></button>
<button className="btn btn-outline-danger btn-icon" onClick={() => confirmDelete(item)}><IconTrash size={18} /></button> <button className="btn btn-outline-danger btn-icon btn-sm" onClick={() => confirmDelete(item)}><IconTrash size={16} /></button>
</> </>
)} )}
</td> </td>
+6 -6
View File
@@ -1312,22 +1312,22 @@ function FilterManager() {
</> </>
) : ( ) : (
<> <>
<button <button
className="btn btn-outline-primary btn-icon btn-sm" className="btn btn-outline-primary btn-icon btn-sm"
onClick={() => startInlineEdit(filter)} onClick={() => startInlineEdit(filter)}
title="Редактировать фильтр" title="Редактировать фильтр"
> >
<IconEdit size={16} /> <IconEdit size={16} />
</button> </button>
<button <button
className="btn btn-outline-danger btn-icon btn-sm" className="btn btn-outline-danger btn-icon btn-sm"
onClick={() => { onClick={() => {
setFilterToDelete(filter); setFilterToDelete(filter);
setDeleteFilterModalOpen(true); setDeleteFilterModalOpen(true);
}} }}
title="Удалить фильтр" title="Удалить фильтр"
> >
<IconTrash size={16} /> <IconTrash size={16} />
</button> </button>
</> </>
)} )}
+4 -4
View File
@@ -621,13 +621,13 @@ function IPRangesManager() {
communities={communities} communities={communities}
className={`form-control d-inline-block w-auto me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`} className={`form-control d-inline-block w-auto me-2${isValidCommunity(editingValue) ? '' : ' is-invalid'}`}
/> />
<button className="btn btn-success btn-icon me-1" onClick={() => handleSaveEdit(item.ipRange)} disabled={!isValidCommunity(editingValue)}><IconCheck size={18} /></button> <button className="btn btn-success btn-icon btn-sm me-1" onClick={() => handleSaveEdit(item.ipRange)} disabled={!isValidCommunity(editingValue)}><IconCheck size={16} /></button>
<button className="btn btn-secondary btn-icon" onClick={handleCancelEdit}><IconX size={18} /></button> <button className="btn btn-secondary btn-icon btn-sm" onClick={handleCancelEdit}><IconX size={16} /></button>
</> </>
) : ( ) : (
<> <>
<button className="btn btn-outline-primary btn-icon me-1" onClick={() => handleEdit(item)}><IconEdit size={18} /></button> <button className="btn btn-outline-primary btn-icon btn-sm me-1" onClick={() => handleEdit(item)}><IconEdit size={16} /></button>
<button className="btn btn-outline-danger btn-icon" onClick={() => confirmDelete(item)}><IconTrash size={18} /></button> <button className="btn btn-outline-danger btn-icon btn-sm" onClick={() => confirmDelete(item)}><IconTrash size={16} /></button>
</> </>
)} )}
</td> </td>
+6 -6
View File
@@ -632,14 +632,14 @@ function ServerManager() {
</td> </td>
<td className="text-end w-1" style={{ minWidth: 140 }}> <td className="text-end w-1" style={{ minWidth: 140 }}>
<div className="btn-list gap-1 mb-0"> <div className="btn-list gap-1 mb-0">
<button className="btn btn-icon btn-sm btn-outline-primary rounded" title="Ссылка" onClick={() => handleGenerateLink(server)} onContextMenu={(e) => { e.preventDefault(); quickCopyLink(server); }}> <button className="btn btn-outline-primary btn-icon btn-sm" title="Ссылка" onClick={() => handleGenerateLink(server)} onContextMenu={(e) => { e.preventDefault(); quickCopyLink(server); }}>
<IconLink size={18} /> <IconLink size={16} />
</button> </button>
<button className="btn btn-icon btn-sm btn-outline-secondary rounded" title="Редактировать" onClick={() => handleEdit(server)}> <button className="btn btn-outline-secondary btn-icon btn-sm" title="Редактировать" onClick={() => handleEdit(server)}>
<IconEdit size={18} /> <IconEdit size={16} />
</button> </button>
<button className="btn btn-icon btn-sm btn-outline-danger rounded" title="Удалить" onClick={() => confirmDelete(server)}> <button className="btn btn-outline-danger btn-icon btn-sm" title="Удалить" onClick={() => confirmDelete(server)}>
<IconTrash size={18} /> <IconTrash size={16} />
</button> </button>
</div> </div>
</td> </td>