@citron-systems/citron-ds 1.0.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/README.md +149 -0
- package/dist/ai/inkblot-ai-reference.json +570 -0
- package/dist/ai/inkblot-tokens-resolved.json +199 -0
- package/dist/ai/inkblot-tokens-schema.json +54 -0
- package/dist/css/inkblot-variables.css +203 -0
- package/dist/js/inkblot-tokens.js +264 -0
- package/dist/js/inkblot-tokens.json +199 -0
- package/dist/scss/_inkblot-variables.scss +200 -0
- package/package.json +61 -0
- package/tokens/primitive/breakpoint.tokens.json +14 -0
- package/tokens/primitive/color.tokens.json +71 -0
- package/tokens/primitive/duration.tokens.json +38 -0
- package/tokens/primitive/grid.tokens.json +34 -0
- package/tokens/primitive/radius.tokens.json +26 -0
- package/tokens/primitive/shadow.tokens.json +41 -0
- package/tokens/primitive/spacing.tokens.json +38 -0
- package/tokens/primitive/typography.tokens.json +60 -0
- package/tokens/primitive/zindex.tokens.json +19 -0
- package/tokens/semantic/dark.tokens.json +43 -0
- package/tokens/semantic/inkblot.semantic.tokens.json +140 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
|
|
2
|
+
// Do not edit directly, this file was auto-generated.
|
|
3
|
+
|
|
4
|
+
$inkblot-breakpoint-sm: 640px; // Small devices
|
|
5
|
+
$inkblot-breakpoint-md: 768px; // Tablets
|
|
6
|
+
$inkblot-breakpoint-lg: 1024px; // Laptops
|
|
7
|
+
$inkblot-breakpoint-xl: 1280px; // Desktops
|
|
8
|
+
$inkblot-breakpoint-2xl: 1536px; // Large screens
|
|
9
|
+
$inkblot-color-neutral-white: #ffffff; // Pure white, floating surfaces
|
|
10
|
+
$inkblot-color-neutral-gray-50: #fafaf7; // Warm off-white, body background
|
|
11
|
+
$inkblot-color-neutral-gray-100: #f5f4f0; // Warm surface, secondary bg
|
|
12
|
+
$inkblot-color-neutral-gray-200: #eae9e3; // Subtle warm border, dividers
|
|
13
|
+
$inkblot-color-neutral-gray-300: #d4d3cb; // Medium warm border
|
|
14
|
+
$inkblot-color-neutral-gray-400: #93928a; // Placeholder text, muted
|
|
15
|
+
$inkblot-color-neutral-gray-500: #6b6a63; // Secondary text
|
|
16
|
+
$inkblot-color-neutral-gray-600: #4d4c47; // Emphasized secondary
|
|
17
|
+
$inkblot-color-neutral-gray-700: #3a3935; // Strong text
|
|
18
|
+
$inkblot-color-neutral-gray-800: #2d2c28; // Deep warm dark
|
|
19
|
+
$inkblot-color-neutral-gray-900: #1d1c19; // Primary text — deep slate, never pure black
|
|
20
|
+
$inkblot-color-neutral-gray-950: #0f0e0c; // Deepest warm black
|
|
21
|
+
$inkblot-color-accent-citron-50: #fdfbf3; // Barely there citron wash
|
|
22
|
+
$inkblot-color-accent-citron-100: #faf4df; // Soft cream tint
|
|
23
|
+
$inkblot-color-accent-citron-200: #f3e6b8; // Warm wheat
|
|
24
|
+
$inkblot-color-accent-citron-300: #e8d38a; // Light honey
|
|
25
|
+
$inkblot-color-accent-citron-400: #d9bc58; // Citrus glow
|
|
26
|
+
$inkblot-color-accent-citron-500: #c4a030; // Citron primary — the brand tone
|
|
27
|
+
$inkblot-color-accent-citron-600: #a38427; // Deep citron, hover state
|
|
28
|
+
$inkblot-color-accent-citron-700: #7f671f; // Rich amber
|
|
29
|
+
$inkblot-color-accent-citron-800: #5c4a18; // Dark citron
|
|
30
|
+
$inkblot-color-accent-citron-900: #3d3111; // Deepest citron
|
|
31
|
+
$inkblot-color-semantic-success-light: #3d9e50; // Warm success green
|
|
32
|
+
$inkblot-color-semantic-success-main: #358c46; // Primary success
|
|
33
|
+
$inkblot-color-semantic-success-dark: #2a7538; // Success hover
|
|
34
|
+
$inkblot-color-semantic-warning-light: #e0a020; // Warm amber warning
|
|
35
|
+
$inkblot-color-semantic-warning-main: #c48c1a; // Primary warning — distinct from citron by saturation
|
|
36
|
+
$inkblot-color-semantic-warning-dark: #a67515; // Warning hover
|
|
37
|
+
$inkblot-color-semantic-error-light: #d14940; // Warm red
|
|
38
|
+
$inkblot-color-semantic-error-main: #be3e35; // Primary error
|
|
39
|
+
$inkblot-color-semantic-error-dark: #a3352d; // Error hover
|
|
40
|
+
$inkblot-color-semantic-info-light: #6ba3c2; // Muted warm blue
|
|
41
|
+
$inkblot-color-semantic-info-main: #5790ad; // Primary info — desaturated, warm
|
|
42
|
+
$inkblot-color-semantic-info-dark: #497a94; // Info hover
|
|
43
|
+
$inkblot-duration-instant: 0ms; // No animation
|
|
44
|
+
$inkblot-duration-fast: 120ms; // Micro-interactions, hovers — fast enough to feel physical
|
|
45
|
+
$inkblot-duration-normal: 200ms; // Standard transitions
|
|
46
|
+
$inkblot-duration-slow: 320ms; // Complex transitions, enter/exit
|
|
47
|
+
$inkblot-duration-slower: 500ms; // Page-level transitions, long reveals
|
|
48
|
+
$inkblot-easing-default: cubic-bezier(0.25, 0.1, 0.25, 1); // Standard ease — natural deceleration
|
|
49
|
+
$inkblot-easing-in: cubic-bezier(0.32, 0, 0.67, 0); // Ease in — for exits, things leaving
|
|
50
|
+
$inkblot-easing-out: cubic-bezier(0.33, 1, 0.68, 1); // Ease out — for entrances, things arriving
|
|
51
|
+
$inkblot-easing-in-out: cubic-bezier(0.65, 0, 0.35, 1); // Ease in-out — for position changes, transforms
|
|
52
|
+
$inkblot-easing-expressive: cubic-bezier(0.22, 1, 0.36, 1); // Expressive ease-out — smooth, confident arrival. Replaces bounce.
|
|
53
|
+
$inkblot-grid-columns-mobile: 4rem; // 4-column grid for < 640px
|
|
54
|
+
$inkblot-grid-columns-tablet: 8rem; // 8-column grid for 640–1023px
|
|
55
|
+
$inkblot-grid-columns-desktop: 12rem; // 12-column grid for 1024–1535px
|
|
56
|
+
$inkblot-grid-columns-wide: 16rem; // 16-column grid for 1536px+
|
|
57
|
+
$inkblot-grid-columns-max: 24rem; // 24-column grid for complex dashboards
|
|
58
|
+
$inkblot-grid-gutter-sm: 0.5rem; // 8px - compact mobile gutter
|
|
59
|
+
$inkblot-grid-gutter-md: 1rem; // 16px - standard gutter
|
|
60
|
+
$inkblot-grid-gutter-lg: 1.5rem; // 24px - spacious desktop gutter
|
|
61
|
+
$inkblot-grid-gutter-xl: 2rem; // 32px - wide layout gutter
|
|
62
|
+
$inkblot-grid-margin-mobile: 1rem; // 16px page margin on mobile
|
|
63
|
+
$inkblot-grid-margin-tablet: 2rem; // 32px page margin on tablet
|
|
64
|
+
$inkblot-grid-margin-desktop: 4rem; // 64px page margin on desktop
|
|
65
|
+
$inkblot-grid-margin-wide: auto; // Auto-center on wide screens
|
|
66
|
+
$inkblot-grid-max-width-content: 768px; // Max width for readable content
|
|
67
|
+
$inkblot-grid-max-width-container: 1200px; // Max width for standard layouts
|
|
68
|
+
$inkblot-grid-max-width-wide: 1440px; // Max width for wide layouts
|
|
69
|
+
$inkblot-grid-max-width-full: 1920px; // Max width for full-bleed
|
|
70
|
+
$inkblot-radius-none: 0; // No rounding
|
|
71
|
+
$inkblot-radius-sm: 6px; // Subtle rounding, chips
|
|
72
|
+
$inkblot-radius-md: 10px; // Inputs, small cards
|
|
73
|
+
$inkblot-radius-lg: 14px; // Buttons, interactive elements
|
|
74
|
+
$inkblot-radius-xl: 18px; // Cards, modals
|
|
75
|
+
$inkblot-radius-2xl: 24px; // Large surfaces, hero cards
|
|
76
|
+
$inkblot-radius-full: 9999px; // Pills, avatars, toggles
|
|
77
|
+
$inkblot-border-width-none: 0; // No border
|
|
78
|
+
$inkblot-border-width-thin: 1px; // Subtle dividers, the default
|
|
79
|
+
$inkblot-border-width-medium: 2px; // Focus rings
|
|
80
|
+
$inkblot-border-width-thick: 3px; // Strong emphasis, rarely used
|
|
81
|
+
$inkblot-shadow-none: none; // No shadow
|
|
82
|
+
$inkblot-shadow-xs: 0 1px 2px 0 rgba(29, 28, 25, 0.04); // Barely there lift
|
|
83
|
+
$inkblot-shadow-sm: 0 2px 8px -1px rgba(29, 28, 25, 0.06), 0 1px 3px -1px rgba(29, 28, 25, 0.04); // Cards — soft, warm, diffused
|
|
84
|
+
$inkblot-shadow-md: 0 4px 16px -2px rgba(29, 28, 25, 0.08), 0 2px 6px -2px rgba(29, 28, 25, 0.04); // Elevated cards, dropdowns
|
|
85
|
+
$inkblot-shadow-lg: 0 8px 24px -4px rgba(29, 28, 25, 0.10), 0 4px 10px -4px rgba(29, 28, 25, 0.04); // Modals, popovers
|
|
86
|
+
$inkblot-shadow-xl: 0 16px 40px -8px rgba(29, 28, 25, 0.12), 0 8px 16px -8px rgba(29, 28, 25, 0.04); // Maximum elevation — ambient, not harsh
|
|
87
|
+
$inkblot-opacity-disabled: 0.4; // Disabled elements
|
|
88
|
+
$inkblot-opacity-overlay: 0.45; // Modal backdrops — not too heavy
|
|
89
|
+
$inkblot-opacity-subtle: 0.6; // Secondary content
|
|
90
|
+
$inkblot-opacity-default: 1; // Full opacity
|
|
91
|
+
$inkblot-spacing-0: 0; // No spacing
|
|
92
|
+
$inkblot-spacing-1: 0.25rem; // 4px
|
|
93
|
+
$inkblot-spacing-2: 0.5rem; // 8px
|
|
94
|
+
$inkblot-spacing-3: 0.75rem; // 12px
|
|
95
|
+
$inkblot-spacing-4: 1rem; // 16px
|
|
96
|
+
$inkblot-spacing-5: 1.25rem; // 20px
|
|
97
|
+
$inkblot-spacing-6: 1.5rem; // 24px
|
|
98
|
+
$inkblot-spacing-8: 2rem; // 32px
|
|
99
|
+
$inkblot-spacing-10: 2.5rem; // 40px
|
|
100
|
+
$inkblot-spacing-12: 3rem; // 48px
|
|
101
|
+
$inkblot-spacing-16: 4rem; // 64px
|
|
102
|
+
$inkblot-spacing-20: 5rem; // 80px
|
|
103
|
+
$inkblot-spacing-24: 6rem; // 96px
|
|
104
|
+
$inkblot-spacing-32: 8rem; // 128px
|
|
105
|
+
$inkblot-size-icon-xs: 1rem; // 16px icon
|
|
106
|
+
$inkblot-size-icon-sm: 1.25rem; // 20px icon
|
|
107
|
+
$inkblot-size-icon-md: 1.5rem; // 24px icon
|
|
108
|
+
$inkblot-size-icon-lg: 2rem; // 32px icon
|
|
109
|
+
$inkblot-size-icon-xl: 2.5rem; // 40px icon
|
|
110
|
+
$inkblot-size-touch-target-min: 44px; // Minimum touch target (WCAG)
|
|
111
|
+
$inkblot-size-touch-target-comfortable: 48px; // Comfortable touch target
|
|
112
|
+
$inkblot-typography-font-family-sans: 'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; // Primary UI font — humanist, modern, highly legible
|
|
113
|
+
$inkblot-typography-font-family-mono: 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace; // Code and data
|
|
114
|
+
$inkblot-typography-font-family-display: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; // Headlines — same family, optical size variant
|
|
115
|
+
$inkblot-typography-font-size-xs: 0.75rem; // 12px — captions, meta
|
|
116
|
+
$inkblot-typography-font-size-sm: 0.8125rem; // 13px — secondary text
|
|
117
|
+
$inkblot-typography-font-size-base: 0.9375rem; // 15px — body text, slightly refined from 16
|
|
118
|
+
$inkblot-typography-font-size-md: 1.0625rem; // 17px — emphasized body
|
|
119
|
+
$inkblot-typography-font-size-lg: 1.25rem; // 20px — card titles, subheadings
|
|
120
|
+
$inkblot-typography-font-size-xl: 1.5rem; // 24px — section titles
|
|
121
|
+
$inkblot-typography-font-size-2xl: 1.75rem; // 28px — page titles
|
|
122
|
+
$inkblot-typography-font-size-3xl: 2.125rem; // 34px — hero — composed, not shouting
|
|
123
|
+
$inkblot-typography-font-size-4xl: 2.75rem; // 44px — display, rarely used
|
|
124
|
+
$inkblot-typography-font-size-5xl: 3.25rem; // 52px — maximum display
|
|
125
|
+
$inkblot-typography-font-weight-regular: 400; // Body text
|
|
126
|
+
$inkblot-typography-font-weight-medium: 500; // Emphasis, labels, card titles
|
|
127
|
+
$inkblot-typography-font-weight-semibold: 600; // Headings, buttons
|
|
128
|
+
$inkblot-typography-font-weight-bold: 700; // Strong emphasis, sparingly
|
|
129
|
+
$inkblot-typography-line-height-tight: 1.2; // Headlines
|
|
130
|
+
$inkblot-typography-line-height-snug: 1.375; // Subheadings
|
|
131
|
+
$inkblot-typography-line-height-normal: 1.5; // Body text
|
|
132
|
+
$inkblot-typography-line-height-relaxed: 1.65; // Long-form, generous breathing room
|
|
133
|
+
$inkblot-typography-line-height-loose: 1.8; // Very spacious
|
|
134
|
+
$inkblot-typography-letter-spacing-tighter: -0.04em; // Large headlines
|
|
135
|
+
$inkblot-typography-letter-spacing-tight: -0.02em; // Headings
|
|
136
|
+
$inkblot-typography-letter-spacing-normal: 0; // Body
|
|
137
|
+
$inkblot-typography-letter-spacing-wide: 0.02em; // Labels
|
|
138
|
+
$inkblot-typography-letter-spacing-wider: 0.06em; // Uppercase meta
|
|
139
|
+
$inkblot-z-index-hide: -1; // Hidden below base layer
|
|
140
|
+
$inkblot-z-index-base: 0; // Default document flow
|
|
141
|
+
$inkblot-z-index-raised: 1; // Slightly above base (cards on hover)
|
|
142
|
+
$inkblot-z-index-dropdown: 10; // Dropdowns, select menus
|
|
143
|
+
$inkblot-z-index-sticky: 20; // Sticky headers, nav bars
|
|
144
|
+
$inkblot-z-index-overlay: 30; // Backdrop overlays
|
|
145
|
+
$inkblot-z-index-modal: 40; // Modals, dialogs, sheets
|
|
146
|
+
$inkblot-z-index-popover: 50; // Popovers, tooltips
|
|
147
|
+
$inkblot-z-index-toast: 60; // Toast notifications
|
|
148
|
+
$inkblot-z-index-max: 9999; // Emergency override (avoid)
|
|
149
|
+
$inkblot-dark-color-background-primary: #12110e; // Deep warm black, not pure black
|
|
150
|
+
$inkblot-dark-color-background-secondary: #1d1c18; // Elevated warm surface
|
|
151
|
+
$inkblot-dark-color-background-tertiary: #2a2924; // Grouped content, inset
|
|
152
|
+
$inkblot-dark-color-background-inverse: #fafaf7; // Inverted to warm off-white
|
|
153
|
+
$inkblot-dark-color-text-primary: #f5f4f0; // Warm off-white text
|
|
154
|
+
$inkblot-dark-color-text-secondary: #93928a; // Warm muted text
|
|
155
|
+
$inkblot-dark-color-text-tertiary: #6b6a63; // Placeholder, hints
|
|
156
|
+
$inkblot-dark-color-text-inverse: #1d1c19; // Dark text on light
|
|
157
|
+
$inkblot-dark-color-text-link: #d9bc58; // Citron 400 — bright enough for dark bg
|
|
158
|
+
$inkblot-dark-color-text-link-hover: #e8d38a; // Citron 300 — lighter on hover
|
|
159
|
+
$inkblot-dark-color-border-default: #38372f; // Warm subtle border
|
|
160
|
+
$inkblot-dark-color-border-strong: #4d4c44; // Emphasized warm border
|
|
161
|
+
$inkblot-dark-color-border-focus: #d9bc58; // Focus ring — bright citron
|
|
162
|
+
$inkblot-dark-color-interactive-primary: #d9bc58; // Citron 400 — lighter for dark mode contrast
|
|
163
|
+
$inkblot-dark-color-interactive-primary-hover: #e8d38a; // Citron 300 — warm glow on hover
|
|
164
|
+
$inkblot-dark-color-interactive-primary-active: #c4a030; // Citron 500 — anchor on press
|
|
165
|
+
$inkblot-dark-color-interactive-secondary: #2a2924; // Warm dark secondary
|
|
166
|
+
$inkblot-dark-color-interactive-secondary-hover: #38372f; // Warm dark hover
|
|
167
|
+
$inkblot-dark-color-status-success: #4cb864; // Bright warm green on dark
|
|
168
|
+
$inkblot-dark-color-status-warning: #e0a020; // Warm amber on dark
|
|
169
|
+
$inkblot-dark-color-status-error: #e05a52; // Warm red on dark
|
|
170
|
+
$inkblot-dark-color-status-info: #7ab8d6; // Soft warm blue on dark
|
|
171
|
+
$inkblot-semantic-color-background-primary: $inkblot-color-neutral-gray-50; // Body background — warm off-white with barely perceptible beige
|
|
172
|
+
$inkblot-semantic-color-background-secondary: $inkblot-color-neutral-white; // Elevated surfaces — clean white floating above base
|
|
173
|
+
$inkblot-semantic-color-background-tertiary: $inkblot-color-neutral-gray-100; // Grouped content, inset areas
|
|
174
|
+
$inkblot-semantic-color-background-inverse: $inkblot-color-neutral-gray-900; // Inverted surfaces
|
|
175
|
+
$inkblot-semantic-color-text-primary: $inkblot-color-neutral-gray-900; // Primary text — deep warm slate, never pure black
|
|
176
|
+
$inkblot-semantic-color-text-secondary: $inkblot-color-neutral-gray-500; // Secondary text
|
|
177
|
+
$inkblot-semantic-color-text-tertiary: $inkblot-color-neutral-gray-400; // Placeholder, hints, captions
|
|
178
|
+
$inkblot-semantic-color-text-inverse: $inkblot-color-neutral-white; // Text on dark surfaces
|
|
179
|
+
$inkblot-semantic-color-text-link: $inkblot-color-accent-citron-600; // Links — deep citron for readability
|
|
180
|
+
$inkblot-semantic-color-text-link-hover: $inkblot-color-accent-citron-700; // Link hover
|
|
181
|
+
$inkblot-semantic-color-border-default: $inkblot-color-neutral-gray-200; // Subtle warm dividers
|
|
182
|
+
$inkblot-semantic-color-border-strong: $inkblot-color-neutral-gray-300; // Emphasized borders
|
|
183
|
+
$inkblot-semantic-color-border-focus: $inkblot-color-accent-citron-500; // Focus ring — citron accent
|
|
184
|
+
$inkblot-semantic-color-interactive-primary: $inkblot-color-accent-citron-500; // Primary CTA — confident citron
|
|
185
|
+
$inkblot-semantic-color-interactive-primary-hover: $inkblot-color-accent-citron-600; // Primary hover — deeper, subtle shift
|
|
186
|
+
$inkblot-semantic-color-interactive-primary-active: $inkblot-color-accent-citron-700; // Primary pressed
|
|
187
|
+
$inkblot-semantic-color-interactive-secondary: $inkblot-color-neutral-gray-100; // Secondary surfaces with subtle depth
|
|
188
|
+
$inkblot-semantic-color-interactive-secondary-hover: $inkblot-color-neutral-gray-200; // Secondary hover
|
|
189
|
+
$inkblot-semantic-color-status-success: $inkblot-color-semantic-success-main; // Success state
|
|
190
|
+
$inkblot-semantic-color-status-warning: $inkblot-color-semantic-warning-main; // Warning state
|
|
191
|
+
$inkblot-semantic-color-status-error: $inkblot-color-semantic-error-main; // Error state
|
|
192
|
+
$inkblot-semantic-color-status-info: $inkblot-color-semantic-info-main; // Info state
|
|
193
|
+
$inkblot-semantic-typography-heading-1: $inkblot-typography-font-weight-semibold $inkblot-typography-font-size-3xl/$inkblot-typography-line-height-tight $inkblot-typography-font-family-display; // Page title — composed, not dramatic
|
|
194
|
+
$inkblot-semantic-typography-heading-2: $inkblot-typography-font-weight-semibold $inkblot-typography-font-size-2xl/$inkblot-typography-line-height-tight $inkblot-typography-font-family-display; // Section title
|
|
195
|
+
$inkblot-semantic-typography-heading-3: $inkblot-typography-font-weight-medium $inkblot-typography-font-size-xl/$inkblot-typography-line-height-snug $inkblot-typography-font-family-sans; // Subsection title
|
|
196
|
+
$inkblot-semantic-typography-heading-4: $inkblot-typography-font-weight-medium $inkblot-typography-font-size-lg/$inkblot-typography-line-height-snug $inkblot-typography-font-family-sans; // Card title
|
|
197
|
+
$inkblot-semantic-typography-body-default: $inkblot-typography-font-weight-regular $inkblot-typography-font-size-base/$inkblot-typography-line-height-normal $inkblot-typography-font-family-sans; // Body text
|
|
198
|
+
$inkblot-semantic-typography-body-small: $inkblot-typography-font-weight-regular $inkblot-typography-font-size-sm/$inkblot-typography-line-height-normal $inkblot-typography-font-family-sans; // Small body, captions
|
|
199
|
+
$inkblot-semantic-typography-body-large: $inkblot-typography-font-weight-regular $inkblot-typography-font-size-md/$inkblot-typography-line-height-relaxed $inkblot-typography-font-family-sans; // Emphasized body
|
|
200
|
+
$inkblot-semantic-typography-label-default: $inkblot-typography-font-weight-medium $inkblot-typography-font-size-xs/$inkblot-typography-line-height-normal $inkblot-typography-font-family-sans; // Form labels, badges
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@citron-systems/citron-ds",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Inkblot Studio design token system — Apple-inspired, accessible, AI-ready. Citron design language.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/js/inkblot-tokens.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./dist/js/inkblot-tokens.js",
|
|
9
|
+
"./css": "./dist/css/inkblot-variables.css",
|
|
10
|
+
"./scss": "./dist/scss/_inkblot-variables.scss",
|
|
11
|
+
"./tokens": "./dist/ai/inkblot-tokens-resolved.json",
|
|
12
|
+
"./ai-reference": "./dist/ai/inkblot-ai-reference.json"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"tokens",
|
|
17
|
+
"README.md"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "style-dictionary build --config style-dictionary.config.js && node -e \"require('fs').copyFileSync('system/inkblot-ai-reference.json', 'dist/ai/inkblot-ai-reference.json')\"",
|
|
21
|
+
"build:tokens": "style-dictionary build --config style-dictionary.config.js",
|
|
22
|
+
"dev": "concurrently \"npm run build:watch\" \"vite\"",
|
|
23
|
+
"build:watch": "chokidar \"tokens/**/*.json\" -c \"npm run build\"",
|
|
24
|
+
"preview": "vite preview",
|
|
25
|
+
"prepublishOnly": "npm run build"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"design-tokens",
|
|
29
|
+
"design-system",
|
|
30
|
+
"inkblot-studio",
|
|
31
|
+
"citron",
|
|
32
|
+
"style-dictionary",
|
|
33
|
+
"css-variables",
|
|
34
|
+
"scss",
|
|
35
|
+
"wcag",
|
|
36
|
+
"accessibility",
|
|
37
|
+
"ai-ready"
|
|
38
|
+
],
|
|
39
|
+
"author": "Inkblot Studio",
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "https://github.com/GHDryanovski19/inkblot-studio-design-tokens.git"
|
|
44
|
+
},
|
|
45
|
+
"bugs": {
|
|
46
|
+
"url": "https://github.com/GHDryanovski19/inkblot-studio-design-tokens/issues"
|
|
47
|
+
},
|
|
48
|
+
"homepage": "https://github.com/GHDryanovski19/inkblot-studio-design-tokens#readme",
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": ">=18"
|
|
51
|
+
},
|
|
52
|
+
"unpkg": "dist/css/inkblot-variables.css",
|
|
53
|
+
"jsdelivr": "dist/css/inkblot-variables.css",
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"chokidar-cli": "^3.0.0",
|
|
56
|
+
"concurrently": "^8.2.2",
|
|
57
|
+
"style-dictionary": "^4.0.0",
|
|
58
|
+
"vite": "^5.4.0",
|
|
59
|
+
"vite-plugin-live-reload": "^3.0.1"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Inkblot Studio breakpoints. Mobile-first responsive design.",
|
|
3
|
+
"inkblot": {
|
|
4
|
+
"breakpoint": {
|
|
5
|
+
"$type": "dimension",
|
|
6
|
+
"$description": "Viewport breakpoints for responsive layouts",
|
|
7
|
+
"sm": { "$value": "640px", "$description": "Small devices" },
|
|
8
|
+
"md": { "$value": "768px", "$description": "Tablets" },
|
|
9
|
+
"lg": { "$value": "1024px", "$description": "Laptops" },
|
|
10
|
+
"xl": { "$value": "1280px", "$description": "Desktops" },
|
|
11
|
+
"2xl": { "$value": "1536px", "$description": "Large screens" }
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Citron primitive color palette. Warm, restrained, premium. Citrus interpreted through restraint and taste — never literal, never loud.",
|
|
3
|
+
"inkblot": {
|
|
4
|
+
"$description": "Inkblot Studio — Citron product line",
|
|
5
|
+
"color": {
|
|
6
|
+
"$type": "color",
|
|
7
|
+
"$description": "Base color primitives — use semantic tokens in components, never raw primitives",
|
|
8
|
+
"neutral": {
|
|
9
|
+
"$type": "color",
|
|
10
|
+
"$description": "Warm neutrals with barely perceptible beige undertone. No blue-tinted greys.",
|
|
11
|
+
"white": {
|
|
12
|
+
"$value": "#ffffff",
|
|
13
|
+
"$description": "Pure white, floating surfaces"
|
|
14
|
+
},
|
|
15
|
+
"gray": {
|
|
16
|
+
"50": { "$value": "#fafaf7", "$description": "Warm off-white, body background" },
|
|
17
|
+
"100": { "$value": "#f5f4f0", "$description": "Warm surface, secondary bg" },
|
|
18
|
+
"200": { "$value": "#eae9e3", "$description": "Subtle warm border, dividers" },
|
|
19
|
+
"300": { "$value": "#d4d3cb", "$description": "Medium warm border" },
|
|
20
|
+
"400": { "$value": "#93928a", "$description": "Placeholder text, muted" },
|
|
21
|
+
"500": { "$value": "#6b6a63", "$description": "Secondary text" },
|
|
22
|
+
"600": { "$value": "#4d4c47", "$description": "Emphasized secondary" },
|
|
23
|
+
"700": { "$value": "#3a3935", "$description": "Strong text" },
|
|
24
|
+
"800": { "$value": "#2d2c28", "$description": "Deep warm dark" },
|
|
25
|
+
"900": { "$value": "#1d1c19", "$description": "Primary text — deep slate, never pure black" },
|
|
26
|
+
"950": { "$value": "#0f0e0c", "$description": "Deepest warm black" }
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"accent": {
|
|
30
|
+
"$type": "color",
|
|
31
|
+
"$description": "Citron brand accent — refined citrus-amber, used sparingly for emphasis. Warm light through citrus peel.",
|
|
32
|
+
"citron": {
|
|
33
|
+
"50": { "$value": "#fdfbf3", "$description": "Barely there citron wash" },
|
|
34
|
+
"100": { "$value": "#faf4df", "$description": "Soft cream tint" },
|
|
35
|
+
"200": { "$value": "#f3e6b8", "$description": "Warm wheat" },
|
|
36
|
+
"300": { "$value": "#e8d38a", "$description": "Light honey" },
|
|
37
|
+
"400": { "$value": "#d9bc58", "$description": "Citrus glow" },
|
|
38
|
+
"500": { "$value": "#c4a030", "$description": "Citron primary — the brand tone" },
|
|
39
|
+
"600": { "$value": "#a38427", "$description": "Deep citron, hover state" },
|
|
40
|
+
"700": { "$value": "#7f671f", "$description": "Rich amber" },
|
|
41
|
+
"800": { "$value": "#5c4a18", "$description": "Dark citron" },
|
|
42
|
+
"900": { "$value": "#3d3111", "$description": "Deepest citron" }
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"semantic": {
|
|
46
|
+
"$type": "color",
|
|
47
|
+
"$description": "Status colors — warm-shifted for cohesion, fully accessible",
|
|
48
|
+
"success": {
|
|
49
|
+
"light": { "$value": "#3d9e50", "$description": "Warm success green" },
|
|
50
|
+
"main": { "$value": "#358c46", "$description": "Primary success" },
|
|
51
|
+
"dark": { "$value": "#2a7538", "$description": "Success hover" }
|
|
52
|
+
},
|
|
53
|
+
"warning": {
|
|
54
|
+
"light": { "$value": "#e0a020", "$description": "Warm amber warning" },
|
|
55
|
+
"main": { "$value": "#c48c1a", "$description": "Primary warning — distinct from citron by saturation" },
|
|
56
|
+
"dark": { "$value": "#a67515", "$description": "Warning hover" }
|
|
57
|
+
},
|
|
58
|
+
"error": {
|
|
59
|
+
"light": { "$value": "#d14940", "$description": "Warm red" },
|
|
60
|
+
"main": { "$value": "#be3e35", "$description": "Primary error" },
|
|
61
|
+
"dark": { "$value": "#a3352d", "$description": "Error hover" }
|
|
62
|
+
},
|
|
63
|
+
"info": {
|
|
64
|
+
"light": { "$value": "#6ba3c2", "$description": "Muted warm blue" },
|
|
65
|
+
"main": { "$value": "#5790ad", "$description": "Primary info — desaturated, warm" },
|
|
66
|
+
"dark": { "$value": "#497a94", "$description": "Info hover" }
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Citron motion. Fast, smooth, physical. No bounce, no overshoot. Transitions feel like light responding to touch.",
|
|
3
|
+
"inkblot": {
|
|
4
|
+
"duration": {
|
|
5
|
+
"$type": "duration",
|
|
6
|
+
"$description": "Animation durations — snappy, never playful",
|
|
7
|
+
"instant": { "$value": "0ms", "$description": "No animation" },
|
|
8
|
+
"fast": { "$value": "120ms", "$description": "Micro-interactions, hovers — fast enough to feel physical" },
|
|
9
|
+
"normal": { "$value": "200ms", "$description": "Standard transitions" },
|
|
10
|
+
"slow": { "$value": "320ms", "$description": "Complex transitions, enter/exit" },
|
|
11
|
+
"slower": { "$value": "500ms", "$description": "Page-level transitions, long reveals" }
|
|
12
|
+
},
|
|
13
|
+
"easing": {
|
|
14
|
+
"$type": "cubicBezier",
|
|
15
|
+
"$description": "Easing curves — smooth, physical, never bouncy",
|
|
16
|
+
"default": {
|
|
17
|
+
"$value": [0.25, 0.1, 0.25, 1],
|
|
18
|
+
"$description": "Standard ease — natural deceleration"
|
|
19
|
+
},
|
|
20
|
+
"in": {
|
|
21
|
+
"$value": [0.32, 0, 0.67, 0],
|
|
22
|
+
"$description": "Ease in — for exits, things leaving"
|
|
23
|
+
},
|
|
24
|
+
"out": {
|
|
25
|
+
"$value": [0.33, 1, 0.68, 1],
|
|
26
|
+
"$description": "Ease out — for entrances, things arriving"
|
|
27
|
+
},
|
|
28
|
+
"inOut": {
|
|
29
|
+
"$value": [0.65, 0, 0.35, 1],
|
|
30
|
+
"$description": "Ease in-out — for position changes, transforms"
|
|
31
|
+
},
|
|
32
|
+
"expressive": {
|
|
33
|
+
"$value": [0.22, 1, 0.36, 1],
|
|
34
|
+
"$description": "Expressive ease-out — smooth, confident arrival. Replaces bounce."
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Inkblot Studio grid and layout tokens. Modular column system scaling 4–24 columns.",
|
|
3
|
+
"inkblot": {
|
|
4
|
+
"grid": {
|
|
5
|
+
"$type": "dimension",
|
|
6
|
+
"$description": "Grid system tokens for responsive, adaptive layouts",
|
|
7
|
+
"columns": {
|
|
8
|
+
"mobile": { "$value": "4", "$description": "4-column grid for < 640px" },
|
|
9
|
+
"tablet": { "$value": "8", "$description": "8-column grid for 640–1023px" },
|
|
10
|
+
"desktop": { "$value": "12", "$description": "12-column grid for 1024–1535px" },
|
|
11
|
+
"wide": { "$value": "16", "$description": "16-column grid for 1536px+" },
|
|
12
|
+
"max": { "$value": "24", "$description": "24-column grid for complex dashboards" }
|
|
13
|
+
},
|
|
14
|
+
"gutter": {
|
|
15
|
+
"sm": { "$value": "0.5rem", "$description": "8px - compact mobile gutter" },
|
|
16
|
+
"md": { "$value": "1rem", "$description": "16px - standard gutter" },
|
|
17
|
+
"lg": { "$value": "1.5rem", "$description": "24px - spacious desktop gutter" },
|
|
18
|
+
"xl": { "$value": "2rem", "$description": "32px - wide layout gutter" }
|
|
19
|
+
},
|
|
20
|
+
"margin": {
|
|
21
|
+
"mobile": { "$value": "1rem", "$description": "16px page margin on mobile" },
|
|
22
|
+
"tablet": { "$value": "2rem", "$description": "32px page margin on tablet" },
|
|
23
|
+
"desktop": { "$value": "4rem", "$description": "64px page margin on desktop" },
|
|
24
|
+
"wide": { "$value": "auto", "$description": "Auto-center on wide screens" }
|
|
25
|
+
},
|
|
26
|
+
"maxWidth": {
|
|
27
|
+
"content": { "$value": "768px", "$description": "Max width for readable content" },
|
|
28
|
+
"container": { "$value": "1200px", "$description": "Max width for standard layouts" },
|
|
29
|
+
"wide": { "$value": "1440px", "$description": "Max width for wide layouts" },
|
|
30
|
+
"full": { "$value": "1920px", "$description": "Max width for full-bleed" }
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Citron border radius. Soft, premium — 14-16px for interactive elements, generously rounded surfaces.",
|
|
3
|
+
"inkblot": {
|
|
4
|
+
"radius": {
|
|
5
|
+
"$type": "dimension",
|
|
6
|
+
"$description": "Border radius scale — smooth, never sharp",
|
|
7
|
+
"none": { "$value": "0", "$description": "No rounding" },
|
|
8
|
+
"sm": { "$value": "6px", "$description": "Subtle rounding, chips" },
|
|
9
|
+
"md": { "$value": "10px", "$description": "Inputs, small cards" },
|
|
10
|
+
"lg": { "$value": "14px", "$description": "Buttons, interactive elements" },
|
|
11
|
+
"xl": { "$value": "18px", "$description": "Cards, modals" },
|
|
12
|
+
"2xl": { "$value": "24px", "$description": "Large surfaces, hero cards" },
|
|
13
|
+
"full": { "$value": "9999px", "$description": "Pills, avatars, toggles" }
|
|
14
|
+
},
|
|
15
|
+
"border": {
|
|
16
|
+
"$type": "dimension",
|
|
17
|
+
"$description": "Border widths — minimal, no heavy borders",
|
|
18
|
+
"width": {
|
|
19
|
+
"none": { "$value": "0", "$description": "No border" },
|
|
20
|
+
"thin": { "$value": "1px", "$description": "Subtle dividers, the default" },
|
|
21
|
+
"medium": { "$value": "2px", "$description": "Focus rings" },
|
|
22
|
+
"thick": { "$value": "3px", "$description": "Strong emphasis, rarely used" }
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Citron elevation. Warm, diffused shadows — like studio lighting on matte paper. No harsh depth.",
|
|
3
|
+
"inkblot": {
|
|
4
|
+
"shadow": {
|
|
5
|
+
"$type": "shadow",
|
|
6
|
+
"$description": "Box shadows — warm-tinted, diffused. Cards should feel like floating matte paper.",
|
|
7
|
+
"none": {
|
|
8
|
+
"$value": "none",
|
|
9
|
+
"$description": "No shadow"
|
|
10
|
+
},
|
|
11
|
+
"xs": {
|
|
12
|
+
"$value": "0 1px 2px 0 rgba(29, 28, 25, 0.04)",
|
|
13
|
+
"$description": "Barely there lift"
|
|
14
|
+
},
|
|
15
|
+
"sm": {
|
|
16
|
+
"$value": "0 2px 8px -1px rgba(29, 28, 25, 0.06), 0 1px 3px -1px rgba(29, 28, 25, 0.04)",
|
|
17
|
+
"$description": "Cards — soft, warm, diffused"
|
|
18
|
+
},
|
|
19
|
+
"md": {
|
|
20
|
+
"$value": "0 4px 16px -2px rgba(29, 28, 25, 0.08), 0 2px 6px -2px rgba(29, 28, 25, 0.04)",
|
|
21
|
+
"$description": "Elevated cards, dropdowns"
|
|
22
|
+
},
|
|
23
|
+
"lg": {
|
|
24
|
+
"$value": "0 8px 24px -4px rgba(29, 28, 25, 0.10), 0 4px 10px -4px rgba(29, 28, 25, 0.04)",
|
|
25
|
+
"$description": "Modals, popovers"
|
|
26
|
+
},
|
|
27
|
+
"xl": {
|
|
28
|
+
"$value": "0 16px 40px -8px rgba(29, 28, 25, 0.12), 0 8px 16px -8px rgba(29, 28, 25, 0.04)",
|
|
29
|
+
"$description": "Maximum elevation — ambient, not harsh"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"opacity": {
|
|
33
|
+
"$type": "number",
|
|
34
|
+
"$description": "Opacity scale",
|
|
35
|
+
"disabled": { "$value": 0.4, "$description": "Disabled elements" },
|
|
36
|
+
"overlay": { "$value": 0.45, "$description": "Modal backdrops — not too heavy" },
|
|
37
|
+
"subtle": { "$value": 0.6, "$description": "Secondary content" },
|
|
38
|
+
"default": { "$value": 1, "$description": "Full opacity" }
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Inkblot Studio spacing scale. 4pt base grid for pixel-perfect alignment.",
|
|
3
|
+
"inkblot": {
|
|
4
|
+
"spacing": {
|
|
5
|
+
"$type": "dimension",
|
|
6
|
+
"$description": "Spacing scale - 4pt base unit",
|
|
7
|
+
"0": { "$value": "0", "$description": "No spacing" },
|
|
8
|
+
"1": { "$value": "0.25rem", "$description": "4px" },
|
|
9
|
+
"2": { "$value": "0.5rem", "$description": "8px" },
|
|
10
|
+
"3": { "$value": "0.75rem", "$description": "12px" },
|
|
11
|
+
"4": { "$value": "1rem", "$description": "16px" },
|
|
12
|
+
"5": { "$value": "1.25rem", "$description": "20px" },
|
|
13
|
+
"6": { "$value": "1.5rem", "$description": "24px" },
|
|
14
|
+
"8": { "$value": "2rem", "$description": "32px" },
|
|
15
|
+
"10": { "$value": "2.5rem", "$description": "40px" },
|
|
16
|
+
"12": { "$value": "3rem", "$description": "48px" },
|
|
17
|
+
"16": { "$value": "4rem", "$description": "64px" },
|
|
18
|
+
"20": { "$value": "5rem", "$description": "80px" },
|
|
19
|
+
"24": { "$value": "6rem", "$description": "96px" },
|
|
20
|
+
"32": { "$value": "8rem", "$description": "128px" }
|
|
21
|
+
},
|
|
22
|
+
"size": {
|
|
23
|
+
"$type": "dimension",
|
|
24
|
+
"$description": "Component sizing - icons, touch targets",
|
|
25
|
+
"icon": {
|
|
26
|
+
"xs": { "$value": "1rem", "$description": "16px icon" },
|
|
27
|
+
"sm": { "$value": "1.25rem", "$description": "20px icon" },
|
|
28
|
+
"md": { "$value": "1.5rem", "$description": "24px icon" },
|
|
29
|
+
"lg": { "$value": "2rem", "$description": "32px icon" },
|
|
30
|
+
"xl": { "$value": "2.5rem", "$description": "40px icon" }
|
|
31
|
+
},
|
|
32
|
+
"touchTarget": {
|
|
33
|
+
"min": { "$value": "44px", "$description": "Minimum touch target (WCAG)" },
|
|
34
|
+
"comfortable": { "$value": "48px", "$description": "Comfortable touch target" }
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Citron typography. Modern humanist sans-serif. Clear hierarchy through spacing and weight, not size extremes.",
|
|
3
|
+
"inkblot": {
|
|
4
|
+
"typography": {
|
|
5
|
+
"$type": "fontFamily",
|
|
6
|
+
"$description": "Font families — humanist sans-serif for warmth and readability",
|
|
7
|
+
"fontFamily": {
|
|
8
|
+
"sans": {
|
|
9
|
+
"$value": "'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
10
|
+
"$description": "Primary UI font — humanist, modern, highly legible"
|
|
11
|
+
},
|
|
12
|
+
"mono": {
|
|
13
|
+
"$value": "'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace",
|
|
14
|
+
"$description": "Code and data"
|
|
15
|
+
},
|
|
16
|
+
"display": {
|
|
17
|
+
"$value": "'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
|
|
18
|
+
"$description": "Headlines — same family, optical size variant"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"fontSize": {
|
|
22
|
+
"$type": "dimension",
|
|
23
|
+
"$description": "Type scale — restrained, intentional. No oversized dramatic headings.",
|
|
24
|
+
"xs": { "$value": "0.75rem", "$description": "12px — captions, meta" },
|
|
25
|
+
"sm": { "$value": "0.8125rem", "$description": "13px — secondary text" },
|
|
26
|
+
"base": { "$value": "0.9375rem", "$description": "15px — body text, slightly refined from 16" },
|
|
27
|
+
"md": { "$value": "1.0625rem", "$description": "17px — emphasized body" },
|
|
28
|
+
"lg": { "$value": "1.25rem", "$description": "20px — card titles, subheadings" },
|
|
29
|
+
"xl": { "$value": "1.5rem", "$description": "24px — section titles" },
|
|
30
|
+
"2xl": { "$value": "1.75rem", "$description": "28px — page titles" },
|
|
31
|
+
"3xl": { "$value": "2.125rem", "$description": "34px — hero — composed, not shouting" },
|
|
32
|
+
"4xl": { "$value": "2.75rem", "$description": "44px — display, rarely used" },
|
|
33
|
+
"5xl": { "$value": "3.25rem", "$description": "52px — maximum display" }
|
|
34
|
+
},
|
|
35
|
+
"fontWeight": {
|
|
36
|
+
"$type": "fontWeight",
|
|
37
|
+
"regular": { "$value": "400", "$description": "Body text" },
|
|
38
|
+
"medium": { "$value": "500", "$description": "Emphasis, labels, card titles" },
|
|
39
|
+
"semibold": { "$value": "600", "$description": "Headings, buttons" },
|
|
40
|
+
"bold": { "$value": "700", "$description": "Strong emphasis, sparingly" }
|
|
41
|
+
},
|
|
42
|
+
"lineHeight": {
|
|
43
|
+
"$type": "number",
|
|
44
|
+
"tight": { "$value": 1.2, "$description": "Headlines" },
|
|
45
|
+
"snug": { "$value": 1.375, "$description": "Subheadings" },
|
|
46
|
+
"normal": { "$value": 1.5, "$description": "Body text" },
|
|
47
|
+
"relaxed": { "$value": 1.65, "$description": "Long-form, generous breathing room" },
|
|
48
|
+
"loose": { "$value": 1.8, "$description": "Very spacious" }
|
|
49
|
+
},
|
|
50
|
+
"letterSpacing": {
|
|
51
|
+
"$type": "dimension",
|
|
52
|
+
"tighter": { "$value": "-0.04em", "$description": "Large headlines" },
|
|
53
|
+
"tight": { "$value": "-0.02em", "$description": "Headings" },
|
|
54
|
+
"normal": { "$value": "0", "$description": "Body" },
|
|
55
|
+
"wide": { "$value": "0.02em", "$description": "Labels" },
|
|
56
|
+
"wider": { "$value": "0.06em", "$description": "Uppercase meta" }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$description": "Inkblot Studio z-index hierarchy. Predictable layering for all UI surfaces.",
|
|
3
|
+
"inkblot": {
|
|
4
|
+
"zIndex": {
|
|
5
|
+
"$type": "number",
|
|
6
|
+
"$description": "Z-index layering scale. Never use arbitrary z-index values.",
|
|
7
|
+
"hide": { "$value": -1, "$description": "Hidden below base layer" },
|
|
8
|
+
"base": { "$value": 0, "$description": "Default document flow" },
|
|
9
|
+
"raised": { "$value": 1, "$description": "Slightly above base (cards on hover)" },
|
|
10
|
+
"dropdown": { "$value": 10, "$description": "Dropdowns, select menus" },
|
|
11
|
+
"sticky": { "$value": 20, "$description": "Sticky headers, nav bars" },
|
|
12
|
+
"overlay": { "$value": 30, "$description": "Backdrop overlays" },
|
|
13
|
+
"modal": { "$value": 40, "$description": "Modals, dialogs, sheets" },
|
|
14
|
+
"popover": { "$value": 50, "$description": "Popovers, tooltips" },
|
|
15
|
+
"toast": { "$value": 60, "$description": "Toast notifications" },
|
|
16
|
+
"max": { "$value": 9999, "$description": "Emergency override (avoid)" }
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|