Proyecto original:
Colores:
go get -u github.com/arskang/acornmail
import "github.com/arskang/acornmail"Más ejemplos aquí
import "github.com/arskang/acornmail"
func main() {
acorn := acornmail.NewAcornEmailComponents()
aligns := acornstyles.GetAligns()
colors := acornstyles.GetColors()
variables := acorntypes.AcornVariables{
"Name": "Euclides Demóstenes",
"Token": "Q2FwZXJ1Y2l0YSByb2ph",
}
image := acorn.NewImage(&acorntypes.ImageParams{
Image: "https://i.picsum.photos/id/859/1200/280.jpg?hmac=cFup6pjvVaf67u1WSjrP8LYF8Oty0VrMKI3sbFDz8HQ",
Alt: "Logo",
})
button := acorn.NewButton(&acorntypes.ButtonParams{
Text: "Activar cuenta",
Link: "https://www.example.com?t={{.Token}}",
Styles: &acorntypes.ButtonStyles{
Align: aligns.Center,
Color: colors.Cyan.M700,
TextColor: colors.White,
},
})
grid := acorn.NewGrid([][]*acorntypes.ColumnParams{
{{Content: image}},
{
{
Content: "<h1>¡Bienvenido!</h1>",
Styles: &acorntypes.ColumnStyles{
Align: aligns.Center,
},
},
},
{
{
Content: `
Hola <b>{{.Name}}</b> gracias por registrarte en nuestro sitio web, para poder activar tu cuenta da click en el siguiente enlace:
`,
Styles: &acorntypes.ColumnStyles{
Align: aligns.Center,
},
},
},
nil,
{
{
Content: button,
Styles: &acorntypes.ColumnStyles{
Align: aligns.Center,
},
},
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{grid}, nil)
html, err := acornmail.MergeVariables(boilerplate, variables)
if err != nil {
panic(err)
}
fmt.Println(html)
}- MergeVariables: Fusionar a un HTML variables
html, err := acornmail.MergeVariables(
"<div>{{.Title}}</div>",
acorntypes.AcornVariables{
"Title": "Hola mundo",
},
)
if err != nil {
panic(err)
}
fmt.Println(html)- NewAcornEmailComponents: Obtener el tipo acornEmail para poder construir un template
acorn := acornmail.NewAcornEmailComponents()- GetBoilerplate
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{
"Header",
"Body",
"Footer",
// n componentes...
}, nil)
fmt.Println(boilerplate)- Spacer
acorn := acornmail.NewAcornEmailComponents()
spacer := acorn.NewSpacer()
boilerplate := acorn.GetBoilerplate(
acorntypes.AcornComponents{spacer},
acornstyles.WithoutMargins(),
)
fmt.Println(boilerplate)- Divider
acorn := acornmail.NewAcornEmailComponents()
colors := acornstyles.GetColors()
divider := acorn.NewDivider(colors.DeepPurple.M700)
boilerplate := acorn.GetBoilerplate(
acorntypes.AcornComponents{divider},
acornstyles.WithoutMargins(),
)
fmt.Println(boilerplate)- Label
acorn := acornmail.NewAcornEmailComponents()
types := acornstyles.GetTypes()
labelFilled := acorn.NewLabel(&acorntypes.LabelParams{
Text: "filled label",
})
labelOutlined := acorn.NewLabel(&acorntypes.LabelParams{
Text: "outlined label",
Styles: &acorntypes.LabelStyles{
Outlined: true,
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{
labelFilled,
labelOutlined,
}, nil)
fmt.Println(boilerplate)- Image
acorn := acornmail.NewAcornEmailComponents()
image := acorn.NewImage(&acorntypes.ImageParams{
Image: "https://i.picsum.photos/id/859/1200/280.jpg?hmac=cFup6pjvVaf67u1WSjrP8LYF8Oty0VrMKI3sbFDz8HQ",
Alt: "Logo",
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{image}, nil)
fmt.Println(boilerplate)- Row
acorn := acornmail.NewAcornEmailComponents()
widthColumns := acornstyles.GetWidthColumns()
row := acorn.NewRow([]*acorntypes.ColumnParams{
{
Content: "1/4 de columna",
Styles: &acorntypes.Styles{
WidthColumn: widthColumns.Quarter,
},
},
{
Content: "1/2 de columna",
Styles: &acorntypes.Styles{
WidthColumn: widthColumns.Medium,
Color: colors.Purple.M700,
TextColor: colors.White,
},
},
{
Content: "1/4 de columna",
Styles: &acorntypes.Styles{
WidthColumn: widthColumns.Quarter,
},
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{row}, nil)
fmt.Println(boilerplate)- Grid
acorn := acornmail.NewAcornEmailComponents()
widthColumns := acornstyles.GetWidthColumns()
colors := acornstyles.GetColors()
grid := acorn.NewGrid([][]*acorntypes.ColumnParams{
{
{
Content: "100%",
Styles: &acorntypes.ColumnStyles{
Width: widthColumns.Full,
Color: colors.Purple.M700,
TextColor: colors.White,
},
},
},
nil, // Add spacer
{
{
Content: "1/2 de columna",
Styles: &acorntypes.ColumnStyles{
Width: widthColumns.Medium,
},
},
{
Content: "1/2 de columna",
Styles: &acorntypes.ColumnStyles{
Width: widthColumns.Medium,
},
},
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{grid}, nil)
fmt.Println(boilerplate)- Content
acorn := acornmail.NewAcornEmailComponents()
content := acorn.NewContent(&acorntypes.ContentParams{
Content: row,
Image: "https://picsum.photos/1200/800?image=837",
})
boilerplate := acorn.GetBoilerplate(
acorntypes.AcornComponents{content},
acornstyles.WithoutMargins(),
)
fmt.Println(boilerplate)acorn := acornmail.NewAcornEmailComponents()
content := acorn.NewContent(&acorntypes.ContentParams{
Content: row,
})
boilerplate := acorn.GetBoilerplate(
acorntypes.AcornComponents{content},
acornstyles.WithoutMargins(),
)
fmt.Println(boilerplate)- Alerts
acorn := acornmail.NewAcornEmailComponents()
divider := acorn.NewDivider(nil)
alert := acorn.NewAlert(&acorntypes.AlertParams{
Content: "Alert",
})
alertOutlined := acorn.NewAlert(&acorntypes.AlertParams{
Content: "Alert",
Styles: &acorntypes.AlertStyles{
Outlined: true,
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{
alert,
divider,
alertOutlined,
}, nil)
fmt.Println(boilerplate)- Buttons
acorn := acornmail.NewAcornEmailComponents()
widthColumns := acornstyles.GetWidthColumns()
types := acornstyles.GetTypes()
aligns := acornstyles.GetAligns()
buttonFilled := acorn.NewButton(&acorntypes.ButtonParams{
Text: "Filled button",
Link: "http://docs.thememountain.com/acorn/",
Styles: &acorntypes.ButtonStyles{
FullWidth: true,
},
})
buttonOutlined := acorn.NewButton(&acorntypes.ButtonParams{
Text: "Outlined button",
Link: "http://docs.thememountain.com/acorn/",
Styles: &acorntypes.ButtonStyles{
Type: types.Outlined,
},
})
buttonPhill := acorn.NewButton(&acorntypes.ButtonParams{
Text: "Pill button",
Link: "http://docs.thememountain.com/acorn/",
Styles: &acorntypes.ButtonStyles{
Type: types.Pill,
Align: aligns.Center,
},
})
grid := acorn.NewGrid([][]*acorntypes.ColumnParams{
{
{
Content: buttonFilled,
Styles: &acorntypes.ColumnStyles{
Width: widthColumns.Full,
},
},
},
nil, // Add spacer
{
{
Content: buttonOutlined,
Styles: &acorntypes.ColumnStyles{
Width: widthColumns.Medium,
},
},
{
Content: buttonPhill,
Styles: &acorntypes.ColumnStyles{
Width: widthColumns.Medium,
},
},
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{grid}, nil)
fmt.Println(boilerplate)- Accordion
acorn := acornmail.NewAcornEmailComponents()
colors := acornstyles.GetColors()
accordion := acorn.NewAccordion([]*acorntypes.AccordionParams{
{
Title: "Panel 1",
Content: "Lorem ipsum dolor sit amet, consectetur adipisicing elit.",
},
{
Title: "Panel 2",
Content: "Lorem ipsum dolor sit amet, consectetur adipisicing elit.",
Styles: &acorntypes.AccordionStyles{
Color: colors.Cyan.M300,
TitleColor: colors.White,
ContentColor: colors.Cyan.M300,
},
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{accordion}, nil)
fmt.Println(boilerplate)- Timeline
acorn := acornmail.NewAcornEmailComponents()
//== Limitaciones ==//
// Time: Max 11 caracteres
// Title: Max 37 caracteres
// Content: Max 78 caracteres
timeline := acorn.NewTimeline([]*acorntypes.TimelineParams{
{
Time: "2007 - 2008",
Title: "Massachusetts Institute of Technology",
Content: "Co-wrote a book on the Semantic Web and Best Practices for Developers.",
},
{
Time: "2004 - 2006",
Title: "Parsons School of Design",
Content: "Awarded Best Designer of the Year voted by student and teacher body.",
},
{
Time: "2002 - 2004",
Title: "Berkley College",
Content: "Two year program with a focus on design principles and Javascript development.",
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{timeline}, nil)
fmt.Println(boilerplate)- Testimonial
acorn := acornmail.NewAcornEmailComponents()
aligns := acornstyles.GetAligns()
colors := acornstyles.GetColors()
testimonialBorder := acorn.NewTestimonial(&acorntypes.TestimonialParams{
Testimonial: "Sometimes when you innovate, you make mistakes. It is best to admit them quickly, and get on with improving your other innovations.",
Author: "Steve Jobs",
Styles: &acorntypes.TestimonialStyles{
BorderColor: colors.Orange.M500,
},
})
testimonialIcon := acorn.NewTestimonial(&acorntypes.TestimonialParams{
Testimonial: "Sometimes when you innovate, you make mistakes. It is best to admit them quickly, and get on with improving your other innovations.",
Author: "Steve Jobs",
Icon: true,
})
testimonialImage := acorn.NewTestimonial(&acorntypes.TestimonialParams{
Testimonial: "Sometimes when you innovate, you make mistakes. It is best to admit them quickly, and get on with improving your other innovations.",
Author: "Steve Jobs",
Styles: &acorntypes.TestimonialStyles{
Image: "https://gravatar.com/avatar/5ad269974f4c69c9ff6eca2ad2d1d0b8?s=400&d=robohash&r=x",
Align: aligns.Center,
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{
testimonialBorder,
testimonialIcon,
testimonialImage,
}, nil)
fmt.Println(boilerplate)- Promo
acorn := acornmail.NewAcornEmailComponents()
promo := acorn.NewPromo(&acorntypes.PromoItems{
Promo: &acorntypes.PromoParams{Value: "25"},
Symbol: &acorntypes.PromoParams{Value: "%"},
Description: &acorntypes.PromoParams{Value: "OFF"},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{
promo,
}, nil)acorn := acornmail.NewAcornEmailComponents()
sizes := acornstyles.GetSizes()
promo := acorn.NewPromo(&acorntypes.PromoItems{
Promo: &acorntypes.PromoParams{
Value: "25",
Size: sizes.PX108,
},
Symbol: &acorntypes.PromoParams{
Value: "%",
Color: acornstyles.GetColors().Green.M700,
Size: sizes.PX36,
},
Description: &acorntypes.PromoParams{
Value: "OFF",
Size: sizes.PX24,
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{
promo,
}, nil)- Coupon
acorn := acornmail.NewAcornEmailComponents()
color := acornstyles.GetColors()
aligns := acornstyles.GetAligns()
coupon := acorn.NewCoupon(&acorntypes.CouponParams{
Content: acorn.NewGrid([][]*acorntypes.ColumnParams{
{{
Content: `
<div style="font-size: 13px; text-transform: uppercase;">¡Gracias por registrarte!<br>Disfruta</div>
<div style="font-size: 72px; font-weight: 700; line-height: 100%;">$10 DESC</div>
<div class="spacer py-sm-8" style="line-height: 16px;"></div>
<div style="font-size: 20px; letter-spacing: 2px; line-height: 100%; text-transform: uppercase;">En tu primera compra</div>
`,
Styles: &acorntypes.ColumnStyles{
Align: aligns.Center,
TextColor: color.White,
},
}},
nil,
}),
Button: &acorntypes.ButtonParams{
Text: "COMPRA AHORA",
Styles: &acorntypes.ButtonStyles{
Color: color.White,
TextColor: color.Blue.M500,
Align: aligns.Center,
},
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{
coupon,
}, acornstyles.WithoutMargins())acorn := acornmail.NewAcornEmailComponents()
color := acornstyles.GetColors()
aligns := acornstyles.GetAligns()
promo := acorn.NewPromo(&acorntypes.PromoItems{
Promo: &acorntypes.PromoParams{Value: "25"},
Symbol: &acorntypes.PromoParams{Value: "%"},
Description: &acorntypes.PromoParams{Value: "DESC"},
})
label := acorn.NewLabel(&acorntypes.LabelParams{
Text: "25OFFTODAY",
Styles: &acorntypes.LabelStyles{
Outlined: true,
TextColor: color.Red.M500,
Color: color.Red.M500,
},
})
coupon := acorn.NewCoupon(&acorntypes.CouponParams{
Content: acorn.NewGrid([][]*acorntypes.ColumnParams{
{{Content: promo}},
{{
Content: `Con el cupón ` + label,
Styles: &acorntypes.ColumnStyles{
Align: aligns.Center,
TextColor: color.Grey.M400,
},
}},
nil,
}),
Button: &acorntypes.ButtonParams{
Text: "Canjear cupón →",
Styles: &acorntypes.ButtonStyles{
Color: color.Black,
TextColor: color.White,
Align: aligns.Center,
},
},
Styles: &acorntypes.CouponStyles{
Dashed: true,
},
})
boilerplate := acorn.GetBoilerplate(acorntypes.AcornComponents{
coupon,
}, acornstyles.WithoutMargins())- Importación
import "github.com/arskang/acornmail/acorntypes"-
Básicos
- Align
acorntypes.Align - Color
acorntypes.Color - WidthColumn
acorntypes.WidthColumn - Types
acorntypes.Types - AcornComponents
acorntypes.AcornComponents - AcornVariables
acorntypes.AcornVariables - FontSize
acorntypes.FontSize
- Align
-
Compuestos
- ColumnParams
acorntypes.ColumnParams - ColumnStyles
acorntypes.ColumnStyles - ButtonParams
acorntypes.ButtonParams - ButtonStyles
acorntypes.ButtonStyles - AlertParams
acorntypes.AlertParams - AlertStyles
acorntypes.AlertStyles - AccordionParams
acorntypes.AccordionParams - AccordionStyles
acorntypes.AccordionStyles - LabelParams
acorntypes.LabelParams - LabelStyles
acorntypes.LabelStyles - ContentParams
acorntypes.ContentParams - TimelineParams
acorntypes.TimelineParams - TestimonialParams
acorntypes.TestimonialParams - TestimonialStyles
acorntypes.TestimonialStyles - ImageParams
acorntypes.ImageParams - CouponParams
acorntypes.CouponParams - PromoItems
acorntypes.PromoItems - PromoParams
acorntypes.PromoParams - CouponStyles
acorntypes.CouponStyles
- ColumnParams
- Importación
import "github.com/arskang/acornmail/acornstyles"- Tipo de botones
types := acornstyles.GetTypes()
fmt.Println(types.Filled)
fmt.Println(types.Outlined)
fmt.Println(types.Pill)- Alineaciones
aligns := acornstyles.GetAligns()
fmt.Println(aligns.Center)
fmt.Println(aligns.Right)
fmt.Println(aligns.Left)- Tamaños de letra
sizes := acornstyles.GetSizes()
fmt.Println(sizes.Px12)
fmt.Println(sizes.Px24)
fmt.Println(sizes.Px36)
fmt.Println(sizes.Px48)
fmt.Println(sizes.Px60)
fmt.Println(sizes.Px72)
fmt.Println(sizes.Px84)
fmt.Println(sizes.Px96)
fmt.Println(sizes.Px108)
fmt.Println(sizes.Px120)
customSize := acornstyles.NewAcornSize(10)
fmt.Println(customSize)
// 10px- Ancho de columnas
widthColumn := acornstyles.GetWidthColumns()
fmt.Println(widthColumn.Full) // 100%
fmt.Println(widthColumn.Quarter) // 1/4
fmt.Println(widthColumn.Medium) // 1/2
fmt.Println(widthColumn.ThreeQuarters) // 3/4
fmt.Println(widthColumn.OneThird) // 1/3
fmt.Println(widthColumn.TwoThird) // 2/3- Colores
colors := acornstyles.GetColors()
red50 := colors.Red.M50
fmt.Println(red50)
// Only hexadecimal string
customColor, err := acornstyles.NewAcornColor("#fea800")
if err != nil {
panic(err)
}
fmt.Println(customColor)





















