API Docs

HSUIWindow

A custom window with declarative UI building

HSUIWindow allows you to create custom borderless windows with a SwiftUI-like declarative syntax. Build interfaces using shapes, text, images, and layout containers.

Building UI Elements

  • Shapes: rectangle(), circle()
  • Text: text(content)
  • Buttons: button(label) — uses SwiftUI's native Button for press-state feedback
  • Images: image(imageValue)
  • Layout: vstack(), hstack(), zstack(), spacer()

Modifying Elements

  • Shape modifiers: fill(), stroke(), strokeWidth(), cornerRadius()
  • Text modifiers: font(), foregroundColor()
  • Image modifiers: resizable(), aspectRatio(mode)
  • Layout modifiers: frame(), opacity(), padding(), spacing()

Examples

Simple window with text and shapes:

hs.ui.window({x: 100, y: 100, w: 300, h: 200})
    .vstack()
        .spacing(10)
        .padding(20)
        .text("Dashboard")
            .font(HSFont.largeTitle())
            .foregroundColor("#FFFFFF")
        .rectangle()
            .fill("#4A90E2")
            .cornerRadius(10)
            .frame({w: "90%", h: 80})
    .end()
    .backgroundColor("#2C3E50")
    .show();

Window with image:

const img = HSImage.fromPath("~/Pictures/photo.jpg")
hs.ui.window({x: 100, y: 100, w: 400, h: 300})
    .vstack()
        .padding(20)
        .image(img)
            .resizable()
            .aspectRatio("fit")
            .frame({w: 360, h: 240})
    .end()
    .show();

Properties

This type has no properties.

Methods

show() -> HSUIWindow

Show the window
show() -> HSUIWindow
HSUIWindow
Self for chaining

hide() -> None

Hide the window (keeps it in memory)
hide() -> None
None

close() -> None

Close and destroy the window
close() -> None
None

backgroundColor(colorValue) -> HSUIWindow

Set the window's background color
backgroundColor(colorValue) -> HSUIWindow
Name Type Description
colorValue JSValue Color as hex string (e.g., "#FF0000") or HSColor object
HSUIWindow
Self for chaining

rectangle() -> HSUIWindow

Add a rectangle shape
rectangle() -> HSUIWindow
HSUIWindow
Self for chaining (apply modifiers like `fill()`, `frame()`)

circle() -> HSUIWindow

Add a circle shape
circle() -> HSUIWindow
HSUIWindow
Self for chaining (apply modifiers like `fill()`, `frame()`)

text(content) -> HSUIWindow

Add a text element or an `HSString` object (from `hs.ui.string()`) for reactive text
text(content) -> HSUIWindow
Name Type Description
content JSValue The text to display — a plain JS string for static text,
HSUIWindow
Self for chaining (apply modifiers like `font()`, `foregroundColor()`)

image(imageValue) -> HSUIWindow

Add an image element
image(imageValue) -> HSUIWindow
Name Type Description
imageValue JSValue Image as HSImage object or file path string
HSUIWindow
Self for chaining (apply modifiers like `resizable()`, `aspectRatio()`, `frame()`)

button(label) -> HSUIWindow

Add a button element or an `HSString` object (from `hs.ui.string()`) for reactive text
button(label) -> HSUIWindow
Name Type Description
label JSValue The button label — a plain JS string for static text,
HSUIWindow
Self for chaining (apply `.fill()`, `.cornerRadius()`, `.font()`,

vstack() -> HSUIWindow

Begin a vertical stack (elements arranged top to bottom)
vstack() -> HSUIWindow
HSUIWindow
Self for chaining (call `end()` when done)

hstack() -> HSUIWindow

Begin a horizontal stack (elements arranged left to right)
hstack() -> HSUIWindow
HSUIWindow
Self for chaining (call `end()` when done)

zstack() -> HSUIWindow

Begin a z-stack (overlapping elements)
zstack() -> HSUIWindow
HSUIWindow
Self for chaining (call `end()` when done)

spacer() -> HSUIWindow

Add flexible spacing that expands to fill available space
spacer() -> HSUIWindow
HSUIWindow
Self for chaining

end() -> HSUIWindow

End the current layout container
end() -> HSUIWindow
HSUIWindow
Self for chaining

fill(colorValue) -> HSUIWindow

Fill a shape with a color
fill(colorValue) -> HSUIWindow
Name Type Description
colorValue JSValue Color as hex string or HSColor
HSUIWindow
Self for chaining

stroke(colorValue) -> HSUIWindow

Add a stroke (border) to a shape
stroke(colorValue) -> HSUIWindow
Name Type Description
colorValue JSValue Color as hex string or HSColor
HSUIWindow
Self for chaining

strokeWidth(width) -> HSUIWindow

Set the stroke width
strokeWidth(width) -> HSUIWindow
Name Type Description
width number Width in points
HSUIWindow
Self for chaining

cornerRadius(radius) -> HSUIWindow

Round the corners of a shape
cornerRadius(radius) -> HSUIWindow
Name Type Description
radius number Corner radius in points
HSUIWindow
Self for chaining

frame(dict) -> HSUIWindow

Set the frame (size) of an element
frame(dict) -> HSUIWindow
Name Type Description
dict {[key: string]: any} Dictionary with `w` and/or `h` (can be numbers or percentage strings like "50%")
HSUIWindow
Self for chaining

opacity(value) -> HSUIWindow

Set the opacity of an element
opacity(value) -> HSUIWindow
Name Type Description
value number Opacity from 0.0 (transparent) to 1.0 (opaque)
HSUIWindow
Self for chaining

font(font) -> HSUIWindow

Set the font for a text element
font(font) -> HSUIWindow
Name Type Description
font HSFont An HSFont object (e.g., `HSFont.title()`)
HSUIWindow
Self for chaining

foregroundColor(colorValue) -> HSUIWindow

Set the text color
foregroundColor(colorValue) -> HSUIWindow
Name Type Description
colorValue JSValue Color as hex string or HSColor
HSUIWindow
Self for chaining

resizable() -> HSUIWindow

Make an image resizable (allows it to scale with frame size)
resizable() -> HSUIWindow
HSUIWindow
Self for chaining

aspectRatio(mode) -> HSUIWindow

Set the aspect ratio mode for an image
aspectRatio(mode) -> HSUIWindow
Name Type Description
mode string "fit" (scales to fit within frame) or "fill" (scales to fill frame)
HSUIWindow
Self for chaining

padding(value) -> HSUIWindow

Add padding around a layout container
padding(value) -> HSUIWindow
Name Type Description
value number Padding in points
HSUIWindow
Self for chaining

spacing(value) -> HSUIWindow

Set spacing between elements in a stack
spacing(value) -> HSUIWindow
Name Type Description
value number Spacing in points
HSUIWindow
Self for chaining

onClick(callback) -> HSUIWindow

Set a callback to fire when the element is clicked
onClick(callback) -> HSUIWindow
Name Type Description
callback JSValue A JavaScript function to call on click
HSUIWindow
Self for chaining

onHover(callback) -> HSUIWindow

Set a callback to fire when the cursor enters or leaves the element
onHover(callback) -> HSUIWindow
Name Type Description
callback JSValue A JavaScript function called with a boolean: true when entering, false when leaving
HSUIWindow
Self for chaining