@fpkit/acss 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/libs/{chunk-2NRIP6RB.cjs → chunk-2C3YLBWP.cjs} +3 -3
- package/libs/{chunk-NWJDAHP6.cjs → chunk-2GJHKWEK.cjs} +3 -3
- package/libs/{chunk-FVROL3V5.js → chunk-2JCDEC32.js} +3 -3
- package/libs/{chunk-IRLFZ3OL.js → chunk-3XJC4XUG.js} +2 -2
- package/libs/{chunk-23ANBDCR.js → chunk-4I5MF54P.js} +3 -3
- package/libs/chunk-4I5MF54P.js.map +1 -0
- package/libs/chunk-5CJPTDK3.cjs +31 -0
- package/libs/chunk-5CJPTDK3.cjs.map +1 -0
- package/libs/{chunk-E4OSROCA.cjs → chunk-5QSNJQVH.cjs} +3 -3
- package/libs/{chunk-O3JIHC5M.cjs → chunk-6BUJZ4DJ.cjs} +3 -3
- package/libs/{chunk-WXBFBWYF.cjs → chunk-AFINOD2L.cjs} +3 -3
- package/libs/{chunk-HRRHPLER.js → chunk-AWZLSWDO.js} +2 -2
- package/libs/chunk-DDSXKOUB.js +7 -0
- package/libs/chunk-DDSXKOUB.js.map +1 -0
- package/libs/{chunk-CWRNJA4P.js → chunk-DIJBIOFE.js} +3 -3
- package/libs/chunk-EJ6KYBFE.cjs +13 -0
- package/libs/chunk-EJ6KYBFE.cjs.map +1 -0
- package/libs/{chunk-GUJSMQ3V.cjs → chunk-EKJYOCLY.cjs} +3 -3
- package/libs/{chunk-X5RKCLDC.cjs → chunk-F64GE6RG.cjs} +4 -4
- package/libs/chunk-FMIM3332.js +8 -0
- package/libs/chunk-FMIM3332.js.map +1 -0
- package/libs/{chunk-5RAWNUVD.js → chunk-IBUTNPTQ.js} +2 -2
- package/libs/chunk-IWP4VJEP.cjs +18 -0
- package/libs/chunk-IWP4VJEP.cjs.map +1 -0
- package/libs/{chunk-ZFJ4U45S.js → chunk-KDMX3FAW.js} +2 -2
- package/libs/{chunk-DYFAUAB7.cjs → chunk-LXODKKA3.cjs} +4 -4
- package/libs/chunk-M7JLT62Q.js +9 -0
- package/libs/chunk-M7JLT62Q.js.map +1 -0
- package/libs/{chunk-IQ76HGVP.js → chunk-MBWI67UT.js} +2 -2
- package/libs/{chunk-O5XAJ7BY.cjs → chunk-NCGVF2QS.cjs} +4 -4
- package/libs/{chunk-W2UIN7EV.cjs → chunk-NPWHQVYB.cjs} +3 -3
- package/libs/{chunk-G55UJ53G.cjs → chunk-NZVSXRTB.cjs} +3 -3
- package/libs/chunk-NZVSXRTB.cjs.map +1 -0
- package/libs/{chunk-43TK2ICH.js → chunk-PMWL5XZ4.js} +3 -3
- package/libs/{chunk-KVKQLRJG.js → chunk-TF3GQKOY.js} +2 -2
- package/libs/chunk-TNEJXNZA.cjs +22 -0
- package/libs/chunk-TNEJXNZA.cjs.map +1 -0
- package/libs/{chunk-IEB64SWY.js → chunk-U5VA34SU.js} +2 -2
- package/libs/chunk-UGMP72J2.js +8 -0
- package/libs/chunk-UGMP72J2.js.map +1 -0
- package/libs/{chunk-MGPWZRBX.cjs → chunk-URBGDUFN.cjs} +6 -6
- package/libs/{chunk-QKHPHMG2.js → chunk-ZF6Y7W57.js} +5 -5
- package/libs/component-props-50e69975.d.ts +66 -0
- package/libs/components/box/box.css +1 -0
- package/libs/components/box/box.css.map +1 -0
- package/libs/components/box/box.min.css +3 -0
- package/libs/components/breadcrumbs/breadcrumb.cjs +6 -6
- package/libs/components/breadcrumbs/breadcrumb.js +3 -3
- package/libs/components/button.cjs +4 -4
- package/libs/components/button.d.cts +10 -3
- package/libs/components/button.d.ts +10 -3
- package/libs/components/button.js +2 -2
- package/libs/components/card.cjs +7 -7
- package/libs/components/card.d.cts +13 -85
- package/libs/components/card.d.ts +13 -85
- package/libs/components/card.js +2 -2
- package/libs/components/cards/card.css +1 -1
- package/libs/components/cards/card.css.map +1 -1
- package/libs/components/cards/card.min.css +2 -2
- package/libs/components/cluster/cluster.css +1 -0
- package/libs/components/cluster/cluster.css.map +1 -0
- package/libs/components/cluster/cluster.min.css +3 -0
- package/libs/components/dialog/dialog.cjs +7 -7
- package/libs/components/dialog/dialog.js +5 -5
- package/libs/components/form/fields.cjs +4 -4
- package/libs/components/form/fields.js +2 -2
- package/libs/components/form/textarea.cjs +4 -4
- package/libs/components/form/textarea.js +2 -2
- package/libs/components/grid/grid.css +1 -0
- package/libs/components/grid/grid.css.map +1 -0
- package/libs/components/grid/grid.min.css +3 -0
- package/libs/components/heading/heading.cjs +3 -3
- package/libs/components/heading/heading.js +2 -2
- package/libs/components/icons/icon.cjs +4 -4
- package/libs/components/icons/icon.d.cts +2 -2
- package/libs/components/icons/icon.d.ts +2 -2
- package/libs/components/icons/icon.js +2 -2
- package/libs/components/link/link.cjs +6 -6
- package/libs/components/link/link.js +2 -2
- package/libs/components/list/list.cjs +5 -5
- package/libs/components/list/list.js +2 -2
- package/libs/components/modal.cjs +4 -4
- package/libs/components/modal.d.cts +1 -1
- package/libs/components/modal.d.ts +1 -1
- package/libs/components/modal.js +3 -3
- package/libs/components/nav/nav.cjs +7 -7
- package/libs/components/nav/nav.js +3 -3
- package/libs/components/popover/popover.cjs +4 -4
- package/libs/components/popover/popover.d.cts +1 -1
- package/libs/components/popover/popover.d.ts +1 -1
- package/libs/components/popover/popover.js +1 -1
- package/libs/components/stack/stack.css +1 -0
- package/libs/components/stack/stack.css.map +1 -0
- package/libs/components/stack/stack.min.css +3 -0
- package/libs/components/tables/table.cjs +4 -4
- package/libs/components/tables/table.d.cts +2 -2
- package/libs/components/tables/table.d.ts +2 -2
- package/libs/components/tables/table.js +1 -1
- package/libs/components/text/text.cjs +5 -5
- package/libs/components/text/text.js +2 -2
- package/libs/hooks.cjs +4 -4
- package/libs/hooks.js +3 -3
- package/libs/{icons-287fce3a.d.ts → icons-df8e744f.d.ts} +1 -1
- package/libs/icons.cjs +3 -3
- package/libs/icons.d.cts +2 -2
- package/libs/icons.d.ts +2 -2
- package/libs/icons.js +2 -2
- package/libs/index.cjs +74 -73
- package/libs/index.cjs.map +1 -1
- package/libs/index.css +1 -1
- package/libs/index.css.map +1 -1
- package/libs/index.d.cts +925 -6
- package/libs/index.d.ts +925 -6
- package/libs/index.js +30 -30
- package/libs/index.js.map +1 -1
- package/package.json +2 -2
- package/src/App.tsx +1 -3
- package/src/components/alert/STYLES.mdx +790 -0
- package/src/components/badge/STYLES.mdx +610 -0
- package/src/components/box/README.mdx +401 -0
- package/src/components/box/STYLES.mdx +360 -0
- package/src/components/box/box.scss +245 -0
- package/src/components/box/box.stories.tsx +395 -0
- package/src/components/box/box.test.tsx +425 -0
- package/src/components/box/box.tsx +170 -0
- package/src/components/box/box.types.ts +166 -0
- package/src/components/breadcrumbs/STYLES.mdx +99 -0
- package/src/components/breadcrumbs/bc-item.tsx +0 -1
- package/src/components/buttons/STYLES.mdx +766 -0
- package/src/components/cards/STYLES.mdx +835 -0
- package/src/components/cards/card.scss +29 -21
- package/src/components/cards/card.tsx +13 -3
- package/src/components/cards/card.types.ts +13 -0
- package/src/components/cluster/README.mdx +595 -0
- package/src/components/cluster/STYLES.mdx +626 -0
- package/src/components/cluster/cluster.scss +86 -0
- package/src/components/cluster/cluster.stories.tsx +385 -0
- package/src/components/cluster/cluster.test.tsx +655 -0
- package/src/components/cluster/cluster.tsx +94 -0
- package/src/components/cluster/cluster.types.ts +75 -0
- package/src/components/details/STYLES.mdx +445 -0
- package/src/components/dialog/STYLES.mdx +888 -0
- package/src/components/flexbox/STYLES.mdx +857 -0
- package/src/components/flexbox/flex.stories.tsx +842 -141
- package/src/components/flexbox/flex.types.ts +25 -6
- package/src/components/form/STYLES.mdx +821 -0
- package/src/components/grid/README.mdx +709 -0
- package/src/components/grid/STYLES.mdx +785 -0
- package/src/components/grid/grid.scss +287 -0
- package/src/components/grid/grid.stories.tsx +486 -0
- package/src/components/grid/grid.test.tsx +981 -0
- package/src/components/grid/grid.tsx +222 -0
- package/src/components/grid/grid.types.ts +344 -0
- package/src/components/icons/STYLES.mdx +56 -0
- package/src/components/icons/components/arrow-right.tsx +0 -5
- package/src/components/images/STYLES.mdx +75 -0
- package/src/components/kit.tsx +8 -4
- package/src/components/layout/STYLES.mdx +556 -0
- package/src/components/link/STYLES.mdx +75 -0
- package/src/components/list/STYLES.mdx +631 -0
- package/src/components/nav/STYLES.mdx +460 -0
- package/src/components/popover/popover.tsx +1 -1
- package/src/components/progress/STYLES.mdx +64 -0
- package/src/components/stack/README.mdx +400 -0
- package/src/components/stack/STYLES.mdx +414 -0
- package/src/components/stack/stack.scss +109 -0
- package/src/components/stack/stack.stories.tsx +559 -0
- package/src/components/stack/stack.test.tsx +426 -0
- package/src/components/stack/stack.tsx +141 -0
- package/src/components/stack/stack.types.ts +133 -0
- package/src/components/tables/table-elements.tsx +1 -1
- package/src/components/tables/table.tsx +2 -2
- package/src/components/tag/STYLES.mdx +105 -0
- package/src/components/text-to-speech/STYLES.mdx +80 -0
- package/src/components/text-to-speech/TextToSpeech.tsx +0 -4
- package/src/components/text-to-speech/useTextToSpeech.tsx +2 -6
- package/src/components/ui.tsx +3 -3
- package/src/decorators/instructions.tsx +22 -18
- package/src/hooks/popover/popover.tsx +1 -1
- package/src/index.scss +5 -1
- package/src/index.ts +305 -12
- package/src/sass/GLOBALS-STYLES.md +631 -0
- package/src/sass/_globals.scss +45 -24
- package/src/styles/box/box.css +220 -0
- package/src/styles/box/box.css.map +1 -0
- package/src/styles/cards/card.css +22 -17
- package/src/styles/cards/card.css.map +1 -1
- package/src/styles/cluster/cluster.css +71 -0
- package/src/styles/cluster/cluster.css.map +1 -0
- package/src/styles/grid/grid.css +238 -0
- package/src/styles/grid/grid.css.map +1 -0
- package/src/styles/index.css +667 -49
- package/src/styles/index.css.map +1 -1
- package/src/styles/stack/stack.css +86 -0
- package/src/styles/stack/stack.css.map +1 -0
- package/src/types/component-props.ts +42 -13
- package/src/types/layout-primitives.ts +48 -0
- package/src/types/shared.ts +10 -26
- package/libs/chunk-23ANBDCR.js.map +0 -1
- package/libs/chunk-5QD3DWFI.js +0 -9
- package/libs/chunk-5QD3DWFI.js.map +0 -1
- package/libs/chunk-6WTC4JXH.cjs +0 -31
- package/libs/chunk-6WTC4JXH.cjs.map +0 -1
- package/libs/chunk-ENTCUJ3A.cjs +0 -13
- package/libs/chunk-ENTCUJ3A.cjs.map +0 -1
- package/libs/chunk-G55UJ53G.cjs.map +0 -1
- package/libs/chunk-HHLNOC5T.js +0 -7
- package/libs/chunk-HHLNOC5T.js.map +0 -1
- package/libs/chunk-KK47SYZI.js +0 -8
- package/libs/chunk-KK47SYZI.js.map +0 -1
- package/libs/chunk-US2I5GI7.cjs +0 -22
- package/libs/chunk-US2I5GI7.cjs.map +0 -1
- package/libs/chunk-W5TKWBFC.cjs +0 -18
- package/libs/chunk-W5TKWBFC.cjs.map +0 -1
- package/libs/chunk-Y2PFDELK.js +0 -8
- package/libs/chunk-Y2PFDELK.js.map +0 -1
- package/libs/component-props-67d978a2.d.ts +0 -38
- /package/libs/{chunk-2NRIP6RB.cjs.map → chunk-2C3YLBWP.cjs.map} +0 -0
- /package/libs/{chunk-NWJDAHP6.cjs.map → chunk-2GJHKWEK.cjs.map} +0 -0
- /package/libs/{chunk-FVROL3V5.js.map → chunk-2JCDEC32.js.map} +0 -0
- /package/libs/{chunk-IRLFZ3OL.js.map → chunk-3XJC4XUG.js.map} +0 -0
- /package/libs/{chunk-E4OSROCA.cjs.map → chunk-5QSNJQVH.cjs.map} +0 -0
- /package/libs/{chunk-O3JIHC5M.cjs.map → chunk-6BUJZ4DJ.cjs.map} +0 -0
- /package/libs/{chunk-WXBFBWYF.cjs.map → chunk-AFINOD2L.cjs.map} +0 -0
- /package/libs/{chunk-HRRHPLER.js.map → chunk-AWZLSWDO.js.map} +0 -0
- /package/libs/{chunk-CWRNJA4P.js.map → chunk-DIJBIOFE.js.map} +0 -0
- /package/libs/{chunk-GUJSMQ3V.cjs.map → chunk-EKJYOCLY.cjs.map} +0 -0
- /package/libs/{chunk-X5RKCLDC.cjs.map → chunk-F64GE6RG.cjs.map} +0 -0
- /package/libs/{chunk-5RAWNUVD.js.map → chunk-IBUTNPTQ.js.map} +0 -0
- /package/libs/{chunk-ZFJ4U45S.js.map → chunk-KDMX3FAW.js.map} +0 -0
- /package/libs/{chunk-DYFAUAB7.cjs.map → chunk-LXODKKA3.cjs.map} +0 -0
- /package/libs/{chunk-IQ76HGVP.js.map → chunk-MBWI67UT.js.map} +0 -0
- /package/libs/{chunk-O5XAJ7BY.cjs.map → chunk-NCGVF2QS.cjs.map} +0 -0
- /package/libs/{chunk-W2UIN7EV.cjs.map → chunk-NPWHQVYB.cjs.map} +0 -0
- /package/libs/{chunk-43TK2ICH.js.map → chunk-PMWL5XZ4.js.map} +0 -0
- /package/libs/{chunk-KVKQLRJG.js.map → chunk-TF3GQKOY.js.map} +0 -0
- /package/libs/{chunk-IEB64SWY.js.map → chunk-U5VA34SU.js.map} +0 -0
- /package/libs/{chunk-MGPWZRBX.cjs.map → chunk-URBGDUFN.cjs.map} +0 -0
- /package/libs/{chunk-QKHPHMG2.js.map → chunk-ZF6Y7W57.js.map} +0 -0
|
@@ -0,0 +1,631 @@
|
|
|
1
|
+
# Global Styles Documentation
|
|
2
|
+
|
|
3
|
+
Typography and layout styling with CSS custom properties for @fpkit/acss.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Global styles provide baseline typography, layout, and semantic HTML element styling across your application. All styles use:
|
|
8
|
+
|
|
9
|
+
- **Rem units** for responsive sizing (1rem = 16px default)
|
|
10
|
+
- **Logical properties** for internationalization (`padding-inline`, `margin-block`)
|
|
11
|
+
- **CSS custom properties** for complete customization
|
|
12
|
+
- **Semantic naming** following project conventions
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Table of Contents
|
|
17
|
+
|
|
18
|
+
- [Typography](#typography)
|
|
19
|
+
- [Horizontal Rule (HR)](#horizontal-rule-hr)
|
|
20
|
+
- [Blockquote](#blockquote)
|
|
21
|
+
- [Headings](#headings)
|
|
22
|
+
- [Paragraphs](#paragraphs)
|
|
23
|
+
- [Lists](#lists)
|
|
24
|
+
- [Layout](#layout)
|
|
25
|
+
- [Body](#body)
|
|
26
|
+
- [Sections](#sections)
|
|
27
|
+
- [Skip Links](#skip-links)
|
|
28
|
+
- [Utility Variables](#utility-variables)
|
|
29
|
+
- [Best Practices](#best-practices)
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Typography
|
|
34
|
+
|
|
35
|
+
### Horizontal Rule (HR)
|
|
36
|
+
|
|
37
|
+
Horizontal rules for content dividers.
|
|
38
|
+
|
|
39
|
+
#### CSS Variables
|
|
40
|
+
|
|
41
|
+
| Variable | Default | Description |
|
|
42
|
+
|----------|---------|-------------|
|
|
43
|
+
| `--hr-border-width` | `0.0625rem` | Line thickness (1px) |
|
|
44
|
+
| `--hr-border-style` | `solid` | Line style (`solid`, `dashed`, `dotted`) |
|
|
45
|
+
| `--hr-border-color` | `var(--color-border-subtle, #d3d3d3)` | Line color (uses global theme) |
|
|
46
|
+
| `--hr-margin-block` | `1.5rem` | Vertical spacing above and below |
|
|
47
|
+
|
|
48
|
+
#### Default Styles
|
|
49
|
+
|
|
50
|
+
```css
|
|
51
|
+
hr {
|
|
52
|
+
--hr-border-width: 0.0625rem;
|
|
53
|
+
--hr-border-style: solid;
|
|
54
|
+
--hr-border-color: var(--color-border-subtle, #d3d3d3);
|
|
55
|
+
--hr-margin-block: 1.5rem;
|
|
56
|
+
|
|
57
|
+
border: none;
|
|
58
|
+
border-bottom: var(--hr-border-width) var(--hr-border-style) var(--hr-border-color);
|
|
59
|
+
margin-block: var(--hr-margin-block);
|
|
60
|
+
display: block;
|
|
61
|
+
min-width: 100%;
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
#### Customization Examples
|
|
66
|
+
|
|
67
|
+
**Thicker HR:**
|
|
68
|
+
```css
|
|
69
|
+
hr.thick {
|
|
70
|
+
--hr-border-width: 0.125rem; /* 2px */
|
|
71
|
+
--hr-border-color: #000000;
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Dashed Divider:**
|
|
76
|
+
```css
|
|
77
|
+
hr.dashed {
|
|
78
|
+
--hr-border-style: dashed;
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Minimal HR with Extra Spacing:**
|
|
83
|
+
```css
|
|
84
|
+
hr.minimal {
|
|
85
|
+
--hr-border-width: 0.0625rem;
|
|
86
|
+
--hr-border-color: var(--color-border-subtle);
|
|
87
|
+
--hr-margin-block: 3rem;
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Accent HR:**
|
|
92
|
+
```css
|
|
93
|
+
hr.accent {
|
|
94
|
+
--hr-border-width: 0.1875rem; /* 3px */
|
|
95
|
+
--hr-border-color: #667eea;
|
|
96
|
+
--hr-margin-block: 2rem;
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
### Blockquote
|
|
103
|
+
|
|
104
|
+
Styled quotations with left border accent.
|
|
105
|
+
|
|
106
|
+
#### CSS Variables
|
|
107
|
+
|
|
108
|
+
| Variable | Default | Description |
|
|
109
|
+
|----------|---------|-------------|
|
|
110
|
+
| `--blockquote-padding` | `1rem` | Internal padding |
|
|
111
|
+
| `--blockquote-border-width` | `0.3125rem` | Left border width (5px) |
|
|
112
|
+
| `--blockquote-border-style` | `solid` | Border style |
|
|
113
|
+
| `--blockquote-border-color` | `var(--color-border, #d3d3d3)` | Border color (uses global theme) |
|
|
114
|
+
|
|
115
|
+
#### Default Styles
|
|
116
|
+
|
|
117
|
+
```css
|
|
118
|
+
blockquote {
|
|
119
|
+
--blockquote-padding: 1rem;
|
|
120
|
+
--blockquote-border-width: 0.3125rem;
|
|
121
|
+
--blockquote-border-style: solid;
|
|
122
|
+
--blockquote-border-color: var(--color-border, #d3d3d3);
|
|
123
|
+
|
|
124
|
+
padding: var(--blockquote-padding);
|
|
125
|
+
border-left: var(--blockquote-border-width) var(--blockquote-border-style) var(--blockquote-border-color);
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### Customization Examples
|
|
130
|
+
|
|
131
|
+
**Thick Accent Blockquote:**
|
|
132
|
+
```css
|
|
133
|
+
blockquote.accent {
|
|
134
|
+
--blockquote-border-width: 0.5rem; /* 8px */
|
|
135
|
+
--blockquote-border-color: #667eea;
|
|
136
|
+
--blockquote-padding: 1.5rem;
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Minimal Blockquote:**
|
|
141
|
+
```css
|
|
142
|
+
blockquote.minimal {
|
|
143
|
+
--blockquote-border-width: 0.125rem; /* 2px */
|
|
144
|
+
--blockquote-border-color: var(--color-border-subtle);
|
|
145
|
+
--blockquote-padding: 0.75rem;
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**Dashed Border:**
|
|
150
|
+
```css
|
|
151
|
+
blockquote.dashed {
|
|
152
|
+
--blockquote-border-style: dashed;
|
|
153
|
+
--blockquote-border-width: 0.1875rem; /* 3px */
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Callout Box:**
|
|
158
|
+
```css
|
|
159
|
+
blockquote.callout {
|
|
160
|
+
--blockquote-padding: 1.5rem;
|
|
161
|
+
--blockquote-border-width: 0.25rem;
|
|
162
|
+
--blockquote-border-color: #ffc107;
|
|
163
|
+
background-color: #fff3cd;
|
|
164
|
+
border-radius: 0.25rem;
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### Headings
|
|
171
|
+
|
|
172
|
+
Semantic heading styles (h1-h6).
|
|
173
|
+
|
|
174
|
+
#### CSS Variables
|
|
175
|
+
|
|
176
|
+
| Variable | Default | Description |
|
|
177
|
+
|----------|---------|-------------|
|
|
178
|
+
| `--fs-weight` | `500` | Font weight for headings and strong text |
|
|
179
|
+
|
|
180
|
+
#### Default Styles
|
|
181
|
+
|
|
182
|
+
```css
|
|
183
|
+
h1, h2, h3, h4, h5, h6 {
|
|
184
|
+
font-weight: var(--fs-weight);
|
|
185
|
+
margin-block-start: 0;
|
|
186
|
+
margin-block-end: 1rem;
|
|
187
|
+
line-height: 1.2;
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
#### Customization
|
|
192
|
+
|
|
193
|
+
```css
|
|
194
|
+
/* Bolder headings */
|
|
195
|
+
:root {
|
|
196
|
+
--fs-weight: 700;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/* Individual heading styles */
|
|
200
|
+
h1 {
|
|
201
|
+
font-size: 2.5rem;
|
|
202
|
+
--fs-weight: 800;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
h2 {
|
|
206
|
+
font-size: 2rem;
|
|
207
|
+
--fs-weight: 700;
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
### Paragraphs
|
|
214
|
+
|
|
215
|
+
Default paragraph styling with optimal line length.
|
|
216
|
+
|
|
217
|
+
#### Default Styles
|
|
218
|
+
|
|
219
|
+
```css
|
|
220
|
+
p {
|
|
221
|
+
max-width: 75ch; /* Optimal reading width */
|
|
222
|
+
font-size: var(--fs-0); /* Base font size */
|
|
223
|
+
line-height: 1.6; /* Comfortable reading */
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
p + p {
|
|
227
|
+
margin-block-start: 1rem; /* Spacing between paragraphs */
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
#### Customization
|
|
232
|
+
|
|
233
|
+
```css
|
|
234
|
+
/* Wide paragraphs */
|
|
235
|
+
p.wide {
|
|
236
|
+
max-width: 100ch;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/* Narrow paragraphs */
|
|
240
|
+
p.narrow {
|
|
241
|
+
max-width: 60ch;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/* Tight spacing */
|
|
245
|
+
p.tight + p.tight {
|
|
246
|
+
margin-block-start: 0.5rem;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/* Loose spacing */
|
|
250
|
+
p.loose + p.loose {
|
|
251
|
+
margin-block-start: 2rem;
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
### Lists
|
|
258
|
+
|
|
259
|
+
Flexible list styling with CSS custom properties.
|
|
260
|
+
|
|
261
|
+
#### CSS Variables
|
|
262
|
+
|
|
263
|
+
| Variable | Default | Description |
|
|
264
|
+
|----------|---------|-------------|
|
|
265
|
+
| `--li-display` | `flex` | Display mode for lists |
|
|
266
|
+
| `--li-direction` | `column` | Flex direction |
|
|
267
|
+
| `--li-gap` | `0.2rem` | Gap between list items |
|
|
268
|
+
| `--li-wrap` | `nowrap` | Flex wrap behavior |
|
|
269
|
+
| `--li-ps` | `var(--spc-3)` | Padding start (left padding) |
|
|
270
|
+
| `--li-style` | `none` | List style for unstyled lists |
|
|
271
|
+
|
|
272
|
+
#### Default Styles
|
|
273
|
+
|
|
274
|
+
```css
|
|
275
|
+
ul, ol {
|
|
276
|
+
display: var(--li-display, flex);
|
|
277
|
+
flex-direction: var(--li-direction, column);
|
|
278
|
+
gap: var(--li-gap, 0.2rem);
|
|
279
|
+
flex-wrap: var(--li-wrap, nowrap);
|
|
280
|
+
padding-inline-start: var(--li-ps, var(--spc-3));
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/* Unstyled lists */
|
|
284
|
+
[role="list"],
|
|
285
|
+
[data-list~="unstyled"] {
|
|
286
|
+
list-style: var(--li-style, none);
|
|
287
|
+
margin-block-end: var(--li-my, 0);
|
|
288
|
+
margin-block-start: var(--li-mx, 0);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/* Inline lists */
|
|
292
|
+
[data-list~="inline"] {
|
|
293
|
+
--li-direction: row;
|
|
294
|
+
--li-gap: 1rem;
|
|
295
|
+
--li-wrap: wrap;
|
|
296
|
+
--li-px: 0;
|
|
297
|
+
--li-pi: 0;
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
#### Examples
|
|
302
|
+
|
|
303
|
+
**Inline Navigation:**
|
|
304
|
+
```html
|
|
305
|
+
<ul data-list="unstyled inline">
|
|
306
|
+
<li><a href="/">Home</a></li>
|
|
307
|
+
<li><a href="/about">About</a></li>
|
|
308
|
+
<li><a href="/contact">Contact</a></li>
|
|
309
|
+
</ul>
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
**Spaced List:**
|
|
313
|
+
```css
|
|
314
|
+
ul.spaced {
|
|
315
|
+
--li-gap: 1rem;
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
**Compact List:**
|
|
320
|
+
```css
|
|
321
|
+
ul.compact {
|
|
322
|
+
--li-gap: 0.1rem;
|
|
323
|
+
}
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## Layout
|
|
329
|
+
|
|
330
|
+
### Body
|
|
331
|
+
|
|
332
|
+
Root body layout configuration.
|
|
333
|
+
|
|
334
|
+
#### CSS Variables
|
|
335
|
+
|
|
336
|
+
| Variable | Default | Description |
|
|
337
|
+
|----------|---------|-------------|
|
|
338
|
+
| `--body-display` | `flex` | Display mode |
|
|
339
|
+
| `--body-direction` | `column` | Flex direction |
|
|
340
|
+
|
|
341
|
+
#### Default Styles
|
|
342
|
+
|
|
343
|
+
```css
|
|
344
|
+
body {
|
|
345
|
+
display: var(--body-display, flex);
|
|
346
|
+
min-height: 100%;
|
|
347
|
+
flex-direction: var(--body-direction, column);
|
|
348
|
+
min-width: 20.3125rem; /* 325px minimum */
|
|
349
|
+
font-size: var(--fs-0);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
main {
|
|
353
|
+
flex-grow: 1; /* Main content fills available space */
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
### Sections
|
|
360
|
+
|
|
361
|
+
Semantic section spacing.
|
|
362
|
+
|
|
363
|
+
#### CSS Variables
|
|
364
|
+
|
|
365
|
+
| Variable | Description |
|
|
366
|
+
|----------|-------------|
|
|
367
|
+
| `--sect-y` | Horizontal margin (inline) |
|
|
368
|
+
| `--sect-x` | Vertical padding (block) |
|
|
369
|
+
|
|
370
|
+
#### Default Styles
|
|
371
|
+
|
|
372
|
+
```css
|
|
373
|
+
section:not(nav) {
|
|
374
|
+
margin-inline: var(--sect-y, auto);
|
|
375
|
+
padding-block: var(--sect-x, --spc-4);
|
|
376
|
+
}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
### Skip Links
|
|
382
|
+
|
|
383
|
+
Accessibility feature for keyboard navigation.
|
|
384
|
+
|
|
385
|
+
#### CSS Variables
|
|
386
|
+
|
|
387
|
+
| Variable | Default | Description |
|
|
388
|
+
|----------|---------|-------------|
|
|
389
|
+
| `--color-skip-link-bg` | `#f5f5f5` | Background color when focused |
|
|
390
|
+
|
|
391
|
+
#### Default Styles
|
|
392
|
+
|
|
393
|
+
```css
|
|
394
|
+
body > a[href^="#"] {
|
|
395
|
+
position: absolute;
|
|
396
|
+
top: -4rem;
|
|
397
|
+
left: 0;
|
|
398
|
+
width: 100%;
|
|
399
|
+
display: block;
|
|
400
|
+
justify-content: flex-start;
|
|
401
|
+
padding: 1rem;
|
|
402
|
+
z-index: 100;
|
|
403
|
+
transition: top 0.3s;
|
|
404
|
+
border-radius: 0;
|
|
405
|
+
background-color: var(--color-skip-link-bg, #f5f5f5);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
body > a[href^="#"]:focus {
|
|
409
|
+
top: 0; /* Slides into view on focus */
|
|
410
|
+
}
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
#### Usage
|
|
414
|
+
|
|
415
|
+
```html
|
|
416
|
+
<body>
|
|
417
|
+
<a href="#main-content">Skip to main content</a>
|
|
418
|
+
<!-- Page content -->
|
|
419
|
+
<main id="main-content">
|
|
420
|
+
<!-- Main content starts here -->
|
|
421
|
+
</main>
|
|
422
|
+
</body>
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## Utility Variables
|
|
428
|
+
|
|
429
|
+
### Boolean-Like Variables
|
|
430
|
+
|
|
431
|
+
Special variables for conditional CSS logic.
|
|
432
|
+
|
|
433
|
+
| Variable | Value | Purpose |
|
|
434
|
+
|----------|-------|---------|
|
|
435
|
+
| `--TRUE` | `initial` | Enables a CSS property |
|
|
436
|
+
| `--FALSE` | ` ` (empty) | Disables a CSS property |
|
|
437
|
+
|
|
438
|
+
#### Documentation
|
|
439
|
+
|
|
440
|
+
```css
|
|
441
|
+
/* Boolean-like utility variables for conditional CSS logic
|
|
442
|
+
* Usage: property: var(--condition, var(--TRUE)) value;
|
|
443
|
+
* --TRUE (initial) applies the value, --FALSE (empty) skips it
|
|
444
|
+
*/
|
|
445
|
+
:root {
|
|
446
|
+
--TRUE: initial;
|
|
447
|
+
--FALSE: ;
|
|
448
|
+
}
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
#### Example Usage
|
|
452
|
+
|
|
453
|
+
```css
|
|
454
|
+
/* Conditional border */
|
|
455
|
+
.element {
|
|
456
|
+
border: var(--enable-border, var(--FALSE)) 1px solid black;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
/* Enable the border */
|
|
460
|
+
.element.bordered {
|
|
461
|
+
--enable-border: var(--TRUE);
|
|
462
|
+
}
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
## Best Practices
|
|
468
|
+
|
|
469
|
+
### 1. Use Rem Units
|
|
470
|
+
|
|
471
|
+
Convert all pixel values to rem for responsive scaling.
|
|
472
|
+
|
|
473
|
+
```css
|
|
474
|
+
/* ❌ Don't use pixels */
|
|
475
|
+
hr {
|
|
476
|
+
--hr-border-width: 2px;
|
|
477
|
+
--hr-margin-block: 24px;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/* ✅ Use rem */
|
|
481
|
+
hr {
|
|
482
|
+
--hr-border-width: 0.125rem; /* 2px ÷ 16 = 0.125rem */
|
|
483
|
+
--hr-margin-block: 1.5rem; /* 24px ÷ 16 = 1.5rem */
|
|
484
|
+
}
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
### 2. Use Logical Properties
|
|
488
|
+
|
|
489
|
+
Support internationalization with logical properties.
|
|
490
|
+
|
|
491
|
+
```css
|
|
492
|
+
/* ❌ Physical properties */
|
|
493
|
+
margin-left: 1rem;
|
|
494
|
+
margin-right: 1rem;
|
|
495
|
+
margin-top: 2rem;
|
|
496
|
+
margin-bottom: 2rem;
|
|
497
|
+
|
|
498
|
+
/* ✅ Logical properties */
|
|
499
|
+
margin-inline: 1rem; /* Left/right in LTR, right/left in RTL */
|
|
500
|
+
margin-block: 2rem; /* Top/bottom */
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### 3. Reference Global Theme Colors
|
|
504
|
+
|
|
505
|
+
Use semantic color variables that cascade from global theme.
|
|
506
|
+
|
|
507
|
+
```css
|
|
508
|
+
/* ❌ Hard-coded colors */
|
|
509
|
+
hr {
|
|
510
|
+
--hr-border-color: #d3d3d3;
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
/* ✅ Semantic theme colors */
|
|
514
|
+
hr {
|
|
515
|
+
--hr-border-color: var(--color-border-subtle, #d3d3d3);
|
|
516
|
+
}
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
### 4. Split Compound Properties
|
|
520
|
+
|
|
521
|
+
Enable partial overrides with atomic properties.
|
|
522
|
+
|
|
523
|
+
```css
|
|
524
|
+
/* ❌ Shorthand property */
|
|
525
|
+
--blockquote-border: 5px solid #d3d3d3;
|
|
526
|
+
|
|
527
|
+
/* ✅ Atomic properties */
|
|
528
|
+
--blockquote-border-width: 0.3125rem;
|
|
529
|
+
--blockquote-border-style: solid;
|
|
530
|
+
--blockquote-border-color: var(--color-border, #d3d3d3);
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
## Theming Examples
|
|
536
|
+
|
|
537
|
+
### Dark Theme
|
|
538
|
+
|
|
539
|
+
```css
|
|
540
|
+
:root {
|
|
541
|
+
--color-border-subtle: #333333;
|
|
542
|
+
--color-border: #404040;
|
|
543
|
+
--color-skip-link-bg: #2d2d2d;
|
|
544
|
+
}
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
### High Contrast Theme
|
|
548
|
+
|
|
549
|
+
```css
|
|
550
|
+
:root {
|
|
551
|
+
--hr-border-width: 0.125rem;
|
|
552
|
+
--hr-border-color: #000000;
|
|
553
|
+
--blockquote-border-width: 0.5rem;
|
|
554
|
+
--blockquote-border-color: #000000;
|
|
555
|
+
--fs-weight: 700;
|
|
556
|
+
}
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
### Minimal Theme
|
|
560
|
+
|
|
561
|
+
```css
|
|
562
|
+
:root {
|
|
563
|
+
--hr-border-width: 0.0625rem;
|
|
564
|
+
--hr-border-color: var(--color-border-subtle);
|
|
565
|
+
--hr-margin-block: 3rem;
|
|
566
|
+
--blockquote-border-width: 0.125rem;
|
|
567
|
+
}
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
572
|
+
## Resources
|
|
573
|
+
|
|
574
|
+
- **CSS Variables Reference** - See [CSS-VARIABLES.md](../../CSS-VARIABLES.md) for complete documentation
|
|
575
|
+
- **Theme Examples** - See [theme-examples.css](../../theme-examples.css) for pre-built themes
|
|
576
|
+
- **Card Styles** - See [components/cards/STYLES.mdx](../components/cards/STYLES.mdx) for card-specific variables
|
|
577
|
+
|
|
578
|
+
---
|
|
579
|
+
|
|
580
|
+
## Quick Reference
|
|
581
|
+
|
|
582
|
+
### HR Variables
|
|
583
|
+
|
|
584
|
+
```css
|
|
585
|
+
--hr-border-width: 0.0625rem;
|
|
586
|
+
--hr-border-style: solid;
|
|
587
|
+
--hr-border-color: var(--color-border-subtle, #d3d3d3);
|
|
588
|
+
--hr-margin-block: 1.5rem;
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
### Blockquote Variables
|
|
592
|
+
|
|
593
|
+
```css
|
|
594
|
+
--blockquote-padding: 1rem;
|
|
595
|
+
--blockquote-border-width: 0.3125rem;
|
|
596
|
+
--blockquote-border-style: solid;
|
|
597
|
+
--blockquote-border-color: var(--color-border, #d3d3d3);
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
### Typography Variables
|
|
601
|
+
|
|
602
|
+
```css
|
|
603
|
+
--fs-weight: 500;
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
### Layout Variables
|
|
607
|
+
|
|
608
|
+
```css
|
|
609
|
+
--body-display: flex;
|
|
610
|
+
--body-direction: column;
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
### Utility Variables
|
|
614
|
+
|
|
615
|
+
```css
|
|
616
|
+
--TRUE: initial;
|
|
617
|
+
--FALSE: ;
|
|
618
|
+
```
|
|
619
|
+
|
|
620
|
+
---
|
|
621
|
+
|
|
622
|
+
## Browser Support
|
|
623
|
+
|
|
624
|
+
All global styles use modern CSS features:
|
|
625
|
+
|
|
626
|
+
- ✅ **CSS Custom Properties** - All modern browsers (IE11 not supported)
|
|
627
|
+
- ✅ **Logical Properties** (`padding-inline`, `margin-block`) - Chrome 87+, Firefox 66+, Safari 14.1+
|
|
628
|
+
- ✅ **Flexbox** - All modern browsers
|
|
629
|
+
- ✅ **`:focus-visible`** - Chrome 86+, Firefox 85+, Safari 15.4+
|
|
630
|
+
|
|
631
|
+
For older browser support, fallback values ensure graceful degradation.
|