wozie 3.2.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/DOCS.md +266 -48
  2. package/bin/woozie.js +120 -27
  3. package/docs/components/containers.md +123 -0
  4. package/docs/components/data-feedback.md +166 -0
  5. package/docs/components/interactive.md +113 -0
  6. package/docs/deployment/deploy.md +93 -0
  7. package/docs/pages/routing.md +131 -0
  8. package/docs/plugins/comet-ui.md +142 -0
  9. package/docs/plugins/local-plugins.md +95 -0
  10. package/docs/scripting/custom-js.md +115 -0
  11. package/docs/styling/themes.md +126 -0
  12. package/editor/woozie-syntax/.vscodeignore +5 -0
  13. package/editor/woozie-syntax/CHANGELOG.md +38 -0
  14. package/editor/woozie-syntax/README.md +128 -0
  15. package/editor/woozie-syntax/extension.js +1326 -0
  16. package/editor/woozie-syntax/icons/comet.svg +10 -12
  17. package/editor/woozie-syntax/icons/woozie-build.svg +11 -14
  18. package/editor/woozie-syntax/icons/woozie-folder.svg +8 -8
  19. package/editor/woozie-syntax/icons/woozie-pages.svg +12 -16
  20. package/editor/woozie-syntax/icons/woozie-plugin.svg +7 -13
  21. package/editor/woozie-syntax/icons/woozie-rules.svg +8 -18
  22. package/editor/woozie-syntax/icons/woozie-style.svg +12 -14
  23. package/editor/woozie-syntax/icons/woozie.svg +13 -14
  24. package/editor/woozie-syntax/language-configuration.json +18 -4
  25. package/editor/woozie-syntax/package.json +63 -12
  26. package/editor/woozie-syntax/snippets/woozie.json +325 -0
  27. package/editor/woozie-syntax/syntaxes/woozie.tmLanguage.json +25 -11
  28. package/editor/woozie-syntax/woozie-language-4.0.0.vsix +0 -0
  29. package/package.json +2 -2
  30. package/src/core/compiler.js +95 -30
  31. package/src/core/generator.js +590 -87
  32. package/src/core/parser.js +8 -2
  33. package/src/runtime/client.js +458 -7
  34. package/src/styles/base.css +69 -5
  35. package/src/styles/commonui.css +2220 -0
  36. package/src/styles/interactive.css +63 -4
  37. package/src/styles/layout.css +4 -4
package/DOCS.md CHANGED
@@ -1,15 +1,15 @@
1
- # Woozie — The Easiest Web Framework Ever 🚀
1
+ # Woozie — The Easiest Web Framework Ever
2
2
 
3
- **Built by Woozlit 2026 — v2.0**
3
+ **Built by Woozlit 2026 — v4.0 with CommonUI**
4
4
 
5
5
  Write simple tags. Get beautiful, responsive websites. No HTML, no CSS, no JavaScript required.
6
6
 
7
7
  ## What is Woozie?
8
8
 
9
- Woozie is a declarative UI language that compiles to modern HTML/CSS/JS. It has **40+ built-in components**, a **plugin system**, **dark mode**, **style files**, and **multi-file output** — all with zero configuration.
9
+ Woozie is a declarative UI language that compiles to modern HTML/CSS/JS. It has **100+ built-in components** via the **CommonUI** library, a **plugin system**, **CometUI community packages**, **dark mode**, **style files**, **custom JavaScript support**, and **multi-page routing** — all with zero configuration.
10
10
 
11
11
  ```woozie
12
- app "My App":
12
+ app:
13
13
  hero "Hello World":
14
14
  text "Built with Woozie"
15
15
  button "Get Started"
@@ -20,44 +20,48 @@ That's a full website. Seriously.
20
20
  ## Quick Start
21
21
 
22
22
  ```bash
23
- git clone <repo-url>
24
- cd woozie
25
- npm install
26
- npm link
27
-
28
- woozie init MyProject
29
- cd MyProject
23
+ npm install -g wozie
24
+ woozie init myapp
25
+ cd myapp
30
26
  woozie run
31
27
  ```
32
28
 
33
- Open http://localhost:3000 and see your app with live reload.
29
+ Open http://localhost:3000 and you're running.
34
30
 
35
31
  ## Features
36
32
 
37
33
  | Feature | Description |
38
34
  |---------|-------------|
39
- | **40+ Components** | Buttons, cards, forms, modals, tabs, accordions, alerts, stats, and more |
35
+ | **100+ Components** | Buttons, cards, forms, modals, drawers, carousels, pricing, testimonials and more |
36
+ | **CommonUI Library** | Professional component library built-in — like shadcn/ui but for Woozie |
40
37
  | **Style Files** | Customize any component via `style.woozie` |
41
38
  | **Dark Mode** | Set `theme: dark` in `woozie.rules` |
42
39
  | **Plugins** | Drop a `.woozie` file in `plugins/` — it becomes a tag |
43
40
  | **Live Reload** | Dev server watches files and reloads instantly |
44
41
  | **Multi-File Output** | Generates separate HTML, CSS, JS files |
42
+ | **Clean URLs** | No `.html` in the browser — ever |
43
+ | **Custom JavaScript** | Drop a `script.js` in your project, it's auto-included |
44
+ | **CometUI** | Community plugin ecosystem — install with `woozie add` |
45
45
  | **Responsive** | Every component is mobile-friendly |
46
- | **Animations** | Scroll animations, hover effects, transitions |
47
- | **Attributes** | `button "Click" [variant=outline, color=success]` |
48
- | **Comments** | `// This is a comment` |
46
+ | **Animations** | Scroll animations, hover effects, page transitions |
47
+ | **JS API** | `wz.toast()`, `wz.openDrawer()`, `wz.openDialog()` and more |
48
+ | **SEO Ready** | Meta tags, OG tags, semantic HTML |
49
49
  | **Zero Config** | No webpack, no babel, no config files |
50
50
 
51
51
  ## Project Structure
52
52
 
53
53
  ```
54
54
  my-project/
55
- main.woozie <- entry point (your app)
56
- woozie.rules <- config (NO COMMENTS allowed)
57
- style.woozie <- custom style overrides (optional)
58
- plugins/ <- custom components (optional)
55
+ main.woozie -- homepage (required)
56
+ woozie.rules -- project config
57
+ style.woozie -- custom style overrides (optional)
58
+ script.js -- custom JavaScript (optional, auto-included)
59
+ pages/ -- additional pages
60
+ about.woozie
61
+ contact.woozie
62
+ plugins/ -- reusable components
59
63
  navbar.woozie
60
- sidebar.woozie
64
+ comet_modules/ -- installed community packages
61
65
  ```
62
66
 
63
67
  ## Syntax
@@ -71,56 +75,272 @@ tagname "argument" [attr1=value1, attr2=value2]:
71
75
 
72
76
  A colon `:` at the end means the tag has children (indent them below).
73
77
 
74
- ## Components
78
+ ---
79
+
80
+ ## Complete Component Reference
75
81
 
76
82
  ### Layout
77
- `column` `row` `grid [cols=N]` `center` `container` `section` `spacer` `divider` `wrap`
83
+
84
+ | Tag | Description | Example |
85
+ |-----|-------------|---------|
86
+ | `column` / `col` | Vertical stack | `column:` |
87
+ | `row` | Horizontal layout | `row:` |
88
+ | `grid` | Responsive grid | `grid [cols=3]:` |
89
+ | `center` | Centered content | `center:` |
90
+ | `container` | Max-width wrapper | `container:` |
91
+ | `section` | Page section | `section:` |
92
+ | `spacer` | Vertical spacing | `spacer "2"` |
93
+ | `divider` | Horizontal line | `divider` |
94
+ | `wrap` | Flex wrap | `wrap:` |
95
+ | `stack` / `vstack` | Vertical stack with gap | `stack [gap=2rem]:` |
96
+ | `hstack` | Horizontal stack | `hstack [gap=1rem]:` |
97
+ | `flex` | Flexible layout | `flex [direction=row, align=center]:` |
98
+ | `sidebar_layout` | Sidebar + main layout | `sidebar_layout:` |
99
+ | `sidebar` | Sidebar container | `sidebar:` |
100
+ | `sidebar_item` | Sidebar nav item | `sidebar_item "Dashboard" [href=#]` |
101
+ | `sidebar_section` | Sidebar group label | `sidebar_section "MENU"` |
102
+ | `main` | Main content area | `main:` |
103
+ | `twocol` | Two-column grid | `twocol:` |
104
+ | `threecol` | Three-column grid | `threecol:` |
105
+ | `fullwidth` | Full viewport width | `fullwidth:` |
106
+ | `sticky` | Sticky positioning | `sticky:` |
107
+ | `scrollarea` | Custom scrollbar area | `scrollarea [height=300px]:` |
108
+ | `aspect` | Aspect ratio box | `aspect [ratio=16/9]:` |
78
109
 
79
110
  ### Typography
80
- `heading` `subheading` `text` `small` `bold` `italic` `label` `link [href=URL]` `code` `quote`
81
111
 
82
- ### Interactive
83
- `button [variant=solid|outline|ghost, color=primary|success|warning|danger, size=sm|md|lg]`
84
- `input [type=text|email|password]` `textarea [rows=N]` `select`/`option` `toggle` `checkbox` `radio [name=group]` `slider [min=0, max=100]` `dropdown`
112
+ | Tag | Description | Example |
113
+ |-----|-------------|---------|
114
+ | `h1` / `title` | Top-level heading | `h1 "Welcome"` |
115
+ | `heading` / `h2` | Section heading | `heading "Features"` |
116
+ | `subheading` / `h3` | Subsection heading | `subheading "Details"` |
117
+ | `h4` | Level 4 heading | `h4 "Subtitle"` |
118
+ | `h5` | Level 5 heading | `h5 "Minor heading"` |
119
+ | `h6` | Label heading (uppercase) | `h6 "CATEGORY"` |
120
+ | `text` / `p` | Paragraph | `text "Hello world"` |
121
+ | `lead` | Large intro text | `lead "A bigger paragraph"` |
122
+ | `small` | Small text | `small "Fine print"` |
123
+ | `muted` | Muted/gray text | `muted "Secondary info"` |
124
+ | `bold` / `strong` | Bold text | `bold "Important"` |
125
+ | `italic` / `em` | Italic text | `italic "Emphasis"` |
126
+ | `underline` / `u` | Underlined text | `underline "Noted"` |
127
+ | `del` / `strikethrough` | Deleted text | `del "Old price"` |
128
+ | `mark` / `highlight` | Highlighted text | `mark "Key point"` |
129
+ | `label` | Form label | `label "Email"` |
130
+ | `link` | Hyperlink | `link "Click" [href=url]` |
131
+ | `code` | Code (inline or block) | `code "npm install"` |
132
+ | `quote` | Blockquote | `quote "Famous words"` |
133
+ | `kbd` | Keyboard shortcut | `kbd "Ctrl"` |
134
+ | `caption` | Figure caption | `caption "Figure 1"` |
135
+ | `gradient` | Gradient text | `gradient "Colorful text"` |
136
+ | `prose` | Long-form content wrapper | `prose:` |
137
+
138
+ ### Interactive / Forms
139
+
140
+ | Tag | Description | Example |
141
+ |-----|-------------|---------|
142
+ | `button` / `btn` | Button | `button "Click" [variant=solid, color=primary]` |
143
+ | `input` | Text input | `input "Placeholder" [type=email]` |
144
+ | `textarea` | Multi-line input | `textarea "Write here" [rows=5]` |
145
+ | `select` | Dropdown select | `select:` + `option "Item"` |
146
+ | `option` | Select option | `option "Value" [value=x]` |
147
+ | `toggle` | Toggle switch | `toggle "Dark mode"` |
148
+ | `checkbox` | Checkbox | `checkbox "Accept terms"` |
149
+ | `radio` | Radio button | `radio "Option A" [name=group]` |
150
+ | `slider` | Range slider | `slider [min=0, max=100]` |
151
+ | `dropdown` | Dropdown menu | `dropdown:` |
152
+ | `form` | Form wrapper | `form [action=/api]:` |
153
+ | `formgroup` / `field` | Label + input group | `formgroup "Email" [hint=Required]:` |
154
+ | `search` | Search input with icon | `search "Search..."` |
155
+ | `fileupload` | File upload area | `fileupload "Drop files" [accept=image/*]` |
156
+ | `rating` | Star rating | `rating "4" [max=5]` |
157
+ | `numberinput` | Number stepper | `numberinput [min=0, max=99]` |
158
+ | `dateinput` | Date picker | `dateinput` |
159
+ | `colorpicker` | Color picker | `colorpicker` |
160
+
161
+ **Button attributes:**
162
+ - `variant` = `solid` | `outline` | `ghost`
163
+ - `color` = `primary` | `success` | `warning` | `danger`
164
+ - `size` = `sm` | `md` | `lg`
165
+ - `icon` = emoji/text to show before label
166
+ - `modal` = opens modal with this ID
167
+ - `dialog` = opens dialog with this ID
168
+ - `drawer` = opens drawer with this ID
169
+ - `sheet` = opens sheet with this ID
170
+ - `page` = navigates to this page
171
+ - `disabled` = disables the button
85
172
 
86
173
  ### Media
87
- `image "url"` `video "url"` `audio "url"` `icon "emoji"` `avatar "url"`
174
+
175
+ | Tag | Description | Example |
176
+ |-----|-------------|---------|
177
+ | `image` / `img` | Image | `image "photo.jpg" [alt=Photo]` |
178
+ | `video` | Video player | `video "clip.mp4" [autoplay, muted, loop]` |
179
+ | `audio` | Audio player | `audio "song.mp3"` |
180
+ | `icon` | Emoji icon | `icon "⚡" [size=3rem]` |
181
+ | `avatar` | User avatar | `avatar "face.jpg" [size=64]` |
182
+ | `avatar_group` | Stacked avatars | `avatar_group:` |
183
+ | `carousel` | Image carousel | `carousel:` with children |
184
+ | `gallery` | Image gallery grid | `gallery [cols=4]:` |
185
+ | `embed` | YouTube/Vimeo embed | `embed "https://youtube.com/watch?v=..."` |
88
186
 
89
187
  ### Feedback
90
- `alert "msg" [type=info|success|warning|error]` `badge "text" [color=X]` `progress "75"` `spinner` `tooltip [text=X]`
188
+
189
+ | Tag | Description | Example |
190
+ |-----|-------------|---------|
191
+ | `alert` | Alert message | `alert "Success!" [type=success, closable=true]` |
192
+ | `badge` | Small label | `badge "New" [color=green]` |
193
+ | `progress` | Progress bar | `progress "75"` |
194
+ | `spinner` | Loading spinner | `spinner [size=lg]` |
195
+ | `tooltip` | Hover tooltip | `tooltip [text=Info]:` |
196
+ | `toast` | Toast notification | `toast "Saved!" [type=success]` |
197
+ | `skeleton` | Loading skeleton | `skeleton [type=text, count=3]` |
198
+ | `empty` | Empty state | `empty "No data" [icon=📭, title=Nothing here]` |
199
+ | `banner` | Top banner | `banner "Announcement!" [type=primary]` |
200
+ | `callout` | Info callout box | `callout "Tip text" [type=tip, title=Pro Tip]` |
201
+ | `notification` | Notification card | `notification [title=New, icon=🔔, time=2m ago]` |
202
+ | `meter` | Meter/gauge | `meter "65" [max=100, label=CPU]` |
91
203
 
92
204
  ### Navigation
93
- `nav` `navlink "text" [href=URL]` `tabs`/`tab "Label"` `breadcrumb` `menu`
94
205
 
95
- ### Data
96
- `table` `list [type=ordered]` `listitem "text"` `stat "value" [label=Label]`
206
+ | Tag | Description | Example |
207
+ |-----|-------------|---------|
208
+ | `nav` | Navigation bar | `nav:` |
209
+ | `navlink` | Nav link | `navlink "Home" [page=index]` |
210
+ | `tabs` / `tab` | Tab panels | `tabs:` + `tab "Label":` |
211
+ | `breadcrumb` | Breadcrumb trail | `breadcrumb:` |
212
+ | `menu` | Menu container | `menu:` |
213
+ | `drawer` | Side drawer | `drawer "Title" [id=x, position=right]` |
214
+ | `sheet` | Bottom/side sheet | `sheet "Title" [id=x, position=bottom]` |
215
+ | `bottomnav` | Bottom navigation | `bottomnav:` |
216
+ | `bottomnav_item` | Bottom nav item | `bottomnav_item "Home" [icon=🏠, page=index]` |
217
+ | `commandmenu` | Cmd+K palette | `commandmenu "Search..." [id=cmd]` |
218
+ | `pagination` | Page pagination | `pagination [pages=10, current=3]` |
219
+ | `steps` / `step` | Step indicator | `steps:` + `step "Name" [status=active]` |
220
+
221
+ ### Data Display
222
+
223
+ | Tag | Description | Example |
224
+ |-----|-------------|---------|
225
+ | `table` | Data table | `table:` + `thead:` + `tbody:` |
226
+ | `list` | List | `list [type=ordered]:` |
227
+ | `listitem` / `li` | List item | `listitem "Item text"` |
228
+ | `stat` | Stat number | `stat "10K+" [label=Users, trend=+12%]` |
229
+ | `tag` | Tag label | `tag "React" [color=blue, closable=true]` |
230
+ | `chip` | Chip label | `chip "Design"` |
231
+ | `timeline` | Timeline | `timeline:` |
232
+ | `timeline_item` | Timeline entry | `timeline_item "Event":` |
233
+ | `count` | Large number | `count "42"` |
97
234
 
98
235
  ### Containers
99
- `card` `modal [id=X]` `accordion`/`accordion_item "Title"` `hero "Title"` `header` `footer`
236
+
237
+ | Tag | Description | Example |
238
+ |-----|-------------|---------|
239
+ | `card` | Content card | `card [title=My Card]:` |
240
+ | `modal` | Modal dialog | `modal [id=my-modal]:` |
241
+ | `dialog` | Enhanced dialog | `dialog "Title" [id=my-dialog]:` |
242
+ | `popover` | Popover | `popover:` |
243
+ | `accordion` | Accordion group | `accordion:` |
244
+ | `accordion_item` | Accordion panel | `accordion_item "Title":` |
245
+ | `collapsible` | Collapsible section | `collapsible "Click to expand":` |
246
+ | `panel` | Panel with header | `panel "Title" [action=View All]:` |
247
+ | `glass` | Glass morphism card | `glass:` |
248
+ | `hero` | Hero section | `hero "Title" [subtitle=Text]:` |
249
+ | `header` | Page header | `header:` |
250
+ | `footer` | Page footer | `footer:` |
251
+
252
+ ### Page Sections (Pre-built Blocks)
253
+
254
+ | Tag | Description | Example |
255
+ |-----|-------------|---------|
256
+ | `pricing` | Pricing card | `pricing "Pro" [price=$29, period=month, featured=true]:` |
257
+ | `pricing_feature` | Pricing feature | `pricing_feature "Unlimited users"` |
258
+ | `testimonial` | Testimonial card | `testimonial "Quote" [author=Name, role=CEO]` |
259
+ | `feature` | Feature block | `feature "Fast" [icon=⚡]:` |
260
+ | `cta` | Call-to-action | `cta "Ready?" [subtitle=Get started now]:` |
261
+ | `logocloud` | Logo cloud | `logocloud:` |
262
+ | `faq` | FAQ section | `faq:` with accordion children |
263
+ | `separator` | Visual separator | `separator "or"` |
264
+
265
+ ### Animation & Utility
266
+
267
+ | Tag | Description | Example |
268
+ |-----|-------------|---------|
269
+ | `animate` | Animation wrapper | `animate [type=slide, delay=2]:` |
270
+ | `gradient` | Gradient text | `gradient "Colorful"` |
271
+
272
+ Animation types: `fade`, `slide`, `slideup`, `slidedown`, `slideleft`, `slideright`, `zoom`, `bounce`
273
+
274
+ ### Special / Meta
275
+
276
+ | Tag | Description | Example |
277
+ |-----|-------------|---------|
278
+ | `tailwindcss` | Include Tailwind CSS | `tailwindcss` |
279
+ | `css` | Custom CSS | `css "styles.css"` |
280
+ | `script` / `js` | JavaScript | `script "app.js"` |
281
+ | `raw` / `html` | Raw HTML | `raw "<br>"` |
282
+ | `meta` | Meta tag | `meta "Description" [name=description]` |
283
+ | `ogmeta` | OpenGraph meta | `ogmeta "Title" [property=title]` |
284
+
285
+ ---
286
+
287
+ ## JavaScript API
288
+
289
+ Woozie exposes a global `wz` object for programmatic control:
290
+
291
+ ```javascript
292
+ // Show toast notifications
293
+ wz.toast("Saved successfully!", "success");
294
+ wz.toast("Something went wrong", "error", 3000);
295
+
296
+ // Control drawers
297
+ wz.openDrawer("my-drawer");
298
+ wz.closeDrawer("my-drawer");
299
+
300
+ // Control sheets
301
+ wz.openSheet("my-sheet");
302
+ wz.closeSheet("my-sheet");
303
+
304
+ // Control dialogs
305
+ wz.openDialog("my-dialog");
306
+ wz.closeDialog("my-dialog");
307
+
308
+ // Control modals
309
+ wz.openModal("my-modal");
310
+ wz.closeModal("my-modal");
311
+ ```
312
+
313
+ ---
100
314
 
101
315
  ## Rules File (woozie.rules)
102
316
 
103
317
  Configuration file. **NO COMMENTS ALLOWED.**
104
318
 
105
319
  ```
106
- version: 2.0
107
- theme: light
320
+ version: 4.0
321
+ theme: dark
108
322
  title: My App
109
323
  font: Inter
110
324
  color: #6366f1
111
325
  lang: en
112
326
  favicon: icon.png
327
+ description: My awesome website
328
+
329
+ plugins:
330
+ navbar = plugins/navbar.woozie
331
+ footer = plugins/footer.woozie
113
332
  ```
114
333
 
115
334
  | Key | Values | Default |
116
335
  |-----|--------|---------|
117
- | `version` | Any | `2.0` |
336
+ | `version` | Any | `4.0` |
118
337
  | `theme` | `light`, `dark` | `light` |
119
338
  | `title` | Any string | `Woozie App` |
120
339
  | `font` | Google Font name | `Inter` |
121
340
  | `color` | Hex color | `#6366f1` |
122
341
  | `lang` | Language code | `en` |
123
342
  | `favicon` | Path or URL | (none) |
343
+ | `description` | Meta description | (none) |
124
344
 
125
345
  ## Style File (style.woozie)
126
346
 
@@ -138,7 +358,6 @@ card:
138
358
 
139
359
  hero:
140
360
  padding: 8rem 2rem
141
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%)
142
361
  ```
143
362
 
144
363
  Selector names match Woozie element names. Properties are standard CSS.
@@ -169,23 +388,22 @@ woozie init <name> Create a new project
169
388
  woozie run Start dev server with live reload
170
389
  woozie dev Alias for run
171
390
  woozie build Compile to static dist/ folder
391
+ woozie add <name> Install a CometUI package from npm
392
+ woozie publish Publish a CometUI package to npm
393
+ woozie comet init Scaffold a new CometUI package
394
+ woozie comet list List installed packages
395
+ woozie comet remove Remove a package
396
+ woozie syntax Install VS Code syntax highlighting
172
397
  --port <n> Custom port (default: 3000)
173
- --output <path> Custom output path
174
398
  --help Show help
175
399
  ```
176
400
 
177
- ## Documentation
178
-
179
- - [Element Reference](docs/elements.md) — Every component with examples
180
- - [Installation Guide](docs/install.md) — How to install and set up
181
- - [Hosting Guide](docs/hosting.md) — How to deploy your Woozie app
182
-
183
401
  ## VS Code Extension
184
402
 
185
- Install syntax highlighting from `editor/woozie-syntax/`:
403
+ Syntax highlighting installs automatically when you `npm install -g wozie`. You can also run:
404
+
186
405
  ```bash
187
- cd editor/woozie-syntax
188
- # Install in VS Code via Extensions > Install from VSIX
406
+ woozie syntax
189
407
  ```
190
408
 
191
- Features: syntax highlighting, auto-indent, comment toggling, bracket matching.
409
+ Features: syntax highlighting, file icons, auto-indent, comment toggling, bracket matching.
package/bin/woozie.js CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env node
1
+ #!/usr/bin/env node
2
2
 
3
3
  import arg from 'arg';
4
4
  import fs from 'fs';
@@ -22,7 +22,8 @@ const command = args._[0];
22
22
 
23
23
  if (!command || args['--help']) {
24
24
  console.log(`
25
- Woozie CLI v3.0 — The easiest web framework 🚀
25
+ Woozie CLI v4.0 — The easiest web framework 🚀
26
+ Now with CommonUI — 100+ professional components
26
27
  Usage: woozie <command> [options]
27
28
 
28
29
  Commands:
@@ -66,29 +67,69 @@ async function main() {
66
67
  navlink "Contact" [page=contact]
67
68
 
68
69
  hero "Welcome to ${name}":
69
- text "Built with Woozie — the easiest web framework"
70
+ text "Built with Woozie and CommonUI — the easiest web framework with 100+ components"
70
71
  row:
71
72
  button "Get Started" [variant=solid]
72
- button "About Us" [variant=outline, page=about]
73
+ button "Learn More" [variant=outline, page=about]
73
74
 
74
75
  section:
75
- heading "Features"
76
+ heading "Why ${name}?"
77
+ text "Everything you need to build beautiful websites, fast."
78
+ spacer "1"
76
79
  grid [cols=3]:
80
+ feature "Lightning Fast" [icon=⚡]:
81
+ text "Compiles in milliseconds. No webpack, no config, just results."
82
+ feature "Beautiful Design" [icon=🎨]:
83
+ text "100+ stunning components built-in with CommonUI library."
84
+ feature "Easy to Learn" [icon=📖]:
85
+ text "Simple indentation-based syntax anyone can master in minutes."
86
+ feature "Dark Mode" [icon=🌙]:
87
+ text "Beautiful dark and light themes with a single config change."
88
+ feature "Responsive" [icon=📱]:
89
+ text "Every component adapts perfectly to mobile, tablet, and desktop."
90
+ feature "Extensible" [icon=🔌]:
91
+ text "CometUI plugin system for community packages and custom components."
92
+
93
+ section:
94
+ heading "Built-in Components"
95
+ text "Here's a taste of what you get out of the box."
96
+ spacer "1"
97
+ grid [cols=2]:
77
98
  card:
78
- icon ""
79
- subheading "Fast"
80
- text "Compiles in milliseconds"
81
- card:
82
- icon "🎨"
83
- subheading "Beautiful"
84
- text "Stunning UI out of the box"
99
+ subheading "Buttons"
100
+ row:
101
+ button "Primary" [variant=solid]
102
+ button "Outline" [variant=outline]
103
+ button "Ghost" [variant=ghost]
104
+ row:
105
+ button "Success" [variant=solid, color=success]
106
+ button "Danger" [variant=solid, color=danger]
107
+ button "Warning" [variant=solid, color=warning]
85
108
  card:
86
- icon "🔌"
87
- subheading "Extensible"
88
- text "CometUI plugin system for community libraries"
109
+ subheading "Feedback"
110
+ alert "This is an info alert" [type=info]
111
+ alert "Operation successful!" [type=success]
112
+ progress "72"
113
+ spacer "1"
114
+ row:
115
+ badge "New" [color=primary]
116
+ badge "Active" [color=green]
117
+ badge "Pending" [color=yellow]
118
+
119
+ section:
120
+ row:
121
+ stat "10K+" [label=Users]
122
+ stat "99.9%" [label=Uptime]
123
+ stat "100+" [label=Components]
124
+ stat "4.9" [label=Rating]
125
+
126
+ cta "Ready to build something amazing?" [subtitle=Get started in seconds with Woozie and CommonUI.]:
127
+ row:
128
+ button "Get Started" [variant=solid, size=lg]
129
+ button "View Docs" [variant=outline, size=lg, page=about]
89
130
 
90
131
  footer:
91
- text "Built with Woozie 3.0"
132
+ text "Built with Woozie 4.0 and CommonUI"
92
133
  `);
93
134
 
94
135
  fs.writeFileSync(path.join(projectDir, 'pages', 'about.woozie'),
@@ -99,11 +140,36 @@ async function main() {
99
140
  navlink "Contact" [page=contact]
100
141
 
101
142
  section:
102
- heading "About"
103
- text "This project was built with Woozie, the easiest web framework."
143
+ heading "About ${name}"
144
+ lead "We believe building websites should be easy, fast, and fun."
145
+ spacer "2"
146
+ twocol:
147
+ column:
148
+ subheading "Our Mission"
149
+ text "We created ${name} to make web development accessible to everyone. No complex toolchains, no configuration headaches — just write and build."
150
+ spacer "1"
151
+ subheading "Technology"
152
+ text "Built with Woozie, the easiest web framework, powered by CommonUI with 100+ professional components."
153
+ column:
154
+ timeline:
155
+ timeline_item "Project Started":
156
+ text "The idea was born to simplify web development."
157
+ timeline_item "First Release":
158
+ text "Launched with core components and dark mode."
159
+ timeline_item "CommonUI Added":
160
+ text "100+ professional components, page sections, and more."
161
+ timeline_item "Growing Community":
162
+ text "Developers worldwide are building with Woozie."
163
+
164
+ section:
165
+ heading "What People Say"
166
+ grid [cols=3]:
167
+ testimonial "Woozie is by far the easiest framework I've ever used. I built my landing page in 10 minutes!" [author=Sarah Chen, role=Designer]
168
+ testimonial "The CommonUI components are beautiful. I don't need a design system anymore." [author=Alex Rodriguez, role=Developer]
169
+ testimonial "My clients love how fast I can iterate. Woozie changed my workflow." [author=James Park, role=Freelancer]
104
170
 
105
171
  footer:
106
- text "Built with Woozie 3.0"
172
+ text "Built with Woozie 4.0 and CommonUI"
107
173
  `);
108
174
 
109
175
  fs.writeFileSync(path.join(projectDir, 'pages', 'contact.woozie'),
@@ -115,21 +181,48 @@ async function main() {
115
181
 
116
182
  section:
117
183
  heading "Contact Us"
118
- column:
119
- input "Your name" [type=text]
120
- input "Your email" [type=email]
121
- textarea "Your message"
122
- button "Send Message" [variant=solid]
184
+ text "Have a question or want to say hello? We'd love to hear from you."
185
+ spacer "2"
186
+ twocol:
187
+ card:
188
+ form:
189
+ formgroup "Full Name":
190
+ input "Enter your name" [type=text, name=name, required=true]
191
+ formgroup "Email Address":
192
+ input "you@example.com" [type=email, name=email, required=true]
193
+ formgroup "Subject":
194
+ select [name=subject]:
195
+ option "General Question" [value=general]
196
+ option "Bug Report" [value=bug]
197
+ option "Feature Request" [value=feature]
198
+ option "Partnership" [value=partnership]
199
+ formgroup "Message":
200
+ textarea "Tell us what's on your mind..." [rows=5, name=message]
201
+ button "Send Message" [variant=solid, icon=✉️]
202
+ column:
203
+ card:
204
+ icon "📧"
205
+ subheading "Email"
206
+ text "hello@example.com"
207
+ card:
208
+ icon "📍"
209
+ subheading "Location"
210
+ text "San Francisco, CA"
211
+ card:
212
+ icon "🕐"
213
+ subheading "Response Time"
214
+ text "We reply within 24 hours"
123
215
 
124
216
  footer:
125
- text "Built with Woozie 3.0"
217
+ text "Built with Woozie 4.0 and CommonUI"
126
218
  `);
127
219
 
128
220
  fs.writeFileSync(path.join(projectDir, 'woozie.rules'),
129
- `version: 3.0
130
- theme: light
221
+ `version: 4.0
222
+ theme: dark
131
223
  title: ${name}
132
224
  font: Inter
225
+ description: Built with Woozie and CommonUI
133
226
  `);
134
227
 
135
228
  fs.writeFileSync(path.join(projectDir, 'style.woozie'),