**[[Class]]** pages are the managed categories of pages within this [[System]]. A page's Classes are listed at the top of the page as a series of <span style="color:rgba(var(--color-cyan-rgb), 0.8)">cyan</span> pills. ^about
Every page will belong to one or more Classes, and each Class:
- communicates what kind of page it is
- may be accompanied by a standard set of [[Property|Properties]]
- automatically includes the page into indexes / content summary pages
- helps streamline the creation and consumption of pages
They are similar to \#tags, but less freeform and more explicit, intentional, and managed. They are also related to the concept of indexes and 'Maps of Content (MOCs)'. It is intended to be a flat, extensible, low-maintenance system that helps guide the natural systems of pages that emerge over time. They are in effect the System's organisational backbone.
A page's Classes are defined within its `classes` property. Note that this page about Classes, is itself a Class, i.e. it is the Class of Class pages. Below is a list of pages that have [[Class]] as a `classes`, also noting there may or may not be any actual pages using the Class. Class class class class class.
<span class="pws-tables-cards pws-tables-cards-tickler"><span class="dataview">`$=dv.execute(dv.page("Class (script)").script_local)`</span>![[Class (tpdv output)#Content|no-h app-hidden]]</span>
## Classes vs Type
The `classes` property is a list of standardised values that are used System-wide and managed here as a Class of pages. The `type` property, where used, is a single free-text value that may have varying, temporary, and/or peculiar uses across this system. See also [[State#Status vs States]].
## Properties of a Class
In addition to the [[Standard Properties for Pages]], a Class may have (and also require) one or more [[Property|Properties]] to properly define and qualify the page. The Class page should present an '[X] Properties' section that provides (a) a sufficient data dictionary for these properties and (b) a code block to easily copy [a default/blank version of] these properties into a page's frontmatter.
## Class pages listing instances
A Class page will typically (but not always) feature a list of pages that are an instance of that Class.
For public Class pages with any public page instances, [[Pub Wrap#Dataview Caching]] must be used to provide a dual-report section that is compatible with Publish, e.g. the below for this [[Class]] page itself.
```html
<span class="dataview">`$=dv.execute(dv.page("Class (script)").script_local)`</span>![[Class (tpdv output)#Content|no-h app-hidden]]
```
For **private** Class pages and/or where there are only to be private page instances, no caching is required, and so any reporting method can be used. Preferentially:
1. Calling [[_classof (script)]] inline for most typical Class page reports
2. A direct dataview query, where the query is Class-specific and is not re-used
3. Creating a custom [[Script]] and calling it inline, where the query is Class-specific AND (a) is re-used elsewhere and/or (b) we wish to wrap the result in custom CSS classes.
## Classes of Pages
This is an alternate list of what pages have ***nominated*** as their Class, which may or may not yet exist as a defined Class page.
<span class="dataview">`$=dv.execute(dv.page("Class Mentions (script)").script_local)`</span>![[Class Mentions (tpdv output)#Content|no-h app-hidden]]