@citron-systems/citron-ds 1.0.0 → 1.0.2
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 +218 -149
- package/cli/citron-mascot.mjs +117 -0
- package/dist/ai/inkblot-ai-reference.json +582 -570
- package/dist/ai/inkblot-tokens-resolved.json +25 -0
- package/dist/ai/inkblot-tokens-schema.json +54 -54
- package/dist/brand/citron-mascot-mono.svg +17 -0
- package/dist/brand/citron-mascot.svg +21 -0
- package/dist/brand/readme-hero.svg +61 -0
- package/dist/bundle/README.md +28 -0
- package/dist/bundle/ai-reference.json +582 -0
- package/dist/bundle/brand/citron-mascot-mono.svg +17 -0
- package/dist/bundle/brand/citron-mascot.svg +21 -0
- package/dist/bundle/brand/readme-hero.svg +61 -0
- package/dist/bundle/preview/mascot.html +72 -0
- package/dist/bundle/system/ai.json +168 -0
- package/dist/bundle/system/cli.json +340 -0
- package/dist/bundle/system/components.json +304 -0
- package/dist/bundle/system/content.json +168 -0
- package/dist/bundle/system/devtools.json +95 -0
- package/dist/bundle/system/foundations.json +121 -0
- package/dist/bundle/system/grid.json +101 -0
- package/dist/bundle/system/icons.json +507 -0
- package/dist/bundle/system/index.json +57 -0
- package/dist/bundle/system/inkblot-ai-reference.json +582 -0
- package/dist/bundle/system/motion.json +159 -0
- package/dist/bundle/tokens/primitive/breakpoint.tokens.json +14 -0
- package/dist/bundle/tokens/primitive/color.tokens.json +71 -0
- package/dist/bundle/tokens/primitive/devtools.palette.tokens.json +55 -0
- package/dist/bundle/tokens/primitive/duration.tokens.json +38 -0
- package/dist/bundle/tokens/primitive/grid.tokens.json +34 -0
- package/dist/bundle/tokens/primitive/radius.tokens.json +26 -0
- package/dist/bundle/tokens/primitive/shadow.tokens.json +41 -0
- package/dist/bundle/tokens/primitive/spacing.tokens.json +38 -0
- package/dist/bundle/tokens/primitive/typography.tokens.json +60 -0
- package/dist/bundle/tokens/primitive/zindex.tokens.json +19 -0
- package/dist/bundle/tokens/semantic/dark.tokens.json +43 -0
- package/dist/bundle/tokens/semantic/devtools.semantic.tokens.json +79 -0
- package/dist/bundle/tokens/semantic/inkblot.semantic.tokens.json +140 -0
- package/dist/bundle/tokens-schema.json +54 -0
- package/dist/bundle/tokens.flat.json +224 -0
- package/dist/bundle/tokens.resolved.json +224 -0
- package/dist/bundle/variables.css +228 -0
- package/dist/bundle/variables.scss +225 -0
- package/dist/css/inkblot-variables.css +25 -0
- package/dist/index.html +956 -0
- package/dist/js/inkblot-tokens.js +25 -0
- package/dist/js/inkblot-tokens.json +25 -0
- package/dist/preview/mascot.html +72 -0
- package/dist/scss/_inkblot-variables.scss +25 -0
- package/package.json +73 -61
- package/tokens/primitive/breakpoint.tokens.json +14 -14
- package/tokens/primitive/color.tokens.json +71 -71
- package/tokens/primitive/devtools.palette.tokens.json +55 -0
- package/tokens/primitive/duration.tokens.json +38 -38
- package/tokens/primitive/grid.tokens.json +34 -34
- package/tokens/primitive/radius.tokens.json +26 -26
- package/tokens/primitive/shadow.tokens.json +41 -41
- package/tokens/primitive/spacing.tokens.json +38 -38
- package/tokens/primitive/typography.tokens.json +60 -60
- package/tokens/primitive/zindex.tokens.json +19 -19
- package/tokens/semantic/dark.tokens.json +43 -43
- package/tokens/semantic/devtools.semantic.tokens.json +79 -0
- package/tokens/semantic/inkblot.semantic.tokens.json +140 -140
|
@@ -0,0 +1,225 @@
|
|
|
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-color-devtools-dominant: #2563eb; // Dominant blue — headers, key metrics, active nav in dev shell
|
|
44
|
+
$inkblot-color-devtools-support: #60a5fa; // Support blue — secondary emphasis, icons, dividers tint, hover text
|
|
45
|
+
$inkblot-color-devtools-accent: #10b981; // Emerald accent — success in dev context, pass states, OK badges (not product brand citron)
|
|
46
|
+
$inkblot-color-devtools-primary: #2563eb; // Primary action — same as dominant; use semantic interactive.primary in components
|
|
47
|
+
$inkblot-color-devtools-primary-hover: #60a5fa; // Primary hover — lighter blue lift on dark ground
|
|
48
|
+
$inkblot-color-devtools-background: #020617; // App background — near-slate-950, OLED-friendly
|
|
49
|
+
$inkblot-color-devtools-surface: #0b1220; // Raised panels, cards, drawers — one step above background
|
|
50
|
+
$inkblot-color-devtools-text-primary: #f8fafc; // Primary text on dev dark UI
|
|
51
|
+
$inkblot-color-devtools-text-muted: #cbd5e1; // Secondary labels, timestamps, hints
|
|
52
|
+
$inkblot-color-devtools-border: #1e293b; // Default borders and hairlines — slate-800
|
|
53
|
+
$inkblot-color-devtools-focus: #60a5fa; // Focus ring on dev controls — matches support for visibility
|
|
54
|
+
$inkblot-duration-instant: 0ms; // No animation
|
|
55
|
+
$inkblot-duration-fast: 120ms; // Micro-interactions, hovers — fast enough to feel physical
|
|
56
|
+
$inkblot-duration-normal: 200ms; // Standard transitions
|
|
57
|
+
$inkblot-duration-slow: 320ms; // Complex transitions, enter/exit
|
|
58
|
+
$inkblot-duration-slower: 500ms; // Page-level transitions, long reveals
|
|
59
|
+
$inkblot-easing-default: cubic-bezier(0.25, 0.1, 0.25, 1); // Standard ease — natural deceleration
|
|
60
|
+
$inkblot-easing-in: cubic-bezier(0.32, 0, 0.67, 0); // Ease in — for exits, things leaving
|
|
61
|
+
$inkblot-easing-out: cubic-bezier(0.33, 1, 0.68, 1); // Ease out — for entrances, things arriving
|
|
62
|
+
$inkblot-easing-in-out: cubic-bezier(0.65, 0, 0.35, 1); // Ease in-out — for position changes, transforms
|
|
63
|
+
$inkblot-easing-expressive: cubic-bezier(0.22, 1, 0.36, 1); // Expressive ease-out — smooth, confident arrival. Replaces bounce.
|
|
64
|
+
$inkblot-grid-columns-mobile: 4rem; // 4-column grid for < 640px
|
|
65
|
+
$inkblot-grid-columns-tablet: 8rem; // 8-column grid for 640–1023px
|
|
66
|
+
$inkblot-grid-columns-desktop: 12rem; // 12-column grid for 1024–1535px
|
|
67
|
+
$inkblot-grid-columns-wide: 16rem; // 16-column grid for 1536px+
|
|
68
|
+
$inkblot-grid-columns-max: 24rem; // 24-column grid for complex dashboards
|
|
69
|
+
$inkblot-grid-gutter-sm: 0.5rem; // 8px - compact mobile gutter
|
|
70
|
+
$inkblot-grid-gutter-md: 1rem; // 16px - standard gutter
|
|
71
|
+
$inkblot-grid-gutter-lg: 1.5rem; // 24px - spacious desktop gutter
|
|
72
|
+
$inkblot-grid-gutter-xl: 2rem; // 32px - wide layout gutter
|
|
73
|
+
$inkblot-grid-margin-mobile: 1rem; // 16px page margin on mobile
|
|
74
|
+
$inkblot-grid-margin-tablet: 2rem; // 32px page margin on tablet
|
|
75
|
+
$inkblot-grid-margin-desktop: 4rem; // 64px page margin on desktop
|
|
76
|
+
$inkblot-grid-margin-wide: auto; // Auto-center on wide screens
|
|
77
|
+
$inkblot-grid-max-width-content: 768px; // Max width for readable content
|
|
78
|
+
$inkblot-grid-max-width-container: 1200px; // Max width for standard layouts
|
|
79
|
+
$inkblot-grid-max-width-wide: 1440px; // Max width for wide layouts
|
|
80
|
+
$inkblot-grid-max-width-full: 1920px; // Max width for full-bleed
|
|
81
|
+
$inkblot-radius-none: 0; // No rounding
|
|
82
|
+
$inkblot-radius-sm: 6px; // Subtle rounding, chips
|
|
83
|
+
$inkblot-radius-md: 10px; // Inputs, small cards
|
|
84
|
+
$inkblot-radius-lg: 14px; // Buttons, interactive elements
|
|
85
|
+
$inkblot-radius-xl: 18px; // Cards, modals
|
|
86
|
+
$inkblot-radius-2xl: 24px; // Large surfaces, hero cards
|
|
87
|
+
$inkblot-radius-full: 9999px; // Pills, avatars, toggles
|
|
88
|
+
$inkblot-border-width-none: 0; // No border
|
|
89
|
+
$inkblot-border-width-thin: 1px; // Subtle dividers, the default
|
|
90
|
+
$inkblot-border-width-medium: 2px; // Focus rings
|
|
91
|
+
$inkblot-border-width-thick: 3px; // Strong emphasis, rarely used
|
|
92
|
+
$inkblot-shadow-none: none; // No shadow
|
|
93
|
+
$inkblot-shadow-xs: 0 1px 2px 0 rgba(29, 28, 25, 0.04); // Barely there lift
|
|
94
|
+
$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
|
|
95
|
+
$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
|
|
96
|
+
$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
|
|
97
|
+
$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
|
|
98
|
+
$inkblot-opacity-disabled: 0.4; // Disabled elements
|
|
99
|
+
$inkblot-opacity-overlay: 0.45; // Modal backdrops — not too heavy
|
|
100
|
+
$inkblot-opacity-subtle: 0.6; // Secondary content
|
|
101
|
+
$inkblot-opacity-default: 1; // Full opacity
|
|
102
|
+
$inkblot-spacing-0: 0; // No spacing
|
|
103
|
+
$inkblot-spacing-1: 0.25rem; // 4px
|
|
104
|
+
$inkblot-spacing-2: 0.5rem; // 8px
|
|
105
|
+
$inkblot-spacing-3: 0.75rem; // 12px
|
|
106
|
+
$inkblot-spacing-4: 1rem; // 16px
|
|
107
|
+
$inkblot-spacing-5: 1.25rem; // 20px
|
|
108
|
+
$inkblot-spacing-6: 1.5rem; // 24px
|
|
109
|
+
$inkblot-spacing-8: 2rem; // 32px
|
|
110
|
+
$inkblot-spacing-10: 2.5rem; // 40px
|
|
111
|
+
$inkblot-spacing-12: 3rem; // 48px
|
|
112
|
+
$inkblot-spacing-16: 4rem; // 64px
|
|
113
|
+
$inkblot-spacing-20: 5rem; // 80px
|
|
114
|
+
$inkblot-spacing-24: 6rem; // 96px
|
|
115
|
+
$inkblot-spacing-32: 8rem; // 128px
|
|
116
|
+
$inkblot-size-icon-xs: 1rem; // 16px icon
|
|
117
|
+
$inkblot-size-icon-sm: 1.25rem; // 20px icon
|
|
118
|
+
$inkblot-size-icon-md: 1.5rem; // 24px icon
|
|
119
|
+
$inkblot-size-icon-lg: 2rem; // 32px icon
|
|
120
|
+
$inkblot-size-icon-xl: 2.5rem; // 40px icon
|
|
121
|
+
$inkblot-size-touch-target-min: 44px; // Minimum touch target (WCAG)
|
|
122
|
+
$inkblot-size-touch-target-comfortable: 48px; // Comfortable touch target
|
|
123
|
+
$inkblot-typography-font-family-sans: 'Inter', 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; // Primary UI font — humanist, modern, highly legible
|
|
124
|
+
$inkblot-typography-font-family-mono: 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace; // Code and data
|
|
125
|
+
$inkblot-typography-font-family-display: 'Inter', 'SF Pro Display', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; // Headlines — same family, optical size variant
|
|
126
|
+
$inkblot-typography-font-size-xs: 0.75rem; // 12px — captions, meta
|
|
127
|
+
$inkblot-typography-font-size-sm: 0.8125rem; // 13px — secondary text
|
|
128
|
+
$inkblot-typography-font-size-base: 0.9375rem; // 15px — body text, slightly refined from 16
|
|
129
|
+
$inkblot-typography-font-size-md: 1.0625rem; // 17px — emphasized body
|
|
130
|
+
$inkblot-typography-font-size-lg: 1.25rem; // 20px — card titles, subheadings
|
|
131
|
+
$inkblot-typography-font-size-xl: 1.5rem; // 24px — section titles
|
|
132
|
+
$inkblot-typography-font-size-2xl: 1.75rem; // 28px — page titles
|
|
133
|
+
$inkblot-typography-font-size-3xl: 2.125rem; // 34px — hero — composed, not shouting
|
|
134
|
+
$inkblot-typography-font-size-4xl: 2.75rem; // 44px — display, rarely used
|
|
135
|
+
$inkblot-typography-font-size-5xl: 3.25rem; // 52px — maximum display
|
|
136
|
+
$inkblot-typography-font-weight-regular: 400; // Body text
|
|
137
|
+
$inkblot-typography-font-weight-medium: 500; // Emphasis, labels, card titles
|
|
138
|
+
$inkblot-typography-font-weight-semibold: 600; // Headings, buttons
|
|
139
|
+
$inkblot-typography-font-weight-bold: 700; // Strong emphasis, sparingly
|
|
140
|
+
$inkblot-typography-line-height-tight: 1.2; // Headlines
|
|
141
|
+
$inkblot-typography-line-height-snug: 1.375; // Subheadings
|
|
142
|
+
$inkblot-typography-line-height-normal: 1.5; // Body text
|
|
143
|
+
$inkblot-typography-line-height-relaxed: 1.65; // Long-form, generous breathing room
|
|
144
|
+
$inkblot-typography-line-height-loose: 1.8; // Very spacious
|
|
145
|
+
$inkblot-typography-letter-spacing-tighter: -0.04em; // Large headlines
|
|
146
|
+
$inkblot-typography-letter-spacing-tight: -0.02em; // Headings
|
|
147
|
+
$inkblot-typography-letter-spacing-normal: 0; // Body
|
|
148
|
+
$inkblot-typography-letter-spacing-wide: 0.02em; // Labels
|
|
149
|
+
$inkblot-typography-letter-spacing-wider: 0.06em; // Uppercase meta
|
|
150
|
+
$inkblot-z-index-hide: -1; // Hidden below base layer
|
|
151
|
+
$inkblot-z-index-base: 0; // Default document flow
|
|
152
|
+
$inkblot-z-index-raised: 1; // Slightly above base (cards on hover)
|
|
153
|
+
$inkblot-z-index-dropdown: 10; // Dropdowns, select menus
|
|
154
|
+
$inkblot-z-index-sticky: 20; // Sticky headers, nav bars
|
|
155
|
+
$inkblot-z-index-overlay: 30; // Backdrop overlays
|
|
156
|
+
$inkblot-z-index-modal: 40; // Modals, dialogs, sheets
|
|
157
|
+
$inkblot-z-index-popover: 50; // Popovers, tooltips
|
|
158
|
+
$inkblot-z-index-toast: 60; // Toast notifications
|
|
159
|
+
$inkblot-z-index-max: 9999; // Emergency override (avoid)
|
|
160
|
+
$inkblot-dark-color-background-primary: #12110e; // Deep warm black, not pure black
|
|
161
|
+
$inkblot-dark-color-background-secondary: #1d1c18; // Elevated warm surface
|
|
162
|
+
$inkblot-dark-color-background-tertiary: #2a2924; // Grouped content, inset
|
|
163
|
+
$inkblot-dark-color-background-inverse: #fafaf7; // Inverted to warm off-white
|
|
164
|
+
$inkblot-dark-color-text-primary: #f5f4f0; // Warm off-white text
|
|
165
|
+
$inkblot-dark-color-text-secondary: #93928a; // Warm muted text
|
|
166
|
+
$inkblot-dark-color-text-tertiary: #6b6a63; // Placeholder, hints
|
|
167
|
+
$inkblot-dark-color-text-inverse: #1d1c19; // Dark text on light
|
|
168
|
+
$inkblot-dark-color-text-link: #d9bc58; // Citron 400 — bright enough for dark bg
|
|
169
|
+
$inkblot-dark-color-text-link-hover: #e8d38a; // Citron 300 — lighter on hover
|
|
170
|
+
$inkblot-dark-color-border-default: #38372f; // Warm subtle border
|
|
171
|
+
$inkblot-dark-color-border-strong: #4d4c44; // Emphasized warm border
|
|
172
|
+
$inkblot-dark-color-border-focus: #d9bc58; // Focus ring — bright citron
|
|
173
|
+
$inkblot-dark-color-interactive-primary: #d9bc58; // Citron 400 — lighter for dark mode contrast
|
|
174
|
+
$inkblot-dark-color-interactive-primary-hover: #e8d38a; // Citron 300 — warm glow on hover
|
|
175
|
+
$inkblot-dark-color-interactive-primary-active: #c4a030; // Citron 500 — anchor on press
|
|
176
|
+
$inkblot-dark-color-interactive-secondary: #2a2924; // Warm dark secondary
|
|
177
|
+
$inkblot-dark-color-interactive-secondary-hover: #38372f; // Warm dark hover
|
|
178
|
+
$inkblot-dark-color-status-success: #4cb864; // Bright warm green on dark
|
|
179
|
+
$inkblot-dark-color-status-warning: #e0a020; // Warm amber on dark
|
|
180
|
+
$inkblot-dark-color-status-error: #e05a52; // Warm red on dark
|
|
181
|
+
$inkblot-dark-color-status-info: #7ab8d6; // Soft warm blue on dark
|
|
182
|
+
$inkblot-semantic-devtools-color-background-app: $inkblot-color-devtools-background; // Full dev shell background
|
|
183
|
+
$inkblot-semantic-devtools-color-background-surface: $inkblot-color-devtools-surface; // Panels, modals, dropdowns
|
|
184
|
+
$inkblot-semantic-devtools-color-background-surface-elevated: $inkblot-color-devtools-surface; // Optional second elevation — same token until a lighter step is needed
|
|
185
|
+
$inkblot-semantic-devtools-color-text-primary: $inkblot-color-devtools-text-primary; // Body and titles in dev UI
|
|
186
|
+
$inkblot-semantic-devtools-color-text-muted: $inkblot-color-devtools-text-muted; // Meta, captions, disabled-adjacent copy
|
|
187
|
+
$inkblot-semantic-devtools-color-text-on-primary: $inkblot-color-devtools-text-primary; // Text on primary/dominant buttons
|
|
188
|
+
$inkblot-semantic-devtools-color-border-default: $inkblot-color-devtools-border; // Dividers and field outlines
|
|
189
|
+
$inkblot-semantic-devtools-color-border-strong: $inkblot-color-devtools-support; // Drag handles, resize accents — use at low opacity if needed
|
|
190
|
+
$inkblot-semantic-devtools-color-accent-brand: $inkblot-color-devtools-dominant; // Dev chrome brand strip — blue, not citron
|
|
191
|
+
$inkblot-semantic-devtools-color-accent-positive: $inkblot-color-devtools-accent; // Build passed, tests green, healthy status
|
|
192
|
+
$inkblot-semantic-devtools-color-interactive-primary: $inkblot-color-devtools-primary; // Primary buttons, submit, run
|
|
193
|
+
$inkblot-semantic-devtools-color-interactive-primary-hover: $inkblot-color-devtools-primary-hover; // Hover state for primary
|
|
194
|
+
$inkblot-semantic-devtools-color-interactive-ghost: $inkblot-color-devtools-text-muted; // Low-emphasis controls — pair with transparent or surface bg
|
|
195
|
+
$inkblot-semantic-devtools-color-interactive-focus: $inkblot-color-devtools-focus; // Focus ring color
|
|
196
|
+
$inkblot-semantic-color-background-primary: $inkblot-color-neutral-gray-50; // Body background — warm off-white with barely perceptible beige
|
|
197
|
+
$inkblot-semantic-color-background-secondary: $inkblot-color-neutral-white; // Elevated surfaces — clean white floating above base
|
|
198
|
+
$inkblot-semantic-color-background-tertiary: $inkblot-color-neutral-gray-100; // Grouped content, inset areas
|
|
199
|
+
$inkblot-semantic-color-background-inverse: $inkblot-color-neutral-gray-900; // Inverted surfaces
|
|
200
|
+
$inkblot-semantic-color-text-primary: $inkblot-color-neutral-gray-900; // Primary text — deep warm slate, never pure black
|
|
201
|
+
$inkblot-semantic-color-text-secondary: $inkblot-color-neutral-gray-500; // Secondary text
|
|
202
|
+
$inkblot-semantic-color-text-tertiary: $inkblot-color-neutral-gray-400; // Placeholder, hints, captions
|
|
203
|
+
$inkblot-semantic-color-text-inverse: $inkblot-color-neutral-white; // Text on dark surfaces
|
|
204
|
+
$inkblot-semantic-color-text-link: $inkblot-color-accent-citron-600; // Links — deep citron for readability
|
|
205
|
+
$inkblot-semantic-color-text-link-hover: $inkblot-color-accent-citron-700; // Link hover
|
|
206
|
+
$inkblot-semantic-color-border-default: $inkblot-color-neutral-gray-200; // Subtle warm dividers
|
|
207
|
+
$inkblot-semantic-color-border-strong: $inkblot-color-neutral-gray-300; // Emphasized borders
|
|
208
|
+
$inkblot-semantic-color-border-focus: $inkblot-color-accent-citron-500; // Focus ring — citron accent
|
|
209
|
+
$inkblot-semantic-color-interactive-primary: $inkblot-color-accent-citron-500; // Primary CTA — confident citron
|
|
210
|
+
$inkblot-semantic-color-interactive-primary-hover: $inkblot-color-accent-citron-600; // Primary hover — deeper, subtle shift
|
|
211
|
+
$inkblot-semantic-color-interactive-primary-active: $inkblot-color-accent-citron-700; // Primary pressed
|
|
212
|
+
$inkblot-semantic-color-interactive-secondary: $inkblot-color-neutral-gray-100; // Secondary surfaces with subtle depth
|
|
213
|
+
$inkblot-semantic-color-interactive-secondary-hover: $inkblot-color-neutral-gray-200; // Secondary hover
|
|
214
|
+
$inkblot-semantic-color-status-success: $inkblot-color-semantic-success-main; // Success state
|
|
215
|
+
$inkblot-semantic-color-status-warning: $inkblot-color-semantic-warning-main; // Warning state
|
|
216
|
+
$inkblot-semantic-color-status-error: $inkblot-color-semantic-error-main; // Error state
|
|
217
|
+
$inkblot-semantic-color-status-info: $inkblot-color-semantic-info-main; // Info state
|
|
218
|
+
$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
|
|
219
|
+
$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
|
|
220
|
+
$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
|
|
221
|
+
$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
|
|
222
|
+
$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
|
|
223
|
+
$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
|
|
224
|
+
$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
|
|
225
|
+
$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
|
|
@@ -42,6 +42,17 @@
|
|
|
42
42
|
--inkblot-color-semantic-info-light: #6ba3c2; /** Muted warm blue */
|
|
43
43
|
--inkblot-color-semantic-info-main: #5790ad; /** Primary info — desaturated, warm */
|
|
44
44
|
--inkblot-color-semantic-info-dark: #497a94; /** Info hover */
|
|
45
|
+
--inkblot-color-devtools-dominant: #2563eb; /** Dominant blue — headers, key metrics, active nav in dev shell */
|
|
46
|
+
--inkblot-color-devtools-support: #60a5fa; /** Support blue — secondary emphasis, icons, dividers tint, hover text */
|
|
47
|
+
--inkblot-color-devtools-accent: #10b981; /** Emerald accent — success in dev context, pass states, OK badges (not product brand citron) */
|
|
48
|
+
--inkblot-color-devtools-primary: #2563eb; /** Primary action — same as dominant; use semantic interactive.primary in components */
|
|
49
|
+
--inkblot-color-devtools-primary-hover: #60a5fa; /** Primary hover — lighter blue lift on dark ground */
|
|
50
|
+
--inkblot-color-devtools-background: #020617; /** App background — near-slate-950, OLED-friendly */
|
|
51
|
+
--inkblot-color-devtools-surface: #0b1220; /** Raised panels, cards, drawers — one step above background */
|
|
52
|
+
--inkblot-color-devtools-text-primary: #f8fafc; /** Primary text on dev dark UI */
|
|
53
|
+
--inkblot-color-devtools-text-muted: #cbd5e1; /** Secondary labels, timestamps, hints */
|
|
54
|
+
--inkblot-color-devtools-border: #1e293b; /** Default borders and hairlines — slate-800 */
|
|
55
|
+
--inkblot-color-devtools-focus: #60a5fa; /** Focus ring on dev controls — matches support for visibility */
|
|
45
56
|
--inkblot-duration-instant: 0ms; /** No animation */
|
|
46
57
|
--inkblot-duration-fast: 120ms; /** Micro-interactions, hovers — fast enough to feel physical */
|
|
47
58
|
--inkblot-duration-normal: 200ms; /** Standard transitions */
|
|
@@ -170,6 +181,20 @@
|
|
|
170
181
|
--inkblot-dark-color-status-warning: #e0a020; /** Warm amber on dark */
|
|
171
182
|
--inkblot-dark-color-status-error: #e05a52; /** Warm red on dark */
|
|
172
183
|
--inkblot-dark-color-status-info: #7ab8d6; /** Soft warm blue on dark */
|
|
184
|
+
--inkblot-semantic-devtools-color-background-app: var(--inkblot-color-devtools-background); /** Full dev shell background */
|
|
185
|
+
--inkblot-semantic-devtools-color-background-surface: var(--inkblot-color-devtools-surface); /** Panels, modals, dropdowns */
|
|
186
|
+
--inkblot-semantic-devtools-color-background-surface-elevated: var(--inkblot-color-devtools-surface); /** Optional second elevation — same token until a lighter step is needed */
|
|
187
|
+
--inkblot-semantic-devtools-color-text-primary: var(--inkblot-color-devtools-text-primary); /** Body and titles in dev UI */
|
|
188
|
+
--inkblot-semantic-devtools-color-text-muted: var(--inkblot-color-devtools-text-muted); /** Meta, captions, disabled-adjacent copy */
|
|
189
|
+
--inkblot-semantic-devtools-color-text-on-primary: var(--inkblot-color-devtools-text-primary); /** Text on primary/dominant buttons */
|
|
190
|
+
--inkblot-semantic-devtools-color-border-default: var(--inkblot-color-devtools-border); /** Dividers and field outlines */
|
|
191
|
+
--inkblot-semantic-devtools-color-border-strong: var(--inkblot-color-devtools-support); /** Drag handles, resize accents — use at low opacity if needed */
|
|
192
|
+
--inkblot-semantic-devtools-color-accent-brand: var(--inkblot-color-devtools-dominant); /** Dev chrome brand strip — blue, not citron */
|
|
193
|
+
--inkblot-semantic-devtools-color-accent-positive: var(--inkblot-color-devtools-accent); /** Build passed, tests green, healthy status */
|
|
194
|
+
--inkblot-semantic-devtools-color-interactive-primary: var(--inkblot-color-devtools-primary); /** Primary buttons, submit, run */
|
|
195
|
+
--inkblot-semantic-devtools-color-interactive-primary-hover: var(--inkblot-color-devtools-primary-hover); /** Hover state for primary */
|
|
196
|
+
--inkblot-semantic-devtools-color-interactive-ghost: var(--inkblot-color-devtools-text-muted); /** Low-emphasis controls — pair with transparent or surface bg */
|
|
197
|
+
--inkblot-semantic-devtools-color-interactive-focus: var(--inkblot-color-devtools-focus); /** Focus ring color */
|
|
173
198
|
--inkblot-semantic-color-background-primary: var(--inkblot-color-neutral-gray-50); /** Body background — warm off-white with barely perceptible beige */
|
|
174
199
|
--inkblot-semantic-color-background-secondary: var(--inkblot-color-neutral-white); /** Elevated surfaces — clean white floating above base */
|
|
175
200
|
--inkblot-semantic-color-background-tertiary: var(--inkblot-color-neutral-gray-100); /** Grouped content, inset areas */
|