Get 50% off in our half price sale

No need for a code as discount is already applied

Shop Now

You are from our

Book a free design consultation and we will show you how we can make the most of your space.

Book Appointment

Welcome to the Home Decor Configurator




Configure your wardrobe

Section
Range: {{staticData.doorRangesById[inputData.doorOptions.doorRangeId].displayName}}
Doors & Frames: {{inputData.doorOptions.numberOfDoors}}
Door Panels:
#{{$index + 1}}: {{staticData.materialDisplayNamesById[staticData.doorPanelsById[panelSelection.doorPanelIdsByDoorSide['Front']].details.materialId]}}










  •  
  • {{(!$first && !$last) ? ', ' : ''}}{{($last && !$first) ? (translate('and') + ' ') : ''}} {{doorIndex + 1}}
     


  •  
  • Please specify a valid number of additonal track sets.
  • The number of soft closes is invalid.


  •  



  •  

:
{{price.combinedDoorsUndiscountedPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

:
{{price.interiorUndiscountedPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

:
{{-price.totalDiscountCalculation.discountAmountIncVat | currency: staticData.displayCurrency.htmlSymbol}}

:
{{price.combinedDoorsUndiscountedPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}} ()

:
{{price.interiorUndiscountedPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}} ()

:
{{-price.totalDiscountCalculation.discountAmountExcVat | currency: staticData.displayCurrency.htmlSymbol}} ()

mm
mm
mm
mm

None

-

{{heightReducer.height}}mm

{{(price.indicativeHeightReducerPricesByHeightIncVat[heightReducer.height] || 0) | currency: staticData.displayCurrency.htmlSymbol}}

{{(price.indicativeHeightReducerPricesByHeightExcVat[heightReducer.height] || 0) | currency: staticData.displayCurrency.htmlSymbol}} ()

{{doorRange.displayName}}
: {{doorRange.fromPriceCalculation.totalPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}
: {{doorRange.fromPriceCalculation.totalPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}}
: {{doorRange.fromPriceCalculation.totalPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}
: {{doorRange.fromPriceCalculation.totalPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}}
{{doorQuantity}}

{{doorWidthCalculationMode.displayName}}

Door {{$index + 1}}

mm

{{doorOverlappingMode.displayName}}

{{doorRange = staticData.doorRangesById[inputData.doorOptions.doorRangeId]; ''}} {{doorPanelConfigurationIds = inputData.validationSettings.validateDoorPanelConfigurations ? doorRange.allowedDoorPanelConfigurationIds : staticData.doorPanelConfigurationIds; ''}}
{{doorPanelConfiguration = staticData.doorPanelConfigurationsById[doorPanelConfigurationId];''}}

{{doorRange = staticData.doorRangesById[inputData.doorOptions.doorRangeId]; ''}}

{{doorHandleOrientation.mode}}

    {{doorRange = staticData.doorRangesById[inputData.doorOptions.doorRangeId]; ''}} {{materialIds = inputData.validationSettings.validateFrameMaterial ? doorRange.allowedFrameMaterialIds : staticData.metalMaterialIds; ''}}
  • {{material = staticData.materialsById[materialId]; ''}} {{staticData.materialDisplayNamesById[materialId]}}
{{doorRange = staticData.doorRangesById[inputData.doorOptions.doorRangeId]; ''}}

{{stileType.displayName}}

{{doorRange = staticData.doorRangesById[inputData.doorOptions.doorRangeId]; ''}} {{doorPanelIdsByMaterialType = inputData.validationSettings.validateDoorPanelPlacements ? calculatedData.allowedDoorPanelIdsByMaterialType : staticData.doorPanelIdsByMaterialType;''}}

  • {{doorPanel = staticData.doorPanelsById[doorPanelId];''}}
    {{staticData.materialDisplayNamesById[doorPanel.details.materialId]}}

{{linerSelectionMode.displayName}}

x {{inputData.doorLinerOptions.horizontalQuantityMultiplier}}
x {{inputData.doorLinerOptions.verticalQuantityMultiplier}}
  • {{material = staticData.materialsById[materialId]; ''}}

{{endPanelMaterialSelectionMode.displayName}}

  • {{material = staticData.materialsById[materialId]; ''}}
mm

{{trackSetTypeSelectionMode.displayName}}

{{doorRange = staticData.doorRangesById[inputData.doorOptions.doorRangeId]; ''}}

{{trackSetMountingType.displayName}}

mm
{{doorRange = staticData.doorRangesById[inputData.doorOptions.doorRangeId]; ''}}

{{price.doorsPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

{{price.doorsPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}} ()

:
{{inputData.doorOptions.numberOfDoors}} x {{staticData.doorRangesById[inputData.doorOptions.doorRangeId].displayName}}
:
{{staticData.materialDisplayNamesById[inputData.doorOptions.doorFrameMaterialId]}}
:
#{{$index + 1}}: {{staticData.materialDisplayNamesById[staticData.doorPanelsById[panelSelection.doorPanelIdsByDoorSide['Front']].details.materialId]}}
#{{$index + 1}} : {{staticData.materialDisplayNamesById[staticData.doorPanelsById[panelSelection.doorPanelIdsByDoorSide['Front']].details.materialId]}}
#{{$index + 1}} : {{staticData.materialDisplayNamesById[staticData.doorPanelsById[panelSelection.doorPanelIdsByDoorSide['Back']].details.materialId]}}
:
{{totalSingleTrackSets = (inputData.trackSetOptions.trackSetType == 'Single' ? 1 : 0) + inputData.trackSetOptions.numberOfAdditionalSingleTrackSets;''}} {{totalDoubleTrackSets = (inputData.trackSetOptions.trackSetType == 'Double' ? 1 : 0) + inputData.trackSetOptions.numberOfAdditionalDoubleTrackSets;''}} {{totalTripleTrackSets = (inputData.trackSetOptions.trackSetType == 'Triple' ? 1 : 0) + inputData.trackSetOptions.numberOfAdditionalTripleTrackSets;''}} {{totalSingleTrackSets}} x
{{totalDoubleTrackSets}} x
{{totalTripleTrackSets}} x
:
{{inputData.trackSetOptions.trackSetWidthOverride}} mm
:
{{inputData.doorOptions.desiredDoorOverlappingMode}}
{{doorRange = staticData.doorRangesById[inputData.doorOptions.doorRangeId]; ''}}
:
{{inputData.doorOptions.doorHandleOrientation}}

{{price.linersPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

{{price.linersPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}} ()

{{linerQuantities = inputData.doorLinerOptions.quantitiesByPlacementLocation; ''}} {{totalLiners = linerQuantities['Top'] + linerQuantities['Bottom'] + linerQuantities['Left'] + linerQuantities['Right']; ''}}
:
{{quantity = inputData.doorLinerOptions.quantitiesByPlacementLocation[doorLinerPlacementLocation.placementLocation];''}} {{multiplier = doorLinerPlacementLocation.orientation == 'Horizontal' ? inputData.doorLinerOptions.horizontalQuantityMultiplier : inputData.doorLinerOptions.verticalQuantityMultiplier;''}} {{doorLinerPlacementLocation.displayName}} x {{quantity * multiplier}}.
:
{{staticData.doorLinerThickness}}mm
:
{{staticData.materialDisplayNamesById[inputData.doorLinerOptions.materialId]}}

{{price.endPanelsPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

{{price.endPanelsPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}} ()

:
:
{{staticData.endPanelThickness}}mm
:
{{staticData.materialDisplayNamesById[inputData.endPanelOptions.materialId]}}

{{price.interiorPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

{{price.interiorPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}} ()

:
{{staticData.interiorsByProductId[ip.interiorProductId].name}}
:
{{staticData.materialDisplayNamesById[ip.interiorMaterialId]}}
{{doorRange = staticData.doorRangesById[inputData.doorOptions.doorRangeId]; ''}}

{{price.softClosesPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

{{price.softClosesPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}}

{{price.lightingPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

{{price.lightingPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}}

{{price.indicativeInstallationPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

{{price.indicativeInstallationPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}} ()

:
{{price.combinedDoorsPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

:
{{price.interiorPriceIncVat | currency: staticData.displayCurrency.htmlSymbol}}

:
{{price.discountCalculation.discountAmountIncVat | currency: staticData.displayCurrency.htmlSymbol}}

:
{{price.vatAmount | currency: staticData.displayCurrency.htmlSymbol}}

:
{{price.combinedDoorsPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}} ()

:
{{price.interiorPriceExcVat | currency: staticData.displayCurrency.htmlSymbol}} ()

:
{{price.discountCalculation.discountAmountExcVat | currency: staticData.displayCurrency.htmlSymbol}}

Debug Output

Input Data

{{buildInputDataDebugOutput()}}

Static Data

{{buildStaticDataDebugOutput()}}

Watches

Door Width: {{calculatedData.physicalMetrics.requiredDoorWidth}}mm
Aperture Size: {{calculatedData.physicalMetrics.apertureSize.width}}mm x {{calculatedData.physicalMetrics.apertureSize.height}}mm

{{error}}