Skip to main content
The window module is available at /Ventana. It is powered by the ventanas.app Livewire component, which presents a selection grid of available window systems and then loads the appropriate sub-component once a system is chosen.

Selecting a system

When you navigate to /Ventana, you are shown a grid of five window systems. Click any card to load that system’s configuration interface.

Sistema Nova

High-end aluminum system with reinforced profiles. Fully implemented — supports sliding and fixed panel combinations with real-time 2D plan generation.

Persiana

Roller blind system for privacy control. Coming soon.

Doble Corrediza

Double sliding leaf system where both panels move. Coming soon.

Batiente

Traditional 90° swing-open system. Coming soon.

Proyectante

Top-vent system for controlled upper ventilation. Coming soon.
Only Sistema Nova is fully implemented. Selecting any other system displays a “Coming soon” screen. The selected system is stored in the session under the sistemaSeleccionado key so your choice persists across page reloads.
To go back to the system selection grid, click the Cambiar button that appears in the header after a system has been chosen. This calls resetear(), which clears sistemaSeleccionado from both the component state and the session.

Multi-window management

Sistema Nova supports working on multiple window configurations at once. Each configuration is called a ventana and is represented as a tab in the top navigation bar of the component.
1

Add a window

Click the Nuevo button (plus icon) to append a new window tab. The new window inherits the current dimensions as its starting state and is automatically named V - 2, V - 3, and so on. A success toast notification confirms the addition.
2

Switch between windows

Click any tab to switch to that window. The current window’s state is snapshotted before switching so no data is lost. Each tab displays the window name and a close button (×) that appears on hover.
3

Delete a window

Click the × button on a tab to remove that window. The minimum number of windows is one — the last remaining window cannot be deleted.
4

Clear all windows

Click the Vaciar button (trash icon) to reset the entire session. This calls confirmarImpresion(), which clears the datos_lote and ventanas session keys and resets the component to a single default window.

Session persistence

Every time any input field changes, the updated() lifecycle hook fires and writes the full $ventanas array to the session under the key ventanas. On component mount, the session is read back so configurations survive browser refreshes within the same session.
// Triggered on every Livewire property update
public function updated($propertyName)
{
    $this->guardarVentanaActual();
    session()->put('ventanas', $this->ventanas);
}

Dimension input fields

The Sistema Nova configuration form contains five inputs. All values are in centimeters.
FieldLivewire propertyDefaultDescription
Ancho$ancho205Total outer width of the window frame
Alto$alto165Total outer height of the window frame
Puente$altoPuente130Height of the lower panel section (bridge height), measured from the sill
Corredizas$numCorredizas1Number of sliding panels (1–3)
Fijos$numFijos2Number of fixed panels (1–3)
All inputs use wire:model.blur, meaning Livewire updates only when the field loses focus rather than on every keystroke. This prevents unnecessary re-renders while the user is typing.

Panel layout calculation

The total number of panel divisions is numCorredizas + numFijos. The system determines the panel order automatically:
  • 1C + 2F (3 divisions): Fixed, Sliding, Fixed — with a +1 cm width adjustment
  • 2C + 3F (5 divisions): Fixed, Sliding, Fixed, Sliding, Fixed — with a +2 cm width adjustment
  • 3C + 3F (6 divisions): Fixed, Sliding, Fixed, Sliding, Fixed, Sliding — with a +3 cm width adjustment
  • Other combinations: Fixed panels split left/right around the sliding panels

Adjusted width

The fabrication summary displays an Ancho Ajustado (adjusted width) value alongside the raw input width. This adjusted figure accounts for the aluminum profile overlaps that occur in multi-panel configurations and is the measurement used when cutting horizontal profiles.

Build docs developers (and LLMs) love