feat: add rem unit option to margins in PageSettings and TextSettings

Adds 'rem' as an available unit for margin inputs in both components. Updates useCssSync composable to parse rem values from CSS.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
isUnknown 2025-12-05 16:38:29 +01:00
parent d3cd296fd7
commit b584a539fe
3 changed files with 31 additions and 1 deletions

View file

@ -66,6 +66,13 @@
> >
px px
</button> </button>
<button
type="button"
:class="{ active: margins.top.unit === 'rem' }"
@click="margins.top.unit = 'rem'"
>
rem
</button>
</div> </div>
</div> </div>
</div> </div>
@ -94,6 +101,13 @@
> >
px px
</button> </button>
<button
type="button"
:class="{ active: margins.bottom.unit === 'rem' }"
@click="margins.bottom.unit = 'rem'"
>
rem
</button>
</div> </div>
</div> </div>
</div> </div>
@ -122,6 +136,13 @@
> >
px px
</button> </button>
<button
type="button"
:class="{ active: margins.left.unit === 'rem' }"
@click="margins.left.unit = 'rem'"
>
rem
</button>
</div> </div>
</div> </div>
</div> </div>
@ -150,6 +171,13 @@
> >
px px
</button> </button>
<button
type="button"
:class="{ active: margins.right.unit === 'rem' }"
@click="margins.right.unit = 'rem'"
>
rem
</button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -92,6 +92,7 @@
label="Marges extérieures" label="Marges extérieures"
v-model:simple="marginOuter" v-model:simple="marginOuter"
v-model:detailed="marginOuterDetailed" v-model:detailed="marginOuterDetailed"
:units="['mm', 'px', 'rem']"
@change="handleMarginOuterChange" @change="handleMarginOuterChange"
/> />
</div> </div>
@ -104,6 +105,7 @@
label="Marges intérieures" label="Marges intérieures"
v-model:simple="marginInner" v-model:simple="marginInner"
v-model:detailed="marginInnerDetailed" v-model:detailed="marginInnerDetailed"
:units="['mm', 'px', 'rem']"
@change="handleMarginInnerChange" @change="handleMarginInnerChange"
/> />
</div> </div>

View file

@ -38,7 +38,7 @@ export function useCssSync() {
* Extract margin/padding shorthand (handles 1 or 4 values) * Extract margin/padding shorthand (handles 1 or 4 values)
* Returns { simple: { value, unit } } or { detailed: { top, right, bottom, left } } * Returns { simple: { value, unit } } or { detailed: { top, right, bottom, left } }
*/ */
const extractSpacing = (selector, property, allowedUnits = ['mm', 'px']) => { const extractSpacing = (selector, property, allowedUnits = ['mm', 'px', 'rem']) => {
const block = store.extractBlock(selector); const block = store.extractBlock(selector);
if (!block) return null; if (!block) return null;