🆕 Add new UI scripts and update gitignore to ignore cache directory

This commit is contained in:
2026-04-27 00:40:45 +08:00
parent b91f50f26c
commit 42fb760b70
4 changed files with 93 additions and 0 deletions

1
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.perry-cache/
# ---> macOS # ---> macOS
# General # General
.DS_Store .DS_Store

13
simple-ui/main-2.ts Normal file
View File

@@ -0,0 +1,13 @@
import { App, VStack, Text, Button, State } from "perry/ui"
const count = State(0)
App({
title: "Counter",
width: 400,
height: 300,
body: VStack(16, [
Text(`Count: ${count.value}`),
Button("Increment", () => count.set(count.value + 1)),
]),
})

View File

@@ -0,0 +1,26 @@
import {
App, VStack, Text, Button, State,
textSetFontSize, textSetColor,
setCornerRadius, setPadding,
widgetSetBackgroundColor,
} from "perry/ui"
const count = State(0)
const label = Text(`Count: ${count.value}`)
textSetFontSize(label, 24)
textSetColor(label, 0.2, 0.2, 0.2, 1.0) // RGBA in [0,1] — same as #333333
const btn = Button("Increment", () => count.set(count.value + 1))
setCornerRadius(btn, 8)
widgetSetBackgroundColor(btn, 0.0, 0.478, 1.0, 1.0) // system blue
const stack = VStack(20, [label, btn])
setPadding(stack, 20, 20, 20, 20)
App({
title: "Styled Counter",
width: 400,
height: 300,
body: stack,
})

53
simple-ui/todo.ts Normal file
View File

@@ -0,0 +1,53 @@
import {
App,
Text,
Button,
TextField,
VStack,
HStack,
State,
ForEach,
Spacer,
Divider,
} from "perry/ui"
const todos = State<string[]>([])
const count = State(0)
const input = State("")
App({
title: "Todo App",
width: 480,
height: 600,
body: VStack(16, [
Text("My Todos"),
HStack(8, [
TextField("What needs to be done?", (value: string) => input.set(value)),
Button("Add", () => {
const text = input.value
if (text.length > 0) {
todos.set([...todos.value, text])
count.set(count.value + 1)
input.set("")
}
}),
]),
Divider(),
ForEach(count, (i: number) =>
HStack(8, [
Text(todos.value[i]),
Spacer(),
Button("Delete", () => {
todos.set(todos.value.filter((_, idx) => idx !== i))
count.set(count.value - 1)
}),
]),
),
Spacer(),
Text(`${count.value} items`),
]),
})