diff --git a/e2e/tags.spec.ts b/e2e/tags.spec.ts
index c2f65b93..26995641 100644
--- a/e2e/tags.spec.ts
+++ b/e2e/tags.spec.ts
@@ -88,3 +88,35 @@ test('test that multiple tags can be created via API and displayed in the table'
await expect(page.getByTestId('tag_table')).toContainText(tagName1);
await expect(page.getByTestId('tag_table')).toContainText(tagName2);
});
+
+// =============================================
+// Employee Permission Tests
+// =============================================
+
+test.describe('Employee Tags Restrictions', () => {
+ test('employee can view tags but cannot create', async ({ ctx, employee }) => {
+ const tagName = 'EmpViewTag ' + Math.floor(Math.random() * 10000);
+ await createTagViaApi(ctx, { name: tagName });
+
+ await employee.page.goto(PLAYWRIGHT_BASE_URL + '/tags');
+ await expect(employee.page.getByTestId('tags_view')).toBeVisible({ timeout: 10000 });
+
+ // Employee can see the tag (tags are visible to all members with tags:view)
+ await expect(employee.page.getByText(tagName)).toBeVisible({ timeout: 10000 });
+
+ // Employee cannot see Create Tag button
+ await expect(employee.page.getByRole('button', { name: 'Create Tag' })).not.toBeVisible();
+ });
+
+ test('employee cannot see edit/delete actions on tags', async ({ ctx, employee }) => {
+ const tagName = 'EmpActionsTag ' + Math.floor(Math.random() * 10000);
+ await createTagViaApi(ctx, { name: tagName });
+
+ await employee.page.goto(PLAYWRIGHT_BASE_URL + '/tags');
+ await expect(employee.page.getByText(tagName)).toBeVisible({ timeout: 10000 });
+
+ // Actions button should not be visible for employee
+ const actionsButton = employee.page.locator(`[aria-label='Actions for Tag ${tagName}']`);
+ await expect(actionsButton).not.toBeVisible();
+ });
+});
diff --git a/resources/js/Components/Common/Tag/TagEditModal.vue b/resources/js/Components/Common/Tag/TagEditModal.vue
new file mode 100644
index 00000000..bd4d0083
--- /dev/null
+++ b/resources/js/Components/Common/Tag/TagEditModal.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+ Update Tag
+
+
+
+
+
+
+
+ Cancel
+
+ Update Tag
+
+
+
+
+
+
diff --git a/resources/js/Components/Common/Tag/TagMoreOptionsDropdown.vue b/resources/js/Components/Common/Tag/TagMoreOptionsDropdown.vue
index e67ae32a..7e1182bb 100644
--- a/resources/js/Components/Common/Tag/TagMoreOptionsDropdown.vue
+++ b/resources/js/Components/Common/Tag/TagMoreOptionsDropdown.vue
@@ -1,5 +1,6 @@