boreal-ui 0.0.41 → 0.0.42

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 (2) hide show
  1. package/dist/next/style.css +493 -0
  2. package/package.json +4 -3
@@ -0,0 +1,493 @@
1
+ @charset "UTF-8";
2
+ /**
3
+ * ---------------------------------------------------------------------
4
+ * globals.scss
5
+ * ---------------------------------------------------------------------
6
+ * Global style definitions and base theme setup for Boreal UI.
7
+ * This file is responsible for setting:
8
+ *
9
+ * 1. CSS Variables (`:root`) — Derived from SCSS theme tokens
10
+ * - Automatically syncs SCSS color and font variables to global CSS variables
11
+ * - Enables theming and dynamic runtime overrides
12
+ *
13
+ * 2. Global Element Styles
14
+ * - `body`, headings (`h1–h6`), paragraphs, links, and layout defaults
15
+ * - Applies font, color, spacing, and background rules using theme tokens
16
+ *
17
+ * 3. Scrollbar Styling
18
+ * - Thin scrollbar with custom thumb and track colors
19
+ * - Supports hiding scrollbars with `.hideScrollbar` utility
20
+ *
21
+ * 4. Focus Outlines
22
+ * - Custom `:focus` styles using accessible high-contrast outlines
23
+ *
24
+ * 5. Utility Classes
25
+ * - `.noScroll`: disables scroll overflow
26
+ * - `.errorMessage`: standardized error message styling
27
+ * - `.loadingContainer`: centered layout for loading views
28
+ * - `.sr_only` and `:global(.sr_only)`: accessibility class for screen-reader-only content
29
+ *
30
+ * 6. Mixin: `visually-hidden`
31
+ * - Reusable mixin for accessibility-hidden content
32
+ * - Applied via `.sr_only` and `:global(.sr_only)`
33
+ *
34
+ * Dependencies:
35
+ * - Resets: `modern-css-reset`
36
+ * - SCSS Modules: `theme`, `animations`, `breakpoints`
37
+ * - Sass Color Utilities: `sass:color`
38
+ *
39
+ * Note:
40
+ * All transitions use the theme-defined `$transition-default` for consistency.
41
+ * CSS variables allow dynamic switching between light/dark/custom themes.
42
+ */
43
+ @import "modern-css-reset/modern-css-reset.css";
44
+ /**
45
+ * ---------------------------------------------------------------------
46
+ * theme.scss
47
+ * ---------------------------------------------------------------------
48
+ * Global design tokens and theme configuration for the Boreal UI system.
49
+ * This file defines SCSS variables, maps, and constants for:
50
+ * - Colors (brand, background, feedback, text)
51
+ * - Fonts (families, sizes, weights)
52
+ * - Spacing
53
+ * - Border radii
54
+ * - Shadows
55
+ * - Transitions
56
+ * - Z-index layers
57
+ * - Thematic color maps
58
+ * - UI states (success, error, warning)
59
+ * - Rounding and shadow presets
60
+ *
61
+ * All variables support the `!default` flag to allow overrides via user-defined themes.
62
+ * ---------------------------------------------------------------------
63
+ *
64
+ * == Color Palette ==
65
+ * $primary-color – Brand primary color
66
+ * $secondary-color – Secondary accent color
67
+ * $tertiary-color – Alternate accent color
68
+ * $quaternary-color – Alternate accent color
69
+ * $background-color – Main background color (dark)
70
+ * $background-color-surface – Surface layer background (cards, modals)
71
+ * $error-color, $success-color, $warning-color – Feedback states
72
+ * $link-color – Link default color
73
+ * $link-hover-color – Link hover state
74
+ * $text-color, $text-color-light, $text-color-primary, $text-color-secondary – Text coloring
75
+ *
76
+ * == Typography ==
77
+ * $font-family-primary / secondary – Primary typefaces
78
+ * $font-size-xxs to $font-size-xxl – Font size scale
79
+ * $font-weight-light to bolder – Font weights
80
+ *
81
+ * == Spacing ==
82
+ * $spacing-xxs to $spacing-xl – Margin/padding utility scale
83
+ *
84
+ * == Border Radius ==
85
+ * $border-radius-xs to full – Border rounding presets
86
+ *
87
+ * == Shadows ==
88
+ * $box-shadow-light to intense – Shadow elevation levels
89
+ * $inverted-shadows – Shadows used on dark surfaces (e.g. modals)
90
+ *
91
+ * == Transitions ==
92
+ * $transition-fast / default / slow – Standard easing transitions
93
+ *
94
+ * == Z-Index Layers ==
95
+ * $z-index-drawer – For slide-out panels
96
+ * $z-index-modal – For modals and overlays
97
+ * $z-index-tooltip – Highest layer for tooltips and floating labels
98
+ *
99
+ * == Theme Map ==
100
+ * $themes: map of theme names (e.g. "primary", "secondary") to their visual styles
101
+ * - Each theme includes: bg, hover, text, border, text-hover
102
+ *
103
+ * == State Map ==
104
+ * $states: visual styles for UI feedback states (success, error, warning)
105
+ *
106
+ * == Rounding / Shadow Maps ==
107
+ * $rounding: key-value pairs for component rounding levels
108
+ * $shadow: key-value pairs for shadow levels
109
+ */
110
+ /**
111
+ * -----------------------------------------------------
112
+ * _animations.scss
113
+ * -----------------------------------------------------
114
+ * This file contains reusable keyframe animations
115
+ * used across the component library for transitions,
116
+ * loaders, and visual enhancements.
117
+ *
118
+ * List of Animations:
119
+ *
120
+ * 1. fade-in
121
+ * - Smoothly fades in an element by transitioning opacity from 0 to 1.
122
+ *
123
+ * 2. slide-up
124
+ * - Slides an element upward into view from below while fading in.
125
+ *
126
+ * 3. spin-3d
127
+ * - Rotates an element in 3D space along both X and Y axes (360°).
128
+ *
129
+ * 4. spin
130
+ * - Continuously rotates an element clockwise in 2D space.
131
+ *
132
+ * 5. pulse
133
+ * - Gently scales an element up and down to create a pulsing effect.
134
+ *
135
+ * 6. fade-in-up
136
+ * - Combines a fade-in with a slight upward motion (used for tooltips, popups).
137
+ *
138
+ * 7. progress-grow
139
+ * - Expands the width of a progress bar from 0% to 100%.
140
+ *
141
+ * 8. indeterminate-move
142
+ * - Moves an element from left to right in a loop, used in indeterminate loaders.
143
+ *
144
+ * 9. skeleton-loading
145
+ * - Creates a sweeping shimmer effect for skeleton loaders.
146
+ */
147
+ @keyframes fade-in {
148
+ from {
149
+ opacity: 0;
150
+ }
151
+ to {
152
+ opacity: 1;
153
+ }
154
+ }
155
+ @keyframes slide-up {
156
+ from {
157
+ transform: translateY(100%);
158
+ opacity: 0;
159
+ }
160
+ to {
161
+ transform: translateY(0);
162
+ opacity: 1;
163
+ }
164
+ }
165
+ @keyframes spin-3d {
166
+ 0% {
167
+ transform: rotateX(0deg) rotateY(0deg);
168
+ }
169
+ 100% {
170
+ transform: rotateX(360deg) rotateY(360deg);
171
+ }
172
+ }
173
+ @keyframes spin {
174
+ 0% {
175
+ transform: rotate(0deg);
176
+ }
177
+ 100% {
178
+ transform: rotate(360deg);
179
+ }
180
+ }
181
+ @keyframes pulse {
182
+ 0% {
183
+ transform: scale(1);
184
+ }
185
+ 50% {
186
+ transform: scale(1.1);
187
+ }
188
+ 100% {
189
+ transform: scale(1);
190
+ }
191
+ }
192
+ @keyframes fade-in-up {
193
+ from {
194
+ opacity: 0;
195
+ transform: translateY(-5px);
196
+ }
197
+ to {
198
+ opacity: 1;
199
+ transform: translateY(0);
200
+ }
201
+ }
202
+ @keyframes progress-grow {
203
+ from {
204
+ width: 0;
205
+ }
206
+ to {
207
+ width: 100%;
208
+ }
209
+ }
210
+ @keyframes indeterminate-move {
211
+ 0% {
212
+ transform: translateX(-100%);
213
+ }
214
+ 50% {
215
+ transform: translateX(0);
216
+ }
217
+ 100% {
218
+ transform: translateX(100%);
219
+ }
220
+ }
221
+ @keyframes skeleton-loading {
222
+ 0% {
223
+ left: -100%;
224
+ }
225
+ 100% {
226
+ left: 100%;
227
+ }
228
+ }
229
+ /**
230
+ * -----------------------------------------------------
231
+ * _breakpoints.scss
232
+ * -----------------------------------------------------
233
+ * These constants define the standard device-width breakpoints
234
+ * used in responsive media queries throughout the theme.
235
+ *
236
+ * - $breakpoint-xs: 320px (Extra small, portrait phones)
237
+ * - $breakpoint-sm: 480px (Small devices, larger phones)
238
+ * - $breakpoint-md: 768px (Medium devices, tablets)
239
+ * - $breakpoint-lg: 1024px (Large devices, desktops)
240
+ * - $breakpoint-xl: 1280px (Extra large desktops)
241
+ * - $breakpoint-xxl: 1536px (Widescreens, large monitors)
242
+ *
243
+ * $breakpoints map:
244
+ * Use this map to loop over breakpoints or access named values.
245
+ */
246
+ :root {
247
+ /* ================================
248
+ PRIMARY COLOR PALETTE
249
+ ================================== */
250
+ --primary-color: #1c4d3a;
251
+ --primary-color-light: rgb(107.6, 201.4, 165.0285714286);
252
+ --primary-color-hover: rgb(14.4, 39.6, 29.8285714286);
253
+ --primary-text-color-contrast: rgb(0, 0, 0);
254
+ /* ================================a
255
+ SECONDARY COLOR PALETTE
256
+ ================================== */
257
+ --secondary-color: #6e502e;
258
+ --secondary-color-light: rgb(210.7692307692, 181.9230769231, 149.2307692308);
259
+ --secondary-color-hover: rgb(74.0384615385, 53.8461538462, 30.9615384615);
260
+ --secondary-text-color: rgb(0, 0, 0);
261
+ /* ================================
262
+ TERTIARY COLOR PALETTE
263
+ ================================== */
264
+ --tertiary-color: #092b1c;
265
+ --tertiary-color-light: rgb(44.9615384615, 211.0384615385, 137.7692307692);
266
+ --tertiary-color-hover: rgb(0.1730769231, 0.8269230769, 0.5384615385);
267
+ --tertiary-text-color: rgb(255, 255, 255);
268
+ /* ================================
269
+ QUATERNARY COLOR PALETTE
270
+ ================================== */
271
+ --quaternary-color: #a1733a;
272
+ --quaternary-color-light: rgb(231.9589041096, 213.6849315068, 191.0410958904);
273
+ --quaternary-color-hover: rgb(123.5068493151, 88.2191780822, 44.4931506849);
274
+ --quaternary-text-color: rgb(255, 255, 255);
275
+ /* ================================
276
+ FEEDBACK COLORS
277
+ ================================== */
278
+ --success-color: #51c703;
279
+ --success-color-hover: rgb(60.5495049505, 148.7574257426, 2.2425742574);
280
+ --warning-color: #fca505;
281
+ --warning-color-hover: rgb(203.557312253, 132.7193675889, 2.442687747);
282
+ --error-color: #f83838;
283
+ --error-color-hover: rgb(244.4029126214, 8.5970873786, 8.5970873786);
284
+ --disabled-color: rgba(184, 184, 184, 0.8666666667);
285
+ /* ================================
286
+ BACKGROUND COLORS
287
+ ================================== */
288
+ --background-color: #222e2e;
289
+ --background-color-light: rgb(55.675, 75.325, 75.325);
290
+ --background-color-lighter: rgb(77.35, 104.65, 104.65);
291
+ --background-color-dark: rgb(12.325, 16.675, 16.675);
292
+ --background-color-darker: hsl(180, 15%, -4.3137254902%);
293
+ /* ================================
294
+ TEXT COLORS
295
+ ================================== */
296
+ --text-color-primary: rgb(255, 255, 255);
297
+ --text-color: rgb(255, 255, 255);
298
+ --text-color-light: hsl(0, 0%, 120%);
299
+ --text-color-lighter: hsl(0, 0%, 140%);
300
+ /* ================================
301
+ LINK COLORS
302
+ ================================== */
303
+ --link-color: #8bb0c7;
304
+ --link-hover-color: #627e8f;
305
+ --link-hover-color-primary: rgb(22.4, 61.6, 46.4);
306
+ --link-hover-color-secondary: rgb(88, 64, 36.8);
307
+ /* ================================
308
+ FOCUS & INTERACTION
309
+ ================================== */
310
+ --focus-outline-color: var(--text-color-primary);
311
+ /* ===========================
312
+ Border Radius (Rounding)
313
+ =========================== */
314
+ --border-radius-none: 0;
315
+ --border-radius-sm: 4px;
316
+ --border-radius-md: 8px;
317
+ --border-radius-lg: 16px;
318
+ --border-radius-full: 9999px;
319
+ /* ===========================
320
+ Shadows
321
+ =========================== */
322
+ --box-shadow-none: none;
323
+ --box-shadow-light: 0 2px 4px rgb(0 0 0 / 10%);
324
+ --box-shadow-medium: 0 4px 8px rgb(0 0 0 / 20%);
325
+ --box-shadow-heavy: 0 6px 12px rgb(0 0 0 / 30%);
326
+ --box-shadow-intense: 0 8px 16px rgb(0 0 0 / 40%);
327
+ /* ===========================
328
+ Inverted Shadows (Light UI)
329
+ =========================== */
330
+ --box-shadow-inverted-none: none;
331
+ --box-shadow-inverted-light: 0 2px 4px rgb(255 255 255 / 5%);
332
+ --box-shadow-inverted-medium: 0 4px 8px rgb(255 255 255 / 8%);
333
+ --box-shadow-inverted-strong: 0 6px 12px rgb(255 255 255 / 12%);
334
+ --box-shadow-inverted-intense: 0 8px 16px rgb(255 255 255 / 20%);
335
+ /* ===========================
336
+ Divider & Overlay Colors
337
+ =========================== */
338
+ --divider-color: rgb(99.025, 133.975, 133.975); /* subtle dividers */
339
+ --overlay-color: rgb(0 0 0 / 50%); /* for modals or overlays */
340
+ --font-family-primary: Lora, arial, sans-serif;
341
+ }
342
+
343
+ body {
344
+ font-family: var(--font-family-primary);
345
+ font-size: var(--font-size-base);
346
+ color: var(--text-color-primary);
347
+ background-color: var(--background-color);
348
+ margin: 0;
349
+ padding: 0;
350
+ line-height: 1.5;
351
+ overflow-x: hidden;
352
+ transition: background-color 0.3s ease-in-out, color 0.3s ease-in-out;
353
+ }
354
+
355
+ h1,
356
+ h2,
357
+ h3,
358
+ h4,
359
+ h5,
360
+ h6 {
361
+ font-family: "Lora", arial, sans-serif;
362
+ margin: 0;
363
+ font-weight: 700;
364
+ transition: color 0.3s ease-in-out;
365
+ }
366
+
367
+ h1 {
368
+ font-size: 32px;
369
+ font-weight: 900;
370
+ line-height: 1.2;
371
+ }
372
+
373
+ h2 {
374
+ font-size: 24px;
375
+ font-weight: 900;
376
+ line-height: 1.3;
377
+ }
378
+
379
+ h3 {
380
+ font-size: 16px;
381
+ line-height: 1.4;
382
+ }
383
+
384
+ h4 {
385
+ font-size: 18px;
386
+ line-height: 1.5;
387
+ }
388
+
389
+ h5,
390
+ h6 {
391
+ font-size: 14px;
392
+ line-height: 1.6;
393
+ font-weight: 400;
394
+ }
395
+
396
+ h6 {
397
+ text-transform: uppercase;
398
+ }
399
+
400
+ p {
401
+ font-size: 18px;
402
+ line-height: 1.6;
403
+ font-weight: 500;
404
+ margin-bottom: 16px;
405
+ }
406
+
407
+ a {
408
+ color: var(--link-color);
409
+ font-weight: 700;
410
+ text-decoration: none;
411
+ transition: color 0.3s ease-in-out, text-decoration 0.3s ease-in-out;
412
+ }
413
+ a:hover {
414
+ color: var(--link-color-hover);
415
+ text-decoration: underline;
416
+ }
417
+
418
+ .noScroll {
419
+ overflow: hidden;
420
+ }
421
+
422
+ .errorMessage {
423
+ color: #f83838;
424
+ font-size: 14px;
425
+ }
426
+
427
+ .loadingContainer {
428
+ min-height: 100vh;
429
+ display: flex;
430
+ justify-content: center;
431
+ align-items: center;
432
+ font-size: 1.5rem;
433
+ }
434
+
435
+ * {
436
+ scrollbar-width: thin;
437
+ scrollbar-color: var(--primary-color) var(--background-color-light);
438
+ }
439
+
440
+ *:focus {
441
+ outline: 2px solid var(--focus-outline-color);
442
+ outline-offset: 2px;
443
+ }
444
+
445
+ ::-webkit-scrollbar {
446
+ width: 12px;
447
+ height: 12px;
448
+ }
449
+
450
+ ::-webkit-scrollbar-track {
451
+ background: var(--background-color);
452
+ }
453
+
454
+ ::-webkit-scrollbar-thumb {
455
+ background-color: var(--primary-color);
456
+ border-radius: 6px;
457
+ border: 3px solid var(--background-color-light);
458
+ }
459
+
460
+ ::-webkit-scrollbar-thumb:hover {
461
+ background-color: var(--primary-color-hover);
462
+ }
463
+
464
+ .hideScrollbar {
465
+ scrollbar-width: none;
466
+ -ms-overflow-style: none;
467
+ }
468
+
469
+ .hideScrollbar::-webkit-scrollbar {
470
+ display: none;
471
+ }
472
+
473
+ .sr_only {
474
+ position: absolute;
475
+ width: 1px;
476
+ height: 1px;
477
+ margin: -1px;
478
+ overflow: hidden;
479
+ clip: rect(0 0 0 0);
480
+ white-space: nowrap;
481
+ border: 0;
482
+ }
483
+
484
+ :global(.sr_only) {
485
+ position: absolute;
486
+ width: 1px;
487
+ height: 1px;
488
+ margin: -1px;
489
+ overflow: hidden;
490
+ clip: rect(0 0 0 0);
491
+ white-space: nowrap;
492
+ border: 0;
493
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "boreal-ui",
3
- "version": "0.0.41",
3
+ "version": "0.0.42",
4
4
  "description": "A modern, customizable React/Next.js component library",
5
5
  "author": "Davin Chiupka",
6
6
  "license": "ISC",
@@ -22,6 +22,7 @@
22
22
  "build:next": "vite build --config vite.config.next.ts",
23
23
  "build:types": "tsc -p tsconfig.build.json",
24
24
  "build:types:public": "tsc -p tsconfig.build.json && node scripts/generateTypesBarrel.cjs",
25
+ "build:css-next": "sass --load-path=node_modules src/styles/globals.scss src/styles/style.css --no-source-map",
25
26
  "build": "npm run clean && npm run build:core && npm run build:next && npm run build:types && npm run build:types:public",
26
27
  "lint:styles": "stylelint '**/*.{css,scss}'",
27
28
  "lint:styles:fix": "stylelint '**/*.{css,scss}' --fix",
@@ -53,7 +54,6 @@
53
54
  ],
54
55
  "sideEffects": false,
55
56
  "dependencies": {
56
- "modern-css-reset": "^1.4.0",
57
57
  "recharts": "^3.1.2"
58
58
  },
59
59
  "peerDependencies": {
@@ -97,13 +97,14 @@
97
97
  "jest": "^29.7.0",
98
98
  "jest-axe": "^10.0.0",
99
99
  "jest-environment-jsdom": "^29.7.0",
100
+ "modern-css-reset": "^1.4.0",
100
101
  "next": "^16.0.7",
101
102
  "prettier": "^3.5.3",
102
103
  "react": "^19.2.1",
103
104
  "react-dom": "^19.2.1",
104
105
  "react-icons": "^5.5.0",
105
106
  "rollup-plugin-copy": "^3.5.0",
106
- "sass": "^1.86.3",
107
+ "sass": "^1.94.2",
107
108
  "sass-embedded": "^1.86.3",
108
109
  "sass-loader": "^16.0.5",
109
110
  "storybook": "^10.1.4",