clairity.css 0.1.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.
- checksums.yaml +7 -0
- data/.github/workflows/main.yml +27 -0
- data/.gitignore +66 -0
- data/CHANGELOG.md +423 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +373 -0
- data/README.md +170 -0
- data/Rakefile +12 -0
- data/bin/console +11 -0
- data/bin/setup +8 -0
- data/clairity.css.gemspec +51 -0
- data/lib/assets/css/clairity/base.css +951 -0
- data/lib/assets/css/clairity/classes.css +264 -0
- data/lib/assets/css/clairity/components.css +946 -0
- data/lib/assets/css/clairity/cosmetic.css +157 -0
- data/lib/assets/css/clairity/functions.css +46 -0
- data/lib/assets/css/clairity/icons.css +44 -0
- data/lib/assets/css/clairity/normalize.css +239 -0
- data/lib/assets/css/clairity/palette.css +329 -0
- data/lib/assets/css/clairity/shims.css +20 -0
- data/lib/assets/css/clairity/states.css +756 -0
- data/lib/assets/css/clairity/utilities.css +68 -0
- data/lib/assets/css/clairity/variables.css +301 -0
- data/lib/assets/css/clairity.basic.css +28 -0
- data/lib/assets/css/clairity.classless.css +50 -0
- data/lib/assets/css/clairity.css +109 -0
- data/lib/assets/images/input-image.png +0 -0
- data/lib/assets/images/logo.png +0 -0
- data/lib/assets/images/profile-avatar.png +0 -0
- data/lib/assets/js/clairity.css.js +6 -0
- data/lib/assets/media/t-rex_roar.mp3 +0 -0
- data/lib/clairity.css/version.rb +5 -0
- data/lib/clairity.css.rb +10 -0
- data/sig/clairity.css.rbs +4 -0
- data/test/test_clairity_css.rb +17 -0
- data/test/test_helper.rb +5 -0
- metadata +128 -0
@@ -0,0 +1,68 @@
|
|
1
|
+
/******************************************************************************\
|
2
|
+
UTILITIES - a limited set of utilities that can override all the other styles
|
3
|
+
that precede them. use sparingly and mindfully. these usually do
|
4
|
+
only one or two things. [0010] specificity unless otherwise noted.
|
5
|
+
\******************************************************************************/
|
6
|
+
|
7
|
+
/* #visually-hidden - provide non-visual information semantically & accessibly*/
|
8
|
+
/* :not() with a selection list has poor backwards compatibility as of 2022, so
|
9
|
+
use separate :not() clauses for now */
|
10
|
+
.visually-hidden:not(:focus):not(:active):not(:focus-within) { /* ie9+ */
|
11
|
+
position: absolute;
|
12
|
+
width: 1px;
|
13
|
+
height: 1px;
|
14
|
+
overflow: hidden;
|
15
|
+
clip: rect(0 0 0 0);
|
16
|
+
white-space: nowrap;
|
17
|
+
margin: -1;
|
18
|
+
padding: 0;
|
19
|
+
border: 0;
|
20
|
+
}
|
21
|
+
|
22
|
+
|
23
|
+
/* -----------------------------------------------------------------------------
|
24
|
+
// #containers -
|
25
|
+
// -------------------------------------------------------------------------- */
|
26
|
+
|
27
|
+
/* generic container class for container queries. only supported in
|
28
|
+
safari 16+ and chrome 93+ behind a flag - EXPERIMENTAL */
|
29
|
+
.container { container: inline-size / container; }
|
30
|
+
|
31
|
+
|
32
|
+
/* -----------------------------------------------------------------------------
|
33
|
+
// #positioning - visual utilities to place items in certain relative locations
|
34
|
+
// -------------------------------------------------------------------------- */
|
35
|
+
|
36
|
+
/* override display mode to be block */
|
37
|
+
.block { display: block; }
|
38
|
+
|
39
|
+
/* horizontally center text and menu items */
|
40
|
+
.centered { text-align: center; }
|
41
|
+
.centered menu { justify-content: center; } /* [0011] specificity */
|
42
|
+
|
43
|
+
/* flex positioning utilities */
|
44
|
+
.center { justify-content: center; }
|
45
|
+
.right { justify-content: flex-end; }
|
46
|
+
|
47
|
+
|
48
|
+
/* -----------------------------------------------------------------------------
|
49
|
+
// #borders & #shadows - container boundary utlities
|
50
|
+
// -------------------------------------------------------------------------- */
|
51
|
+
|
52
|
+
.shadow { box-shadow: var(--shadow) var(--300); }
|
53
|
+
|
54
|
+
|
55
|
+
form.button_to {
|
56
|
+
width: min-content;
|
57
|
+
}
|
58
|
+
|
59
|
+
form.button_to > [type="submit"] {
|
60
|
+
width: max-content;
|
61
|
+
}
|
62
|
+
|
63
|
+
/* -----------------------------------------------------------------------------
|
64
|
+
// #clairity - special font just for fun
|
65
|
+
// -------------------------------------------------------------------------- */
|
66
|
+
.clairity { font-family: Corbel, "Lucida Grande", "Lucida Sans Unicode",
|
67
|
+
"Lucida Sans", "DejaVu Sans", "Bitstream Vera Sans",
|
68
|
+
"Liberation Sans", Verdana, "Verdana Ref",sans-serif;}
|
@@ -0,0 +1,301 @@
|
|
1
|
+
/******************************************************************************\
|
2
|
+
CSS VARIABLES - these are global params that you may want to edit to match
|
3
|
+
the style of your site
|
4
|
+
|
5
|
+
Support for CSS variables (custom properties) goes back at
|
6
|
+
least 5 years for the major browsers and cover about 95% of
|
7
|
+
global users, but we're implicitly eschewing IE here, as it
|
8
|
+
never supported CSS variables.
|
9
|
+
|
10
|
+
* First we define our primitive CSS variable values, and then we assign those
|
11
|
+
to logical variables that can be used in different color schemes and media
|
12
|
+
preferences without having to do the mapping in our main stylesheet.
|
13
|
+
* We take the strategy of defining default values for properties using the
|
14
|
+
same name as the property, so for font-size, we'll use --font-size. We'll
|
15
|
+
avoid prefixes & compound names as much as possible to keep variable names
|
16
|
+
as short as possible. The most notable exception is the use of bg- for
|
17
|
+
background colors harmonious with their foreground counterparts. In general,
|
18
|
+
shorter names will be used first for more common variables, while less
|
19
|
+
common variables might get longer names if a conflict arises. color and
|
20
|
+
spacing variables tend to be used the most, so these get preferential
|
21
|
+
treatment (shorter, single-word names).
|
22
|
+
* Since palette.css is optional, we declare color-scheme here rather than in
|
23
|
+
that file, and we use system colors here as a fallback as well.
|
24
|
+
\******************************************************************************/
|
25
|
+
|
26
|
+
/* :root rather than html so other doctypes like svg can use these variables */
|
27
|
+
:root {
|
28
|
+
|
29
|
+
color-scheme: light dark; /* list allowable color schemes */
|
30
|
+
|
31
|
+
|
32
|
+
/* ---------------------------------------------------------------------------
|
33
|
+
// #layout - custom lengths for layouts and containers
|
34
|
+
// ------------------------------------------------------------------------ */
|
35
|
+
|
36
|
+
--view-height: 100vh; /* use 100dvb when widely supported */
|
37
|
+
--line-length: min(80ch, 100%); /* for readability */
|
38
|
+
|
39
|
+
/* breakpoints - for grid/flex/container queries; try to avoid media queries*/
|
40
|
+
--column: min(41vw, 10rem); /* allows 2 cols @ 320px wide */
|
41
|
+
--container: 18ch; /* standard width of a container */
|
42
|
+
|
43
|
+
/* form fields */
|
44
|
+
--width: 16ch; /* ch-based to show enough chars in field */
|
45
|
+
--height: 2.5rem; /* em-based to scale with field text size */
|
46
|
+
--field-max: min(47ch, 100%); /* to accommodate smaller screens */
|
47
|
+
|
48
|
+
|
49
|
+
/* ---------------------------------------------------------------------------
|
50
|
+
// #font - font families, sizes, weights, and line heights
|
51
|
+
// ------------------------------------------------------------------------ */
|
52
|
+
|
53
|
+
/* font families */
|
54
|
+
--sans-serif: system-ui, Helvetica, "Helvetica Neue", "Avenir Next",
|
55
|
+
Avenir, "Nimbus Sans L", Roboto, Noto, "Segoe UI",
|
56
|
+
Arial, sans-serif;
|
57
|
+
--serif: "Times New Roman", "Times", serif;
|
58
|
+
--monospace: Consolas, Menlo, Monaco, "Andale Mono", "Ubuntu Mono",
|
59
|
+
monospace;
|
60
|
+
|
61
|
+
/* font sizes - rem-based to be responsive but disregard nesting; em/rem-based
|
62
|
+
fonts scale with the user's zoom level, unlike px-based values*/
|
63
|
+
--tiny: 0.75rem;
|
64
|
+
--small: 0.875rem;
|
65
|
+
--medium: 1rem;
|
66
|
+
--large: 1.2rem;
|
67
|
+
--huge: 1.5rem;
|
68
|
+
/* #em - contextually relative font sizes */
|
69
|
+
--smallest: 0.5em;
|
70
|
+
--smaller: 0.75em;
|
71
|
+
--initial: 1em;
|
72
|
+
--larger: 1.25em;
|
73
|
+
--largest: 1.5em;
|
74
|
+
|
75
|
+
/* font weights - the scale can be adjusted up and down as desired */
|
76
|
+
--lightest: 100;
|
77
|
+
--lighter: 200;
|
78
|
+
--light: 300;
|
79
|
+
--regular: 400;
|
80
|
+
--bold: 500;
|
81
|
+
--bolder: 600;
|
82
|
+
--boldest: 700;
|
83
|
+
|
84
|
+
/* Line heights - unitless distance between lines of text */
|
85
|
+
--normal: 1.45; /* 1.2 is the typical browser default */
|
86
|
+
--compact: 1.2;
|
87
|
+
--relaxed: 1.8;
|
88
|
+
|
89
|
+
|
90
|
+
/* ---------------------------------------------------------------------------
|
91
|
+
// #spacing #sizing #positioning - margin/padding scales, custom spaces/sizes
|
92
|
+
// ------------------------------------------------------------------------ */
|
93
|
+
|
94
|
+
/* space scale - rem-based to be relative to html root, not element, font size
|
95
|
+
these oft-used variables employ t-shirt sizing for the shortest names */
|
96
|
+
--xxs: 0.125rem;
|
97
|
+
--xs: 0.25rem;
|
98
|
+
--s: 0.5rem;
|
99
|
+
--ms: 0.75rem;
|
100
|
+
--m: 1rem;
|
101
|
+
--ml: 1.5rem;
|
102
|
+
--l: 2rem;
|
103
|
+
--xl: 4rem;
|
104
|
+
--xxl: 8rem;
|
105
|
+
|
106
|
+
/* contextual spacing - mainly for headers & icons among surrounding content*/
|
107
|
+
/*--margin: var(--ml) 0 var(--m);*/ /* rem-based */
|
108
|
+
--margin: var(--initial) 0 var(--smallest); /* em-based */
|
109
|
+
--inline-padding: 0 var(--ms) var(--xxs) var(--ms);
|
110
|
+
--button-padding: var(--s) var(--ms);
|
111
|
+
|
112
|
+
/* background icon sizes - purposefully em-based to fit context */
|
113
|
+
--text-icon: 1em 1em;
|
114
|
+
--field-icon: 1.5em 1.5em;
|
115
|
+
|
116
|
+
/* background positions */
|
117
|
+
--center-left: 0rem 50%;
|
118
|
+
--center-right: 100% 50%;
|
119
|
+
--padded-center-left: 0.5em 50%;
|
120
|
+
--padded-center-right: calc(100% + 0.5em) 50%;
|
121
|
+
|
122
|
+
|
123
|
+
/* ---------------------------------------------------------------------------
|
124
|
+
// #border #shadow -
|
125
|
+
// ------------------------------------------------------------------------ */
|
126
|
+
|
127
|
+
/* line/border thicknesses - px-based since these are screen-oriented */
|
128
|
+
--thinnest: 0.33px;
|
129
|
+
--thinner: 0.5px;
|
130
|
+
--thin: 0.75px;
|
131
|
+
--stroke: 1px;
|
132
|
+
--thick: 2px;
|
133
|
+
--thicker: 3px;
|
134
|
+
--thickest: 5px;
|
135
|
+
|
136
|
+
/* radii */
|
137
|
+
--radius: 4px; /* standard border radius */
|
138
|
+
--circle: 50%; /* border radius to create a circle */
|
139
|
+
|
140
|
+
/* borders - use in conjunction with a border color */
|
141
|
+
--solid: var(--stroke) solid;
|
142
|
+
--fat: var(--thicker) solid;
|
143
|
+
--dashed: var(--stroke) dashed;
|
144
|
+
--dotted: var(--stroke) dotted;
|
145
|
+
|
146
|
+
/* shadows - use in conjunction with a shadow color */
|
147
|
+
--inset: inset 0 0 0 0.185rem;
|
148
|
+
--groove: inset 0 var(--thick) var(--thickest);
|
149
|
+
--shadow: 0 var(--thick) var(--thickest);
|
150
|
+
|
151
|
+
|
152
|
+
/* ---------------------------------------------------------------------------
|
153
|
+
// #duration - for transitions
|
154
|
+
// ------------------------------------------------------------------------ */
|
155
|
+
|
156
|
+
--fastest: 150ms;
|
157
|
+
--fast: 250ms;
|
158
|
+
--transition: 300ms;
|
159
|
+
--slow: 400ms;
|
160
|
+
--slowest: 500ms;
|
161
|
+
|
162
|
+
|
163
|
+
/* ---------------------------------------------------------------------------
|
164
|
+
// #color mappings - maps palette colors to semantic variables
|
165
|
+
// ------------------------------------------------------------------------ */
|
166
|
+
|
167
|
+
/* transparencies - fallback to grayscale if primary is not set */
|
168
|
+
--pale: var(--primary-200, hsl(210, 0%, 45%, 0.2) );
|
169
|
+
--translucent: var(--primary-transparent,hsl(210, 0%, 45%, 0.1));
|
170
|
+
--transparent: hsl(0, 0%, 45%, 0.05);
|
171
|
+
|
172
|
+
/* Absolute text colors - doesn't change with color scheme */
|
173
|
+
--whitish: var(--100, snow);
|
174
|
+
--blackish: var(--900, darkslategrey);
|
175
|
+
|
176
|
+
/* Logical text colors - depends on color-scheme - dark on light is default */
|
177
|
+
--text: var(--700, CanvasText); /* default text color */
|
178
|
+
--heading: var(--primary-700, LinkText); /* heading text */
|
179
|
+
--heading-inverse: var(--primary-bright, dodgerblue);
|
180
|
+
/* semantically relative text colors */
|
181
|
+
--distinct: var(--secondary-700, firebrick);
|
182
|
+
--inverse: var(--100, Canvas); /* for inverted light/dark */
|
183
|
+
--loud: var(--primary-800, --800); /* higher gravity text */
|
184
|
+
--muted: var(--700, GrayText); /* for secondary text */
|
185
|
+
--inactive: var(--500, GrayText); /* for deactivated text */
|
186
|
+
--mark: var(--100, Canvas); /* MarkText is unsupported */
|
187
|
+
|
188
|
+
/* Logical link colors - features our primary color because it's blue */
|
189
|
+
--link: var(--primary, LinkText);
|
190
|
+
--visited: var(--primary-700, VisitedText);
|
191
|
+
--active: var(--primary-500, ActiveText);
|
192
|
+
|
193
|
+
/*Other system text colors - currently unused, but included for completeness*/
|
194
|
+
--field: var(--900, FieldText);
|
195
|
+
--action: var(--100, ButtonText);
|
196
|
+
--highlight: var(--100, HighlightText);
|
197
|
+
/* SelectedItemText is unsupported in safari/chrome, so we don't use it here*/
|
198
|
+
--select: var(--100, Canvas); /* checkbox/select */
|
199
|
+
|
200
|
+
/* Logical foreground color - for featuring key elements like buttons/inputs,
|
201
|
+
closely related to the built-in accent-color. accent-color is currently
|
202
|
+
only used to style range elements. checkboxes, radio buttons, and progress
|
203
|
+
bars are other options stylable by accent-color, but all are restyled. */
|
204
|
+
--foreground: var(--primary, LinkText); /* for primary actions */
|
205
|
+
accent-color: var(--primary); /* has its own default fallback */
|
206
|
+
|
207
|
+
/* Logical selection colors - for selects, checkboxes, and radio buttons.
|
208
|
+
unselected text & background are inherited/default */
|
209
|
+
/* SelectedItem is unsupported in safari/chrome, so we don't use it here */
|
210
|
+
--checked: var(--foreground); /* checked / selected */
|
211
|
+
--unchecked: var(--bg-field); /* to ensure consistency */
|
212
|
+
--deactivated: var(--300, ButtonFace); /* selected but unfocused */
|
213
|
+
--contrast: var(--primary-200, azure); /* slight contrast */
|
214
|
+
|
215
|
+
/* Logical background colors - prefixed with bg- to show strong relationship
|
216
|
+
with corresponding text color (i.e., they're meant to be used together) */
|
217
|
+
--background: Canvas; /* primary background color */
|
218
|
+
--bg-field: Field; /* field background color */
|
219
|
+
--bg-distinct: var(--secondary-100, lavenderblush); /* stand out */
|
220
|
+
--bg-inverse: var(--900, CanvasText); /* for inverted contexts */
|
221
|
+
--bg-highlight: var(--primary-600, Highlight); /* for relating
|
222
|
+
prospective action/relevance - hovering for example */
|
223
|
+
--bg-contrast: var(--200, ButtonFace); /* slight contrast color */
|
224
|
+
--bg-inactive: var(--300, ButtonFace); /* for disabled elements */
|
225
|
+
--bg-mark: var(--primary-bright, LinkText); /* the Mark system
|
226
|
+
color is not supported yet, so use another fallback instead */
|
227
|
+
|
228
|
+
/* Logical border colors */
|
229
|
+
--border: var(--500, GrayText); /* default */
|
230
|
+
--emphasized: var(--600, GrayText); /* darkens to emphasize */
|
231
|
+
--deemphasized: var(--300, ButtonFace); /* lightens to deemphasize */
|
232
|
+
--highlighted: var(--primary, LinkText); /* make it stand out */
|
233
|
+
--marked: var(--primary-bright, LinkText); /* no Mark */
|
234
|
+
--distinguished: var(--secondary-300, palevioletred); /* stand out */
|
235
|
+
|
236
|
+
/* default color of icons - change it by redefining this in a given scope */
|
237
|
+
--icon-color: var(--border);
|
238
|
+
--icon-blend-mode: lighten, difference;
|
239
|
+
}
|
240
|
+
|
241
|
+
/* backdrops don't inherit anything, including from :root/html */
|
242
|
+
:root, ::backdrop {
|
243
|
+
--backdrop: hsl(0, 0%, 5%, 50%); /* backdrop color for modals */
|
244
|
+
}
|
245
|
+
|
246
|
+
/* -----------------------------------------------------------------------------
|
247
|
+
// #dark mode - adjustments to the semantic color variables for dark mode
|
248
|
+
// -------------------------------------------------------------------------- */
|
249
|
+
|
250
|
+
@media (prefers-color-scheme: dark) {
|
251
|
+
:root {
|
252
|
+
/* Calculated colors */
|
253
|
+
/* CSS relative colors, once implemented, can be used to generate these */
|
254
|
+
--error-high: hsl(var(--red), 100%, 67%);
|
255
|
+
--error-low: hsl(var(--red), 80%, 60%);
|
256
|
+
/* Logical text colors */
|
257
|
+
--text: var(--100, CanvasText); /* primary text color */
|
258
|
+
--heading: var(--primary-bright, dodgerblue); /* LinkText is too
|
259
|
+
dark on chrome/safari */
|
260
|
+
--distinct: var(--secondary-100, lavenderblush);
|
261
|
+
--inverse: var(--900, Canvas); /* for inverted light/dark */
|
262
|
+
--loud: var(--primary-300, --300); /* higher gravity text */
|
263
|
+
--muted: var(--400, GrayText); /* for secondary text */
|
264
|
+
--inactive: var(--600, ButtonText);
|
265
|
+
--mark: var(--100, CanvasText); /* MarkText is unsupported */
|
266
|
+
/* Logical link colors - features our primary color because it's blue */
|
267
|
+
--link: var(--primary-500, dodgerblue); /* LinkText is too
|
268
|
+
dark on chrome/safari */
|
269
|
+
--visited: var(--primary-600, mediumorchid);
|
270
|
+
--active: var(--primary-400, ActiveText);
|
271
|
+
--action: ButtonText;
|
272
|
+
/* Logical foreground colors */
|
273
|
+
--contrast: var(--primary-900, GrayText); /* for inverted
|
274
|
+
hover/zebra */
|
275
|
+
--deactivated: var(--700); /* disabled, selected checks/radios */
|
276
|
+
/* Logical background colors */
|
277
|
+
--background: Canvas;
|
278
|
+
--bg-distinct: var(--secondary, palevioletred);
|
279
|
+
--bg-inverse: var(--100, CanvasText);
|
280
|
+
--bg-highlight: var(--primary-600, ActiveText);
|
281
|
+
--bg-contrast: var(--900, Field);
|
282
|
+
--bg-inactive: var(--700, GrayText);
|
283
|
+
/* Logical border colors */
|
284
|
+
--emphasized: var(--100); /* lightens to emphasize */
|
285
|
+
--deemphasized: var(--700, ButtonFace); /* darkens to deemphasize */
|
286
|
+
|
287
|
+
--icon-color: var(--500);
|
288
|
+
--icon-blend-mode: darken, normal;
|
289
|
+
}}
|
290
|
+
|
291
|
+
/* Safari has poor support for CSS system colors, so compensate for it for now;
|
292
|
+
Safari TP has experimental support for color-contrast() however */
|
293
|
+
@supports (color: color-contrast(white vs white, black)) {
|
294
|
+
:root {
|
295
|
+
/*--action: var(--100, color-contrast(var(--foreground) vs*/
|
296
|
+
/*Canvas, ButtonText));*/
|
297
|
+
}}
|
298
|
+
@supports (background-color: -apple-system-control-background) {
|
299
|
+
:root {
|
300
|
+
--bg-field: -apple-system-control-background;
|
301
|
+
}}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/******************************************************************************\
|
2
|
+
BASIC - This is a variation of clairity.css that only includes the most basic
|
3
|
+
elemental styles. Use this as a classless base for creating simple,
|
4
|
+
content-oriented, semantic web pages, or as a jumping off point for
|
5
|
+
your own css framework
|
6
|
+
\******************************************************************************/
|
7
|
+
|
8
|
+
|
9
|
+
/* -----------------------------------------------------------------------------
|
10
|
+
// 01 settings - uses only CSS variables and no CSS preprocessor. variables
|
11
|
+
// and the palette can each (or both) be wholesale replaced if desired.
|
12
|
+
// -------------------------------------------------------------------------- */
|
13
|
+
|
14
|
+
/* variables - REQUIRED - core css variables, color mappings, and fallbacks */
|
15
|
+
@import "clairity/variables.css";
|
16
|
+
|
17
|
+
/* palette - if not included, use system colors as defined in variables.css */
|
18
|
+
/*@import "clairity/palette.css";*/
|
19
|
+
|
20
|
+
|
21
|
+
/* -----------------------------------------------------------------------------
|
22
|
+
// 04 elements - base, elemental styling, but no classes or components.
|
23
|
+
//
|
24
|
+
// -------------------------------------------------------------------------- */
|
25
|
+
|
26
|
+
/* base - REQUIRED - styles for all base html elements as well as common
|
27
|
+
pseudo-elements and pseudo-classes */
|
28
|
+
@import "clairity/base.css";
|
@@ -0,0 +1,50 @@
|
|
1
|
+
/******************************************************************************\
|
2
|
+
CLASSLESS - This variation of clairity.css extends clairity.basic.css with
|
3
|
+
cosmetic enhancements, but remains classless, except for a few
|
4
|
+
optional header (functions.css) classes (.h1, .h2, .h3, etc.).
|
5
|
+
\******************************************************************************/
|
6
|
+
|
7
|
+
|
8
|
+
/* -----------------------------------------------------------------------------
|
9
|
+
// 01 settings - uses only CSS variables and no CSS preprocessor. variables
|
10
|
+
// and the palette can each (or both) be wholesale replaced if desired.
|
11
|
+
// -------------------------------------------------------------------------- */
|
12
|
+
|
13
|
+
/* variables - REQUIRED - core css variables, color mappings, and fallbacks */
|
14
|
+
@import "clairity/variables.css";
|
15
|
+
|
16
|
+
/* palette is optional - if not defined, clairity.css will use system colors */
|
17
|
+
@import "clairity/palette.css";
|
18
|
+
|
19
|
+
|
20
|
+
/* -----------------------------------------------------------------------------
|
21
|
+
// 02 tools - for mixins and functions, but not via any CSS preprocessor.
|
22
|
+
// -------------------------------------------------------------------------- */
|
23
|
+
|
24
|
+
/* functions - css variables acting as functions, such as for fluid typography*/
|
25
|
+
@import "clairity/functions.css";
|
26
|
+
|
27
|
+
/* icons - an optional svg icon set */
|
28
|
+
@import "clairity/icons.css";
|
29
|
+
|
30
|
+
|
31
|
+
/* -----------------------------------------------------------------------------
|
32
|
+
// 04 elements - base, elemental styling, but no classes or components.
|
33
|
+
//
|
34
|
+
// -------------------------------------------------------------------------- */
|
35
|
+
|
36
|
+
/* base - REQUIRED - styles for all base html elements as well as common
|
37
|
+
pseudo-elements and pseudo-classes */
|
38
|
+
@import "clairity/base.css";
|
39
|
+
|
40
|
+
/* cosmetic - optional - multi-element cosmetic fixes beyond the scope of base*/
|
41
|
+
@import "clairity/cosmetic.css";
|
42
|
+
|
43
|
+
|
44
|
+
/* -----------------------------------------------------------------------------
|
45
|
+
// 05 objects - pseudo-classes with more personality than the base.
|
46
|
+
//
|
47
|
+
// -------------------------------------------------------------------------- */
|
48
|
+
|
49
|
+
/* states - primarily higher specificity pseudo-classes for the base elements */
|
50
|
+
@import "clairity/states.css";
|
@@ -0,0 +1,109 @@
|
|
1
|
+
/******************************************************************************\
|
2
|
+
IMPORTS - clairity.css is a simple, semantic html-first design
|
3
|
+
system-in-the-making. For modularilty, we loosely follow the ITCSS
|
4
|
+
organizational method. This file imports the various layers of
|
5
|
+
the system as individual files. We don't get dogmatic about this
|
6
|
+
structure however, and eschew rigid naming conventions like BEM or
|
7
|
+
verbose utility-first approaches like Tailwind.
|
8
|
+
|
9
|
+
Note that we're starting with the cutting-edge of CSS features, so
|
10
|
+
we'll support browsers from early 2020 and forward. That means no
|
11
|
+
IE support at all. We'll add *some* graceful degradation for older
|
12
|
+
browsers in legacy.css, and older markup techniques in shims.css.
|
13
|
+
|
14
|
+
variables.css and base.css form the core of clairity.css so are
|
15
|
+
de facto required, otherwise you may as well use another system or
|
16
|
+
build your own. anything else can be removed/replaced as desired.
|
17
|
+
The layers are each meant to progressively enhance anything prior,
|
18
|
+
so feel free to use as much or as little as you'd like. Customize
|
19
|
+
clairity.css by creaing your own css import file (e.g., "style.css")
|
20
|
+
and importing only the css component files you want.
|
21
|
+
\******************************************************************************/
|
22
|
+
|
23
|
+
|
24
|
+
/* -----------------------------------------------------------------------------
|
25
|
+
// 00 css cascade layers - NOTE: firefox 100 dev tools breaks on layers.
|
26
|
+
// -------------------------------------------------------------------------- */
|
27
|
+
|
28
|
+
/*@layer clairity.settings, clairity.tools, clairity.generic, clairity.elements,
|
29
|
+
clairity.objects, clairity.components, clairity.utilities;*/
|
30
|
+
|
31
|
+
|
32
|
+
/* -----------------------------------------------------------------------------
|
33
|
+
// 01 settings - uses only CSS variables, and no CSS preprocessor. variables
|
34
|
+
// and the palette can each (or both) be wholesale replaced if desired.
|
35
|
+
// -------------------------------------------------------------------------- */
|
36
|
+
|
37
|
+
/* variables - REQUIRED - core css variables, color mappings, and fallbacks */
|
38
|
+
@import "clairity/variables.css";/* layer(clairity.settings);*/
|
39
|
+
|
40
|
+
/* palette (optional)- if unavailable, uses system colors defined in variables*/
|
41
|
+
@import "clairity/palette.css";/* layer(clairity.settings);*/
|
42
|
+
|
43
|
+
|
44
|
+
/* -----------------------------------------------------------------------------
|
45
|
+
// 02 tools - for mixins and functions, but not via any CSS preprocessor.
|
46
|
+
// -------------------------------------------------------------------------- */
|
47
|
+
|
48
|
+
/* functions - css variables acting as functions, such as for fluid typography*/
|
49
|
+
@import "clairity/functions.css";/* layer(clairity.tools);*/
|
50
|
+
|
51
|
+
/* icons - an optional svg icon set */
|
52
|
+
@import "clairity/icons.css";/* layer(clairity.tools);*/
|
53
|
+
|
54
|
+
|
55
|
+
/* -----------------------------------------------------------------------------
|
56
|
+
// 03 generic - the normalization/reset layer - a few essential styles from
|
57
|
+
// this layer are integrated into base.css, as noted in that file.
|
58
|
+
// -------------------------------------------------------------------------- */
|
59
|
+
|
60
|
+
/* normalize.css - optional - "a modern alternative to CSS resets" */
|
61
|
+
/*@import "clairity/normalize.css";*//* layer(clairity.generic); */
|
62
|
+
|
63
|
+
|
64
|
+
/* -----------------------------------------------------------------------------
|
65
|
+
// 04 elements - default styling for all the base elements - cosmetic.css adds
|
66
|
+
// a few visual niceties.
|
67
|
+
// -------------------------------------------------------------------------- */
|
68
|
+
|
69
|
+
/* base - styles for all base html elements & common pseudo-elements/-classes */
|
70
|
+
@import "clairity/base.css";/* layer(clairity.elements);*/
|
71
|
+
|
72
|
+
/* cosmetic - optional - multi-element cosmetic fixes beyond the scope of base*/
|
73
|
+
@import "clairity/cosmetic.css";/* layer(clairity.elements);*/
|
74
|
+
|
75
|
+
|
76
|
+
/* -----------------------------------------------------------------------------
|
77
|
+
// 05 objects - classes & pseudo-classes with more personality than the base.
|
78
|
+
// This is where we move beyond the classlessness of the base clairity.css.
|
79
|
+
// -------------------------------------------------------------------------- */
|
80
|
+
|
81
|
+
/* states - primarily higher specificity pseudo-classes for the base elements */
|
82
|
+
@import "clairity/states.css";/* layer(clairity.objects);*/
|
83
|
+
|
84
|
+
/* classes - provide alternate stylings for elements via class declarations */
|
85
|
+
@import "clairity/classes.css";/* layer(clairity.objects);*/
|
86
|
+
|
87
|
+
|
88
|
+
/* -----------------------------------------------------------------------------
|
89
|
+
// 06 components - common design patterns beyond singular states and classes.
|
90
|
+
// These are intentionally contained in a single file rather than split up.
|
91
|
+
// -------------------------------------------------------------------------- */
|
92
|
+
|
93
|
+
/* components - common design patterns like alert boxes and cards. */
|
94
|
+
@import "clairity/components.css";/* layer(clairity.components);*/
|
95
|
+
|
96
|
+
|
97
|
+
/* -----------------------------------------------------------------------------
|
98
|
+
// 07 utilities - sparingly-used but wide-reaching overrides.
|
99
|
+
// -------------------------------------------------------------------------- */
|
100
|
+
|
101
|
+
/* utlities - wide-reaching overrides, like a .visually-hidden class. */
|
102
|
+
@import "clairity/utilities.css";/* layer(clairity.utilities);*/
|
103
|
+
|
104
|
+
/* shims - supports certain common markup patterns that are less semantic.
|
105
|
+
Import these when adding clairity.css to older sites. [OPTIONAL] */
|
106
|
+
/*@import "clairity/shims.css" layer(clairity.utilities);*/
|
107
|
+
|
108
|
+
/* legacy - provides graceful degradation for older browsers. [OPTIONAL] */
|
109
|
+
/*@import "clairity/legacy.css" layer(clairity.utilities);*/
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/clairity.css.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative 'clairity.css/version'
|
3
|
+
# needed for `rake test`, otherwise: uninitialized constant Rails (NameError)
|
4
|
+
require 'rails/engine'
|
5
|
+
|
6
|
+
# this is an asset-only gem to provide the clairity.css framework to parent apps
|
7
|
+
module ClairityCss
|
8
|
+
class Error < StandardError; end
|
9
|
+
class Engine < ::Rails::Engine; end
|
10
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class TestClairityCss < Minitest::Test
|
6
|
+
|
7
|
+
def test_it_has_a_version_number
|
8
|
+
refute_nil ::ClairityCss::VERSION
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_css_assets_are_available
|
12
|
+
# TODO: create a dummy rails app that includes the clairity.css gem to make
|
13
|
+
# sure assets are accessible to the (dummy) rails app
|
14
|
+
assert true
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|