hazo_ui 6.12.0 → 6.12.4
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.
- package/CHANGE_LOG.md +80 -0
- package/README.md +4 -0
- package/SETUP_CHECKLIST.md +2 -2
- package/dist/index.cjs +249 -140
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +249 -140
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGE_LOG.md
CHANGED
|
@@ -5,6 +5,86 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## v6.12.4 (2026-10-03)
|
|
9
|
+
|
|
10
|
+
### Changed — i18n string wiring (remaining components)
|
|
11
|
+
|
|
12
|
+
- The 8 remaining components are now wired through
|
|
13
|
+
`createPackageT("hazo_ui", en)` from `hazo_core/i18n`: `HazoUiDialog`,
|
|
14
|
+
`kanban_editor`, `MarkdownEditor`, `HazoUiImageCropperDialog`,
|
|
15
|
+
`HazoUiImageCropper`, `HazoUiMemoryDropdown`, `HazoUiCelebration` and
|
|
16
|
+
`DateRangeSelector`.
|
|
17
|
+
- `src/locales/en.json` grows from 102 to 133 keys, adding the `dialog.*`,
|
|
18
|
+
`kanban.*`, `markdown.*`, `cropper.*`, `memory.*`, `celebration.*` and
|
|
19
|
+
`charts.date_range` namespaces. Additive only.
|
|
20
|
+
- Prop defaults for user-facing labels now resolve in the component body via
|
|
21
|
+
`prop ?? t(key)`, so consumer overrides still win. Behaviour is identical
|
|
22
|
+
in English.
|
|
23
|
+
- Intentionally left hardcoded: the `![uploading…]()` markdown marker and
|
|
24
|
+
developer-facing `Error` messages.
|
|
25
|
+
- Non-English translations (de/es/fr/zh) are to be generated via the
|
|
26
|
+
test-app `/translations` page.
|
|
27
|
+
|
|
28
|
+
## v6.12.3 (2026-09-30)
|
|
29
|
+
|
|
30
|
+
### Changed — i18n string wiring
|
|
31
|
+
|
|
32
|
+
- Hardcoded English in `canvas_text_toolbar`, `error_banner`, `error_page`,
|
|
33
|
+
`hazo_ui_confirm_dialog`, `hazo_ui_icon_picker`, `hazo_ui_multi_sort_dialog`,
|
|
34
|
+
`loading_timeout`, `notification_item`, `notification_panel` and `toaster`
|
|
35
|
+
now goes through `t()`. Prop defaults (`title`, `description`,
|
|
36
|
+
`cancelLabel`, ...) resolve via `t()` so consumer overrides still win.
|
|
37
|
+
- `src/locales/en.json` gains the matching keys (`sort.*`, `canvas_toolbar.*`,
|
|
38
|
+
`toast.permission_*`, `error.*`, `loading.taking_longer`, `notification.*`,
|
|
39
|
+
`confirm.cancel`, `icon_picker.search_placeholder`, `common.*`).
|
|
40
|
+
Additive only; English output is unchanged.
|
|
41
|
+
|
|
42
|
+
### Added — test-app
|
|
43
|
+
|
|
44
|
+
- `/translations` page + `/api/i18n/[...path]` route (via
|
|
45
|
+
`hazo_i18n/api` `createI18nRoutes`) with a "Translate with AI" flow, sidebar
|
|
46
|
+
entry, `config/hazo_i18n_config.ini` + `hazo_llm_api_config.ini`.
|
|
47
|
+
- `src/lib/llm_init.ts` loads `hazo_llm_api/server` with `optional_import`
|
|
48
|
+
instead of a static import. A static import is bundled as a separate module
|
|
49
|
+
instance from the runtime copy `hazo_i18n`'s `translateMessages` resolves,
|
|
50
|
+
so init ran on the wrong instance and every chunk failed with "LLM API not
|
|
51
|
+
initialized". Verified: 25/25 chunks ok.
|
|
52
|
+
- `next.config.js`: `hazo_i18n`/`hazo_connect` transpile + source aliases,
|
|
53
|
+
`sql.js` server external. Generated `.hazo-i18n/` and `*.sqlite` ignored.
|
|
54
|
+
|
|
55
|
+
## v6.12.2 (2026-09-30)
|
|
56
|
+
|
|
57
|
+
### Fixed — `useFullscreen`
|
|
58
|
+
|
|
59
|
+
- The fullscreen toggle silently did nothing on iOS Safari. iOS Safari has no
|
|
60
|
+
`requestFullscreen` at all for arbitrary elements (not a missing vendor
|
|
61
|
+
prefix — the method is simply absent), so `enter()` hit its
|
|
62
|
+
`!document.documentElement.requestFullscreen` guard and returned without
|
|
63
|
+
ever flipping `isFullscreen`, and `fullscreenchange` never fired to sync it
|
|
64
|
+
either. Any consumer driving a CSS-based fullscreen layout off
|
|
65
|
+
`isFullscreen` (GoTimer's `TimerShellV2`, for example — a `fixed inset-0
|
|
66
|
+
z-[9999]` overlay with no dependency on the real browser fullscreen state)
|
|
67
|
+
got a dead button on iPhone with no error.
|
|
68
|
+
`enter()`/`exit()`/`toggle()` now detect API support up front and, when
|
|
69
|
+
it's missing, track `isFullscreen` as plain local state instead of no-op'ing
|
|
70
|
+
— the real browser-chrome-hiding effect is still unavailable on iOS (a
|
|
71
|
+
platform limitation, not fixable from JS), but the CSS-driven fullscreen
|
|
72
|
+
layout itself now activates correctly. Added
|
|
73
|
+
`src/hooks/__tests__/use_fullscreen.test.ts` covering both the
|
|
74
|
+
native-API and no-API-available paths.
|
|
75
|
+
|
|
76
|
+
## v6.12.1 (2026-09-29)
|
|
77
|
+
|
|
78
|
+
### Fixed / Added — `HazoUiEtaProgress`/`HazoUiProgressBar`
|
|
79
|
+
|
|
80
|
+
- Bar fill used `bg-accent`, which reads as a near-invisible low-contrast tint
|
|
81
|
+
against several theme presets — switched to `bg-primary` to match the rest
|
|
82
|
+
of the design system's progress/loading affordances.
|
|
83
|
+
- New optional `showPercent` (percentage text next to the label, default
|
|
84
|
+
`false`) and `size` (bar height in px, default `8`) props on both
|
|
85
|
+
`HazoUiEtaProgress` and `HazoUiProgressBar`. Purely additive — no existing
|
|
86
|
+
caller's behavior changes.
|
|
87
|
+
|
|
8
88
|
## v6.12.0 (2026-09-20)
|
|
9
89
|
|
|
10
90
|
### Changed — migrated onto the canonical `hazo_core/i18n` bridge
|
package/README.md
CHANGED
|
@@ -81,6 +81,10 @@ The `tw-animate-css` import replaces the legacy `tailwindcss-animate` plugin (us
|
|
|
81
81
|
|
|
82
82
|
---
|
|
83
83
|
|
|
84
|
+
## Internationalisation
|
|
85
|
+
|
|
86
|
+
All built-in user-facing strings (dialogs, kanban editor, markdown editor, image cropper, memory dropdown, celebration, date-range selector, etc.) resolve through `createPackageT("hazo_ui", en)` from `hazo_core/i18n`. The English catalogue lives in `src/locales/en.json` (133 keys). Prop defaults for labels resolve as `prop ?? t(key)`, so explicit props always override translations. Other locales are generated through `hazo_i18n` (see the test-app `/translations` page).
|
|
87
|
+
|
|
84
88
|
## Color Configuration
|
|
85
89
|
|
|
86
90
|
hazo_ui provides a centralized configuration system for customizing button and header colors across all components. You can set colors globally using `set_hazo_ui_config()` or override them per-component using props.
|
package/SETUP_CHECKLIST.md
CHANGED
|
@@ -99,7 +99,7 @@ The following peer dependencies are required:
|
|
|
99
99
|
- [ ] React (^18.0.0 or ^19.0.0)
|
|
100
100
|
- [ ] React DOM (^18.0.0 or ^19.0.0)
|
|
101
101
|
- [ ] hazo_core (^1.2.0)
|
|
102
|
-
- [ ] hazo_state (^0.
|
|
102
|
+
- [ ] hazo_state (^0.6.3) — the `hazo_ui` barrel statically imports `hazo_state/client` (for `HazoUiEtaProgress`), so this is **required** even if you don't use the ETA progress bar.
|
|
103
103
|
|
|
104
104
|
If not already installed:
|
|
105
105
|
|
|
@@ -143,7 +143,7 @@ npm install @radix-ui/react-dialog @radix-ui/react-popover @radix-ui/react-selec
|
|
|
143
143
|
- **Slider**: `@radix-ui/react-slider`
|
|
144
144
|
- **InputAffix**: No additional dependencies (uses the base shadcn/ui `Input` component)
|
|
145
145
|
- **HazoUiProgressBar, useEtaProgress, median, computeEta, easeToward**: No additional dependencies
|
|
146
|
-
- **HazoUiEtaProgress**: `hazo_state` (^0.
|
|
146
|
+
- **HazoUiEtaProgress**: `hazo_state` (^0.6.3) — a **required** peer dep of hazo_ui (the barrel imports it unconditionally), so it is always installed regardless of which components you use.
|
|
147
147
|
|
|
148
148
|
### 4. Configure Tailwind CSS
|
|
149
149
|
|