How to use metatable?

I know that metatable can be pretty easy but I don’t figure out how to make things like topbar plus for modules. In topbar plus, you can make this:

local module = require(script.Icon)
local icon = module:New()
icon:SetLabel('test')

As you can see, you can make an instance and make properties to an instance, could anymody help me to make this for a plugin?

also, I wanna know how to make properties in modules using table like that:

local module = require(script.Module)
module:Start({property1 = "test", property2 = 10})