@libretexts/davis-core 1.1.0 → 1.2.1

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/dist/base.css CHANGED
@@ -4,12 +4,12 @@
4
4
  * AUTO-GENERATED from tokens.ts — DO NOT EDIT MANUALLY
5
5
  * Run 'npm run generate:configs' to regenerate
6
6
  *
7
- * Framework-agnostic base CSS imported by consuming packages.
7
+ * Framework-agnostic base CSS for consuming packages.
8
8
  * Contains CSS custom properties, typography defaults, heading hierarchy,
9
9
  * and focus-visible patterns.
10
10
  *
11
- * Does NOT include @tailwind directives each consuming package adds those
12
- * to its own stylesheet.
11
+ * Scope: global (affects entire page via :root).
12
+ * For scoped/embedded usage, import base.scoped.css instead.
13
13
  */
14
14
 
15
15
  @layer base {
@@ -18,9 +18,9 @@
18
18
  :root {
19
19
  /* Colors */
20
20
  --davis-color-primary: #127BC4;
21
- --davis-color-secondary: #0D8483;
22
- --davis-color-tertiary: #5F65F5;
23
- --davis-color-success: #338650;
21
+ --davis-color-secondary: #0F67A6;
22
+ --davis-color-tertiary: #4076a4;
23
+ --davis-color-success: #207537;
24
24
  --davis-color-warning: #BB5C21;
25
25
  --davis-color-danger: #DC3838;
26
26
  --davis-color-neutral: #18181B;
@@ -52,6 +52,66 @@
52
52
  /* Target Size (WCAG 2.2) */
53
53
  --davis-target-size-minimum: 24px;
54
54
  --davis-target-size-comfortable: 44px;
55
+
56
+ /* Z-Index */
57
+ --davis-z-dropdown: 1000;
58
+ --davis-z-sticky: 1100;
59
+ --davis-z-fixed: 1200;
60
+ --davis-z-modalBackdrop: 1300;
61
+ --davis-z-modal: 1400;
62
+ --davis-z-popover: 1500;
63
+ --davis-z-toast: 1600;
64
+ --davis-z-tooltip: 1700;
65
+
66
+ /* Opacity */
67
+ --davis-opacity-disabled: 0.5;
68
+ --davis-opacity-placeholder: 0.6;
69
+ --davis-opacity-overlay: 0.5;
70
+ --davis-opacity-hoverLight: 0.04;
71
+ --davis-opacity-hoverMedium: 0.08;
72
+
73
+ /* Border Width */
74
+ --davis-border-width-none: 0px;
75
+ --davis-border-width-thin: 1px;
76
+ --davis-border-width-medium: 2px;
77
+ --davis-border-width-thick: 3px;
78
+
79
+ /* Font Weight */
80
+ --davis-font-weight-light: 300;
81
+ --davis-font-weight-regular: 400;
82
+ --davis-font-weight-medium: 500;
83
+ --davis-font-weight-semibold: 600;
84
+ --davis-font-weight-bold: 700;
85
+
86
+ /* Letter Spacing */
87
+ --davis-letter-spacing-tighter: -0.05em;
88
+ --davis-letter-spacing-tight: -0.025em;
89
+ --davis-letter-spacing-normal: 0em;
90
+ --davis-letter-spacing-wide: 0.025em;
91
+ --davis-letter-spacing-wider: 0.05em;
92
+ --davis-letter-spacing-widest: 0.1em;
93
+
94
+ /* Breakpoints */
95
+ --davis-breakpoint-sm: 640px;
96
+ --davis-breakpoint-md: 768px;
97
+ --davis-breakpoint-lg: 1024px;
98
+ --davis-breakpoint-xl: 1280px;
99
+ --davis-breakpoint-2xl: 1536px;
100
+
101
+ /* Icon Size */
102
+ --davis-icon-size-xs: 0.75rem;
103
+ --davis-icon-size-sm: 1rem;
104
+ --davis-icon-size-md: 1.25rem;
105
+ --davis-icon-size-lg: 1.5rem;
106
+ --davis-icon-size-xl: 2rem;
107
+
108
+ /* Container / Content Width */
109
+ --davis-container-sm: 640px;
110
+ --davis-container-md: 768px;
111
+ --davis-container-lg: 1024px;
112
+ --davis-container-xl: 1280px;
113
+ --davis-container-2xl: 1536px;
114
+ --davis-container-prose: 65ch;
55
115
  }
56
116
 
57
117
  /* ─── Typography Defaults ───────────────────────────────────── */
@@ -115,8 +175,6 @@
115
175
  }
116
176
 
117
177
  /* ─── Reduced Motion ──────────────────────────────────────── */
118
- /* Disables transitions and animations for users who prefer */
119
- /* reduced motion. Respects prefers-reduced-motion: reduce. */
120
178
 
121
179
  @media (prefers-reduced-motion: reduce) {
122
180
  *,
@@ -4,10 +4,10 @@
4
4
  * AUTO-GENERATED from tokens.ts — DO NOT EDIT MANUALLY
5
5
  * Run 'npm run generate:configs' to regenerate
6
6
  *
7
- * Standalone variant of base.css where every rule is scoped under `.davis`.
8
- * This prevents style leakage into host applications.
7
+ * Variant of base.css where every rule is scoped under `.davis`.
8
+ * Prevents style leakage when Davis components are embedded in host applications.
9
9
  *
10
- * Used by the standalone CSS bundle the full-integration base.css is unchanged.
10
+ * Wrap Davis components in a `.davis` container to activate these styles.
11
11
  */
12
12
 
13
13
  /* ─── CSS Custom Properties (scoped to .davis) ───────────────── */
@@ -15,9 +15,9 @@
15
15
  .davis {
16
16
  /* Colors */
17
17
  --davis-color-primary: #127BC4;
18
- --davis-color-secondary: #0D8483;
19
- --davis-color-tertiary: #5F65F5;
20
- --davis-color-success: #338650;
18
+ --davis-color-secondary: #0F67A6;
19
+ --davis-color-tertiary: #4076a4;
20
+ --davis-color-success: #207537;
21
21
  --davis-color-warning: #BB5C21;
22
22
  --davis-color-danger: #DC3838;
23
23
  --davis-color-neutral: #18181B;
@@ -49,12 +49,71 @@
49
49
  /* Target Size (WCAG 2.2) */
50
50
  --davis-target-size-minimum: 24px;
51
51
  --davis-target-size-comfortable: 44px;
52
+
53
+ /* Z-Index */
54
+ --davis-z-dropdown: 1000;
55
+ --davis-z-sticky: 1100;
56
+ --davis-z-fixed: 1200;
57
+ --davis-z-modalBackdrop: 1300;
58
+ --davis-z-modal: 1400;
59
+ --davis-z-popover: 1500;
60
+ --davis-z-toast: 1600;
61
+ --davis-z-tooltip: 1700;
62
+
63
+ /* Opacity */
64
+ --davis-opacity-disabled: 0.5;
65
+ --davis-opacity-placeholder: 0.6;
66
+ --davis-opacity-overlay: 0.5;
67
+ --davis-opacity-hoverLight: 0.04;
68
+ --davis-opacity-hoverMedium: 0.08;
69
+
70
+ /* Border Width */
71
+ --davis-border-width-none: 0px;
72
+ --davis-border-width-thin: 1px;
73
+ --davis-border-width-medium: 2px;
74
+ --davis-border-width-thick: 3px;
75
+
76
+ /* Font Weight */
77
+ --davis-font-weight-light: 300;
78
+ --davis-font-weight-regular: 400;
79
+ --davis-font-weight-medium: 500;
80
+ --davis-font-weight-semibold: 600;
81
+ --davis-font-weight-bold: 700;
82
+
83
+ /* Letter Spacing */
84
+ --davis-letter-spacing-tighter: -0.05em;
85
+ --davis-letter-spacing-tight: -0.025em;
86
+ --davis-letter-spacing-normal: 0em;
87
+ --davis-letter-spacing-wide: 0.025em;
88
+ --davis-letter-spacing-wider: 0.05em;
89
+ --davis-letter-spacing-widest: 0.1em;
90
+
91
+ /* Breakpoints */
92
+ --davis-breakpoint-sm: 640px;
93
+ --davis-breakpoint-md: 768px;
94
+ --davis-breakpoint-lg: 1024px;
95
+ --davis-breakpoint-xl: 1280px;
96
+ --davis-breakpoint-2xl: 1536px;
97
+
98
+ /* Icon Size */
99
+ --davis-icon-size-xs: 0.75rem;
100
+ --davis-icon-size-sm: 1rem;
101
+ --davis-icon-size-md: 1.25rem;
102
+ --davis-icon-size-lg: 1.5rem;
103
+ --davis-icon-size-xl: 2rem;
104
+
105
+ /* Container / Content Width */
106
+ --davis-container-sm: 640px;
107
+ --davis-container-md: 768px;
108
+ --davis-container-lg: 1024px;
109
+ --davis-container-xl: 1280px;
110
+ --davis-container-2xl: 1536px;
111
+ --davis-container-prose: 65ch;
52
112
  }
53
113
 
54
114
  /* ─── Scoped Preflight replacements ──────────────────────────── */
55
- /* These --tw-* variables are normally set by Tailwind's Preflight on *.
56
- Since we disable Preflight in standalone mode, we initialize them here
57
- so ring, shadow, transform, and filter utilities work correctly. */
115
+ /* Initialize box model and Tailwind internals within .davis so */
116
+ /* utility classes work correctly without the global Preflight. */
58
117
 
59
118
  .davis *,
60
119
  .davis *::before,
@@ -65,62 +124,6 @@
65
124
  border-color: currentColor;
66
125
  }
67
126
 
68
- .davis *,
69
- .davis ::before,
70
- .davis ::after {
71
- --tw-border-spacing-x: 0;
72
- --tw-border-spacing-y: 0;
73
- --tw-translate-x: 0;
74
- --tw-translate-y: 0;
75
- --tw-rotate: 0;
76
- --tw-skew-x: 0;
77
- --tw-skew-y: 0;
78
- --tw-scale-x: 1;
79
- --tw-scale-y: 1;
80
- --tw-pan-x: ;
81
- --tw-pan-y: ;
82
- --tw-pinch-zoom: ;
83
- --tw-scroll-snap-strictness: proximity;
84
- --tw-gradient-from-position: ;
85
- --tw-gradient-via-position: ;
86
- --tw-gradient-to-position: ;
87
- --tw-ordinal: ;
88
- --tw-slashed-zero: ;
89
- --tw-numeric-figure: ;
90
- --tw-numeric-spacing: ;
91
- --tw-numeric-fraction: ;
92
- --tw-ring-inset: ;
93
- --tw-ring-offset-width: 0px;
94
- --tw-ring-offset-color: #fff;
95
- --tw-ring-color: rgb(59 130 246 / 0.5);
96
- --tw-ring-offset-shadow: 0 0 #0000;
97
- --tw-ring-shadow: 0 0 #0000;
98
- --tw-shadow: 0 0 #0000;
99
- --tw-shadow-colored: 0 0 #0000;
100
- --tw-blur: ;
101
- --tw-brightness: ;
102
- --tw-contrast: ;
103
- --tw-grayscale: ;
104
- --tw-hue-rotate: ;
105
- --tw-invert: ;
106
- --tw-saturate: ;
107
- --tw-sepia: ;
108
- --tw-drop-shadow: ;
109
- --tw-backdrop-blur: ;
110
- --tw-backdrop-brightness: ;
111
- --tw-backdrop-contrast: ;
112
- --tw-backdrop-grayscale: ;
113
- --tw-backdrop-hue-rotate: ;
114
- --tw-backdrop-invert: ;
115
- --tw-backdrop-opacity: ;
116
- --tw-backdrop-saturate: ;
117
- --tw-backdrop-sepia: ;
118
- --tw-contain-size: ;
119
- --tw-contain-layout: ;
120
- --tw-contain-paint: ;
121
- --tw-contain-style: ;
122
- }
123
-
124
127
  /* ─── Typography Defaults (scoped) ───────────────────────────── */
125
128
 
126
129
  .davis {
@@ -181,7 +184,7 @@
181
184
  outline: none;
182
185
  }
183
186
 
184
- /* ─── Reduced Motion (scoped) ────────────────────────────── */
187
+ /* ─── Reduced Motion (scoped) ────────────────────────────────── */
185
188
 
186
189
  @media (prefers-reduced-motion: reduce) {
187
190
  .davis *,
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Davis Design System — Tailwind CSS v4 Base Styles
3
+ *
4
+ * AUTO-GENERATED from tokens.ts — DO NOT EDIT MANUALLY
5
+ * Run 'npm run generate:configs' to regenerate
6
+ *
7
+ * Base styles for Tailwind CSS v4 (no @layer wrapper).
8
+ * Contains typography defaults, heading hierarchy, focus management,
9
+ * and reduced motion support.
10
+ *
11
+ * Usage (after @import "tailwindcss"):
12
+ * @import "@libretexts/davis-core/theme.css";
13
+ * @import "@libretexts/davis-core/base.v4.css";
14
+ */
15
+
16
+ /* ─── Typography Defaults ───────────────────────────────── */
17
+
18
+ html {
19
+ font-family: 'Atkinson Hyperlegible', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
20
+ font-size: 16px;
21
+ -webkit-font-smoothing: antialiased;
22
+ -moz-osx-font-smoothing: grayscale;
23
+ }
24
+
25
+ /* ─── Heading Hierarchy (Major Third Scale) ─────────────────── */
26
+
27
+ h1 {
28
+ font-size: 3.052rem;
29
+ line-height: 3.25rem;
30
+ font-weight: 700;
31
+ letter-spacing: -0.025em;
32
+ }
33
+
34
+ h2 {
35
+ font-size: 2.441rem;
36
+ line-height: 2.75rem;
37
+ font-weight: 700;
38
+ letter-spacing: -0.02em;
39
+ }
40
+
41
+ h3 {
42
+ font-size: 1.953rem;
43
+ line-height: 2.25rem;
44
+ font-weight: 600;
45
+ }
46
+
47
+ h4 {
48
+ font-size: 1.563rem;
49
+ line-height: 2rem;
50
+ font-weight: 600;
51
+ }
52
+
53
+ h5 {
54
+ font-size: 1.250rem;
55
+ line-height: 1.75rem;
56
+ font-weight: 600;
57
+ }
58
+
59
+ h6 {
60
+ font-size: 1.250rem;
61
+ line-height: 1.75rem;
62
+ font-weight: 600;
63
+ }
64
+
65
+ /* ─── Focus Management ──────────────────────────────────────── */
66
+
67
+ *:focus-visible {
68
+ outline: 2px solid #127BC4;
69
+ outline-offset: 2px;
70
+ }
71
+
72
+ *:focus:not(:focus-visible) {
73
+ outline: none;
74
+ }
75
+
76
+ /* ─── Reduced Motion ──────────────────────────────────────────── */
77
+ /* Disables transitions and animations for users who prefer */
78
+ /* reduced motion. Respects prefers-reduced-motion: reduce. */
79
+
80
+ @media (prefers-reduced-motion: reduce) {
81
+ *,
82
+ *::before,
83
+ *::after {
84
+ animation-duration: 0.01ms !important;
85
+ animation-iteration-count: 1 !important;
86
+ transition-duration: 0.01ms !important;
87
+ scroll-behavior: auto !important;
88
+ }
89
+ }
package/dist/theme.css CHANGED
@@ -41,60 +41,60 @@
41
41
  /* ─── Colors ──────────────────────────────────────────────── */
42
42
 
43
43
  /* Primary */
44
- --color-primary-50: #EFF6FC;
45
- --color-primary-100: #DCEEF9;
46
- --color-primary-200: #B3D9F2;
47
- --color-primary-300: #80BDE8;
48
- --color-primary-400: #4A9ED9;
44
+ --color-primary-50: #ebf0f4;
45
+ --color-primary-100: #dbe7f0;
46
+ --color-primary-200: #bcd8eb;
47
+ --color-primary-300: #8dc2e7;
48
+ --color-primary-400: #4ca6e6;
49
49
  --color-primary-500: #127BC4;
50
- --color-primary-600: #0F6FA2;
51
- --color-primary-700: #0B4A76;
52
- --color-primary-800: #0A3D62;
53
- --color-primary-900: #083350;
54
- --color-primary-950: #052135;
50
+ --color-primary-600: #106098;
51
+ --color-primary-700: #0f4b75;
52
+ --color-primary-800: #0d334e;
53
+ --color-primary-900: #0c2231;
54
+ --color-primary-950: #0b1923;
55
55
  --color-primary: #127BC4;
56
56
 
57
57
  /* Secondary */
58
- --color-secondary-50: #F0FDFC;
59
- --color-secondary-100: #CCFBF6;
60
- --color-secondary-200: #9AF5ED;
61
- --color-secondary-300: #5FE8DD;
62
- --color-secondary-400: #2ECFCA;
63
- --color-secondary-500: #0D8483;
64
- --color-secondary-600: #0A6C6B;
65
- --color-secondary-700: #0B5756;
66
- --color-secondary-800: #0D4545;
67
- --color-secondary-900: #103939;
68
- --color-secondary-950: #052222;
69
- --color-secondary: #0D8483;
58
+ --color-secondary-50: #e8eef2;
59
+ --color-secondary-100: #dbe7f0;
60
+ --color-secondary-200: #b4d3e9;
61
+ --color-secondary-300: #81bbe4;
62
+ --color-secondary-400: #369be2;
63
+ --color-secondary-500: #0F67A6;
64
+ --color-secondary-600: #0e5181;
65
+ --color-secondary-700: #0d3f63;
66
+ --color-secondary-800: #0c2e46;
67
+ --color-secondary-900: #0b1f2d;
68
+ --color-secondary-950: #0a161f;
69
+ --color-secondary: #0F67A6;
70
70
 
71
71
  /* Tertiary */
72
- --color-tertiary-50: #EDEDFE;
73
- --color-tertiary-100: #E0E1FD;
74
- --color-tertiary-200: #C6C8FB;
75
- --color-tertiary-300: #A5A8F8;
76
- --color-tertiary-400: #8287F7;
77
- --color-tertiary-500: #5F65F5;
78
- --color-tertiary-600: #4A4FDB;
79
- --color-tertiary-700: #3B3FB8;
80
- --color-tertiary-800: #323695;
81
- --color-tertiary-900: #2C2F7A;
82
- --color-tertiary-950: #1B1D4D;
83
- --color-tertiary: #5F65F5;
72
+ --color-tertiary-50: #edf0f2;
73
+ --color-tertiary-100: #e3e8ed;
74
+ --color-tertiary-200: #c7d4e0;
75
+ --color-tertiary-300: #a6bed3;
76
+ --color-tertiary-400: #77a1c5;
77
+ --color-tertiary-500: #4076a4;
78
+ --color-tertiary-600: #335c80;
79
+ --color-tertiary-700: #294761;
80
+ --color-tertiary-800: #1f3242;
81
+ --color-tertiary-900: #16222c;
82
+ --color-tertiary-950: #11171d;
83
+ --color-tertiary: #4076a4;
84
84
 
85
85
  /* Success */
86
- --color-success-50: #EEFBF3;
87
- --color-success-100: #D6F5E2;
88
- --color-success-200: #B0EBC8;
89
- --color-success-300: #7CD9A5;
90
- --color-success-400: #4DC37E;
91
- --color-success-500: #338650;
92
- --color-success-600: #2A7043;
93
- --color-success-700: #235A37;
94
- --color-success-800: #1F482E;
95
- --color-success-900: #1A3B27;
96
- --color-success-950: #0D2116;
97
- --color-success: #338650;
86
+ --color-success-50: #eaf1eb;
87
+ --color-success-100: #dbebdf;
88
+ --color-success-200: #b6ddc0;
89
+ --color-success-300: #86d09a;
90
+ --color-success-400: #42c264;
91
+ --color-success-500: #207537;
92
+ --color-success-600: #1a5b2b;
93
+ --color-success-700: #164623;
94
+ --color-success-800: #13351c;
95
+ --color-success-900: #0f2415;
96
+ --color-success-950: #0c180f;
97
+ --color-success: #207537;
98
98
 
99
99
  /* Warning */
100
100
  --color-warning-50: #FFF7ED;
@@ -138,6 +138,11 @@
138
138
  --color-neutral-950: #09090B;
139
139
  --color-neutral: #71717A;
140
140
 
141
+ /* Text */
142
+ --color-text-neutral: #71717A;
143
+ --color-text-white: #FFFFFF;
144
+ --color-text: #162032;
145
+
141
146
  /* Surface */
142
147
  --color-surface: #FFFFFF;
143
148
  --color-surface-muted: #F9FAFB;
@@ -181,4 +186,72 @@
181
186
 
182
187
  --davis-target-size-minimum: 24px;
183
188
  --davis-target-size-comfortable: 44px;
189
+
190
+ /* ─── Z-Index ──────────────────────────────────────────────── */
191
+
192
+ --z-index-dropdown: 1000;
193
+ --z-index-sticky: 1100;
194
+ --z-index-fixed: 1200;
195
+ --z-index-modalBackdrop: 1300;
196
+ --z-index-modal: 1400;
197
+ --z-index-popover: 1500;
198
+ --z-index-toast: 1600;
199
+ --z-index-tooltip: 1700;
200
+
201
+ /* ─── Opacity ──────────────────────────────────────────────── */
202
+
203
+ --opacity-disabled: 0.5;
204
+ --opacity-placeholder: 0.6;
205
+ --opacity-overlay: 0.5;
206
+ --opacity-hoverLight: 0.04;
207
+ --opacity-hoverMedium: 0.08;
208
+
209
+ /* ─── Border Width ─────────────────────────────────────────── */
210
+
211
+ --border-width-none: 0px;
212
+ --border-width-thin: 1px;
213
+ --border-width-medium: 2px;
214
+ --border-width-thick: 3px;
215
+
216
+ /* ─── Font Weight ──────────────────────────────────────────── */
217
+
218
+ --font-weight-light: 300;
219
+ --font-weight-regular: 400;
220
+ --font-weight-medium: 500;
221
+ --font-weight-semibold: 600;
222
+ --font-weight-bold: 700;
223
+
224
+ /* ─── Letter Spacing ───────────────────────────────────────── */
225
+
226
+ --letter-spacing-tighter: -0.05em;
227
+ --letter-spacing-tight: -0.025em;
228
+ --letter-spacing-normal: 0em;
229
+ --letter-spacing-wide: 0.025em;
230
+ --letter-spacing-wider: 0.05em;
231
+ --letter-spacing-widest: 0.1em;
232
+
233
+ /* ─── Breakpoints ──────────────────────────────────────────── */
234
+
235
+ --breakpoint-sm: 640px;
236
+ --breakpoint-md: 768px;
237
+ --breakpoint-lg: 1024px;
238
+ --breakpoint-xl: 1280px;
239
+ --breakpoint-2xl: 1536px;
240
+
241
+ /* ─── Icon Size ────────────────────────────────────────────── */
242
+
243
+ --icon-size-xs: 0.75rem;
244
+ --icon-size-sm: 1rem;
245
+ --icon-size-md: 1.25rem;
246
+ --icon-size-lg: 1.5rem;
247
+ --icon-size-xl: 2rem;
248
+
249
+ /* ─── Container / Content Width ────────────────────────────── */
250
+
251
+ --container-sm: 640px;
252
+ --container-md: 768px;
253
+ --container-lg: 1024px;
254
+ --container-xl: 1280px;
255
+ --container-2xl: 1536px;
256
+ --container-prose: 65ch;
184
257
  }