diff --git a/integ_tests/common.py b/integ_tests/common.py
index 53b8ae38..8a7b503b 100644
--- a/integ_tests/common.py
+++ b/integ_tests/common.py
@@ -59,6 +59,7 @@ collection_by_map = true
collection_by_token = true
permit_create_token = true
permit_create_map = true
+permit_properties_overlay = true
"""
)
diff --git a/integ_tests/test_sharing.py b/integ_tests/test_sharing.py
index fa87a491..ec3b6398 100644
--- a/integ_tests/test_sharing.py
+++ b/integ_tests/test_sharing.py
@@ -112,3 +112,61 @@ def test_create_and_delete_share_by_map(page: Page, radicale_server: str) -> Non
expect(
page.locator("tr[data-name='sharemaprowtemplate']:not(.hidden)")
).to_have_count(0)
+
+
+def test_share_with_property_overrides(page: Page, radicale_server: str) -> None:
+ login(page, radicale_server)
+ # Create a collection with specific details
+ page.click('a[data-name="new"]')
+ page.locator('#createcollectionscene input[data-name="displayname"]').fill("Test Collection")
+ page.locator('#createcollectionscene input[data-name="description"]').fill("Original Description")
+ page.locator('#createcollectionscene input[data-name="color"]').fill("#ff0000")
+ page.click('#createcollectionscene button[data-name="submit"]')
+
+ page.hover("article:not(.hidden)")
+ page.click('article:not(.hidden) a[data-name="share"]', force=True, strict=True)
+ page.click('button[data-name="sharebytoken"]')
+
+ # Verify defaults
+ expect(page.locator('input[data-name="description_override"]')).to_have_value("Original Description")
+ expect(page.locator('input[data-name="color_override"]')).to_have_value("#ff0000")
+ expect(page.locator('input[data-name="description_override"]')).to_be_disabled()
+ expect(page.locator('input[data-name="color_override"]')).to_be_disabled()
+
+ # Set overrides
+ page.click('label[for="newshare_attr_description_enabled"]')
+ page.locator('input[data-name="description_override"]').fill("Overridden Description")
+ page.click('label[for="newshare_attr_color_enabled"]')
+ page.locator('input[data-name="color_override"]').fill("#00ff00")
+
+ page.click('#newshare button[data-name="submit"]')
+
+ # Verify the share was created
+ expect(
+ page.locator("tr[data-name='sharetokenrowtemplate']:not(.hidden)")
+ ).to_have_count(1)
+
+
+def test_share_journal_no_overrides(page: Page, radicale_server: str) -> None:
+ login(page, radicale_server)
+ # Create a collection of type JOURNAL
+ page.click('a[data-name="new"]')
+ page.locator('#createcollectionscene select[data-name="type"]').select_option("JOURNAL")
+ page.locator('#createcollectionscene input[data-name="displayname"]').fill("Test Journal")
+ page.locator('#createcollectionscene input[data-name="description"]').fill("Journal Description")
+ page.click('#createcollectionscene button[data-name="submit"]')
+
+ page.hover("article:not(.hidden)")
+ page.click('article:not(.hidden) a[data-name="share"]', force=True, strict=True)
+ page.click('button[data-name="sharebytoken"]')
+
+ # Verify property override fieldset is hidden
+ expect(page.locator('fieldset[data-name="properties_override"]')).to_be_hidden()
+
+ # Create the share
+ page.click('#newshare button[data-name="submit"]')
+
+ # Verify the share was created
+ expect(
+ page.locator("tr[data-name='sharetokenrowtemplate']:not(.hidden)")
+ ).to_have_count(1)
diff --git a/radicale/web/internal_data/index.html b/radicale/web/internal_data/index.html
index 3afc37de..119fe783 100644
--- a/radicale/web/internal_data/index.html
+++ b/radicale/web/internal_data/index.html
@@ -227,9 +227,18 @@
-