@dxos/app-framework 0.8.4-main.422d1c7879 → 0.8.4-main.4f23b4e393
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/dist/lib/browser/{capability-DOMNPRJP.mjs → capability-5RRH3WIB.mjs} +11 -11
- package/dist/lib/browser/capability-5RRH3WIB.mjs.map +7 -0
- package/dist/lib/browser/{capability-KSNT34SN.mjs → capability-LUKGKUQH.mjs} +10 -10
- package/dist/lib/browser/{chunk-T3Y4AEKX.mjs → chunk-23D4SJUE.mjs} +3 -3
- package/dist/lib/browser/{chunk-T3Y4AEKX.mjs.map → chunk-23D4SJUE.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-2CKCJ6PN.mjs → chunk-3JWJXGLK.mjs} +1 -1
- package/dist/lib/browser/{chunk-2CKCJ6PN.mjs.map → chunk-3JWJXGLK.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-I34GF4NG.mjs → chunk-45CHLTBV.mjs} +2 -2
- package/dist/lib/browser/{chunk-QSXYHXCE.mjs → chunk-66IXTIVK.mjs} +1 -1
- package/dist/lib/browser/{chunk-QSXYHXCE.mjs.map → chunk-66IXTIVK.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-QRTB4Q3U.mjs → chunk-7VZJR2OA.mjs} +4 -17
- package/dist/lib/browser/chunk-7VZJR2OA.mjs.map +7 -0
- package/dist/lib/browser/chunk-CZ4BIAHH.mjs +422 -0
- package/dist/lib/browser/chunk-CZ4BIAHH.mjs.map +7 -0
- package/dist/lib/browser/{chunk-TGX63LTL.mjs → chunk-FJ4765WW.mjs} +1 -1
- package/dist/lib/browser/{chunk-TGX63LTL.mjs.map → chunk-FJ4765WW.mjs.map} +2 -2
- package/dist/lib/browser/chunk-FO3IYSLV.mjs +68 -0
- package/dist/lib/browser/chunk-FO3IYSLV.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BMIAYUWT.mjs → chunk-JD3Z5NEF.mjs} +147 -75
- package/dist/lib/browser/chunk-JD3Z5NEF.mjs.map +7 -0
- package/dist/lib/browser/chunk-NBXPP7JR.mjs +1174 -0
- package/dist/lib/browser/chunk-NBXPP7JR.mjs.map +7 -0
- package/dist/lib/browser/{chunk-JKWMHZP6.mjs → chunk-WBHCSOBW.mjs} +2 -2
- package/dist/lib/browser/chunk-WBHCSOBW.mjs.map +7 -0
- package/dist/lib/browser/{chunk-GDWTW4ZW.mjs → chunk-Z55LVAGN.mjs} +76 -11
- package/dist/lib/browser/chunk-Z55LVAGN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-F7FW2RK2.mjs → chunk-ZGJAZSNE.mjs} +7 -32
- package/dist/lib/browser/chunk-ZGJAZSNE.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +14 -28
- package/dist/lib/browser/cli/index.mjs.map +3 -3
- package/dist/lib/browser/common/activation-events.mjs +7 -7
- package/dist/lib/browser/common/capabilities.mjs +7 -7
- package/dist/lib/browser/core/activation-event.mjs +1 -1
- package/dist/lib/browser/core/capability.mjs +1 -1
- package/dist/lib/browser/core/plugin-manager.mjs +8 -4
- package/dist/lib/browser/core/plugin.mjs +10 -2
- package/dist/lib/browser/core/url-loader.mjs +13 -5
- package/dist/lib/browser/index.mjs +34 -17
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{invoker-capability-VCMPQOIA.mjs → invoker-capability-K4GHUFXF.mjs} +12 -11
- package/dist/lib/browser/invoker-capability-K4GHUFXF.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +20 -32
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/testing/react.mjs +11 -11
- package/dist/lib/browser/ui/index.mjs +14 -12
- package/dist/lib/node-esm/{capability-EOQTORML.mjs → capability-FCGZVIEG.mjs} +10 -10
- package/dist/lib/node-esm/{capability-KJTQIWDK.mjs → capability-JOIQ2MQE.mjs} +11 -11
- package/dist/lib/node-esm/capability-JOIQ2MQE.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-FKE4Z3D6.mjs → chunk-37Z53PXZ.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-FKE4Z3D6.mjs.map → chunk-37Z53PXZ.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-WZCSOX5Q.mjs → chunk-6XW6LET6.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-URWHJQT2.mjs → chunk-D347W3KO.mjs} +7 -32
- package/dist/lib/node-esm/chunk-D347W3KO.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-WZ6DHQER.mjs → chunk-DRZKO5UZ.mjs} +147 -75
- package/dist/lib/node-esm/chunk-DRZKO5UZ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-HI3YBICQ.mjs → chunk-HTBJU5FX.mjs} +76 -11
- package/dist/lib/node-esm/chunk-HTBJU5FX.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-M3HKPRPO.mjs +423 -0
- package/dist/lib/node-esm/chunk-M3HKPRPO.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-MUVUQC3G.mjs +1175 -0
- package/dist/lib/node-esm/chunk-MUVUQC3G.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-VKHGNEDB.mjs → chunk-SBS2YMPT.mjs} +3 -3
- package/dist/lib/node-esm/{chunk-VKHGNEDB.mjs.map → chunk-SBS2YMPT.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-42KBWDE4.mjs → chunk-SDJ4B2LU.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-42KBWDE4.mjs.map → chunk-SDJ4B2LU.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-JPWVIQ5I.mjs → chunk-V24UWT36.mjs} +4 -17
- package/dist/lib/node-esm/chunk-V24UWT36.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-G3RTFSNG.mjs → chunk-WFSRZKBP.mjs} +2 -2
- package/dist/lib/node-esm/chunk-WFSRZKBP.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-WK7OIQKI.mjs +70 -0
- package/dist/lib/node-esm/chunk-WK7OIQKI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-ZZ7CKK6W.mjs → chunk-XOCUANHO.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-ZZ7CKK6W.mjs.map → chunk-XOCUANHO.mjs.map} +2 -2
- package/dist/lib/node-esm/cli/index.mjs +14 -28
- package/dist/lib/node-esm/cli/index.mjs.map +3 -3
- package/dist/lib/node-esm/common/activation-events.mjs +7 -7
- package/dist/lib/node-esm/common/capabilities.mjs +7 -7
- package/dist/lib/node-esm/core/activation-event.mjs +1 -1
- package/dist/lib/node-esm/core/capability.mjs +1 -1
- package/dist/lib/node-esm/core/plugin-manager.mjs +8 -4
- package/dist/lib/node-esm/core/plugin.mjs +10 -2
- package/dist/lib/node-esm/core/url-loader.mjs +13 -5
- package/dist/lib/node-esm/index.mjs +34 -17
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{invoker-capability-EGA3XW6J.mjs → invoker-capability-XEPW5LMJ.mjs} +12 -11
- package/dist/lib/node-esm/invoker-capability-XEPW5LMJ.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +20 -32
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/testing/react.mjs +11 -11
- package/dist/lib/node-esm/ui/index.mjs +14 -12
- package/dist/plugin/node-esm/index.mjs +136 -37
- package/dist/plugin/node-esm/index.mjs.map +4 -4
- package/dist/plugin/node-esm/meta.json +1 -1
- package/dist/types/src/common/annotations.d.ts +1 -0
- package/dist/types/src/common/annotations.d.ts.map +1 -0
- package/dist/types/src/common/capabilities.d.ts +2 -1
- package/dist/types/src/common/capabilities.d.ts.map +1 -1
- package/dist/types/src/common/operations.d.ts +1 -1
- package/dist/types/src/common/operations.d.ts.map +1 -1
- package/dist/types/src/core/activation-event.d.ts +4 -4
- package/dist/types/src/core/activation-event.d.ts.map +1 -1
- package/dist/types/src/core/capability-manager.d.ts.map +1 -1
- package/dist/types/src/core/capability.d.ts +2 -2
- package/dist/types/src/core/capability.d.ts.map +1 -1
- package/dist/types/src/core/edge-registry-plugin-provider.d.ts +30 -0
- package/dist/types/src/core/edge-registry-plugin-provider.d.ts.map +1 -0
- package/dist/types/src/core/index.d.ts +5 -0
- package/dist/types/src/core/index.d.ts.map +1 -1
- package/dist/types/src/core/plugin-asset-cache.d.ts +71 -0
- package/dist/types/src/core/plugin-asset-cache.d.ts.map +1 -0
- package/dist/types/src/core/plugin-manager.d.ts +163 -2
- package/dist/types/src/core/plugin-manager.d.ts.map +1 -1
- package/dist/types/src/core/plugin-manifest.d.ts +101 -0
- package/dist/types/src/core/plugin-manifest.d.ts.map +1 -0
- package/dist/types/src/core/plugin-manifest.test.d.ts +2 -0
- package/dist/types/src/core/plugin-manifest.test.d.ts.map +1 -0
- package/dist/types/src/core/plugin.d.ts +80 -0
- package/dist/types/src/core/plugin.d.ts.map +1 -1
- package/dist/types/src/core/registry.d.ts +101 -0
- package/dist/types/src/core/registry.d.ts.map +1 -0
- package/dist/types/src/core/url-loader.d.ts +88 -3
- package/dist/types/src/core/url-loader.d.ts.map +1 -1
- package/dist/types/src/helpers.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/capability.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/errors.d.ts +6 -6
- package/dist/types/src/plugin-operation/history/errors.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/history-tracker.d.ts +1 -1
- package/dist/types/src/plugin-operation/history/history-tracker.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/types.d.ts +1 -1
- package/dist/types/src/plugin-operation/history/types.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +1 -1
- package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/history/undo-registry.d.ts +1 -1
- package/dist/types/src/plugin-operation/history/undo-registry.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/invoker-capability.d.ts +1 -1
- package/dist/types/src/plugin-operation/invoker-capability.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/meta.d.ts.map +1 -1
- package/dist/types/src/plugin-operation/testing.d.ts +2 -1
- package/dist/types/src/plugin-operation/testing.d.ts.map +1 -1
- package/dist/types/src/plugin-runtime/capability.d.ts +1 -1
- package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -1
- package/dist/types/src/plugin-runtime/meta.d.ts.map +1 -1
- package/dist/types/src/testing/harness.d.ts +1 -1
- package/dist/types/src/testing/harness.d.ts.map +1 -1
- package/dist/types/src/testing/react.d.ts.map +1 -1
- package/dist/types/src/testing/service.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
- package/dist/types/src/testing/withPluginManager.stories.d.ts.map +1 -1
- package/dist/types/src/ui/components/App/App.d.ts.map +1 -1
- package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -1
- package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts +64 -0
- package/dist/types/src/ui/components/Placeholder/Placeholder.d.ts.map +1 -0
- package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts +19 -0
- package/dist/types/src/ui/components/Placeholder/Placeholder.stories.d.ts.map +1 -0
- package/dist/types/src/ui/components/Placeholder/index.d.ts +2 -0
- package/dist/types/src/ui/components/Placeholder/index.d.ts.map +1 -0
- package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/SurfaceProfilerContext.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/index.d.ts +1 -1
- package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -1
- package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -1
- package/dist/types/src/ui/components/index.d.ts +1 -0
- package/dist/types/src/ui/components/index.d.ts.map +1 -1
- package/dist/types/src/ui/hooks/useApp.d.ts +30 -3
- package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -1
- package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -1
- package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -1
- package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts +20 -36
- package/dist/types/src/vite-plugin/boot-loader/BootLoader.stories.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/boot-loader/index.d.ts +1 -50
- package/dist/types/src/vite-plugin/boot-loader/index.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/boot-loader/loader.d.ts +51 -0
- package/dist/types/src/vite-plugin/boot-loader/loader.d.ts.map +1 -0
- package/dist/types/src/vite-plugin/composer/index.d.ts +12 -12
- package/dist/types/src/vite-plugin/composer/index.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/import-map/index.d.ts +13 -1
- package/dist/types/src/vite-plugin/import-map/index.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/manifest.d.ts +30 -5
- package/dist/types/src/vite-plugin/manifest.d.ts.map +1 -1
- package/dist/types/src/vite-plugin/packages.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -23
- package/src/cli/cli.ts +1 -1
- package/src/common/annotations.ts +3 -0
- package/src/common/capabilities.ts +2 -1
- package/src/common/operations.ts +1 -1
- package/src/core/capability.ts +1 -1
- package/src/core/edge-registry-plugin-provider.ts +92 -0
- package/src/core/index.ts +5 -0
- package/src/core/plugin-asset-cache.ts +60 -0
- package/src/core/plugin-manager.test.ts +533 -4
- package/src/core/plugin-manager.ts +470 -28
- package/src/core/plugin-manifest.test.ts +75 -0
- package/src/core/plugin-manifest.ts +134 -0
- package/src/core/plugin.ts +103 -0
- package/src/core/registry.ts +157 -0
- package/src/core/url-loader.test.ts +115 -6
- package/src/core/url-loader.ts +253 -43
- package/src/plugin-operation/history/capability.ts +1 -1
- package/src/plugin-operation/history/history-tracker.test.ts +2 -1
- package/src/plugin-operation/history/history-tracker.ts +1 -1
- package/src/plugin-operation/history/types.ts +1 -1
- package/src/plugin-operation/history/undo-mapping.ts +1 -1
- package/src/plugin-operation/history/undo-registry.ts +1 -1
- package/src/plugin-operation/invoker-capability.ts +2 -1
- package/src/plugin-operation/meta.ts +1 -0
- package/src/plugin-operation/testing.ts +2 -1
- package/src/plugin-runtime/meta.ts +1 -0
- package/src/testing/harness.ts +2 -2
- package/src/testing/service.ts +1 -1
- package/src/testing/withPluginManager.stories.tsx +1 -1
- package/src/ui/components/App/App.stories.tsx +2 -6
- package/src/ui/components/App/App.tsx +12 -1
- package/src/ui/components/Placeholder/Placeholder.stories.tsx +77 -0
- package/src/ui/components/Placeholder/Placeholder.tsx +155 -0
- package/src/ui/components/Placeholder/index.ts +5 -0
- package/src/ui/components/PluginManager/PluginManagerContext.stories.tsx +4 -2
- package/src/ui/components/Surface/SurfaceComponent.stories.tsx +1 -1
- package/src/ui/components/Surface/SurfaceComponent.tsx +2 -2
- package/src/ui/components/Surface/SurfaceInfo.tsx +0 -1
- package/src/ui/components/index.ts +1 -0
- package/src/ui/hooks/useApp.test.tsx +1 -1
- package/src/ui/hooks/useApp.tsx +161 -26
- package/src/ui/hooks/useLoading.tsx +14 -6
- package/src/vite-plugin/boot-loader/BootLoader.stories.tsx +208 -100
- package/src/vite-plugin/boot-loader/boot-loader.css +248 -45
- package/src/vite-plugin/boot-loader/boot-loader.js +309 -39
- package/src/vite-plugin/boot-loader/index.ts +1 -95
- package/src/vite-plugin/boot-loader/loader.ts +123 -0
- package/src/vite-plugin/composer/index.ts +61 -39
- package/src/vite-plugin/import-map/index.ts +42 -5
- package/src/vite-plugin/index.ts +2 -2
- package/src/vite-plugin/manifest.test.ts +27 -4
- package/src/vite-plugin/manifest.ts +42 -5
- package/src/vite-plugin/packages.ts +8 -2
- package/tsconfig.json +16 -1
- package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
- package/dist/lib/browser/capability-DOMNPRJP.mjs.map +0 -7
- package/dist/lib/browser/chunk-7B6AJK4D.mjs +0 -964
- package/dist/lib/browser/chunk-7B6AJK4D.mjs.map +0 -7
- package/dist/lib/browser/chunk-BMIAYUWT.mjs.map +0 -7
- package/dist/lib/browser/chunk-F7FW2RK2.mjs.map +0 -7
- package/dist/lib/browser/chunk-GDWTW4ZW.mjs.map +0 -7
- package/dist/lib/browser/chunk-JKWMHZP6.mjs.map +0 -7
- package/dist/lib/browser/chunk-QRTB4Q3U.mjs.map +0 -7
- package/dist/lib/browser/chunk-RFSO3JRG.mjs +0 -1
- package/dist/lib/browser/chunk-RFSO3JRG.mjs.map +0 -7
- package/dist/lib/browser/chunk-Y543KCO7.mjs +0 -174
- package/dist/lib/browser/chunk-Y543KCO7.mjs.map +0 -7
- package/dist/lib/browser/invoker-capability-VCMPQOIA.mjs.map +0 -7
- package/dist/lib/node-esm/capability-KJTQIWDK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7PJ5OKRB.mjs +0 -965
- package/dist/lib/node-esm/chunk-7PJ5OKRB.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-DXVXOGJ7.mjs +0 -175
- package/dist/lib/node-esm/chunk-DXVXOGJ7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-EL3R25OQ.mjs +0 -2
- package/dist/lib/node-esm/chunk-EL3R25OQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-G3RTFSNG.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HI3YBICQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JPWVIQ5I.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-URWHJQT2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WZ6DHQER.mjs.map +0 -7
- package/dist/lib/node-esm/invoker-capability-EGA3XW6J.mjs.map +0 -7
- /package/dist/lib/browser/{capability-KSNT34SN.mjs.map → capability-LUKGKUQH.mjs.map} +0 -0
- /package/dist/lib/browser/{chunk-I34GF4NG.mjs.map → chunk-45CHLTBV.mjs.map} +0 -0
- /package/dist/lib/node-esm/{capability-EOQTORML.mjs.map → capability-FCGZVIEG.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-WZCSOX5Q.mjs.map → chunk-6XW6LET6.mjs.map} +0 -0
|
@@ -14,14 +14,31 @@
|
|
|
14
14
|
* to React's `<Placeholder>`.
|
|
15
15
|
*/
|
|
16
16
|
#boot-loader {
|
|
17
|
+
/*
|
|
18
|
+
* Tunable sizes — change these in one place and every derived calc()
|
|
19
|
+
* (mark size, dot orbit radius, status offset, …) follows.
|
|
20
|
+
*/
|
|
21
|
+
/*
|
|
22
|
+
* Caps the disc / mark at the design pixel sizes on roomy viewports while
|
|
23
|
+
* shrinking proportionally on narrow ones (`vmin` follows the smaller of
|
|
24
|
+
* width / height) so neither the ring nor the mark crops on phones.
|
|
25
|
+
*/
|
|
26
|
+
--boot-loader-disc-size: min(384px, 80vmin);
|
|
27
|
+
/*
|
|
28
|
+
* Match the React `Placeholder`'s logo box (`h-[300px] w-[300px]` at the
|
|
29
|
+
* `stage >= 1` keyframe) so the brand mark doesn't visibly jump size when
|
|
30
|
+
* the loader hands off — the responsive cap keeps the same 300/384 ratio
|
|
31
|
+
* (≈78%) at any viewport width.
|
|
32
|
+
*/
|
|
33
|
+
--boot-loader-mark-size: min(300px, 62.5vmin);
|
|
34
|
+
--boot-loader-dot-size: 6px;
|
|
35
|
+
--boot-loader-line-thickness: 1px;
|
|
36
|
+
--boot-loader-line-feather: 1px;
|
|
37
|
+
--boot-loader-status-gap: 32px;
|
|
38
|
+
|
|
17
39
|
position: fixed;
|
|
18
40
|
inset: 0;
|
|
19
|
-
z-index:
|
|
20
|
-
display: flex;
|
|
21
|
-
flex-direction: column;
|
|
22
|
-
align-items: center;
|
|
23
|
-
justify-content: center;
|
|
24
|
-
gap: 16px;
|
|
41
|
+
z-index: 10;
|
|
25
42
|
background: var(--boot-loader-bg-light, #fafafa);
|
|
26
43
|
color: var(--boot-loader-fg-light, #0a0a0a);
|
|
27
44
|
font-family:
|
|
@@ -41,77 +58,263 @@
|
|
|
41
58
|
}
|
|
42
59
|
}
|
|
43
60
|
|
|
61
|
+
/*
|
|
62
|
+
* Register the progress var as a typed custom property so the browser can
|
|
63
|
+
* interpolate it. Both the conic-gradient arc and the orbiting dot derive
|
|
64
|
+
* their angle from `--boot-loader-bar-progress`, so animating the var (rather
|
|
65
|
+
* than the resulting `background` / `transform`) keeps them in lockstep —
|
|
66
|
+
* `transition: background` on a conic-gradient doesn't interpolate smoothly
|
|
67
|
+
* in all engines, which previously caused the head of the arc to flicker
|
|
68
|
+
* against the dot during each progress step.
|
|
69
|
+
*/
|
|
70
|
+
@property --boot-loader-bar-progress {
|
|
71
|
+
syntax: '<number>';
|
|
72
|
+
inherits: true;
|
|
73
|
+
initial-value: 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
* Stack the ring and the brand mark in the same square so the mark sits
|
|
78
|
+
* centered inside the circle. Grid stacking keeps the mark outside the ring's
|
|
79
|
+
* mask (the mask would otherwise clip the SVG to the 1px-thick arc shape).
|
|
80
|
+
*/
|
|
81
|
+
#boot-loader-disc {
|
|
82
|
+
position: absolute;
|
|
83
|
+
top: 50%;
|
|
84
|
+
left: 50%;
|
|
85
|
+
display: grid;
|
|
86
|
+
place-items: center;
|
|
87
|
+
width: var(--boot-loader-disc-size);
|
|
88
|
+
height: var(--boot-loader-disc-size);
|
|
89
|
+
transform: translate(-50%, -50%);
|
|
90
|
+
transition: --boot-loader-bar-progress 240ms ease-out;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#boot-loader-disc > * {
|
|
94
|
+
grid-column: 1;
|
|
95
|
+
grid-row: 1;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/*
|
|
99
|
+
* Default to grayscale so the mark reads as a quiet monochrome silhouette
|
|
100
|
+
* before any host-driven progress lands; the brand palette swaps in once
|
|
101
|
+
* the driver flips `data-host-driven` on the disc (state-2 entry — the
|
|
102
|
+
* first `__bootLoader.progress()` call). Hover keeps a parallel reveal
|
|
103
|
+
* affordance for inspection in the storybook. The 600ms ease lets the
|
|
104
|
+
* grayscale → color transition play through the activation phase rather
|
|
105
|
+
* than snapping.
|
|
106
|
+
*/
|
|
44
107
|
#boot-loader-mark {
|
|
45
|
-
width:
|
|
46
|
-
height:
|
|
108
|
+
width: var(--boot-loader-mark-size);
|
|
109
|
+
height: var(--boot-loader-mark-size);
|
|
47
110
|
display: flex;
|
|
48
111
|
align-items: center;
|
|
49
112
|
justify-content: center;
|
|
50
|
-
|
|
113
|
+
filter: grayscale(100%);
|
|
114
|
+
transition: filter 1000ms ease-out;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/*
|
|
118
|
+
* `grayscale(0%)` (identity) rather than `none` — `filter: none` changes
|
|
119
|
+
* the filter function list and most engines treat that as a discrete
|
|
120
|
+
* transition (snap, not ease). Keeping `grayscale(...)` on both sides of
|
|
121
|
+
* the rule lets the browser interpolate the percentage smoothly.
|
|
122
|
+
*/
|
|
123
|
+
#boot-loader-disc[data-host-driven] #boot-loader-mark,
|
|
124
|
+
#boot-loader-mark:hover {
|
|
125
|
+
filter: grayscale(0%);
|
|
51
126
|
}
|
|
52
127
|
|
|
53
128
|
#boot-loader-mark svg {
|
|
54
129
|
width: 100%;
|
|
55
130
|
height: 100%;
|
|
56
|
-
/*
|
|
131
|
+
/*
|
|
132
|
+
* The host SVG carries its own brand-palette fills, so we don't apply a
|
|
133
|
+
* `color` cascade here. SVGs that intentionally use `fill="currentColor"`
|
|
134
|
+
* still pick up the loader's text colour via `#boot-loader`'s `color`.
|
|
135
|
+
*/
|
|
57
136
|
}
|
|
58
137
|
|
|
138
|
+
/*
|
|
139
|
+
* Circular determinate progress — a 1px-thick ring carved out of a filled
|
|
140
|
+
* disc by a radial-gradient mask. The mask applies to the element and its
|
|
141
|
+
* descendants so the `::before` progress arc is clipped to the ring shape
|
|
142
|
+
* too. There is no indeterminate state: the ring sits empty (0%) until the
|
|
143
|
+
* host calls `__bootLoader.progress(fraction)`, then the arc grows in place.
|
|
144
|
+
* The fill repaints on the compositor thread so progress remains visually
|
|
145
|
+
* smooth even while the JS main thread is busy parsing modules.
|
|
146
|
+
*/
|
|
59
147
|
#boot-loader-bar {
|
|
60
148
|
position: relative;
|
|
61
|
-
width:
|
|
62
|
-
height:
|
|
63
|
-
|
|
149
|
+
width: 100%;
|
|
150
|
+
height: 100%;
|
|
151
|
+
border-radius: 50%;
|
|
64
152
|
background: rgba(127, 127, 127, 0.18);
|
|
65
|
-
|
|
153
|
+
opacity: 0.3;
|
|
154
|
+
/*
|
|
155
|
+
* Feather the inner edge so the thin line gets soft anti-aliased edges
|
|
156
|
+
* instead of a hard pixel cutoff (which can look stair-stepped on
|
|
157
|
+
* non-retina screens). The outer edge is clipped by `border-radius: 50%`,
|
|
158
|
+
* so only the inner side of the ring needs the gradient feather. The
|
|
159
|
+
* solid line lives in the outermost `--boot-loader-line-thickness` of the
|
|
160
|
+
* disc; the feather extends `--boot-loader-line-feather` further inward.
|
|
161
|
+
*/
|
|
162
|
+
mask: radial-gradient(
|
|
163
|
+
circle closest-side,
|
|
164
|
+
transparent calc(100% - var(--boot-loader-line-thickness) - var(--boot-loader-line-feather)),
|
|
165
|
+
#000 calc(100% - var(--boot-loader-line-thickness))
|
|
166
|
+
);
|
|
167
|
+
-webkit-mask: radial-gradient(
|
|
168
|
+
circle closest-side,
|
|
169
|
+
transparent calc(100% - var(--boot-loader-line-thickness) - var(--boot-loader-line-feather)),
|
|
170
|
+
#000 calc(100% - var(--boot-loader-line-thickness))
|
|
171
|
+
);
|
|
66
172
|
}
|
|
67
173
|
|
|
174
|
+
/*
|
|
175
|
+
* The host writes 0–100 into `--boot-loader-bar-progress` via
|
|
176
|
+
* `__bootLoader.progress(fraction)`. The `transition: background` smooths
|
|
177
|
+
* the transitions between counter ticks so the arc grows continuously
|
|
178
|
+
* rather than snapping. `conic-gradient` is clockwise-only, so the arc is
|
|
179
|
+
* mirrored horizontally with `scaleX(-1)` to grow anticlockwise from
|
|
180
|
+
* 12 o'clock.
|
|
181
|
+
*/
|
|
68
182
|
#boot-loader-bar::before {
|
|
69
183
|
content: '';
|
|
70
184
|
position: absolute;
|
|
71
185
|
inset: 0;
|
|
72
|
-
|
|
73
|
-
background: currentcolor;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
animation: boot-loader-bar 1.4s ease-in-out infinite;
|
|
186
|
+
border-radius: 50%;
|
|
187
|
+
background: conic-gradient(currentcolor calc(var(--boot-loader-bar-progress, 0) * 1%), transparent 0);
|
|
188
|
+
transform: scaleX(-1);
|
|
189
|
+
opacity: 0.5;
|
|
77
190
|
}
|
|
78
191
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
192
|
+
/*
|
|
193
|
+
* A small dot at the leading edge of the arc. Lives as a sibling of the
|
|
194
|
+
* masked ring (inside `#boot-loader-disc`) so the radial-gradient mask
|
|
195
|
+
* doesn't clip it. The `rotate(...) translateY(-50%)` recipe orbits the
|
|
196
|
+
* dot around the disc centre: at progress 0 it sits at 12 o'clock; the
|
|
197
|
+
* negative rotation grows it anticlockwise to match the arc.
|
|
198
|
+
*/
|
|
199
|
+
#boot-loader-dot {
|
|
200
|
+
position: absolute;
|
|
201
|
+
top: 50%;
|
|
202
|
+
left: 50%;
|
|
203
|
+
width: var(--boot-loader-dot-size);
|
|
204
|
+
height: var(--boot-loader-dot-size);
|
|
205
|
+
margin: calc(var(--boot-loader-dot-size) / -2) 0 0 calc(var(--boot-loader-dot-size) / -2);
|
|
206
|
+
border-radius: 50%;
|
|
207
|
+
background: currentcolor;
|
|
208
|
+
opacity: 0.5;
|
|
209
|
+
/*
|
|
210
|
+
* Orbit radius = `disc/2 - line/2` so the dot's centre lands on the solid
|
|
211
|
+
* line's centre rather than on the disc's outer edge (the line lives in
|
|
212
|
+
* the outermost `--boot-loader-line-thickness` of the disc).
|
|
213
|
+
*/
|
|
214
|
+
transform: rotate(calc(var(--boot-loader-bar-progress, 0) * -3.6deg))
|
|
215
|
+
translateY(calc(var(--boot-loader-disc-size) / -2 + var(--boot-loader-line-thickness) / 2));
|
|
216
|
+
transition: opacity 200ms ease-out;
|
|
86
217
|
}
|
|
87
218
|
|
|
88
219
|
/*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
* continuously rather than snapping.
|
|
220
|
+
* The driver sets `data-progress-active` on `#boot-loader-disc` while
|
|
221
|
+
* progress is strictly between 0 and 1, hiding the dot at the empty (0%)
|
|
222
|
+
* and full (100%) ring states where it would either sit on a bare ring or
|
|
223
|
+
* coincide with the start of the arc.
|
|
94
224
|
*/
|
|
95
|
-
#boot-loader-
|
|
96
|
-
|
|
97
|
-
animation: none;
|
|
98
|
-
transform: none;
|
|
99
|
-
transition: width 240ms ease-out;
|
|
225
|
+
#boot-loader-disc[data-progress-active] #boot-loader-dot {
|
|
226
|
+
opacity: 0.5;
|
|
100
227
|
}
|
|
101
228
|
|
|
102
229
|
#boot-loader-status {
|
|
103
|
-
|
|
230
|
+
position: absolute;
|
|
231
|
+
top: 50%;
|
|
232
|
+
left: 0;
|
|
233
|
+
right: 0;
|
|
234
|
+
/*
|
|
235
|
+
* Sit just below the centered disc — half the disc plus the configured gap.
|
|
236
|
+
*/
|
|
237
|
+
transform: translate(0, calc(var(--boot-loader-disc-size) / 2 + var(--boot-loader-status-gap)));
|
|
104
238
|
/*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* slightly different rendered heights as the text changed, which reflowed
|
|
109
|
-
* the flex column and bumped the progress bar a few pixels each time.
|
|
110
|
-
* `white-space: nowrap` makes sure long phase strings ("Loading
|
|
111
|
-
* framework…") never wrap to a second line.
|
|
239
|
+
* Slightly de-emphasised vs body text so the brand mark + ring stay the
|
|
240
|
+
* dominant focus, but high enough to remain legible on both light and dark
|
|
241
|
+
* backgrounds without a custom palette.
|
|
112
242
|
*/
|
|
113
|
-
|
|
243
|
+
opacity: 0.5;
|
|
244
|
+
/*
|
|
245
|
+
* Terminal-style log viewport (3 rows at the default `line-height`) over
|
|
246
|
+
* a vertically-stacked track of every status the driver has emitted. The
|
|
247
|
+
* track is bottom-anchored via `justify-content: flex-end` so the newest
|
|
248
|
+
* line always sits on the last visible row, older lines stack above it,
|
|
249
|
+
* and anything that doesn't fit is clipped at the top by
|
|
250
|
+
* `overflow: hidden`. The driver runs a FLIP-style transform animation
|
|
251
|
+
* per append so each new line slides up from below the bottom edge —
|
|
252
|
+
* independent of any `scroll-behavior` smooth-scroll support, which
|
|
253
|
+
* Playwright/headless Chrome strips even from spec-compliant
|
|
254
|
+
* `scrollTo({ behavior: 'smooth' })` calls.
|
|
255
|
+
*/
|
|
256
|
+
display: flex;
|
|
257
|
+
flex-direction: column;
|
|
258
|
+
justify-content: flex-end;
|
|
259
|
+
height: 4.5em;
|
|
114
260
|
line-height: 1.5;
|
|
115
261
|
letter-spacing: 0.01em;
|
|
262
|
+
/*
|
|
263
|
+
* Fixed-width digits so the `(i/n)` counter on range-bearing status
|
|
264
|
+
* updates ("Loading plugins (12/80)") doesn't jitter as the index
|
|
265
|
+
* ticks through different glyph widths.
|
|
266
|
+
*/
|
|
267
|
+
font-variant-numeric: tabular-nums;
|
|
268
|
+
text-align: center;
|
|
269
|
+
overflow: hidden;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
#boot-loader-status-fade {
|
|
273
|
+
position: absolute;
|
|
274
|
+
top: 0;
|
|
275
|
+
left: 0;
|
|
276
|
+
width: 100%;
|
|
277
|
+
height: 32px;
|
|
278
|
+
background: linear-gradient(to bottom, var(--boot-loader-bg-light, #fafafa), transparent);
|
|
279
|
+
z-index: 1;
|
|
280
|
+
}
|
|
281
|
+
@media (prefers-color-scheme: dark) {
|
|
282
|
+
#boot-loader-status-fade {
|
|
283
|
+
background: linear-gradient(to bottom, var(--boot-loader-bg-dark, #0a0a0a), transparent);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/*
|
|
288
|
+
* Track of every appended `.boot-loader-status-line`. The driver writes
|
|
289
|
+
* `--boot-loader-line` (0 = first line visible, 1 = second, …) on this
|
|
290
|
+
* element and the `transform` interpolates because `--boot-loader-line` is
|
|
291
|
+
* registered as a typed `<number>` custom property below.
|
|
292
|
+
*/
|
|
293
|
+
#boot-loader-status-track {
|
|
294
|
+
display: flex;
|
|
295
|
+
flex-direction: column;
|
|
296
|
+
/*
|
|
297
|
+
* Resting transform is `translateY(0)` — the bottom-anchored flex
|
|
298
|
+
* parent already positions the newest line on the last visible row.
|
|
299
|
+
* On each append the driver does a one-shot FLIP: snap to
|
|
300
|
+
* `translateY(<lineHeight>px)` with no transition (placing the new
|
|
301
|
+
* line just below the viewport), force a reflow, then animate back to
|
|
302
|
+
* 0 so the track rises by one line-height and the new entry slides up
|
|
303
|
+
* into the bottom row. See `boot-loader.js`.
|
|
304
|
+
*/
|
|
305
|
+
transform: translateY(0);
|
|
306
|
+
transition: transform 500ms ease-out;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/* Honour reduced-motion preferences explicitly — `transition` doesn't auto-respect it. */
|
|
310
|
+
@media (prefers-reduced-motion: reduce) {
|
|
311
|
+
#boot-loader-status-track {
|
|
312
|
+
transition: none;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.boot-loader-status-line {
|
|
317
|
+
flex: 0 0 auto;
|
|
318
|
+
height: 1.5em;
|
|
116
319
|
white-space: nowrap;
|
|
117
320
|
}
|