503 lines
19 KiB
Go
503 lines
19 KiB
Go
package controllers
|
|
|
|
// SampleNavbarMenu returns the sample menu data for the navbar
|
|
// Migrated from liquid/data/menu.json (layout, dashboards, help sections)
|
|
func SampleNavbarMenu() TablerMenu {
|
|
return TablerMenu{
|
|
"dashboards": {
|
|
Title: "Dashboards",
|
|
Icon: "home",
|
|
Children: []*TablerMenuItem{
|
|
{Title: "Default", URL: "index.html", Icon: "dashboard"},
|
|
{Title: "Crypto", URL: "dashboard-crypto.html", Icon: "currency-bitcoin"},
|
|
},
|
|
},
|
|
"layout": {
|
|
Title: "Layout",
|
|
Icon: "layout-2",
|
|
Columns: 2,
|
|
Children: []*TablerMenuItem{
|
|
{Title: "Boxed", URL: "layout-boxed.html", Icon: "layout-navbar"},
|
|
{Title: "Combined", URL: "layout-combo.html", Icon: "layout-navbar"},
|
|
{Title: "Condensed", URL: "layout-condensed.html", Icon: "layout-navbar"},
|
|
{Title: "Fluid", URL: "layout-fluid.html", Icon: "layout-navbar"},
|
|
{Title: "Fluid vertical", URL: "layout-fluid-vertical.html", Icon: "layout-navbar"},
|
|
{Title: "Horizontal", URL: "layout-horizontal.html", Icon: "layout-navbar"},
|
|
{Title: "Navbar dark", URL: "layout-navbar-dark.html", Icon: "layout-navbar"},
|
|
{Title: "Navbar overlap", URL: "layout-navbar-overlap.html", Icon: "layout-navbar"},
|
|
{Title: "Navbar sticky", URL: "layout-navbar-sticky.html", Icon: "layout-navbar"},
|
|
{Title: "Right vertical", URL: "layout-vertical-right.html", Icon: "layout-navbar"},
|
|
{Title: "Vertical", URL: "layout-vertical.html", Icon: "layout-navbar"},
|
|
{Title: "Vertical transparent", URL: "layout-vertical-transparent.html", Icon: "layout-navbar"},
|
|
},
|
|
},
|
|
"help": {
|
|
Title: "Help",
|
|
Icon: "lifebuoy",
|
|
Children: []*TablerMenuItem{
|
|
{Title: "Documentation", URL: "https://tabler.io/docs", Icon: "book"},
|
|
{Title: "Changelog", URL: "changelog.html", Icon: "list"},
|
|
{Title: "Source code", URL: "https://github.com/tabler/tabler", Icon: "brand-github"},
|
|
{Title: "Sponsor project!", URL: "https://github.com/sponsors/codecalm", Color: "pink", Icon: "heart"},
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
// SampleCards returns 6 sample cards showing different variants.
|
|
func SampleCards() []FormtablerCard {
|
|
defaultBody := &FormtablerCardBody{
|
|
Text: "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aperiam deleniti fugit incidunt, iste, itaque minima neque pariatur perferendis sed suscipit velit vitae voluptatem.",
|
|
}
|
|
return []FormtablerCard{
|
|
// 1. Card with header, body text, and footer
|
|
{
|
|
Header: &FormtablerCardHeader{Title: "Card with header and footer"},
|
|
Body: defaultBody,
|
|
Footer: &FormtablerCardFooter{Text: "This is standard card footer"},
|
|
},
|
|
// 2. Card with image top, status bar, and action button in body
|
|
{
|
|
Image: &FormtablerCardImage{Position: "top", Src: "/public/static/photos/coffee-on-a-table-with-other-items.jpg"},
|
|
Status: &FormtablerCardStatus{Position: "top", Color: "red"},
|
|
Body: &FormtablerCardBody{
|
|
Title: "Card with image & status",
|
|
Subtitle: "Featured card",
|
|
Text: "This card has an image at the top, a red status bar, and a call-to-action button.",
|
|
HasButton: true,
|
|
ButtonText: "View details",
|
|
},
|
|
},
|
|
// 3. Card with image bottom, progress bar, and footer with elements
|
|
{
|
|
Image: &FormtablerCardImage{Position: "bottom", Src: "/public/static/photos/coffee-on-a-table-with-other-items.jpg"},
|
|
Body: defaultBody,
|
|
Footer: &FormtablerCardFooter{
|
|
HasSwitch: true,
|
|
HasMore: true,
|
|
},
|
|
Progress: &FormtablerCardProgress{Percent: 60, Color: "green"},
|
|
},
|
|
// 4. Card with header tabs, alert, and footer buttons
|
|
{
|
|
Header: &FormtablerCardHeader{
|
|
UseTabs: true,
|
|
Tabs: []FormtablerCardTab{
|
|
{Title: "Active", Active: true, Link: "#"},
|
|
{Title: "Second", Link: "#"},
|
|
{Title: "Disabled", Disabled: true, Link: "#"},
|
|
},
|
|
},
|
|
Alert: &FormtablerCardAlert{Text: "This is an alert message inside the card.", Type: "info"},
|
|
Body: defaultBody,
|
|
Footer: &FormtablerCardFooter{
|
|
ButtonsCancel: "Cancel",
|
|
ButtonsAction: "Continue",
|
|
},
|
|
},
|
|
// 5. Card with inactive state, no footer
|
|
{
|
|
Inactive: true,
|
|
Header: &FormtablerCardHeader{Title: "Inactive card"},
|
|
Body: &FormtablerCardBody{
|
|
Title: "This card is inactive",
|
|
Text: "Inactive cards have reduced opacity. They are useful for showing disabled or expired content.",
|
|
},
|
|
},
|
|
// 6. Card with header pills, footer with avatars, and active state
|
|
{
|
|
Active: true,
|
|
Header: &FormtablerCardHeader{
|
|
UsePills: true,
|
|
Pills: []FormtablerCardTab{
|
|
{Title: "All", Active: true, Link: "#"},
|
|
{Title: "Active", Link: "#"},
|
|
{Title: "Completed", Link: "#"},
|
|
},
|
|
},
|
|
Body: defaultBody,
|
|
Footer: &FormtablerCardFooter{
|
|
HasCheck: true,
|
|
HasAvatars: true,
|
|
},
|
|
},
|
|
}
|
|
}
|
|
|
|
// SampleFormElements returns sample data for all 25 formtabler components.
|
|
func SampleFormElements() FormtablerFormElementsPage {
|
|
return FormtablerFormElementsPage{
|
|
TextInputs: []FormtablerTextInput{
|
|
{Label: "Static", Type: "static", Value: "Input value"},
|
|
{Label: "Password", Type: "password", Placeholder: "Input placeholder"},
|
|
{Label: "Text", Type: "text", Placeholder: "Input placeholder"},
|
|
{Label: "Textarea", Type: "textarea", Placeholder: "Textarea placeholder"},
|
|
},
|
|
IconInputs: []FormtablerIconInput{
|
|
{Label: "Icon input", Placeholder: "Search for…", Prepend: false},
|
|
{Label: "Icon input", Placeholder: "Username", Icon: "user", Prepend: true},
|
|
{Label: "Loader input", Placeholder: "Loading…", Loader: true},
|
|
{Label: "Loader input", Placeholder: "Loading…", Icon: "user", Loader: true, Prepend: true},
|
|
},
|
|
IconSeparated: FormtablerIconSeparated{Label: "Separated inputs", Placeholder: "Search for…", ButtonIcon: "search"},
|
|
InputSizing: FormtablerInputSizing{},
|
|
FileInput: FormtablerFileInput{Label: "Custom File Input"},
|
|
ColorInput: FormtablerColorInput{
|
|
Label: "Color Input",
|
|
Name: "color",
|
|
Type: "radio",
|
|
Rounded: false,
|
|
Colors: []FormtablerSwatch{
|
|
{Color: "dark"}, {Color: "white", Checked: true}, {Color: "blue"},
|
|
{Color: "azure"}, {Color: "indigo"}, {Color: "purple"},
|
|
{Color: "pink"}, {Color: "red"}, {Color: "orange"}, {Color: "yellow"},
|
|
},
|
|
},
|
|
ColorPicker: FormtablerColorPicker{Label: "Color picker", Color: "#206bc4"},
|
|
RangeInput: FormtablerRangeInput{Label: "Range input"},
|
|
Datalist: FormtablerDatalist{
|
|
Label: "Datalist example",
|
|
Placeholder: "Type to search...",
|
|
Options: []string{
|
|
"Afghanistan", "Albania", "Algeria", "Andorra", "Angola",
|
|
"Antarctica", "Argentina", "Armenia", "Australia", "Austria",
|
|
},
|
|
},
|
|
ImageCheck: FormtablerImageCheck{
|
|
Label: "Image Check",
|
|
Images: []FormtablerImageItem{
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 1", Checked: true},
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 2"},
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 3", Checked: true},
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 4"},
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 5"},
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 6", Checked: true},
|
|
},
|
|
},
|
|
ImageRadio: FormtablerImageRadio{
|
|
Label: "Image Check Radio",
|
|
Images: []FormtablerImageItem{
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 1", Checked: true},
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 2"},
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 3", Checked: true},
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 4"},
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 5"},
|
|
{Src: "/public/static/photos/0246c91f-47c2-4f6e-b85d-d7a4806b30c9.jpg", Alt: "Image 6", Checked: true},
|
|
},
|
|
},
|
|
ImagePerson: FormtablerImagePerson{
|
|
Label: "Person Check",
|
|
AvatarSize: "md",
|
|
People: []FormtablerPersonItem{
|
|
{Name: "Paweł Kuna", Src: "/public/static/avatars/000m.jpg", Checked: true},
|
|
{Name: "Jeffie Lewzey", Src: "/public/static/avatars/052f.jpg"},
|
|
{Name: "Mallory Hulme", Src: "/public/static/avatars/002m.jpg", Checked: true},
|
|
{Name: "Dunn Slane", Src: "/public/static/avatars/003m.jpg"},
|
|
{Name: "Emmy Levet", Src: "/public/static/avatars/000f.jpg"},
|
|
{Name: "Maryjo Lebarree", Src: "/public/static/avatars/001f.jpg", Checked: true},
|
|
{Name: "Egan Poetz", Src: "/public/static/avatars/004m.jpg"},
|
|
{Name: "Kellie Skingley", Src: "/public/static/avatars/002f.jpg"},
|
|
{Name: "Christy Maciak", Src: "/public/static/avatars/003f.jpg"},
|
|
},
|
|
},
|
|
Checkboxes: FormtablerCheckboxes{
|
|
Label: "Checkboxes",
|
|
Checkboxes: []FormtablerCheckItem{
|
|
{Title: "Option 1", Checked: false, Disabled: false},
|
|
{Title: "Option 2", Checked: false, Disabled: true},
|
|
{Title: "Option 3", Checked: true, Disabled: false},
|
|
},
|
|
},
|
|
CheckboxesInline: FormtablerCheckboxesInline{
|
|
Label: "Inline Checkboxes",
|
|
Checkboxes: []FormtablerCheckItem{
|
|
{Title: "Option 1", Checked: false, Disabled: false},
|
|
{Title: "Option 2", Checked: false, Disabled: true},
|
|
{Title: "Option 3", Checked: true, Disabled: false},
|
|
},
|
|
},
|
|
Radios: FormtablerRadios{
|
|
Label: "Radios",
|
|
Name: "radios",
|
|
Radios: []FormtablerCheckItem{
|
|
{Title: "Option 1", Checked: true, Disabled: false},
|
|
{Title: "Option 2", Checked: false, Disabled: false},
|
|
{Title: "Option 3", Checked: false, Disabled: true},
|
|
{Title: "Option 4", Checked: true, Disabled: true},
|
|
},
|
|
},
|
|
RadiosInline: FormtablerRadiosInline{
|
|
Label: "Inline Radios",
|
|
Name: "radios-inline",
|
|
Radios: []FormtablerCheckItem{
|
|
{Title: "Option 1", Checked: true, Disabled: false},
|
|
{Title: "Option 2", Checked: false, Disabled: false},
|
|
{Title: "Option 3", Checked: false, Disabled: true},
|
|
},
|
|
},
|
|
Toggles: FormtablerToggle{
|
|
Label: "Toggle switches",
|
|
Toggles: []FormtablerCheckItem{
|
|
{Title: "Option 1", Checked: true},
|
|
{Title: "Option 2"},
|
|
{Title: "Option 3"},
|
|
},
|
|
},
|
|
ToggleSingle: FormtablerToggleSingle{Label: "Single switch", Title: "I agree with terms and conditions"},
|
|
Select: FormtablerSelect{
|
|
Label: "Select",
|
|
Options: []string{"One", "Two", "Three"},
|
|
Multiple: false,
|
|
},
|
|
Selectgroups: []FormtablerSelectGroup{
|
|
{
|
|
Title: "Simple selectgroup",
|
|
Values: []FormtablerSelectGroupValue{
|
|
{Label: "HTML", Value: "html", Checked: true},
|
|
{Label: "CSS", Value: "css"},
|
|
{Label: "PHP", Value: "php"},
|
|
{Label: "JavaScript", Value: "js"},
|
|
},
|
|
},
|
|
{
|
|
Title: "Icon input",
|
|
Values: []FormtablerSelectGroupValue{
|
|
{Label: "Sun", Value: "sun", Icon: "sun", Checked: true},
|
|
{Label: "Moon", Value: "moon", Icon: "moon"},
|
|
{Label: "Cloud Rain", Value: "cloud-rain", Icon: "cloud-rain"},
|
|
{Label: "Cloud", Value: "cloud", Icon: "cloud"},
|
|
{Label: "Other", Value: "other"},
|
|
},
|
|
},
|
|
{
|
|
Title: "Selectgroup with icons and text",
|
|
Name: "icons",
|
|
Type: "radio",
|
|
WithText: true,
|
|
Values: []FormtablerSelectGroupValue{
|
|
{Label: "Home", Value: "home", Icon: "home", WithText: true, Checked: true},
|
|
{Label: "User", Value: "user", Icon: "user", WithText: true},
|
|
{Label: "Circle", Value: "circle", Icon: "circle", WithText: true},
|
|
{Label: "Square", Value: "square", Icon: "square", WithText: true},
|
|
},
|
|
},
|
|
{
|
|
Title: "Different style",
|
|
Pills: true,
|
|
Values: []FormtablerSelectGroupValue{
|
|
{Label: "HTML", Value: "html", Checked: true},
|
|
{Label: "CSS", Value: "css"},
|
|
{Label: "PHP", Value: "php"},
|
|
{Label: "JavaScript", Value: "js"},
|
|
},
|
|
},
|
|
},
|
|
SelectgroupPayments: FormtablerSelectgroupPayments{
|
|
Label: "Payment method",
|
|
Items: []FormtablerPaymentItem{
|
|
{Provider: "visa", Ending: "4532", Checked: true},
|
|
{Provider: "mastercard", Ending: "8721"},
|
|
{Provider: "paypal"},
|
|
},
|
|
},
|
|
SelectgroupProjectManager: FormtablerSelectgroupProjectManager{
|
|
Label: "Project Manager",
|
|
Managers: []FormtablerPersonItemWithJob{
|
|
{Name: "Paweł Kuna", Src: "/public/static/avatars/000m.jpg", JobTitle: "UI Designer", Checked: true},
|
|
{Name: "Jeffie Lewzey", Src: "/public/static/avatars/052f.jpg", JobTitle: "Chemical Engineer"},
|
|
{Name: "Mallory Hulme", Src: "/public/static/avatars/002m.jpg", JobTitle: "Geologist IV"},
|
|
{Name: "Dunn Slane", Src: "/public/static/avatars/003m.jpg", JobTitle: "Research Nurse"},
|
|
{Name: "Emmy Levet", Src: "/public/static/avatars/000f.jpg", JobTitle: "VP Product Management"},
|
|
},
|
|
},
|
|
Fieldset: FormtablerFieldset{
|
|
Label: "Fieldset",
|
|
Inputs: []FormtablerFieldsetInput{
|
|
{Label: "Full name", Type: "text", Required: true},
|
|
{Label: "Company", Type: "text", Required: true},
|
|
{Label: "Email", Type: "email", Required: true},
|
|
{Label: "Phone number", Type: "tel"},
|
|
},
|
|
},
|
|
CheckboxesList: FormtablerCheckboxesList{
|
|
Label: "Checkboxes list",
|
|
Items: []FormtablerCheckListItem{
|
|
{Title: "Push Notifications", Checked: true},
|
|
{Title: "SMS Notifications"},
|
|
{Title: "Email Notifications", Checked: true},
|
|
},
|
|
},
|
|
ValidationStates: FormtablerValidationStates{Label: "Validation States"},
|
|
}
|
|
}
|
|
|
|
// SampleTables returns two sample table components for the tables demo page.
|
|
// Table 1: Users table (avatar, name, city, status, date, tags, category).
|
|
// Table 2: Projects table (name, description, progress, priority, assignee, deadline).
|
|
func SampleTables() []TableComponent {
|
|
table1 := TableComponent{
|
|
ID: "users-table",
|
|
Title: "Users",
|
|
Striped: false,
|
|
Hover: true,
|
|
Headers: []TableComponentHeader{
|
|
{Name: "Name", Sort: "sort-name"},
|
|
{Name: "City", Sort: "sort-city"},
|
|
{Name: "Status", Sort: "sort-status"},
|
|
{Name: "Start date", Sort: "sort-date"},
|
|
{Name: "Tags", Sort: "sort-tags"},
|
|
{Name: "Category", Sort: "sort-category"},
|
|
},
|
|
Rows: []TableComponentRow{
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "avatar", Value: "Paweł Kuna", AvatarID: "000m", Subtext: "paweluna@howstuffworks.com"},
|
|
{Type: "text", Value: "Peimei, China"},
|
|
{Type: "status", Value: "VIP", StatusColor: "bg-blue"},
|
|
{Type: "date", Value: "2025-04-07"},
|
|
{Type: "tags", Tags: []string{"High Volume"}},
|
|
{Type: "badge", Value: "Training", BadgeColor: "bg-muted-lt"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "avatar", Value: "Jeffie Lewzey", AvatarID: "052f", Subtext: "jlewzey1@seesaa.net"},
|
|
{Type: "text", Value: "Indaial, Brazil"},
|
|
{Type: "status", Value: "New", StatusColor: "bg-green"},
|
|
{Type: "date", Value: "2024-12-12"},
|
|
{Type: "tags", Tags: []string{"No Refunds"}},
|
|
{Type: "badge", Value: "Support", BadgeColor: "bg-blue-lt"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "avatar", Value: "Mallory Hulme", AvatarID: "002m", Subtext: "mhulme2@domainmarket.com"},
|
|
{Type: "text", Value: "Cimuncang, Indonesia"},
|
|
{Type: "status", Value: "VIP", StatusColor: "bg-blue"},
|
|
{Type: "date", Value: "2025-01-09"},
|
|
{Type: "tags", Tags: []string{"High Value", "No Refunds", "Loyal"}},
|
|
{Type: "badge", Value: "Support", BadgeColor: "bg-blue-lt"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "avatar", Value: "Dunn Slane", AvatarID: "003m", Subtext: "dslane3@epa.gov"},
|
|
{Type: "text", Value: "Liutang, China"},
|
|
{Type: "status", Value: "Regular", StatusColor: "bg-muted"},
|
|
{Type: "date", Value: "2022-10-01"},
|
|
{Type: "tags", Tags: []string{"No Refunds"}},
|
|
{Type: "badge", Value: "Sales", BadgeColor: "bg-green-lt"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "avatar", Value: "Emmy Levet", AvatarID: "000f", Subtext: "elevet4@senate.gov"},
|
|
{Type: "text", Value: "Kaliprak, Indonesia"},
|
|
{Type: "status", Value: "Regular", StatusColor: "bg-muted"},
|
|
{Type: "date", Value: "2025-05-18"},
|
|
{Type: "tags", Tags: []string{"Standard"}},
|
|
{Type: "badge", Value: "Accounting", BadgeColor: "bg-yellow-lt"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "avatar", Value: "Maryjo Lebarree", AvatarID: "001f", Subtext: "mlebarree5@unc.edu"},
|
|
{Type: "text", Value: "Hantai, China"},
|
|
{Type: "status", Value: "Regular", StatusColor: "bg-muted"},
|
|
{Type: "date", Value: "2025-06-06"},
|
|
{Type: "tags", Tags: []string{"No Refunds", "Loyal"}},
|
|
{Type: "badge", Value: "Product Management", BadgeColor: "bg-orange-lt"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "avatar", Value: "Egan Poetz", AvatarID: "004m", Subtext: "epoetz6@free.fr"},
|
|
{Type: "text", Value: "Villaguay, Argentina"},
|
|
{Type: "status", Value: "New", StatusColor: "bg-green"},
|
|
{Type: "date", Value: "2024-08-21"},
|
|
{Type: "tags", Tags: []string{"No Refunds"}},
|
|
{Type: "badge", Value: "Engineering", BadgeColor: "bg-blue-lt"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "avatar", Value: "Kellie Skingley", AvatarID: "002f", Subtext: "kskingley7@columbia.edu"},
|
|
{Type: "text", Value: "Sidon, Lebanon"},
|
|
{Type: "status", Value: "VIP", StatusColor: "bg-blue"},
|
|
{Type: "date", Value: "2025-02-23"},
|
|
{Type: "tags", Tags: []string{"No Refunds", "Loyal"}},
|
|
{Type: "badge", Value: "Services", BadgeColor: "bg-purple-lt"},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
table2 := TableComponent{
|
|
ID: "projects-table",
|
|
Title: "Projects",
|
|
Striped: true,
|
|
Hover: true,
|
|
Headers: []TableComponentHeader{
|
|
{Name: "Project", Sort: "sort-project"},
|
|
{Name: "Progress", Sort: "sort-progress"},
|
|
{Name: "Priority"},
|
|
{Name: "Assignee", Sort: "sort-assignee"},
|
|
{Name: "Deadline", Sort: "sort-deadline"},
|
|
{Name: "", Width: "w-1"},
|
|
},
|
|
Rows: []TableComponentRow{
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "text", Value: "Tabler UI Kit"},
|
|
{Type: "text", Value: "75%"},
|
|
{Type: "badge", Value: "High", BadgeColor: "bg-red-lt"},
|
|
{Type: "avatar", Value: "Paweł Kuna", AvatarID: "000m", Subtext: "Lead Designer"},
|
|
{Type: "date", Value: "2025-06-30"},
|
|
{Type: "actions"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "text", Value: "Mobile App v2"},
|
|
{Type: "text", Value: "45%"},
|
|
{Type: "badge", Value: "Medium", BadgeColor: "bg-yellow-lt"},
|
|
{Type: "avatar", Value: "Jeffie Lewzey", AvatarID: "052f", Subtext: "Developer"},
|
|
{Type: "date", Value: "2025-07-15"},
|
|
{Type: "actions"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "text", Value: "API Gateway"},
|
|
{Type: "text", Value: "90%"},
|
|
{Type: "badge", Value: "Low", BadgeColor: "bg-green-lt"},
|
|
{Type: "avatar", Value: "Mallory Hulme", AvatarID: "002m", Subtext: "Backend Engineer"},
|
|
{Type: "date", Value: "2025-05-01"},
|
|
{Type: "actions"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "text", Value: "Admin Dashboard"},
|
|
{Type: "text", Value: "30%"},
|
|
{Type: "badge", Value: "Critical", BadgeColor: "bg-red-lt"},
|
|
{Type: "avatar", Value: "Dunn Slane", AvatarID: "003m", Subtext: "Frontend Dev"},
|
|
{Type: "date", Value: "2025-08-20"},
|
|
{Type: "actions"},
|
|
},
|
|
},
|
|
{
|
|
Cells: []TableCell{
|
|
{Type: "text", Value: "Data Pipeline"},
|
|
{Type: "text", Value: "60%"},
|
|
{Type: "badge", Value: "Medium", BadgeColor: "bg-yellow-lt"},
|
|
{Type: "avatar", Value: "Emmy Levet", AvatarID: "000f", Subtext: "Data Engineer"},
|
|
{Type: "date", Value: "2025-06-15"},
|
|
{Type: "actions"},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
return []TableComponent{table1, table2}
|
|
}
|