@rip-lang/ui 0.3.21 → 0.3.22

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 (2) hide show
  1. package/README.md +20 -12
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # Rip UI
2
2
 
3
- Headless, accessible UI components written in Rip. Zero dependencies. Zero CSS.
3
+ Headless, accessible UI components written in Rip. Zero dependencies.
4
4
  Every widget exposes `$` attributes (compiled to `data-*`) for styling and
5
- handles keyboard interactions per WAI-ARIA Authoring Practices.
5
+ handles keyboard interactions per WAI-ARIA Authoring Practices. Style with
6
+ Tailwind, vanilla CSS, or any methodology you prefer.
6
7
 
7
8
  Components are plain `.rip` source files — no build step. The browser compiles
8
9
  them on the fly.
@@ -31,7 +32,7 @@ Every widget:
31
32
  - Handles all keyboard interactions per WAI-ARIA Authoring Practices
32
33
  - Sets correct ARIA attributes automatically
33
34
  - Exposes state via `$` sigil (`$open`, `$selected`) for CSS styling
34
- - Ships zero CSS — styling is entirely yours
35
+ - Ships no CSS — style with Tailwind or any methodology
35
36
  - Uses Rip's reactive primitives for all state management
36
37
 
37
38
  ---
@@ -78,7 +79,7 @@ input value <=> @name
78
79
  | Component count | ~40 | 54 |
79
80
  | Total source | ShadCN wrappers (~3K LOC) atop Radix (~20K+ LOC) | 5,191 SLOC — everything included |
80
81
  | Build step | Required (Next.js, Vite, etc.) | None — browser compiles `.rip` source |
81
- | Styling | Pre-wired Tailwind (ShadCN) or unstyled (Radix) | Zero CSS — `data-*` contract, any methodology |
82
+ | Styling | Pre-wired Tailwind (ShadCN) or unstyled (Radix) | Headless — `data-*` contract, style with Tailwind or any CSS |
82
83
  | Controlled components | `value` + `onChange` callback pair | `<=>` two-way binding |
83
84
  | Shared state | React Context + Provider wrappers | `offer` / `accept` keywords |
84
85
  | Reactivity | `useState` + `useEffect` + dependency arrays | `:=` / `~=` / `~>` — language-level |
@@ -127,25 +128,32 @@ own.
127
128
 
128
129
  ## Styling
129
130
 
130
- All widgets ship zero CSS. The contract between behavior and styling is
131
- `data-*` attributes:
131
+ All widgets are headless — they ship no CSS. The contract between behavior
132
+ and styling is `data-*` attributes:
132
133
 
133
134
  ```coffee
134
135
  # Widget exposes semantic state
135
136
  button $open: open?!, $disabled: @disabled?!
136
137
  ```
137
138
 
139
+ Style with Tailwind's data attribute variants:
140
+
141
+ ```html
142
+ <button class="data-[open]:border-blue-500 data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed">
143
+ ```
144
+
145
+ Or vanilla CSS:
146
+
138
147
  ```css
139
- /* You write the styles */
140
- [data-open] { border-color: var(--color-primary); }
148
+ [data-open] { border-color: theme('colors.blue.500'); }
141
149
  [data-disabled] { opacity: 0.5; cursor: not-allowed; }
142
150
  ```
143
151
 
144
- Any CSS methodology worksvanilla CSS, Tailwind, Open Props, a custom
145
- design system. The widgets don't care.
152
+ Add Tailwind via CDNno build step needed:
146
153
 
147
- For our recommended approach — design tokens, CSS architecture, dark mode,
148
- and the rationale behind it — see **[STYLING.md](STYLING.md)**.
154
+ ```html
155
+ <script src="https://cdn.tailwindcss.com"></script>
156
+ ```
149
157
 
150
158
  ---
151
159
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rip-lang/ui",
3
- "version": "0.3.21",
3
+ "version": "0.3.22",
4
4
  "description": "Headless, accessible UI components written in Rip — zero CSS, zero dependencies",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -31,7 +31,7 @@
31
31
  "author": "Steve Shreeve <steve.shreeve@gmail.com>",
32
32
  "license": "MIT",
33
33
  "dependencies": {
34
- "rip-lang": ">=3.13.76"
34
+ "rip-lang": ">=3.13.77"
35
35
  },
36
36
  "files": [
37
37
  "*.rip",