diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 1c821a0..218b395 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -62,10 +62,19 @@
@@ -111,9 +120,10 @@
diff --git a/frontend/src/components/UserCard.js b/frontend/src/components/UserCard.js
deleted file mode 100644
index baf6c99..0000000
--- a/frontend/src/components/UserCard.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import { defineComponent, h } from 'vue';
-import htm from 'htm';
-const html = htm.bind(h);
-
-export default defineComponent({
- name: 'UserCard',
- props: { item: { type: Object, required: true }, mode: { type: String, default: 'user' } },
- emits: ['toggleDisable', 'remove', 'edit'],
- setup(props, { emit }) {
- function toggle() { emit('toggleDisable', props.item); }
- function remove() { emit('remove', props.item); }
- function edit() { emit('edit', props.item); }
- return () => html`
-
- ${props.mode === 'user' ? props.item.username : (props.item.device || props.item.username)}
- VLAN ${props.item.vlan}
- ${props.item.disabled ? html`deshabilitado` : html`activo`}
-
-
-
-
-
-
${props.item.devices ? props.item.devices.length : 0} dispositivos
-
`;
- }
-});
diff --git a/frontend/src/components/UserCard.vue b/frontend/src/components/UserCard.vue
new file mode 100644
index 0000000..4e6ee84
--- /dev/null
+++ b/frontend/src/components/UserCard.vue
@@ -0,0 +1,40 @@
+
+
+
+ {{ item.username }}
+ VLAN {{ item.vlan }}
+ {{ item.disabled ? 'deshabilitado' : 'activo' }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/node-api/src/routes/api.js b/node-api/src/routes/api.js
index 6d9c95d..5e958ed 100644
--- a/node-api/src/routes/api.js
+++ b/node-api/src/routes/api.js
@@ -151,4 +151,15 @@ router.post('/vlans', async (req, res) => {
}
});
+// Devices list (read-only)
+router.get('/devices', async (_req, res) => {
+ try {
+ const result = await pool.query('SELECT id, mac, nombre, vendor, descripcion, first_seen, last_seen FROM dispositivos ORDER BY last_seen DESC NULLS LAST, first_seen DESC');
+ res.json({ items: result.rows });
+ } catch (e) {
+ console.error('GET /api/devices error:', e?.message || e);
+ res.status(500).json({ ok: false, error: 'db_error', items: [] });
+ }
+});
+
export default router;