@citron-systems/citron-ds 1.0.0 → 1.0.1

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.
Files changed (61) hide show
  1. package/README.md +163 -149
  2. package/cli/citron-mascot.mjs +117 -0
  3. package/dist/ai/inkblot-ai-reference.json +582 -570
  4. package/dist/ai/inkblot-tokens-resolved.json +25 -0
  5. package/dist/ai/inkblot-tokens-schema.json +54 -54
  6. package/dist/brand/citron-mascot-mono.svg +17 -0
  7. package/dist/brand/citron-mascot.svg +21 -0
  8. package/dist/bundle/README.md +28 -0
  9. package/dist/bundle/ai-reference.json +582 -0
  10. package/dist/bundle/brand/citron-mascot-mono.svg +17 -0
  11. package/dist/bundle/brand/citron-mascot.svg +21 -0
  12. package/dist/bundle/preview/mascot.html +72 -0
  13. package/dist/bundle/system/ai.json +168 -0
  14. package/dist/bundle/system/cli.json +340 -0
  15. package/dist/bundle/system/components.json +304 -0
  16. package/dist/bundle/system/content.json +168 -0
  17. package/dist/bundle/system/devtools.json +95 -0
  18. package/dist/bundle/system/foundations.json +121 -0
  19. package/dist/bundle/system/grid.json +101 -0
  20. package/dist/bundle/system/icons.json +507 -0
  21. package/dist/bundle/system/index.json +57 -0
  22. package/dist/bundle/system/inkblot-ai-reference.json +582 -0
  23. package/dist/bundle/system/motion.json +159 -0
  24. package/dist/bundle/tokens/primitive/breakpoint.tokens.json +14 -0
  25. package/dist/bundle/tokens/primitive/color.tokens.json +71 -0
  26. package/dist/bundle/tokens/primitive/devtools.palette.tokens.json +55 -0
  27. package/dist/bundle/tokens/primitive/duration.tokens.json +38 -0
  28. package/dist/bundle/tokens/primitive/grid.tokens.json +34 -0
  29. package/dist/bundle/tokens/primitive/radius.tokens.json +26 -0
  30. package/dist/bundle/tokens/primitive/shadow.tokens.json +41 -0
  31. package/dist/bundle/tokens/primitive/spacing.tokens.json +38 -0
  32. package/dist/bundle/tokens/primitive/typography.tokens.json +60 -0
  33. package/dist/bundle/tokens/primitive/zindex.tokens.json +19 -0
  34. package/dist/bundle/tokens/semantic/dark.tokens.json +43 -0
  35. package/dist/bundle/tokens/semantic/devtools.semantic.tokens.json +79 -0
  36. package/dist/bundle/tokens/semantic/inkblot.semantic.tokens.json +140 -0
  37. package/dist/bundle/tokens-schema.json +54 -0
  38. package/dist/bundle/tokens.flat.json +224 -0
  39. package/dist/bundle/tokens.resolved.json +224 -0
  40. package/dist/bundle/variables.css +228 -0
  41. package/dist/bundle/variables.scss +225 -0
  42. package/dist/css/inkblot-variables.css +25 -0
  43. package/dist/index.html +956 -0
  44. package/dist/js/inkblot-tokens.js +25 -0
  45. package/dist/js/inkblot-tokens.json +25 -0
  46. package/dist/preview/mascot.html +72 -0
  47. package/dist/scss/_inkblot-variables.scss +25 -0
  48. package/package.json +73 -61
  49. package/tokens/primitive/breakpoint.tokens.json +14 -14
  50. package/tokens/primitive/color.tokens.json +71 -71
  51. package/tokens/primitive/devtools.palette.tokens.json +55 -0
  52. package/tokens/primitive/duration.tokens.json +38 -38
  53. package/tokens/primitive/grid.tokens.json +34 -34
  54. package/tokens/primitive/radius.tokens.json +26 -26
  55. package/tokens/primitive/shadow.tokens.json +41 -41
  56. package/tokens/primitive/spacing.tokens.json +38 -38
  57. package/tokens/primitive/typography.tokens.json +60 -60
  58. package/tokens/primitive/zindex.tokens.json +19 -19
  59. package/tokens/semantic/dark.tokens.json +43 -43
  60. package/tokens/semantic/devtools.semantic.tokens.json +79 -0
  61. package/tokens/semantic/inkblot.semantic.tokens.json +140 -140
@@ -38,6 +38,17 @@
38
38
  "InkblotColorSemanticInfoLight": "#6ba3c2",
39
39
  "InkblotColorSemanticInfoMain": "#5790ad",
40
40
  "InkblotColorSemanticInfoDark": "#497a94",
41
+ "InkblotColorDevtoolsDominant": "#2563eb",
42
+ "InkblotColorDevtoolsSupport": "#60a5fa",
43
+ "InkblotColorDevtoolsAccent": "#10b981",
44
+ "InkblotColorDevtoolsPrimary": "#2563eb",
45
+ "InkblotColorDevtoolsPrimaryHover": "#60a5fa",
46
+ "InkblotColorDevtoolsBackground": "#020617",
47
+ "InkblotColorDevtoolsSurface": "#0b1220",
48
+ "InkblotColorDevtoolsTextPrimary": "#f8fafc",
49
+ "InkblotColorDevtoolsTextMuted": "#cbd5e1",
50
+ "InkblotColorDevtoolsBorder": "#1e293b",
51
+ "InkblotColorDevtoolsFocus": "#60a5fa",
41
52
  "InkblotDurationInstant": "0ms",
42
53
  "InkblotDurationFast": "120ms",
43
54
  "InkblotDurationNormal": "200ms",
@@ -166,6 +177,20 @@
166
177
  "InkblotDarkColorStatusWarning": "#e0a020",
167
178
  "InkblotDarkColorStatusError": "#e05a52",
168
179
  "InkblotDarkColorStatusInfo": "#7ab8d6",
180
+ "InkblotSemanticDevtoolsColorBackgroundApp": "#020617",
181
+ "InkblotSemanticDevtoolsColorBackgroundSurface": "#0b1220",
182
+ "InkblotSemanticDevtoolsColorBackgroundSurfaceElevated": "#0b1220",
183
+ "InkblotSemanticDevtoolsColorTextPrimary": "#f8fafc",
184
+ "InkblotSemanticDevtoolsColorTextMuted": "#cbd5e1",
185
+ "InkblotSemanticDevtoolsColorTextOnPrimary": "#f8fafc",
186
+ "InkblotSemanticDevtoolsColorBorderDefault": "#1e293b",
187
+ "InkblotSemanticDevtoolsColorBorderStrong": "#60a5fa",
188
+ "InkblotSemanticDevtoolsColorAccentBrand": "#2563eb",
189
+ "InkblotSemanticDevtoolsColorAccentPositive": "#10b981",
190
+ "InkblotSemanticDevtoolsColorInteractivePrimary": "#2563eb",
191
+ "InkblotSemanticDevtoolsColorInteractivePrimaryHover": "#60a5fa",
192
+ "InkblotSemanticDevtoolsColorInteractiveGhost": "#cbd5e1",
193
+ "InkblotSemanticDevtoolsColorInteractiveFocus": "#60a5fa",
169
194
  "InkblotSemanticColorBackgroundPrimary": "#fafaf7",
170
195
  "InkblotSemanticColorBackgroundSecondary": "#ffffff",
171
196
  "InkblotSemanticColorBackgroundTertiary": "#f5f4f0",
@@ -1,54 +1,54 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "Inkblot Studio Design Tokens",
4
- "description": "AI training reference - use these token paths when generating Inkblot Studio components",
5
- "type": "object",
6
- "properties": {
7
- "tokenCategories": {
8
- "type": "object",
9
- "description": "Token organization for AI context",
10
- "properties": {
11
- "color": {
12
- "description": "Use semantic colors in components: inkblot.semantic.color.*",
13
- "semantic": {
14
- "background": ["primary", "secondary", "tertiary", "inverse"],
15
- "text": ["primary", "secondary", "tertiary", "inverse", "link", "linkHover"],
16
- "border": ["default", "strong", "focus"],
17
- "interactive": ["primary", "primaryHover", "primaryActive", "secondary", "secondaryHover"],
18
- "status": ["success", "warning", "error", "info"]
19
- }
20
- },
21
- "spacing": {
22
- "description": "4pt grid: 0, 1(4px), 2(8px), 3(12px), 4(16px), 5(20px), 6(24px), 8(32px), 10(40px), 12(48px), 16(64px), 20(80px), 24(96px), 32(128px)"
23
- },
24
- "typography": {
25
- "headings": ["1", "2", "3", "4"],
26
- "body": ["default", "small", "large"],
27
- "label": ["default"]
28
- },
29
- "radius": {
30
- "values": ["none", "sm", "md", "lg", "xl", "2xl", "full"]
31
- },
32
- "shadow": {
33
- "elevation": ["none", "xs", "sm", "md", "lg", "xl"]
34
- },
35
- "duration": {
36
- "values": ["instant", "fast", "normal", "slow", "slower"]
37
- }
38
- }
39
- },
40
- "componentGuidelines": {
41
- "description": "AI component generation rules",
42
- "rules": [
43
- "Use semantic tokens (inkblot.semantic.*) not primitives",
44
- "Primary text: var(--inkblot-semantic-color-text-primary)",
45
- "Primary background: var(--inkblot-semantic-color-background-primary)",
46
- "Primary button: var(--inkblot-semantic-color-interactive-primary)",
47
- "Minimum touch target: 44px (WCAG 2.4.11)",
48
- "Border radius: 8px for cards/inputs (--inkblot-radius-md)",
49
- "Spacing: 4pt grid (8px, 16px, 24px)",
50
- "Focus: 2px solid focus color (--inkblot-border-width-medium)"
51
- ]
52
- }
53
- }
54
- }
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Inkblot Studio Design Tokens",
4
+ "description": "AI training reference - use these token paths when generating Inkblot Studio components",
5
+ "type": "object",
6
+ "properties": {
7
+ "tokenCategories": {
8
+ "type": "object",
9
+ "description": "Token organization for AI context",
10
+ "properties": {
11
+ "color": {
12
+ "description": "Use semantic colors in components: inkblot.semantic.color.*",
13
+ "semantic": {
14
+ "background": ["primary", "secondary", "tertiary", "inverse"],
15
+ "text": ["primary", "secondary", "tertiary", "inverse", "link", "linkHover"],
16
+ "border": ["default", "strong", "focus"],
17
+ "interactive": ["primary", "primaryHover", "primaryActive", "secondary", "secondaryHover"],
18
+ "status": ["success", "warning", "error", "info"]
19
+ }
20
+ },
21
+ "spacing": {
22
+ "description": "4pt grid: 0, 1(4px), 2(8px), 3(12px), 4(16px), 5(20px), 6(24px), 8(32px), 10(40px), 12(48px), 16(64px), 20(80px), 24(96px), 32(128px)"
23
+ },
24
+ "typography": {
25
+ "headings": ["1", "2", "3", "4"],
26
+ "body": ["default", "small", "large"],
27
+ "label": ["default"]
28
+ },
29
+ "radius": {
30
+ "values": ["none", "sm", "md", "lg", "xl", "2xl", "full"]
31
+ },
32
+ "shadow": {
33
+ "elevation": ["none", "xs", "sm", "md", "lg", "xl"]
34
+ },
35
+ "duration": {
36
+ "values": ["instant", "fast", "normal", "slow", "slower"]
37
+ }
38
+ }
39
+ },
40
+ "componentGuidelines": {
41
+ "description": "AI component generation rules",
42
+ "rules": [
43
+ "Use semantic tokens (inkblot.semantic.*) not primitives",
44
+ "Primary text: var(--inkblot-semantic-color-text-primary)",
45
+ "Primary background: var(--inkblot-semantic-color-background-primary)",
46
+ "Primary button: var(--inkblot-semantic-color-interactive-primary)",
47
+ "Minimum touch target: 44px (WCAG 2.4.11)",
48
+ "Border radius: 8px for cards/inputs (--inkblot-radius-md)",
49
+ "Spacing: 4pt grid (8px, 16px, 24px)",
50
+ "Focus: 2px solid focus color (--inkblot-border-width-medium)"
51
+ ]
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,17 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" role="img" aria-labelledby="citron-mascot-mono-title citron-mascot-mono-desc">
2
+ <title id="citron-mascot-mono-title">Citron</title>
3
+ <desc id="citron-mascot-mono-desc">Single-color face mark; set fill and stroke via currentColor on a parent or the root SVG.</desc>
4
+ <g id="citron-mascot" stroke-linecap="butt" stroke-linejoin="miter">
5
+ <g id="mascot-eyes" fill="currentColor" stroke="none">
6
+ <g id="mascot-eye-left">
7
+ <rect x="31" y="17" width="13" height="34" />
8
+ </g>
9
+ <g id="mascot-eye-right">
10
+ <rect x="56" y="17" width="13" height="34" />
11
+ </g>
12
+ </g>
13
+ <g id="mascot-smile" fill="none" stroke="currentColor">
14
+ <path d="M 12 40 A 38 38 0 0 0 88 40" stroke-width="10" />
15
+ </g>
16
+ </g>
17
+ </svg>
@@ -0,0 +1,21 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" role="img" aria-labelledby="citron-mascot-title citron-mascot-desc">
2
+ <title id="citron-mascot-title">Citron</title>
3
+ <desc id="citron-mascot-desc">Geometric face mark: two pause bars as eyes and a large smile, citron orange, sharp geometry.</desc>
4
+ <g id="citron-mascot">
5
+ <g id="mascot-eyes" fill="var(--citron-mascot-fill, #c4a030)" stroke="none">
6
+ <g id="mascot-eye-left">
7
+ <rect x="31" y="17" width="13" height="34" />
8
+ </g>
9
+ <g id="mascot-eye-right">
10
+ <rect x="56" y="17" width="13" height="34" />
11
+ </g>
12
+ </g>
13
+ <g id="mascot-smile" fill="none" stroke-linecap="butt" stroke-linejoin="miter">
14
+ <path
15
+ d="M 12 40 A 38 38 0 0 0 88 40"
16
+ stroke="var(--citron-mascot-fill, #c4a030)"
17
+ stroke-width="10"
18
+ />
19
+ </g>
20
+ </g>
21
+ </svg>
@@ -0,0 +1,28 @@
1
+ # Citron design bundle (desktop / Rust / native)
2
+
3
+ Single folder with design tokens, system metadata, and brand assets. Generated on `npm run build`; published inside `@citron-systems/citron-ds` under `dist/bundle`.
4
+
5
+ ## Layout
6
+
7
+ | Path | Contents |
8
+ |------|----------|
9
+ | `tokens.resolved.json` | Flat map of resolved token keys → values (good for `serde_json` / codegen). |
10
+ | `tokens.flat.json` | Same flat format from the JS build (duplicate pipeline output). |
11
+ | `variables.css` | CSS custom properties (`:root`). |
12
+ | `variables.scss` | SCSS variables. |
13
+ | `ai-reference.json` | Inkblot / Citron AI and product reference. |
14
+ | `tokens-schema.json` | Present when Style Dictionary emits it. |
15
+ | `tokens/` | Authoritative DTCG-style source JSON (primitive + semantic). |
16
+ | `system/` | Extra system JSON (foundations, motion, icons, `cli.json` for terminal/TUI/AI CLIs, etc.). |
17
+ | `brand/` | SVG logos / mascot. |
18
+ | `preview/mascot.html` | Double-click mascot preview in a browser (no server). |
19
+
20
+ ## Rust / Tauri / egui
21
+
22
+ - **Tokens:** `include_str!("node_modules/@citron-systems/citron-ds/dist/bundle/tokens.resolved.json")` (adjust path to your vendored copy).
23
+ - **WebView UI:** load `variables.css` or parse JSON and map to your theme struct.
24
+ - **Icons / logos:** embed files from `brand/`.
25
+
26
+ ## npm subpath imports
27
+
28
+ Use `@citron-systems/citron-ds/bundle/<file>` (see package `exports`).