@sequent-org/moodboard 1.1.0 → 1.2.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/package.json +2 -2
- package/src/assets/emodji//320/226/320/265/320/275/321/201/320/272/320/270/320/265 /321/215/320/274/320/276/321/206/320/270/320/270/1f645.png +0 -0
- package/src/assets/emodji//320/226/320/265/320/275/321/201/320/272/320/270/320/265 /321/215/320/274/320/276/321/206/320/270/320/270/1f646.png +0 -0
- package/src/assets/emodji//320/226/320/265/320/275/321/201/320/272/320/270/320/265 /321/215/320/274/320/276/321/206/320/270/320/270/1f64b.png +0 -0
- package/src/assets/emodji//320/226/320/265/320/275/321/201/320/272/320/270/320/265 /321/215/320/274/320/276/321/206/320/270/320/270/1f64d.png +0 -0
- package/src/assets/emodji//320/226/320/265/320/275/321/201/320/272/320/270/320/265 /321/215/320/274/320/276/321/206/320/270/320/270/1f64e.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f446.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f447.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f448.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f449.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f44a.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f44b.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f44c.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f450.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f4aa.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f590.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f596.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f64c.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/1f64f.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/261d.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/270a.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/270b.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/270c.png +0 -0
- package/src/assets/emodji//320/226/320/265/321/201/321/202/321/213/270d.png +0 -0
- package/src/assets/emodji//320/232/320/276/321/202/320/270/320/272/320/270/1f638.png +0 -0
- package/src/assets/emodji//320/232/320/276/321/202/320/270/320/272/320/270/1f639.png +0 -0
- package/src/assets/emodji//320/232/320/276/321/202/320/270/320/272/320/270/1f63a.png +0 -0
- package/src/assets/emodji//320/232/320/276/321/202/320/270/320/272/320/270/1f63b.png +0 -0
- package/src/assets/emodji//320/232/320/276/321/202/320/270/320/272/320/270/1f63c.png +0 -0
- package/src/assets/emodji//320/232/320/276/321/202/320/270/320/272/320/270/1f63d.png +0 -0
- package/src/assets/emodji//320/232/320/276/321/202/320/270/320/272/320/270/1f63e.png +0 -0
- package/src/assets/emodji//320/232/320/276/321/202/320/270/320/272/320/270/1f63f.png +0 -0
- package/src/assets/emodji//320/232/320/276/321/202/320/270/320/272/320/270/1f640.png +0 -0
- package/src/assets/emodji//320/236/320/261/320/265/320/267/321/214/321/217/320/275/320/272/320/260/1f435.png +0 -0
- package/src/assets/emodji//320/236/320/261/320/265/320/267/321/214/321/217/320/275/320/272/320/260/1f648.png +0 -0
- package/src/assets/emodji//320/236/320/261/320/265/320/267/321/214/321/217/320/275/320/272/320/260/1f649.png +0 -0
- package/src/assets/emodji//320/236/320/261/320/265/320/267/321/214/321/217/320/275/320/272/320/260/1f64a.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/1f440.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/1f441.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/1f499.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/1f4a1.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/1f4a3.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/1f4a9.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/1f4ac.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/1f4af.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/203c.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/26d4.png +0 -0
- package/src/assets/emodji//320/240/320/260/320/267/320/275/320/276/320/265/2764.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f600.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f601.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f602.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f603.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f604.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f605.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f606.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f607.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f609.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f60a.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f60b.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f60c.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f60d.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f60e.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f60f.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f610.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f611.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f612.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f613.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f614.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f615.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f616.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f617.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f618.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f619.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f61a.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f61b.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f61c.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f61d.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f61e.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f61f.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f620.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f621.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f622.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f623.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f624.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f625.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f626.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f627.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f628.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f629.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f62a.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f62b.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f62c.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f62d.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f62e.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f62f.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f630.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f631.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f632.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f633.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f635.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f636.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f641.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/1f642.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/2639.png +0 -0
- package/src/assets/emodji//320/241/320/274/320/260/320/271/320/273/320/270/320/272/320/270/263a.png +0 -0
- package/src/assets/fonts/amatic-sc/AmaticSC-Bold.ttf +0 -0
- package/src/assets/fonts/amatic-sc/AmaticSC-Regular.ttf +0 -0
- package/src/assets/fonts/caveat/Caveat-Bold.ttf +0 -0
- package/src/assets/fonts/caveat/Caveat-Medium.ttf +0 -0
- package/src/assets/fonts/caveat/Caveat-Regular.ttf +0 -0
- package/src/assets/fonts/caveat/Caveat-SemiBold.ttf +0 -0
- package/src/assets/fonts/caveat/Caveat-VariableFont_wght.ttf +0 -0
- package/src/assets/fonts/great-vibes/GreatVibes-Regular.ttf +0 -0
- package/src/assets/fonts/lobster/Lobster-Regular.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-Black.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-BlackItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-Bold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-BoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-ExtraBold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-ExtraLight.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-ExtraLightItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-Italic-VariableFont_wdth,wght.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-Italic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-Light.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-LightItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-Medium.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-MediumItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-Regular.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-SemiBold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-Thin.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-ThinItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif-VariableFont_wdth,wght.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-Black.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-BlackItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-Bold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-BoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-ExtraBold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-ExtraLight.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-ExtraLightItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-Italic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-Light.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-LightItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-Medium.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-MediumItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-Regular.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-SemiBold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-Thin.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_Condensed-ThinItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-Black.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-BlackItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-Bold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-BoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-ExtraBold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-ExtraLight.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-ExtraLightItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-Italic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-Light.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-LightItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-Medium.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-MediumItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-Regular.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-SemiBold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-Thin.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_ExtraCondensed-ThinItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-Black.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-BlackItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-Bold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-BoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-ExtraBold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-ExtraLight.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-ExtraLightItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-Italic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-Light.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-LightItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-Medium.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-MediumItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-Regular.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-SemiBold.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-Thin.ttf +0 -0
- package/src/assets/fonts/noto-serif/NotoSerif_SemiCondensed-ThinItalic.ttf +0 -0
- package/src/assets/fonts/oswald/Oswald-Bold.ttf +0 -0
- package/src/assets/fonts/oswald/Oswald-ExtraLight.ttf +0 -0
- package/src/assets/fonts/oswald/Oswald-Light.ttf +0 -0
- package/src/assets/fonts/oswald/Oswald-Medium.ttf +0 -0
- package/src/assets/fonts/oswald/Oswald-Regular.ttf +0 -0
- package/src/assets/fonts/oswald/Oswald-SemiBold.ttf +0 -0
- package/src/assets/fonts/oswald/Oswald-VariableFont_wght.ttf +0 -0
- package/src/assets/fonts/pacifico/Pacifico-Regular.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-Black.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-BlackItalic.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-Bold.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-BoldItalic.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-ExtraBold.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-Italic-VariableFont_wght.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-Italic.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-Medium.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-MediumItalic.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-Regular.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-SemiBold.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/playfair/PlayfairDisplay-VariableFont_wght.ttf +0 -0
- package/src/assets/fonts/poiret-one/PoiretOne-Regular.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-Black.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-BlackItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-Bold.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-BoldItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-ExtraBold.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-ExtraLight.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-ExtraLightItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-Italic-VariableFont_wdth,wght.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-Italic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-Light.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-LightItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-Medium.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-MediumItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-Regular.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-SemiBold.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-Thin.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-ThinItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto-VariableFont_wdth,wght.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-Black.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-BlackItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-Bold.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-BoldItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-ExtraBold.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-ExtraLight.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-ExtraLightItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-Italic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-Light.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-LightItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-Medium.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-MediumItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-Regular.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-SemiBold.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-Thin.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_Condensed-ThinItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-Black.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-BlackItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-Bold.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-BoldItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraBold.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraBoldItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraLight.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-ExtraLightItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-Italic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-Light.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-LightItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-Medium.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-MediumItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-Regular.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-SemiBold.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-SemiBoldItalic.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-Thin.ttf +0 -0
- package/src/assets/fonts/roboto/Roboto_SemiCondensed-ThinItalic.ttf +0 -0
- package/src/assets/fonts/roboto-slab/RobotoSlab-Black.ttf +0 -0
- package/src/assets/fonts/roboto-slab/RobotoSlab-Bold.ttf +0 -0
- package/src/assets/fonts/roboto-slab/RobotoSlab-ExtraBold.ttf +0 -0
- package/src/assets/fonts/roboto-slab/RobotoSlab-ExtraLight.ttf +0 -0
- package/src/assets/fonts/roboto-slab/RobotoSlab-Light.ttf +0 -0
- package/src/assets/fonts/roboto-slab/RobotoSlab-Medium.ttf +0 -0
- package/src/assets/fonts/roboto-slab/RobotoSlab-Regular.ttf +0 -0
- package/src/assets/fonts/roboto-slab/RobotoSlab-SemiBold.ttf +0 -0
- package/src/assets/fonts/roboto-slab/RobotoSlab-Thin.ttf +0 -0
- package/src/assets/fonts/roboto-slab/RobotoSlab-VariableFont_wght.ttf +0 -0
- package/src/assets/fonts/rubik-mono-one/RubikMonoOne-Regular.ttf +0 -0
- package/src/assets/icons/arrows-up-down-left-right.svg +1 -0
- package/src/assets/icons/arrows-up-down.svg +1 -0
- package/src/assets/icons/attachments.svg +1 -3
- package/src/assets/icons/attachments2.svg +3 -0
- package/src/assets/icons/clear.svg +1 -5
- package/src/assets/icons/cursor-default-custom.svg +10 -0
- package/src/assets/icons/cursor-default.svg +1 -0
- package/src/assets/icons/cursor-default2.svg +1 -0
- package/src/assets/icons/emoji.svg +1 -6
- package/src/assets/icons/emoji2.svg +6 -0
- package/src/assets/icons/frame.svg +1 -3
- package/src/assets/icons/frame2.svg +3 -0
- package/src/assets/icons/i-cursor.svg +1 -0
- package/src/assets/icons/image.svg +1 -3
- package/src/assets/icons/image2.svg +3 -0
- package/src/assets/icons/note.svg +1 -3
- package/src/assets/icons/note2.svg +3 -0
- package/src/assets/icons/pencil.svg +1 -3
- package/src/assets/icons/pencil2.svg +3 -0
- package/src/assets/icons/select.svg +1 -1
- package/src/assets/icons/shapes.svg +1 -3
- package/src/assets/icons/shapes2.svg +3 -0
- package/src/assets/icons/text-add.svg +1 -3
- package/src/assets/icons/text-add2.svg +3 -0
- package/src/assets/icons/trash.svg +1 -0
- package/src/core/commands/GroupMoveCommand.js +49 -13
- package/src/core/commands/MoveObjectCommand.js +4 -24
- package/src/core/events/Events.js +2 -0
- package/src/core/index.js +72 -40
- package/src/grid/GridFactory.js +3 -3
- package/src/grid/LineGrid.js +42 -20
- package/src/moodboard/MoodBoard.js +11 -0
- package/src/objects/DrawingObject.js +5 -5
- package/src/objects/FrameObject.js +1 -0
- package/src/objects/ImageObject.js +24 -5
- package/src/objects/NoteObject.js +221 -48
- package/src/services/BoardService.js +3 -3
- package/src/services/ZoomPanController.js +14 -3
- package/src/tools/BaseTool.js +6 -1
- package/src/tools/ToolManager.js +24 -1
- package/src/tools/object-tools/DrawingTool.js +3 -1
- package/src/tools/object-tools/PlacementTool.js +213 -93
- package/src/tools/object-tools/SelectTool.js +318 -134
- package/src/tools/object-tools/TextTool.js +23 -2
- package/src/ui/FramePropertiesPanel.js +101 -96
- package/src/ui/HtmlHandlesLayer.js +253 -52
- package/src/ui/HtmlTextLayer.js +120 -32
- package/src/ui/NotePropertiesPanel.js +115 -38
- package/src/ui/TextPropertiesPanel.js +100 -118
- package/src/ui/Toolbar.js +136 -50
- package/src/ui/Topbar.js +112 -10
- package/src/ui/ZoomPanel.js +8 -2
- package/src/ui/styles/index.css +5 -0
- package/src/ui/styles/panels.css +232 -0
- package/src/ui/styles/toolbar.css +77 -0
- package/src/ui/styles/topbar.css +113 -0
- package/src/ui/styles/workspace.css +412 -263
- package/src/utils/emojiResolver.js +121 -0
|
@@ -101,7 +101,6 @@ export class NotePropertiesPanel {
|
|
|
101
101
|
}
|
|
102
102
|
// Скрываем все палитры цветов
|
|
103
103
|
if (this.backgroundColorPalette) this.backgroundColorPalette.style.display = 'none';
|
|
104
|
-
if (this.borderColorPalette) this.borderColorPalette.style.display = 'none';
|
|
105
104
|
if (this.textColorPalette) this.textColorPalette.style.display = 'none';
|
|
106
105
|
}
|
|
107
106
|
|
|
@@ -114,16 +113,17 @@ export class NotePropertiesPanel {
|
|
|
114
113
|
flexDirection: 'row',
|
|
115
114
|
alignItems: 'center',
|
|
116
115
|
gap: '8px',
|
|
117
|
-
padding: '8px
|
|
116
|
+
padding: '8px 40px',
|
|
118
117
|
backgroundColor: 'white',
|
|
119
118
|
border: '1px solid #e0e0e0',
|
|
120
|
-
borderRadius: '
|
|
121
|
-
boxShadow: '0
|
|
119
|
+
borderRadius: '9999px',
|
|
120
|
+
boxShadow: '0 6px 24px rgba(0, 0, 0, 0.16)',
|
|
122
121
|
fontSize: '12px',
|
|
123
122
|
fontFamily: 'Arial, sans-serif',
|
|
124
123
|
minWidth: '320px',
|
|
125
124
|
height: '40px',
|
|
126
|
-
zIndex: '10000'
|
|
125
|
+
zIndex: '10000',
|
|
126
|
+
backdropFilter: 'blur(4px)'
|
|
127
127
|
});
|
|
128
128
|
|
|
129
129
|
// Создаем контролы для записки
|
|
@@ -179,6 +179,63 @@ export class NotePropertiesPanel {
|
|
|
179
179
|
}
|
|
180
180
|
|
|
181
181
|
_createNoteControls(panel) {
|
|
182
|
+
// Контейнер для выбора шрифта (как в панели текста)
|
|
183
|
+
const fontContainer = document.createElement('div');
|
|
184
|
+
Object.assign(fontContainer.style, {
|
|
185
|
+
display: 'flex',
|
|
186
|
+
alignItems: 'center',
|
|
187
|
+
gap: '6px'
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
const fontLabel = document.createElement('span');
|
|
191
|
+
fontLabel.textContent = 'Шрифт:';
|
|
192
|
+
Object.assign(fontLabel.style, {
|
|
193
|
+
fontSize: '11px',
|
|
194
|
+
color: '#666',
|
|
195
|
+
minWidth: '40px'
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
const fontSelect = document.createElement('select');
|
|
199
|
+
Object.assign(fontSelect.style, {
|
|
200
|
+
border: '1px solid #ddd',
|
|
201
|
+
borderRadius: '4px',
|
|
202
|
+
padding: '3px 8px',
|
|
203
|
+
fontSize: '12px',
|
|
204
|
+
backgroundColor: '#fff',
|
|
205
|
+
cursor: 'pointer',
|
|
206
|
+
minWidth: '140px',
|
|
207
|
+
});
|
|
208
|
+
this.fontSelect = fontSelect;
|
|
209
|
+
|
|
210
|
+
const fonts = [
|
|
211
|
+
{ value: 'Caveat, Arial, cursive', name: 'Caveat' },
|
|
212
|
+
{ value: 'Roboto, Arial, sans-serif', name: 'Roboto' },
|
|
213
|
+
{ value: 'Oswald, Arial, sans-serif', name: 'Oswald' },
|
|
214
|
+
{ value: 'Playfair Display, Georgia, serif', name: 'Playfair Display' },
|
|
215
|
+
{ value: 'Roboto Slab, Georgia, serif', name: 'Roboto Slab' },
|
|
216
|
+
{ value: 'Noto Serif, Georgia, serif', name: 'Noto Serif' },
|
|
217
|
+
{ value: 'Lobster, Arial, cursive', name: 'Lobster' },
|
|
218
|
+
{ value: 'Rubik Mono One, Arial, sans-serif', name: 'Rubik Mono One' },
|
|
219
|
+
{ value: 'Great Vibes, Arial, cursive', name: 'Great Vibes' },
|
|
220
|
+
{ value: 'Amatic SC, Arial, cursive', name: 'Amatic SC' },
|
|
221
|
+
{ value: 'Poiret One, Arial, cursive', name: 'Poiret One' },
|
|
222
|
+
{ value: 'Pacifico, Arial, cursive', name: 'Pacifico' },
|
|
223
|
+
];
|
|
224
|
+
fonts.forEach((font) => {
|
|
225
|
+
const option = document.createElement('option');
|
|
226
|
+
option.value = font.value;
|
|
227
|
+
option.textContent = font.name;
|
|
228
|
+
option.style.fontFamily = font.value;
|
|
229
|
+
fontSelect.appendChild(option);
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
fontSelect.addEventListener('change', (e) => {
|
|
233
|
+
this._changeFontFamily(e.target.value);
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
fontContainer.appendChild(fontLabel);
|
|
237
|
+
fontContainer.appendChild(fontSelect);
|
|
238
|
+
|
|
182
239
|
// Контейнер для цвета фона
|
|
183
240
|
const backgroundContainer = this._createColorControl(
|
|
184
241
|
'Фон:',
|
|
@@ -195,21 +252,7 @@ export class NotePropertiesPanel {
|
|
|
195
252
|
'backgroundColor'
|
|
196
253
|
);
|
|
197
254
|
|
|
198
|
-
//
|
|
199
|
-
const borderContainer = this._createColorControl(
|
|
200
|
-
'Граница:',
|
|
201
|
-
'borderColorButton',
|
|
202
|
-
'borderColorPalette',
|
|
203
|
-
[
|
|
204
|
-
{ name: 'Золотой', hex: '#F9A825', pixi: 0xF9A825 },
|
|
205
|
-
{ name: 'Розовый', hex: '#E91E63', pixi: 0xE91E63 },
|
|
206
|
-
{ name: 'Синий', hex: '#2196F3', pixi: 0x2196F3 },
|
|
207
|
-
{ name: 'Зеленый', hex: '#4CAF50', pixi: 0x4CAF50 },
|
|
208
|
-
{ name: 'Оранжевый', hex: '#FF9800', pixi: 0xFF9800 },
|
|
209
|
-
{ name: 'Фиолетовый', hex: '#9C27B0', pixi: 0x9C27B0 }
|
|
210
|
-
],
|
|
211
|
-
'borderColor'
|
|
212
|
-
);
|
|
255
|
+
// Раздел "Граница" удалён по требованиям дизайна
|
|
213
256
|
|
|
214
257
|
// Контейнер для цвета текста
|
|
215
258
|
const textContainer = this._createColorControl(
|
|
@@ -270,8 +313,8 @@ export class NotePropertiesPanel {
|
|
|
270
313
|
fontSizeContainer.appendChild(fontSizeLabel);
|
|
271
314
|
fontSizeContainer.appendChild(fontSizeInput);
|
|
272
315
|
|
|
316
|
+
panel.appendChild(fontContainer);
|
|
273
317
|
panel.appendChild(backgroundContainer);
|
|
274
|
-
panel.appendChild(borderContainer);
|
|
275
318
|
panel.appendChild(textContainer);
|
|
276
319
|
panel.appendChild(fontSizeContainer);
|
|
277
320
|
}
|
|
@@ -295,12 +338,13 @@ export class NotePropertiesPanel {
|
|
|
295
338
|
|
|
296
339
|
const button = document.createElement('button');
|
|
297
340
|
Object.assign(button.style, {
|
|
298
|
-
width: '
|
|
299
|
-
height: '
|
|
300
|
-
border:
|
|
301
|
-
borderRadius: '
|
|
341
|
+
width: '24px',
|
|
342
|
+
height: '24px',
|
|
343
|
+
border: `1px solid ${this._darkenHex(colors[0].hex, 0.28)}`,
|
|
344
|
+
borderRadius: '50%',
|
|
302
345
|
cursor: 'pointer',
|
|
303
|
-
backgroundColor: colors[0].hex
|
|
346
|
+
backgroundColor: colors[0].hex,
|
|
347
|
+
padding: '0'
|
|
304
348
|
});
|
|
305
349
|
|
|
306
350
|
button.addEventListener('click', (e) => {
|
|
@@ -342,11 +386,11 @@ export class NotePropertiesPanel {
|
|
|
342
386
|
colors.forEach(color => {
|
|
343
387
|
const colorSwatch = document.createElement('div');
|
|
344
388
|
Object.assign(colorSwatch.style, {
|
|
345
|
-
width: '
|
|
346
|
-
height: '
|
|
389
|
+
width: '22px',
|
|
390
|
+
height: '22px',
|
|
347
391
|
backgroundColor: color.hex,
|
|
348
|
-
border:
|
|
349
|
-
borderRadius: '
|
|
392
|
+
border: `1px solid ${this._darkenHex(color.hex, 0.28)}`,
|
|
393
|
+
borderRadius: '50%',
|
|
350
394
|
cursor: 'pointer',
|
|
351
395
|
transition: 'transform 0.1s'
|
|
352
396
|
});
|
|
@@ -400,8 +444,8 @@ export class NotePropertiesPanel {
|
|
|
400
444
|
}
|
|
401
445
|
|
|
402
446
|
_documentClickHandler(e) {
|
|
403
|
-
const palettes = [this.backgroundColorPalette, this.
|
|
404
|
-
const buttons = [this.backgroundColorButton, this.
|
|
447
|
+
const palettes = [this.backgroundColorPalette, this.textColorPalette];
|
|
448
|
+
const buttons = [this.backgroundColorButton, this.textColorButton];
|
|
405
449
|
|
|
406
450
|
let shouldClose = true;
|
|
407
451
|
|
|
@@ -432,12 +476,11 @@ export class NotePropertiesPanel {
|
|
|
432
476
|
// Обновляем соответствующую кнопку
|
|
433
477
|
if (propertyName === 'backgroundColor' && this.backgroundColorButton) {
|
|
434
478
|
this.backgroundColorButton.style.backgroundColor = color.hex;
|
|
479
|
+
this.backgroundColorButton.style.borderColor = this._darkenHex(color.hex, 0.28);
|
|
435
480
|
this.backgroundColorButton.title = `Цвет фона: ${color.name}`;
|
|
436
|
-
} else if (propertyName === 'borderColor' && this.borderColorButton) {
|
|
437
|
-
this.borderColorButton.style.backgroundColor = color.hex;
|
|
438
|
-
this.borderColorButton.title = `Цвет границы: ${color.name}`;
|
|
439
481
|
} else if (propertyName === 'textColor' && this.textColorButton) {
|
|
440
482
|
this.textColorButton.style.backgroundColor = color.hex;
|
|
483
|
+
this.textColorButton.style.borderColor = this._darkenHex(color.hex, 0.28);
|
|
441
484
|
this.textColorButton.title = `Цвет текста: ${color.name}`;
|
|
442
485
|
}
|
|
443
486
|
|
|
@@ -463,6 +506,17 @@ export class NotePropertiesPanel {
|
|
|
463
506
|
});
|
|
464
507
|
}
|
|
465
508
|
|
|
509
|
+
_changeFontFamily(fontFamily) {
|
|
510
|
+
if (!this.currentId) return;
|
|
511
|
+
|
|
512
|
+
console.log('📝 NotePropertiesPanel: Changing font family to:', fontFamily);
|
|
513
|
+
|
|
514
|
+
this.eventBus.emit(Events.Object.StateChanged, {
|
|
515
|
+
objectId: this.currentId,
|
|
516
|
+
updates: { properties: { fontFamily: fontFamily } }
|
|
517
|
+
});
|
|
518
|
+
}
|
|
519
|
+
|
|
466
520
|
_updateControlsFromObject() {
|
|
467
521
|
if (!this.currentId) return;
|
|
468
522
|
|
|
@@ -474,9 +528,7 @@ export class NotePropertiesPanel {
|
|
|
474
528
|
if (this.backgroundColorButton && props.backgroundColor !== undefined) {
|
|
475
529
|
this._updateColorButton(this.backgroundColorButton, props.backgroundColor);
|
|
476
530
|
}
|
|
477
|
-
|
|
478
|
-
this._updateColorButton(this.borderColorButton, props.borderColor);
|
|
479
|
-
}
|
|
531
|
+
// Раздел "Граница" удалён — пропускаем обновление кнопки границы
|
|
480
532
|
if (this.textColorButton && props.textColor !== undefined) {
|
|
481
533
|
this._updateColorButton(this.textColorButton, props.textColor);
|
|
482
534
|
}
|
|
@@ -485,6 +537,11 @@ export class NotePropertiesPanel {
|
|
|
485
537
|
if (this.fontSizeInput && props.fontSize !== undefined) {
|
|
486
538
|
this.fontSizeInput.value = props.fontSize.toString();
|
|
487
539
|
}
|
|
540
|
+
|
|
541
|
+
// Обновляем выбранный шрифт
|
|
542
|
+
if (this.fontSelect) {
|
|
543
|
+
this.fontSelect.value = props.fontFamily || 'Pacifico, Arial, sans-serif';
|
|
544
|
+
}
|
|
488
545
|
}
|
|
489
546
|
}
|
|
490
547
|
|
|
@@ -494,6 +551,26 @@ export class NotePropertiesPanel {
|
|
|
494
551
|
// Конвертируем PIXI цвет в hex строку
|
|
495
552
|
const hexColor = `#${pixiColor.toString(16).padStart(6, '0').toUpperCase()}`;
|
|
496
553
|
button.style.backgroundColor = hexColor;
|
|
554
|
+
button.style.borderColor = this._darkenHex(hexColor, 0.28);
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* Затемняет hex-цвет на заданную долю (0..1)
|
|
559
|
+
*/
|
|
560
|
+
_darkenHex(hex, amount = 0.2) {
|
|
561
|
+
try {
|
|
562
|
+
const norm = (hex || '').trim();
|
|
563
|
+
const m = /^#?([a-fA-F0-9]{6})$/.exec(norm.startsWith('#') ? norm : `#${norm}`);
|
|
564
|
+
if (!m) return '#777777';
|
|
565
|
+
const num = parseInt(m[1], 16);
|
|
566
|
+
const r = Math.max(0, Math.min(255, Math.floor(((num >> 16) & 0xFF) * (1 - amount))));
|
|
567
|
+
const g = Math.max(0, Math.min(255, Math.floor(((num >> 8) & 0xFF) * (1 - amount))));
|
|
568
|
+
const b = Math.max(0, Math.min(255, Math.floor((num & 0xFF) * (1 - amount))));
|
|
569
|
+
const toHex = (v) => v.toString(16).padStart(2, '0').toUpperCase();
|
|
570
|
+
return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
|
|
571
|
+
} catch (_) {
|
|
572
|
+
return '#777777';
|
|
573
|
+
}
|
|
497
574
|
}
|
|
498
575
|
|
|
499
576
|
destroy() {
|
|
@@ -41,7 +41,7 @@ export class TextPropertiesPanel {
|
|
|
41
41
|
if (this.currentId && objectId === this.currentId) this.hide();
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
//
|
|
44
|
+
// Во время редактирования текста скрываем панель
|
|
45
45
|
this.eventBus.on(Events.UI.TextEditStart, () => {
|
|
46
46
|
this.isTextEditing = true;
|
|
47
47
|
this.hide();
|
|
@@ -119,23 +119,7 @@ export class TextPropertiesPanel {
|
|
|
119
119
|
_createPanel() {
|
|
120
120
|
const panel = document.createElement('div');
|
|
121
121
|
panel.className = 'text-properties-panel';
|
|
122
|
-
|
|
123
|
-
position: 'absolute',
|
|
124
|
-
pointerEvents: 'auto',
|
|
125
|
-
display: 'flex',
|
|
126
|
-
flexDirection: 'row',
|
|
127
|
-
alignItems: 'center',
|
|
128
|
-
gap: '12px',
|
|
129
|
-
padding: '8px 16px',
|
|
130
|
-
backgroundColor: 'white',
|
|
131
|
-
border: '1px solid #e0e0e0',
|
|
132
|
-
borderRadius: '8px',
|
|
133
|
-
boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)',
|
|
134
|
-
fontSize: '14px',
|
|
135
|
-
fontFamily: 'Arial, sans-serif',
|
|
136
|
-
minWidth: '550px',
|
|
137
|
-
height: '44px'
|
|
138
|
-
});
|
|
122
|
+
// Основные стили панели вынесены в CSS (.text-properties-panel)
|
|
139
123
|
|
|
140
124
|
// Создаем контролы
|
|
141
125
|
this._createFontControls(panel);
|
|
@@ -147,36 +131,28 @@ export class TextPropertiesPanel {
|
|
|
147
131
|
// Лейбл для шрифта
|
|
148
132
|
const fontLabel = document.createElement('span');
|
|
149
133
|
fontLabel.textContent = 'Шрифт:';
|
|
150
|
-
fontLabel.
|
|
151
|
-
fontLabel.style.color = '#666';
|
|
152
|
-
fontLabel.style.fontWeight = '500';
|
|
134
|
+
fontLabel.className = 'tpp-label';
|
|
153
135
|
panel.appendChild(fontLabel);
|
|
154
136
|
|
|
155
137
|
// Выпадающий список шрифтов
|
|
156
138
|
this.fontSelect = document.createElement('select');
|
|
157
139
|
this.fontSelect.className = 'font-select';
|
|
158
|
-
|
|
159
|
-
border: '1px solid #ddd',
|
|
160
|
-
borderRadius: '4px',
|
|
161
|
-
padding: '4px 8px',
|
|
162
|
-
fontSize: '13px',
|
|
163
|
-
backgroundColor: 'white',
|
|
164
|
-
cursor: 'pointer',
|
|
165
|
-
minWidth: '140px'
|
|
166
|
-
});
|
|
140
|
+
this.fontSelect.className = 'font-select';
|
|
167
141
|
|
|
168
142
|
// Список популярных шрифтов
|
|
169
143
|
const fonts = [
|
|
170
|
-
{ value: 'Arial, sans-serif', name: '
|
|
171
|
-
{ value: '
|
|
172
|
-
{ value: 'Georgia, serif', name: '
|
|
173
|
-
{ value: '
|
|
174
|
-
{ value: '
|
|
175
|
-
{ value: '
|
|
176
|
-
{ value: '
|
|
177
|
-
{ value: '
|
|
178
|
-
{ value: 'Comic Sans MS, cursive', name: '
|
|
179
|
-
{ value: '
|
|
144
|
+
{ value: 'Roboto, Arial, sans-serif', name: 'Roboto' },
|
|
145
|
+
{ value: 'Oswald, Arial, sans-serif', name: 'Oswald' },
|
|
146
|
+
{ value: '"Playfair Display", Georgia, serif', name: 'Playfair Display' },
|
|
147
|
+
{ value: '"Roboto Slab", Georgia, serif', name: 'Roboto Slab' },
|
|
148
|
+
{ value: '"Noto Serif", Georgia, serif', name: 'Noto Serif' },
|
|
149
|
+
{ value: 'Lobster, "Comic Sans MS", cursive', name: 'Lobster' },
|
|
150
|
+
{ value: 'Caveat, "Comic Sans MS", cursive', name: 'Caveat' },
|
|
151
|
+
{ value: '"Rubik Mono One", "Courier New", monospace', name: 'Rubik Mono One' },
|
|
152
|
+
{ value: '"Great Vibes", "Comic Sans MS", cursive', name: 'Great Vibes' },
|
|
153
|
+
{ value: '"Amatic SC", "Comic Sans MS", cursive', name: 'Amatic SC' },
|
|
154
|
+
{ value: '"Poiret One", Arial, sans-serif', name: 'Poiret One' },
|
|
155
|
+
{ value: 'Pacifico, "Comic Sans MS", cursive', name: 'Pacifico' }
|
|
180
156
|
];
|
|
181
157
|
|
|
182
158
|
fonts.forEach(font => {
|
|
@@ -197,24 +173,13 @@ export class TextPropertiesPanel {
|
|
|
197
173
|
// Лейбл для размера
|
|
198
174
|
const sizeLabel = document.createElement('span');
|
|
199
175
|
sizeLabel.textContent = 'Размер:';
|
|
200
|
-
sizeLabel.
|
|
201
|
-
sizeLabel.style.color = '#666';
|
|
202
|
-
sizeLabel.style.fontWeight = '500';
|
|
203
|
-
sizeLabel.style.marginLeft = '8px';
|
|
176
|
+
sizeLabel.className = 'tpp-label tpp-label--spaced';
|
|
204
177
|
panel.appendChild(sizeLabel);
|
|
205
178
|
|
|
206
179
|
// Выпадающий список размеров шрифта
|
|
207
180
|
this.fontSizeSelect = document.createElement('select');
|
|
208
181
|
this.fontSizeSelect.className = 'font-size-select';
|
|
209
|
-
|
|
210
|
-
border: '1px solid #ddd',
|
|
211
|
-
borderRadius: '4px',
|
|
212
|
-
padding: '4px 8px',
|
|
213
|
-
fontSize: '13px',
|
|
214
|
-
backgroundColor: 'white',
|
|
215
|
-
cursor: 'pointer',
|
|
216
|
-
minWidth: '70px'
|
|
217
|
-
});
|
|
182
|
+
this.fontSizeSelect.className = 'font-size-select';
|
|
218
183
|
|
|
219
184
|
// Популярные размеры шрифта
|
|
220
185
|
const fontSizes = [8, 10, 12, 14, 16, 18, 20, 24, 28, 32, 36, 48, 60, 72];
|
|
@@ -236,22 +201,16 @@ export class TextPropertiesPanel {
|
|
|
236
201
|
// Лейбл для цвета
|
|
237
202
|
const colorLabel = document.createElement('span');
|
|
238
203
|
colorLabel.textContent = 'Цвет:';
|
|
239
|
-
colorLabel.
|
|
240
|
-
colorLabel.style.color = '#666';
|
|
241
|
-
colorLabel.style.fontWeight = '500';
|
|
242
|
-
colorLabel.style.marginLeft = '8px';
|
|
204
|
+
colorLabel.className = 'tpp-label tpp-label--spaced';
|
|
243
205
|
panel.appendChild(colorLabel);
|
|
244
206
|
|
|
245
207
|
// Создаем компактный селектор цвета текста
|
|
246
208
|
this._createCompactColorSelector(panel);
|
|
247
209
|
|
|
248
|
-
// Лейбл для
|
|
210
|
+
// Лейбл для фона
|
|
249
211
|
const bgColorLabel = document.createElement('span');
|
|
250
|
-
bgColorLabel.textContent = '
|
|
251
|
-
bgColorLabel.
|
|
252
|
-
bgColorLabel.style.color = '#666';
|
|
253
|
-
bgColorLabel.style.fontWeight = '500';
|
|
254
|
-
bgColorLabel.style.marginLeft = '8px';
|
|
212
|
+
bgColorLabel.textContent = 'Фон:';
|
|
213
|
+
bgColorLabel.className = 'tpp-label tpp-label--spaced';
|
|
255
214
|
panel.appendChild(bgColorLabel);
|
|
256
215
|
|
|
257
216
|
// Создаем компактный селектор цвета фона
|
|
@@ -271,19 +230,7 @@ export class TextPropertiesPanel {
|
|
|
271
230
|
this.currentColorButton = document.createElement('button');
|
|
272
231
|
this.currentColorButton.type = 'button';
|
|
273
232
|
this.currentColorButton.title = 'Выбрать цвет';
|
|
274
|
-
this.currentColorButton.
|
|
275
|
-
width: 32px;
|
|
276
|
-
height: 24px;
|
|
277
|
-
border: 2px solid #ddd;
|
|
278
|
-
border-radius: 4px;
|
|
279
|
-
background-color: #000000;
|
|
280
|
-
cursor: pointer;
|
|
281
|
-
margin: 0;
|
|
282
|
-
padding: 0;
|
|
283
|
-
display: block;
|
|
284
|
-
box-sizing: border-box;
|
|
285
|
-
position: relative;
|
|
286
|
-
`;
|
|
233
|
+
this.currentColorButton.className = 'current-color-button';
|
|
287
234
|
|
|
288
235
|
// Создаем выпадающую панель с цветами
|
|
289
236
|
this.colorDropdown = document.createElement('div');
|
|
@@ -325,27 +272,27 @@ export class TextPropertiesPanel {
|
|
|
325
272
|
_createColorGrid(container) {
|
|
326
273
|
// Популярные цвета для текста
|
|
327
274
|
const presetColors = [
|
|
328
|
-
{ color: '#000000', name: '
|
|
329
|
-
{ color: '#
|
|
330
|
-
{ color: '#
|
|
331
|
-
{ color: '#
|
|
332
|
-
{ color: '#
|
|
333
|
-
{ color: '#
|
|
334
|
-
{ color: '#
|
|
335
|
-
{ color: '#
|
|
336
|
-
{ color: '#
|
|
337
|
-
{ color: '#
|
|
338
|
-
{ color: '#00ffff', name: 'Голубой' },
|
|
339
|
-
{ color: '#ffa500', name: 'Оранжевый' }
|
|
275
|
+
{ color: '#000000', name: '#000000' },
|
|
276
|
+
{ color: '#404040', name: '#404040' },
|
|
277
|
+
{ color: '#999999', name: '#999999' },
|
|
278
|
+
{ color: '#FF2D55', name: '#FF2D55' },
|
|
279
|
+
{ color: '#CB30E0', name: '#CB30E0' },
|
|
280
|
+
{ color: '#6155F5', name: '#6155F5' },
|
|
281
|
+
{ color: '#00C0E8', name: '#00C0E8' },
|
|
282
|
+
{ color: '#34C759', name: '#34C759' },
|
|
283
|
+
{ color: '#FF8D28', name: '#FF8D28' },
|
|
284
|
+
{ color: '#FFCC00', name: '#FFCC00' }
|
|
340
285
|
];
|
|
341
286
|
|
|
342
287
|
// Сетка заготовленных цветов
|
|
343
288
|
const presetsGrid = document.createElement('div');
|
|
344
289
|
presetsGrid.style.cssText = `
|
|
345
290
|
display: grid;
|
|
346
|
-
grid-template-columns: repeat(6,
|
|
347
|
-
gap:
|
|
291
|
+
grid-template-columns: repeat(6, 28px);
|
|
292
|
+
gap: 6px;
|
|
348
293
|
margin-bottom: 8px;
|
|
294
|
+
align-items: center;
|
|
295
|
+
justify-items: center;
|
|
349
296
|
`;
|
|
350
297
|
|
|
351
298
|
presetColors.forEach(preset => {
|
|
@@ -353,10 +300,10 @@ export class TextPropertiesPanel {
|
|
|
353
300
|
colorButton.type = 'button';
|
|
354
301
|
colorButton.title = preset.name;
|
|
355
302
|
colorButton.style.cssText = `
|
|
356
|
-
width:
|
|
357
|
-
height:
|
|
303
|
+
width: 28px;
|
|
304
|
+
height: 28px;
|
|
358
305
|
border: 1px solid #ddd;
|
|
359
|
-
border-radius:
|
|
306
|
+
border-radius: 50%;
|
|
360
307
|
background-color: ${preset.color};
|
|
361
308
|
cursor: pointer;
|
|
362
309
|
margin: 0;
|
|
@@ -364,9 +311,31 @@ export class TextPropertiesPanel {
|
|
|
364
311
|
display: block;
|
|
365
312
|
box-sizing: border-box;
|
|
366
313
|
${preset.color === '#ffffff' ? 'border-color: #ccc;' : ''}
|
|
314
|
+
position: relative;
|
|
315
|
+
`;
|
|
316
|
+
// Галочка по центру активного пресета
|
|
317
|
+
const tick = document.createElement('i');
|
|
318
|
+
tick.style.cssText = `
|
|
319
|
+
position: absolute;
|
|
320
|
+
left: 50%;
|
|
321
|
+
top: 50%;
|
|
322
|
+
width: 8px;
|
|
323
|
+
height: 5px;
|
|
324
|
+
transform: translate(-50%, -50%) rotate(315deg) scaleX(-1);
|
|
325
|
+
border-right: 2px solid #111;
|
|
326
|
+
border-bottom: 2px solid #111;
|
|
327
|
+
display: none;
|
|
328
|
+
pointer-events: none;
|
|
367
329
|
`;
|
|
330
|
+
colorButton.appendChild(tick);
|
|
368
331
|
|
|
369
332
|
colorButton.addEventListener('click', () => {
|
|
333
|
+
// Снимаем активность с других и ставим на текущий
|
|
334
|
+
Array.from(presetsGrid.children).forEach((el) => {
|
|
335
|
+
const i = el.querySelector('i');
|
|
336
|
+
if (i) i.style.display = 'none';
|
|
337
|
+
});
|
|
338
|
+
tick.style.display = 'block';
|
|
370
339
|
this._selectColor(preset.color);
|
|
371
340
|
});
|
|
372
341
|
|
|
@@ -462,19 +431,7 @@ export class TextPropertiesPanel {
|
|
|
462
431
|
this.currentBgColorButton = document.createElement('button');
|
|
463
432
|
this.currentBgColorButton.type = 'button';
|
|
464
433
|
this.currentBgColorButton.title = 'Выбрать цвет выделения';
|
|
465
|
-
this.currentBgColorButton.
|
|
466
|
-
width: 32px;
|
|
467
|
-
height: 24px;
|
|
468
|
-
border: 2px solid #ddd;
|
|
469
|
-
border-radius: 4px;
|
|
470
|
-
background-color: transparent;
|
|
471
|
-
cursor: pointer;
|
|
472
|
-
margin: 0;
|
|
473
|
-
padding: 0;
|
|
474
|
-
display: block;
|
|
475
|
-
box-sizing: border-box;
|
|
476
|
-
position: relative;
|
|
477
|
-
`;
|
|
434
|
+
this.currentBgColorButton.className = 'current-bgcolor-button';
|
|
478
435
|
|
|
479
436
|
// Создаем выпадающую панель с цветами фона
|
|
480
437
|
this.bgColorDropdown = document.createElement('div');
|
|
@@ -534,9 +491,11 @@ export class TextPropertiesPanel {
|
|
|
534
491
|
const presetsGrid = document.createElement('div');
|
|
535
492
|
presetsGrid.style.cssText = `
|
|
536
493
|
display: grid;
|
|
537
|
-
grid-template-columns: repeat(6,
|
|
538
|
-
gap:
|
|
494
|
+
grid-template-columns: repeat(6, 28px);
|
|
495
|
+
gap: 6px;
|
|
539
496
|
margin-bottom: 8px;
|
|
497
|
+
align-items: center;
|
|
498
|
+
justify-items: center;
|
|
540
499
|
`;
|
|
541
500
|
|
|
542
501
|
bgColors.forEach(preset => {
|
|
@@ -547,10 +506,10 @@ export class TextPropertiesPanel {
|
|
|
547
506
|
if (preset.color === 'transparent') {
|
|
548
507
|
// Специальная кнопка для "без выделения"
|
|
549
508
|
colorButton.style.cssText = `
|
|
550
|
-
width:
|
|
551
|
-
height:
|
|
509
|
+
width: 28px;
|
|
510
|
+
height: 28px;
|
|
552
511
|
border: 1px solid #ddd;
|
|
553
|
-
border-radius:
|
|
512
|
+
border-radius: 50%;
|
|
554
513
|
background: white;
|
|
555
514
|
cursor: pointer;
|
|
556
515
|
margin: 0;
|
|
@@ -573,10 +532,10 @@ export class TextPropertiesPanel {
|
|
|
573
532
|
colorButton.appendChild(line);
|
|
574
533
|
} else {
|
|
575
534
|
colorButton.style.cssText = `
|
|
576
|
-
width:
|
|
577
|
-
height:
|
|
535
|
+
width: 28px;
|
|
536
|
+
height: 28px;
|
|
578
537
|
border: 1px solid #ddd;
|
|
579
|
-
border-radius:
|
|
538
|
+
border-radius: 50%;
|
|
580
539
|
background-color: ${preset.color};
|
|
581
540
|
cursor: pointer;
|
|
582
541
|
margin: 0;
|
|
@@ -584,10 +543,33 @@ export class TextPropertiesPanel {
|
|
|
584
543
|
display: block;
|
|
585
544
|
box-sizing: border-box;
|
|
586
545
|
${preset.color === '#ffffff' ? 'border-color: #ccc;' : ''}
|
|
546
|
+
position: relative;
|
|
547
|
+
`;
|
|
548
|
+
// Галочка по центру активного пресета
|
|
549
|
+
const tick = document.createElement('i');
|
|
550
|
+
tick.style.cssText = `
|
|
551
|
+
position: absolute;
|
|
552
|
+
left: 50%;
|
|
553
|
+
top: 50%;
|
|
554
|
+
width: 8px;
|
|
555
|
+
height: 5px;
|
|
556
|
+
transform: translate(-50%, -50%) rotate(315deg) scaleX(-1);
|
|
557
|
+
border-right: 2px solid #111;
|
|
558
|
+
border-bottom: 2px solid #111;
|
|
559
|
+
display: none;
|
|
560
|
+
pointer-events: none;
|
|
587
561
|
`;
|
|
562
|
+
colorButton.appendChild(tick);
|
|
588
563
|
}
|
|
589
564
|
|
|
590
565
|
colorButton.addEventListener('click', () => {
|
|
566
|
+
// Снимаем активность с других и ставим на текущий
|
|
567
|
+
Array.from(presetsGrid.children).forEach((el) => {
|
|
568
|
+
const i = el.querySelector('i');
|
|
569
|
+
if (i) i.style.display = 'none';
|
|
570
|
+
});
|
|
571
|
+
const selfTick = colorButton.querySelector('i');
|
|
572
|
+
if (selfTick) selfTick.style.display = 'block';
|
|
591
573
|
this._selectBgColor(preset.color);
|
|
592
574
|
});
|
|
593
575
|
|
|
@@ -701,11 +683,11 @@ export class TextPropertiesPanel {
|
|
|
701
683
|
|
|
702
684
|
console.log('🔧 TextPropertiesPanel: Changing font family to:', fontFamily);
|
|
703
685
|
|
|
704
|
-
// Обновляем свойства объекта через StateManager
|
|
686
|
+
// Обновляем свойства объекта через StateManager (в properties)
|
|
705
687
|
this.eventBus.emit(Events.Object.StateChanged, {
|
|
706
688
|
objectId: this.currentId,
|
|
707
689
|
updates: {
|
|
708
|
-
|
|
690
|
+
properties: { fontFamily }
|
|
709
691
|
}
|
|
710
692
|
});
|
|
711
693
|
|
|
@@ -822,7 +804,7 @@ export class TextPropertiesPanel {
|
|
|
822
804
|
this.fontSelect.value = properties.fontFamily;
|
|
823
805
|
} else {
|
|
824
806
|
// Устанавливаем дефолтный шрифт
|
|
825
|
-
this.fontSelect.value = 'Arial, sans-serif';
|
|
807
|
+
this.fontSelect.value = 'Roboto, Arial, sans-serif';
|
|
826
808
|
}
|
|
827
809
|
|
|
828
810
|
// Устанавливаем размер шрифта в селекте
|
|
@@ -881,7 +863,7 @@ export class TextPropertiesPanel {
|
|
|
881
863
|
|
|
882
864
|
// Позиционируем панель над объектом
|
|
883
865
|
const panelX = screenX + (objectWidth / 2) - (this.panel.offsetWidth / 2);
|
|
884
|
-
const panelY = screenY - this.panel.offsetHeight -
|
|
866
|
+
const panelY = screenY - this.panel.offsetHeight - 20; // поднимем выше ещё
|
|
885
867
|
|
|
886
868
|
// Проверяем границы контейнера
|
|
887
869
|
const containerRect = this.container.getBoundingClientRect();
|