At work, I've developed an internal package to standardize some analysis across the team. Mostly this consists of commonly used functions. I'd also like to add a few ggplot themes and color palettes to this package, but these aren't functions, they're objects.
Everything in R is an object, including functions, so I don't think you need to do anything special to handle non-function objects in packages. For example, see MASS::abbey, which is just a numeric vector.
That said, for consistency on the themes, I think it makes sense to make them a function, just like theme_bw(). It will be less confusing to end-users, wondering why they need () after theme_bw but not my_theme. This is partially covered here: http://ggplot2.tidyverse.org/articles/extending-ggplot2.html
But I think this blog post covers the details a little better:
If you want to have your internal package automatically set the default color scales and theme you can do so by setting them in .onAttach. This will change the defaults automatically anytime your package is attached with library(), so the results will be reproducible in the future. This code assumes ggplot2 is in your internal packages Depends, and you need to assign the scales in the global (rather than package) environment.
library(ggplot2)
source('global.R')
# Then you can reference the pre built options without rewriting them over and over on scripts
ggplot(iris) +
geom_point(aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
scale_color_manual(values = my_palette) +
my_theme
This helps with helper functions as well so you're script won't get too lengthy