I should be able to make easy visual / organizational changes for a Space out-of-the-box without needing to know CSS
Summary: Other wikis offer a nice default appearance and easy tweaks for that default appearance. There's a reason for that; it both lets people make a site feel like they want it to feel / feel like "their own", as well as dipping their toes in how-that-wiki-does-things.
Depends Upon:
The process should ideally go something like this:
- I Create a Space.
- I see a visually appealing, nicely-formatted page with some sort of structure to it (leftnav, or topics along the top, or whatever), and a content area with a congratulatory message that clearly indicates (a) it is placeholder text for whatever you want on the Space homepage, and (b) how to edit it (and maybe how to edit other things / basic orientation?)
- I notice a "Customize the look and feel of this Space" link (either in the welcome message or in the leftnav or something)
- I click on it, and reach a screen where I can edit a bunch of default values for the Space. (The Properties of some Thing.)
The sorts of things that should be easily edited:
- Space logo (image)
- Space icon (favicon)
- Background Color (color)
- Foreground Color 1 (color) - main foreground color
- Foreground Color 2 (color) - secondary/highlight foreground color
- Text Color (color)
- Page Template (Page Template dropdown, defaults to Default Page Template, but has 1-3 other pre-canned options so people can see how things change)
- Navigation Links (List of Text) - see notes below
Specifying fonts gets a little more fraught, but is likely something desirable.
Exactly how you integrate editable space-wide navigation links requires some thought. You don't want it living in the Page Template Things, because then you lose your nav links if you change templates. But having it as a flat list of Text items makes it hard to, eg, do easy sub-menus(†). There are many solutions with many trade-offs.
(†) = For that you'd either want (a) a List of Text items (the links proper) that also each have a Value associated with them (so that the Page Template can check "is the current Thing's where-are-we value the same as this Navigation Link's where-are-we value; if so, grab sub-items from somewhere), or (b) each Navigation Link to be its own Thing; or (c) each Navigation Link to be a Model Type.