EvasObject CreateCard1(Window window)
        {
            //Set Layout
            var card = new MCard(window)
            {
                MinimumWidth  = 344.ToPixel(),
                MinimumHeight = 148.ToPixel(),
            };

            var iconBox = new Box(window)
            {
                MinimumWidth  = 80.ToPixel(),
                MinimumHeight = 80.ToPixel()
            };

            var textBox = new Box(window)
            {
                MinimumWidth  = 216.ToPixel(),
                MinimumHeight = 80.ToPixel()
            };

            textBox.SetPadding(0, 10);


            var actionBox = new Box(window)
            {
                MinimumHeight = 36.ToPixel(),
                IsHorizontal  = true
            };

            actionBox.SetPadding(8, 0);

            card.Show();
            iconBox.Show();
            textBox.Show();
            actionBox.Show();

            card.PackEnd(iconBox);
            card.PackEnd(textBox);
            card.PackEnd(actionBox);

            card.SetLayoutCallback(() =>
            {
                var g = card.Geometry;

                textBox.Geometry = new Rect(
                    g.X + 16.ToPixel(),
                    g.Y + 16.ToPixel(),
                    textBox.MinimumWidth,
                    textBox.MinimumHeight);

                iconBox.Geometry = new Rect(
                    textBox.Geometry.X + textBox.Geometry.Width + 16.ToPixel(),
                    textBox.Geometry.Y,
                    iconBox.MinimumWidth,
                    iconBox.MinimumHeight);

                actionBox.Geometry = new Rect(
                    g.X + 8.ToPixel(),
                    iconBox.Geometry.Y + iconBox.Geometry.Height + 8.ToPixel(),
                    g.Width - 32.ToPixel(),
                    actionBox.MinimumHeight);
            });

            //Fill the contents
            var icon = new Image(window)
            {
                AlignmentX    = -1,
                AlignmentY    = -1,
                WeightX       = 1,
                WeightY       = 1,
                IsFixedAspect = false
            };

            icon.Load(Path.Combine(MaterialGallery.ResourceDir, "image.png"));
            icon.Show();
            iconBox.PackEnd(icon);

            var title = new Label(window)
            {
                Text       = $"<span font_size={25.ToPixel()}>Title goes here</span>",
                AlignmentX = 0,
                AlignmentY = 0
            };
            var sub = new Label(window)
            {
                Text          = $"<span font_size={15.ToPixel()} color=#666666>Secondary line text Lorem ipsum dolor sit amet</span>",
                LineWrapType  = WrapType.Word,
                LineWrapWidth = textBox.MinimumWidth,
                AlignmentX    = 0,
                AlignmentY    = 0,
            };

            title.Show();
            sub.Show();
            textBox.PackEnd(title);
            textBox.PackEnd(sub);

            var action1 = new MButton(window)
            {
                //ButtonStyle = MButtonStyle.TextButton,
                //Text = "Action 1",
                Text            = $"<span font_size={18.ToPixel()} color=#6200ee>Action 1</span>",
                BackgroundColor = Color.White,
                AlignmentX      = 0,
                MinimumWidth    = 100.ToPixel()
            };

            var action2 = new MButton(window)
            {
                //ButtonStyle = MButtonStyle.TextButton,
                //Text = "Action 2",
                Text            = $"<span font_size={18.ToPixel()} color=#6200ee>Action 2</SPAN>",
                BackgroundColor = Color.White,
                AlignmentX      = 0,
                MinimumWidth    = 100.ToPixel()
            };

            var empty = new Label(window)
            {
                AlignmentX = 0,
                WeightX    = 1,
            };

            action1.Show();
            action2.Show();
            empty.Show();

            actionBox.PackEnd(action1);
            actionBox.PackEnd(action2);
            actionBox.PackEnd(empty);

            return(card);
        }
        EvasObject CreateCard2(Window window)
        {
            var card = new MCard(window)
            {
                MinimumWidth  = 344.ToPixel(),
                MinimumHeight = 382.ToPixel(),
                BorderColor   = Color.Red
            };

            card.Show();

            var iconBox   = new Box(window);
            var titleBox  = new Box(window);
            var imgBox    = new Box(window);
            var descBox   = new Box(window);
            var actionBox = new Box(window)
            {
                MinimumHeight = 36.ToPixel(),
                IsHorizontal  = true
            };

            actionBox.SetPadding(8, 0);

            iconBox.BackgroundColor   = Color.Gray;
            titleBox.BackgroundColor  = Color.Aqua;
            imgBox.BackgroundColor    = Color.Yellow;
            descBox.BackgroundColor   = Color.Pink;
            actionBox.BackgroundColor = Color.Lime;

            card.PackEnd(iconBox);
            card.PackEnd(titleBox);
            card.PackEnd(imgBox);
            card.PackEnd(descBox);
            card.PackEnd(actionBox);

            card.SetLayoutCallback(() =>
            {
                var g = card.Geometry;

                // TODO : card.Chlidren will be used for layouting
                foreach (var child in card.Children)
                {
                    child.Show();
                }

                iconBox.Geometry = new Rect(
                    g.X + 16.ToPixel(),
                    g.Y + 16.ToPixel(),
                    40.ToPixel(),
                    40.ToPixel());
                titleBox.Geometry = new Rect(
                    iconBox.Geometry.X + iconBox.Geometry.Width + 16.ToPixel(),
                    g.Y + 16.ToPixel(),
                    g.Width - 88.ToPixel(),
                    40.ToPixel());
                imgBox.Geometry = new Rect(
                    g.X,
                    g.Y + 72.ToPixel(),
                    g.Width,
                    194.ToPixel());
                descBox.Geometry = new Rect(
                    g.X + 16.ToPixel(),
                    imgBox.Geometry.Y + imgBox.Geometry.Height + 16.ToPixel(),
                    g.Width - 32.ToPixel(),
                    g.Height - imgBox.Geometry.Height - 72.ToPixel() - 68.ToPixel());
                actionBox.Geometry = new Rect(
                    g.X + 16.ToPixel(),
                    descBox.Geometry.Y + descBox.Geometry.Height + 8.ToPixel(),
                    g.Width / 2,
                    36.ToPixel());
            });

            return(card);
        }