@cahyo-dimas/freeday 3.9.0 → 3.9.1

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,28 @@ 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.1] - 2026-10-26
13
+
14
+ **Satu properti yang tidak boleh ditransisikan, dan sebuah HP yang membuktikannya.** Sesudah drawer
15
+ ditutup di iPhone 7, scrim-nya tinggal tercat di atas halaman sampai halaman dimuat ulang. Yang
16
+ membuat ini terbaca bukan tebakan melainkan halaman diagnostik yang mencetak gaya terhitung di
17
+ perangkat itu sendiri: `--nav-open` sudah lepas, sidebar sudah kembali ke luar layar,
18
+ `pointer-events` sudah `none`, dan backdrop tetap melaporkan `opacity=1 visibility=visible`. Empat
19
+ dari lima nilai berubah dengan benar, dan yang tertinggal hanya dua.
20
+
21
+ ### Fixed
22
+ - **`visibility` dijeda, tidak ditransisikan, di `.fdy-app__backdrop`** (`#087`). Mentransisikannya
23
+ sebagai properti beranimasi berdampingan dengan `opacity` membuat Safari kadang tidak pernah
24
+ menjalankan fade yang menyertainya pada arah visible ke hidden, dan elemennya tinggal tercat.
25
+ Tidak selalu, dan ketidakkonsistenan itu yang menunjuk transisi alih-alih keadaan yang salah.
26
+ Polanya kini `visibility 0s linear <durasi>`, yang mengganti nilainya secara diskret: seketika
27
+ saat membuka, sesudah fade selesai saat menutup. Empat aturan, dua di jalur mobile dan dua di
28
+ mode overlay lebar.
29
+ - **Penjaga yang menolak `visibility` berdurasi di mana pun di CSS yang dikirim.** Statis dan bukan
30
+ uji peramban, sebab mesin yang bisa melihat cacat ini bukan mesin yang menjalankan uji kit.
31
+ Chromium menjalankan transisi itu dengan benar, jadi keduaratus enam uji peramban kit tidak akan
32
+ pernah menangkapnya. Bentuk cacat yang sama dengan `#057`, dan ia masuk lewat pintu yang sama.
33
+
12
34
  ## [3.9.0] - 2026-10-23
13
35
 
14
36
  **Rilis ini dimulai sebagai tiga penambahan dan berakhir dengan lima cacat, dan yang menemukan
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.0-0078d4?style=flat-square)](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.9.0)
8
+ [![Release](https://img.shields.io/badge/release-v3.9.1-0078d4?style=flat-square)](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.9.1)
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.0-0078d4?style=flat-square)](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.9.0)
8
+ [![Release](https://img.shields.io/badge/release-v3.9.1-0078d4?style=flat-square)](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.9.1)
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`.
@@ -1359,8 +1359,8 @@ a { color: var(--color-primary-strong); }
1359
1359
  @media (min-width:721px){
1360
1360
  .fdy-app--nav-overlay .fdy-app__sidebar{position:fixed;top:0;left:0;bottom:0;height:100dvh;width:16rem;z-index:60;transform:translateX(-100%);box-shadow:var(--shadow-4);transition:transform var(--dur-base) var(--ease-standard);}
1361
1361
  .fdy-app--nav-overlay.fdy-app--nav-open .fdy-app__sidebar{transform:translateX(0);}
1362
- .fdy-app--nav-overlay .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility var(--dur-base) var(--ease-standard);}
1363
- .fdy-app--nav-overlay.fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;}
1362
+ .fdy-app--nav-overlay .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear var(--dur-base);}
1363
+ .fdy-app--nav-overlay.fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear 0s;}
1364
1364
  /* In overlay mode the sidebar is out of flow, so the collapse-to-zero-width rule above must not
1365
1365
  also apply — it would fight the transform for the same panel. */
1366
1366
  .fdy-app--nav-overlay.fdy-app--nav-collapsed .fdy-app__sidebar{width:16rem;border-right-width:var(--bw);}
@@ -1389,14 +1389,22 @@ a { color: var(--color-primary-strong); }
1389
1389
  * out is reloading the page. Reported from a real iPhone X; not reproducible in Chromium
1390
1390
  * with either mouse click or `touchscreen.tap()`, which is why no test in this kit or in
1391
1391
  * the consuming app had ever caught it. */
1392
+ /* `visibility` DITUNDA, tidak ditransisikan. Mentransisikannya sebagai properti beranimasi membuat
1393
+ * Safari kadang tidak pernah menjalankan fade `opacity` yang menyertainya saat visible -> hidden:
1394
+ * kelas sudah lepas, `pointer-events` sudah `none`, sidebar sudah kembali ke luar layar, dan scrim
1395
+ * itu TINGGAL TERCAT di atas halaman sampai halaman dimuat ulang. Diukur di iPhone 7 lewat halaman
1396
+ * diagnostik yang mencetak gaya terhitungnya: `opacity=1 visibility=visible pointer-events=none`
1397
+ * dengan `--nav-open` sudah false. Chromium menjalankannya dengan benar, jadi tak ada uji peramban
1398
+ * di kit ini yang bisa melihatnya; yang menjaganya penjaga bentuk CSS di test/css.test.mjs.
1399
+ * Dengan jeda, `visibility` berganti diskret: seketika saat membuka, sesudah fade saat menutup. */
1392
1400
  .fdy-app__backdrop{display:none;cursor:pointer;}
1393
1401
  @media (max-width:720px){
1394
1402
  .fdy-app__sidebar{position:fixed;top:0;left:0;bottom:0;height:100dvh;width:16rem;z-index:60;transform:translateX(-100%);transition:transform var(--dur-base) var(--ease-standard);box-shadow:var(--shadow-4);}
1395
1403
  .fdy-app--nav-open .fdy-app__sidebar{transform:translateX(0);}
1396
1404
  /* --color-scrim, not a literal: this was the last raw colour left in a component stylesheet, and
1397
1405
  it also means the drawer behind the nav dims exactly like every other overlay in the kit. */
1398
- .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility var(--dur-base) var(--ease-standard);}
1399
- .fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;}
1406
+ .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear var(--dur-base);}
1407
+ .fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear 0s;}
1400
1408
  .fdy-app__main{padding:var(--space-5);}
1401
1409
  .fdy-app__topbar{padding:0 var(--space-4);}
1402
1410
  }
package/dist/freeday.css CHANGED
@@ -182,8 +182,8 @@ a { color: var(--color-primary-strong); }
182
182
  @media (min-width:721px){
183
183
  .fdy-app--nav-overlay .fdy-app__sidebar{position:fixed;top:0;left:0;bottom:0;height:100dvh;width:16rem;z-index:60;transform:translateX(-100%);box-shadow:var(--shadow-4);transition:transform var(--dur-base) var(--ease-standard);}
184
184
  .fdy-app--nav-overlay.fdy-app--nav-open .fdy-app__sidebar{transform:translateX(0);}
185
- .fdy-app--nav-overlay .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility var(--dur-base) var(--ease-standard);}
186
- .fdy-app--nav-overlay.fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;}
185
+ .fdy-app--nav-overlay .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear var(--dur-base);}
186
+ .fdy-app--nav-overlay.fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear 0s;}
187
187
  /* In overlay mode the sidebar is out of flow, so the collapse-to-zero-width rule above must not
188
188
  also apply — it would fight the transform for the same panel. */
189
189
  .fdy-app--nav-overlay.fdy-app--nav-collapsed .fdy-app__sidebar{width:16rem;border-right-width:var(--bw);}
@@ -212,14 +212,22 @@ a { color: var(--color-primary-strong); }
212
212
  * out is reloading the page. Reported from a real iPhone X; not reproducible in Chromium
213
213
  * with either mouse click or `touchscreen.tap()`, which is why no test in this kit or in
214
214
  * the consuming app had ever caught it. */
215
+ /* `visibility` DITUNDA, tidak ditransisikan. Mentransisikannya sebagai properti beranimasi membuat
216
+ * Safari kadang tidak pernah menjalankan fade `opacity` yang menyertainya saat visible -> hidden:
217
+ * kelas sudah lepas, `pointer-events` sudah `none`, sidebar sudah kembali ke luar layar, dan scrim
218
+ * itu TINGGAL TERCAT di atas halaman sampai halaman dimuat ulang. Diukur di iPhone 7 lewat halaman
219
+ * diagnostik yang mencetak gaya terhitungnya: `opacity=1 visibility=visible pointer-events=none`
220
+ * dengan `--nav-open` sudah false. Chromium menjalankannya dengan benar, jadi tak ada uji peramban
221
+ * di kit ini yang bisa melihatnya; yang menjaganya penjaga bentuk CSS di test/css.test.mjs.
222
+ * Dengan jeda, `visibility` berganti diskret: seketika saat membuka, sesudah fade saat menutup. */
215
223
  .fdy-app__backdrop{display:none;cursor:pointer;}
216
224
  @media (max-width:720px){
217
225
  .fdy-app__sidebar{position:fixed;top:0;left:0;bottom:0;height:100dvh;width:16rem;z-index:60;transform:translateX(-100%);transition:transform var(--dur-base) var(--ease-standard);box-shadow:var(--shadow-4);}
218
226
  .fdy-app--nav-open .fdy-app__sidebar{transform:translateX(0);}
219
227
  /* --color-scrim, not a literal: this was the last raw colour left in a component stylesheet, and
220
228
  it also means the drawer behind the nav dims exactly like every other overlay in the kit. */
221
- .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility var(--dur-base) var(--ease-standard);}
222
- .fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;}
229
+ .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear var(--dur-base);}
230
+ .fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear 0s;}
223
231
  .fdy-app__main{padding:var(--space-5);}
224
232
  .fdy-app__topbar{padding:0 var(--space-4);}
225
233
  }
@@ -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.0"` (public npm package). `dist/` is
194
+ Lands in `package.json` as `"@cahyo-dimas/freeday": "^3.9.1"` (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.0",
3
+ "version": "3.9.1",
4
4
  "description": "Freeday: token-driven, framework-agnostic UI KIT (design source-of-truth).",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -103,8 +103,8 @@
103
103
  @media (min-width:721px){
104
104
  .fdy-app--nav-overlay .fdy-app__sidebar{position:fixed;top:0;left:0;bottom:0;height:100dvh;width:16rem;z-index:60;transform:translateX(-100%);box-shadow:var(--shadow-4);transition:transform var(--dur-base) var(--ease-standard);}
105
105
  .fdy-app--nav-overlay.fdy-app--nav-open .fdy-app__sidebar{transform:translateX(0);}
106
- .fdy-app--nav-overlay .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility var(--dur-base) var(--ease-standard);}
107
- .fdy-app--nav-overlay.fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;}
106
+ .fdy-app--nav-overlay .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear var(--dur-base);}
107
+ .fdy-app--nav-overlay.fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear 0s;}
108
108
  /* In overlay mode the sidebar is out of flow, so the collapse-to-zero-width rule above must not
109
109
  also apply — it would fight the transform for the same panel. */
110
110
  .fdy-app--nav-overlay.fdy-app--nav-collapsed .fdy-app__sidebar{width:16rem;border-right-width:var(--bw);}
@@ -133,14 +133,22 @@
133
133
  * out is reloading the page. Reported from a real iPhone X; not reproducible in Chromium
134
134
  * with either mouse click or `touchscreen.tap()`, which is why no test in this kit or in
135
135
  * the consuming app had ever caught it. */
136
+ /* `visibility` DITUNDA, tidak ditransisikan. Mentransisikannya sebagai properti beranimasi membuat
137
+ * Safari kadang tidak pernah menjalankan fade `opacity` yang menyertainya saat visible -> hidden:
138
+ * kelas sudah lepas, `pointer-events` sudah `none`, sidebar sudah kembali ke luar layar, dan scrim
139
+ * itu TINGGAL TERCAT di atas halaman sampai halaman dimuat ulang. Diukur di iPhone 7 lewat halaman
140
+ * diagnostik yang mencetak gaya terhitungnya: `opacity=1 visibility=visible pointer-events=none`
141
+ * dengan `--nav-open` sudah false. Chromium menjalankannya dengan benar, jadi tak ada uji peramban
142
+ * di kit ini yang bisa melihatnya; yang menjaganya penjaga bentuk CSS di test/css.test.mjs.
143
+ * Dengan jeda, `visibility` berganti diskret: seketika saat membuka, sesudah fade saat menutup. */
136
144
  .fdy-app__backdrop{display:none;cursor:pointer;}
137
145
  @media (max-width:720px){
138
146
  .fdy-app__sidebar{position:fixed;top:0;left:0;bottom:0;height:100dvh;width:16rem;z-index:60;transform:translateX(-100%);transition:transform var(--dur-base) var(--ease-standard);box-shadow:var(--shadow-4);}
139
147
  .fdy-app--nav-open .fdy-app__sidebar{transform:translateX(0);}
140
148
  /* --color-scrim, not a literal: this was the last raw colour left in a component stylesheet, and
141
149
  it also means the drawer behind the nav dims exactly like every other overlay in the kit. */
142
- .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility var(--dur-base) var(--ease-standard);}
143
- .fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;}
150
+ .fdy-app__backdrop{display:block;position:fixed;inset:0;z-index:55;background:var(--color-scrim);opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear var(--dur-base);}
151
+ .fdy-app--nav-open .fdy-app__backdrop{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--dur-base) var(--ease-standard),visibility 0s linear 0s;}
144
152
  .fdy-app__main{padding:var(--space-5);}
145
153
  .fdy-app__topbar{padding:0 var(--space-4);}
146
154
  }