@1001-digital/styles 0.0.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/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "@1001-digital/styles",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "main": "./src/index.css",
6
+ "style": "./src/index.css",
7
+ "exports": {
8
+ ".": "./src/index.css",
9
+ "./*": "./src/*"
10
+ },
11
+ "files": [
12
+ "src"
13
+ ],
14
+ "dependencies": {
15
+ "modern-normalize": "^3.0.1"
16
+ }
17
+ }
@@ -0,0 +1,52 @@
1
+ /*
2
+ * Base Layer
3
+ * Core element styling and document defaults
4
+ */
5
+
6
+ html {
7
+ /* Color settings */
8
+ background-color: var(--background);
9
+ color: var(--color);
10
+
11
+ /* Font settings */
12
+ font-size: var(--rem);
13
+ font-family: var(--font-family);
14
+ line-height: var(--line-height-md);
15
+ font-weight: var(--font-weight);
16
+ font-style: normal;
17
+ letter-spacing: var(--letter-spacing);
18
+ text-transform: var(--text-transform);
19
+ font-synthesis: initial;
20
+ text-rendering: optimizeLegibility;
21
+ -webkit-font-smoothing: antialiased;
22
+ -moz-osx-font-smoothing: grayscale;
23
+ -webkit-text-size-adjust: 100%;
24
+ }
25
+
26
+ body {
27
+ /* Font size separate from root em */
28
+ font-size: var(--font-base);
29
+
30
+ /* Prevent horizontal overflow */
31
+ overflow-x: hidden;
32
+ }
33
+
34
+ /*
35
+ * Modern Typography
36
+ * text-wrap for balanced headings and prettier paragraphs
37
+ */
38
+ h1,
39
+ h2,
40
+ h3,
41
+ h4,
42
+ h5,
43
+ h6 {
44
+ text-wrap: balance;
45
+ }
46
+
47
+ p,
48
+ li,
49
+ figcaption,
50
+ blockquote {
51
+ text-wrap: pretty;
52
+ }
@@ -0,0 +1,142 @@
1
+ /*
2
+ * Form Elements
3
+ * Global styling for form elements
4
+ */
5
+
6
+ button:not(.unstyled),
7
+ .button:not(.unstyled),
8
+ input:not(.unstyled),
9
+ textarea:not(.unstyled),
10
+ select:not(.unstyled) {
11
+ /* UI font styles */
12
+ font-family: var(--font-family);
13
+ font-size: var(--ui-font-size);
14
+ font-weight: var(--ui-font-weight);
15
+ text-transform: var(--ui-text-transform);
16
+ letter-spacing: var(--ui-letter-spacing);
17
+ line-height: var(--ui-line-height);
18
+ color: var(--ui-color);
19
+
20
+ transition: all var(--speed);
21
+ border: none;
22
+ border-radius: var(--button-border-radius);
23
+ box-shadow: var(--border-shadow);
24
+ background: var(--button-background);
25
+ padding: var(--ui-padding-block) var(--ui-padding-inline);
26
+ user-select: none;
27
+ display: flex;
28
+ block-size: var(--form-item-height);
29
+
30
+ &:-internal-autofill-selected {
31
+ background: inherit;
32
+ background-image: none !important;
33
+ }
34
+
35
+ &:is(:hover, :active, :focus, .active) {
36
+ outline: none;
37
+ box-shadow: var(--border-shadow-highlight);
38
+ }
39
+
40
+ &:not(select):is(:hover, :active, :focus, .active) {
41
+ background: var(--button-background-highlight);
42
+ }
43
+
44
+ &::placeholder,
45
+ &::-ms-input-placeholder {
46
+ text-transform: var(--ui-text-transform);
47
+ color: var(--ui-placeholder-color);
48
+ opacity: 1;
49
+ }
50
+
51
+ &.small {
52
+ padding: calc(var(--ui-padding-block) / 2)
53
+ calc(var(--ui-padding-inline) / 2);
54
+ block-size: var(--form-item-height-sm);
55
+ }
56
+ }
57
+
58
+ input:not(.unstyled),
59
+ textarea:not(.unstyled),
60
+ select:not(.unstyled) {
61
+ inline-size: 100%;
62
+ }
63
+
64
+ input:not(.unstyled),
65
+ textarea:not(.unstyled) {
66
+ text-transform: var(--input-text-transform);
67
+ }
68
+
69
+ select:not(.unstyled) {
70
+ --select-bg: var(--button-background);
71
+ appearance: none;
72
+ line-height: 1;
73
+ transition-property: box-shadow, background-color, color;
74
+ background:
75
+ url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM4ODgiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBjbGFzcz0iZmVhdGhlciBmZWF0aGVyLWNoZXZyb24tZG93biI+PHBvbHlsaW5lIHBvaW50cz0iNiA5IDEyIDE1IDE4IDkiPjwvcG9seWxpbmU+PC9zdmc+),
76
+ var(--select-bg);
77
+ background-repeat: no-repeat, no-repeat;
78
+ background-position:
79
+ calc(100% - var(--ui-padding-inline)) 50%,
80
+ 0% 0%;
81
+ background-size:
82
+ var(--size-4),
83
+ 100% 100%;
84
+ padding-inline-end: calc(var(--ui-padding-inline) + var(--size-4) + var(--ui-padding-inline) / 2) !important;
85
+
86
+ &:is(:hover, :active, :focus, .active) {
87
+ --select-bg: var(--button-background-highlight);
88
+ }
89
+
90
+ &.small {
91
+ background-position:
92
+ calc(100% - calc(var(--ui-padding-inline) / 2)) 50%,
93
+ 0% 0%;
94
+ }
95
+ }
96
+
97
+ input[type='checkbox'] {
98
+ block-size: var(--size-4);
99
+ margin-right: var(--spacer-sm);
100
+ }
101
+
102
+ form {
103
+ display: grid;
104
+ gap: var(--spacer);
105
+ }
106
+
107
+ form label,
108
+ label.form-label {
109
+ /* UI font styles */
110
+ font-family: var(--font-family);
111
+ font-size: var(--ui-font-size);
112
+ font-weight: var(--ui-font-weight);
113
+ text-transform: var(--ui-text-transform);
114
+ letter-spacing: var(--ui-letter-spacing);
115
+ line-height: var(--ui-line-height);
116
+ color: var(--ui-color);
117
+
118
+ transition: all var(--speed);
119
+ display: grid;
120
+ gap: var(--size-2);
121
+
122
+ &:hover {
123
+ color: var(--color);
124
+ }
125
+
126
+ a {
127
+ text-decoration: underline;
128
+ }
129
+
130
+ > span:first-child {
131
+ display: block;
132
+ }
133
+ }
134
+
135
+ label:has(> input[type='checkbox']) {
136
+ display: flex;
137
+ align-items: center;
138
+
139
+ > * {
140
+ inline-size: auto;
141
+ }
142
+ }
@@ -0,0 +1,158 @@
1
+ /*
2
+ * Reset Layer
3
+ * Based on modern-normalize with additional opinionated resets
4
+ * Inspired by Tailwind's preflight
5
+ */
6
+
7
+ /* Import modern-normalize as the foundation */
8
+ @import 'modern-normalize/modern-normalize.css';
9
+
10
+ /*
11
+ * Additional resets (SUIT CSS / Tailwind inspired)
12
+ */
13
+
14
+ /* Remove default spacing for semantic elements */
15
+ blockquote,
16
+ dl,
17
+ dd,
18
+ h1,
19
+ h2,
20
+ h3,
21
+ h4,
22
+ h5,
23
+ h6,
24
+ hr,
25
+ figure,
26
+ p,
27
+ pre {
28
+ margin: 0;
29
+ }
30
+
31
+ /* Reset fieldset */
32
+ fieldset {
33
+ margin: 0;
34
+ padding: 0;
35
+ }
36
+
37
+ /* Reset lists */
38
+ ol,
39
+ ul {
40
+ list-style: none;
41
+ margin: 0;
42
+ padding: 0;
43
+ }
44
+
45
+ /* Prevent layout shift when overflow is toggled (e.g. dialog open) */
46
+ html {
47
+ scrollbar-gutter: stable;
48
+ }
49
+
50
+ /*
51
+ * Base box model
52
+ */
53
+ *,
54
+ ::before,
55
+ ::after {
56
+ box-sizing: border-box;
57
+ border-width: 0;
58
+ border-style: solid;
59
+ border-color: #e5e7eb;
60
+ }
61
+
62
+ /* Ensure horizontal rules are visible */
63
+ hr {
64
+ border-top-width: 1px;
65
+ border-color: var(--border-color);
66
+ }
67
+
68
+ /* Reset italic style on i elements */
69
+ i {
70
+ font-style: normal;
71
+ }
72
+
73
+ /* Image border style */
74
+ img {
75
+ border-style: solid;
76
+ }
77
+
78
+ /* Textarea resize */
79
+ textarea {
80
+ resize: vertical;
81
+ }
82
+
83
+ /* Placeholder styling */
84
+ input::placeholder,
85
+ textarea::placeholder {
86
+ color: var(--ui-placeholder-color);
87
+ }
88
+
89
+ /* Pointer cursor for interactive elements */
90
+ button,
91
+ [role='button'] {
92
+ cursor: pointer;
93
+ }
94
+
95
+ /* Table border collapse */
96
+ table {
97
+ border-collapse: collapse;
98
+ }
99
+
100
+ /* Reset heading styles */
101
+ h1,
102
+ h2,
103
+ h3,
104
+ h4,
105
+ h5,
106
+ h6 {
107
+ font-size: inherit;
108
+ font-weight: inherit;
109
+ }
110
+
111
+ /* Reset link styles */
112
+ a {
113
+ color: inherit;
114
+ text-decoration: inherit;
115
+ transition: color var(--speed);
116
+ }
117
+
118
+ /* Form element defaults */
119
+ .button,
120
+ button,
121
+ input,
122
+ optgroup,
123
+ select,
124
+ textarea {
125
+ padding: var(--ui-padding-block) var(--ui-padding-inline);
126
+ line-height: inherit;
127
+ color: inherit;
128
+ }
129
+
130
+ /* Monospace elements */
131
+ pre,
132
+ code,
133
+ kbd,
134
+ samp {
135
+ font-family:
136
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
137
+ 'Courier New', monospace;
138
+ }
139
+
140
+ /* Block display for media elements */
141
+ img,
142
+ svg,
143
+ video,
144
+ canvas,
145
+ audio,
146
+ iframe,
147
+ embed,
148
+ object {
149
+ display: block;
150
+ vertical-align: middle;
151
+ }
152
+
153
+ /* Responsive images/video */
154
+ img,
155
+ video {
156
+ max-width: 100%;
157
+ height: auto;
158
+ }
package/src/index.css ADDED
@@ -0,0 +1,28 @@
1
+ /*
2
+ * CSS Layers Order Definition
3
+ * This establishes the cascade priority:
4
+ * variables, reset < base < components < utilities
5
+ */
6
+ @layer variables, reset, base, components, utilities;
7
+
8
+ /*
9
+ * CSS Custom Properties (outside layers for proper cascade)
10
+ */
11
+ @import './variables/index.css' layer(variables);
12
+
13
+ /*
14
+ * Reset Layer - Modern Normalize
15
+ */
16
+ @import './base/reset.css' layer(reset);
17
+
18
+ /*
19
+ * Base Layer - Element defaults
20
+ */
21
+ @import './base/base.css' layer(base);
22
+ @import './base/forms.css' layer(base);
23
+
24
+ /*
25
+ * Utilities Layer - Helper classes
26
+ */
27
+ @import './utilities/utilities.css' layer(utilities);
28
+ @import './utilities/animations.css' layer(utilities);
@@ -0,0 +1,76 @@
1
+ /*
2
+ * Animations Layer
3
+ * Vue transitions and keyframe animations
4
+ */
5
+
6
+ /* Default Vue transition */
7
+ .v-enter-active,
8
+ .v-leave-active {
9
+ transition: opacity var(--speed) ease;
10
+ }
11
+
12
+ .v-enter-from,
13
+ .v-leave-to {
14
+ opacity: 0;
15
+ }
16
+
17
+ /* Fade transition */
18
+ .fade-enter-active,
19
+ .fade-leave-active {
20
+ transition: all var(--speed) ease;
21
+ max-block-size: 100%;
22
+ }
23
+
24
+ .fade-enter-from,
25
+ .fade-leave-to {
26
+ opacity: 0;
27
+ max-block-size: 0;
28
+ }
29
+
30
+ /* Keyframe animations */
31
+ @keyframes appear {
32
+ 0% {
33
+ opacity: 0;
34
+ }
35
+ 100% {
36
+ opacity: 1;
37
+ }
38
+ }
39
+
40
+ @keyframes fade-in {
41
+ 0% {
42
+ opacity: 0;
43
+ transform: translateY(var(--spacer));
44
+ }
45
+ 100% {
46
+ opacity: 1;
47
+ transform: translateY(0);
48
+ }
49
+ }
50
+
51
+ @keyframes spin {
52
+ 0% {
53
+ transform: rotate(0deg);
54
+ }
55
+ 100% {
56
+ transform: rotate(360deg);
57
+ }
58
+ }
59
+
60
+ /*
61
+ * Entry Animations with @starting-style
62
+ * For elements transitioning from display: none
63
+ */
64
+ .appear {
65
+ opacity: 1;
66
+ transform: translateY(0);
67
+ transition:
68
+ opacity var(--speed) ease,
69
+ transform var(--speed) ease,
70
+ display var(--speed) ease allow-discrete;
71
+
72
+ @starting-style {
73
+ opacity: 0;
74
+ transform: translateY(var(--spacer-sm));
75
+ }
76
+ }
@@ -0,0 +1,62 @@
1
+ /*
2
+ * Utilities Layer
3
+ * Single-purpose helper classes
4
+ */
5
+
6
+ /* UI font utility */
7
+ .ui {
8
+ font-family: var(--font-family);
9
+ font-size: var(--ui-font-size);
10
+ font-weight: var(--ui-font-weight);
11
+ text-transform: var(--ui-text-transform);
12
+ letter-spacing: var(--ui-letter-spacing);
13
+ line-height: var(--ui-line-height);
14
+ color: var(--ui-color);
15
+ }
16
+
17
+ /* Muted text */
18
+ .muted {
19
+ color: var(--muted);
20
+ }
21
+
22
+ :is(a, button).muted:is(:hover, :active, :focus, .active) {
23
+ color: var(--color);
24
+ }
25
+
26
+ /* Font sizes */
27
+ .font-sm {
28
+ font-size: var(--font-sm);
29
+ }
30
+
31
+ /* Responsive visibility */
32
+ .visible-sm {
33
+ display: none !important;
34
+
35
+ @media (min-width: 27rem) {
36
+ display: initial !important;
37
+
38
+ &.flex {
39
+ display: flex !important;
40
+ }
41
+
42
+ &.inline-flex {
43
+ display: inline-flex !important;
44
+ }
45
+ }
46
+ }
47
+
48
+ .visible-md {
49
+ display: none !important;
50
+
51
+ @media (min-width: 45rem) {
52
+ display: initial !important;
53
+
54
+ &.flex {
55
+ display: flex !important;
56
+ }
57
+
58
+ &.inline-flex {
59
+ display: inline-flex !important;
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,19 @@
1
+ :root {
2
+ --border-width: 1px;
3
+ --border-radius: var(--size-2);
4
+
5
+ /* Border colors */
6
+ --border-color: var(--gray-z-2);
7
+ --border-color-highlight: var(--gray-z-3);
8
+ --border-color-dark: var(--color);
9
+ --border-color-light: var(--color);
10
+
11
+ /* Border shorthand */
12
+ --border: var(--border-width) solid var(--border-color);
13
+ --border-dark: var(--border-width) solid var(--border-color-dark);
14
+
15
+ /* Border effects */
16
+ --border-shadow: 0 0 0 var(--border-width) var(--border-color);
17
+ --border-shadow-highlight: 0 0 0 var(--border-width)
18
+ var(--border-color-highlight);
19
+ }
@@ -0,0 +1,74 @@
1
+ /*
2
+ * Colors
3
+ * Modern color palette using oklch for perceptual uniformity
4
+ */
5
+
6
+ :root {
7
+ /* Enable system color scheme support */
8
+ color-scheme: light dark;
9
+
10
+ /* Base colors */
11
+ --black: oklch(0% 0 0);
12
+ --white: oklch(100% 0 0);
13
+
14
+ /* Gray scale (perceptually uniform in oklch) */
15
+ --gray-50: oklch(98% 0 0);
16
+ --gray-100: oklch(96% 0 0);
17
+ --gray-200: oklch(91% 0 0);
18
+ --gray-300: oklch(85% 0 0);
19
+ --gray-400: oklch(70% 0 0);
20
+ --gray-500: oklch(55% 0 0);
21
+ --gray-600: oklch(45% 0 0);
22
+ --gray-700: oklch(37% 0 0);
23
+ --gray-800: oklch(27% 0 0);
24
+ --gray-900: oklch(20% 0 0);
25
+ --gray-950: oklch(14% 0 0);
26
+
27
+ /* Semi-transparent variants */
28
+ --black-semi: color-mix(in oklch, var(--black) 73%, transparent);
29
+ --white-semi: color-mix(in oklch, var(--white) 73%, transparent);
30
+
31
+ /* Semantic colors */
32
+ --primary: var(--color);
33
+ --muted: var(--gray-z-5);
34
+ --error: oklch(55% 0.25 27);
35
+ --success: oklch(75% 0.2 130);
36
+ }
37
+
38
+ /*
39
+ * Color scheme aware values
40
+ * These use light-dark() and re-evaluate based on the element's color-scheme
41
+ */
42
+
43
+ :root {
44
+ --background: light-dark(var(--white), var(--black));
45
+ --background-semi: light-dark(var(--white-semi), var(--black-semi));
46
+ --color: light-dark(var(--black), var(--white));
47
+ --color-semi: light-dark(var(--black-semi), var(--white-semi));
48
+
49
+ /* Z-colors (depth from viewer, 0 = closest to background) */
50
+ --gray-z-0: light-dark(var(--gray-50), var(--gray-950));
51
+ --gray-z-1: light-dark(var(--gray-100), var(--gray-900));
52
+ --gray-z-2: light-dark(var(--gray-200), var(--gray-800));
53
+ --gray-z-3: light-dark(var(--gray-300), var(--gray-700));
54
+ --gray-z-4: light-dark(var(--gray-400), var(--gray-600));
55
+ --gray-z-5: var(--gray-500);
56
+ --gray-z-6: light-dark(var(--gray-600), var(--gray-400));
57
+ --gray-z-7: light-dark(var(--gray-700), var(--gray-300));
58
+ --gray-z-8: light-dark(var(--gray-800), var(--gray-200));
59
+ --gray-z-9: light-dark(var(--gray-900), var(--gray-100));
60
+ --gray-z-10: light-dark(var(--gray-950), var(--gray-50));
61
+ }
62
+
63
+ /*
64
+ * Manual color scheme overrides
65
+ * Force light/dark mode on nested elements
66
+ */
67
+
68
+ .light {
69
+ color-scheme: light;
70
+ }
71
+
72
+ .dark {
73
+ color-scheme: dark;
74
+ }
@@ -0,0 +1,17 @@
1
+ :root {
2
+ --alert-color: var(--color);
3
+ --alert-background-color: transparent;
4
+ --alert-border-color: var(--border-color);
5
+
6
+ --alert-info-color: var(--alert-color);
7
+ --alert-info-background-color: var(--alert-background-color);
8
+ --alert-info-border-color: var(--alert-border-color);
9
+
10
+ --alert-error-color: var(--error);
11
+ --alert-error-background-color: color-mix(
12
+ in srgb,
13
+ var(--error) 10%,
14
+ transparent
15
+ );
16
+ --alert-error-border-color: var(--error);
17
+ }
@@ -0,0 +1,26 @@
1
+ :root {
2
+ --button-border-radius: var(--border-radius);
3
+ --button-background: var(--background);
4
+ --button-background-highlight: var(--gray-z-1);
5
+ --button-border-color-highlight: var(--gray-z-3);
6
+ --button-color: var(--color);
7
+ --button-color-highlight: var(--color);
8
+ --button-icon-color: var(--muted);
9
+ --button-icon-color-highlight: var(--color);
10
+
11
+ /* Primary Button Styles */
12
+ --button-primary-background: var(--gray-z-10);
13
+ --button-primary-border-color: var(--gray-z-8);
14
+ --button-primary-color: var(--gray-z-0);
15
+ --button-primary-background-highlight: var(--gray-z-8);
16
+ --button-primary-border-color-highlight: var(--gray-z-6);
17
+ --button-primary-color-highlight: var(--gray-z-0);
18
+
19
+ /* Tertiary Button Styles */
20
+ --button-tertiary-background: transparent;
21
+ --button-tertiary-border-color: var(--gray-z-3);
22
+ --button-tertiary-color: var(--muted);
23
+ --button-tertiary-background-highlight: var(--gray-z-1);
24
+ --button-tertiary-border-color-highlight: var(--gray-z-4);
25
+ --button-tertiary-color-highlight: var(--color);
26
+ }
@@ -0,0 +1,7 @@
1
+ :root {
2
+ --card-border-radius: var(--border-radius);
3
+ --card-border: var(--border);
4
+ --card-background: var(--gray-z-0);
5
+ --card-background-highlight: var(--gray-z-1);
6
+ --card-border-color-highlight: var(--gray-z-3);
7
+ }
@@ -0,0 +1,3 @@
1
+ :root {
2
+ --backdrop-background-color: transparent;
3
+ }
@@ -0,0 +1,7 @@
1
+ :root {
2
+ --dropdown-background: var(--popover-background);
3
+ --dropdown-border: var(--popover-border);
4
+ --dropdown-border-radius: var(--popover-border-radius);
5
+ --dropdown-padding: var(--size-1);
6
+ --dropdown-arrow-fill: var(--popover-arrow-fill);
7
+ }
@@ -0,0 +1,4 @@
1
+ :root {
2
+ --form-item-height: calc(var(--size-4) + var(--ui-padding-block) * 2);
3
+ --form-item-height-sm: calc(var(--size-4) + var(--ui-padding-block));
4
+ }
@@ -0,0 +1,10 @@
1
+ @import './alert.css';
2
+ @import './button.css';
3
+ @import './card.css';
4
+ @import './dialog.css';
5
+ @import './tag.css';
6
+ @import './dropdown.css';
7
+ @import './form.css';
8
+ @import './popover.css';
9
+ @import './toast.css';
10
+ @import './tooltip.css';
@@ -0,0 +1,7 @@
1
+ :root {
2
+ --popover-background: var(--background);
3
+ --popover-border: var(--border);
4
+ --popover-border-radius: var(--border-radius);
5
+ --popover-padding: var(--spacer);
6
+ --popover-arrow-fill: var(--background);
7
+ }
@@ -0,0 +1,3 @@
1
+ :root {
2
+ --tag-border-radius: var(--border-radius);
3
+ }
@@ -0,0 +1,17 @@
1
+ :root {
2
+ --toast-width: 22rem;
3
+ --toast-padding: var(--spacer-sm);
4
+ --toast-gap: var(--spacer-sm);
5
+
6
+ --toast-info-color: var(--color);
7
+ --toast-info-background: var(--card-background);
8
+ --toast-info-border-color: var(--border-color);
9
+
10
+ --toast-success-color: var(--color);
11
+ --toast-success-background: var(--card-background);
12
+ --toast-success-border-color: var(--success);
13
+
14
+ --toast-error-color: var(--color);
15
+ --toast-error-background: var(--card-background);
16
+ --toast-error-border-color: var(--error);
17
+ }
@@ -0,0 +1,7 @@
1
+ :root {
2
+ --tooltip-background: var(--popover-background);
3
+ --tooltip-border: var(--popover-border);
4
+ --tooltip-border-radius: var(--popover-border-radius);
5
+ --tooltip-padding: calc(var(--popover-padding) / 2) var(--popover-padding);
6
+ --tooltip-arrow-fill: var(--popover-arrow-fill);
7
+ }
@@ -0,0 +1,3 @@
1
+ :root {
2
+ --blur: blur(var(--size-1));
3
+ }
@@ -0,0 +1,35 @@
1
+ :root {
2
+ --rem: 16px;
3
+
4
+ /* Font family */
5
+ --font-family: sans-serif;
6
+
7
+ /* Fluid font sizes using clamp(min, preferred, max) */
8
+ --font-base: clamp(0.9375rem, 0.875rem + 0.25vw, 1.0625rem);
9
+ --font-xs: clamp(0.625rem, 0.6rem + 0.15vw, 0.75rem);
10
+ --font-sm: clamp(0.75rem, 0.7rem + 0.2vw, 0.875rem);
11
+ --font-lg: clamp(1.125rem, 1rem + 0.5vw, 1.375rem);
12
+ --font-xl: clamp(1.375rem, 1.2rem + 0.75vw, 1.75rem);
13
+ --font-2xl: clamp(1.75rem, 1.5rem + 1vw, 2.25rem);
14
+ --font-3xl: clamp(2.25rem, 1.8rem + 1.5vw, 3rem);
15
+
16
+ /* Font weights */
17
+ --font-weight-light: 300;
18
+ --font-weight: 400;
19
+ --font-weight-bold: 500;
20
+
21
+ /* Letter spacing */
22
+ --letter-spacing-sm: -0.025em;
23
+ --letter-spacing: 0.025em;
24
+ --letter-spacing-md: 0.05em;
25
+ --letter-spacing-lg: 0.1em;
26
+
27
+ /* Line heights */
28
+ --line-height-sm: 105%;
29
+ --line-height: 100%;
30
+ --line-height-md: 120%;
31
+ --line-height-lg: 160%;
32
+
33
+ /* Text transform */
34
+ --text-transform: none;
35
+ }
@@ -0,0 +1,15 @@
1
+ /*
2
+ * CSS Custom Properties
3
+ * Organized by category. Order matters as some depend on others.
4
+ */
5
+
6
+ @import './colors.css';
7
+ @import './sizes.css';
8
+ @import './fonts.css';
9
+ @import './borders.css';
10
+ @import './effects.css';
11
+ @import './timing.css';
12
+ @import './ui.css';
13
+ @import './layout.css';
14
+ @import './z-index.css';
15
+ @import './components/index.css';
@@ -0,0 +1,7 @@
1
+ :root {
2
+ --dialog-width: 27rem;
3
+ --content-width-wide: 90rem;
4
+ --content-width: 60rem;
5
+ --content-width-sm: 35rem;
6
+ --form-width: 24rem;
7
+ }
@@ -0,0 +1,24 @@
1
+ :root {
2
+ --100vh: 100dvh;
3
+
4
+ /* Size scale */
5
+ --size-0: 0.125rem;
6
+ --size-1: 0.25rem;
7
+ --size-2: 0.5rem;
8
+ --size-3: 0.75rem;
9
+ --size-4: 1rem;
10
+ --size-5: 1.25rem;
11
+ --size-6: 1.5rem;
12
+ --size-7: 2rem;
13
+ --size-8: 3rem;
14
+ --size-9: 4.5rem;
15
+ --size-10: 6rem;
16
+
17
+ /* Semantic spacers */
18
+ --spacer-xs: var(--size-0);
19
+ --spacer-sm: var(--size-2);
20
+ --spacer: var(--size-4);
21
+ --spacer-md: var(--size-6);
22
+ --spacer-lg: var(--size-7);
23
+ --spacer-xl: var(--size-9);
24
+ }
@@ -0,0 +1,5 @@
1
+ :root {
2
+ --speed-fast: 0.15s;
3
+ --speed: 0.3s;
4
+ --speed-slow: 0.75s;
5
+ }
@@ -0,0 +1,18 @@
1
+ :root {
2
+ /* UI typography */
3
+ --ui-font-size: 13px;
4
+ --ui-font-weight: 400;
5
+ --ui-text-transform: uppercase;
6
+ --ui-letter-spacing: var(--letter-spacing);
7
+ --ui-line-height: var(--line-height);
8
+ --input-text-transform: none;
9
+
10
+ /* UI colors */
11
+ --ui-color: var(--primary);
12
+ --ui-placeholder-color: var(--gray-z-5);
13
+ --ui-color-visited: var(--primary);
14
+
15
+ /* UI spacing (logical property naming) */
16
+ --ui-padding-block: var(--spacer-sm);
17
+ --ui-padding-inline: var(--spacer);
18
+ }
@@ -0,0 +1,8 @@
1
+ :root {
2
+ --z-index-n1: -1;
3
+ --z-index-0: 0;
4
+ --z-index-ui: 2;
5
+ --z-index-overlay: 9;
6
+ --z-index-dialog: 10;
7
+ --z-index-toast: 11;
8
+ }