unigrid.css 0.3.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.
Files changed (42) hide show
  1. package/README.md +101 -0
  2. package/dist/dropdown.js +36 -0
  3. package/dist/index.js +5 -0
  4. package/dist/scrollspy.js +57 -0
  5. package/dist/tabs.js +30 -0
  6. package/dist/unigrid.css +4501 -0
  7. package/dist/unigrid.js +124 -0
  8. package/dist/unigrid.min.css +1 -0
  9. package/dist/unigrid.min.js +1 -0
  10. package/package.json +41 -0
  11. package/src/js/dropdown.js +49 -0
  12. package/src/js/index.js +19 -0
  13. package/src/js/scrollspy.js +87 -0
  14. package/src/js/tabs.js +58 -0
  15. package/src/scss/_accordion.scss +123 -0
  16. package/src/scss/_broadside.scss +125 -0
  17. package/src/scss/_buttons.scss +241 -0
  18. package/src/scss/_card.scss +168 -0
  19. package/src/scss/_components.scss +140 -0
  20. package/src/scss/_container.scss +54 -0
  21. package/src/scss/_dropdown.scss +178 -0
  22. package/src/scss/_footer.scss +147 -0
  23. package/src/scss/_formats.scss +64 -0
  24. package/src/scss/_forms.scss +192 -0
  25. package/src/scss/_grid.scss +114 -0
  26. package/src/scss/_header.scss +169 -0
  27. package/src/scss/_hero.scss +262 -0
  28. package/src/scss/_mixins.scss +120 -0
  29. package/src/scss/_modules.scss +238 -0
  30. package/src/scss/_navbar.scss +341 -0
  31. package/src/scss/_pagination.scss +160 -0
  32. package/src/scss/_prose.scss +393 -0
  33. package/src/scss/_reset.scss +82 -0
  34. package/src/scss/_scrollspy.scss +62 -0
  35. package/src/scss/_section.scss +91 -0
  36. package/src/scss/_sidebar.scss +147 -0
  37. package/src/scss/_table.scss +122 -0
  38. package/src/scss/_tabs.scss +178 -0
  39. package/src/scss/_typography.scss +105 -0
  40. package/src/scss/_utilities.scss +79 -0
  41. package/src/scss/_variables.scss +183 -0
  42. package/src/scss/unigrid.scss +49 -0
@@ -0,0 +1,183 @@
1
+ // ==========================================================================
2
+ // Unigrid CSS Framework — Variables & Configuration
3
+ // Based on Massimo Vignelli's Unigrid system for the National Park Service
4
+ //
5
+ // Override these variables before importing unigrid.scss to customize.
6
+ // ==========================================================================
7
+
8
+ // ---- DIN Proportions ----
9
+ // The key ratio is 1:√2 (≈ 1:1.414). Each time the paper is folded in half,
10
+ // the proportions remain the same.
11
+ $ug-ratio: 1.4142135 !default;
12
+
13
+ // ---- Grid Configuration ----
14
+ $ug-columns: 12 !default;
15
+ $ug-rows: 20 !default;
16
+ $ug-gap: 0.5rem !default; // overridden below after leading is calculated
17
+
18
+ // ---- Panel Unit ----
19
+ // The basic Unigrid "leaf" is 99 × 210 mm. All formats are multiples of this.
20
+ $ug-panel-width: 99mm !default;
21
+ $ug-panel-height: 210mm !default;
22
+
23
+ // ---- Breakpoints ----
24
+ // Based on panel fold widths of the broadside.
25
+ $ug-breakpoints: (
26
+ "sm": 480px,
27
+ "md": 768px,
28
+ "lg": 1024px,
29
+ "xl": 1280px,
30
+ ) !default;
31
+
32
+ // ---- Container ----
33
+ $ug-container-padding: 2rem !default; // ug-space(5)
34
+ $ug-container-max-width: 1280px !default;
35
+
36
+ // ---- NPS Color Palette ----
37
+ $ug-black: #1a1a1a !default;
38
+ $ug-white: #ffffff !default;
39
+ $ug-warm-gray: #f5f2ed !default;
40
+ $ug-dark-gray: #333333 !default;
41
+ $ug-medium-gray: #666666 !default;
42
+ $ug-light-gray: #e8e5e0 !default;
43
+ $ug-red: #c1272d !default;
44
+ $ug-brown: #4a3728 !default;
45
+ $ug-green: #2d5a27 !default;
46
+ $ug-blue: #274a5a !default;
47
+
48
+ $ug-colors: (
49
+ "black": $ug-black,
50
+ "white": $ug-white,
51
+ "warm-gray": $ug-warm-gray,
52
+ "dark-gray": $ug-dark-gray,
53
+ "medium-gray": $ug-medium-gray,
54
+ "light-gray": $ug-light-gray,
55
+ "red": $ug-red,
56
+ "brown": $ug-brown,
57
+ "green": $ug-green,
58
+ "blue": $ug-blue,
59
+ ) !default;
60
+
61
+ // ---- Typography ----
62
+ // The original Unigrid uses Helvetica exclusively.
63
+ // Current NPS standard uses Frutiger and NPS Rawlinson.
64
+ $ug-font-family: Inter, sans-serif !default;
65
+ $ug-font-family-variable: InterVariable, sans-serif !default;
66
+
67
+ $ug-font-sizes: (
68
+ "xs": 0.75rem,
69
+ "sm": 0.875rem,
70
+ "base": 1rem,
71
+ "lg": 1.25rem,
72
+ "xl": 1.5rem,
73
+ "2xl": 2rem,
74
+ "3xl": 3rem,
75
+ ) !default;
76
+
77
+ $ug-font-weights: (
78
+ "thin": 100,
79
+ "extra-light": 200,
80
+ "light": 300,
81
+ "regular": 400,
82
+ "medium": 500,
83
+ "semi-bold": 600,
84
+ "bold": 700,
85
+ "extra-bold": 800,
86
+ "black": 900,
87
+ ) !default;
88
+
89
+ $ug-line-height: 1.5 !default;
90
+ $ug-line-height-tight: 1.2 !default;
91
+
92
+ // ---- Vertical Rhythm (from Gutenberg) ----
93
+ // The leading (line-height in px) is the base unit for all vertical spacing.
94
+ // This creates consistent vertical rhythm across all text elements.
95
+ $ug-base-font-size: 100% !default; // Mobile base (100% = 16px)
96
+ $ug-base-font-size-desktop: 112.5% !default; // Desktop base (112.5% = 18px)
97
+ $ug-base-leading: 1.625 !default; // Mobile line-height multiplier
98
+ $ug-base-leading-desktop: 1.7 !default; // Desktop line-height multiplier
99
+ $ug-prose-max-width: 35rem !default; // Optimal reading measure (~65 chars)
100
+ $ug-paragraph-indent: false !default; // Use indent instead of margin between paragraphs
101
+
102
+ // Calculated values (used by rhythm mixins)
103
+ @use "sass:math" as vars-math;
104
+ $ug-base: 16 * vars-math.div($ug-base-font-size, 100%) !default;
105
+ $ug-base-desktop: 16 * vars-math.div($ug-base-font-size-desktop, 100%) !default;
106
+ $ug-leading: round($ug-base * $ug-base-leading) !default;
107
+ $ug-leading-desktop: round($ug-base-desktop * $ug-base-leading-desktop) !default;
108
+ $ug-leading-rem: vars-math.div($ug-leading, $ug-base) !default;
109
+ $ug-leading-rem-desktop: vars-math.div($ug-leading-desktop, $ug-base-desktop) !default;
110
+
111
+ // Override gap — uses rem for Sass compilation, matches mobile leading.
112
+ // At runtime the grid gap won't auto-adapt to desktop (acceptable trade-off
113
+ // since grid gaps are horizontal and less critical for vertical rhythm).
114
+ $ug-gap: #{$ug-leading-rem}rem;
115
+
116
+ // ---- Modular Scale (from Gutenberg) ----
117
+ // Used for proportional type sizing in prose context.
118
+ $ug-modular-scale: (
119
+ "xxxs": 0.8125,
120
+ "xxs": 0.875,
121
+ "xs": 1,
122
+ "sm": 1.2,
123
+ "md": 1.375,
124
+ "lg": 1.6875,
125
+ "xl": 2.5,
126
+ "xxl": 3.5,
127
+ "xxxl": 4.3,
128
+ ) !default;
129
+
130
+ // ---- Heading Configuration (from Gutenberg) ----
131
+ // Each heading: (font-size in rem, line-height × leading, margin-top × leading, margin-bottom × leading)
132
+ $ug-headings: (
133
+ h1: (2.5, 2, 4, 1),
134
+ h2: (1.6875, 2, 3, 1),
135
+ h3: (1.375, 1, 2, 1),
136
+ h4: (1.2, 1, 2, 1),
137
+ h5: (1, 1, 2, 1),
138
+ h6: (1, 1, 2, 1),
139
+ ) !default;
140
+
141
+ // ---- Prose Colors ----
142
+ $ug-color-font-body: $ug-black !default;
143
+ $ug-color-font-light: #888 !default;
144
+ $ug-color-font-figcaption: $ug-medium-gray !default;
145
+ $ug-color-link: $ug-black !default;
146
+ $ug-color-link-hover: $ug-black !default;
147
+ $ug-color-link-visited: $ug-medium-gray !default;
148
+
149
+ // ---- Spacing Scale ----
150
+ // Based on leading multiples for vertical rhythm consistency.
151
+ // 1 leading = $ug-leading-rem (≈ 1.625rem mobile).
152
+ $ug-spaces: (
153
+ 0: 0,
154
+ 1: #{$ug-leading-rem * 0.25}rem, // ~0.41rem
155
+ 2: #{$ug-leading-rem * 0.5}rem, // ~0.81rem
156
+ 3: #{$ug-leading-rem}rem, // ~1.63rem = 1 leading
157
+ 4: #{$ug-leading-rem * 1.5}rem, // ~2.44rem
158
+ 5: #{$ug-leading-rem * 2}rem, // ~3.25rem = 2 leading
159
+ 6: #{$ug-leading-rem * 3}rem, // ~4.88rem = 3 leading
160
+ 7: #{$ug-leading-rem * 4}rem, // ~6.50rem = 4 leading
161
+ 8: #{$ug-leading-rem * 6}rem, // ~9.75rem = 6 leading
162
+ ) !default;
163
+
164
+ // ---- Format Definitions ----
165
+ // Real Unigrid specs: A-series = 1 panel wide, B-series = 2 panels wide.
166
+ // Format number = panels long. A5/B5 are intentionally skipped.
167
+ // Panel unit: 99 × 210 mm. Folded size always 99 × 210 mm.
168
+ $ug-formats: (
169
+ "a1": (panels-wide: 1, panels-long: 1),
170
+ "a2": (panels-wide: 1, panels-long: 2),
171
+ "a3": (panels-wide: 1, panels-long: 3),
172
+ "a4": (panels-wide: 1, panels-long: 4),
173
+ "a6": (panels-wide: 1, panels-long: 6),
174
+ "b1": (panels-wide: 2, panels-long: 1),
175
+ "b2": (panels-wide: 2, panels-long: 2),
176
+ "b3": (panels-wide: 2, panels-long: 3),
177
+ "b4": (panels-wide: 2, panels-long: 4),
178
+ "b6": (panels-wide: 2, panels-long: 6),
179
+ ) !default;
180
+
181
+
182
+ // ---- z-Index Definitions ----
183
+ $ug-navbar-toggle-z-index: 1000;
@@ -0,0 +1,49 @@
1
+ // ==========================================================================
2
+ // Unigrid CSS Framework v0.3.0
3
+ // A CSS grid framework inspired by Massimo Vignelli's Unigrid system
4
+ // for the National Park Service.
5
+ //
6
+ // Uses the Sass module system (@use/@forward) — no deprecated @import.
7
+ //
8
+ // Usage:
9
+ // @use "unigrid";
10
+ //
11
+ // With custom overrides:
12
+ // @use "unigrid" with (
13
+ // $ug-black: #222,
14
+ // $ug-font-family: "Frutiger", sans-serif
15
+ // );
16
+ //
17
+ // https://github.com/tdascoli/unigrid.css
18
+ // ==========================================================================
19
+
20
+ @forward "variables";
21
+ @forward "mixins";
22
+
23
+ @use "variables" as *;
24
+ @use "mixins" as *;
25
+ @use "reset";
26
+ @use "container";
27
+ @use "grid";
28
+ @use "formats";
29
+ @use "broadside";
30
+ @use "header";
31
+ @use "navbar";
32
+ @use "footer";
33
+ @use "hero";
34
+ @use "section";
35
+ @use "typography";
36
+ @use "prose";
37
+ @use "buttons";
38
+ @use "dropdown";
39
+ @use "tabs";
40
+ @use "accordion";
41
+ @use "pagination";
42
+ @use "scrollspy";
43
+ @use "table";
44
+ @use "card";
45
+ @use "sidebar";
46
+ @use "forms";
47
+ @use "components";
48
+ @use "modules";
49
+ @use "utilities";