wabi 0.21.3 → 0.23.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 (5) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -0
  3. data/README.md +5 -5
  4. data/lib/wabi/version.rb +1 -1
  5. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad486ae425db1fa768c4b0c275df3261568bf25586ed54b1f1c8cdd61b21e411
4
- data.tar.gz: a5971baf69614665214b1fb7b49e980db74bc710bbba3196c5391630ed29d7b3
3
+ metadata.gz: 70b095ae2929edf14e3fa20d3de0cbe998bda4727cc23dd3e11109889edfe180
4
+ data.tar.gz: 1f99f7f34b8353bc1ac35b00ec4a330816da134249ff5adfbf0a34b39eab080c
5
5
  SHA512:
6
- metadata.gz: c3e88c880e6ad8d907c8a3f90069e3801e4f58292e8a004b62179baa1c9359f3975451190d6371e9c48b90a7b9ef2d2cef72bc5de8abd46ffa8c736888c70dee
7
- data.tar.gz: ae515fdef1bc269a21f13a7cbf059ff373d0381af6ca45562ac0dd2d5ad02f7385c1c8634101aac8b19a6d5e7914f44edfac6255bb8121100b3662984e090223
6
+ metadata.gz: ef59f8d97343278ab03eca8f8ff5711dd24ef6af870e9bb308204bfbcf26daf115bd22724fc4a009a965adfe11f8c75968318ec6fe828d5dceab25c68cf56a25
7
+ data.tar.gz: a0043697480bf0340cfb2a2e203b609f8630497cc902cdb34006402c6fcddea9a02d858186cef1f17c39de16a9b3671fac531f3dc64dbf0bb54a0402e19fa3fc
data/CHANGELOG.md CHANGED
@@ -2,6 +2,65 @@
2
2
 
3
3
  All notable changes to Wabi land here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
4
 
5
+ ## 0.23.0 - 2026-06-06
6
+
7
+ Three new components (40 → 43), all backed by Zag.js 1.41 via `@zag-js/vanilla`.
8
+
9
+ ### Added
10
+
11
+ - **Rating Group** (`rating_group`, `@zag-js/rating-group`). Star rating input with
12
+ half-star precision (`allow_half`), a read-only display mode (`read_only`), and a
13
+ configurable star `count` (default 5). Each star is two layered SVGs — an always-visible
14
+ outline plus a filled overlay revealed via `group-data-[highlighted]` and clipped to the
15
+ left half via `group-data-[half]` — so half-stars render in pure CSS. Submits the value
16
+ through Zag's hidden input (`name`).
17
+ - **Hover Card** (`hover_card`, `@zag-js/hover-card`). Rich preview card shown on pointer
18
+ hover and keyboard focus of a trigger, rendered through a portal (reusing the shared
19
+ `_shared/overlay_portal` helper). Configurable `open_delay` / `close_delay`; content is
20
+ inert while closed and fades in (respecting `prefers-reduced-motion`). Non-modal — no
21
+ focus trap. The trigger is keyboard-focusable before hydration (`tabindex="0"`).
22
+ - **Tags Input** (`tags_input`, `@zag-js/tags-input`). Multi-value text entry that collects
23
+ free-form tags, with edit-in-place (`editable`), an optional `max`, and a placeholder.
24
+ Tag nodes are rendered by the controller at runtime from the machine's value collection.
25
+ Submits as a Rails array via per-tag `name[]` hidden inputs, re-synced on every change
26
+ with no leaked inputs.
27
+
28
+ ### Fixed
29
+
30
+ - **README component table** brought current — it still listed 36 components and omitted the
31
+ v0.22.0 additions (DatePicker, InputOTP, FileUpload, ContextMenu). Now reflects all 43.
32
+
33
+ ## 0.22.0 - 2026-06-05
34
+
35
+ Four new components (36 → 40), all backed by Zag.js 1.41 via `@zag-js/vanilla`.
36
+
37
+ ### Added
38
+
39
+ - **Date Picker + Calendar** (`date_picker`, `@zag-js/date-picker`). A localized date
40
+ field (input + popover calendar) and a standalone inline `Calendar`. Single and range
41
+ selection; the day grid is built from the machine at runtime; submits ISO `YYYY-MM-DD`
42
+ via hidden inputs (single → `name`; range → `name[start]` + `name[end]`). The range
43
+ shows a connecting band between the start/end days (plus a hover preview). The field
44
+ input has an accessible name (`aria-label`, default "Choose date", overridable).
45
+ - **Input OTP** (`input_otp`, `@zag-js/pin-input`). One-time-code / PIN input — N
46
+ single-character slots (default 6) that submit a single concatenated hidden value.
47
+ `length`, `type` (`:numeric` / `:alphanumeric`), `mask`, and `otp`
48
+ (`autocomplete="one-time-code"`) are configurable.
49
+ - **File Upload** (`file_upload`, `@zag-js/file-upload`). Drag-and-drop dropzone + browse
50
+ button + a file list (name, size, remove, image thumbnail) rendered from the accepted
51
+ files. Backed by a real `<input type="file">` so a standard Rails multipart submit posts
52
+ the files; `name` gains `[]` and `multiple` when `max_files > 1`. `accept` / `max_size`
53
+ constraints supported.
54
+ - **Context Menu** (`context_menu`, `@zag-js/menu`). Right-click menu opening at the
55
+ cursor, with full DropdownMenu parity — items, label, separator, shortcut, checkbox and
56
+ radio items, and N-level submenus.
57
+
58
+ ### Deferred
59
+
60
+ - Date Picker: multi-month side-by-side view (range still spans months via prev/next).
61
+ - Input OTP: groups + separator (e.g. 3-3).
62
+ - File Upload: ActiveStorage direct-upload, chunked/resumable uploads, progress bars.
63
+
5
64
  ## 0.21.3 - 2026-06-05
6
65
 
7
66
  ### Accessibility
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  Wabi is an open-source UI component library for **Ruby on Rails 8**, built on **Phlex + Tailwind 4 + Stimulus + Hotwire**. Inspired by shadcn/ui, components are *copied* into your app — you own the code, customize freely, no upstream API to drift away from.
6
6
 
7
- 🎉 **Status:** v0.21.3 alpha — [available on RubyGems](https://rubygems.org/gems/wabi). 36 components, 8 theme palettes, WCAG-AA targeted, live docs + registry at [wabi-docs.onrender.com](https://wabi-docs.onrender.com).
7
+ 🎉 **Status:** v0.23.0 alpha — [available on RubyGems](https://rubygems.org/gems/wabi). 43 components, 8 theme palettes, WCAG-AA targeted, live docs + registry at [wabi-docs.onrender.com](https://wabi-docs.onrender.com).
8
8
 
9
9
  ---
10
10
 
@@ -31,14 +31,14 @@ Then add `@import "./wabi/tokens.css";` AFTER `@import "tailwindcss";` in your `
31
31
 
32
32
  ## What's in the box
33
33
 
34
- ### 36 components
34
+ ### 43 components
35
35
 
36
36
  | Group | Components |
37
37
  |---|---|
38
- | **Forms** (14) | Button, Input, NumberInput, Textarea, Label, Checkbox, Switch, Select, RadioGroup, Slider, Toggle, ToggleGroup, Combobox, Form |
38
+ | **Forms** (19) | Button, Input, NumberInput, Textarea, Label, Checkbox, Switch, Select, RadioGroup, Slider, Toggle, ToggleGroup, Combobox, Form, DatePicker, InputOTP, FileUpload, RatingGroup, TagsInput |
39
39
  | **Layout & Display** (9) | Card, Badge, Separator, Alert, Avatar, Table, DataTable, Skeleton, Sidebar |
40
- | **Overlays** (6) | Dialog, AlertDialog, Drawer (4 sides), Tooltip, Popover, Command |
41
- | **Menus** (1) | DropdownMenu (nested submenus, checkbox + radio items) |
40
+ | **Overlays** (7) | Dialog, AlertDialog, Drawer (4 sides), Tooltip, Popover, Command, HoverCard |
41
+ | **Menus** (2) | DropdownMenu (nested submenus, checkbox + radio items), ContextMenu |
42
42
  | **Navigation** (4) | Accordion, Tabs, Breadcrumb, Pagination |
43
43
  | **Feedback** (2) | Toast + Toaster, Progress |
44
44
 
data/lib/wabi/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Wabi
4
- VERSION = "0.21.3"
4
+ VERSION = "0.23.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wabi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.3
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oscar Ortega