wabi 0.25.0 → 0.26.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +27 -0
- data/README.md +1 -1
- data/lib/wabi/class_merge.rb +7 -1
- data/lib/wabi/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6cf18805afd72016ed1b47913331d8e4ff775a6c499416b1617855c4a64f1554
|
|
4
|
+
data.tar.gz: d968d9032f9cecc8f1ccfd1c0bc363ae24dbae7729e17cf11eb5d07d50ee3fe7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ad11feda811392ae825a58badd493167c65388461c0bfc05e872e93c74bff4db7b04d33411ca24027958cd1daff56af8ead5cae1c4669aa4ed562b655cc25a68
|
|
7
|
+
data.tar.gz: fabc543b2d794b2360c3c9811fdc9d26976846e7e44c2b8b87d97dd002ffef48fd4e29a8735892c8cf9ce5968fdbc6da8ddbf92541115781340ee7ede4dd11a2
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,33 @@
|
|
|
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.26.0 - 2026-06-09
|
|
6
|
+
|
|
7
|
+
An API-standardization pass ahead of 1.0, a documentation consistency sweep across all 49 component pages, and automated gem releases. **This release contains breaking API changes** (allowed pre-1.0 per SemVer) — they close the last naming/typing inconsistencies before the public API freezes at 1.0.
|
|
8
|
+
|
|
9
|
+
### Breaking changes
|
|
10
|
+
- **accordion** — `AccordionTrigger`'s `heading_level:` (symbol, e.g. `:h3`) is now `level:` (Integer 1-6, default `3`), mirroring `CardTitle`. Pass `level: nil` to opt out of heading semantics (renders a `<div>` wrapper).
|
|
11
|
+
- **`aria_label:` rename** — the keyword that maps to the HTML `aria-label` attribute is now `aria_label:` (was `label:`) in: `progress`, `radio_group`, `number_input`, `input_otp`, `splitter` (resize trigger), and `context_menu` (radio group). Components that render a real `<label>` element keep `label:` (`checkbox`, `command`, `tree_view`).
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
- `invalid:` on **textarea** (parity with `input`) → emits `aria-invalid="true"`.
|
|
15
|
+
- `aria_label:` on **dropdown_menu** radio group (parity with `context_menu`).
|
|
16
|
+
|
|
17
|
+
### Changed (non-breaking)
|
|
18
|
+
- Relaxed the required `name:` keyword to optional across form inputs (`combobox`, `radio_group`, `rating_group`, `slider`, `tags_input`, `input_otp`, `number_input`, `file_upload`, `date_picker` incl. `Calendar`); **toggle_group** `type:` now defaults to `:single`. Callers that already pass these are unaffected.
|
|
19
|
+
- Enum defaults are now symbols: `tree_view` `selection_mode: :single`, `color_picker` `format: :rgba` (strings are still accepted — output is unchanged).
|
|
20
|
+
- User `class:` routes uniformly through `merge_class` in the breadcrumb/popover/alert_dialog/tooltip triggers.
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
- `Wabi::ClassMerge.call` returns `nil` (not `""`) for an empty result, so components never emit a spurious empty `class=""` attribute.
|
|
24
|
+
- **date_picker** range mode no longer emits malformed `name="[start]"`/`name="[end]"` hidden inputs when `name:` is omitted.
|
|
25
|
+
|
|
26
|
+
### Docs
|
|
27
|
+
- Consistency sweep across all 49 component pages: descriptions sourced from the component manifests, complete `SOURCE_PATHS` (the Source section now shows every file you install), copy-pasteable example code (no placeholders), richer variant coverage, and a missing accessibility section added to `skeleton`.
|
|
28
|
+
|
|
29
|
+
### Tooling
|
|
30
|
+
- Automated gem publishing via **RubyGems Trusted Publishing (OIDC)** on `vX.Y.Z` tags — see `.github/workflows/gem-release.yml` and `RELEASING.md`. No stored credentials.
|
|
31
|
+
|
|
5
32
|
## 0.25.0 - 2026-06-08
|
|
6
33
|
|
|
7
34
|
Component count 47 → **49**. Two new components, a project-wide WCAG-AA accessibility audit, and the first `CONTRIBUTING.md`.
|
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.
|
|
7
|
+
🎉 **Status:** v0.26.0 alpha — [available on RubyGems](https://rubygems.org/gems/wabi). 49 components, 8 theme palettes, WCAG-AA audited, live docs + registry at [wabi-docs.onrender.com](https://wabi-docs.onrender.com).
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
data/lib/wabi/class_merge.rb
CHANGED
|
@@ -25,7 +25,13 @@ module Wabi
|
|
|
25
25
|
tokens.each do |token|
|
|
26
26
|
seen[group_key(token)] = token
|
|
27
27
|
end
|
|
28
|
-
seen.values.join(" ")
|
|
28
|
+
merged = seen.values.join(" ")
|
|
29
|
+
# Return nil (not "") for an all-empty merge so Phlex omits the attribute
|
|
30
|
+
# entirely instead of emitting a spurious `class=""`. Base-class-less
|
|
31
|
+
# components (e.g. breadcrumb root, popover/alert_dialog/tooltip triggers)
|
|
32
|
+
# call merge_class(user_class) with no class, and would otherwise render
|
|
33
|
+
# `class=""`. Non-empty results are unaffected.
|
|
34
|
+
merged.empty? ? nil : merged
|
|
29
35
|
end
|
|
30
36
|
|
|
31
37
|
def group_key(token)
|
data/lib/wabi/version.rb
CHANGED