@archerjessop/utilities 4.1.0 → 4.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.
@@ -7,6 +7,14 @@
7
7
  --color-warning: #ffc107;
8
8
  --color-info: #17a2b8;
9
9
 
10
+ /* Generic UI Colors */
11
+ --bg-footer: #ededed;
12
+ --border-footer: #919090ff;
13
+ --text-primary: #212529;
14
+ --text-secondary: #6c757d;
15
+ --text-muted: #999;
16
+ --border-input: #ccc;
17
+
10
18
  /* Grays */
11
19
  --color-gray-50: #f8f9fa;
12
20
  --color-gray-100: #e9ecef;
@@ -18,14 +26,19 @@
18
26
 
19
27
  /* Spacing */
20
28
  --spacing-xs: 4px;
21
- --spacing-sm: 8px;
22
- --spacing-md: 16px;
23
- --spacing-lg: 24px;
24
- --spacing-xl: 32px;
29
+ --spacing-sm: 6px;
30
+ --spacing-md: 8px;
31
+ --spacing-lg: 12px;
32
+ --spacing-xl: 16px;
33
+ --spacing-xxl: 20px;
34
+ --spacing-xxxl: 24px;
25
35
 
26
36
  /* Typography */
37
+ --font-family-system: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
38
+ --font-size-xs: 11px;
27
39
  --font-size-sm: 12px;
28
- --font-size-base: 14px;
40
+ --font-size-base: 13px;
41
+ --font-size-md: 14px;
29
42
  --font-size-lg: 16px;
30
43
  --font-weight-normal: 400;
31
44
  --font-weight-medium: 500;
@@ -33,16 +46,32 @@
33
46
 
34
47
  /* Borders */
35
48
  --border-radius: 4px;
36
- --border-radius-lg: 8px;
37
- --border-color: #ddd;
49
+ --border-radius-md: 6px;
50
+ --border-color: #ccc;
51
+ --border-color-light: #ddd;
52
+
53
+ /* Shadows */
54
+ --shadow-footer: 0 -8px 32px rgba(0, 0, 0, 0.08);
55
+ --shadow-focus: 0 0 0 2px rgba(0, 123, 255, 0.25);
56
+
57
+ /* Z-index */
58
+ --z-footer: 999999999;
59
+
60
+ /* Container widths */
61
+ --container-max-width: 1600px;
62
+
63
+ /* Grid */
64
+ --grid-gap: var(--spacing-xl);
65
+ --grid-gap-small: var(--spacing-lg);
38
66
  }
39
67
 
40
- .aj-test-styles {
68
+ /* Test class */
69
+ .test-styles {
41
70
  background: var(--color-primary);
42
71
  color: white;
43
- padding: var(--spacing-md) var(--spacing-lg);
72
+ padding: var(--spacing-xl) var(--spacing-xxxl);
44
73
  border-radius: var(--border-radius);
45
- font-size: var(--font-size-base);
74
+ font-size: var(--font-size-md);
46
75
  font-weight: var(--font-weight-semibold);
47
76
  border: 1px solid var(--border-color);
48
77
  cursor: pointer;
@@ -50,6 +79,6 @@
50
79
  text-decoration: none;
51
80
  }
52
81
 
53
- .aj-test-styles:hover {
82
+ .test-styles:hover {
54
83
  background: var(--color-primary-hover);
55
84
  }
@@ -0,0 +1,174 @@
1
+ /* ===== EXTENSION FOOTER ===== */
2
+
3
+ .ext-footer {
4
+ position: fixed;
5
+ bottom: 0;
6
+ left: 0;
7
+ right: 0;
8
+ background: var(--bg-footer);
9
+ border-top: 1px solid var(--border-footer);
10
+ box-shadow: var(--shadow-footer);
11
+ z-index: var(--z-footer);
12
+ padding: var(--spacing-xl) var(--spacing-xxxl);
13
+ font-family: var(--font-family-system);
14
+ font-size: var(--spacing-xl);
15
+ color: var(--text-primary);
16
+ width: 100%;
17
+ box-sizing: border-box;
18
+ }
19
+
20
+ .footer-container {
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: space-between;
24
+ max-width: var(--container-max-width);
25
+ margin: 0 auto;
26
+ gap: var(--spacing-xxl);
27
+ }
28
+
29
+ .footer-content {
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: var(--spacing-lg);
33
+ flex: 1;
34
+ width: 100%;
35
+ }
36
+
37
+ .footer-controls {
38
+ display: flex;
39
+ flex-direction: column;
40
+ align-items: flex-end;
41
+ gap: var(--spacing-md);
42
+ flex-shrink: 0;
43
+ }
44
+
45
+ /* ===== FORM CONTROLS ===== */
46
+
47
+ .dropdown {
48
+ background: white;
49
+ border: 1px solid var(--border-input);
50
+ border-radius: var(--border-radius);
51
+ padding: var(--spacing-sm) var(--spacing-md);
52
+ font-size: var(--font-size-sm);
53
+ color: #333;
54
+ cursor: pointer;
55
+ min-width: 120px;
56
+ outline: none;
57
+ }
58
+
59
+ .dropdown:focus {
60
+ border-color: var(--color-primary);
61
+ box-shadow: var(--shadow-focus);
62
+ }
63
+
64
+ /* ===== BUTTONS ===== */
65
+
66
+ .btn-primary {
67
+ background: var(--color-primary);
68
+ color: white;
69
+ border: none;
70
+ padding: var(--spacing-lg) var(--spacing-xxl);
71
+ border-radius: var(--border-radius-md);
72
+ font-weight: var(--font-weight-semibold);
73
+ font-size: var(--font-size-md);
74
+ cursor: pointer;
75
+ text-decoration: none;
76
+ display: inline-flex;
77
+ align-items: center;
78
+ gap: var(--spacing-md);
79
+ transition: background-color 0.2s;
80
+ white-space: nowrap;
81
+ min-width: 120px;
82
+ justify-content: center;
83
+ }
84
+
85
+ .btn-primary:hover {
86
+ background: var(--color-primary-hover);
87
+ color: white;
88
+ text-decoration: none;
89
+ }
90
+
91
+ .icon {
92
+ width: var(--spacing-xl);
93
+ height: var(--spacing-xl);
94
+ fill: currentColor;
95
+ }
96
+
97
+ /* ===== METRICS GRID ===== */
98
+
99
+ .metrics-grid {
100
+ display: grid;
101
+ grid-template-columns: repeat(9, 1fr);
102
+ gap: var(--grid-gap);
103
+ font-size: var(--font-size-md);
104
+ width: 100%;
105
+ }
106
+
107
+ .metric-column {
108
+ display: flex;
109
+ flex-direction: column;
110
+ gap: var(--spacing-md);
111
+ min-width: 0;
112
+ }
113
+
114
+ .metric {
115
+ display: flex;
116
+ flex-direction: column;
117
+ gap: var(--spacing-xs);
118
+ min-width: 0;
119
+ overflow: hidden;
120
+ padding: var(--spacing-sm);
121
+ }
122
+
123
+ .metric-label {
124
+ font-weight: var(--font-weight-medium);
125
+ color: var(--text-secondary);
126
+ font-size: var(--font-size-sm);
127
+ text-transform: uppercase;
128
+ letter-spacing: 0.5px;
129
+ white-space: nowrap;
130
+ overflow: hidden;
131
+ text-overflow: ellipsis;
132
+ }
133
+
134
+ .metric-value {
135
+ font-weight: var(--font-weight-semibold);
136
+ font-size: var(--spacing-xl);
137
+ white-space: nowrap;
138
+ overflow: hidden;
139
+ text-overflow: ellipsis;
140
+ color: var(--text-primary);
141
+ line-height: 1.2;
142
+ }
143
+
144
+ /* ===== UTILITY CLASSES ===== */
145
+
146
+ .clickable {
147
+ cursor: pointer;
148
+ color: var(--color-primary) !important;
149
+ }
150
+
151
+ .clickable:hover {
152
+ color: var(--color-primary-hover) !important;
153
+ text-decoration: underline;
154
+ }
155
+
156
+ .loading {
157
+ color: var(--color-warning) !important;
158
+ position: relative;
159
+ }
160
+
161
+ .loading::after {
162
+ content: "•••";
163
+ animation: pulse 1.5s ease-in-out infinite;
164
+ }
165
+
166
+ .negative {
167
+ color: var(--color-danger) !important;
168
+ font-weight: var(--font-weight-semibold);
169
+ }
170
+
171
+ @keyframes pulse {
172
+ 0%, 100% { opacity: 0.3; }
173
+ 50% { opacity: 1; }
174
+ }
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@archerjessop/utilities",
3
- "version": "4.1.0",
3
+ "version": "4.3.0",
4
4
  "description": "Shared utilities for ArcherJessop property analysis tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "exports": {
8
- ".": "./dist/index.js"
8
+ ".": "./dist/index.js",
9
+ "./dist/styles/*.css": "./dist/styles/*.css"
9
10
  },
10
11
  "files": [
11
12
  "dist",
12
- "src/styles",
13
13
  "README.md"
14
14
  ],
15
15
  "sideEffects": false,
@@ -1,55 +0,0 @@
1
- :root {
2
- /* Colors */
3
- --color-primary: #007bff;
4
- --color-primary-hover: #0056b3;
5
- --color-success: #28a745;
6
- --color-danger: #dc3545;
7
- --color-warning: #ffc107;
8
- --color-info: #17a2b8;
9
-
10
- /* Grays */
11
- --color-gray-50: #f8f9fa;
12
- --color-gray-100: #e9ecef;
13
- --color-gray-200: #dee2e6;
14
- --color-gray-300: #ced4da;
15
- --color-gray-500: #6c757d;
16
- --color-gray-700: #495057;
17
- --color-gray-900: #212529;
18
-
19
- /* Spacing */
20
- --spacing-xs: 4px;
21
- --spacing-sm: 8px;
22
- --spacing-md: 16px;
23
- --spacing-lg: 24px;
24
- --spacing-xl: 32px;
25
-
26
- /* Typography */
27
- --font-size-sm: 12px;
28
- --font-size-base: 14px;
29
- --font-size-lg: 16px;
30
- --font-weight-normal: 400;
31
- --font-weight-medium: 500;
32
- --font-weight-semibold: 600;
33
-
34
- /* Borders */
35
- --border-radius: 4px;
36
- --border-radius-lg: 8px;
37
- --border-color: #ddd;
38
- }
39
-
40
- .aj-test-styles {
41
- background: var(--color-primary);
42
- color: white;
43
- padding: var(--spacing-md) var(--spacing-lg);
44
- border-radius: var(--border-radius);
45
- font-size: var(--font-size-base);
46
- font-weight: var(--font-weight-semibold);
47
- border: 1px solid var(--border-color);
48
- cursor: pointer;
49
- display: inline-block;
50
- text-decoration: none;
51
- }
52
-
53
- .aj-test-styles:hover {
54
- background: var(--color-primary-hover);
55
- }