@artivism/ux 0.1.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.
@@ -0,0 +1 @@
1
+ export * from './ux.css';
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export * from './ux.css';
package/dist/ux.css ADDED
@@ -0,0 +1,247 @@
1
+ /* UX Interaction Layer - Shared interaction patterns for all Artivism templates */
2
+
3
+ @layer ux {
4
+ /* Canonical interactive patterns */
5
+ [data-interactive="card"] {
6
+ --card-hover-scale: var(--card-hover-scale, 1.02);
7
+ --card-hover-bg: var(--card-hover-bg, transparent);
8
+ --card-hover-shadow: var(--card-hover-shadow, 0 10px 25px -5px rgb(0 0 0 / 0.1));
9
+ --card-hover-translate-y: var(--card-hover-translate-y, 0px);
10
+ --card-hover-translate-x: var(--card-hover-translate-x, 0px);
11
+
12
+ transition: transform var(--card-transition-duration, 150ms) var(--card-transition-easing, ease-out),
13
+ background-color var(--card-transition-duration, 150ms) var(--card-transition-easing, ease-out),
14
+ box-shadow var(--card-transition-duration, 150ms) var(--card-transition-easing, ease-out);
15
+ }
16
+
17
+ [data-interactive="card"]:hover {
18
+ transform: scale(var(--card-hover-scale))
19
+ translateX(var(--card-hover-translate-x))
20
+ translateY(var(--card-hover-translate-y));
21
+ background-color: var(--card-hover-bg);
22
+ box-shadow: var(--card-hover-shadow);
23
+ }
24
+
25
+ [data-interactive="card"]:hover.motion-reduce {
26
+ transform: scale(1) translateX(0) translateY(0);
27
+ }
28
+
29
+ [data-interactive="nav-link"] {
30
+ --nav-link-hover-color: var(--nav-link-hover-color, var(--foreground));
31
+ --nav-link-hover-bg: var(--nav-link-hover-bg, transparent);
32
+ --nav-link-transition: var(--nav-link-transition, color 150ms ease);
33
+
34
+ transition: var(--nav-link-transition);
35
+ }
36
+
37
+ [data-interactive="nav-link"]:hover {
38
+ color: var(--nav-link-hover-color);
39
+ background-color: var(--nav-link-hover-bg);
40
+ }
41
+
42
+ [data-interactive="nav-button"] {
43
+ --nav-button-hover-bg: var(--nav-button-hover-bg, var(--muted));
44
+ --nav-button-hover-color: var(--nav-button-hover-color, var(--foreground));
45
+ --nav-button-transition: var(--nav-button-transition, background-color 150ms ease);
46
+
47
+ transition: var(--nav-button-transition);
48
+ }
49
+
50
+ [data-interactive="nav-button"]:hover {
51
+ background-color: var(--nav-button-hover-bg);
52
+ color: var(--nav-button-hover-color);
53
+ }
54
+
55
+ [data-interactive="link"] {
56
+ --link-hover-color: var(--link-hover-color, var(--foreground));
57
+ --link-transition: var(--link-transition, color 150ms ease);
58
+
59
+ transition: var(--link-transition);
60
+ }
61
+
62
+ [data-interactive="link"]:hover {
63
+ color: var(--link-hover-color);
64
+ }
65
+
66
+ [data-interactive="skip-link"] {
67
+ /* Skip links should always follow accessibility best practices */
68
+ }
69
+
70
+ [data-interactive="skip-link"]:focus {
71
+ position: fixed;
72
+ left: var(--skip-link-focus-left, 1rem);
73
+ top: var(--skip-link-focus-top, 1rem);
74
+ z-index: var(--skip-link-focus-z, 50);
75
+ border-radius: var(--skip-link-focus-radius, 0.375rem);
76
+ background-color: var(--accent);
77
+ padding-left: var(--skip-link-focus-px, 1rem);
78
+ padding-right: var(--skip-link-focus-px, 1rem);
79
+ padding-top: var(--skip-link-focus-py, 0.5rem);
80
+ padding-bottom: var(--skip-link-focus-py, 0.5rem);
81
+ font-size: var(--skip-link-focus-font-size, 0.875rem);
82
+ font-weight: var(--skip-link-focus-font-weight, 500);
83
+ color: var(--accent-foreground);
84
+ }
85
+
86
+ /* Component-level interaction variants */
87
+ @layer components {
88
+ /* Card interaction variants */
89
+ [data-slot="card"][data-interactive="true"],
90
+ .card-interactive {
91
+ --card-hover-scale: var(--card-hover-scale, 1.02);
92
+ --card-hover-bg: var(--card-hover-bg, transparent);
93
+ --card-hover-shadow: var(--card-hover-shadow, 0 10px 25px -5px rgb(0 0 0 / 0.1));
94
+ --card-hover-translate-y: var(--card-hover-translate-y, 0px);
95
+ --card-hover-translate-x: var(--card-hover-translate-x, 0px);
96
+
97
+ transition: transform var(--card-transition-duration, 150ms) var(--card-transition-easing, ease-out),
98
+ background-color var(--card-transition-duration, 150ms) var(--card-transition-easing, ease-out),
99
+ box-shadow var(--card-transition-duration, 150ms) var(--card-transition-easing, ease-out);
100
+ }
101
+
102
+ [data-slot="card"][data-interactive="true"]:hover,
103
+ .card-interactive:hover {
104
+ transform: scale(var(--card-hover-scale))
105
+ translateX(var(--card-hover-translate-x))
106
+ translateY(var(--card-hover-translate-y));
107
+ background-color: var(--card-hover-bg);
108
+ box-shadow: var(--card-hover-shadow);
109
+ }
110
+
111
+ [data-slot="card"][data-interactive="true"].motion-reduce:hover,
112
+ .card-interactive.motion-reduce:hover {
113
+ transform: scale(1) translateX(0) translateY(0);
114
+ }
115
+
116
+ /* Navigation link interaction variants */
117
+ [data-slot="nav-link"][data-interactive="true"],
118
+ .nav-link-interactive {
119
+ --nav-link-hover-color: var(--nav-link-hover-color, var(--foreground));
120
+ --nav-link-hover-bg: var(--nav-link-hover-bg, transparent);
121
+ --nav-link-transition: var(--nav-link-transition, color 150ms ease);
122
+
123
+ transition: var(--nav-link-transition);
124
+ }
125
+
126
+ [data-slot="nav-link"][data-interactive="true"]:hover,
127
+ .nav-link-interactive:hover {
128
+ color: var(--nav-link-hover-color);
129
+ background-color: var(--nav-link-hover-bg);
130
+ }
131
+
132
+ /* Navigation button interaction variants */
133
+ [data-slot="nav-button"][data-interactive="true"],
134
+ .nav-button-interactive {
135
+ --nav-button-hover-bg: var(--nav-button-hover-bg, var(--muted));
136
+ --nav-button-hover-color: var(--nav-button-hover-color, var(--foreground));
137
+ --nav-button-transition: var(--nav-button-transition, background-color 150ms ease);
138
+
139
+ transition: var(--nav-button-transition);
140
+ }
141
+
142
+ [data-slot="nav-button"][data-interactive="true"]:hover,
143
+ .nav-button-interactive:hover {
144
+ background-color: var(--nav-button-hover-bg);
145
+ color: var(--nav-button-hover-color);
146
+ }
147
+
148
+ /* Generic link interaction variants */
149
+ [data-slot="link"][data-interactive="true"],
150
+ .link-interactive {
151
+ --link-hover-color: var(--link-hover-color, var(--foreground));
152
+ --link-transition: var(--link-transition, color 150ms ease);
153
+
154
+ transition: var(--link-transition);
155
+ }
156
+
157
+ [data-slot="link"][data-interactive="true"]:hover,
158
+ .link-interactive:hover {
159
+ color: var(--link-hover-color);
160
+ }
161
+
162
+ /* Skip link interaction variants */
163
+ [data-slot="skip-link"][data-interactive="true"],
164
+ .skip-link-interactive {
165
+ /* Skip links should always follow accessibility best practices */
166
+ }
167
+
168
+ [data-slot="skip-link"][data-interactive="true"]:focus,
169
+ .skip-link-interactive:focus {
170
+ position: fixed;
171
+ left: var(--skip-link-focus-left, 1rem);
172
+ top: var(--skip-link-focus-top, 1rem);
173
+ z-index: var(--skip-link-focus-z, 50);
174
+ border-radius: var(--skip-link-focus-radius, 0.375rem);
175
+ background-color: var(--accent);
176
+ padding-left: var(--skip-link-focus-px, 1rem);
177
+ padding-right: var(--skip-link-focus-px, 1rem);
178
+ padding-top: var(--skip-link-focus-py, 0.5rem);
179
+ padding-bottom: var(--skip-link-focus-py, 0.5rem);
180
+ font-size: var(--skip-link-focus-font-size, 0.875rem);
181
+ font-weight: var(--skip-link-focus-font-weight, 500);
182
+ color: var(--accent-foreground);
183
+ }
184
+ }
185
+
186
+ /* Fallback utility classes for backward compatibility */
187
+ .interactive-card {
188
+ --card-hover-scale: var(--card-hover-scale, 1.02);
189
+ --card-hover-bg: var(--card-hover-bg, transparent);
190
+ --card-hover-shadow: var(--card-hover-shadow, 0 10px 25px -5px rgb(0 0 0 / 0.1));
191
+ --card-hover-translate-y: var(--card-hover-translate-y, 0px);
192
+ --card-hover-translate-x: var(--card-hover-translate-x, 0px);
193
+
194
+ transition: transform var(--card-transition-duration, 150ms) var(--card-transition-easing, ease-out),
195
+ background-color var(--card-transition-duration, 150ms) var(--card-transition-easing, ease-out),
196
+ box-shadow var(--card-transition-duration, 150ms) var(--card-transition-easing, ease-out);
197
+ }
198
+
199
+ .interactive-card:hover {
200
+ transform: scale(var(--card-hover-scale))
201
+ translateX(var(--card-hover-translate-x))
202
+ translateY(var(--card-hover-translate-y));
203
+ background-color: var(--card-hover-bg);
204
+ box-shadow: var(--card-hover-shadow);
205
+ }
206
+
207
+ .interactive-card:hover.motion-reduce {
208
+ transform: scale(1) translateX(0) translateY(0);
209
+ }
210
+
211
+ .interactive-nav-link {
212
+ --nav-link-hover-color: var(--nav-link-hover-color, var(--foreground));
213
+ --nav-link-hover-bg: var(--nav-link-hover-bg, transparent);
214
+ --nav-link-transition: var(--nav-link-transition, color 150ms ease);
215
+
216
+ transition: var(--nav-link-transition);
217
+ }
218
+
219
+ .interactive-nav-link:hover {
220
+ color: var(--nav-link-hover-color);
221
+ background-color: var(--nav-link-hover-bg);
222
+ }
223
+
224
+ .interactive-nav-button {
225
+ --nav-button-hover-bg: var(--nav-button-hover-bg, var(--muted));
226
+ --nav-button-hover-color: var(--nav-button-hover-color, var(--foreground));
227
+ --nav-button-transition: var(--nav-button-transition, background-color 150ms ease);
228
+
229
+ transition: var(--nav-button-transition);
230
+ }
231
+
232
+ .interactive-nav-button:hover {
233
+ background-color: var(--nav-button-hover-bg);
234
+ color: var(--nav-button-hover-color);
235
+ }
236
+
237
+ .interactive-link {
238
+ --link-hover-color: var(--link-hover-color, var(--foreground));
239
+ --link-transition: var(--link-transition, color 150ms ease);
240
+
241
+ transition: var(--link-transition);
242
+ }
243
+
244
+ .interactive-link:hover {
245
+ color: var(--link-hover-color);
246
+ }
247
+ }
@@ -0,0 +1,2 @@
1
+ // CSS file
2
+ export {};
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@artivism/ux",
3
+ "version": "0.1.0",
4
+ "description": "UX interaction patterns and behaviors for Artivism Design System",
5
+ "license": "MIT",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "publishConfig": {
12
+ "access": "public"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/artivism/create.git",
17
+ "directory": "packages/ux"
18
+ },
19
+ "scripts": {
20
+ "lint": "node -e \"process.exit(0)\"",
21
+ "typecheck": "node -e \"process.exit(0)\"",
22
+ "test": "node -e \"process.exit(0)\"",
23
+ "build": "node -e \"console.log('@artivism/ux: dist already present')\""
24
+ }
25
+ }