@the-inclusionist/engine 8.0.0 → 10.0.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/README.md +89 -78
- package/app/css/style.css +584 -374
- package/app/public/vendor/fonts/bitter-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/bitter-var.woff2 +0 -0
- package/app/public/vendor/fonts/bodonimoda-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/bodonimoda-var.woff2 +0 -0
- package/app/public/vendor/fonts/cat-abril_fatface-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-abril_fatface-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-adlam_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-adlam_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-agu_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-agu_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-alfa_slab_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-alfa_slab_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-are_you_serious-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-are_you_serious-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-asimovian-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-asimovian-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-atkinson_hyperlegible_next-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-atkinson_hyperlegible_next-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bakbak_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bakbak_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bangers-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bangers-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-barriecito-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-barriecito-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-berkshire_swash-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-berkshire_swash-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bevan-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bevan-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bitcount-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bitcount-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bowlby_one_sc-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bowlby_one_sc-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bungee_shade-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-bungee_shade-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-charm-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cherry_bomb_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cherry_bomb_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chokokutai-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chokokutai-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chonburi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-chonburi-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-climate_crisis-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-climate_crisis-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-cookie-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-dela_gothic_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-dela_gothic_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-fascinate_inline-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-fascinate_inline-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ga_maamli-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ga_maamli-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-itim-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-itim-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-jacquard_24-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-jacquard_24-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kablammo-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kablammo-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-kalam-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-katibeh-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-katibeh-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lemonada-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lemonada-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lilita_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lilita_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lobster-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-lobster-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-luckiest_guy-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-luckiest_guy-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-marhey-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-marhey-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-modak-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-modak-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-momo_signature-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-momo_signature-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monofett-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monofett-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monomakh-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monomakh-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monoton-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-monoton-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-nerko_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-nerko_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_adlam-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_adlam-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_arabic-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_arabic-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_devanagari-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_devanagari-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_hebrew-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_hebrew-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_jp-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_jp-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_khmer-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_khmer-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_kr-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_kr-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_sc-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_sc-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_thai-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-noto_sans_thai-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ole-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ole-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pacifico-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pacifico-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-patrick_hand-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-patrick_hand-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-petit_formal_script-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-petit_formal_script-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pixelify_sans-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-pixelify_sans-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-plaster-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-plaster-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ar_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_at-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_at_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_nsw-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_nsw_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_qld-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_qld_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_sa-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_sa_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_tas-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_tas_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_vic-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_au_vic_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_vlg-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_vlg_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_wal-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_be_wal_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_br_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ca_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_co_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cu_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_cz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_grund-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_grund_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_la-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_la_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_sas-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_sas_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_va-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_de_va_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_loopet-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_loopet_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_uloopet-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_dk_uloopet_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_es_deco_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_es_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_moderne-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_moderne_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_trad-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_fr_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_gb_j_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_gb_s_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_lijeva-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hr_lijeva_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hu-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_hu_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_id-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_id_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ie-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ie_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_in-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_in_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_is-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_is_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_moderna-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_moderna_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_trad-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_it_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_mx_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ng_modern-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ng_modern_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nl-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_no-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_no_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_basic-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_basic_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_nz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pe_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pl-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pl_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_pt_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ro-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_ro_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_sk-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_sk_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_tz-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_tz_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_us_modern_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_us_trad_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_vn-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_vn_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_za-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-playwrite_za_guides-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-potta_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-potta_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranchers-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranchers-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ranga-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-risque-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-risque-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-rowdies-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruge_boogie-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruge_boogie-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruslan_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-ruslan_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sacramento-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sacramento-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sancreek-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sancreek-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sankofa_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sankofa_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sedgwick_ave_display-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sedgwick_ave_display-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-shantell_sans-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-shantell_sans-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-smokum-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-smokum-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-solitreo-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-solitreo-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-spicy_rice-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-spicy_rice-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sriracha-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-sriracha-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-srisakdi-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-stix_two_math-400-0.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-tillana-700.woff2 +0 -0
- package/app/public/vendor/fonts/cat-titan_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-titan_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yatra_one-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yatra_one-400.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yomogi-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/cat-yomogi-400.woff2 +0 -0
- package/app/public/vendor/fonts/dmserifdisplay-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/dmserifdisplay-400.woff2 +0 -0
- package/app/public/vendor/fonts/domine-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/domine-var.woff2 +0 -0
- package/app/public/vendor/fonts/fraunces-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/fraunces-var.woff2 +0 -0
- package/app/public/vendor/fonts/fredoka-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/fredoka-var.woff2 +0 -0
- package/app/public/vendor/fonts/jakarta-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/jakarta-var.woff2 +0 -0
- package/app/public/vendor/fonts/lora-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/lora-var.woff2 +0 -0
- package/app/public/vendor/fonts/merriweather-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/merriweather-var.woff2 +0 -0
- package/app/public/vendor/fonts/notosans-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/notosans-var.woff2 +0 -0
- package/app/public/vendor/fonts/nunito-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/nunito-var.woff2 +0 -0
- package/app/public/vendor/fonts/playfair-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/playfair-var.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-cu.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-es-deco.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-es.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-gb-j.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-gb-s.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-pe.woff2 +0 -0
- package/app/public/vendor/fonts/playwrite-pt.woff2 +0 -0
- package/app/public/vendor/fonts/quicksand-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/quicksand-var.woff2 +0 -0
- package/app/public/vendor/fonts/robotoflex-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/robotoflex-var.woff2 +0 -0
- package/app/public/vendor/fonts/sora-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/sora-var.woff2 +0 -0
- package/app/public/vendor/fonts/spacegrotesk-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spacegrotesk-var.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-400.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/spectral-700.woff2 +0 -0
- package/app/public/vendor/fonts/teachers-var-ext.woff2 +0 -0
- package/app/public/vendor/fonts/teachers-var.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-400-ext.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-400.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-700-ext.woff2 +0 -0
- package/app/public/vendor/fonts/ubuntu-700.woff2 +0 -0
- package/app/public/vendor/fonts.css +1167 -51
- package/dist-pkg/boot/create-game.d.ts +467 -162
- package/dist-pkg/boot/create-game.js +3563 -426
- package/dist-pkg/core/a11y-sr.d.ts +25 -3
- package/dist-pkg/core/a11y-sr.js +40 -19
- package/dist-pkg/core/accessible-label.d.ts +17 -0
- package/dist-pkg/core/accessible-label.js +37 -0
- package/dist-pkg/core/accommodation-subjects.d.ts +26 -0
- package/dist-pkg/core/accommodation-subjects.js +32 -0
- package/dist-pkg/core/accommodations.d.ts +107 -0
- package/dist-pkg/core/accommodations.js +178 -0
- package/dist-pkg/core/actions.d.ts +75 -51
- package/dist-pkg/core/actions.js +98 -69
- package/dist-pkg/core/calm-mode.d.ts +31 -0
- package/dist-pkg/core/calm-mode.js +47 -0
- package/dist-pkg/core/camera-cycle.d.ts +15 -0
- package/dist-pkg/core/camera-cycle.js +7 -0
- package/dist-pkg/core/caption-duration.d.ts +15 -0
- package/dist-pkg/core/caption-duration.js +19 -0
- package/dist-pkg/core/cartridge-problems.d.ts +34 -0
- package/dist-pkg/core/cartridge-problems.js +53 -0
- package/dist-pkg/core/constants.d.ts +0 -54
- package/dist-pkg/core/constants.js +9 -76
- package/dist-pkg/core/contract.d.ts +143 -163
- package/dist-pkg/core/contract.js +223 -207
- package/dist-pkg/core/dom-query.d.ts +4 -4
- package/dist-pkg/core/dom-query.js +12 -20
- package/dist-pkg/core/entity.d.ts +62 -77
- package/dist-pkg/core/entity.js +18 -32
- package/dist-pkg/core/escape-html.d.ts +9 -10
- package/dist-pkg/core/escape-html.js +16 -20
- package/dist-pkg/core/flash-threshold.d.ts +17 -0
- package/dist-pkg/core/flash-threshold.js +113 -0
- package/dist-pkg/core/game-speed.d.ts +11 -0
- package/dist-pkg/core/game-speed.js +16 -0
- package/dist-pkg/core/genres.d.ts +20 -0
- package/dist-pkg/core/genres.js +44 -0
- package/dist-pkg/core/i18n.d.ts +87 -41
- package/dist-pkg/core/i18n.js +206 -153
- package/dist-pkg/core/loop.d.ts +17 -6
- package/dist-pkg/core/loop.js +26 -26
- package/dist-pkg/core/pause-icon-catalogue.d.ts +15 -0
- package/dist-pkg/core/pause-icon-catalogue.js +54 -0
- package/dist-pkg/core/ring.d.ts +17 -0
- package/dist-pkg/core/ring.js +29 -0
- package/dist-pkg/core/rng.d.ts +7 -12
- package/dist-pkg/core/rng.js +23 -53
- package/dist-pkg/core/route.d.ts +26 -26
- package/dist-pkg/core/route.js +126 -121
- package/dist-pkg/core/scenes.d.ts +37 -40
- package/dist-pkg/core/scenes.js +41 -43
- package/dist-pkg/core/screens.d.ts +4 -4
- package/dist-pkg/core/screens.js +11 -16
- package/dist-pkg/core/setting-defaults.d.ts +61 -0
- package/dist-pkg/core/setting-defaults.js +66 -0
- package/dist-pkg/core/speech-rate.d.ts +29 -0
- package/dist-pkg/core/speech-rate.js +47 -0
- package/dist-pkg/core/state.d.ts +118 -118
- package/dist-pkg/core/state.js +322 -297
- package/dist-pkg/core/visual-cycles.d.ts +30 -0
- package/dist-pkg/core/visual-cycles.js +52 -0
- package/dist-pkg/core/visual-state.d.ts +13 -0
- package/dist-pkg/core/visual-state.js +6 -0
- package/dist-pkg/educational/activities-registry.d.ts +1 -1
- package/dist-pkg/educational/activities-registry.js +9 -8
- package/dist-pkg/educational/adaptive-engine.d.ts +11 -11
- package/dist-pkg/educational/adaptive-engine.js +17 -17
- package/dist-pkg/educational/segment-bar.d.ts +12 -12
- package/dist-pkg/educational/segment-bar.js +9 -9
- package/dist-pkg/i18n/en.js +321 -215
- package/dist-pkg/i18n/es.js +320 -215
- package/dist-pkg/i18n/pt.js +342 -215
- package/dist-pkg/input/default-bindings.d.ts +37 -38
- package/dist-pkg/input/default-bindings.js +127 -144
- package/dist-pkg/input/devices.d.ts +7 -7
- package/dist-pkg/input/devices.js +17 -16
- package/dist-pkg/input/edges.d.ts +23 -32
- package/dist-pkg/input/edges.js +23 -28
- package/dist-pkg/input/empathy-filter.d.ts +22 -0
- package/dist-pkg/input/empathy-filter.js +34 -0
- package/dist-pkg/input/face-map.d.ts +96 -0
- package/dist-pkg/input/face-map.js +255 -0
- package/dist-pkg/input/face-signals.d.ts +40 -0
- package/dist-pkg/input/face-signals.js +48 -0
- package/dist-pkg/input/gamepad.d.ts +164 -145
- package/dist-pkg/input/gamepad.js +351 -559
- package/dist-pkg/input/gaze-cycle.d.ts +64 -0
- package/dist-pkg/input/gaze-cycle.js +133 -0
- package/dist-pkg/input/gaze-relative.d.ts +68 -0
- package/dist-pkg/input/gaze-relative.js +142 -0
- package/dist-pkg/input/hand-map.d.ts +28 -0
- package/dist-pkg/input/hand-map.js +142 -0
- package/dist-pkg/input/input-cooldown.d.ts +17 -0
- package/dist-pkg/input/input-cooldown.js +39 -0
- package/dist-pkg/input/keyboard-runtime.d.ts +18 -20
- package/dist-pkg/input/keyboard-runtime.js +23 -27
- package/dist-pkg/input/keyboard.d.ts +68 -62
- package/dist-pkg/input/keyboard.js +83 -105
- package/dist-pkg/input/keydown.d.ts +124 -132
- package/dist-pkg/input/keydown.js +283 -288
- package/dist-pkg/input/latch-edge.d.ts +25 -21
- package/dist-pkg/input/latch-edge.js +33 -35
- package/dist-pkg/input/latch-scope.d.ts +43 -47
- package/dist-pkg/input/latch-scope.js +66 -75
- package/dist-pkg/input/latch-store.d.ts +28 -29
- package/dist-pkg/input/latch-store.js +44 -47
- package/dist-pkg/input/latch-sync.d.ts +28 -29
- package/dist-pkg/input/latch-sync.js +25 -25
- package/dist-pkg/input/latch.d.ts +14 -17
- package/dist-pkg/input/latch.js +29 -37
- package/dist-pkg/input/pad-defaults.d.ts +13 -16
- package/dist-pkg/input/pad-defaults.js +21 -28
- package/dist-pkg/input/pad-reading.d.ts +76 -0
- package/dist-pkg/input/pad-reading.js +164 -0
- package/dist-pkg/input/pad-wizard.d.ts +96 -0
- package/dist-pkg/input/pad-wizard.js +205 -0
- package/dist-pkg/input/pointer-space.d.ts +19 -20
- package/dist-pkg/input/pointer-space.js +27 -32
- package/dist-pkg/input/pointer.d.ts +39 -40
- package/dist-pkg/input/pointer.js +42 -45
- package/dist-pkg/input/state.d.ts +101 -89
- package/dist-pkg/input/state.js +54 -134
- package/dist-pkg/input/switch-scan.d.ts +42 -0
- package/dist-pkg/input/switch-scan.js +54 -0
- package/dist-pkg/input/synthetic-source.d.ts +42 -0
- package/dist-pkg/input/synthetic-source.js +57 -0
- package/dist-pkg/input/touch-bindings.d.ts +127 -113
- package/dist-pkg/input/touch-bindings.js +158 -173
- package/dist-pkg/input/touch.d.ts +130 -70
- package/dist-pkg/input/touch.js +321 -123
- package/dist-pkg/input/transport-in-use.d.ts +107 -0
- package/dist-pkg/input/transport-in-use.js +130 -0
- package/dist-pkg/input/transports.d.ts +96 -114
- package/dist-pkg/input/transports.js +104 -106
- package/dist-pkg/input/virtual-controller.d.ts +46 -0
- package/dist-pkg/input/virtual-controller.js +41 -0
- package/dist-pkg/input/vocabulary-migration.d.ts +50 -49
- package/dist-pkg/input/vocabulary-migration.js +80 -79
- package/dist-pkg/input/voice-map.d.ts +43 -0
- package/dist-pkg/input/voice-map.js +125 -0
- package/dist-pkg/platform/audio-ambient.d.ts +13 -1
- package/dist-pkg/platform/audio-ambient.js +11 -13
- package/dist-pkg/platform/audio-earcons.d.ts +20 -19
- package/dist-pkg/platform/audio-earcons.js +51 -42
- package/dist-pkg/platform/audio-jingles.js +9 -10
- package/dist-pkg/platform/audio-mixer.d.ts +14 -2
- package/dist-pkg/platform/audio-mixer.js +36 -39
- package/dist-pkg/platform/audio-sonar.d.ts +96 -113
- package/dist-pkg/platform/audio-sonar.js +245 -238
- package/dist-pkg/platform/audio.d.ts +53 -19
- package/dist-pkg/platform/audio.js +161 -169
- package/dist-pkg/platform/flash-sampler.d.ts +19 -0
- package/dist-pkg/platform/flash-sampler.js +79 -0
- package/dist-pkg/platform/guide-intensity.d.ts +26 -27
- package/dist-pkg/platform/guide-intensity.js +50 -52
- package/dist-pkg/platform/heavy-catalogue.d.ts +31 -0
- package/dist-pkg/platform/heavy-catalogue.js +223 -0
- package/dist-pkg/platform/heavy-mirror.d.ts +26 -0
- package/dist-pkg/platform/heavy-mirror.js +76 -0
- package/dist-pkg/platform/heavy.d.ts +104 -0
- package/dist-pkg/platform/heavy.js +169 -0
- package/dist-pkg/platform/interruptible-speech.d.ts +16 -16
- package/dist-pkg/platform/interruptible-speech.js +50 -51
- package/dist-pkg/platform/kokoro-port.d.ts +27 -0
- package/dist-pkg/platform/kokoro-port.js +50 -0
- package/dist-pkg/platform/kokoro-runtime.d.ts +20 -0
- package/dist-pkg/platform/kokoro-runtime.js +52 -0
- package/dist-pkg/platform/kokoro.d.ts +70 -0
- package/dist-pkg/platform/kokoro.js +133 -0
- package/dist-pkg/platform/listener-scope.d.ts +12 -0
- package/dist-pkg/platform/listener-scope.js +81 -0
- package/dist-pkg/platform/locale-host.d.ts +10 -0
- package/dist-pkg/platform/locale-host.js +34 -0
- package/dist-pkg/platform/microphone.d.ts +51 -0
- package/dist-pkg/platform/microphone.js +118 -0
- package/dist-pkg/platform/onnx-runtime.d.ts +34 -0
- package/dist-pkg/platform/onnx-runtime.js +42 -0
- package/dist-pkg/platform/reading-in-worker.d.ts +40 -0
- package/dist-pkg/platform/reading-in-worker.js +87 -0
- package/dist-pkg/platform/reading-model.d.ts +73 -0
- package/dist-pkg/platform/reading-model.js +247 -0
- package/dist-pkg/platform/reading-runtime.d.ts +24 -0
- package/dist-pkg/platform/reading-runtime.js +159 -0
- package/dist-pkg/platform/reading-worker.d.ts +41 -0
- package/dist-pkg/platform/reading-worker.js +58 -0
- package/dist-pkg/platform/reading.d.ts +69 -0
- package/dist-pkg/platform/reading.js +128 -0
- package/dist-pkg/platform/speech-recognition.d.ts +51 -0
- package/dist-pkg/platform/speech-recognition.js +84 -0
- package/dist-pkg/platform/speech.d.ts +14 -1
- package/dist-pkg/platform/speech.js +13 -13
- package/dist-pkg/platform/storage-keys.d.ts +96 -0
- package/dist-pkg/platform/storage-keys.js +106 -0
- package/dist-pkg/platform/storage.d.ts +46 -111
- package/dist-pkg/platform/storage.js +104 -169
- package/dist-pkg/platform/tts.d.ts +51 -38
- package/dist-pkg/platform/tts.js +217 -119
- package/dist-pkg/platform/vision-loop.d.ts +23 -0
- package/dist-pkg/platform/vision-loop.js +56 -0
- package/dist-pkg/platform/vision.d.ts +132 -0
- package/dist-pkg/platform/vision.js +117 -0
- package/dist-pkg/platform/voice-listener.d.ts +36 -0
- package/dist-pkg/platform/voice-listener.js +88 -0
- package/dist-pkg/platform/voice-plan.d.ts +6 -102
- package/dist-pkg/platform/voice-plan.js +9 -151
- package/dist-pkg/platform/vosk-runtime.d.ts +71 -0
- package/dist-pkg/platform/vosk-runtime.js +93 -0
- package/dist-pkg/render/canvas.d.ts +13 -7
- package/dist-pkg/render/canvas.js +13 -13
- package/dist-pkg/render/crt.d.ts +46 -12
- package/dist-pkg/render/crt.js +82 -80
- package/dist-pkg/render/cvd-matrices.d.ts +18 -18
- package/dist-pkg/render/cvd-matrices.js +33 -38
- package/dist-pkg/render/hc-role-data.d.ts +7 -7
- package/dist-pkg/render/hc-role-data.js +14 -14
- package/dist-pkg/render/high-contrast.d.ts +66 -54
- package/dist-pkg/render/high-contrast.js +221 -216
- package/dist-pkg/render/low-vision-drawing.d.ts +5 -0
- package/dist-pkg/render/low-vision-drawing.js +46 -0
- package/dist-pkg/render/lq-filter.d.ts +32 -20
- package/dist-pkg/render/lq-filter.js +59 -65
- package/dist-pkg/render/port.d.ts +86 -88
- package/dist-pkg/render/port.js +17 -23
- package/dist-pkg/render/screen-pipeline.d.ts +42 -42
- package/dist-pkg/render/screen-pipeline.js +80 -87
- package/dist-pkg/render/sprite-fx.d.ts +2 -1
- package/dist-pkg/render/sprite-fx.js +16 -14
- package/dist-pkg/render/viewports.d.ts +20 -15
- package/dist-pkg/render/viewports.js +83 -114
- package/dist-pkg/render/viz-axes-labels.d.ts +47 -0
- package/dist-pkg/render/viz-axes-labels.js +88 -0
- package/dist-pkg/render/viz-axes.d.ts +80 -86
- package/dist-pkg/render/viz-axes.js +115 -116
- package/dist-pkg/render/viz-modes.d.ts +28 -29
- package/dist-pkg/render/viz-modes.js +40 -45
- package/dist-pkg/render/viz-refusal.d.ts +32 -0
- package/dist-pkg/render/viz-refusal.js +57 -0
- package/dist-pkg/render/viz-setters.d.ts +104 -66
- package/dist-pkg/render/viz-setters.js +182 -191
- package/dist-pkg/ui/aac-sets.d.ts +40 -0
- package/dist-pkg/ui/aac-sets.js +49 -0
- package/dist-pkg/ui/audio-choices.d.ts +63 -0
- package/dist-pkg/ui/audio-choices.js +94 -0
- package/dist-pkg/ui/audio-rows-that-apply.d.ts +12 -0
- package/dist-pkg/ui/audio-rows-that-apply.js +43 -0
- package/dist-pkg/ui/camera-control.d.ts +6 -0
- package/dist-pkg/ui/camera-control.js +14 -0
- package/dist-pkg/ui/changed-mark.d.ts +9 -8
- package/dist-pkg/ui/changed-mark.js +22 -53
- package/dist-pkg/ui/control-choices.d.ts +37 -0
- package/dist-pkg/ui/control-choices.js +84 -0
- package/dist-pkg/ui/debug-panel.d.ts +59 -43
- package/dist-pkg/ui/debug-panel.js +68 -69
- package/dist-pkg/ui/dom.d.ts +10 -14
- package/dist-pkg/ui/dom.js +10 -47
- package/dist-pkg/ui/drawing-problems.d.ts +25 -0
- package/dist-pkg/ui/drawing-problems.js +93 -0
- package/dist-pkg/ui/eye-control.d.ts +36 -0
- package/dist-pkg/ui/eye-control.js +178 -0
- package/dist-pkg/ui/face-control.d.ts +25 -0
- package/dist-pkg/ui/face-control.js +183 -0
- package/dist-pkg/ui/focus-trap.d.ts +39 -49
- package/dist-pkg/ui/focus-trap.js +56 -65
- package/dist-pkg/ui/fonts.d.ts +118 -63
- package/dist-pkg/ui/fonts.js +267 -111
- package/dist-pkg/ui/game-options.d.ts +42 -0
- package/dist-pkg/ui/game-options.js +138 -0
- package/dist-pkg/ui/gaze-overlay.d.ts +64 -0
- package/dist-pkg/ui/gaze-overlay.js +165 -0
- package/dist-pkg/ui/hand-control.d.ts +25 -0
- package/dist-pkg/ui/hand-control.js +143 -0
- package/dist-pkg/ui/help-panel.d.ts +76 -0
- package/dist-pkg/ui/help-panel.js +232 -0
- package/dist-pkg/ui/hud-bands.d.ts +45 -0
- package/dist-pkg/ui/hud-bands.js +108 -0
- package/dist-pkg/ui/hud.d.ts +73 -70
- package/dist-pkg/ui/hud.js +94 -98
- package/dist-pkg/ui/item-announcement.d.ts +13 -12
- package/dist-pkg/ui/item-announcement.js +25 -26
- package/dist-pkg/ui/latch-refusal.d.ts +22 -21
- package/dist-pkg/ui/latch-refusal.js +37 -37
- package/dist-pkg/ui/layout.d.ts +103 -28
- package/dist-pkg/ui/layout.js +114 -99
- package/dist-pkg/ui/locale-flags.d.ts +16 -0
- package/dist-pkg/ui/locale-flags.js +30 -0
- package/dist-pkg/ui/loop-crash.d.ts +17 -17
- package/dist-pkg/ui/loop-crash.js +33 -62
- package/dist-pkg/ui/menu-intent.d.ts +32 -0
- package/dist-pkg/ui/menu-intent.js +54 -0
- package/dist-pkg/ui/menu-items.d.ts +10 -0
- package/dist-pkg/ui/menu-items.js +22 -0
- package/dist-pkg/ui/menu-nav.d.ts +60 -90
- package/dist-pkg/ui/menu-nav.js +301 -274
- package/dist-pkg/ui/mobility-choices.d.ts +26 -0
- package/dist-pkg/ui/mobility-choices.js +41 -0
- package/dist-pkg/ui/motion-choices.d.ts +31 -0
- package/dist-pkg/ui/motion-choices.js +68 -0
- package/dist-pkg/ui/motion-scene.d.ts +24 -19
- package/dist-pkg/ui/motion-scene.js +29 -61
- package/dist-pkg/ui/mount-panel.d.ts +81 -0
- package/dist-pkg/ui/mount-panel.js +61 -0
- package/dist-pkg/ui/panel-shell.d.ts +65 -31
- package/dist-pkg/ui/panel-shell.js +92 -66
- package/dist-pkg/ui/panel-widgets.d.ts +116 -0
- package/dist-pkg/ui/panel-widgets.js +208 -0
- package/dist-pkg/ui/pause-buttons.d.ts +35 -0
- package/dist-pkg/ui/pause-buttons.js +66 -0
- package/dist-pkg/ui/pause-icons.d.ts +250 -343
- package/dist-pkg/ui/pause-icons.js +614 -605
- package/dist-pkg/ui/pause-markup.d.ts +86 -0
- package/dist-pkg/ui/pause-markup.js +125 -0
- package/dist-pkg/ui/reach-notice.d.ts +22 -23
- package/dist-pkg/ui/reach-notice.js +55 -58
- package/dist-pkg/ui/scan-overlay.d.ts +23 -0
- package/dist-pkg/ui/scan-overlay.js +42 -0
- package/dist-pkg/ui/settings-aac.d.ts +68 -0
- package/dist-pkg/ui/settings-aac.js +189 -0
- package/dist-pkg/ui/settings-audio.d.ts +91 -113
- package/dist-pkg/ui/settings-audio.js +407 -405
- package/dist-pkg/ui/settings-controls.d.ts +53 -92
- package/dist-pkg/ui/settings-controls.js +143 -215
- package/dist-pkg/ui/settings-empathy.d.ts +39 -30
- package/dist-pkg/ui/settings-empathy.js +53 -60
- package/dist-pkg/ui/settings-mobility.d.ts +195 -0
- package/dist-pkg/ui/settings-mobility.js +374 -0
- package/dist-pkg/ui/settings-motion.d.ts +91 -70
- package/dist-pkg/ui/settings-motion.js +287 -198
- package/dist-pkg/ui/settings-panel.d.ts +48 -45
- package/dist-pkg/ui/settings-panel.js +164 -93
- package/dist-pkg/ui/settings-typo.d.ts +28 -76
- package/dist-pkg/ui/settings-typo.js +145 -125
- package/dist-pkg/ui/settings-visual.d.ts +29 -87
- package/dist-pkg/ui/settings-visual.js +240 -193
- package/dist-pkg/ui/shell.d.ts +113 -134
- package/dist-pkg/ui/shell.js +143 -216
- package/dist-pkg/ui/simulation-list.d.ts +27 -0
- package/dist-pkg/ui/simulation-list.js +76 -0
- package/dist-pkg/ui/simulation-over-the-world.d.ts +23 -0
- package/dist-pkg/ui/simulation-over-the-world.js +131 -0
- package/dist-pkg/ui/simulation-refusal.d.ts +5 -31
- package/dist-pkg/ui/simulation-refusal.js +8 -56
- package/dist-pkg/ui/switchable-control.d.ts +11 -0
- package/dist-pkg/ui/switchable-control.js +19 -0
- package/dist-pkg/ui/title.d.ts +4 -4
- package/dist-pkg/ui/title.js +11 -13
- package/dist-pkg/ui/top-band.d.ts +24 -0
- package/dist-pkg/ui/top-band.js +100 -0
- package/dist-pkg/ui/typo-choices.d.ts +71 -0
- package/dist-pkg/ui/typo-choices.js +84 -0
- package/dist-pkg/ui/visual-axes-panel.d.ts +11 -47
- package/dist-pkg/ui/visual-axes-panel.js +12 -94
- package/dist-pkg/ui/visual-choices.d.ts +77 -0
- package/dist-pkg/ui/visual-choices.js +107 -0
- package/dist-pkg/ui/vlibras.d.ts +33 -10
- package/dist-pkg/ui/vlibras.js +58 -81
- package/dist-pkg/ui/voice-control.d.ts +46 -0
- package/dist-pkg/ui/voice-control.js +143 -0
- package/dist-pkg/ui/voice-settings.d.ts +96 -0
- package/dist-pkg/ui/voice-settings.js +302 -0
- package/dist-pkg/ui/where-the-child-is.d.ts +31 -0
- package/dist-pkg/ui/where-the-child-is.js +70 -0
- package/docs/CREDITS.md +198 -54
- package/docs/LICENSES.md +160 -145
- package/package.json +24 -25
- package/scripts/heavy-into-the-delivery.mjs +144 -0
- package/scripts/licences/Apache-2.0.txt +176 -0
- package/scripts/licences/GPL-3.0.txt +674 -0
- package/scripts/licences/MIT.txt +17 -0
- package/scripts/licences/third-party.mjs +287 -0
- package/scripts/licences/vosk-browser.NOTICE.txt +268 -0
- package/app/public/vendor/fonts/comicneue-400.woff2 +0 -0
- package/app/public/vendor/fonts/comicneue-700.woff2 +0 -0
- package/dist-pkg/core/anel.d.ts +0 -17
- package/dist-pkg/core/anel.js +0 -31
- package/dist-pkg/core/collision.d.ts +0 -21
- package/dist-pkg/core/collision.js +0 -62
- package/dist-pkg/core/layers.d.ts +0 -63
- package/dist-pkg/core/layers.js +0 -95
- package/dist-pkg/core/letter-grid.d.ts +0 -55
- package/dist-pkg/core/letter-grid.js +0 -116
- package/dist-pkg/core/password.d.ts +0 -34
- package/dist-pkg/core/password.js +0 -205
- package/dist-pkg/core/rotulo-acessivel.d.ts +0 -17
- package/dist-pkg/core/rotulo-acessivel.js +0 -41
- package/dist-pkg/core/run-state.d.ts +0 -115
- package/dist-pkg/core/run-state.js +0 -40
- package/dist-pkg/core/tiles.d.ts +0 -12
- package/dist-pkg/core/tiles.js +0 -61
- package/dist-pkg/core/world.d.ts +0 -4
- package/dist-pkg/core/world.js +0 -58
- package/dist-pkg/input/origem-sintetica.d.ts +0 -44
- package/dist-pkg/input/origem-sintetica.js +0 -60
- package/dist-pkg/input/transporte-em-uso.d.ts +0 -101
- package/dist-pkg/input/transporte-em-uso.js +0 -130
- package/dist-pkg/platform/audio-nav.d.ts +0 -51
- package/dist-pkg/platform/audio-nav.js +0 -99
- package/dist-pkg/platform/pesados-catalogo.d.ts +0 -14
- package/dist-pkg/platform/pesados-catalogo.js +0 -177
- package/dist-pkg/platform/pesados.d.ts +0 -31
- package/dist-pkg/platform/pesados.js +0 -75
- package/dist-pkg/platform/vozes-prontas.d.ts +0 -28
- package/dist-pkg/platform/vozes-prontas.js +0 -61
- package/dist-pkg/render/camera.d.ts +0 -58
- package/dist-pkg/render/camera.js +0 -105
- package/dist-pkg/render/cenario-data.d.ts +0 -127
- package/dist-pkg/render/cenario-data.js +0 -145
- package/dist-pkg/render/city-tex.d.ts +0 -63
- package/dist-pkg/render/city-tex.js +0 -228
- package/dist-pkg/render/city-tiles.d.ts +0 -11
- package/dist-pkg/render/city-tiles.js +0 -140
- package/dist-pkg/render/draw.d.ts +0 -149
- package/dist-pkg/render/draw.js +0 -231
- package/dist-pkg/render/fx.d.ts +0 -63
- package/dist-pkg/render/fx.js +0 -123
- package/dist-pkg/render/minimap.d.ts +0 -11
- package/dist-pkg/render/minimap.js +0 -94
- package/dist-pkg/render/parallax.d.ts +0 -85
- package/dist-pkg/render/parallax.js +0 -158
- package/dist-pkg/render/player-anim.d.ts +0 -71
- package/dist-pkg/render/player-anim.js +0 -152
- package/dist-pkg/render/recycling-tex.d.ts +0 -48
- package/dist-pkg/render/recycling-tex.js +0 -164
- package/dist-pkg/render/scene-city.d.ts +0 -77
- package/dist-pkg/render/scene-city.js +0 -181
- package/dist-pkg/render/scene-parallax.d.ts +0 -72
- package/dist-pkg/render/scene-parallax.js +0 -426
- package/dist-pkg/render/scene-sky.d.ts +0 -126
- package/dist-pkg/render/scene-sky.js +0 -295
- package/dist-pkg/render/set-cenario.d.ts +0 -54
- package/dist-pkg/render/set-cenario.js +0 -103
- package/dist-pkg/render/textures.d.ts +0 -75
- package/dist-pkg/render/textures.js +0 -240
- package/dist-pkg/render/title-scene.d.ts +0 -46
- package/dist-pkg/render/title-scene.js +0 -75
- package/dist-pkg/render/weather.d.ts +0 -96
- package/dist-pkg/render/weather.js +0 -171
- package/dist-pkg/render/wheelchair-sprites.d.ts +0 -32
- package/dist-pkg/render/wheelchair-sprites.js +0 -69
- package/dist-pkg/render/world-tex.d.ts +0 -18
- package/dist-pkg/render/world-tex.js +0 -87
- package/dist-pkg/ui/activities-menu.d.ts +0 -258
- package/dist-pkg/ui/activities-menu.js +0 -648
- package/dist-pkg/ui/caa-sets.d.ts +0 -39
- package/dist-pkg/ui/caa-sets.js +0 -65
- package/dist-pkg/ui/map-hub.d.ts +0 -56
- package/dist-pkg/ui/map-hub.js +0 -138
- package/dist-pkg/ui/settings-caa.d.ts +0 -45
- package/dist-pkg/ui/settings-caa.js +0 -137
- package/dist-pkg/ui/settings-motor.d.ts +0 -175
- package/dist-pkg/ui/settings-motor.js +0 -342
- package/dist-pkg/ui/webcam.d.ts +0 -7
- package/dist-pkg/ui/webcam.js +0 -93
package/dist-pkg/ui/fonts.js
CHANGED
|
@@ -1,153 +1,308 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
-
// ui/fonts.ts —
|
|
3
|
-
//
|
|
4
|
-
|
|
2
|
+
// ui/fonts.ts — the font catalogue (data) + index by key + loading/persisting the choice. A leaf module WITH NO IMPORTS:
|
|
3
|
+
// whoever stores comes in as a parameter (`FontStore`), in `resolveFontKey` and `persistFontKey` — so the decision of
|
|
4
|
+
// WHERE it is stored belongs entirely to the caller.
|
|
5
|
+
/**
|
|
6
|
+
* THIS CHILD'S COUNTRY HAND, and the COLONISER's fallback when the country has none of its own (ADR-0150 §1).
|
|
7
|
+
*
|
|
8
|
+
* 🎯 The rule is the Dev's and is truer than the one it replaced: ADR-0012 says the hand one learns to write is NATIONAL,
|
|
9
|
+
* not linguistic, and never said what to do with nations without a face of their own. Falling back to what the United
|
|
10
|
+
* States teaches was a default dressed as a country; the coloniser's hand is a true statement about how that child's
|
|
11
|
+
* school taught them to write.
|
|
12
|
+
*
|
|
13
|
+
* 📌 AND THREE FACES CLOSE THE WHOLE GAP, because the repertoire is already limited to English, Portuguese and Spanish
|
|
14
|
+
* (ADR-0012). That is what makes the truer rule also the cheapest to bundle.
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ WHERE THE COUNTRY TEACHES TWO HANDS, IT RETURNS BOTH, in the Dev's order — the traditional first. That gives the
|
|
17
|
+
* eleventh button's cycle SIX positions in those countries instead of five.
|
|
18
|
+
*/
|
|
19
|
+
const HAND_BY_COUNTRY = Object.freeze({
|
|
20
|
+
BR: ['pwbr'],
|
|
21
|
+
US: ['pwustrad', 'pwusmod'], // the US teaches two, and choosing one would be choosing for the child
|
|
22
|
+
GB: ['pwgbj', 'pwgbs'], // joined and semi-joined
|
|
23
|
+
ES: ['pwes', 'pwesdeco'],
|
|
24
|
+
PT: ['pwpt'],
|
|
25
|
+
CA: ['pwca'], MX: ['pwmx'], AR: ['pwar'], CL: ['pwcl'], CO: ['pwco'], CU: ['pwcu'], PE: ['pwpe'],
|
|
26
|
+
});
|
|
27
|
+
/** The fallback by LANGUAGE: the coloniser's hand. Three entries cover every country the repertoire admits. */
|
|
28
|
+
const HAND_BY_LANGUAGE = Object.freeze({
|
|
29
|
+
es: ['pwes', 'pwesdeco'],
|
|
30
|
+
pt: ['pwpt'],
|
|
31
|
+
en: ['pwgbj', 'pwgbs'],
|
|
32
|
+
});
|
|
33
|
+
/** The country hand's increase. Named so the gate can assert it against `minPx` instead of repeating it. */
|
|
34
|
+
export const HANDWRITING_SCALE = 1.25;
|
|
35
|
+
/** The document's base, in px — the `font-size` of `html,body`. The floor comes from multiplying it by the scale. */
|
|
36
|
+
export const BASE_EM_PX = 16;
|
|
37
|
+
/**
|
|
38
|
+
* THE ELEVENTH BUTTON'S CYCLE — five positions, or six where the country teaches two hands (ADR-0149 §1, ADR-0150 §2).
|
|
39
|
+
*
|
|
40
|
+
* 🎯 EACH STEP CHANGES THE CASE **AND** THE FACE, and that is the whole decision: `letterCase` (`core/state`, ADR-0028)
|
|
41
|
+
* and the face are two settings, but Andika in upper case is ONE pedagogical choice of whoever teaches literacy, not
|
|
42
|
+
* two. A child should not have to know the model to make it.
|
|
43
|
+
*
|
|
44
|
+
* 📌 IT STARTS AT ATKINSON, which is position (c) and the project's default. The cycle is a ring: from it, one press goes
|
|
45
|
+
* to Lexend and the last goes back to the start.
|
|
46
|
+
*
|
|
47
|
+
* ⚠️ THE COUNTRY HAND MAY NOT EXIST — a tag with no region and a language outside the repertoire returns nothing. Then the
|
|
48
|
+
* cycle has FOUR positions, which is the right answer: one position fewer is better than one showing the hand of a
|
|
49
|
+
* country that is not that child's.
|
|
50
|
+
*
|
|
51
|
+
* 🔴 ARASAAC AND PCS ARE NOT POSITIONS, a decision and not an oversight: ADR-0155 §3 says to skip them — while the licence
|
|
52
|
+
* does not allow, the cycle neither stops on them nor announces them. A position existing only to be skipped would be
|
|
53
|
+
* data with no reader; they enter the day they work.
|
|
54
|
+
*/
|
|
55
|
+
export function typographyCycle(tag) {
|
|
56
|
+
const hands = handsForTag(tag);
|
|
57
|
+
return Object.freeze([
|
|
58
|
+
{ letterCase: 'upper', font: 'andika', scale: 1 }, // (a) the literacy pair
|
|
59
|
+
{ letterCase: 'mixed', font: 'andika', scale: 1 }, // (b)
|
|
60
|
+
{ letterCase: 'mixed', font: 'atkinson', scale: 1 }, // (c) the default — the cycle starts here
|
|
61
|
+
{ letterCase: 'mixed', font: 'lexend', scale: 1 }, // (d)
|
|
62
|
+
// (e), and (f) where the country teaches two. ⚠️ 25% LARGER, and the number is not taste: the document's base is
|
|
63
|
+
// 16 px, the Playwrite faces declare `minPx: 20`, and 16 × 1.25 is exactly 20. The scale IS the floor.
|
|
64
|
+
...hands.map((face) => ({ letterCase: 'mixed', font: face, scale: HANDWRITING_SCALE })),
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
67
|
+
/** The index where the cycle STARTS — position (c). Named so the gate can assert it without recounting. */
|
|
68
|
+
export const CYCLE_START = 2;
|
|
69
|
+
/**
|
|
70
|
+
* The handwriting font keys for a BCP-47 tag — `pt-BR` → `['pwbr']`, `es-MX` → `['pwmx']`.
|
|
71
|
+
*
|
|
72
|
+
* ⚠️ IT READS THE REGION AND THEN THE LANGUAGE, in that order, and the forgotten case is the tag WITHOUT a region: `en`
|
|
73
|
+
* alone names no country, and falling back is the right answer — not an error, a child whose browser did not say where
|
|
74
|
+
* they are.
|
|
75
|
+
*
|
|
76
|
+
* 📌 It returns a LIST and not one face: where the country teaches two hands, both enter the cycle.
|
|
77
|
+
* 📌 It returns NOTHING for a language outside the repertoire, and nothing is sayable: the caller drops the position
|
|
78
|
+
* from the cycle instead of showing a hand that is nobody's.
|
|
79
|
+
*/
|
|
80
|
+
export function handsForTag(tag) {
|
|
81
|
+
if (!tag)
|
|
82
|
+
return [];
|
|
83
|
+
const parts = String(tag).split('-');
|
|
84
|
+
const language = (parts[0] ?? '').toLowerCase();
|
|
85
|
+
const region = parts.slice(1).find((p) => /^[A-Za-z]{2}$/.test(p))?.toUpperCase();
|
|
86
|
+
if (region && HAND_BY_COUNTRY[region])
|
|
87
|
+
return HAND_BY_COUNTRY[region];
|
|
88
|
+
return HAND_BY_LANGUAGE[language] ?? [];
|
|
89
|
+
}
|
|
5
90
|
export const FONT_GROUPS = [
|
|
6
91
|
{ g: 'font.group.sans', items: [
|
|
7
|
-
{ k: 'atkinson', fam: 'Atkinson Hyperlegible', fb: 'sans', d: 'font.desc.atkinson' },
|
|
8
|
-
{ k: 'lexend', fam: 'Lexend', fb: 'sans', d: 'font.desc.lexend' },
|
|
9
|
-
{ k: 'quattro', fam: 'iA Writer Quattro', fb: 'sans', d: 'font.desc.quattro' },
|
|
10
|
-
{ k: 'andika', fam: 'Andika', fb: 'sans', d: 'font.desc.andika' },
|
|
11
|
-
// ⚠️
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
|
|
16
|
-
{ k: '
|
|
17
|
-
{ k: '
|
|
18
|
-
{ k: '
|
|
19
|
-
{ k: '
|
|
20
|
-
|
|
92
|
+
{ k: 'atkinson', id: 'atkinson_hyperlegible', fam: 'Atkinson Hyperlegible', fb: 'sans', d: 'font.desc.atkinson' },
|
|
93
|
+
{ k: 'lexend', id: 'lexend', fam: 'Lexend', fb: 'sans', d: 'font.desc.lexend' },
|
|
94
|
+
{ k: 'quattro', id: 'ia_writer_quattro', fam: 'iA Writer Quattro', fb: 'sans', d: 'font.desc.quattro' },
|
|
95
|
+
{ k: 'andika', id: 'andika', fam: 'Andika', fb: 'sans', d: 'font.desc.andika' },
|
|
96
|
+
// ⚠️ OPENDYSLEXIC IS OFFERED WITH NO CLAIM OF EFFICACY — issue #87 item 3 and `docs/game-design/typography.md`: offer
|
|
97
|
+
// Dyslexie and OpenDyslexic only as a user's choice, because research shows no reading gain from them. Its description
|
|
98
|
+
// speaks of the DESIGN (heavy stems at the bottom), never of the effect — promising better reading would sell a
|
|
99
|
+
// dyslexic child something the evidence does not support, and they are who can least afford it.
|
|
100
|
+
{ k: 'opendyslexic', id: 'opendyslexic', fam: 'OpenDyslexic', fb: 'sans', d: 'font.desc.opendyslexic' },
|
|
101
|
+
{ k: 'sourcesans', id: 'source_sans_3', fam: 'Source Sans 3', fb: 'sans' },
|
|
102
|
+
{ k: 'inter', id: 'inter', fam: 'Inter', fb: 'sans' },
|
|
103
|
+
{ k: 'opensans', id: 'open_sans', fam: 'Open Sans', fb: 'sans' },
|
|
104
|
+
{ k: 'lato', id: 'lato', fam: 'Lato', fb: 'sans' },
|
|
105
|
+
// ⚠️ THE FOUR ROUNDED FACES are here at the Dev's request, WITHOUT a description on purpose: a `d` exists when there
|
|
106
|
+
// is something to say the name does not — Atkinson has one because the Braille Institute designed it for this,
|
|
107
|
+
// OpenDyslexic because its description has to speak of the DESIGN and never the effect. Rounded is not a claim, it is
|
|
108
|
+
// what you see.
|
|
109
|
+
//
|
|
110
|
+
// 📌 `geral` (implicit role): interface faces, neither handwriting nor game — so they follow the BDA spacing ADR-0149
|
|
111
|
+
// §2 generalises, and appear in the typography menu like the others.
|
|
112
|
+
//
|
|
113
|
+
// ⚠️ `Fredoka` AND NOT "Fredoka One": that is the legacy name. Google publishes the variable family as `Fredoka`; the
|
|
114
|
+
// old static one was its 600 weight. See the matching block in `fonts.css`.
|
|
115
|
+
{ k: 'fredoka', id: 'fredoka', fam: 'Fredoka', fb: 'sans' },
|
|
116
|
+
{ k: 'quicksand', id: 'quicksand', fam: 'Quicksand', fb: 'sans' },
|
|
117
|
+
{ k: 'nunito', id: 'nunito', fam: 'Nunito', fb: 'sans' },
|
|
118
|
+
{ k: 'teachers', id: 'teachers', fam: 'Teachers', fb: 'sans' },
|
|
119
|
+
/*
|
|
120
|
+
* SEVEN MORE SANS FACES (ADR-0150, the Dev's request).
|
|
121
|
+
*
|
|
122
|
+
* 🔴 CLASH DISPLAY IS NOT HERE, and the absence is read, not forgotten: it is **not on Google Fonts** — it comes from
|
|
123
|
+
* Fontshare (Indian Type Foundry), and `LICENSES.md` §3 requires the licence checked BEFORE bundling. Read, it FAILS:
|
|
124
|
+
* it is «Closed Source» under the ITF Free Font License, whose §02 forbids distributing the file through a repository,
|
|
125
|
+
* an application or a public server and serving it as a selectable font to third parties. The gate is in
|
|
126
|
+
* `tests/what-fonts-the-package-carries.node.test.js`.
|
|
127
|
+
*/
|
|
128
|
+
{ k: 'robotoflex', id: 'roboto_flex', fam: 'Roboto Flex', fb: 'sans' },
|
|
129
|
+
{ k: 'ubuntu', id: 'ubuntu', fam: 'Ubuntu', fb: 'sans' },
|
|
130
|
+
{ k: 'notosans', id: 'noto_sans', fam: 'Noto Sans', fb: 'sans' },
|
|
131
|
+
{ k: 'spacegrotesk', id: 'space_grotesk', fam: 'Space Grotesk', fb: 'sans', minPx: 20 },
|
|
132
|
+
{ k: 'sora', id: 'sora', fam: 'Sora', fb: 'sans', minPx: 20 },
|
|
133
|
+
{ k: 'jakarta', id: 'plus_jakarta_sans', fam: 'Plus Jakarta Sans', fb: 'sans', minPx: 20 }
|
|
21
134
|
] },
|
|
135
|
+
// ⚠️ NO COMFORTAA, by the Dev's decision: «ruim para dislexia». The reason is in the face — its near-geometric shapes
|
|
136
|
+
// reduce the differentiation between letters, the very axis that makes Atkinson Hyperlegible this project's default.
|
|
137
|
+
// Written down because a face that leaves no trace gets proposed again by the next person who thinks a rounded one is
|
|
138
|
+
// missing.
|
|
22
139
|
{ g: 'font.group.serif', items: [
|
|
23
|
-
{ k: 'literata', fam: 'Literata', fb: 'serif' },
|
|
24
|
-
{ k: 'sourceserif', fam: 'Source Serif 4', fb: 'serif' },
|
|
25
|
-
{ k: 'newsreader', fam: 'Newsreader', fb: 'serif' }
|
|
140
|
+
{ k: 'literata', id: 'literata', fam: 'Literata', fb: 'serif' },
|
|
141
|
+
{ k: 'sourceserif', id: 'source_serif_4', fam: 'Source Serif 4', fb: 'serif' },
|
|
142
|
+
{ k: 'newsreader', id: 'newsreader', fam: 'Newsreader', fb: 'serif' },
|
|
143
|
+
// Five READING faces: serifs for running text, like the three above.
|
|
144
|
+
{ k: 'merriweather', id: 'merriweather', fam: 'Merriweather', fb: 'serif' },
|
|
145
|
+
{ k: 'lora', id: 'lora', fam: 'Lora', fb: 'serif' },
|
|
146
|
+
{ k: 'spectral', id: 'spectral', fam: 'Spectral', fb: 'serif' },
|
|
147
|
+
{ k: 'domine', id: 'domine', fam: 'Domine', fb: 'serif' },
|
|
148
|
+
{ k: 'bitter', id: 'bitter', fam: 'Bitter', fb: 'serif' },
|
|
149
|
+
/*
|
|
150
|
+
* ⚠️ THE FOUR DISPLAY FACES ARE SOMETHING ELSE, and come with the warning written instead of mixed with the reading
|
|
151
|
+
* ones. Playfair Display, DM Serif Display, Fraunces and Bodoni Moda have HIGH CONTRAST — thick stems beside very thin
|
|
152
|
+
* ones — and Bodoni is the extreme of the axis. It is exactly what Atkinson Hyperlegible was designed NOT to be, and at
|
|
153
|
+
* small sizes the thin stems disappear first for whoever sees least.
|
|
154
|
+
*
|
|
155
|
+
* 📌 They stay, because OFFERING is not applying: the default is still Atkinson, and whoever picks one of these is
|
|
156
|
+
* choosing. The defect would be the engine ADOPTING one by itself.
|
|
157
|
+
* 🔴 And they are not for activity body text; a game using them for a long prompt is using a title face as a reading
|
|
158
|
+
* face.
|
|
159
|
+
*/
|
|
160
|
+
{ k: 'playfair', id: 'playfair_display', fam: 'Playfair Display', fb: 'serif', minPx: 20 },
|
|
161
|
+
{ k: 'dmserifdisplay', id: 'dm_serif_display', fam: 'DM Serif Display', fb: 'serif', minPx: 20 },
|
|
162
|
+
{ k: 'fraunces', id: 'fraunces', fam: 'Fraunces', fb: 'serif', minPx: 20 },
|
|
163
|
+
{ k: 'bodonimoda', id: 'bodoni_moda', fam: 'Bodoni Moda', fb: 'serif', minPx: 20 }
|
|
26
164
|
] },
|
|
27
|
-
// ⚠️
|
|
28
|
-
//
|
|
29
|
-
// · `learningcurve` e `kindergarten` — eram entradas `.off` SEM FICHEIRO, isto é, o menu oferecia-as
|
|
30
|
-
// desabilitadas e nada existia por trás. Uma linha que só serve para dizer «ainda não» é uma linha que
|
|
31
|
-
// a criança lê e não pode usar.
|
|
165
|
+
// ⚠️ NO `.off` ENTRY WITHOUT A FILE (issue #87 item 3): a row that only exists to say "not yet" is a row the child
|
|
166
|
+
// reads and cannot use.
|
|
32
167
|
{ g: 'font.group.hand', items: [
|
|
33
|
-
{ k: 'pinyon', fam: 'Pinyon Script', fb: 'cursive', d: 'font.desc.pinyon',
|
|
34
|
-
{ k: 'ufmag', fam: 'UnifrakturMaguntia', fb: 'cursive', d: 'font.desc.ufmag',
|
|
35
|
-
// Fondamento
|
|
36
|
-
//
|
|
37
|
-
{ k: 'fondamento', fam: 'Fondamento', fb: 'cursive', d: 'font.desc.fondamento',
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
168
|
+
{ k: 'pinyon', id: 'pinyon_script', fam: 'Pinyon Script', fb: 'cursive', d: 'font.desc.pinyon', role: 'caligrafica', minPx: 24 },
|
|
169
|
+
{ k: 'ufmag', id: 'unifrakturmaguntia', fam: 'UnifrakturMaguntia', fb: 'cursive', d: 'font.desc.ufmag', role: 'caligrafica', minPx: 20 },
|
|
170
|
+
// Fondamento comes through the ADR-0012 amendment (#87 item 3) with the minimum the Dev set. Handwriting, so out of
|
|
171
|
+
// the menu — it is for the buttons INSIDE school activities, not for the interface.
|
|
172
|
+
{ k: 'fondamento', id: 'fondamento', fam: 'Fondamento', fb: 'cursive', d: 'font.desc.fondamento', role: 'caligrafica', minPx: 20 },
|
|
173
|
+
/*
|
|
174
|
+
* THE FRENCH RONDE — #87 item 4, decided in ADR-0108 §4. It is NEVER bundled: the three faces are free for PERSONAL
|
|
175
|
+
* use only (ADR-0012), and distributing them would distribute what was not licensed for distribution. What the entry
|
|
176
|
+
* does is SPEAK.
|
|
177
|
+
*
|
|
178
|
+
* ⚠️ AND IT IS NOT A "NOT YET" ROW. The difference is ACTIONABILITY, the reason ADR-0108 gives in full: a "not yet"
|
|
179
|
+
* nobody can resolve; this names WHICH THREE FONTS TO INSTALL, which an adult resolves in an afternoon. 📌 "Install a
|
|
180
|
+
* ronde font" would be the defect back — an adult does not act on a category —, which is why the message names all
|
|
181
|
+
* three.
|
|
182
|
+
*
|
|
183
|
+
* ⚠️ `role` ABSENT, so `geral`, deliberately, although the ronde is handwriting by nature: handwriting faces are
|
|
184
|
+
* filtered out of the menu (`fontRole === 'geral'`), and a filtered row can say nothing to anyone. Marking the
|
|
185
|
+
* "right" role here would erase the one thing this entry exists to do.
|
|
186
|
+
*/
|
|
42
187
|
/*
|
|
43
|
-
*
|
|
44
|
-
* livres só para uso PESSOAL (ADR-0012), e distribuí-las seria distribuir o que não foi licenciado para
|
|
45
|
-
* distribuição. O que muda é que a opção passa a FALAR.
|
|
188
|
+
* THE PLAYWRITE FACES — #87 item 3, decided in ADR-0108 §2.
|
|
46
189
|
*
|
|
47
|
-
* ⚠️
|
|
48
|
-
*
|
|
49
|
-
* criança lê e não pode usar». A diferença é ACCIONABILIDADE, e é a razão que o ADR-0108 dá por extenso:
|
|
50
|
-
* aquelas diziam «ainda não», que ninguém pode resolver; esta diz QUAIS TRÊS FONTES INSTALAR, que um
|
|
51
|
-
* adulto resolve numa tarde. 📌 «Instale uma fonte ronde» seria o defeito de volta — um adulto não age
|
|
52
|
-
* sobre uma categoria —, e é por isso que a mensagem nomeia as três.
|
|
190
|
+
* ⚠️ `role: caligrafica`, so OUT OF THE MENU: they are the hand one learns to write, for the buttons INSIDE school
|
|
191
|
+
* activities, not an interface option.
|
|
53
192
|
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* nada a ninguém. Marcar o papel «certo» aqui apagaria a única coisa que este item existe para fazer.
|
|
193
|
+
* 📌 `minPx: 20` is the same floor the other cursive faces carry. #87's list of minimums does not name the
|
|
194
|
+
* Playwrite — the number is its siblings', not a measurement of its own; correctable in one line.
|
|
57
195
|
*/
|
|
196
|
+
// THE HANDWRITING GROUP'S GENERAL FACE (ADR-0176 §6, the Dev): in the menu, drawn at `minPx` by the face's scale.
|
|
197
|
+
{ k: 'pwbr', id: 'playwrite_br', fam: 'Playwrite BR', fb: 'cursive', d: 'font.desc.pw.br', minPx: 20 },
|
|
198
|
+
{ k: 'pwustrad', id: 'playwrite_us_trad', fam: 'Playwrite US Trad', fb: 'cursive', d: 'font.desc.pw.ustrad', role: 'caligrafica', minPx: 20 },
|
|
199
|
+
{ k: 'pwusmod', id: 'playwrite_us_modern', fam: 'Playwrite US Modern', fb: 'cursive', d: 'font.desc.pw.usmod', role: 'caligrafica', minPx: 20 },
|
|
200
|
+
{ k: 'pwca', id: 'playwrite_ca', fam: 'Playwrite CA', fb: 'cursive', d: 'font.desc.pw.ca', role: 'caligrafica', minPx: 20 },
|
|
201
|
+
{ k: 'pwmx', id: 'playwrite_mx', fam: 'Playwrite MX', fb: 'cursive', d: 'font.desc.pw.mx', role: 'caligrafica', minPx: 20 },
|
|
202
|
+
{ k: 'pwar', id: 'playwrite_ar', fam: 'Playwrite AR', fb: 'cursive', d: 'font.desc.pw.ar', role: 'caligrafica', minPx: 20 },
|
|
203
|
+
{ k: 'pwcl', id: 'playwrite_cl', fam: 'Playwrite CL', fb: 'cursive', d: 'font.desc.pw.cl', role: 'caligrafica', minPx: 20 },
|
|
204
|
+
{ k: 'pwco', id: 'playwrite_co', fam: 'Playwrite CO', fb: 'cursive', d: 'font.desc.pw.co', role: 'caligrafica', minPx: 20 },
|
|
58
205
|
/*
|
|
59
|
-
*
|
|
206
|
+
* SEVEN MORE, and they exist by a RULE and not by taste (ADR-0150, the Dev's decision).
|
|
207
|
+
*
|
|
208
|
+
* 🎯 `pwes`, `pwpt` and `pwgbj` are the FALLBACK BY LANGUAGE: a country without its own Playwrite gets the
|
|
209
|
+
* COLONISER's — Spanish → Spain, Portuguese → Portugal, English → England.
|
|
210
|
+
* 📌 `pwcu` and `pwpe` were asked for by name; `pwesdeco` and `pwgbs` come through the other half of the rule: where
|
|
211
|
+
* the country has more than one STROKE, both appear — like US Trad and US Modern.
|
|
60
212
|
*
|
|
61
|
-
* ⚠️
|
|
62
|
-
*
|
|
213
|
+
* ⚠️ NO "GUIDES" FACES, by the Dev's decision: a `Playwrite XX Guides` is not a second stroke, it is the SAME stroke
|
|
214
|
+
* with handwriting ruling on top. The engine does not use them; a game that needs them brings its own font.
|
|
63
215
|
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
216
|
+
* 🔴 AND THEY ARE BUNDLED, which REVOKES ADR-0108's P3. The newer decision is the Dev's, literally: «estas fontes
|
|
217
|
+
* devem ser baixadas no primeiro dia para fazer parte do PWA». Written down because the old record still says the
|
|
218
|
+
* opposite.
|
|
66
219
|
*/
|
|
67
|
-
{ k: '
|
|
68
|
-
{ k: '
|
|
69
|
-
{ k: '
|
|
70
|
-
{ k: '
|
|
71
|
-
{ k: '
|
|
72
|
-
{ k: '
|
|
73
|
-
{ k: '
|
|
74
|
-
{ k: '
|
|
75
|
-
|
|
76
|
-
d: 'font.desc.ronde', off: 'font.off.ronde' }
|
|
220
|
+
{ k: 'pwes', id: 'playwrite_es', fam: 'Playwrite ES', fb: 'cursive', role: 'caligrafica', minPx: 20 },
|
|
221
|
+
{ k: 'pwesdeco', id: 'playwrite_es_deco', fam: 'Playwrite ES Deco', fb: 'cursive', role: 'caligrafica', minPx: 20 },
|
|
222
|
+
{ k: 'pwpt', id: 'playwrite_pt', fam: 'Playwrite PT', fb: 'cursive', role: 'caligrafica', minPx: 20 },
|
|
223
|
+
{ k: 'pwgbj', id: 'playwrite_gb_j', fam: 'Playwrite GB J', fb: 'cursive', role: 'caligrafica', minPx: 20 },
|
|
224
|
+
{ k: 'pwgbs', id: 'playwrite_gb_s', fam: 'Playwrite GB S', fb: 'cursive', role: 'caligrafica', minPx: 20 },
|
|
225
|
+
{ k: 'pwcu', id: 'playwrite_cu', fam: 'Playwrite CU', fb: 'cursive', role: 'caligrafica', minPx: 20 },
|
|
226
|
+
{ k: 'pwpe', id: 'playwrite_pe', fam: 'Playwrite PE', fb: 'cursive', role: 'caligrafica', minPx: 20 },
|
|
227
|
+
{ k: 'ronde', id: 'ronde_script', fam: 'Ronde Script, OPTIFrench-Script, Merveille', fb: 'cursive',
|
|
228
|
+
d: 'font.desc.ronde', off: 'font.off.ronde', minPx: 18 }
|
|
77
229
|
] },
|
|
78
|
-
// ⚠️
|
|
79
|
-
//
|
|
230
|
+
// ⚠️ THE GAME'S FACE has its own group because it is neither sans, nor serif, nor handwriting — it is a PIXEL face,
|
|
231
|
+
// and putting it in any of the three would say the wrong thing about it in the list.
|
|
80
232
|
//
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
// carrega, declara-se e reporta-se como certo, e não desenha uma única letra latina.
|
|
233
|
+
// It does NOT appear in the menu (`role:'jogo'`). See the `@font-face` note in `vendor/fonts.css`: the wrong subset of
|
|
234
|
+
// this family loads, declares itself and reports as correct, and draws not a single Latin letter.
|
|
84
235
|
{ g: 'font.group.arcade', items: [
|
|
85
|
-
{ k: 'pressstart', fam: 'Press Start 2P', fb: 'monospace', d: 'font.desc.pressstart',
|
|
236
|
+
{ k: 'pressstart', id: 'press_start_2p', fam: 'Press Start 2P', fb: 'monospace', d: 'font.desc.pressstart', role: 'jogo' }
|
|
86
237
|
] },
|
|
87
238
|
];
|
|
88
|
-
/** O papel de uma face; ausente no catálogo quer dizer `geral`. */
|
|
89
|
-
export function papelDaFonte(it) { return it.papel ?? 'geral'; }
|
|
90
239
|
/**
|
|
91
|
-
*
|
|
240
|
+
* How much larger the text is drawn with this face: enough to reach its `minPx` from the document's base, never smaller.
|
|
241
|
+
* A face whose catalogue floor is above the base (a display sans, the handwriting) is offered at that size, not under it
|
|
242
|
+
* (ADR-0176 §4, the catalogue's rule R2). The cycle's hand of the country is the same rule (`HANDWRITING_SCALE`).
|
|
243
|
+
*/
|
|
244
|
+
export function faceScale(it) { return Math.max(1, (it.minPx ?? BASE_EM_PX) / BASE_EM_PX); }
|
|
245
|
+
/** A face's role; absent in the catalogue means `geral`. */
|
|
246
|
+
export function fontRole(it) { return it.role ?? 'geral'; }
|
|
247
|
+
/**
|
|
248
|
+
* THE FAMILIES A FACE ACCEPTS, from a `fam` that may be a STACK.
|
|
92
249
|
*
|
|
93
|
-
* 📌
|
|
94
|
-
*
|
|
95
|
-
*
|
|
250
|
+
* 📌 The Ronde declares three (`'Ronde Script, OPTIFrench-Script, Merveille'`) because any of them will do — three
|
|
251
|
+
* drawings of the same hand, and an adult installs whichever they find. The other faces declare one, and for them this
|
|
252
|
+
* returns a list of one.
|
|
96
253
|
*/
|
|
97
|
-
export function
|
|
254
|
+
export function faceFamilies(it) {
|
|
98
255
|
return it.fam.split(',').map((f) => f.trim().replace(/^['"]|['"]$/g, '')).filter(Boolean);
|
|
99
256
|
}
|
|
100
257
|
/**
|
|
101
|
-
*
|
|
258
|
+
* CAN THIS FACE BE USED NOW? — `off` stops being a sentence and becomes a CONDITION.
|
|
102
259
|
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
260
|
+
* ADR-0012 decided the ronde option stays DISABLED WHILE no font is present, and ADR-0108 §4 added what it says. The word
|
|
261
|
+
* "while" is what this function builds: an `off` face becomes available again the instant the adult installs one of the
|
|
262
|
+
* ones the message names.
|
|
106
263
|
*
|
|
107
|
-
* ⚠️
|
|
108
|
-
* gates,
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
* o que fazer. O silêncio não decide nada contra a criança — ele mantém o estado que já existia e que é
|
|
113
|
-
* accionável. É o oposto do `seguraTeclas`, onde os dois lados do padrão erravam.
|
|
264
|
+
* ⚠️ THE DETECTOR IS INJECTED, and `document.fonts` is never read here: this module is the catalogue, it runs in node in
|
|
265
|
+
* the gates, and reading a browser global here would be a boot waiting to crash against an injected document.
|
|
266
|
+
* 📌 And the DEFAULT is not installed, which is safe for a reason that does not hold for every default in this repository:
|
|
267
|
+
* with no detector the option stays disabled WITH the message, and the message tells the adult exactly what to do. The
|
|
268
|
+
* silence decides nothing against the child — it keeps a state that already existed and is actionable.
|
|
114
269
|
*/
|
|
115
|
-
export function
|
|
270
|
+
export function faceAvailable(it, installed) {
|
|
116
271
|
if (!it.off)
|
|
117
272
|
return true;
|
|
118
|
-
return !!
|
|
273
|
+
return !!installed && faceFamilies(it).some((f) => installed(f));
|
|
119
274
|
}
|
|
120
|
-
/**
|
|
121
|
-
export const OFERECIVEIS = FONT_GROUPS.flatMap((g) => g.items).filter((it) =>
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
275
|
+
/** The faces the MENU may offer: only the general ones (ADR-0012 amendment). */
|
|
276
|
+
export const OFERECIVEIS = FONT_GROUPS.flatMap((g) => g.items).filter((it) => fontRole(it) === 'geral');
|
|
277
|
+
/**
|
|
278
|
+
* The catalogue by key. BUILT IN ONE EXPRESSION and never filled after it (ADR-0232 D4): the table was an empty object the
|
|
279
|
+
* module wrote into at import, which the code-health measure reads as module state. The last item with a key wins, as it did.
|
|
280
|
+
*/
|
|
281
|
+
export const FONT_BY_KEY = Object.fromEntries(FONT_GROUPS.flatMap((g) => g.items.map((it) => [it.k, it])));
|
|
282
|
+
const FONT_KEY = 'incl_font_k';
|
|
283
|
+
const FONT_KEY_LEGACY = 'incl_fonte'; // pre-Fase-2: 'alfabetizacao' | 'dislexia'
|
|
126
284
|
/**
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
* porque duas cópias de um padrão são duas chances de o reset devolver algo que o jogo nunca usou.
|
|
285
|
+
* The factory font, named. Atkinson Hyperlegible was designed by the Braille Institute precisely for low vision — it
|
|
286
|
+
* tells apart the shapes most often confused (I/l/1, O/0). That is why it is the default and not an aesthetic preference,
|
|
287
|
+
* and why typography's reset (ADR-0028) returns here: the way back from an accessibility menu has to end at the most
|
|
288
|
+
* legible choice, not at any one. Used in TWO places — the end of the boot chain just below and the panel's reset —, and
|
|
289
|
+
* a constant because two copies of a default are two chances for the reset to return something the game never used.
|
|
133
290
|
*/
|
|
134
291
|
export const DEFAULT_FONT_KEY = 'atkinson';
|
|
135
292
|
/**
|
|
136
293
|
* Boot choice: validated persisted key (ignores .off fonts) -> legacy-key migration -> DEFAULT_FONT_KEY.
|
|
137
294
|
*
|
|
138
|
-
* ⚠️
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
* uma interface inteira em letra cursiva a quem já não tem como sair dela pelo menu — uma armadilha, e das
|
|
143
|
-
* silenciosas.
|
|
295
|
+
* ⚠️ AND A STORED HANDWRITING FACE GOES BACK TO THE DEFAULT (issue #87). A child may have one stored from when the menu
|
|
296
|
+
* offered them, and a stored value is their choice, not ours to undo without a reason. The reason exists: the ADR-0012
|
|
297
|
+
* amendment says a handwriting face **cannot be the interface face**, and the menu no longer offers it. Letting it stand
|
|
298
|
+
* would give a whole interface in cursive to someone with no way out of it through the menu — a trap, and a silent one.
|
|
144
299
|
*
|
|
145
|
-
* ⚠️
|
|
146
|
-
*
|
|
300
|
+
* ⚠️ AND A DELETED KEY GOES BACK TOO, by the same path: a face no longer in `FONT_BY_KEY` falls back to the default
|
|
301
|
+
* instead of leaving the child with no face at all.
|
|
147
302
|
*/
|
|
148
303
|
export function resolveFontKey(s) {
|
|
149
304
|
const k = s.get(FONT_KEY, null);
|
|
150
|
-
if (k && FONT_BY_KEY[k] && !FONT_BY_KEY[k].off &&
|
|
305
|
+
if (k && FONT_BY_KEY[k] && !FONT_BY_KEY[k].off && fontRole(FONT_BY_KEY[k]) === 'geral')
|
|
151
306
|
return k;
|
|
152
307
|
const leg = s.get(FONT_KEY_LEGACY, null);
|
|
153
308
|
if (leg === 'alfabetizacao')
|
|
@@ -157,6 +312,7 @@ export function resolveFontKey(s) {
|
|
|
157
312
|
return DEFAULT_FONT_KEY;
|
|
158
313
|
}
|
|
159
314
|
export function persistFontKey(s, k) { s.set(FONT_KEY, k); }
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
315
|
+
// ⚠️ `loadFontKey` AND `saveFontKey` ARE GONE (R3 of the plan, 2026-09-23): they were conveniences over
|
|
316
|
+
// `resolveFontKey` and `persistFontKey` — the same two lines with `store` already filled in — and NOBODY took
|
|
317
|
+
// them, not even a test. A shortcut nobody takes is not a convenience: it is published surface that asks whoever
|
|
318
|
+
// reads it to migrate.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// SPDX-License-Identifier: AGPL-3.0-or-later
|
|
2
|
+
import type { Translate } from '../core/i18n.js';
|
|
3
|
+
import type { PanelShellCtx } from './panel-shell.js';
|
|
4
|
+
/** One position of a steps or list row: the value the cartridge reads and writes, and its label in the interface language. */
|
|
5
|
+
export interface GameOptionValue {
|
|
6
|
+
readonly value: string;
|
|
7
|
+
readonly label: string;
|
|
8
|
+
}
|
|
9
|
+
interface GameOptionBase {
|
|
10
|
+
/** Stable and unique among the game's rows; the control is `#game-option-<id>`. */
|
|
11
|
+
readonly id: string;
|
|
12
|
+
/** The row's short name, in the interface language. */
|
|
13
|
+
readonly label: string;
|
|
14
|
+
/** The explanation, shown in the footer (CLAUDE.md §4). */
|
|
15
|
+
readonly hint?: string;
|
|
16
|
+
}
|
|
17
|
+
export type GameOption = (GameOptionBase & {
|
|
18
|
+
/** Steps «◀ Label: value ▶», up to five positions; a list, any number (ADR-0130 erratum). */
|
|
19
|
+
readonly kind: 'steps' | 'list';
|
|
20
|
+
readonly values: readonly GameOptionValue[];
|
|
21
|
+
/** The value in use. Read at every opening and after every write: what shows is what the cartridge keeps. */
|
|
22
|
+
readonly read: () => string;
|
|
23
|
+
readonly write: (value: string) => void;
|
|
24
|
+
}) | (GameOptionBase & {
|
|
25
|
+
readonly kind: 'switch';
|
|
26
|
+
readonly read: () => boolean;
|
|
27
|
+
readonly write: (on: boolean) => void;
|
|
28
|
+
});
|
|
29
|
+
/** Why a `gameOptions` declaration is malformed; empty when it is well formed. Absent is well formed: no options of its own. */
|
|
30
|
+
export declare function gameOptionsProblems(options: unknown): string[];
|
|
31
|
+
export interface GameOptionsDrawCtx extends PanelShellCtx {
|
|
32
|
+
/** Translates in the page's language — the root's translator (ADR-0232 D3). REQUIRED: text built from nowhere is a raw key. */
|
|
33
|
+
t: Translate;
|
|
34
|
+
/** Where a change is said (the polite live region). */
|
|
35
|
+
readonly say: (text: string) => void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Draws the rows into `list`, replacing what was there — the rows are the CURRENT cartridge's, and `mount()` may have
|
|
39
|
+
* swapped it (ADR-0142). Every value shown is READ from the cartridge, at drawing and after each write.
|
|
40
|
+
*/
|
|
41
|
+
export declare function drawGameOptions(ctx: GameOptionsDrawCtx, list: HTMLElement, options: readonly GameOption[]): void;
|
|
42
|
+
export {};
|