@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,384 @@
|
|
|
1
|
+
import { Meta, Canvas, Controls } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as ButtonStories from './Button.stories';
|
|
3
|
+
|
|
4
|
+
<Meta title="Atoms/Button [v1.0.1]/Architecture" />
|
|
5
|
+
|
|
6
|
+
# `ds-button`
|
|
7
|
+
|
|
8
|
+
The `ds-button` component is an **atomic, multi-use action primitive** in the Valence Design System. Within the `portfoliable` web application shell, it serves as a core action target across multiple views and composite molecules, such as primary call-to-actions in the Case Reader, external repository links, media controls in `ds-video-player`, and social share triggers.
|
|
9
|
+
<br />
|
|
10
|
+
|
|
11
|
+
## Principles
|
|
12
|
+
<br />
|
|
13
|
+
### Unidirectional Data Flow & State Synchronization
|
|
14
|
+
The component follows a strict **State In / Events Out** lifecycle model:
|
|
15
|
+
* **State In (Observed Attributes):** The component observes core state attributes (`variant`, `aria-label`, `disabled`) and composition attributes (`has-text`, `has-icon`, `icon`, `icon-variant`, `icon-position`, `has-image`, `image-src`, `image-alt`, `image-position`). When attributes mutate, `updateAttributes()` synchronizes internal shadow elements for icon, image, and label visibility.
|
|
16
|
+
* **Events Out (Native Interaction):** User interaction triggers standard `click` events emitted from the host.
|
|
17
|
+
* **Encapsulation:** The component handles internal focus styling and ARIA delegation without exposing its inner Shadow DOM subtree.
|
|
18
|
+
|
|
19
|
+
<mermaid-diagram chart={`
|
|
20
|
+
flowchart LR
|
|
21
|
+
subgraph Host["Host Application / Composite Container"]
|
|
22
|
+
direction TB
|
|
23
|
+
App["App Shell / Molecule"]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
subgraph WebComp["ds-button (Shadow DOM)"]
|
|
27
|
+
HostTag["<ds-button>"]
|
|
28
|
+
ButtonEl["<button>"]
|
|
29
|
+
IconEl["<ds-icon>"]
|
|
30
|
+
SlotEl["<slot>"]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
subgraph Composite["ds-tooltip (Optional)"]
|
|
34
|
+
Tooltip["<ds-tooltip>"]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
App -->|"1. State Attributes<br/><code>variant, has-text, has-icon, has-image</code>"| HostTag
|
|
38
|
+
HostTag -->|"2. Updates Attributes"| ButtonEl
|
|
39
|
+
HostTag -->|"3. Configures Size & Variant"| IconEl
|
|
40
|
+
HostTag -->|"4. Directs Label Content"| SlotEl
|
|
41
|
+
ButtonEl -->|"5. Emits Interaction Events"| App
|
|
42
|
+
HostTag -.->|"Hover / Focus Sync"| Tooltip
|
|
43
|
+
|
|
44
|
+
%% Styling
|
|
45
|
+
style Host fill:#f8fafc,stroke:#94a3b8,stroke-width:2px,color:#0f172a
|
|
46
|
+
style WebComp fill:#eff6ff,stroke:#3b82f6,stroke-width:2px,color:#1e3a8a
|
|
47
|
+
style Composite fill:#f0fdf4,stroke:#22c55e,stroke-width:2px,color:#14532d
|
|
48
|
+
style HostTag fill:#ffffff,stroke:#cbd5e1,color:#0f172a
|
|
49
|
+
style ButtonEl fill:#ffffff,stroke:#93c5fd,color:#1e3a8a
|
|
50
|
+
style IconEl fill:#ffffff,stroke:#93c5fd,color:#1e3a8a
|
|
51
|
+
style SlotEl fill:#ffffff,stroke:#93c5fd,color:#1e3a8a
|
|
52
|
+
style Tooltip fill:#ffffff,stroke:#86efac,color:#14532d
|
|
53
|
+
`} />
|
|
54
|
+
|
|
55
|
+
<br />
|
|
56
|
+
## Slot Architecture
|
|
57
|
+
|
|
58
|
+
### Internal Shadow DOM Structure
|
|
59
|
+
The Shadow DOM template is intentionally compressed on a single line to prevent unwanted whitespace text nodes around slot projections:
|
|
60
|
+
|
|
61
|
+
```html
|
|
62
|
+
<style>${css}</style>
|
|
63
|
+
<button type="button">
|
|
64
|
+
<img class="btn-image" alt="" loading="lazy" referrerpolicy="no-referrer" style="display: none;">
|
|
65
|
+
<ds-icon class="btn-icon" style="display: none;"></ds-icon>
|
|
66
|
+
<span class="btn-label"><slot></slot></span>
|
|
67
|
+
</button>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Slot Hierarchy Table
|
|
71
|
+
|
|
72
|
+
<table>
|
|
73
|
+
<thead>
|
|
74
|
+
<tr>
|
|
75
|
+
<th>Slot Name</th>
|
|
76
|
+
<th>Allowed Children</th>
|
|
77
|
+
<th>Description</th>
|
|
78
|
+
<th>Fallback / Variant Behavior</th>
|
|
79
|
+
</tr>
|
|
80
|
+
</thead>
|
|
81
|
+
<tbody>
|
|
82
|
+
<tr>
|
|
83
|
+
<td>`default`</td>
|
|
84
|
+
<td>Text node, `<span>`</td>
|
|
85
|
+
<td>Primary textual button label injected by the host application.</td>
|
|
86
|
+
<td>Rendered when `has-text` is enabled (default) across all variants. Hidden when `has-text="false"`.</td>
|
|
87
|
+
</tr>
|
|
88
|
+
</tbody>
|
|
89
|
+
</table>
|
|
90
|
+
<br />
|
|
91
|
+
### Iconography & Tooltip Synergy
|
|
92
|
+
1. **Child `<ds-icon>` Mechanics:** When `has-icon` is enabled and `icon` is provided, `ds-button` renders the internal `<ds-icon>` and applies dynamic sizing (`20` in floating, `14` otherwise).
|
|
93
|
+
2. **Child Image Mechanics:** When `has-image` is enabled, `ds-button` renders the internal image using `image-src` and `image-alt`. Image sizing follows icon sizing logic with a slightly larger visual footprint.
|
|
94
|
+
3. **Content Position Reversal:** Setting `icon-position="right"` or `image-position="right"` reflects to `content-position="right"`, which sets `row-reverse` on the internal button container.
|
|
95
|
+
4. **Precedence Rule:** If both `has-image` and `has-icon` are enabled, image content takes precedence and icon content is suppressed.
|
|
96
|
+
5. **Tooltip Composite Pattern:** When paired with `<ds-tooltip>`, hovering or focusing the button activates the tooltip's `visible` attribute to display helper text and keyboard shortcuts.
|
|
97
|
+
<br />
|
|
98
|
+
|
|
99
|
+
## API Contract
|
|
100
|
+
|
|
101
|
+
### Observed Attributes & Properties
|
|
102
|
+
<table>
|
|
103
|
+
<thead>
|
|
104
|
+
<tr>
|
|
105
|
+
<th>Property / Attribute</th>
|
|
106
|
+
<th>Type</th>
|
|
107
|
+
<th>Default</th>
|
|
108
|
+
<th>Description</th>
|
|
109
|
+
</tr>
|
|
110
|
+
</thead>
|
|
111
|
+
<tbody>
|
|
112
|
+
<tr>
|
|
113
|
+
<td>`variant`</td>
|
|
114
|
+
<td>`'primary' | 'secondary' | 'tertiary' | 'floating'`</td>
|
|
115
|
+
<td>`'primary'`</td>
|
|
116
|
+
<td>Determines visual presentation, geometry, and hover scaling behaviors.</td>
|
|
117
|
+
</tr>
|
|
118
|
+
<tr>
|
|
119
|
+
<td>`has-text`</td>
|
|
120
|
+
<td>`boolean`</td>
|
|
121
|
+
<td>`true`</td>
|
|
122
|
+
<td>Toggles rendering of slotted text label content inside the button.</td>
|
|
123
|
+
</tr>
|
|
124
|
+
<tr>
|
|
125
|
+
<td>`has-icon`</td>
|
|
126
|
+
<td>`boolean`</td>
|
|
127
|
+
<td>`false`</td>
|
|
128
|
+
<td>Enables icon rendering (requires `icon`).</td>
|
|
129
|
+
</tr>
|
|
130
|
+
<tr>
|
|
131
|
+
<td>`has-image`</td>
|
|
132
|
+
<td>`boolean`</td>
|
|
133
|
+
<td>`false`</td>
|
|
134
|
+
<td>Enables image rendering (requires `image-src`), and takes precedence over icon.</td>
|
|
135
|
+
</tr>
|
|
136
|
+
<tr>
|
|
137
|
+
<td>`aria-label`</td>
|
|
138
|
+
<td>`string`</td>
|
|
139
|
+
<td>`null`</td>
|
|
140
|
+
<td>Accessibility label delegated to internal `<button>` and scrubbed from host tag.</td>
|
|
141
|
+
</tr>
|
|
142
|
+
<tr>
|
|
143
|
+
<td>`disabled`</td>
|
|
144
|
+
<td>`boolean`</td>
|
|
145
|
+
<td>`false`</td>
|
|
146
|
+
<td>Disables interactivity, updates cursor to `not-allowed`, and lowers opacity.</td>
|
|
147
|
+
</tr>
|
|
148
|
+
<tr>
|
|
149
|
+
<td>`icon`</td>
|
|
150
|
+
<td>`string`</td>
|
|
151
|
+
<td>`null`</td>
|
|
152
|
+
<td>Name of the icon to render inside internal `<ds-icon>`.</td>
|
|
153
|
+
</tr>
|
|
154
|
+
<tr>
|
|
155
|
+
<td>`icon-variant`</td>
|
|
156
|
+
<td>`'outline' | 'fill'`</td>
|
|
157
|
+
<td>`'outline'`</td>
|
|
158
|
+
<td>Sets the icon rendering style (`fill` vs default outline).</td>
|
|
159
|
+
</tr>
|
|
160
|
+
<tr>
|
|
161
|
+
<td>`icon-position`</td>
|
|
162
|
+
<td>`'left' | 'right'`</td>
|
|
163
|
+
<td>`'left'`</td>
|
|
164
|
+
<td>Determines icon placement relative to slotted label text.</td>
|
|
165
|
+
</tr>
|
|
166
|
+
<tr>
|
|
167
|
+
<td>`image-src`</td>
|
|
168
|
+
<td>`string`</td>
|
|
169
|
+
<td>`https://thispersondoesnotexist.com/random-person.jpeg`</td>
|
|
170
|
+
<td>Source URL used when image content is enabled.</td>
|
|
171
|
+
</tr>
|
|
172
|
+
<tr>
|
|
173
|
+
<td>`image-alt`</td>
|
|
174
|
+
<td>`string`</td>
|
|
175
|
+
<td>`Profile image`</td>
|
|
176
|
+
<td>Alt text used by the internal image.</td>
|
|
177
|
+
</tr>
|
|
178
|
+
<tr>
|
|
179
|
+
<td>`image-position`</td>
|
|
180
|
+
<td>`'left' | 'right'`</td>
|
|
181
|
+
<td>`'left'`</td>
|
|
182
|
+
<td>Determines image placement relative to slotted label text.</td>
|
|
183
|
+
</tr>
|
|
184
|
+
</tbody>
|
|
185
|
+
</table>
|
|
186
|
+
<br />
|
|
187
|
+
### Emitted Events
|
|
188
|
+
|
|
189
|
+
<table>
|
|
190
|
+
<thead>
|
|
191
|
+
<tr>
|
|
192
|
+
<th>Event Name</th>
|
|
193
|
+
<th>Type</th>
|
|
194
|
+
<th>Bubbles / Composed</th>
|
|
195
|
+
<th>Description</th>
|
|
196
|
+
</tr>
|
|
197
|
+
</thead>
|
|
198
|
+
<tbody>
|
|
199
|
+
<tr>
|
|
200
|
+
<td>`click`</td>
|
|
201
|
+
<td>`MouseEvent`</td>
|
|
202
|
+
<td>`true` / `true`</td>
|
|
203
|
+
<td>Native DOM click event dispatched when the user activates an enabled button.</td>
|
|
204
|
+
</tr>
|
|
205
|
+
</tbody>
|
|
206
|
+
</table>
|
|
207
|
+
<br />
|
|
208
|
+
### Sub-Atomic CSS Custom Property Hooks
|
|
209
|
+
|
|
210
|
+
<table>
|
|
211
|
+
<thead>
|
|
212
|
+
<tr>
|
|
213
|
+
<th>CSS Variable</th>
|
|
214
|
+
<th>Fallback Token Default</th>
|
|
215
|
+
<th>Description</th>
|
|
216
|
+
</tr>
|
|
217
|
+
</thead>
|
|
218
|
+
<tbody>
|
|
219
|
+
<tr>
|
|
220
|
+
<td>`--ds-button-radius`</td>
|
|
221
|
+
<td>`var(--radius-pill)` or `var(--radius-circle)`</td>
|
|
222
|
+
<td>Overrides default button corner rounding.</td>
|
|
223
|
+
</tr>
|
|
224
|
+
<tr>
|
|
225
|
+
<td>`--ds-button-bg`</td>
|
|
226
|
+
<td>`var(--color-black)` or `transparent`</td>
|
|
227
|
+
<td>Overrides background surface fill color.</td>
|
|
228
|
+
</tr>
|
|
229
|
+
<tr>
|
|
230
|
+
<td>`--ds-button-hover-bg`</td>
|
|
231
|
+
<td>`var(--color-gray-dark)` or `rgba(0,0,0,0.12)`</td>
|
|
232
|
+
<td>Overrides hover state background fill.</td>
|
|
233
|
+
</tr>
|
|
234
|
+
<tr>
|
|
235
|
+
<td>`--ds-button-active-bg`</td>
|
|
236
|
+
<td>`var(--color-black)` or `rgba(0,0,0,0.18)`</td>
|
|
237
|
+
<td>Overrides active state background fill.</td>
|
|
238
|
+
</tr>
|
|
239
|
+
<tr>
|
|
240
|
+
<td>`--ds-button-border-width`</td>
|
|
241
|
+
<td>`var(--border-width-thin)` or `var(--border-width-medium)`</td>
|
|
242
|
+
<td>Overrides button border stroke width.</td>
|
|
243
|
+
</tr>
|
|
244
|
+
<tr>
|
|
245
|
+
<td>`--ds-button-border-color`</td>
|
|
246
|
+
<td>`var(--color-black)` or `var(--color-gray-light)`</td>
|
|
247
|
+
<td>Overrides button border color.</td>
|
|
248
|
+
</tr>
|
|
249
|
+
<tr>
|
|
250
|
+
<td>`--ds-button-hover-scale`</td>
|
|
251
|
+
<td>`1.02`</td>
|
|
252
|
+
<td>Hover state scale transform multiplier.</td>
|
|
253
|
+
</tr>
|
|
254
|
+
<tr>
|
|
255
|
+
<td>`--ds-button-active-scale`</td>
|
|
256
|
+
<td>`0.95`</td>
|
|
257
|
+
<td>Active click state scale transform multiplier.</td>
|
|
258
|
+
</tr>
|
|
259
|
+
</tbody>
|
|
260
|
+
</table>
|
|
261
|
+
|
|
262
|
+
<br />
|
|
263
|
+
|
|
264
|
+
## `a11y` Engine
|
|
265
|
+
|
|
266
|
+
### 1. ARIA Delegation & Host Scrubbing
|
|
267
|
+
When `aria-label` is applied to `<ds-button>` in HTML, `updateAttributes()` delegates the attribute down to the internal shadow `<button>` element and scrubs `aria-label` from the host tag. This prevents browser screen readers and automated accessibility checkers from reporting `aria-prohibited-attr` on non-interactive custom element wrappers.
|
|
268
|
+
|
|
269
|
+
### 2. Root Mutation Observer (`_observeRootAccessibility`)
|
|
270
|
+
During `connectedCallback()`, `ds-button` instantiates a `MutationObserver` on `document.documentElement`. It reflects root accessibility classes as host boolean attributes:
|
|
271
|
+
|
|
272
|
+
<table>
|
|
273
|
+
<thead>
|
|
274
|
+
<tr>
|
|
275
|
+
<th>Root Class (`<html>`)</th>
|
|
276
|
+
<th>Reflected Host Attribute</th>
|
|
277
|
+
<th>CSS Styling Reaction</th>
|
|
278
|
+
</tr>
|
|
279
|
+
</thead>
|
|
280
|
+
<tbody>
|
|
281
|
+
<tr>
|
|
282
|
+
<td>`.a11y-dark-mode`</td>
|
|
283
|
+
<td>`a11y-dark-mode`</td>
|
|
284
|
+
<td>Inverts surface tokens, using high-luminosity borders and dark player backgrounds.</td>
|
|
285
|
+
</tr>
|
|
286
|
+
<tr>
|
|
287
|
+
<td>`.a11y-high-contrast`</td>
|
|
288
|
+
<td>`a11y-high-contrast`</td>
|
|
289
|
+
<td>Forces binary 21:1 contrast ratios (`#000000` / `#FFFFFF`), bold weight (`700`), and outline rings.</td>
|
|
290
|
+
</tr>
|
|
291
|
+
<tr>
|
|
292
|
+
<td>`.a11y-forced-colors`</td>
|
|
293
|
+
<td>`a11y-forced-colors`</td>
|
|
294
|
+
<td>Applies system active theme variables (`Canvas`, `CanvasText`, `Highlight`, `HighlightText`) under `forced-color-adjust: none`.</td>
|
|
295
|
+
</tr>
|
|
296
|
+
<tr>
|
|
297
|
+
<td>`.a11y-dyslexia`</td>
|
|
298
|
+
<td>`a11y-dyslexia`</td>
|
|
299
|
+
<td>Replaces font family with Comic Sans and increases letter and word spacing.</td>
|
|
300
|
+
</tr>
|
|
301
|
+
<tr>
|
|
302
|
+
<td>`.a11y-reduce-motion`</td>
|
|
303
|
+
<td>`a11y-reduce-motion`</td>
|
|
304
|
+
<td>Forces transition and animation durations to `0s`.</td>
|
|
305
|
+
</tr>
|
|
306
|
+
</tbody>
|
|
307
|
+
</table>
|
|
308
|
+
|
|
309
|
+
<br />
|
|
310
|
+
|
|
311
|
+
## Examples
|
|
312
|
+
|
|
313
|
+
### Example A: Primary CTA Button (Case Reader View)
|
|
314
|
+
Used inside the Case Reader to launch the primary video presentation:
|
|
315
|
+
|
|
316
|
+
```javascript
|
|
317
|
+
import 'valence/ds-button';
|
|
318
|
+
|
|
319
|
+
const container = document.createElement('div');
|
|
320
|
+
container.innerHTML = `
|
|
321
|
+
<ds-button
|
|
322
|
+
variant="primary"
|
|
323
|
+
has-icon
|
|
324
|
+
icon="play"
|
|
325
|
+
icon-position="left">
|
|
326
|
+
Play Video
|
|
327
|
+
</ds-button>
|
|
328
|
+
`;
|
|
329
|
+
|
|
330
|
+
const button = container.querySelector('ds-button');
|
|
331
|
+
button.addEventListener('click', () => {
|
|
332
|
+
appShell.openVideoPlayer();
|
|
333
|
+
});
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Example B: Floating Control Button with Keyboard Shortcut (Video Player)
|
|
337
|
+
Used inside `ds-video-player` controls as an elevated overlay action:
|
|
338
|
+
|
|
339
|
+
```javascript
|
|
340
|
+
import 'valence/ds-button';
|
|
341
|
+
import 'valence/ds-tooltip';
|
|
342
|
+
|
|
343
|
+
const wrapper = document.createElement('div');
|
|
344
|
+
wrapper.style.position = 'relative';
|
|
345
|
+
|
|
346
|
+
wrapper.innerHTML = `
|
|
347
|
+
<ds-button
|
|
348
|
+
variant="floating"
|
|
349
|
+
icon="play"
|
|
350
|
+
aria-label="Play Video">
|
|
351
|
+
</ds-button>
|
|
352
|
+
|
|
353
|
+
<ds-tooltip
|
|
354
|
+
text="Play Video"
|
|
355
|
+
position="top"
|
|
356
|
+
show-kbd
|
|
357
|
+
kbd-label="Esc">
|
|
358
|
+
</ds-tooltip>
|
|
359
|
+
`;
|
|
360
|
+
|
|
361
|
+
const btn = wrapper.querySelector('ds-button');
|
|
362
|
+
const tooltip = wrapper.querySelector('ds-tooltip');
|
|
363
|
+
|
|
364
|
+
btn.addEventListener('mouseenter', () => tooltip.setAttribute('visible', 'true'));
|
|
365
|
+
btn.addEventListener('mouseleave', () => tooltip.removeAttribute('visible'));
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### Example C: Icon-Only Action (Social Sharing)
|
|
369
|
+
Used inside header toolbars and case cards to trigger share links:
|
|
370
|
+
|
|
371
|
+
```javascript
|
|
372
|
+
const shareBtn = document.createElement('ds-button');
|
|
373
|
+
shareBtn.setAttribute('variant', 'tertiary');
|
|
374
|
+
shareBtn.setAttribute('has-icon', 'true');
|
|
375
|
+
shareBtn.setAttribute('has-text', 'false');
|
|
376
|
+
shareBtn.setAttribute('icon', 'share');
|
|
377
|
+
shareBtn.setAttribute('aria-label', 'Share case study');
|
|
378
|
+
|
|
379
|
+
shareBtn.addEventListener('click', async () => {
|
|
380
|
+
if (navigator.share) {
|
|
381
|
+
await navigator.share({ title: document.title, url: window.location.href });
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
```
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { Meta, Subtitle, Source } from '@storybook/addon-docs/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="Atoms/Button [v1.0.1]/Changelog" />
|
|
4
|
+
|
|
5
|
+
# Changelog
|
|
6
|
+
|
|
7
|
+
<br />
|
|
8
|
+
|
|
9
|
+
## [1.0.1] - 2026-07-24
|
|
10
|
+
|
|
11
|
+
<br />
|
|
12
|
+
|
|
13
|
+
### Props Simplification Update
|
|
14
|
+
|
|
15
|
+
The button API has been simplified so visual styling is driven by four variants (`primary`, `secondary`, `tertiary`, `floating`) while iconography and imagery are now orthogonal content props that can be configured on any variant.
|
|
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>`Changed`</td>
|
|
32
|
+
<td>`ds-button`</td>
|
|
33
|
+
<td>Renamed the `text` variant to `tertiary` and removed `icon`/`image` as standalone variants.</td>
|
|
34
|
+
</tr>
|
|
35
|
+
<tr>
|
|
36
|
+
<td>`Added`</td>
|
|
37
|
+
<td>`ds-button`</td>
|
|
38
|
+
<td>Introduced `has-icon`, `has-image`, and `has-text` props so text, icon, and image content can be composed across all variants.</td>
|
|
39
|
+
</tr>
|
|
40
|
+
<tr>
|
|
41
|
+
<td>`Added`</td>
|
|
42
|
+
<td>`ds-button`</td>
|
|
43
|
+
<td>Added `image-position` support and unified directional layout under reflected `content-position` for right-aligned content.</td>
|
|
44
|
+
</tr>
|
|
45
|
+
<tr>
|
|
46
|
+
<td>`Fixed`</td>
|
|
47
|
+
<td>`button.css`</td>
|
|
48
|
+
<td>Adjusted no-text spacing so horizontal padding is symmetric, enlarged image content size, and corrected floating hug behavior for text-present vs text-hidden states.</td>
|
|
49
|
+
</tr>
|
|
50
|
+
<tr>
|
|
51
|
+
<td>`Changed`</td>
|
|
52
|
+
<td>`Button.stories.js`</td>
|
|
53
|
+
<td>Updated controls and stories to the simplified props model and new variant names.</td>
|
|
54
|
+
</tr>
|
|
55
|
+
</tbody>
|
|
56
|
+
</table>
|
|
57
|
+
|
|
58
|
+
<br />
|
|
59
|
+
|
|
60
|
+
## [1.0.0] - 2026-07-16
|
|
61
|
+
|
|
62
|
+
<br />
|
|
63
|
+
|
|
64
|
+
### Initial Release
|
|
65
|
+
|
|
66
|
+
The stable debut of the presentational button component (`ds-button`) featuring support for nesting icons, custom tooltips, multiple stylistic form factor variants, and active root accessibility syncs.
|
|
67
|
+
|
|
68
|
+
<br />
|
|
69
|
+
|
|
70
|
+
### Summary of Changes
|
|
71
|
+
|
|
72
|
+
<table>
|
|
73
|
+
<thead>
|
|
74
|
+
<tr>
|
|
75
|
+
<th>Classification</th>
|
|
76
|
+
<th>Scope / Context</th>
|
|
77
|
+
<th>Description</th>
|
|
78
|
+
</tr>
|
|
79
|
+
</thead>
|
|
80
|
+
<tbody>
|
|
81
|
+
<tr>
|
|
82
|
+
<td>`Added`</td>
|
|
83
|
+
<td>`ds-button`</td>
|
|
84
|
+
<td>Initial release of five baseline styling variants (`primary`, `secondary`, `text`, `icon`, `floating`) with custom viewport transforms.</td>
|
|
85
|
+
</tr>
|
|
86
|
+
<tr>
|
|
87
|
+
<td>`Added`</td>
|
|
88
|
+
<td>`ds-button`</td>
|
|
89
|
+
<td>Integrated support for nesting `<ds-icon>` structures with dynamic size mappings based on active variants.</td>
|
|
90
|
+
</tr>
|
|
91
|
+
<tr>
|
|
92
|
+
<td>`Added`</td>
|
|
93
|
+
<td>`_observeRootAccessibility`</td>
|
|
94
|
+
<td>Configured passive root observer reflecting visual preferences downstream onto host attributes.</td>
|
|
95
|
+
</tr>
|
|
96
|
+
<tr>
|
|
97
|
+
<td>`Fixed`</td>
|
|
98
|
+
<td>`ds-button`</td>
|
|
99
|
+
<td>Scrubbed the Light DOM host attribute `aria-label` after delegating it down into internal button primitives to prevent prohibit validations.</td>
|
|
100
|
+
</tr>
|
|
101
|
+
<tr>
|
|
102
|
+
<td>`Fixed`</td>
|
|
103
|
+
<td>`Button.stories.js`</td>
|
|
104
|
+
<td>Standardized sub-atomic style overrides to bind to `--ds-button-*` CSS token hooks rather than `--btn-*` variables.</td>
|
|
105
|
+
</tr>
|
|
106
|
+
</tbody>
|
|
107
|
+
</table>
|
|
108
|
+
|
|
109
|
+
<br />
|
|
110
|
+
|
|
111
|
+
### Added
|
|
112
|
+
- **Core Variants:** Introduced `<ds-button>` built specifically with five functional variant structures (`primary`, `secondary`, `text`, `icon`, `floating`).
|
|
113
|
+
- **Iconography Synergy:** Auto-calculates icon dimensions based on active variant templates and reverses directions when `icon-position="right"` is active.
|
|
114
|
+
- **Root Class Syncing:** Built-in `MutationObserver` on the HTML root reflects global settings onto host element attributes.
|
|
115
|
+
- **Thematic Overrides:** Bound border-radius, background, hover backdrop, active backdrop, borders, and viewport scales to standard `--ds-button-*` properties.
|
|
116
|
+
- **Storybook Workspace:** Authored interactive Controls and automated CSF3 story play-tests inside `Button.stories.js`.
|
|
117
|
+
|
|
118
|
+
### Fixed
|
|
119
|
+
- **Host ARIA Delegation:** Clears light DOM `aria-label` custom attributes on host custom elements after delegating them to focusable internal buttons.
|
|
120
|
+
- **Disabled Host Cursor:** Enforces `cursor: not-allowed` on the host wrapper element when disabled is mapped.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
*This changelog is specific to the `<ds-button>` component. For design system global releases, refer to the main [Getting Started/Changelog](?path=/docs/getting-started-changelog--docs).*
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import css from './button.css?inline';
|
|
2
|
+
import '../../sub-atomic/Iconography/Iconography';
|
|
3
|
+
|
|
4
|
+
const DEFAULT_IMAGE_SRC = 'https://thispersondoesnotexist.com/random-person.jpeg';
|
|
5
|
+
const DEFAULT_IMAGE_ALT = 'Profile image';
|
|
6
|
+
const CONTENT_SIZE_PX = '22';
|
|
7
|
+
|
|
8
|
+
export class Button extends HTMLElement {
|
|
9
|
+
static get observedAttributes() {
|
|
10
|
+
return ['variant', 'aria-label', 'disabled', 'has-text', 'has-icon', 'icon', 'icon-variant', 'icon-position', 'has-image', 'image-src', 'image-alt', 'image-position'];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
constructor() {
|
|
14
|
+
super();
|
|
15
|
+
this.attachShadow({ mode: 'open' });
|
|
16
|
+
this.shadowRoot.innerHTML = `<style>${css}</style><button type="button"><img class="btn-image" alt="" loading="lazy" referrerpolicy="no-referrer" style="display: none;"><ds-icon class="btn-icon" style="display: none;"></ds-icon><span class="btn-label"><slot></slot></span></button>`;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
connectedCallback() {
|
|
20
|
+
this.buttonEl = this.shadowRoot.querySelector('button');
|
|
21
|
+
this.imageEl = this.shadowRoot.querySelector('.btn-image');
|
|
22
|
+
this.iconEl = this.shadowRoot.querySelector('.btn-icon');
|
|
23
|
+
this.updateAttributes();
|
|
24
|
+
this._observeRootAccessibility();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
disconnectedCallback() {
|
|
28
|
+
if (this._themeObserver) {
|
|
29
|
+
this._themeObserver.disconnect();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
34
|
+
if (name === 'aria-label' && newValue === null) return;
|
|
35
|
+
|
|
36
|
+
if (this.buttonEl && oldValue !== newValue) {
|
|
37
|
+
this.updateAttributes();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
_observeRootAccessibility() {
|
|
42
|
+
const root = this.ownerDocument.documentElement;
|
|
43
|
+
const sync = () => {
|
|
44
|
+
this.toggleAttribute('a11y-dark-mode', root.classList.contains('a11y-dark-mode'));
|
|
45
|
+
this.toggleAttribute('a11y-high-contrast', root.classList.contains('a11y-high-contrast'));
|
|
46
|
+
this.toggleAttribute('a11y-large-text', root.classList.contains('a11y-large-text'));
|
|
47
|
+
this.toggleAttribute('a11y-dyslexia', root.classList.contains('a11y-dyslexia'));
|
|
48
|
+
this.toggleAttribute('a11y-reduce-motion', root.classList.contains('a11y-reduce-motion'));
|
|
49
|
+
this.toggleAttribute('a11y-focus-mode', root.classList.contains('a11y-focus-mode'));
|
|
50
|
+
this.toggleAttribute('a11y-forced-colors', root.classList.contains('a11y-forced-colors'));
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
sync();
|
|
54
|
+
this._themeObserver = new MutationObserver(sync);
|
|
55
|
+
this._themeObserver.observe(root, {
|
|
56
|
+
attributes: true,
|
|
57
|
+
attributeFilter: ['class'],
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
updateAttributes() {
|
|
62
|
+
const requestedVariant = this.getAttribute('variant') || 'primary';
|
|
63
|
+
const normalizedVariant = requestedVariant === 'text' ? 'tertiary' : requestedVariant;
|
|
64
|
+
const variant = ['primary', 'secondary', 'tertiary', 'floating'].includes(normalizedVariant)
|
|
65
|
+
? normalizedVariant
|
|
66
|
+
: 'primary';
|
|
67
|
+
const ariaLabel = this.getAttribute('aria-label');
|
|
68
|
+
const disabled = this.hasAttribute('disabled');
|
|
69
|
+
const hasTextAttr = this.getAttribute('has-text');
|
|
70
|
+
const hasText = hasTextAttr === null ? true : hasTextAttr !== 'false';
|
|
71
|
+
const hasIcon = this.hasAttribute('has-icon');
|
|
72
|
+
const hasImage = this.hasAttribute('has-image');
|
|
73
|
+
const iconName = this.getAttribute('icon');
|
|
74
|
+
const iconPosition = this.getAttribute('icon-position') || 'left';
|
|
75
|
+
const imagePosition = this.getAttribute('image-position') || 'left';
|
|
76
|
+
const activePosition = hasImage ? imagePosition : iconPosition;
|
|
77
|
+
|
|
78
|
+
this.buttonEl.className = `variant-${variant}`;
|
|
79
|
+
this.buttonEl.disabled = disabled;
|
|
80
|
+
|
|
81
|
+
if (ariaLabel) {
|
|
82
|
+
this.buttonEl.setAttribute('aria-label', ariaLabel);
|
|
83
|
+
this.removeAttribute('aria-label');
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (hasImage) {
|
|
87
|
+
this.imageEl.setAttribute('src', this.getAttribute('image-src') || DEFAULT_IMAGE_SRC);
|
|
88
|
+
this.imageEl.setAttribute('alt', this.getAttribute('image-alt') || DEFAULT_IMAGE_ALT);
|
|
89
|
+
this.imageEl.style.setProperty('--ds-button-image-content-size', `${CONTENT_SIZE_PX}px`);
|
|
90
|
+
this.imageEl.style.display = 'block';
|
|
91
|
+
this.buttonEl.classList.add('has-image');
|
|
92
|
+
} else {
|
|
93
|
+
this.imageEl.style.display = 'none';
|
|
94
|
+
this.buttonEl.classList.remove('has-image');
|
|
95
|
+
this.imageEl.style.removeProperty('--ds-button-image-content-size');
|
|
96
|
+
this.imageEl.removeAttribute('src');
|
|
97
|
+
this.imageEl.setAttribute('alt', '');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (hasIcon && iconName && !hasImage) {
|
|
101
|
+
this.iconEl.setAttribute('name', iconName);
|
|
102
|
+
|
|
103
|
+
// Strict mapping
|
|
104
|
+
const iconVariant = this.getAttribute('icon-variant');
|
|
105
|
+
if (iconVariant === 'fill') {
|
|
106
|
+
this.iconEl.setAttribute('variant', 'fill');
|
|
107
|
+
} else {
|
|
108
|
+
this.iconEl.removeAttribute('variant');
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
this.iconEl.setAttribute('size', CONTENT_SIZE_PX);
|
|
112
|
+
this.iconEl.style.display = 'inline-flex';
|
|
113
|
+
this.buttonEl.classList.add('has-icon');
|
|
114
|
+
} else {
|
|
115
|
+
this.iconEl.style.display = 'none';
|
|
116
|
+
this.buttonEl.classList.remove('has-icon');
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
this.buttonEl.classList.toggle('no-text', !hasText);
|
|
120
|
+
|
|
121
|
+
if (activePosition === 'right') {
|
|
122
|
+
this.setAttribute('content-position', 'right');
|
|
123
|
+
} else {
|
|
124
|
+
this.removeAttribute('content-position');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (!customElements.get('ds-button')) {
|
|
130
|
+
customElements.define('ds-button', Button);
|
|
131
|
+
}
|