@cahyo-dimas/freeday 3.9.3 → 3.9.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/CHANGELOG.md CHANGED
@@ -9,6 +9,37 @@ 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.9.4] - 2026-10-26
13
+
14
+ **Sembilan dari lima puluh enam, dan empat puluh delapan sisanya ranjau.** Tiga rilis berturut-turut
15
+ menambal transisi yang tersangkut di bawah Reduce Motion satu per satu: scrim drawer di 3.9.2, yang
16
+ spesifisitasnya salah dan diperbaiki di 3.9.3, lalu centang checkbox yang dilaporkan dari perangkat
17
+ yang sama. Yang ketiga itu lolos dari penjaga 3.9.3 karena penjaga itu hanya memeriksa transisi yang
18
+ menyentuh `pointer-events`, dan centang checkbox tidak menyentuhnya: ia cuma `transform: scale(0)`
19
+ menjadi `scale(1)`. Inputnya benar-benar tercentang selama ini; centangnya yang tidak pernah
20
+ digambar.
21
+
22
+ Hitungannya yang menghentikan pola menambal: kit mentransisikan sesuatu di 56 selektor dan
23
+ menetralkan 9.
24
+
25
+ ### Fixed
26
+ - **Setiap transisi dinetralkan di bawah `prefers-reduced-motion`** (`#090`), satu aturan di
27
+ `src/base.css` alih-alih daftar yang dipelihara tangan. WebKit menjepit durasi transisi ke
28
+ 0.000001s ketika setelan itu menyala, dan pada durasi itu transisinya tidak pernah berjalan:
29
+ propertinya tersangkut di nilai awal. Akibatnya bukan "kurang halus" melainkan keadaan yang salah
30
+ di layar.
31
+ - **`transition:none`, bukan durasi mungil.** Reset aksesibilitas yang beredar luas memakai
32
+ `transition-duration: 0.01ms` supaya `transitionend` tetap menyala, dan durasi mungil itu persis
33
+ bentuk yang menyangkut di WebKit; reset itu akan memperburuk cacat ini. Satu-satunya yang pernah
34
+ menunggu `transitionend` di kit ini adalah toast, dan ia sudah punya cadangan
35
+ `setTimeout(finish, 400)`.
36
+ - **Animasi sengaja tidak disentuh.** Kit memasangnya lewat `prefers-reduced-motion: no-preference`,
37
+ jadi ia opt-in dan sudah mati di sana, sementara `.fdy-spinner` dan `.fdy-progress` punya
38
+ perlakuan bernuansa sendiri yang memang harus bertahan.
39
+ - **Penjaganya menuntut aturan menyeluruhnya ada**, dan menolak bentuk durasi-mungil. Dua penjaga
40
+ sebelumnya hijau untuk kit yang masih punya ranjau; yang ini tidak bisa, sebab ia tidak
41
+ mendaftar selektor.
42
+
12
43
  ## [3.9.3] - 2026-10-26
13
44
 
14
45
  **Perbaikan 3.9.2 tidak pernah bisa bekerja, dan penjaganya hijau untuknya.** Penetralan
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
  [![Live docs](https://img.shields.io/badge/docs-live-2050d8?style=flat-square)](https://cahyo-dimas.github.io/freeday-ui-kit/)
8
- [![Release](https://img.shields.io/badge/release-v3.9.3-0078d4?style=flat-square)](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.9.3)
8
+ [![Release](https://img.shields.io/badge/release-v3.9.4-0078d4?style=flat-square)](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.9.4)
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`.
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
  [![Live docs](https://img.shields.io/badge/docs-live-2050d8?style=flat-square)](https://cahyo-dimas.github.io/freeday-ui-kit/)
8
- [![Release](https://img.shields.io/badge/release-v3.9.3-0078d4?style=flat-square)](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.9.3)
8
+ [![Release](https://img.shields.io/badge/release-v3.9.4-0078d4?style=flat-square)](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.9.4)
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`.
@@ -1217,6 +1217,32 @@ a { color: var(--color-primary-strong); }
1217
1217
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
1218
1218
  }
1219
1219
 
1220
+ /* ===========================================================================
1221
+ * Reduce Motion: SETIAP transisi dinetralkan, bukan daftar yang dipelihara tangan.
1222
+ *
1223
+ * WebKit menjepit durasi transisi ke 0.000001s ketika setelan itu menyala, dan pada durasi itu
1224
+ * transisinya tidak pernah berjalan: propertinya tersangkut di nilai AWAL, selamanya. Akibatnya
1225
+ * bukan "kurang halus" melainkan keadaan yang salah di layar. Terukur di iPhone 7 tiga kali:
1226
+ * scrim drawer yang tinggal gelap sambil tetap menangkap tap, dan centang checkbox yang tak
1227
+ * pernah digambar padahal inputnya benar-benar tercentang.
1228
+ *
1229
+ * Sebelum aturan ini, kit menetralkan sembilan selektor dari lima puluh enam yang mentransisikan
1230
+ * sesuatu. Empat puluh delapan sisanya ranjau yang menunggu, dan tiga sudah meledak di tangan satu
1231
+ * pemilik app. Menambal yang keempat adalah cara kita sampai di sini.
1232
+ *
1233
+ * `transition: none`, BUKAN `transition-duration: 0.01ms` yang biasa beredar sebagai reset
1234
+ * aksesibilitas: durasi mungil itu persis bentuk yang menyangkut di WebKit. Satu-satunya yang
1235
+ * pernah menunggu `transitionend` di kit ini adalah toast, dan ia sudah punya cadangan
1236
+ * `setTimeout(finish, 400)` untuk kasus event itu tak pernah datang.
1237
+ *
1238
+ * ANIMASI sengaja tidak disentuh: kit memasangnya lewat `prefers-reduced-motion: no-preference`,
1239
+ * jadi ia opt-in dan sudah mati di sini, sementara `--spinner` dan `--progress` punya perlakuan
1240
+ * bernuansa sendiri yang memang harus bertahan.
1241
+ * ======================================================================== */
1242
+ @media (prefers-reduced-motion:reduce){
1243
+ *,*::before,*::after{transition:none !important;}
1244
+ }
1245
+
1220
1246
  /* Freeday. Accordion (native <details>/<summary>, zero-JS) */
1221
1247
  /* position:relative, containing block for out-of-flow panel content (see base.css). NOT redundant
1222
1248
  with the panel's reveal animation: that animation gives the panel a transform (which happens to
package/dist/freeday.css CHANGED
@@ -40,6 +40,32 @@ a { color: var(--color-primary-strong); }
40
40
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
41
41
  }
42
42
 
43
+ /* ===========================================================================
44
+ * Reduce Motion: SETIAP transisi dinetralkan, bukan daftar yang dipelihara tangan.
45
+ *
46
+ * WebKit menjepit durasi transisi ke 0.000001s ketika setelan itu menyala, dan pada durasi itu
47
+ * transisinya tidak pernah berjalan: propertinya tersangkut di nilai AWAL, selamanya. Akibatnya
48
+ * bukan "kurang halus" melainkan keadaan yang salah di layar. Terukur di iPhone 7 tiga kali:
49
+ * scrim drawer yang tinggal gelap sambil tetap menangkap tap, dan centang checkbox yang tak
50
+ * pernah digambar padahal inputnya benar-benar tercentang.
51
+ *
52
+ * Sebelum aturan ini, kit menetralkan sembilan selektor dari lima puluh enam yang mentransisikan
53
+ * sesuatu. Empat puluh delapan sisanya ranjau yang menunggu, dan tiga sudah meledak di tangan satu
54
+ * pemilik app. Menambal yang keempat adalah cara kita sampai di sini.
55
+ *
56
+ * `transition: none`, BUKAN `transition-duration: 0.01ms` yang biasa beredar sebagai reset
57
+ * aksesibilitas: durasi mungil itu persis bentuk yang menyangkut di WebKit. Satu-satunya yang
58
+ * pernah menunggu `transitionend` di kit ini adalah toast, dan ia sudah punya cadangan
59
+ * `setTimeout(finish, 400)` untuk kasus event itu tak pernah datang.
60
+ *
61
+ * ANIMASI sengaja tidak disentuh: kit memasangnya lewat `prefers-reduced-motion: no-preference`,
62
+ * jadi ia opt-in dan sudah mati di sini, sementara `--spinner` dan `--progress` punya perlakuan
63
+ * bernuansa sendiri yang memang harus bertahan.
64
+ * ======================================================================== */
65
+ @media (prefers-reduced-motion:reduce){
66
+ *,*::before,*::after{transition:none !important;}
67
+ }
68
+
43
69
  /* Freeday. Accordion (native <details>/<summary>, zero-JS) */
44
70
  /* position:relative, containing block for out-of-flow panel content (see base.css). NOT redundant
45
71
  with the panel's reveal animation: that animation gives the panel a transform (which happens to
@@ -191,7 +191,7 @@ live docs also have a copy button per component.
191
191
  ```bash
192
192
  npm i @cahyo-dimas/freeday
193
193
  ```
194
- Lands in `package.json` as `"@cahyo-dimas/freeday": "^3.9.3"` (public npm package). `dist/` is
194
+ Lands in `package.json` as `"@cahyo-dimas/freeday": "^3.9.4"` (public npm package). `dist/` is
195
195
  committed and published → no build step; `npm ci` runs without auth.
196
196
 
197
197
  ### 2. Import the CSS + enhancers **once** in your entry (`src/main.ts`)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cahyo-dimas/freeday",
3
- "version": "3.9.3",
3
+ "version": "3.9.4",
4
4
  "description": "Freeday: token-driven, framework-agnostic UI KIT (design source-of-truth).",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/base.css CHANGED
@@ -38,3 +38,29 @@ a { color: var(--color-primary-strong); }
38
38
  @media (prefers-reduced-motion: reduce) {
39
39
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
40
40
  }
41
+
42
+ /* ===========================================================================
43
+ * Reduce Motion: SETIAP transisi dinetralkan, bukan daftar yang dipelihara tangan.
44
+ *
45
+ * WebKit menjepit durasi transisi ke 0.000001s ketika setelan itu menyala, dan pada durasi itu
46
+ * transisinya tidak pernah berjalan: propertinya tersangkut di nilai AWAL, selamanya. Akibatnya
47
+ * bukan "kurang halus" melainkan keadaan yang salah di layar. Terukur di iPhone 7 tiga kali:
48
+ * scrim drawer yang tinggal gelap sambil tetap menangkap tap, dan centang checkbox yang tak
49
+ * pernah digambar padahal inputnya benar-benar tercentang.
50
+ *
51
+ * Sebelum aturan ini, kit menetralkan sembilan selektor dari lima puluh enam yang mentransisikan
52
+ * sesuatu. Empat puluh delapan sisanya ranjau yang menunggu, dan tiga sudah meledak di tangan satu
53
+ * pemilik app. Menambal yang keempat adalah cara kita sampai di sini.
54
+ *
55
+ * `transition: none`, BUKAN `transition-duration: 0.01ms` yang biasa beredar sebagai reset
56
+ * aksesibilitas: durasi mungil itu persis bentuk yang menyangkut di WebKit. Satu-satunya yang
57
+ * pernah menunggu `transitionend` di kit ini adalah toast, dan ia sudah punya cadangan
58
+ * `setTimeout(finish, 400)` untuk kasus event itu tak pernah datang.
59
+ *
60
+ * ANIMASI sengaja tidak disentuh: kit memasangnya lewat `prefers-reduced-motion: no-preference`,
61
+ * jadi ia opt-in dan sudah mati di sini, sementara `--spinner` dan `--progress` punya perlakuan
62
+ * bernuansa sendiri yang memang harus bertahan.
63
+ * ======================================================================== */
64
+ @media (prefers-reduced-motion:reduce){
65
+ *,*::before,*::after{transition:none !important;}
66
+ }