@cahyo-dimas/freeday 3.9.0 → 3.9.2
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 +51 -0
- package/README.id.md +1 -1
- package/README.md +1 -1
- package/dist/freeday.bundle.css +27 -5
- package/dist/freeday.css +27 -5
- package/docs/getting-started.md +1 -1
- package/package.json +1 -1
- package/src/components/app-shell.css +21 -5
- package/src/components/chart.css +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,57 @@ 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.2] - 2026-10-26
|
|
13
|
+
|
|
14
|
+
**Satu setelan aksesibilitas, dan sebuah scrim yang tak terlihat tetapi tetap menangkap tap.**
|
|
15
|
+
Pemilik app ronda melaporkan dua gejala di iPhone 7 yang tampak terpisah: layar tinggal redup
|
|
16
|
+
sesudah drawer ditutup, dan setiap navigasi butuh dua ketukan. Keduanya satu sebab, dan yang
|
|
17
|
+
memecahkannya dua foto dari perangkat yang sama, identik kecuali Reduce Motion.
|
|
18
|
+
|
|
19
|
+
Dengan setelan itu menyala, transisi terhitung melaporkan `opacity 0.000001s` dan backdrop diam di
|
|
20
|
+
`opacity 0` serta `visibility hidden` selama tiga detik, dengan kelas `--nav-open` hadir di setiap
|
|
21
|
+
sampel. Dengan setelan itu mati, deret yang sama berjalan 0.87 lalu 1.00. WebKit memaksa durasi
|
|
22
|
+
transisi ke satu mikrodetik di bawah Reduce Motion, dan pada durasi itu transisinya tidak pernah
|
|
23
|
+
berjalan: propertinya tersangkut di nilai awal. Bukan lambat, tidak pernah mulai.
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
- **`.fdy-app__backdrop` dinetralkan di bawah `prefers-reduced-motion`** (`#088`). Aturan yang sama
|
|
27
|
+
mengatur `pointer-events` bersama `opacity`, jadi yang tersangkut bukan sekadar tampilan: foto
|
|
28
|
+
perangkat merekam `pointer-events: auto` berdampingan dengan `visibility: hidden`, yaitu scrim
|
|
29
|
+
tak terlihat yang tetap menangkap tap. Ketukan pertama pengguna hilang di sana dan ketukan kedua
|
|
30
|
+
yang bekerja. Sidebar sudah dinetralkan sejak lama; backdrop terlewat, dan backdrop yang
|
|
31
|
+
menggerbangi interaksi.
|
|
32
|
+
- **`.fdy-chart__tip` ikut dinetralkan.** Bentuk cacat yang sama persis, ditemukan oleh audit yang
|
|
33
|
+
sama: transisi yang juga mengatur `pointer-events`, tanpa pagar reduced-motion. `.fdy-tooltip`
|
|
34
|
+
sudah aman sejak lama.
|
|
35
|
+
- **Penjaga yang mengunci pelajarannya, bukan kasusnya.** Setiap aturan yang mentransisikan
|
|
36
|
+
properti sambil mengatur `pointer-events` wajib punya pasangannya di dalam blok
|
|
37
|
+
`prefers-reduced-motion: reduce`. Statis, seperti penjaga `visibility` di 3.9.1, dan karena
|
|
38
|
+
alasan yang sama: mesin yang bisa melihat cacat ini bukan mesin yang menjalankan uji kit, dan di
|
|
39
|
+
sini bahkan bukan mesin mana pun tanpa setelan aksesibilitas itu menyala.
|
|
40
|
+
|
|
41
|
+
## [3.9.1] - 2026-10-26
|
|
42
|
+
|
|
43
|
+
**Satu properti yang tidak boleh ditransisikan, dan sebuah HP yang membuktikannya.** Sesudah drawer
|
|
44
|
+
ditutup di iPhone 7, scrim-nya tinggal tercat di atas halaman sampai halaman dimuat ulang. Yang
|
|
45
|
+
membuat ini terbaca bukan tebakan melainkan halaman diagnostik yang mencetak gaya terhitung di
|
|
46
|
+
perangkat itu sendiri: `--nav-open` sudah lepas, sidebar sudah kembali ke luar layar,
|
|
47
|
+
`pointer-events` sudah `none`, dan backdrop tetap melaporkan `opacity=1 visibility=visible`. Empat
|
|
48
|
+
dari lima nilai berubah dengan benar, dan yang tertinggal hanya dua.
|
|
49
|
+
|
|
50
|
+
### Fixed
|
|
51
|
+
- **`visibility` dijeda, tidak ditransisikan, di `.fdy-app__backdrop`** (`#087`). Mentransisikannya
|
|
52
|
+
sebagai properti beranimasi berdampingan dengan `opacity` membuat Safari kadang tidak pernah
|
|
53
|
+
menjalankan fade yang menyertainya pada arah visible ke hidden, dan elemennya tinggal tercat.
|
|
54
|
+
Tidak selalu, dan ketidakkonsistenan itu yang menunjuk transisi alih-alih keadaan yang salah.
|
|
55
|
+
Polanya kini `visibility 0s linear <durasi>`, yang mengganti nilainya secara diskret: seketika
|
|
56
|
+
saat membuka, sesudah fade selesai saat menutup. Empat aturan, dua di jalur mobile dan dua di
|
|
57
|
+
mode overlay lebar.
|
|
58
|
+
- **Penjaga yang menolak `visibility` berdurasi di mana pun di CSS yang dikirim.** Statis dan bukan
|
|
59
|
+
uji peramban, sebab mesin yang bisa melihat cacat ini bukan mesin yang menjalankan uji kit.
|
|
60
|
+
Chromium menjalankan transisi itu dengan benar, jadi keduaratus enam uji peramban kit tidak akan
|
|
61
|
+
pernah menangkapnya. Bentuk cacat yang sama dengan `#057`, dan ia masuk lewat pintu yang sama.
|
|
62
|
+
|
|
12
63
|
## [3.9.0] - 2026-10-23
|
|
13
64
|
|
|
14
65
|
**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
|
[](https://cahyo-dimas.github.io/freeday-ui-kit/)
|
|
8
|
-
[](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.9.2)
|
|
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
|
[](https://cahyo-dimas.github.io/freeday-ui-kit/)
|
|
8
|
-
[](https://github.com/cahyo-dimas/freeday-ui-kit/tree/v3.9.2)
|
|
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`.
|
package/dist/freeday.bundle.css
CHANGED
|
@@ -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)
|
|
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,18 +1389,34 @@ 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)
|
|
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
|
}
|
|
1403
|
-
|
|
1411
|
+
/* Backdrop ikut dinetralkan, dan ini BUKAN soal selera gerak. WebKit memaksa durasi transisi ke
|
|
1412
|
+
* 0.000001s saat Reduce Motion menyala, dan pada durasi itu transisinya tidak pernah berjalan:
|
|
1413
|
+
* propertinya tersangkut di nilai AWAL selamanya. Diukur di iPhone 7 dengan setelan itu menyala,
|
|
1414
|
+
* tiga detik sesudah drawer terbuka, dengan kelas `--nav-open` SUDAH terpasang di setiap sampel:
|
|
1415
|
+
* `opacity` diam di 0 dan `visibility` diam di `hidden`, sementara `pointer-events` sudah `auto`.
|
|
1416
|
+
* Scrim yang tak terlihat tetapi menangkap tap, jadi ketukan pertama pengguna hilang dan ketukan
|
|
1417
|
+
* kedua yang bekerja. Setelan yang sama dimatikan, deret yang sama berjalan 0.87 lalu 1.00.
|
|
1418
|
+
* Sidebar sudah dinetralkan sejak lama; backdrop terlewat, dan ia yang menggerbangi interaksi. */
|
|
1419
|
+
@media (prefers-reduced-motion:reduce){.fdy-app__sidebar{transition:none;}.fdy-app__backdrop{transition:none;}}
|
|
1404
1420
|
|
|
1405
1421
|
/* Freeday. App bar (standalone top bar: brand · actions · spacer).
|
|
1406
1422
|
* Distinct from .fdy-app__topbar (which is bound to the shell grid). Use anywhere;
|
|
@@ -2027,6 +2043,12 @@ a { color: var(--color-primary-strong); }
|
|
|
2027
2043
|
.fdy-chart-xy__bar{transition:opacity var(--dur-fast) var(--ease-standard);}
|
|
2028
2044
|
.fdy-chart-xy__band{fill:transparent;cursor:pointer;}
|
|
2029
2045
|
|
|
2046
|
+
/* Sama sebabnya dengan `.fdy-app__backdrop`: transisi yang juga menggerbangi `pointer-events` dapat
|
|
2047
|
+
* tersangkut di nilai awal ketika WebKit memaksa durasinya ke nol di bawah Reduce Motion, dan yang
|
|
2048
|
+
* tersisa adalah elemen tak terlihat yang tetap menangkap tap. Tooltip sudah dinetralkan sejak lama
|
|
2049
|
+
* untuk alasan yang sama; tip chart terlewat. */
|
|
2050
|
+
@media (prefers-reduced-motion:reduce){.fdy-chart__tip{transition:none;}}
|
|
2051
|
+
|
|
2030
2052
|
/* Freeday. Chip (tag / removable filter) */
|
|
2031
2053
|
.fdy-chip{display:inline-flex;align-items:center;gap:var(--space-2);height:1.75rem;padding:0 var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text);background:var(--color-surface-3);border:var(--bw) solid var(--color-border);}
|
|
2032
2054
|
.fdy-chip--primary{color:var(--color-primary-strong);background:var(--color-primary-soft);border-color:rgba(var(--color-primary-rgb),.22);}
|
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)
|
|
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,18 +212,34 @@ 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)
|
|
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
|
}
|
|
226
|
-
|
|
234
|
+
/* Backdrop ikut dinetralkan, dan ini BUKAN soal selera gerak. WebKit memaksa durasi transisi ke
|
|
235
|
+
* 0.000001s saat Reduce Motion menyala, dan pada durasi itu transisinya tidak pernah berjalan:
|
|
236
|
+
* propertinya tersangkut di nilai AWAL selamanya. Diukur di iPhone 7 dengan setelan itu menyala,
|
|
237
|
+
* tiga detik sesudah drawer terbuka, dengan kelas `--nav-open` SUDAH terpasang di setiap sampel:
|
|
238
|
+
* `opacity` diam di 0 dan `visibility` diam di `hidden`, sementara `pointer-events` sudah `auto`.
|
|
239
|
+
* Scrim yang tak terlihat tetapi menangkap tap, jadi ketukan pertama pengguna hilang dan ketukan
|
|
240
|
+
* kedua yang bekerja. Setelan yang sama dimatikan, deret yang sama berjalan 0.87 lalu 1.00.
|
|
241
|
+
* Sidebar sudah dinetralkan sejak lama; backdrop terlewat, dan ia yang menggerbangi interaksi. */
|
|
242
|
+
@media (prefers-reduced-motion:reduce){.fdy-app__sidebar{transition:none;}.fdy-app__backdrop{transition:none;}}
|
|
227
243
|
|
|
228
244
|
/* Freeday. App bar (standalone top bar: brand · actions · spacer).
|
|
229
245
|
* Distinct from .fdy-app__topbar (which is bound to the shell grid). Use anywhere;
|
|
@@ -850,6 +866,12 @@ a { color: var(--color-primary-strong); }
|
|
|
850
866
|
.fdy-chart-xy__bar{transition:opacity var(--dur-fast) var(--ease-standard);}
|
|
851
867
|
.fdy-chart-xy__band{fill:transparent;cursor:pointer;}
|
|
852
868
|
|
|
869
|
+
/* Sama sebabnya dengan `.fdy-app__backdrop`: transisi yang juga menggerbangi `pointer-events` dapat
|
|
870
|
+
* tersangkut di nilai awal ketika WebKit memaksa durasinya ke nol di bawah Reduce Motion, dan yang
|
|
871
|
+
* tersisa adalah elemen tak terlihat yang tetap menangkap tap. Tooltip sudah dinetralkan sejak lama
|
|
872
|
+
* untuk alasan yang sama; tip chart terlewat. */
|
|
873
|
+
@media (prefers-reduced-motion:reduce){.fdy-chart__tip{transition:none;}}
|
|
874
|
+
|
|
853
875
|
/* Freeday. Chip (tag / removable filter) */
|
|
854
876
|
.fdy-chip{display:inline-flex;align-items:center;gap:var(--space-2);height:1.75rem;padding:0 var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--color-text);background:var(--color-surface-3);border:var(--bw) solid var(--color-border);}
|
|
855
877
|
.fdy-chip--primary{color:var(--color-primary-strong);background:var(--color-primary-soft);border-color:rgba(var(--color-primary-rgb),.22);}
|
package/docs/getting-started.md
CHANGED
|
@@ -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.
|
|
194
|
+
Lands in `package.json` as `"@cahyo-dimas/freeday": "^3.9.2"` (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
|
@@ -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)
|
|
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,15 +133,31 @@
|
|
|
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)
|
|
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
|
}
|
|
147
|
-
|
|
155
|
+
/* Backdrop ikut dinetralkan, dan ini BUKAN soal selera gerak. WebKit memaksa durasi transisi ke
|
|
156
|
+
* 0.000001s saat Reduce Motion menyala, dan pada durasi itu transisinya tidak pernah berjalan:
|
|
157
|
+
* propertinya tersangkut di nilai AWAL selamanya. Diukur di iPhone 7 dengan setelan itu menyala,
|
|
158
|
+
* tiga detik sesudah drawer terbuka, dengan kelas `--nav-open` SUDAH terpasang di setiap sampel:
|
|
159
|
+
* `opacity` diam di 0 dan `visibility` diam di `hidden`, sementara `pointer-events` sudah `auto`.
|
|
160
|
+
* Scrim yang tak terlihat tetapi menangkap tap, jadi ketukan pertama pengguna hilang dan ketukan
|
|
161
|
+
* kedua yang bekerja. Setelan yang sama dimatikan, deret yang sama berjalan 0.87 lalu 1.00.
|
|
162
|
+
* Sidebar sudah dinetralkan sejak lama; backdrop terlewat, dan ia yang menggerbangi interaksi. */
|
|
163
|
+
@media (prefers-reduced-motion:reduce){.fdy-app__sidebar{transition:none;}.fdy-app__backdrop{transition:none;}}
|
package/src/components/chart.css
CHANGED
|
@@ -53,3 +53,9 @@
|
|
|
53
53
|
.fdy-chart-xy__dot{stroke:var(--color-surface);stroke-width:1;}
|
|
54
54
|
.fdy-chart-xy__bar{transition:opacity var(--dur-fast) var(--ease-standard);}
|
|
55
55
|
.fdy-chart-xy__band{fill:transparent;cursor:pointer;}
|
|
56
|
+
|
|
57
|
+
/* Sama sebabnya dengan `.fdy-app__backdrop`: transisi yang juga menggerbangi `pointer-events` dapat
|
|
58
|
+
* tersangkut di nilai awal ketika WebKit memaksa durasinya ke nol di bawah Reduce Motion, dan yang
|
|
59
|
+
* tersisa adalah elemen tak terlihat yang tetap menangkap tap. Tooltip sudah dinetralkan sejak lama
|
|
60
|
+
* untuk alasan yang sama; tip chart terlewat. */
|
|
61
|
+
@media (prefers-reduced-motion:reduce){.fdy-chart__tip{transition:none;}}
|