ui(icons): replace colored emoji with modern single-color line icons (lucide-vue-next)
Add lucide-vue-next (stroke-based, single-color, currentColor) and swap emoji icons across nav + all main views: Settings/LogOut (App), BarChart3/Users/Plus (Analytics), LayoutDashboard (MyBoard), Sparkles/Users/Pencil (GroupEdit), Box/ListChecks/Paperclip/ PlusCircle/ArrowLeft (GroupBuilder), Target/ArrowLeft/Search (Chat/Personas/Training), User/Lock/Globe (Settings), Users/UserPlus/Info (AdminUsers). - Buttons become inline-flex for icon+text alignment. - Icons inherit currentColor (single color, modern line style). - Rebuild dist with lucide.
This commit is contained in:
@@ -2,10 +2,10 @@
|
||||
<div>
|
||||
<router-link to="/training" class="btn-back">← {{ i18n.t('training') }}</router-link>
|
||||
<div class="row" style="align-items:center;margin-bottom:8px">
|
||||
<h2 style="margin:0">🛠 {{ i18n.t('managePersonas') }}</h2>
|
||||
<h2 style="margin:0"><Users :size="22" :stroke-width="1.8" style="vertical-align:-4px" /> {{ i18n.t('managePersonas') }}</h2>
|
||||
<div class="row" style="margin-left:auto;gap:10px">
|
||||
<button @click="analyze" :disabled="busy" class="primary">
|
||||
<span v-if="busy" class="spinner"></span>{{ busy ? 'กำลังสร้าง…' : '✨ สร้าง/วิเคราะห์บุคคลต้นแบบ' }}
|
||||
<span v-if="busy" class="spinner"></span><Sparkles v-else :size="18" :stroke-width="1.8" /> {{ busy ? 'กำลังสร้าง…' : i18n.t('analyze') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -42,7 +42,7 @@
|
||||
</div>
|
||||
<div class="muted">{{ p.profession }} · {{ p.age_group }} · {{ p.location }}</div>
|
||||
<div class="muted">{{ p.channel }} · {{ p.initiation_mode === 'seller' ? 'เริ่มขายเอง' : 'ลูกค้าทักก่อน' }}</div>
|
||||
<button class="edit-btn" @click="openEdit(p)">✏️ แก้ไขรายละเอียด</button>
|
||||
<button class="edit-btn" @click="openEdit(p)"><Pencil :size="15" :stroke-width="1.8" /> {{ i18n.t('edit') }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -59,6 +59,7 @@
|
||||
<script setup>
|
||||
import { onMounted, ref } from 'vue'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { Sparkles, Users, Pencil } from 'lucide-vue-next'
|
||||
import { api } from '../api'
|
||||
import { i18n } from '../i18n'
|
||||
import PersonaForm from '../components/PersonaForm.vue'
|
||||
@@ -104,7 +105,7 @@ onMounted(load)
|
||||
<style scoped>
|
||||
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; }
|
||||
.pcard { display: flex; flex-direction: column; }
|
||||
.edit-btn { margin-top: auto; }
|
||||
.edit-btn { margin-top: auto; display: inline-flex; align-items: center; gap: 6px; }
|
||||
.star { color: #d8dbe3; }
|
||||
.star.on { color: #f59e0b; }
|
||||
.badge.tier-a { background: #dcfce7; color: #166534; }
|
||||
|
||||
Reference in New Issue
Block a user