@cahyo-dimas/freeday 3.6.0 → 3.7.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.
- package/CHANGELOG.md +46 -0
- package/README.id.md +19 -6
- package/README.md +17 -5
- package/USAGE.md +42 -0
- package/dist/freeday.bundle.css +462 -117
- package/dist/freeday.css +159 -113
- package/dist/freeday.tokens.css +303 -4
- package/docs/getting-started.md +1 -1
- package/package.json +2 -2
- package/src/base.css +1 -1
- package/src/components/accordion.css +1 -1
- package/src/components/alert.css +5 -5
- package/src/components/app-shell.css +2 -2
- package/src/components/appbar.css +3 -3
- package/src/components/avatar.css +15 -9
- package/src/components/badge.css +18 -14
- package/src/components/breadcrumb.css +1 -1
- package/src/components/button.css +21 -13
- package/src/components/carousel.css +3 -3
- package/src/components/cascade.css +4 -4
- package/src/components/chip.css +33 -15
- package/src/components/combo.css +5 -5
- package/src/components/datepicker.css +8 -8
- package/src/components/file-upload.css +9 -4
- package/src/components/input-group.css +2 -2
- package/src/components/input.css +2 -2
- package/src/components/menu.css +3 -3
- package/src/components/pagination.css +1 -1
- package/src/components/selection.css +2 -2
- package/src/components/skeleton.css +1 -1
- package/src/components/stepper.css +1 -1
- package/src/components/table.css +12 -7
- package/src/components/tabs.css +1 -1
- package/src/components/timepicker.css +3 -3
- package/src/components/toast.css +1 -1
- package/src/components/tree.css +1 -1
- package/tokens/tokens.json +57 -4
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,52 @@ benar. Perubahan seperti itu ditulis di bawah `### Changed: BREAKING (types)`
|
|
|
9
9
|
lama → tipe baru, dan cara menyempitkannya — bukan di bawah `### Added`, betapapun aditifnya dari
|
|
10
10
|
sisi kit.
|
|
11
11
|
|
|
12
|
+
## [3.7.0] - 2026-10-23
|
|
13
|
+
|
|
14
|
+
**Kit ini tidak bisa dipakai di Safari 15, dan yang menemukannya adalah sebuah HP.** Pemilik sebuah
|
|
15
|
+
app ronda membuka aplikasinya di iPhone 7 dan menulis tiga kata: tampilannya ancur banget. Sebabnya
|
|
16
|
+
`color-mix()`, 94 kemunculan tanpa satu pun cadangan, dipakai untuk `box-shadow` (26),
|
|
17
|
+
`border-color` (17), `color` (11) dan `background` (5). Safari baru mendukungnya di 16.2; iPhone 7
|
|
18
|
+
mentok di iOS 15.
|
|
19
|
+
|
|
20
|
+
Perbaikan pertama yang dicoba justru membuktikan sebabnya. Pola cadangan yang biasa dipakai orang,
|
|
21
|
+
nilai statis dulu lalu `color-mix()` sesudahnya, tidak bekerja ketika deklarasinya memuat `var()`:
|
|
22
|
+
deklarasi itu sah saat parse dan baru gagal saat computed-value, dan di jalur itu properti jatuh ke
|
|
23
|
+
nilai initial, bukan ke baris sebelumnya. Untuk `border-color` nilai initial itu `currentColor`,
|
|
24
|
+
yaitu hitam. Keluhan tentang garis hitam tebal di mana-mana itulah bukti mekanismenya. Jadi
|
|
25
|
+
`color-mix()`-nya yang dibuang.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
- **Nol `color-mix()` di seluruh CSS yang dikirim** (`#072`). `rgba(var(--x-rgb), .p)` identik
|
|
29
|
+
dengan `color-mix(in srgb, X p%, transparent)` menurut definisi, jadi 10 token semantik baru
|
|
30
|
+
menutup 84 dari 94 kemunculan; `--color-primary-rgb` sendirian menutup 45. Sisanya yang mencampur
|
|
31
|
+
terhadap permukaan dipipihkan di `tokens/build.mjs`, yang kini menghitung nilai bertulis
|
|
32
|
+
`color-mix(in srgb, {a} p%, {b})` sekali per tema sambil menelusuri rantai `$dark ?? $value`,
|
|
33
|
+
sehingga nilai gelapnya diturunkan alih-alih diketik dua kali.
|
|
34
|
+
- **Modifier tone bekerja di Safari 15** (`#072`). Delapan tone kali latar, tinta dan dua garis kini
|
|
35
|
+
33 token terhitung, dan properti privat `--_fdy-{avatar,badge,chip}-tone` hilang seluruhnya.
|
|
36
|
+
Tampilan di peramban modern terbukti tidak berubah: byte yang benar-benar dicat dibandingkan lewat
|
|
37
|
+
tangkapan layar satu piksel, nol selisih di 48 warna kali dua tema.
|
|
38
|
+
- **Lima tempat yang mencetak teks dengan `--color-primary` pindah ke `--color-primary-strong`**
|
|
39
|
+
(`#073`). Kontrak kontras hanya pernah menjanjikan peran itu terhadap permukaan pada ambang 3:1,
|
|
40
|
+
yakni ambang WCAG untuk komponen UI, bukan untuk teks. Jadi suite-nya lulus sambil kit mencetak
|
|
41
|
+
tinta di bawah AA pada teal 3.74, cyan 3.68, emerald 3.77 dan lime 3.09. Azure lulus di 6.56, dan
|
|
42
|
+
itu sebabnya tidak ada yang menyadarinya. Yang pindah: tautan, centang combo, ikon dropzone saat
|
|
43
|
+
seret, dan dua panah urut tabel. Sembilan belas tempat lain yang polanya ikut tertangkap sengaja
|
|
44
|
+
tidak disentuh, sebab semuanya batas kontrol dan objek grafis yang memang sah di 3:1.
|
|
45
|
+
|
|
46
|
+
### Added
|
|
47
|
+
- **Penjaga yang membuat ketiganya tidak bisa kembali diam-diam.** Satu uji menegaskan nol
|
|
48
|
+
`color-mix()` di CSS yang dikirim. Satu lagi menegaskan nol properti `color` yang menyebut
|
|
49
|
+
`--color-primary` gundul, membaca nama properti alih-alih substring supaya kesembilan belas isian
|
|
50
|
+
tetap sah. Dan kontrak kontras kini mengukur `--color-primary-strong` terhadap permukaan pada
|
|
51
|
+
ambang teks untuk setiap palet, bukan hanya azure.
|
|
52
|
+
|
|
53
|
+
### Catatan dukungan peramban
|
|
54
|
+
Floor-nya kini Chrome 105, Safari 15.4 dan Firefox 121, ditentukan `:has()`. Angka itu diaudit dari
|
|
55
|
+
fitur yang dipakai, bukan dari sesi di perangkat sungguhan. Belum ada yang menjalankan kit ini di
|
|
56
|
+
Safari 15.4 nyata.
|
|
57
|
+
|
|
12
58
|
## [3.6.0] - 2026-10-22
|
|
13
59
|
|
|
14
60
|
**Tiga belas hal yang dibangun ulang sebuah app back-office karena kit belum punya.** App-nya tidak
|
package/README.id.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
> **Lebih banyak _free day_ buat dev. UI kit-nya sudah siap pakai.**
|
|
6
6
|
|
|
7
7
|
[](https://cahyo-dimas.github.io/freeday-ui-kit/)
|
|
8
|
-
[](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.7.0)
|
|
9
9
|
|
|
10
10
|
UI KIT yang token-driven & framework-agnostic. Satu sumber kebenaran untuk warna, tipografi,
|
|
11
11
|
spasi, dan komponen. Blueprint: `docs/superpowers/specs/2026-07-21-freeday-ui-kit-design.md`.
|
|
@@ -255,11 +255,24 @@ terlihat, HTML native dulu sebelum ARIA, komponen interaktif ikut pola WAI-ARIA
|
|
|
255
255
|
`docs/index.html`.
|
|
256
256
|
|
|
257
257
|
## Dukungan browser
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
`
|
|
261
|
-
|
|
262
|
-
|
|
258
|
+
**Chrome 105 · Safari 15.4 · Firefox 121.** Floor-nya ditentukan `:has()`, dan oleh generasi Safari
|
|
259
|
+
15.4 untuk native `<dialog>`/`::backdrop`, `accent-color`, dan `100dvh`. `conic-gradient` dan
|
|
260
|
+
`scroll-snap` lebih tua lagi.
|
|
261
|
+
|
|
262
|
+
Dulu floor itu ditentukan `color-mix()` di Safari 16.4, dan sekarang tidak lagi. Harganya memang tak
|
|
263
|
+
pernah pantas: deklarasi yang mencampur sebuah token membawa `var()`, jadi ia dianggap sah saat
|
|
264
|
+
parse dan baru gagal saat computed-value, dan di jalur itu properti jatuh ke nilai *initial*-nya,
|
|
265
|
+
bukan ke baris cadangan di atasnya. Di iPhone yang mentok di iOS 15, 17 deklarasi `border-color`
|
|
266
|
+
berubah jadi `currentColor`, yaitu garis hitam tebal di hampir segalanya. Semua alpha di kit ini
|
|
267
|
+
sekarang ditulis `rgba(var(--color-primary-rgb), .26)`, warnanya sama dan sudah bisa diparse sejak
|
|
268
|
+
Safari 9; empat aturan yang memang tak bisa dijawab secara statis membawa pasangan `@supports` yang
|
|
269
|
+
sungguhan. `test/color-mix.test.mjs` menjaga agar yang berikutnya tetap jujur.
|
|
270
|
+
|
|
271
|
+
Yang paling baru dipakai kit ini (`@container`, `@starting-style`, `text-wrap`) sifatnya peningkatan:
|
|
272
|
+
browser yang belum punya akan melewati bloknya dan tetap memakai aturan tanpa syarat di bawahnya.
|
|
273
|
+
Blur backdrop pakai `-webkit-backdrop-filter` + `backdrop-filter` (Safari lama tetap jalan, hanya
|
|
274
|
+
tanpa blur). Belum ada CSS build/autoprefixer, jadi dukungan di bawah floor itu jadi tanggung jawab
|
|
275
|
+
konsumen.
|
|
263
276
|
|
|
264
277
|
## Lisensi
|
|
265
278
|
[MIT](LICENSE) © 2026 Cahyo D. Kurnianto. Bebas dipakai, diubah, dan didistribusikan asal
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
> **More free days for devs. The UI kit is ready to use.**
|
|
6
6
|
|
|
7
7
|
[](https://cahyo-dimas.github.io/freeday-ui-kit/)
|
|
8
|
-
[](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.7.0)
|
|
9
9
|
|
|
10
10
|
A token-driven, framework-agnostic UI kit. One source of truth for color, typography,
|
|
11
11
|
spacing, and components. Blueprint: `docs/superpowers/specs/2026-07-21-freeday-ui-kit-design.md`.
|
|
@@ -264,11 +264,23 @@ patterns, and `prefers-reduced-motion` is respected. Status is never conveyed by
|
|
|
264
264
|
the "Accessibility" section in `docs/index.html`.
|
|
265
265
|
|
|
266
266
|
## Browser support
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
`
|
|
267
|
+
**Chrome 105 · Safari 15.4 · Firefox 121.** The floor is set by `:has()`, and by the Safari 15.4
|
|
268
|
+
generation of native `<dialog>`/`::backdrop`, `accent-color` and `100dvh`. `conic-gradient` and
|
|
269
|
+
`scroll-snap` are older still.
|
|
270
|
+
|
|
271
|
+
`color-mix()` used to set that floor at Safari 16.4, and it no longer does. It was never worth it:
|
|
272
|
+
a declaration that mixes a token carries `var()`, so it is assumed valid at parse time and only
|
|
273
|
+
fails at computed-value time, where the property drops to its *initial* value instead of to a
|
|
274
|
+
fallback line. On an iPhone that stopped at iOS 15 that turned 17 `border-color` declarations into
|
|
275
|
+
`currentColor`, which is a thick black outline on roughly everything. Every alpha in the kit is now
|
|
276
|
+
written `rgba(var(--color-primary-rgb), .26)`, which is the same colour and parses back to Safari 9;
|
|
277
|
+
the four rules that cannot be answered statically carry a real `@supports` counterpart.
|
|
278
|
+
`test/color-mix.test.mjs` keeps the next one honest.
|
|
279
|
+
|
|
280
|
+
The newest things the kit touches (`@container`, `@starting-style`, `text-wrap`) are enhancements: a
|
|
281
|
+
browser without them skips the block and keeps the unconditional rule underneath. Backdrop blur uses
|
|
270
282
|
`-webkit-backdrop-filter` + `backdrop-filter` (older Safari still works, just without the blur).
|
|
271
|
-
There's no CSS build or autoprefixer step, so supporting
|
|
283
|
+
There's no CSS build or autoprefixer step, so supporting anything below the floor is the consumer's
|
|
272
284
|
responsibility.
|
|
273
285
|
|
|
274
286
|
## License
|
package/USAGE.md
CHANGED
|
@@ -107,6 +107,48 @@ point, everything around it quiet.
|
|
|
107
107
|
- **Surfaces:** most backgrounds are `--color-surface`; `--color-surface-2`/`-3` for a recessed area;
|
|
108
108
|
`--color-primary-soft` only when you want a tinted callout, not as a default panel colour.
|
|
109
109
|
|
|
110
|
+
### Putting an alpha on a role: use the channel triple, not `color-mix()`
|
|
111
|
+
|
|
112
|
+
Every role you are likely to fade has a companion triple, so a 26% primary wash is:
|
|
113
|
+
|
|
114
|
+
```css
|
|
115
|
+
background: rgba(var(--color-primary-rgb), .26);
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Reach for `color-mix(in srgb, var(--color-primary) 26%, transparent)` instead and you get the same
|
|
119
|
+
colour on your machine and a missing one on an older iPhone, with **no way to put a fallback under
|
|
120
|
+
it.** A declaration that mentions a custom property is assumed valid when the stylesheet is parsed
|
|
121
|
+
and is only checked later, when the variable is substituted; if `color-mix()` is unknown at that
|
|
122
|
+
point the declaration is thrown away *there*, and the browser does not go back to the static line
|
|
123
|
+
you wrote above it. The property takes its initial value instead, which for `border-color` means
|
|
124
|
+
`currentColor`: a thick black outline. Safari learned `color-mix()` in 16.2, so every phone that
|
|
125
|
+
stopped at iOS 15 sees that.
|
|
126
|
+
|
|
127
|
+
The triples are generated from the tokens they are named after, in all 18 palettes and both themes,
|
|
128
|
+
so they follow a re-brand on their own. The ones that ship: `--color-primary-rgb`,
|
|
129
|
+
`--color-on-primary-rgb`, `--color-danger-rgb`, `--color-danger-btn-rgb`, `--color-success-rgb`,
|
|
130
|
+
`--color-warning-rgb`, `--color-info-rgb`, `--color-surface-rgb` and `--color-inverse-text-rgb`.
|
|
131
|
+
If you need one the kit does not publish, ask for it rather than hard-coding channels.
|
|
132
|
+
|
|
133
|
+
### Tinting one role over another: the colour is already a token
|
|
134
|
+
|
|
135
|
+
A triple puts an alpha on **one** role. It cannot say "18% of this tone over the surface", because
|
|
136
|
+
the result depends on two roles and on the theme. Those blends are computed when the kit is built
|
|
137
|
+
and published as flat tokens, so you never write the mix at all:
|
|
138
|
+
|
|
139
|
+
```css
|
|
140
|
+
background: var(--tone-3-bg); /* 18% of --tone-3 over --color-surface */
|
|
141
|
+
color: var(--tone-3-ink); /* 50% of --tone-3 toward --color-text */
|
|
142
|
+
border-color: var(--tone-3-border);/* 30% of --tone-3 over --color-border */
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
`--tone-N-bg` / `-ink` / `-border` / `-border-soft` exist for all eight tones in both themes, and are
|
|
146
|
+
exactly what `.fdy-avatar--tone-N`, `.fdy-badge--tone-N` and `.fdy-chip--tone-N` paint — the
|
|
147
|
+
`-ink` on the `-bg` is the pair the WCAG gate measures, so a custom element built from the same two
|
|
148
|
+
tokens inherits that guarantee. `--color-danger-border` (40% of danger over the border) is the same
|
|
149
|
+
idea for a row that failed. If you need a blend the kit does not publish, ask for it: it belongs in
|
|
150
|
+
`tokens/tokens.json`, where the build can resolve it down both themes, not in a component.
|
|
151
|
+
|
|
110
152
|
## 5b. Theme: global by default, per-subtree when a region is inverted
|
|
111
153
|
|
|
112
154
|
`data-theme="light|dark"` redefines the semantic tokens. Set it on `<html>` and it themes the app;
|