Replace HTML headings with Setting().setHeading()

- Replace all createEl("h2"/"h3") with Setting().setHeading().setName()
- Remove emojis from UI headings (sentence case)
- Add CSS classes for replaced HTML elements
- Ensures consistent UI styling with Obsidian framework

Addresses Obsidian plugin review requirements.
This commit is contained in:
Alexander Likhachev 2025-11-12 09:32:28 +02:00
parent 1eedc10d7f
commit cb345e3d9f
2 changed files with 23 additions and 14 deletions

22
main.ts
View file

@ -364,7 +364,7 @@ class WorkoutModal extends Modal {
contentEl.empty();
contentEl.addClass("workout-modal");
contentEl.createEl("h2", { text: "🏋️ New workout" });
new Setting(contentEl).setHeading().setName("New workout");
contentEl.createEl("p", { text: "Select a workout program" });
// Get all templates
@ -376,7 +376,7 @@ class WorkoutModal extends Modal {
templates.forEach((template) => {
const templateCard = templatesContainer.createDiv("template-card");
templateCard.createEl("h3", { text: template.name });
templateCard.createEl("div", { text: template.name, cls: "template-card-title" });
if (template.description) {
templateCard.createEl("p", {
@ -509,7 +509,7 @@ class ExerciseTrackingModal extends Modal {
// Header
const header = contentEl.createDiv("workout-header");
header.createEl("h2", { text: this.session.program });
header.createEl("div", { text: this.session.program, cls: "workout-session-title" });
// Summary stats
const stats = contentEl.createDiv("workout-stats");
@ -754,7 +754,7 @@ class QuickExerciseModal extends Modal {
onOpen() {
const { contentEl } = this;
contentEl.createEl("h2", { text: "⚡ Quick Add" });
new Setting(contentEl).setHeading().setName("Quick add");
// Implementation for quick exercise addition
contentEl.createEl("p", {
text: "Quickly add an exercise to today's workout",
@ -844,11 +844,11 @@ class TemplateEditorModal extends Modal {
contentEl.empty();
contentEl.addClass("template-editor-modal");
contentEl.createEl("h2", { text: "✏️ Edit template" });
new Setting(contentEl).setHeading().setName("Edit template");
// Basic info section
const basicSection = contentEl.createDiv("editor-section");
basicSection.createEl("h3", { text: "Basic information" });
new Setting(basicSection).setHeading().setName("Basic information");
new Setting(basicSection).setName("Name").addText((text) =>
text.setValue(this.editableTemplate.name).onChange((value) => {
this.editableTemplate.name = value;
@ -891,7 +891,7 @@ class TemplateEditorModal extends Modal {
// Exercises section
const exercisesSection = contentEl.createDiv("editor-section");
exercisesSection.createEl("h3", { text: "Exercises" });
new Setting(exercisesSection).setHeading().setName("Exercises");
const exercisesList = exercisesSection.createDiv("exercises-list");
this.renderExercises(exercisesList);
@ -913,7 +913,7 @@ class TemplateEditorModal extends Modal {
// Warmup/Cooldown section
const cardioSection = contentEl.createDiv("editor-section");
cardioSection.createEl("h3", { text: "Warmup and cooldown" });
new Setting(cardioSection).setHeading().setName("Warmup and cooldown");
const warmupEnabled = this.editableTemplate.warmup !== undefined;
new Setting(cardioSection).setName("Warmup").addToggle((toggle) =>
@ -1271,7 +1271,7 @@ class TemplateManagementModal extends Modal {
contentEl.empty();
contentEl.addClass("template-management-modal");
contentEl.createEl("h2", { text: "📋 Template management" });
new Setting(contentEl).setHeading().setName("Template management");
const templates = this.plugin.templateManager.getAllTemplates();
@ -1280,7 +1280,7 @@ class TemplateManagementModal extends Modal {
const templateItem = contentEl.createDiv("template-management-item");
const header = templateItem.createDiv("template-header");
header.createEl("h3", { text: template.name });
header.createEl("div", { text: template.name, cls: "template-management-title" });
const info = templateItem.createDiv("template-info");
info.createEl("span", {
@ -1381,7 +1381,7 @@ class WorkoutAISettingTab extends PluginSettingTab {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl("h2", { text: "Workout AI tracker settings" });
new Setting(containerEl).setHeading().setName("Workout AI tracker settings");
new Setting(containerEl)
.setName("Claude API key")

View file

@ -80,7 +80,8 @@
border-left: 3px solid var(--interactive-accent);
}
.template-card h3 {
.template-card h3,
.template-card .template-card-title {
margin: 0 0 6px 0;
color: var(--text-normal);
font-size: 15px;
@ -252,7 +253,8 @@
margin-bottom: 16px;
}
.workout-header h2 {
.workout-header h2,
.workout-session-title {
margin: 0;
font-size: 20px;
font-weight: 600;
@ -569,7 +571,8 @@
border-left: 4px solid var(--interactive-accent);
}
.template-header h3 {
.template-header h3,
.template-management-title {
margin: 0 0 8px 0;
color: var(--text-accent);
font-size: 16px;
@ -724,3 +727,9 @@
grid-template-columns: 1fr;
}
}
/* Default template label */
.default-template-label {
color: var(--text-muted);
font-size: 12px;
}