astralkit 0.6.0 → 0.7.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "astralkit",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Design tokens and component primitives for accessible UI — Tailwind CSS v3 & v4",
5
5
  "type": "module",
6
6
  "exports": {
@@ -13,7 +13,8 @@
13
13
  "./motion": "./lib/motion.js",
14
14
  "./theme-context": "./lib/theme-context.js",
15
15
  "./ai-rules": "./ai-rules.md",
16
- "./palettes": "./palettes.css"
16
+ "./palettes": "./palettes.css",
17
+ "./presets": "./lib/presets/index.js"
17
18
  },
18
19
  "files": [
19
20
  "astralkit-theme.css",
@@ -11,7 +11,49 @@
11
11
  transition: transform var(--duration-ak-fast, 110ms) var(--ease-ak-default, ease);
12
12
  }
13
13
  .ak-press:active {
14
- transform: scale(0.98);
14
+ /* Var-driven so material appearances can re-behave the press
15
+ (neo-brutal translates, liquid squishes). Default = the house scale. */
16
+ transform: var(--ak-press-transform, scale(0.98));
17
+ }
18
+
19
+
20
+ /* -- Hover shimmer --
21
+ The house hover micro-interaction: one diagonal sheen sweep across a
22
+ filled surface on hover (same recipe as the avatar shimmer). Hidden at
23
+ rest so it can never leak a band; clipped by the element's own radius;
24
+ skipped under prefers-reduced-motion.
25
+ Usage: <button class="ak-hover-shimmer"> — for FILLED surfaces only
26
+ (a sheen over a transparent/outline surface reads as a stray flash). */
27
+ .ak-hover-shimmer {
28
+ position: relative;
29
+ overflow: hidden;
30
+ }
31
+ .ak-hover-shimmer::after {
32
+ content: '';
33
+ position: absolute;
34
+ inset: 0;
35
+ border-radius: inherit;
36
+ background: linear-gradient(
37
+ 110deg,
38
+ transparent 30%,
39
+ rgba(255, 255, 255, 0.35) 50%,
40
+ transparent 70%
41
+ );
42
+ transform: translateX(-120%);
43
+ opacity: 0;
44
+ pointer-events: none;
45
+ }
46
+ .ak-hover-shimmer:hover::after {
47
+ animation: ak-hover-shimmer-sweep 700ms cubic-bezier(0.4, 0, 0.2, 1);
48
+ }
49
+ @keyframes ak-hover-shimmer-sweep {
50
+ 0% { transform: translateX(-120%); opacity: 1; }
51
+ 100% { transform: translateX(120%); opacity: 1; }
52
+ }
53
+ @media (prefers-reduced-motion: reduce) {
54
+ .ak-hover-shimmer:hover::after {
55
+ animation: none;
56
+ }
15
57
  }
16
58
 
17
59
 
package/tailwind.cjs CHANGED
@@ -143,12 +143,12 @@ module.exports = plugin(
143
143
  'ak-on-surface': 'var(--color-ak-on-surface, var(--color-ak-text))',
144
144
  'ak-on-surface-variant': 'var(--color-ak-on-surface-variant, var(--color-ak-text-secondary))',
145
145
  'ak-outline': 'var(--color-ak-outline, var(--color-ak-border))',
146
- 'ak-outline-variant': 'var(--color-ak-outline-variant, var(--color-ak-border-subtle))',
147
- 'ak-primary-container': 'var(--color-ak-primary-container, var(--color-ak-primary-subtle))',
148
- 'ak-on-primary-container': 'var(--color-ak-on-primary-container, var(--color-ak-primary-900))',
149
- 'ak-selection-ink': 'var(--color-ak-selection-ink, var(--color-ak-on-primary-container, var(--color-ak-primary-900)))',
150
- 'ak-primary-container-emphasis': 'var(--color-ak-primary-container-emphasis, var(--color-ak-selection-ink, var(--color-ak-on-primary-container)))',
151
- 'ak-secondary': 'var(--color-ak-secondary, var(--color-ak-accent, var(--color-ak-primary)))',
146
+ 'ak-outline-variant': 'var(--color-ak-outline-variant, var(--color-ak-border-subtle))',
147
+ 'ak-primary-container': 'var(--color-ak-primary-container, var(--color-ak-primary-subtle))',
148
+ 'ak-on-primary-container': 'var(--color-ak-on-primary-container, var(--color-ak-primary-900))',
149
+ 'ak-selection-ink': 'var(--color-ak-selection-ink, var(--color-ak-on-primary-container, var(--color-ak-primary-900)))',
150
+ 'ak-primary-container-emphasis': 'var(--color-ak-primary-container-emphasis, var(--color-ak-selection-ink, var(--color-ak-on-primary-container)))',
151
+ 'ak-secondary': 'var(--color-ak-secondary, var(--color-ak-accent, var(--color-ak-primary)))',
152
152
  'ak-on-secondary': 'var(--color-ak-on-secondary, var(--color-ak-on-accent, var(--color-ak-on-primary)))',
153
153
  'ak-secondary-container': 'var(--color-ak-secondary-container, var(--color-ak-accent-soft, var(--color-ak-surface-2)))',
154
154
  'ak-on-secondary-container': 'var(--color-ak-on-secondary-container, var(--color-ak-text))',
@@ -157,6 +157,7 @@ module.exports = plugin(
157
157
  'ak-tertiary-container': 'var(--color-ak-tertiary-container, var(--color-ak-info-subtle))',
158
158
  'ak-on-tertiary-container': 'var(--color-ak-on-tertiary-container, var(--color-ak-info-text))',
159
159
  'ak-error': 'var(--color-ak-error, var(--color-ak-danger))',
160
+ 'ak-error-hover': 'var(--color-ak-error-hover, var(--color-ak-danger-hover))',
160
161
  'ak-on-error': 'var(--color-ak-on-error)',
161
162
  'ak-error-container': 'var(--color-ak-error-container, var(--color-ak-danger-subtle))',
162
163
  'ak-on-error-container': 'var(--color-ak-on-error-container, var(--color-ak-danger-text))',
@@ -191,6 +192,7 @@ module.exports = plugin(
191
192
  'ak-warning-subtle': 'var(--color-ak-warning-subtle)',
192
193
  'ak-warning-text': 'var(--color-ak-warning-text)',
193
194
  'ak-danger': 'var(--color-ak-danger)',
195
+ 'ak-danger-hover': 'var(--color-ak-danger-hover)',
194
196
  'ak-danger-subtle': 'var(--color-ak-danger-subtle)',
195
197
  'ak-danger-text': 'var(--color-ak-danger-text)',
196
198
  'ak-info': 'var(--color-ak-info)',
@@ -243,9 +245,12 @@ module.exports = plugin(
243
245
 
244
246
  /* ── Font Family ── */
245
247
  fontFamily: {
246
- 'ak-sans': ['Inter', 'system-ui', '-apple-system', 'sans-serif'],
247
- 'ak-serif': ['DM Serif Display', 'Georgia', 'serif'],
248
- 'ak-mono': ['JetBrains Mono', 'Fira Code', 'ui-monospace', 'monospace'],
248
+ // Var-driven so a container/theme can re-font at runtime by setting
249
+ // the CSS variable (the font dial). Literal stacks remain as var fallbacks.
250
+ 'ak-sans': ['var(--font-ak-sans, Inter)', 'system-ui', '-apple-system', 'sans-serif'],
251
+ 'ak-heading': ['var(--font-ak-heading, var(--font-ak-sans, Inter))', 'system-ui', 'sans-serif'],
252
+ 'ak-serif': ['var(--font-ak-serif, "DM Serif Display")', 'Georgia', 'serif'],
253
+ 'ak-mono': ['var(--font-ak-mono, "JetBrains Mono")', 'Fira Code', 'ui-monospace', 'monospace'],
249
254
  },
250
255
 
251
256
  /* ── Font Size ──
@@ -379,6 +384,7 @@ module.exports = plugin(
379
384
  'ak-3xl': 'var(--radius-ak-3xl)',
380
385
  'ak-full': 'var(--radius-ak-full)',
381
386
  'ak-input': 'var(--radius-ak-input)',
387
+ 'ak-control-sm': 'var(--radius-ak-control-sm)',
382
388
  // Neobrutalist
383
389
  'ak-brutal': 'var(--radius-ak-brutal)',
384
390
  'ak-brutal-sm': 'var(--radius-ak-brutal-sm)',