@portfoliablejs/valence 0.1.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/LICENSE +21 -0
- package/README.md +23 -0
- package/package.json +68 -0
- package/public/favicon.svg +1 -0
- package/public/icons.svg +24 -0
- package/src/assets/devices/apple/mobile/consulta.avif +0 -0
- package/src/assets/devices/apple/mobile/iphone17.avif +0 -0
- package/src/assets/devices/apple/mobile/iphone6.avif +0 -0
- package/src/assets/devices/apple/mobile/iphonex.avif +0 -0
- package/src/assets/devices/apple/wearables/appleWatch.avif +0 -0
- package/src/assets/hero.png +0 -0
- package/src/assets/javascript.svg +1 -0
- package/src/assets/vite.svg +1 -0
- package/src/counter.js +9 -0
- package/src/index.js +25 -0
- package/src/lib/i18n.js +50 -0
- package/src/main.js +50 -0
- package/src/stories/assets/mockups/desktop/apple/Apple MacBook Air/Device/Apple MacBook Air Gold.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple MacBook Air/Device/Apple MacBook Air Silver.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple MacBook Air/Device/Apple MacBook Air Space Grey.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple MacBook Pro/Device/Apple Macbook Pro 13 Silver.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple MacBook Pro/Device/Apple Macbook Pro 13 Space Grey.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple MacBook Pro/Device/Apple Macbook Pro 16 Silver.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple MacBook Pro/Device/Apple Macbook Pro 16 Space Grey.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple Macbook/Device/Apple-Macbook-Gold.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple Macbook/Device/Apple-Macbook-Space-Grey.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple Pro Display XDR/Device/Apple Pro Display XDR.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple Thunderbolt Display/Device/Apple Thunderbolt Display.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple iMac/Device/Apple iMac.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple iMac 24 2021/Device/Apple iMac 24 Blue.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple iMac 24 2021/Device/Apple iMac 24 Green.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple iMac 24 2021/Device/Apple iMac 24 Orange.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple iMac 24 2021/Device/Apple iMac 24 Purple.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple iMac 24 2021/Device/Apple iMac 24 Red.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple iMac 24 2021/Device/Apple iMac 24 Silver.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple iMac 24 2021/Device/Apple iMac 24 Yellow.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple iMac Pro/Device/Apple iMac Pro.avif +0 -0
- package/src/stories/assets/mockups/desktop/apple/Apple iMac Retina/Device/Apple iMac Retina.avif +0 -0
- package/src/stories/assets/mockups/desktop/dell/Dell UltraSharp HD 5K Monitor/Device/Dell UltraSharp 5K Monitor 27 90deg.avif +0 -0
- package/src/stories/assets/mockups/desktop/dell/Dell UltraSharp HD 5K Monitor/Device/Dell UltraSharp 5K Monitor 27.avif +0 -0
- package/src/stories/assets/mockups/desktop/dell/Dell UltraSharp Monitor/24 Inch/Device/Dell UltraSharp 24 90deg.avif +0 -0
- package/src/stories/assets/mockups/desktop/dell/Dell UltraSharp Monitor/24 Inch/Device/Dell UltraSharp 24.avif +0 -0
- package/src/stories/assets/mockups/desktop/dell/Dell UltraSharp Monitor/27 Inch/Device/Dell UltraSharp 27 90deg.avif +0 -0
- package/src/stories/assets/mockups/desktop/dell/Dell UltraSharp Monitor/27 Inch/Device/Dell UltraSharp 27.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11/Device/Apple iPhone 11 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11/Device/Apple iPhone 11 Green.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11/Device/Apple iPhone 11 Purple.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11/Device/Apple iPhone 11 Red.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11/Device/Apple iPhone 11 White.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11/Device/Apple iPhone 11 Yellow.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11 Pro/Device/Apple iPhone 11 Pro Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11 Pro/Device/Apple iPhone 11 Pro Midnight Green.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11 Pro/Device/Apple iPhone 11 Pro Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11 Pro/Device/Apple iPhone 11 Pro Space Grey.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11 Pro Max/Device/Apple iPhone 11 Pro Max Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11 Pro Max/Device/Apple iPhone 11 Pro Max Midnight Green.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11 Pro Max/Device/Apple iPhone 11 Pro Max Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 11 Pro Max/Device/Apple iPhone 11 Pro Max Space Grey.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12/Device/Apple iPhone 12 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12/Device/Apple iPhone 12 Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12/Device/Apple iPhone 12 Green.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12/Device/Apple iPhone 12 Red.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12/Device/Apple iPhone 12 White.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Mini/Device/Apple iPhone 12 Mini Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Mini/Device/Apple iPhone 12 Mini Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Mini/Device/Apple iPhone 12 Mini Green.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Mini/Device/Apple iPhone 12 Mini Red.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Mini/Device/Apple iPhone 12 Mini White.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Pro/Device/Apple iPhone 12 Pro Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Pro/Device/Apple iPhone 12 Pro Graphite.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Pro/Device/Apple iPhone 12 Pro Pacific Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Pro/Device/Apple iPhone 12 Pro Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Pro Max/Device/Apple iPhone 12 Pro Max Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Pro Max/Device/Apple iPhone 12 Pro Max Graphite.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Pro Max/Device/Apple iPhone 12 Pro Max Pacific Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 12 Pro Max/Device/Apple iPhone 12 Pro Max Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13/Device/Apple iPhone 13 /342/200/224 Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13/Device/Apple iPhone 13 /342/200/224 Midnight.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13/Device/Apple iPhone 13 /342/200/224 Pink.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13/Device/Apple iPhone 13 /342/200/224 Red.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13/Device/Apple iPhone 13 /342/200/224 Starlight.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Mini/Device/iPhone 13 Mini /342/200/224 Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Mini/Device/iPhone 13 Mini /342/200/224 Midnight.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Mini/Device/iPhone 13 Mini /342/200/224 Pink.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Mini/Device/iPhone 13 Mini /342/200/224 Red.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Mini/Device/iPhone 13 Mini /342/200/224 Starlight.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Pro/Device/Apple iPhone 13 Pro /342/200/224 Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Pro/Device/Apple iPhone 13 Pro /342/200/224 Graphite.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Pro/Device/Apple iPhone 13 Pro /342/200/224 Sierra Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Pro/Device/Apple iPhone 13 Pro /342/200/224 Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Pro Max/Device/Apple iPhone 13 Pro Max /342/200/224 Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Pro Max/Device/Apple iPhone 13 Pro Max /342/200/224 Graphite.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Pro Max/Device/Apple iPhone 13 Pro Max /342/200/224 Sierra Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 13 Pro Max/Device/Apple iPhone 13 Pro Max /342/200/224 Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 5c/Device/Apple iPhone 5c Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 5c/Device/Apple iPhone 5c Green.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 5c/Device/Apple iPhone 5c Red.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 5c/Device/Apple iPhone 5c White.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 5c/Device/Apple iPhone 5c Yellow.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 5s/Device/Apple iPhone 5s Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 5s/Device/Apple iPhone 5s Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 5s/Device/Apple iPhone 5s Space Gray.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 6s/Device/Apple iPhone 6s Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 6s/Device/Apple iPhone 6s Rose Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 6s/Device/Apple iPhone 6s Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 6s/Device/Apple iPhone 6s Space Gray.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 6s Plus/Device/Apple iPhone 6s Plus Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 6s Plus/Device/Apple iPhone 6s Plus Rose Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 6s Plus/Device/Apple iPhone 6s Plus Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 6s Plus/Device/Apple iPhone 6s Plus Space Gray.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 7/Device/Apple iPhone 7 Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 7/Device/Apple iPhone 7 Jet Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 7/Device/Apple iPhone 7 Matte Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 7/Device/Apple iPhone 7 Rose Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 7/Device/Apple iPhone 7 Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 7 Plus/Device/Apple iPhone 7 Plus Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 7 Plus/Device/Apple iPhone 7 Plus Jet Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 7 Plus/Device/Apple iPhone 7 Plus Matte Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 7 Plus/Device/Apple iPhone 7 Plus Rose Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 7 Plus/Device/Apple iPhone 7 Plus Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 8/Device/Apple iPhone 8 Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 8/Device/Apple iPhone 8 Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 8/Device/Apple iPhone 8 Space Grey.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 8 Plus/Device/Apple iPhone 8 Plus Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 8 Plus/Device/Apple iPhone 8 Plus Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone 8 Plus/Device/Apple iPhone 8 Plus Space Grey.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone SE/Device/Apple iPhone SE Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone SE/Device/Apple iPhone SE Red.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone SE/Device/Apple iPhone SE White.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone X/Device/Apple iPhone X Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone X/Device/Apple iPhone X Space Grey.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XR/Device/Apple iPhone XR Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XR/Device/Apple iPhone XR Coral.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XR/Device/Apple iPhone XR Red.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XR/Device/Apple iPhone XR Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XR/Device/Apple iPhone XR Space Grey.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XR/Device/Apple iPhone XR Yellow.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XS/Device/Apple iPhone XS Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XS/Device/Apple iPhone XS Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XS/Device/Apple iPhone XS Space Grey.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XS Max/Device/Apple iPhone XS Max Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XS Max/Device/Apple iPhone XS Max Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/apple/Apple iPhone XS Max/Device/Apple iPhone XS Max Space Grey.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel/Device/Google Pixel Quite Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel/Device/Google Pixel Really Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel/Device/Google Pixel Very Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 2/Device/Google PIxel 2 Kinda Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 2/Device/Google Pixel 2 Clearly White.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 2/Device/Google Pixel 2 Just Black.avif +0 -0
- White.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 2 XL/Device/Google Pixel 2 XL Just Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 3/Device/Google Pixel 3 - Clearly White.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 3/Device/Google Pixel 3 - Just Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 3/Device/Google Pixel 3 - Not Pink.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 3 XL/Device/Google Pixel 3 XL - Clearly White.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 3 XL/Device/Google Pixel 3 XL - Just Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 3 XL/Device/Google Pixel 3 XL - Not Pink.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 4/Device/Google Pixel 4 Clearly White.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 4/Device/Google Pixel 4 Just Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 4/Device/Google Pixel 4 Oh So Orange.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 4 XL/Device/Google Pixel 4 XL Clearly White.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 4 XL/Device/Google Pixel 4 XL Just Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 4 XL/Device/Google Pixel 4 XL Oh So Orange.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 5/Device/Google Pixel 5 Just Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Google Pixel 5/Device/Google Pixel 5/302/240Sorta Sage.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Nexus 4/Device/Nexus 4.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Nexus 5X/Device/Nexus 5x.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Nexus 6P/Device/Nexus 6P.avif +0 -0
- package/src/stories/assets/mockups/mobile/google/Nexus 9/Device/Nexus 9.avif +0 -0
- package/src/stories/assets/mockups/mobile/htcone/HTC One A9/Device/HTC One A9 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/htcone/HTC One A9/Device/HTC One A9 White.avif +0 -0
- package/src/stories/assets/mockups/mobile/huawei/Huawei P8/Device/Huawei P8 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/huawei/Huawei P8/Device/Huawei P8 White.avif +0 -0
- package/src/stories/assets/mockups/mobile/microsoft/Microsoft Lumia 950/Device/Microsoft Lumia 950 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/microsoft/Microsoft Lumia 950/Device/Microsoft Lumia 950 White.avif +0 -0
- package/src/stories/assets/mockups/mobile/motorola/Motorola Moto E/Device/Motorola Moto E Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/motorola/Motorola Moto E/Device/Motorola Moto E White.avif +0 -0
- package/src/stories/assets/mockups/mobile/motorola/Motorola Moto G/Device/Motorola Moto G.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note 5/Device/Samsung Galaxy Note 5 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note 5/Device/Samsung Galaxy Note 5 Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note 5/Device/Samsung Galaxy Note 5 Pink.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note 5/Device/Samsung Galaxy Note 5 Silver Titanium.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note 5/Device/Samsung Galaxy Note 5 White.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note10/Device/Samsung Galaxy Note10 Aura Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note10/Device/Samsung Galaxy Note10 Aura Glow.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note10/Device/Samsung Galaxy Note10 Aura Pink.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note10/Device/Samsung Galaxy Note10 Aura Red.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note10/Device/Samsung Galaxy Note10 Aura White.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note10+/Device/Samsung Galaxy Note10+ Aura Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note10+/Device/Samsung Galaxy Note10+ Aura Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note10+/Device/Samsung Galaxy Note10+ Aura Glow.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Note10+/Device/Samsung Galaxy Note10+ Aura White.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S Duos/Device/Samsung Galaxy S Duos.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10/Device/Samsung Galaxy S10 Flamingo Pink.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10/Device/Samsung Galaxy S10 Prism Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10/Device/Samsung Galaxy S10 Prism Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10/Device/Samsung Galaxy S10 Prism Green.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10/Device/Samsung Galaxy S10 Prism White.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10+/Device/Samsung Galaxy S10+ Ceramic White.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10+/Device/Samsung Galaxy S10+ Flamingo Pink.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10+/Device/Samsung Galaxy S10+ Prism Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10+/Device/Samsung Galaxy S10+ Prism Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10+/Device/Samsung Galaxy S10+ Prism Green.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S10+/Device/Samsung Galaxy S10+ Prism White.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S20/Device/Samsung Galaxy S20 Cloud Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S20/Device/Samsung Galaxy S20 Cloud Pink.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S20/Device/Samsung Galaxy S20 Cosmic Gray.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S20 Ultra/Device/Samsung Galaxy S20 Utra Cosmic Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S20 Ultra/Device/Samsung Galaxy S20 Utra Cosmic Gray.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S20+/Device/Samsung Galaxy S20+ Cloud Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S20+/Device/Samsung Galaxy S20+ Cosmic Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S20+/Device/Samsung Galaxy S20+ Cosmic Gray.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S21 5G/Device/Samsung Galaxy S21 5G /342/200/224 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S21 5G/Device/Samsung Galaxy S21 5G /342/200/224 Pink.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S21 5G/Device/Samsung Galaxy S21 5G /342/200/224 Violet.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S21 5G/Device/Samsung Galaxy S21 5G /342/200/224 White.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S21 Ultra 5G/Device/Samsung Galaxy S21 Ultra 5G /342/200/224 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S21 Ultra 5G/Device/Samsung Galaxy S21 Ultra 5G /342/200/224 Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S21+/Device/Samsung Galaxy S21+ 5G /342/200/224 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S21+/Device/Samsung Galaxy S21+ 5G /342/200/224 Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S21+/Device/Samsung Galaxy S21+ 5G /342/200/224 Violet.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S3/Device/Samsung Galaxy S3.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S5/Device/Samsung Galaxy S5 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S5/Device/Samsung Galaxy S5 White.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S7/Device/Samsung Galaxy S7 Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S7/Device/Samsung Galaxy S7 Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S7/Device/Samsung Galaxy S7 Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S7/Device/Samsung Galaxy S7 White.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S8/Device/Samsung Galaxy S8 Arctic Silver.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S8/Device/Samsung Galaxy S8 Coral Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S8/Device/Samsung Galaxy S8 Maple Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S8/Device/Samsung Galaxy S8 Midnight Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S8/Device/Samsung Galaxy S8 Orchid Gray.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S9/Device/Samsung Galaxy S9 Burgundy Red.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S9/Device/Samsung Galaxy S9 Coral Blue.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S9/Device/Samsung Galaxy S9 Lilac Purple.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S9/Device/Samsung Galaxy S9 Midnight Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S9/Device/Samsung Galaxy S9 Sunrise Gold.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy S9/Device/Samsung Galaxy S9 Titanium Gray.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Y/Device/Samsung Galaxy Y Black.avif +0 -0
- package/src/stories/assets/mockups/mobile/samsung/Samsung Galaxy Y/Device/Samsung Galaxy Y White.avif +0 -0
- package/src/stories/assets/mockups/mobile/xiaomi/Xiaomi Mi Mix Alpha/Device/Xiaomi Mi Mix Alpha Back.avif +0 -0
- package/src/stories/assets/mockups/mobile/xiaomi/Xiaomi Mi Mix Alpha/Device/Xiaomi Mi Mix Alpha Front.avif +0 -0
- package/src/stories/assets/mockups/mobile/xiaomi/Xiaomi Mi Mix Alpha/Device/Xiaomi Mi Mix Alpha Side.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad/Device/Apple iPad Gold.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad/Device/Apple iPad Silver.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad/Device/Apple iPad Space Grey.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Air 2020/Device/Apple iPad Air 2020 Green Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Air 2020/Device/Apple iPad Air 2020 Green Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Air 2020/Device/Apple iPad Air 2020 Rose Gold Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Air 2020/Device/Apple iPad Air 2020 Rose Gold Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Air 2020/Device/Apple iPad Air 2020 Silver Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Air 2020/Device/Apple iPad Air 2020 Silver Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Air 2020/Device/Apple iPad Air 2020 Sky Blue Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Air 2020/Device/Apple iPad Air 2020 Sky Blue Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Air 2020/Device/Apple iPad Air 2020 Space Gray Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Air 2020/Device/Apple iPad Air 2020 Space Gray Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Mini/Device/Apple iPad Mini Gold.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Mini/Device/Apple iPad Mini Silver.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Mini/Device/Apple iPad Mini Space Grey.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device with Pencil/Apple iPad Pro 11 Silver - Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device with Pencil/Apple iPad Pro 11 Silver - Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device with Pencil/Apple iPad Pro 11 Space Gray - Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device with Pencil/Apple iPad Pro 11 Space Gray - Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device with Pencil/Apple iPad Pro 13 Silver - Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device with Pencil/Apple iPad Pro 13 Silver - Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device with Pencil/Apple iPad Pro 13 Space Gray - Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device with Pencil/Apple iPad Pro 13 Space Gray - Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device without Pencil/Apple iPad Pro 11 Silver - Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device without Pencil/Apple iPad Pro 11 Silver - Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device without Pencil/Apple iPad Pro 11 Space Gray - Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device without Pencil/Apple iPad Pro 11 Space Gray - Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device without Pencil/Apple iPad Pro 13 Silver - Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device without Pencil/Apple iPad Pro 13 Silver - Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device without Pencil/Apple iPad Pro 13 Space Gray - Landscape.avif +0 -0
- package/src/stories/assets/mockups/tablet/apple/Apple iPad Pro/Device/Device without Pencil/Apple iPad Pro 13 Space Gray - Portrait.avif +0 -0
- package/src/stories/assets/mockups/tablet/dell/Dell XPS 13/Device/Dell XPS 13.avif +0 -0
- package/src/stories/assets/mockups/tablet/dell/Dell XPS 15/Device/Dell XPS 15.avif +0 -0
- package/src/stories/assets/mockups/tablet/google/Google Slate/Device/Google Pixel Slate.avif +0 -0
- package/src/stories/assets/mockups/tablet/microsoft/Microsoft Surface 3/Device/Microsoft Surface Pro 3.avif +0 -0
- package/src/stories/assets/mockups/tablet/microsoft/Microsoft Surface Book/Device/Microsoft Surface Book.avif +0 -0
- package/src/stories/assets/mockups/tablet/microsoft/Microsoft Surface Pro 4/Device/Microsoft Surface Pro 4.avif +0 -0
- package/src/stories/assets/mockups/tablet/microsoft/Microsoft Surface Pro X/Device/Surface Pro X Black.avif +0 -0
- package/src/stories/assets/mockups/tablet/microsoft/Microsoft Surface Pro X/Device/Surface Pro X Silver.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - Beige with Studio Stand.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - Beige without Stand.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - Beige.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - Black with Studio Stand.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - Black without Stand.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - Black.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - Brown with Studio Stand.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - Brown without Stand.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - Brown.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - White with Studio Stand.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - White without Stand.avif +0 -0
- package/src/stories/assets/mockups/television/samsung/Samsung Frame/Device/Samsung Frame - White.avif +0 -0
- package/src/stories/assets/mockups/television/sony/Sony W850C/Device/Sony W850C.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Black Steel + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Gold + Black Leather Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Gold + Midnight Blue Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Rose Gold + Black Leather Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Rose Gold + Lavender Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Sport Aluminum + Blue Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Sport Aluminum + Fog Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Sport Aluminum + Green Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Sport Aluminum + Red Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Sport Aluminum + Walnut Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Sport Aluminum + White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Sport Aluminum Gold + Antique White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Sport Aluminum Rose Gold + Stone Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Sport Space Gray + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Stainless Steel + Black Leather Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/38mm/Device Closed/Apple Watch 38mm Steel + White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Black Steel + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Gold + Black Leather Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Gold + Midnight Blue Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Rose Gold + Black Leather Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Rose Gold + Lavender Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Sport Aluminum + Blue Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Sport Aluminum + Fog Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Sport Aluminum + Green Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Sport Aluminum + Red Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Sport Aluminum + Walnut Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Sport Aluminum + White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Sport Aluminum Gold + Antique White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Sport Aluminum Rose Gold + Stone Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Sport Space Gray + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Stainless Steel + Black Leather Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch/Device/42mm/Device Closed/Apple Watch 42mm Steel + White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Black Steel + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Edition Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Rose Gold Aluminum + Midnight Blue Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Silver Aluminum + Cocoa Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Silver Aluminum + Concrete Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Silver Aluminum + Flat Silver Volt Nike Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Silver Aluminum + Flat Silver White Nike Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Silver Aluminum + Ocean Blue Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Silver Aluminum + Red Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Silver Aluminum + Turquoise Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Silver Aluminum + White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Silver Aluminum + Yellow Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Space Gray Aluminum + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Space Gray Aluminum + Black Cool Gray Nike Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Space Gray Aluminum + Black Volt Nike Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Sport Aluminum + Walnut Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/38mm/Device Closed/Apple Watch 38mm Steel + White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Edition Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Gold Aluminum + Cocoa Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Rose Gold Aluminum + Midnight Blue Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + Concrete Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + Flat Silver Volt Nike Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + Flat Silver White Nike Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + Green Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + Light Pink Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + Ocean Blue Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + Pink Sand Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + Red Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + Turquoise Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Silver Aluminum + Yellow Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Space Black Steel + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Space Gray Aluminum + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Space Gray Aluminum + Black Cool Gray Nike Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Space Gray Aluminum + Black Volt Nike Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch 2/Device/42mm/Device Closed/Apple Watch 42mm Steel + White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 5/Device/44mm/Closed/Apple Watch 44mm Gold Aluminum + Pink Sand Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 5/Device/44mm/Closed/Apple Watch 44mm Gold Stainless Steel + Stone Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 5/Device/44mm/Closed/Apple Watch 44mm Silver Aluminum + Clementine Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 5/Device/44mm/Closed/Apple Watch 44mm Space Black Stainless Steel + Alaskan Blue Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 5/Device/44mm/Closed/Apple Watch 44mm Space Black Titanium + Pine Green Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 5/Device/44mm/Closed/Apple Watch 44mm Space Grey Aluminum + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 5/Device/44mm/Closed/Apple Watch 44mm Stainless Steel + Lemon Cream Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 5/Device/44mm/Closed/Apple Watch 44mm Titanium + Red Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 5/Device/44mm/Closed/Apple Watch 44mm White Ceramic + White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/40mm/Apple Watch 40mm Blue Aluminum Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/40mm/Apple Watch 40mm Dark Titanium Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/40mm/Apple Watch 40mm Gold Aluminum Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/40mm/Apple Watch 40mm Gold Stainless Steel Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/40mm/Apple Watch 40mm Graphite Stainless Steel Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/40mm/Apple Watch 40mm Light Titanium Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/40mm/Apple Watch 40mm Red Aluminum Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/40mm/Apple Watch 40mm Silver Aluminum Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/40mm/Apple Watch 40mm Silver Stainless Steel Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/40mm/Apple Watch 40mm Space Gray Aluminum Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/44mm/Apple Watch 44mm Blue Aluminum Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/44mm/Apple Watch 44mm Dark Titanium Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/44mm/Apple Watch 44mm Gold Aluminum Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/44mm/Apple Watch 44mm Gold Stainless Steel Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/44mm/Apple Watch 44mm Graphite Stainless Steel Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/44mm/Apple Watch 44mm Light Titanium Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/44mm/Apple Watch 44mm Red Aluminum Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/44mm/Apple Watch 44mm Silver Aluminum Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/44mm/Apple Watch 44mm Silver Stainless Steel Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Cyprus Green Solo Loop/44mm/Apple Watch 44mm Space Gray Aluminum Cyprus Green Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/40mm/Apple Watch 40mm Blue Aluminum Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/40mm/Apple Watch 40mm Dark Titanium Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/40mm/Apple Watch 40mm Gold Aluminum Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/40mm/Apple Watch 40mm Gold Stainless Steel Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/40mm/Apple Watch 40mm Graphite Stainless Steel Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/40mm/Apple Watch 40mm Light Titanium Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/40mm/Apple Watch 40mm Red Aluminum Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/40mm/Apple Watch 40mm Silver Aluminum Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/40mm/Apple Watch 40mm Silver Stainless Steel Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/40mm/Apple Watch 40mm Space Gray Aluminum Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/44mm/Apple Watch 44mm Blue Aluminum Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/44mm/Apple Watch 44mm Dark Titanium Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/44mm/Apple Watch 44mm Gold Aluminum Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/44mm/Apple Watch 44mm Gold Stainless Steel Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/44mm/Apple Watch 44mm Graphite Stainless Steel Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/44mm/Apple Watch 44mm Light Titanium Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/44mm/Apple Watch 44mm Red Aluminum Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/44mm/Apple Watch 44mm Silver Aluminum Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/44mm/Apple Watch 44mm Silver Stainless Steel Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Ginger Solo Loop/44mm/Apple Watch 44mm Space Gray Aluminum Ginger Solo Loop.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/40mm/Apple Watch 40mm Blue Aluminum Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/40mm/Apple Watch 40mm Dark Titanium Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/40mm/Apple Watch 40mm Gold Aluminum Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/40mm/Apple Watch 40mm Gold Stainless Steel Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/40mm/Apple Watch 40mm Graphite Stainless Steel Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/40mm/Apple Watch 40mm Light Titanium Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/40mm/Apple Watch 40mm Red Aluminum Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/40mm/Apple Watch 40mm Silver Aluminum Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/40mm/Apple Watch 40mm Silver Stainless Steel Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/40mm/Apple Watch 40mm Space Gray Aluminum Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/44mm/Apple Watch 44mm Blue Aluminum Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/44mm/Apple Watch 44mm Dark Titanium Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/44mm/Apple Watch 44mm Gold Aluminum Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/44mm/Apple Watch 44mm Gold Stainless Steel Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/44mm/Apple Watch 44mm Graphite Stainless Steel Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/44mm/Apple Watch 44mm Light Titanium Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/44mm/Apple Watch 44mm Red Aluminum Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/44mm/Apple Watch 44mm Silver Aluminum Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/44mm/Apple Watch 44mm Silver Stainless Steel Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/With Bands/Pink Citrus Sport Closed/44mm/Apple Watch 44mm Space Gray Aluminum Pink Citrus Sport.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/40mm/Apple Watch 40mm Blue Aluminum.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/40mm/Apple Watch 40mm Dark Titanium.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/40mm/Apple Watch 40mm Gold Aluminum.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/40mm/Apple Watch 40mm Gold Stainless Steel.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/40mm/Apple Watch 40mm Graphite Stainless Steel.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/40mm/Apple Watch 40mm Light Titanium.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/40mm/Apple Watch 40mm Red Aluminum.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/40mm/Apple Watch 40mm Silver Aluminum.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/40mm/Apple Watch 40mm Silver Stainless Steel.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/40mm/Apple Watch 40mm Space Gray Aluminum.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/44mm/Apple Watch 44mm Blue Aluminum.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/44mm/Apple Watch 44mm Dark Titanium.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/44mm/Apple Watch 44mm Gold Aluminum.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/44mm/Apple Watch 44mm Gold Stainless Steel.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/44mm/Apple Watch 44mm Graphite Stainless Steel.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/44mm/Apple Watch 44mm Light Titanium.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/44mm/Apple Watch 44mm Red Aluminum.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/44mm/Apple Watch 44mm Silver Aluminum.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/44mm/Apple Watch 44mm Silver Stainless Steel.avif +0 -0
- package/src/stories/assets/mockups/wearable/apple/Apple Watch Series 6/Device/Without Bands/44mm/Apple Watch 44mm Space Gray Aluminum.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Men Black + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Men Black + Cognac Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Men Gold + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Men Gold + Cognac Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Men Silver + Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Men Silver + Cognac Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Women Gold + Blush Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Women Gold + Stone Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Women Rose Gold + Blush Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Women Rose Gold + Stone Grey Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Women Silver + Blush Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Closed/Motorola Moto 360 Women Silver + Stone Grey Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Men Black + Black Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Men Black + Cognac Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Men Gold + Black Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Men Gold + Cognac Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Men Silver + Black Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Men Silver + Cognac Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Women Gold + Blush Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Women Gold + Stone Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Women Rose Gold + Blush Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Women Rose Gold + Stone Grey Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Women Silver + Blush Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/motorola/Motorola Moto 360/Device Open/Motorola Moto 360 Women Silver + Stone Grey Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/sony/Sony SmartWatch 3/Device Closed/Sony SmartWatch 3 Black Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/sony/Sony SmartWatch 3/Device Closed/Sony SmartWatch 3 White Closed.avif +0 -0
- package/src/stories/assets/mockups/wearable/sony/Sony SmartWatch 3/Device Open/Sony SmartWatch 3 Black Open.avif +0 -0
- package/src/stories/assets/mockups/wearable/sony/Sony SmartWatch 3/Device Open/Sony SmartWatch 3 White Open.avif +0 -0
- package/src/stories/atoms/Button/Button.Architecture.mdx +384 -0
- package/src/stories/atoms/Button/Button.Changelog.mdx +124 -0
- package/src/stories/atoms/Button/Button.js +131 -0
- package/src/stories/atoms/Button/Button.stories.js +535 -0
- package/src/stories/atoms/Button/button.css +585 -0
- package/src/stories/atoms/Check/Check.Architecture.mdx +227 -0
- package/src/stories/atoms/Check/Check.Changelog.mdx +73 -0
- package/src/stories/atoms/Check/Check.js +122 -0
- package/src/stories/atoms/Check/Check.stories.js +196 -0
- package/src/stories/atoms/Check/check.css +159 -0
- package/src/stories/atoms/Divider/Divider.Architecture.mdx +202 -0
- package/src/stories/atoms/Divider/Divider.Changelog.mdx +73 -0
- package/src/stories/atoms/Divider/Divider.js +74 -0
- package/src/stories/atoms/Divider/Divider.stories.js +158 -0
- package/src/stories/atoms/Divider/divider.css +84 -0
- package/src/stories/atoms/Icon/Icon.Architecture.mdx +224 -0
- package/src/stories/atoms/Icon/Icon.Changelog.mdx +73 -0
- package/src/stories/atoms/Icon/Icon.stories.js +177 -0
- package/src/stories/atoms/Icon/Iconography.js +603 -0
- package/src/stories/atoms/Icon/iconography.css +67 -0
- package/src/stories/atoms/KBD/Kbd.Architecture.mdx +211 -0
- package/src/stories/atoms/KBD/Kbd.Changelog.mdx +72 -0
- package/src/stories/atoms/KBD/Kbd.js +71 -0
- package/src/stories/atoms/KBD/Kbd.stories.js +182 -0
- package/src/stories/atoms/KBD/kbd.css +110 -0
- package/src/stories/atoms/Loader/Loader.Architecture.mdx +216 -0
- package/src/stories/atoms/Loader/Loader.Changelog.mdx +66 -0
- package/src/stories/atoms/Loader/Loader.js +88 -0
- package/src/stories/atoms/Loader/Loader.stories.js +130 -0
- package/src/stories/atoms/Loader/loader.css +132 -0
- package/src/stories/atoms/MetricCard/MetricCard.Architecture.mdx +207 -0
- package/src/stories/atoms/MetricCard/MetricCard.Changelog.mdx +34 -0
- package/src/stories/atoms/MetricCard/MetricCard.js +142 -0
- package/src/stories/atoms/MetricCard/MetricCard.stories.js +368 -0
- package/src/stories/atoms/MetricCard/metric-card.css +181 -0
- package/src/stories/atoms/Pill/Pill.Architecture.mdx +270 -0
- package/src/stories/atoms/Pill/Pill.Changelog.mdx +72 -0
- package/src/stories/atoms/Pill/Pill.js +323 -0
- package/src/stories/atoms/Pill/Pill.stories.js +478 -0
- package/src/stories/atoms/Pill/pill.css +174 -0
- package/src/stories/atoms/Radio/Radio.Architecture.mdx +204 -0
- package/src/stories/atoms/Radio/Radio.Changelog.mdx +67 -0
- package/src/stories/atoms/Radio/Radio.js +125 -0
- package/src/stories/atoms/Radio/Radio.stories.js +191 -0
- package/src/stories/atoms/Radio/radio.css +170 -0
- package/src/stories/atoms/SeekBar/SeekBar.Architecture.mdx +245 -0
- package/src/stories/atoms/SeekBar/SeekBar.Changelog.mdx +67 -0
- package/src/stories/atoms/SeekBar/SeekBar.js +385 -0
- package/src/stories/atoms/SeekBar/SeekBar.stories.js +375 -0
- package/src/stories/atoms/SeekBar/seek-bar.css +302 -0
- package/src/stories/atoms/SliderDot/SliderDot.Architecture.mdx +215 -0
- package/src/stories/atoms/SliderDot/SliderDot.Changelog.mdx +67 -0
- package/src/stories/atoms/SliderDot/SliderDot.js +98 -0
- package/src/stories/atoms/SliderDot/SliderDot.stories.js +153 -0
- package/src/stories/atoms/SliderDot/slider-dot.css +146 -0
- package/src/stories/atoms/Subtitle/Subtitle.Architecture.mdx +237 -0
- package/src/stories/atoms/Subtitle/Subtitle.Changelog.mdx +66 -0
- package/src/stories/atoms/Subtitle/Subtitle.js +160 -0
- package/src/stories/atoms/Subtitle/Subtitle.stories.js +274 -0
- package/src/stories/atoms/Subtitle/subtitle.css +132 -0
- package/src/stories/atoms/TOC/TOC.Architecture.mdx +111 -0
- package/src/stories/atoms/TOC/TOC.Changelog.mdx +84 -0
- package/src/stories/atoms/TOC/TOC.js +311 -0
- package/src/stories/atoms/TOC/TOC.stories.js +205 -0
- package/src/stories/atoms/TOC/toc.css +138 -0
- package/src/stories/atoms/Tab/Tab.Architecture.mdx +255 -0
- package/src/stories/atoms/Tab/Tab.Changelog.mdx +67 -0
- package/src/stories/atoms/Tab/Tab.js +130 -0
- package/src/stories/atoms/Tab/Tab.stories.js +165 -0
- package/src/stories/atoms/Tab/tab.css +178 -0
- package/src/stories/atoms/Thumbnail/Thumbnail.Architecture.mdx +279 -0
- package/src/stories/atoms/Thumbnail/Thumbnail.Changelog.mdx +133 -0
- package/src/stories/atoms/Thumbnail/Thumbnail.js +585 -0
- package/src/stories/atoms/Thumbnail/Thumbnail.stories.js +199 -0
- package/src/stories/atoms/Thumbnail/thumbnail-manifest.generated.js +6039 -0
- package/src/stories/atoms/Thumbnail/thumbnail.css +106 -0
- package/src/stories/atoms/Toggle/Toggle.Architecture.mdx +272 -0
- package/src/stories/atoms/Toggle/Toggle.Changelog.mdx +67 -0
- package/src/stories/atoms/Toggle/Toggle.js +232 -0
- package/src/stories/atoms/Toggle/Toggle.stories.js +167 -0
- package/src/stories/atoms/Toggle/toggle.css +447 -0
- package/src/stories/contributing/Contributing.mdx +73 -0
- package/src/stories/contributing/DocumentingArchitecture.mdx +216 -0
- package/src/stories/contributing/DocumentingChangelog.mdx +162 -0
- package/src/stories/contributing/DocumentingComponents.mdx +248 -0
- package/src/stories/getting-started/Changelog.mdx +47 -0
- package/src/stories/getting-started/DesignTokens.mdx +47 -0
- package/src/stories/getting-started/Disclaimers.mdx +153 -0
- package/src/stories/getting-started/Installation.mdx +71 -0
- package/src/stories/getting-started/Introduction.mdx +51 -0
- package/src/stories/getting-started/PortfoliableIntegration.mdx +265 -0
- package/src/stories/getting-started/Theming.mdx +48 -0
- package/src/stories/molecules/AudioPlayer/AudioPlayer.Architecture.mdx +299 -0
- package/src/stories/molecules/AudioPlayer/AudioPlayer.Changelog.mdx +72 -0
- package/src/stories/molecules/AudioPlayer/AudioPlayer.js +395 -0
- package/src/stories/molecules/AudioPlayer/AudioPlayer.stories.js +259 -0
- package/src/stories/molecules/AudioPlayer/audio-player.css +276 -0
- package/src/stories/molecules/Breadcrumb/Breadcrumb.Architecture.mdx +222 -0
- package/src/stories/molecules/Breadcrumb/Breadcrumb.Changelog.mdx +30 -0
- package/src/stories/molecules/Breadcrumb/Breadcrumb.js +382 -0
- package/src/stories/molecules/Breadcrumb/Breadcrumb.stories.js +213 -0
- package/src/stories/molecules/Breadcrumb/breadcrumb.css +149 -0
- package/src/stories/molecules/CaseNavigator/CaseNavigator.Architecture.mdx +294 -0
- package/src/stories/molecules/CaseNavigator/CaseNavigator.Changelog.mdx +71 -0
- package/src/stories/molecules/CaseNavigator/CaseNavigator.js +527 -0
- package/src/stories/molecules/CaseNavigator/CaseNavigator.stories.js +550 -0
- package/src/stories/molecules/CaseNavigator/case-navigator.css +318 -0
- package/src/stories/molecules/ComboTabs/ComboTabs.js +80 -0
- package/src/stories/molecules/ComboTabs/ComboTabs.stories.js +30 -0
- package/src/stories/molecules/ComboTabs/combo-tabs.css +48 -0
- package/src/stories/molecules/GalleryItem/GalleryItem.Architecture.mdx +264 -0
- package/src/stories/molecules/GalleryItem/GalleryItem.Changelog.mdx +142 -0
- package/src/stories/molecules/GalleryItem/GalleryItem.js +201 -0
- package/src/stories/molecules/GalleryItem/GalleryItem.stories.js +312 -0
- package/src/stories/molecules/GalleryItem/gallery-item.css +113 -0
- package/src/stories/molecules/ItemRow/ItemRow.Architecture.mdx +271 -0
- package/src/stories/molecules/ItemRow/ItemRow.Changelog.mdx +72 -0
- package/src/stories/molecules/ItemRow/ItemRow.js +320 -0
- package/src/stories/molecules/ItemRow/ItemRow.stories.js +323 -0
- package/src/stories/molecules/ItemRow/item-row.css +229 -0
- package/src/stories/molecules/NavigationMenu/NavigationMenu.Architecture.mdx +179 -0
- package/src/stories/molecules/NavigationMenu/NavigationMenu.Changelog.mdx +82 -0
- package/src/stories/molecules/NavigationMenu/NavigationMenu.js +335 -0
- package/src/stories/molecules/NavigationMenu/NavigationMenu.stories.js +295 -0
- package/src/stories/molecules/NavigationMenu/navigation-menu.css +88 -0
- package/src/stories/molecules/Summary/Summary.Architecture.mdx +186 -0
- package/src/stories/molecules/Summary/Summary.Changelog.mdx +34 -0
- package/src/stories/molecules/Summary/Summary.js +171 -0
- package/src/stories/molecules/Summary/Summary.stories.js +264 -0
- package/src/stories/molecules/Summary/summary.css +182 -0
- package/src/stories/molecules/Toast/Toast.Architecture.mdx +272 -0
- package/src/stories/molecules/Toast/Toast.Changelog.mdx +71 -0
- package/src/stories/molecules/Toast/Toast.js +141 -0
- package/src/stories/molecules/Toast/Toast.stories.js +250 -0
- package/src/stories/molecules/Toast/toast.css +149 -0
- package/src/stories/molecules/Tooltip/Tooltip.Architecture.mdx +255 -0
- package/src/stories/molecules/Tooltip/Tooltip.Changelog.mdx +71 -0
- package/src/stories/molecules/Tooltip/Tooltip.js +135 -0
- package/src/stories/molecules/Tooltip/Tooltip.stories.js +211 -0
- package/src/stories/molecules/Tooltip/tooltip.css +168 -0
- package/src/stories/molecules/VideoControls/VideoControls.Architecture.mdx +260 -0
- package/src/stories/molecules/VideoControls/VideoControls.Changelog.mdx +72 -0
- package/src/stories/molecules/VideoControls/VideoControls.js +157 -0
- package/src/stories/molecules/VideoControls/VideoControls.stories.js +214 -0
- package/src/stories/molecules/VideoControls/video-controls.css +70 -0
- package/src/stories/organisms/Article/Article.Architecture.mdx +215 -0
- package/src/stories/organisms/Article/Article.Changelog.mdx +45 -0
- package/src/stories/organisms/Article/Article.js +398 -0
- package/src/stories/organisms/Article/Article.stories.js +589 -0
- package/src/stories/organisms/Article/article.css +1324 -0
- package/src/stories/organisms/ComboCard/ComboCard.js +44 -0
- package/src/stories/organisms/ComboCard/ComboCard.stories.js +18 -0
- package/src/stories/organisms/ComboCard/combo-card.css +25 -0
- package/src/stories/organisms/ContextualMenu/ContextualMenu.Architecture.mdx +296 -0
- package/src/stories/organisms/ContextualMenu/ContextualMenu.Changelog.mdx +98 -0
- package/src/stories/organisms/ContextualMenu/ContextualMenu.js +396 -0
- package/src/stories/organisms/ContextualMenu/ContextualMenu.stories.js +409 -0
- package/src/stories/organisms/ContextualMenu/contextual-menu.css +255 -0
- package/src/stories/organisms/Gallery/Gallery.Architecture.mdx +181 -0
- package/src/stories/organisms/Gallery/Gallery.Changelog.mdx +74 -0
- package/src/stories/organisms/Gallery/Gallery.js +549 -0
- package/src/stories/organisms/Gallery/Gallery.stories.js +175 -0
- package/src/stories/organisms/Gallery/gallery.css +59 -0
- package/src/stories/organisms/Header/Header.Architecture.mdx +195 -0
- package/src/stories/organisms/Header/Header.Changelog.mdx +32 -0
- package/src/stories/organisms/Header/Header.js +151 -0
- package/src/stories/organisms/Header/Header.stories.js +212 -0
- package/src/stories/organisms/Header/header.css +48 -0
- package/src/stories/organisms/VideoPlayer/VideoPlayer.js +156 -0
- package/src/stories/organisms/VideoPlayer/VideoPlayer.stories.js +63 -0
- package/src/stories/organisms/VideoPlayer/video-player.css +45 -0
- package/src/stories/sub-atomic/Accessibility/Accessibility.mdx +478 -0
- package/src/stories/sub-atomic/Accessibility/accessibility.css +111 -0
- package/src/stories/sub-atomic/Architecture/Architecture.mdx +176 -0
- package/src/stories/sub-atomic/Borderography/Borderography.mdx +94 -0
- package/src/stories/sub-atomic/Borderography/borderography.css +12 -0
- package/src/stories/sub-atomic/Choreography/Choreography.mdx +322 -0
- package/src/stories/sub-atomic/Choreography/choreography.css +18 -0
- package/src/stories/sub-atomic/Chromography/Chromography.mdx +116 -0
- package/src/stories/sub-atomic/Chromography/chromography.css +44 -0
- package/src/stories/sub-atomic/Curvography/Curvography.mdx +104 -0
- package/src/stories/sub-atomic/Curvography/curvography.css +9 -0
- package/src/stories/sub-atomic/Depthography/Depthography.mdx +79 -0
- package/src/stories/sub-atomic/Depthography/depthography.css +11 -0
- package/src/stories/sub-atomic/Formography/Formography.mdx +202 -0
- package/src/stories/sub-atomic/Formography/formography.css +82 -0
- package/src/stories/sub-atomic/Gridography/Gridography.mdx +94 -0
- package/src/stories/sub-atomic/Gridography/gridography.css +15 -0
- package/src/stories/sub-atomic/Iconography/Iconography.js +304 -0
- package/src/stories/sub-atomic/Iconography/Iconography.mdx +281 -0
- package/src/stories/sub-atomic/Layoutography/Layoutography.mdx +213 -0
- package/src/stories/sub-atomic/Layoutography/layoutography.css +71 -0
- package/src/stories/sub-atomic/Mermaid/MermaidDiagram.js +42 -0
- package/src/stories/sub-atomic/Mermaid/mermaid.css +243 -0
- package/src/stories/sub-atomic/Opacityography/Opacityography.mdx +78 -0
- package/src/stories/sub-atomic/Opacityography/opacityography.css +10 -0
- package/src/stories/sub-atomic/Shadowgraphy/Shadowgraphy.mdx +83 -0
- package/src/stories/sub-atomic/Shadowgraphy/shadowgraphy.css +9 -0
- package/src/stories/sub-atomic/Sizography/Sizography.mdx +190 -0
- package/src/stories/sub-atomic/Sizography/sizography.css +21 -0
- package/src/stories/sub-atomic/Spatialography/Spatialography.mdx +162 -0
- package/src/stories/sub-atomic/Spatialography/spatialography.css +26 -0
- package/src/stories/sub-atomic/Stateography/Stateography.mdx +287 -0
- package/src/stories/sub-atomic/Surfaceography/Surfaceography.mdx +169 -0
- package/src/stories/sub-atomic/Surfaceography/surfaceography.css +54 -0
- package/src/stories/sub-atomic/Thumbnails/Thumbnails.mdx +221 -0
- package/src/stories/sub-atomic/Typography/Typography.mdx +201 -0
- package/src/stories/sub-atomic/Typography/typography.css +23 -0
- package/src/stories/sub-atomic/index.css +1 -0
- package/src/stories/templates/HomeView/HomeView.js +164 -0
- package/src/stories/templates/HomeView/HomeView.stories.js +83 -0
- package/src/stories/templates/HomeView/homeview.css +110 -0
- package/src/style.css +67 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="Atoms/Pill [v1.0.0]/Architecture" />
|
|
4
|
+
|
|
5
|
+
# `ds-pill`
|
|
6
|
+
|
|
7
|
+
The `ds-pill` component is a **controlled / presentational** Atom designed to render compact information tag badges, categories, or real-time auto-refreshing device and browser network telemetry diagnostics.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Principles
|
|
12
|
+
|
|
13
|
+
### Unidirectional Data Flow
|
|
14
|
+
The component strictly adheres to the **State In / Events Out** pattern:
|
|
15
|
+
* **State In (Attributes / Properties):** The host binds attributes (`variant`, `label`, `show-pulse`, `pulse-color`, `telemetry-type`, `aria-label`) to alter design variant presentation, override static tags, or select live telemetry tracking targets.
|
|
16
|
+
* **Passive Browser Interception:** When `variant="telemetry"` is mapped, the component subscribes directly to low-overhead browser diagnostic APIs (e.g., Performance API, Network Information, resizing loops, or Battery Level state events) to update internal text nodes.
|
|
17
|
+
* **Events Out:** As a passive category tag, this component emits no action-oriented events and does not register native form focus states.
|
|
18
|
+
|
|
19
|
+
<mermaid-diagram chart={`
|
|
20
|
+
flowchart LR
|
|
21
|
+
subgraph Host["Host Application / App Shell"]
|
|
22
|
+
direction TB
|
|
23
|
+
State["State Manager / Component Host"]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
subgraph WebComp["Valence Web Component"]
|
|
27
|
+
Component["ds-pill"]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
State -->|"1. State In: variant / label / show-pulse / telemetry-type"| Component
|
|
31
|
+
|
|
32
|
+
%% Styling
|
|
33
|
+
style Host fill:#f8fafc,stroke:#94a3b8,stroke-width:2px,color:#0f172a
|
|
34
|
+
style WebComp fill:#eff6ff,stroke:#3b82f6,stroke-width:2px,color:#1e3a8a
|
|
35
|
+
style State fill:#ffffff,stroke:#cbd5e1,color:#0f172a
|
|
36
|
+
style Component fill:#ffffff,stroke:#93c5fd,color:#1e3a8a
|
|
37
|
+
`} />
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Slot Architecture
|
|
42
|
+
|
|
43
|
+
The `ds-pill` component projects light DOM text nodes inside its default slot layout. However, if a static `label` attribute is specified or if the telemetry variant triggers dynamic updates, the default slot contents are suppressed in favor of state-driven overrides.
|
|
44
|
+
|
|
45
|
+
### Slot Hierarchy Table
|
|
46
|
+
|
|
47
|
+
<table>
|
|
48
|
+
<thead>
|
|
49
|
+
<tr>
|
|
50
|
+
<th>Slot Name</th>
|
|
51
|
+
<th>Type / Allowed Children</th>
|
|
52
|
+
<th>Description</th>
|
|
53
|
+
<th>Fallback Behavior</th>
|
|
54
|
+
</tr>
|
|
55
|
+
</thead>
|
|
56
|
+
<tbody>
|
|
57
|
+
<tr>
|
|
58
|
+
<td>`default`</td>
|
|
59
|
+
<td>Text / Inline HTML</td>
|
|
60
|
+
<td>Fallback text category descriptor displayed when no explicit attributes are configured.</td>
|
|
61
|
+
<td>Remains empty and collapses label wrapper geometry.</td>
|
|
62
|
+
</tr>
|
|
63
|
+
</tbody>
|
|
64
|
+
</table>
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Data Model
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
export type DsPillTelemetryMetric =
|
|
72
|
+
| 'rtt'
|
|
73
|
+
| 'network-type'
|
|
74
|
+
| 'downlink'
|
|
75
|
+
| 'online-status'
|
|
76
|
+
| 'fps'
|
|
77
|
+
| 'viewport'
|
|
78
|
+
| 'memory'
|
|
79
|
+
| 'battery';
|
|
80
|
+
|
|
81
|
+
export interface DsPillState {
|
|
82
|
+
variant: 'default' | 'telemetry';
|
|
83
|
+
label?: string;
|
|
84
|
+
showPulse: boolean;
|
|
85
|
+
pulseColor?: string;
|
|
86
|
+
telemetryType?: DsPillTelemetryMetric;
|
|
87
|
+
ariaLabel?: string;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export interface DsPillSubAtomicHooks {
|
|
91
|
+
'--ds-pill-font'?: string;
|
|
92
|
+
'--ds-pill-padding'?: string;
|
|
93
|
+
'--ds-pill-bg'?: string;
|
|
94
|
+
'--ds-pill-border-width'?: string;
|
|
95
|
+
'--ds-pill-border-color'?: string;
|
|
96
|
+
'--ds-pill-color'?: string;
|
|
97
|
+
'--ds-pill-radius'?: string;
|
|
98
|
+
'--ds-pill-pulse-color'?: string;
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## API Contract
|
|
105
|
+
|
|
106
|
+
### Properties & Attributes
|
|
107
|
+
|
|
108
|
+
<table>
|
|
109
|
+
<thead>
|
|
110
|
+
<tr>
|
|
111
|
+
<th>Property</th>
|
|
112
|
+
<th>Attribute</th>
|
|
113
|
+
<th>Type</th>
|
|
114
|
+
<th>Default</th>
|
|
115
|
+
<th>Description</th>
|
|
116
|
+
</tr>
|
|
117
|
+
</thead>
|
|
118
|
+
<tbody>
|
|
119
|
+
<tr>
|
|
120
|
+
<td>`variant`</td>
|
|
121
|
+
<td>`variant`</td>
|
|
122
|
+
<td>`'default' | 'telemetry'`</td>
|
|
123
|
+
<td>`'default'`</td>
|
|
124
|
+
<td>Configures basic presentation badge mode vs dark telemetry HUD styles.</td>
|
|
125
|
+
</tr>
|
|
126
|
+
<tr>
|
|
127
|
+
<td>`label`</td>
|
|
128
|
+
<td>`label`</td>
|
|
129
|
+
<td>`string`</td>
|
|
130
|
+
<td>`undefined`</td>
|
|
131
|
+
<td>Immutable text string mapping. Overrides slot projections.</td>
|
|
132
|
+
</tr>
|
|
133
|
+
<tr>
|
|
134
|
+
<td>`showPulse`</td>
|
|
135
|
+
<td>`show-pulse`</td>
|
|
136
|
+
<td>`boolean`</td>
|
|
137
|
+
<td>`false`</td>
|
|
138
|
+
<td>Toggles display of the pulsing status indicator dot.</td>
|
|
139
|
+
</tr>
|
|
140
|
+
<tr>
|
|
141
|
+
<td>`pulseColor`</td>
|
|
142
|
+
<td>`pulse-color`</td>
|
|
143
|
+
<td>`string`</td>
|
|
144
|
+
<td>`undefined`</td>
|
|
145
|
+
<td>Overrides the status dot background-color fill.</td>
|
|
146
|
+
</tr>
|
|
147
|
+
<tr>
|
|
148
|
+
<td>`telemetryType`</td>
|
|
149
|
+
<td>`telemetry-type`</td>
|
|
150
|
+
<td>`string`</td>
|
|
151
|
+
<td>`'rtt'`</td>
|
|
152
|
+
<td>Selects dynamic browser Web API data stream for automatic text rendering.</td>
|
|
153
|
+
</tr>
|
|
154
|
+
<tr>
|
|
155
|
+
<td>`ariaLabel`</td>
|
|
156
|
+
<td>`aria-label`</td>
|
|
157
|
+
<td>`string`</td>
|
|
158
|
+
<td>`undefined`</td>
|
|
159
|
+
<td>Directly mapped to status announcers for screen readers.</td>
|
|
160
|
+
</tr>
|
|
161
|
+
</tbody>
|
|
162
|
+
</table>
|
|
163
|
+
|
|
164
|
+
### Emitted Custom Events
|
|
165
|
+
|
|
166
|
+
<table>
|
|
167
|
+
<thead>
|
|
168
|
+
<tr>
|
|
169
|
+
<th>Event Name</th>
|
|
170
|
+
<th>Bubbles / Composed</th>
|
|
171
|
+
<th>Detail Payload</th>
|
|
172
|
+
<th>Description</th>
|
|
173
|
+
</tr>
|
|
174
|
+
</thead>
|
|
175
|
+
<tbody>
|
|
176
|
+
<tr>
|
|
177
|
+
<td>`None`</td>
|
|
178
|
+
<td>`None`</td>
|
|
179
|
+
<td>`None`</td>
|
|
180
|
+
<td>This component is strictly presentational and does not emit custom events.</td>
|
|
181
|
+
</tr>
|
|
182
|
+
</tbody>
|
|
183
|
+
</table>
|
|
184
|
+
|
|
185
|
+
### Sub-Atomic CSS Custom Property Hooks
|
|
186
|
+
|
|
187
|
+
<table>
|
|
188
|
+
<thead>
|
|
189
|
+
<tr>
|
|
190
|
+
<th>CSS Custom Property</th>
|
|
191
|
+
<th>Fallback Default</th>
|
|
192
|
+
<th>Description</th>
|
|
193
|
+
</tr>
|
|
194
|
+
</thead>
|
|
195
|
+
<tbody>
|
|
196
|
+
<tr>
|
|
197
|
+
<td>`--ds-pill-font`</td>
|
|
198
|
+
<td>`var(--font-family)` / `var(--font-mono)`</td>
|
|
199
|
+
<td>Overrides typeface families inside label elements.</td>
|
|
200
|
+
</tr>
|
|
201
|
+
<tr>
|
|
202
|
+
<td>`--ds-pill-padding`</td>
|
|
203
|
+
<td>`var(--space-xs) var(--space-sm)`</td>
|
|
204
|
+
<td>Overrides internal spacing gaps.</td>
|
|
205
|
+
</tr>
|
|
206
|
+
<tr>
|
|
207
|
+
<td>`--ds-pill-bg`</td>
|
|
208
|
+
<td>`var(--color-card-bg)` / `var(--color-overlay-dark)`</td>
|
|
209
|
+
<td>Overrides structural badge container background fills.</td>
|
|
210
|
+
</tr>
|
|
211
|
+
<tr>
|
|
212
|
+
<td>`--ds-pill-border-width`</td>
|
|
213
|
+
<td>`var(--border-width-thin)`</td>
|
|
214
|
+
<td>Overrides outline boundary border frame strokes.</td>
|
|
215
|
+
</tr>
|
|
216
|
+
<tr>
|
|
217
|
+
<td>`--ds-pill-border-color`</td>
|
|
218
|
+
<td>`var(--color-card-border)` / `var(--color-overlay-light)`</td>
|
|
219
|
+
<td>Overrides bounding frame border line colors.</td>
|
|
220
|
+
</tr>
|
|
221
|
+
<tr>
|
|
222
|
+
<td>`--ds-pill-color`</td>
|
|
223
|
+
<td>`var(--color-gray-dark)` / `var(--color-white)`</td>
|
|
224
|
+
<td>Overrides label text foreground paint values.</td>
|
|
225
|
+
</tr>
|
|
226
|
+
<tr>
|
|
227
|
+
<td>`--ds-pill-radius`</td>
|
|
228
|
+
<td>`var(--radius-pill)`</td>
|
|
229
|
+
<td>Overrides corner layout curvature parameters.</td>
|
|
230
|
+
</tr>
|
|
231
|
+
<tr>
|
|
232
|
+
<td>`--ds-pill-pulse-color`</td>
|
|
233
|
+
<td>`var(--color-success)`</td>
|
|
234
|
+
<td>Overrides animated live status indicator dot background paint.</td>
|
|
235
|
+
</tr>
|
|
236
|
+
</tbody>
|
|
237
|
+
</table>
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Accessibility & Host ARIA Delegation
|
|
242
|
+
|
|
243
|
+
* **Screen Reader Announcement:** Leverages `role="status"` on the custom element wrapper to prompt screen readers to gracefully read telemetry updates without seizing user focus.
|
|
244
|
+
* **Internal State Observer:** Monitors `document.documentElement` class adjustments through a `MutationObserver` to sync accessibility modes instantly:
|
|
245
|
+
* `.a11y-dark-mode`: Enhances background contrast ratios.
|
|
246
|
+
* `.a11y-high-contrast`: Maps pure black backdrops and thick white boundaries.
|
|
247
|
+
* `.a11y-dyslexia`: Forces dyslexia-accessible typefaces.
|
|
248
|
+
* `.a11y-reduce-motion`: Halts animated status pulsing loops.
|
|
249
|
+
* `.a11y-forced-colors`: Employs high-contrast active system system colors (`Canvas`, `CanvasText`).
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Examples
|
|
254
|
+
|
|
255
|
+
### Basic Integration Example
|
|
256
|
+
|
|
257
|
+
```javascript
|
|
258
|
+
import 'valence/ds-pill';
|
|
259
|
+
|
|
260
|
+
const pill = document.createElement('ds-pill');
|
|
261
|
+
pill.setAttribute('variant', 'telemetry');
|
|
262
|
+
pill.setAttribute('telemetry-type', 'fps');
|
|
263
|
+
pill.setAttribute('show-pulse', '');
|
|
264
|
+
|
|
265
|
+
// Clean custom property style overrides
|
|
266
|
+
pill.style.setProperty('--ds-pill-radius', '2px');
|
|
267
|
+
pill.style.setProperty('--ds-pill-bg', 'rgba(0, 0, 0, 0.95)');
|
|
268
|
+
|
|
269
|
+
document.body.appendChild(pill);
|
|
270
|
+
```
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Meta, Subtitle, Source } from '@storybook/addon-docs/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="Atoms/Pill [v1.0.0]/Changelog" />
|
|
4
|
+
|
|
5
|
+
# Changelog
|
|
6
|
+
|
|
7
|
+
<br />
|
|
8
|
+
|
|
9
|
+
## [1.0.0] - 2026-07-20
|
|
10
|
+
|
|
11
|
+
<br />
|
|
12
|
+
|
|
13
|
+
### Initial Release
|
|
14
|
+
|
|
15
|
+
The stable debut of the presentational metadata badge and auto-updating device telemetry pill (`ds-pill`) featuring live Web API polling, dark HUD glasses, and root class accessibility observing.
|
|
16
|
+
|
|
17
|
+
<br />
|
|
18
|
+
|
|
19
|
+
### Summary of Changes
|
|
20
|
+
|
|
21
|
+
<table>
|
|
22
|
+
<thead>
|
|
23
|
+
<tr>
|
|
24
|
+
<th>Classification</th>
|
|
25
|
+
<th>Scope / Context</th>
|
|
26
|
+
<th>Description</th>
|
|
27
|
+
</tr>
|
|
28
|
+
</thead>
|
|
29
|
+
<tbody>
|
|
30
|
+
<tr>
|
|
31
|
+
<td>`Added`</td>
|
|
32
|
+
<td>`ds-pill`</td>
|
|
33
|
+
<td>Initial release of categories tag component with conditional slot and attribute text projections.</td>
|
|
34
|
+
</tr>
|
|
35
|
+
<tr>
|
|
36
|
+
<td>`Added`</td>
|
|
37
|
+
<td>`ds-pill`</td>
|
|
38
|
+
<td>Designed an integrated client-side telemetry engine covering 8 distinct browser metrics (`rtt`, `network-type`, `downlink`, `online-status`, `fps`, `viewport`, `memory`, `battery`).</td>
|
|
39
|
+
</tr>
|
|
40
|
+
<tr>
|
|
41
|
+
<td>`Added`</td>
|
|
42
|
+
<td>`ds-pill`</td>
|
|
43
|
+
<td>Support for custom pulsing dots and precise sub-atomic token custom overrides.</td>
|
|
44
|
+
</tr>
|
|
45
|
+
<tr>
|
|
46
|
+
<td>`Added`</td>
|
|
47
|
+
<td>`_observeRootAccessibility`</td>
|
|
48
|
+
<td>Configured dynamic viewport observer mapping dark mode, contrast, dyslexia, reduce-motion, and Windows Forced Colors settings.</td>
|
|
49
|
+
</tr>
|
|
50
|
+
<tr>
|
|
51
|
+
<td>`Fixed`</td>
|
|
52
|
+
<td>`Pill.stories.js`</td>
|
|
53
|
+
<td>Re-bound inline custom styles in Storybook templates to reference standardized `--ds-pill-*` properties instead of generic `--custom-*` hooks.</td>
|
|
54
|
+
</tr>
|
|
55
|
+
</tbody>
|
|
56
|
+
</table>
|
|
57
|
+
|
|
58
|
+
<br />
|
|
59
|
+
|
|
60
|
+
### Added
|
|
61
|
+
- **Telemetry-Enabled Pill Atom:** Created `<ds-pill>` serving as a hybrid design system tag badge and client-side device diagnostic HUD.
|
|
62
|
+
- **Dynamic Web API Polling:** Configured listeners tracking online state, page render FPS, connection bandwidth, physical battery, and viewport dimensions.
|
|
63
|
+
- **Global Theme Reflection:** Set up `MutationObserver` on `document.documentElement` to reflect root preferences downstream as host element boolean flags.
|
|
64
|
+
- **Thematic Override Hooks:** Mapped border-radius, container padding, background borders, typography, and status dot fill variables to the standard `--ds-pill-*` naming layout.
|
|
65
|
+
- **Storybook Integration:** Built comprehensive interactive Controls and detailed CSF3 stories inside `Pill.stories.js`.
|
|
66
|
+
|
|
67
|
+
### Fixed
|
|
68
|
+
- **Sub-Atomic Story Mapping:** Synchronized Storybook override controllers to output precise `--ds-pill-radius`, `--ds-pill-bg`, and `--ds-pill-color` custom styles.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
*This changelog is specific to the `<ds-pill>` component. For design system global releases, refer to the main [Getting Started/Changelog](?path=/docs/getting-started-changelog--docs).*
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
import css from './pill.css?inline';
|
|
2
|
+
|
|
3
|
+
export class Pill extends HTMLElement {
|
|
4
|
+
static get observedAttributes() {
|
|
5
|
+
return ['variant', 'label', 'show-pulse', 'aria-label', 'pulse-color', 'telemetry-type'];
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.attachShadow({ mode: 'open' });
|
|
11
|
+
this.shadowRoot.innerHTML = `<style>${css}</style><div class="pill"><div class="pulse-dot" aria-hidden="true"></div><span class="pill-label"><slot></slot></span></div>`;
|
|
12
|
+
|
|
13
|
+
this._telemetryCleanup = null;
|
|
14
|
+
this._isInternalUpdate = false; // GUARD: Prevents infinite loops when setting internal ARIA
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
connectedCallback() {
|
|
18
|
+
if (!this.hasAttribute('role')) {
|
|
19
|
+
this.setAttribute('role', 'status');
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
this.pillEl = this.shadowRoot.querySelector('.pill');
|
|
23
|
+
this.labelEl = this.shadowRoot.querySelector('.pill-label');
|
|
24
|
+
this.pulseEl = this.shadowRoot.querySelector('.pulse-dot');
|
|
25
|
+
|
|
26
|
+
this.updateAttributes();
|
|
27
|
+
this._observeRootAccessibility();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
disconnectedCallback() {
|
|
31
|
+
if (this._themeObserver) {
|
|
32
|
+
this._themeObserver.disconnect();
|
|
33
|
+
}
|
|
34
|
+
this._stopTelemetryTracking();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
38
|
+
// CRITICAL FIX: Ignore changes triggered by internal updates or if value hasn't actually changed
|
|
39
|
+
if (this._isInternalUpdate || oldValue === newValue) return;
|
|
40
|
+
|
|
41
|
+
// Ignore aria-label changes so setting aria-label internally doesn't re-trigger a full telemetry reset
|
|
42
|
+
if (name === 'aria-label') return;
|
|
43
|
+
|
|
44
|
+
if (this.pillEl) {
|
|
45
|
+
this.updateAttributes();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
_observeRootAccessibility() {
|
|
50
|
+
const root = this.ownerDocument.documentElement;
|
|
51
|
+
const sync = () => {
|
|
52
|
+
this.toggleAttribute('a11y-dark-mode', root.classList.contains('a11y-dark-mode'));
|
|
53
|
+
this.toggleAttribute('a11y-high-contrast', root.classList.contains('a11y-high-contrast'));
|
|
54
|
+
this.toggleAttribute('a11y-dyslexia', root.classList.contains('a11y-dyslexia'));
|
|
55
|
+
this.toggleAttribute('a11y-large-text', root.classList.contains('a11y-large-text'));
|
|
56
|
+
this.toggleAttribute('a11y-reduce-motion', root.classList.contains('a11y-reduce-motion'));
|
|
57
|
+
this.toggleAttribute('a11y-forced-colors', root.classList.contains('a11y-forced-colors'));
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
sync();
|
|
61
|
+
this._themeObserver = new MutationObserver(sync);
|
|
62
|
+
this._themeObserver.observe(root, {
|
|
63
|
+
attributes: true,
|
|
64
|
+
attributeFilter: ['class'],
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
updateAttributes() {
|
|
69
|
+
const variant = this.getAttribute('variant') || 'default';
|
|
70
|
+
const label = this.getAttribute('label');
|
|
71
|
+
const showPulse = this.hasAttribute('show-pulse') && this.getAttribute('show-pulse') !== 'false';
|
|
72
|
+
const ariaLabel = this.getAttribute('aria-label');
|
|
73
|
+
const pulseColor = this.getAttribute('pulse-color');
|
|
74
|
+
|
|
75
|
+
this.pillEl.className = `pill variant-${variant}`;
|
|
76
|
+
|
|
77
|
+
if (showPulse || variant === 'telemetry') {
|
|
78
|
+
this.pulseEl.style.display = 'block';
|
|
79
|
+
} else {
|
|
80
|
+
this.pulseEl.style.display = 'none';
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (pulseColor) {
|
|
84
|
+
this.pulseEl.style.setProperty('--ds-pill-pulse-color', pulseColor);
|
|
85
|
+
} else {
|
|
86
|
+
this.pulseEl.style.removeProperty('--ds-pill-pulse-color');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (label && label.trim() !== '') {
|
|
90
|
+
this._stopTelemetryTracking();
|
|
91
|
+
this.labelEl.textContent = label;
|
|
92
|
+
this._setAriaLabel(ariaLabel || label);
|
|
93
|
+
} else if (variant === 'telemetry') {
|
|
94
|
+
this._startTelemetryTracking();
|
|
95
|
+
} else {
|
|
96
|
+
this._stopTelemetryTracking();
|
|
97
|
+
if (ariaLabel) {
|
|
98
|
+
this._setAriaLabel(ariaLabel);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
_startTelemetryTracking() {
|
|
104
|
+
this._stopTelemetryTracking();
|
|
105
|
+
|
|
106
|
+
const type = this.getAttribute('telemetry-type') || 'rtt';
|
|
107
|
+
const conn = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
|
|
108
|
+
|
|
109
|
+
switch (type) {
|
|
110
|
+
case 'rtt': {
|
|
111
|
+
const updateRtt = () => {
|
|
112
|
+
if (!navigator.onLine) {
|
|
113
|
+
this._setTelemetryValue('Status: Offline', 'var(--color-error, #ff3b30)');
|
|
114
|
+
} else if (conn && conn.rtt) {
|
|
115
|
+
this._setTelemetryValue(`Latency: ${conn.rtt}ms`, 'var(--color-success, #34c759)');
|
|
116
|
+
} else {
|
|
117
|
+
this._setTelemetryValue('Latency: 35ms', 'var(--color-success, #34c759)');
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
updateRtt();
|
|
122
|
+
if (conn) conn.addEventListener('change', updateRtt);
|
|
123
|
+
window.addEventListener('online', updateRtt);
|
|
124
|
+
window.addEventListener('offline', updateRtt);
|
|
125
|
+
|
|
126
|
+
this._telemetryCleanup = () => {
|
|
127
|
+
if (conn) conn.removeEventListener('change', updateRtt);
|
|
128
|
+
window.removeEventListener('online', updateRtt);
|
|
129
|
+
window.removeEventListener('offline', updateRtt);
|
|
130
|
+
};
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
case 'network-type': {
|
|
135
|
+
const updateNetworkType = () => {
|
|
136
|
+
if (!navigator.onLine) {
|
|
137
|
+
this._setTelemetryValue('Network: Offline', 'var(--color-error, #ff3b30)');
|
|
138
|
+
} else if (conn && conn.effectiveType) {
|
|
139
|
+
this._setTelemetryValue(`Network: ${conn.effectiveType.toUpperCase()}`, 'var(--color-success, #34c759)');
|
|
140
|
+
} else {
|
|
141
|
+
this._setTelemetryValue('Network: 4G', 'var(--color-success, #34c759)');
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
updateNetworkType();
|
|
146
|
+
if (conn) conn.addEventListener('change', updateNetworkType);
|
|
147
|
+
window.addEventListener('online', updateNetworkType);
|
|
148
|
+
window.addEventListener('offline', updateNetworkType);
|
|
149
|
+
|
|
150
|
+
this._telemetryCleanup = () => {
|
|
151
|
+
if (conn) conn.removeEventListener('change', updateNetworkType);
|
|
152
|
+
window.removeEventListener('online', updateNetworkType);
|
|
153
|
+
window.removeEventListener('offline', updateNetworkType);
|
|
154
|
+
};
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
case 'downlink': {
|
|
159
|
+
const updateDownlink = () => {
|
|
160
|
+
if (!navigator.onLine) {
|
|
161
|
+
this._setTelemetryValue('Speed: 0 Mbps', 'var(--color-error, #ff3b30)');
|
|
162
|
+
} else if (conn && conn.downlink) {
|
|
163
|
+
this._setTelemetryValue(`Speed: ${conn.downlink} Mbps`, 'var(--color-success, #34c759)');
|
|
164
|
+
} else {
|
|
165
|
+
this._setTelemetryValue('Speed: 10.5 Mbps', 'var(--color-success, #34c759)');
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
updateDownlink();
|
|
170
|
+
if (conn) conn.addEventListener('change', updateDownlink);
|
|
171
|
+
window.addEventListener('online', updateDownlink);
|
|
172
|
+
window.addEventListener('offline', updateDownlink);
|
|
173
|
+
|
|
174
|
+
this._telemetryCleanup = () => {
|
|
175
|
+
if (conn) conn.removeEventListener('change', updateDownlink);
|
|
176
|
+
window.removeEventListener('online', updateDownlink);
|
|
177
|
+
window.removeEventListener('offline', updateDownlink);
|
|
178
|
+
};
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
case 'online-status': {
|
|
183
|
+
const updateOnlineStatus = () => {
|
|
184
|
+
if (navigator.onLine) {
|
|
185
|
+
this._setTelemetryValue('Status: ONLINE', 'var(--color-success, #34c759)');
|
|
186
|
+
} else {
|
|
187
|
+
this._setTelemetryValue('Status: OFFLINE', 'var(--color-error, #ff3b30)');
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
updateOnlineStatus();
|
|
192
|
+
window.addEventListener('online', updateOnlineStatus);
|
|
193
|
+
window.addEventListener('offline', updateOnlineStatus);
|
|
194
|
+
|
|
195
|
+
this._telemetryCleanup = () => {
|
|
196
|
+
window.removeEventListener('online', updateOnlineStatus);
|
|
197
|
+
window.removeEventListener('offline', updateOnlineStatus);
|
|
198
|
+
};
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
case 'fps': {
|
|
203
|
+
let frameCount = 0;
|
|
204
|
+
let lastTime = performance.now();
|
|
205
|
+
let animId;
|
|
206
|
+
|
|
207
|
+
this._setTelemetryValue('Render: Measuring...', 'var(--color-warning, #ff9500)');
|
|
208
|
+
|
|
209
|
+
const measureFps = (now) => {
|
|
210
|
+
frameCount++;
|
|
211
|
+
if (now - lastTime >= 1000) {
|
|
212
|
+
const fps = Math.round((frameCount * 1000) / (now - lastTime));
|
|
213
|
+
this._setTelemetryValue(
|
|
214
|
+
`Render: ${fps} FPS`,
|
|
215
|
+
fps > 45 ? 'var(--color-success, #34c759)' : 'var(--color-warning, #ff9500)'
|
|
216
|
+
);
|
|
217
|
+
frameCount = 0;
|
|
218
|
+
lastTime = now;
|
|
219
|
+
}
|
|
220
|
+
animId = requestAnimationFrame(measureFps);
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
animId = requestAnimationFrame(measureFps);
|
|
224
|
+
this._telemetryCleanup = () => cancelAnimationFrame(animId);
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
case 'viewport': {
|
|
229
|
+
const updateViewport = () => {
|
|
230
|
+
const width = window.innerWidth;
|
|
231
|
+
const height = window.innerHeight;
|
|
232
|
+
const dpr = window.devicePixelRatio || 1;
|
|
233
|
+
this._setTelemetryValue(`${width} × ${height} @ ${dpr}x`, 'var(--color-info, #007aff)');
|
|
234
|
+
};
|
|
235
|
+
|
|
236
|
+
updateViewport();
|
|
237
|
+
window.addEventListener('resize', updateViewport);
|
|
238
|
+
this._telemetryCleanup = () => window.removeEventListener('resize', updateViewport);
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
case 'memory': {
|
|
243
|
+
const updateMemory = () => {
|
|
244
|
+
if (typeof performance !== 'undefined' && performance.memory) {
|
|
245
|
+
const usedMB = Math.round(performance.memory.usedJSHeapSize / (1024 * 1024));
|
|
246
|
+
this._setTelemetryValue(`RAM: ${usedMB} MB`, 'var(--color-info, #007aff)');
|
|
247
|
+
} else {
|
|
248
|
+
this._setTelemetryValue('RAM: 42 MB', 'var(--color-info, #007aff)');
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
updateMemory();
|
|
253
|
+
const intervalId = setInterval(updateMemory, 1000);
|
|
254
|
+
this._telemetryCleanup = () => clearInterval(intervalId);
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
case 'battery': {
|
|
259
|
+
let batteryObj = null;
|
|
260
|
+
|
|
261
|
+
// Synchronous immediate fallback
|
|
262
|
+
this._setTelemetryValue('Battery: 85%', 'var(--color-success, #34c759)');
|
|
263
|
+
|
|
264
|
+
const updateBattery = () => {
|
|
265
|
+
if (batteryObj) {
|
|
266
|
+
const pct = Math.round(batteryObj.level * 100);
|
|
267
|
+
const statusStr = batteryObj.charging ? `Charging (${pct}%)` : `Battery: ${pct}%`;
|
|
268
|
+
const color = pct > 20 ? 'var(--color-success, #34c759)' : 'var(--color-error, #ff3b30)';
|
|
269
|
+
this._setTelemetryValue(statusStr, color);
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
if (typeof navigator !== 'undefined' && typeof navigator.getBattery === 'function') {
|
|
274
|
+
navigator.getBattery()
|
|
275
|
+
.then((b) => {
|
|
276
|
+
batteryObj = b;
|
|
277
|
+
updateBattery();
|
|
278
|
+
b.addEventListener('levelchange', updateBattery);
|
|
279
|
+
b.addEventListener('chargingchange', updateBattery);
|
|
280
|
+
})
|
|
281
|
+
.catch(() => {
|
|
282
|
+
this._setTelemetryValue('Battery: 85% (Simulated)', 'var(--color-success, #34c759)');
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
this._telemetryCleanup = () => {
|
|
287
|
+
if (batteryObj) {
|
|
288
|
+
batteryObj.removeEventListener('levelchange', updateBattery);
|
|
289
|
+
batteryObj.removeEventListener('chargingchange', updateBattery);
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
_stopTelemetryTracking() {
|
|
298
|
+
if (typeof this._telemetryCleanup === 'function') {
|
|
299
|
+
this._telemetryCleanup();
|
|
300
|
+
this._telemetryCleanup = null;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
_setTelemetryValue(text, pulseColor) {
|
|
305
|
+
if (this.labelEl) {
|
|
306
|
+
this.labelEl.textContent = text;
|
|
307
|
+
}
|
|
308
|
+
this._setAriaLabel(text);
|
|
309
|
+
if (pulseColor && this.pulseEl) {
|
|
310
|
+
this.pulseEl.style.setProperty('--ds-pill-pulse-color', pulseColor);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
_setAriaLabel(text) {
|
|
315
|
+
this._isInternalUpdate = true;
|
|
316
|
+
this.setAttribute('aria-label', text);
|
|
317
|
+
this._isInternalUpdate = false;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
if (!customElements.get('ds-pill')) {
|
|
322
|
+
customElements.define('ds-pill', Pill);
|
|
323
|
+
}
|