@santi020k/theme 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.
Files changed (104) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +132 -0
  3. package/assets/banners/banner-1.png +0 -0
  4. package/assets/banners/banner-1.webp +0 -0
  5. package/assets/banners/banner-2.png +0 -0
  6. package/assets/banners/banner-2.webp +0 -0
  7. package/assets/banners/banner-3.png +0 -0
  8. package/assets/banners/banner-3.webp +0 -0
  9. package/assets/banners/banner-4.png +0 -0
  10. package/assets/banners/banner-4.webp +0 -0
  11. package/assets/banners/banner-5.png +0 -0
  12. package/assets/banners/banner-5.webp +0 -0
  13. package/assets/chrome/icons/icon-light.svg +5 -0
  14. package/assets/chrome/icons/icon-light128.png +0 -0
  15. package/assets/chrome/icons/icon-light16.png +0 -0
  16. package/assets/chrome/icons/icon-light48.png +0 -0
  17. package/assets/chrome/icons/icon-light512.png +0 -0
  18. package/assets/chrome/icons/icon.svg +6 -0
  19. package/assets/chrome/icons/icon128.png +0 -0
  20. package/assets/chrome/icons/icon16.png +0 -0
  21. package/assets/chrome/icons/icon48.png +0 -0
  22. package/assets/chrome/icons/icon512.png +0 -0
  23. package/assets/chrome/images/adaptive_assets_diagonal.webp +0 -0
  24. package/assets/chrome/images/adaptive_background.svg +12 -0
  25. package/assets/chrome/images/dark.png +0 -0
  26. package/assets/chrome/images/light.png +0 -0
  27. package/assets/chrome/images/theme_ntp_background.png +0 -0
  28. package/assets/chrome/images/theme_ntp_background.svg +71 -0
  29. package/assets/chrome/images/theme_ntp_background.webp +0 -0
  30. package/assets/chrome/images/theme_ntp_background_light.png +0 -0
  31. package/assets/chrome/images/theme_ntp_background_light.svg +71 -0
  32. package/assets/chrome/images/theme_ntp_background_light.webp +0 -0
  33. package/assets/chrome/images/wallpaper.heic +0 -0
  34. package/assets/chrome/store/marquee-banner-light.png +0 -0
  35. package/assets/chrome/store/marquee-banner.png +0 -0
  36. package/assets/chrome/store/promo-tile-light.png +0 -0
  37. package/assets/chrome/store/promo-tile.png +0 -0
  38. package/assets/chrome/store/screenshot-incognito-light.png +0 -0
  39. package/assets/chrome/store/screenshot-incognito.jpg +0 -0
  40. package/assets/chrome/store/screenshot-incognito.png +0 -0
  41. package/assets/chrome/store/screenshot-main-light.png +0 -0
  42. package/assets/chrome/store/screenshot-main.png +0 -0
  43. package/assets/chrome/store/screenshot-ntp-light.png +0 -0
  44. package/assets/chrome/store/screenshot-ntp.png +0 -0
  45. package/assets/favicons/apple-touch-icon.png +0 -0
  46. package/assets/favicons/apple-touch-icon.webp +0 -0
  47. package/assets/favicons/favicon-16x16.png +0 -0
  48. package/assets/favicons/favicon-16x16.webp +0 -0
  49. package/assets/favicons/favicon-32x32.png +0 -0
  50. package/assets/favicons/favicon-32x32.webp +0 -0
  51. package/assets/favicons/favicon.svg +6 -0
  52. package/assets/favicons/icon-192.png +0 -0
  53. package/assets/favicons/icon-192.webp +0 -0
  54. package/assets/favicons/icon-512.png +0 -0
  55. package/assets/favicons/icon-512.webp +0 -0
  56. package/assets/logos/logo-santi020k-dark.png +0 -0
  57. package/assets/logos/logo-santi020k-dark.svg +9 -0
  58. package/assets/logos/logo-santi020k-dark.webp +0 -0
  59. package/assets/logos/logo-santi020k.png +0 -0
  60. package/assets/logos/logo-santi020k.svg +9 -0
  61. package/assets/logos/logo-santi020k.webp +0 -0
  62. package/assets/logos/logo-square.png +0 -0
  63. package/assets/logos/logo-square.svg +6 -0
  64. package/assets/logos/logo-square.webp +0 -0
  65. package/assets/projects/santi020k-theme/cover-horizontal.webp +0 -0
  66. package/assets/projects/santi020k-theme/cover-v2.webp +0 -0
  67. package/assets/projects/santi020k-theme/cover-vertical.webp +0 -0
  68. package/assets/projects/santi020k-theme/cover.webp +0 -0
  69. package/assets/projects/santi020k-theme/logo.webp +0 -0
  70. package/assets/projects/santi020k-theme/preview-light.webp +0 -0
  71. package/assets/vscode/icon.png +0 -0
  72. package/assets/vscode/icon.svg +5 -0
  73. package/assets/vscode/previews/preview-dark.png +0 -0
  74. package/assets/vscode/previews/preview-dark.svg +63 -0
  75. package/assets/vscode/previews/preview-hc-dark.png +0 -0
  76. package/assets/vscode/previews/preview-hc-light.png +0 -0
  77. package/assets/vscode/previews/preview-light.png +0 -0
  78. package/assets/vscode/previews/preview-light.svg +63 -0
  79. package/assets/wallpapers/wallpaper-1-desktop.png +0 -0
  80. package/assets/wallpapers/wallpaper-1-desktop.webp +0 -0
  81. package/assets/wallpapers/wallpaper-1-mobile.png +0 -0
  82. package/assets/wallpapers/wallpaper-1-mobile.webp +0 -0
  83. package/assets/wallpapers/wallpaper-2-desktop.png +0 -0
  84. package/assets/wallpapers/wallpaper-2-desktop.webp +0 -0
  85. package/assets/wallpapers/wallpaper-2-mobile.png +0 -0
  86. package/assets/wallpapers/wallpaper-2-mobile.webp +0 -0
  87. package/assets/wallpapers/wallpaper-3-desktop.png +0 -0
  88. package/assets/wallpapers/wallpaper-3-desktop.webp +0 -0
  89. package/assets/wallpapers/wallpaper-3-mobile.png +0 -0
  90. package/assets/wallpapers/wallpaper-3-mobile.webp +0 -0
  91. package/assets/wallpapers/wallpaper.png +0 -0
  92. package/assets/wallpapers/wallpaper.webp +0 -0
  93. package/docs/brand-guidelines.md +7 -0
  94. package/index.d.ts +100 -0
  95. package/index.js +531 -0
  96. package/package.json +75 -0
  97. package/site.css +84 -0
  98. package/site.d.ts +27 -0
  99. package/site.js +22 -0
  100. package/tailwind.d.ts +24 -0
  101. package/tailwind.js +24 -0
  102. package/tokens/tokens.css +88 -0
  103. package/tokens/tokens.json +120 -0
  104. package/typography.css +9 -0
@@ -0,0 +1,9 @@
1
+
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 504 80" role="img" aria-label="Santi020k">
3
+ <g transform="translate(0, 0)">
4
+ <rect width="80" height="80" rx="18" fill="#5a0fdb" />
5
+ <path d="M 26 28 L 40 40 L 26 52" fill="none" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" stroke-linejoin="round" />
6
+ <line x1="48" y1="52" x2="62" y2="52" stroke="#FFFFFF" stroke-width="8" stroke-linecap="round" />
7
+ </g>
8
+ <text x="100" y="54" font-family="Montserrat, Inter, sans-serif" font-weight="800" font-size="48" fill="#332e38" letter-spacing="-0.04em">Santi<tspan fill="#5a0fdb" font-weight="600" letter-spacing="-0.02em">020k</tspan></text>
9
+ </svg>
Binary file
Binary file
@@ -0,0 +1,6 @@
1
+
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="S2K Mark">
3
+ <rect width="128" height="128" rx="28" fill="#5a0fdb" />
4
+ <path d="M 40 44 L 64 64 L 40 84" fill="none" stroke="#FFFFFF" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" />
5
+ <line x1="74" y1="84" x2="96" y2="84" stroke="#FFFFFF" stroke-width="12" stroke-linecap="round" />
6
+ </svg>
Binary file
Binary file
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" role="img" aria-label="Santi020k Theme terminal mark">
2
+ <rect width="128" height="128" rx="28" fill="#5a0fdb" />
3
+ <path d="M 40 44 L 64 64 L 40 84" fill="none" stroke="#ffffff" stroke-width="12" stroke-linecap="round" stroke-linejoin="round" />
4
+ <line x1="74" y1="84" x2="96" y2="84" stroke="#ffffff" stroke-width="12" stroke-linecap="round" />
5
+ </svg>
@@ -0,0 +1,63 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1280" height="720" viewBox="0 0 1280 720" role="img" aria-labelledby="title desc">
2
+ <title id="title">santi020k dark theme preview</title>
3
+ <desc id="desc">A stylized VS Code editor preview using the santi020k dark color palette.</desc>
4
+ <rect width="1280" height="720" fill="#0e0919"/>
5
+ <rect x="0" y="0" width="1280" height="48" fill="#0e0919"/>
6
+ <rect x="0" y="48" width="76" height="672" fill="#0e0919"/>
7
+ <rect x="76" y="48" width="260" height="672" fill="#170f25"/>
8
+ <rect x="336" y="48" width="944" height="42" fill="#0e0919"/>
9
+ <rect x="336" y="90" width="944" height="630" fill="#120c1e"/>
10
+ <rect x="356" y="48" width="210" height="42" fill="#120c1e"/>
11
+ <rect x="356" y="88" width="210" height="2" fill="#8b52d6"/>
12
+ <text x="382" y="75" fill="#e8e0f0" font-family="Inter, Segoe UI, sans-serif" font-size="15">theme.ts</text>
13
+ <circle cx="28" cy="24" r="6" fill="#ea6962"/>
14
+ <circle cx="50" cy="24" r="6" fill="#e8b44a"/>
15
+ <circle cx="72" cy="24" r="6" fill="#7daea3"/>
16
+ <rect x="22" y="82" width="32" height="32" rx="8" fill="#261d3a"/>
17
+ <rect x="22" y="134" width="32" height="32" rx="8" fill="#1e1530"/>
18
+ <rect x="22" y="186" width="32" height="32" rx="8" fill="#1e1530"/>
19
+ <text x="104" y="92" fill="#b8a8d8" font-family="Inter, Segoe UI, sans-serif" font-size="13" font-weight="700">EXPLORER</text>
20
+ <text x="104" y="134" fill="#e8e0f0" font-family="Inter, Segoe UI, sans-serif" font-size="15">santi020k-theme</text>
21
+ <text x="126" y="176" fill="#c8b8e8" font-family="Inter, Segoe UI, sans-serif" font-size="14">themes</text>
22
+ <text x="146" y="214" fill="#d4a8ff" font-family="Inter, Segoe UI, sans-serif" font-size="14">santi020k-dark.json</text>
23
+ <text x="146" y="250" fill="#7868a0" font-family="Inter, Segoe UI, sans-serif" font-size="14">santi020k-light.json</text>
24
+ <text x="126" y="304" fill="#c8b8e8" font-family="Inter, Segoe UI, sans-serif" font-size="14">scripts</text>
25
+ <text x="126" y="340" fill="#c8b8e8" font-family="Inter, Segoe UI, sans-serif" font-size="14">website</text>
26
+ <g font-family="JetBrains Mono, SFMono-Regular, Consolas, monospace" font-size="20">
27
+ <text x="376" y="142" fill="#584878">01</text>
28
+ <text x="424" y="142" fill="#a06ee6" font-style="italic">const</text>
29
+ <text x="488" y="142" fill="#e8e0f0">palette</text>
30
+ <text x="584" y="142" fill="#9070c0">=</text>
31
+ <text x="620" y="142" fill="#9070c0">{</text>
32
+ <text x="376" y="184" fill="#584878">02</text>
33
+ <text x="464" y="184" fill="#b890f0">surface</text>
34
+ <text x="548" y="184" fill="#9070c0">:</text>
35
+ <text x="584" y="184" fill="#d4a8ff">'#120c1e'</text>
36
+ <text x="376" y="226" fill="#584878">03</text>
37
+ <text x="464" y="226" fill="#b890f0">accent</text>
38
+ <text x="536" y="226" fill="#9070c0">:</text>
39
+ <text x="572" y="226" fill="#d4a8ff">'#c090ff'</text>
40
+ <text x="376" y="268" fill="#584878">04</text>
41
+ <text x="464" y="268" fill="#b890f0">muted</text>
42
+ <text x="524" y="268" fill="#9070c0">:</text>
43
+ <text x="560" y="268" fill="#d4a8ff">'#7868a0'</text>
44
+ <text x="376" y="310" fill="#584878">05</text>
45
+ <text x="424" y="310" fill="#9070c0">}</text>
46
+ <text x="376" y="374" fill="#584878">06</text>
47
+ <text x="424" y="374" fill="#584878" font-style="italic">// Modern workbench surfaces stay violet and calm.</text>
48
+ <text x="376" y="416" fill="#584878">07</text>
49
+ <text x="424" y="416" fill="#a06ee6" font-style="italic">export</text>
50
+ <text x="512" y="416" fill="#a06ee6" font-style="italic">function</text>
51
+ <text x="624" y="416" fill="#c090ff">applyTheme</text>
52
+ <text x="748" y="416" fill="#9070c0">()</text>
53
+ <text x="788" y="416" fill="#9070c0">{</text>
54
+ <text x="376" y="458" fill="#584878">08</text>
55
+ <text x="464" y="458" fill="#a06ee6" font-style="italic">return</text>
56
+ <text x="548" y="458" fill="#e8e0f0">palette</text>
57
+ <text x="376" y="500" fill="#584878">09</text>
58
+ <text x="424" y="500" fill="#9070c0">}</text>
59
+ </g>
60
+ <rect x="336" y="660" width="944" height="60" fill="#0e0919"/>
61
+ <text x="376" y="696" fill="#b8a8d8" font-family="Inter, Segoe UI, sans-serif" font-size="15">santi020k dark</text>
62
+ <text x="1110" y="696" fill="#c090ff" font-family="Inter, Segoe UI, sans-serif" font-size="15">validated</text>
63
+ </svg>
@@ -0,0 +1,63 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1280" height="720" viewBox="0 0 1280 720" role="img" aria-labelledby="title desc">
2
+ <title id="title">santi020k light theme preview</title>
3
+ <desc id="desc">A stylized VS Code editor preview using the santi020k light color palette.</desc>
4
+ <rect width="1280" height="720" fill="#e3dff0"/>
5
+ <rect x="0" y="0" width="1280" height="48" fill="#e3dff0"/>
6
+ <rect x="0" y="48" width="76" height="672" fill="#e3dff0"/>
7
+ <rect x="76" y="48" width="260" height="672" fill="#f0edf9"/>
8
+ <rect x="336" y="48" width="944" height="42" fill="#e3dff0"/>
9
+ <rect x="336" y="90" width="944" height="630" fill="#f8f6fd"/>
10
+ <rect x="356" y="48" width="210" height="42" fill="#f8f6fd"/>
11
+ <rect x="356" y="88" width="210" height="2" fill="#6319be"/>
12
+ <text x="382" y="75" fill="#302e36" font-family="Inter, Segoe UI, sans-serif" font-size="15">theme.ts</text>
13
+ <circle cx="28" cy="24" r="6" fill="#c0392b"/>
14
+ <circle cx="50" cy="24" r="6" fill="#c07a10"/>
15
+ <circle cx="72" cy="24" r="6" fill="#28a745"/>
16
+ <rect x="22" y="82" width="32" height="32" rx="8" fill="#ddd8f0"/>
17
+ <rect x="22" y="134" width="32" height="32" rx="8" fill="#eae7f5"/>
18
+ <rect x="22" y="186" width="32" height="32" rx="8" fill="#eae7f5"/>
19
+ <text x="104" y="92" fill="#5a1ab0" font-family="Inter, Segoe UI, sans-serif" font-size="13" font-weight="700">EXPLORER</text>
20
+ <text x="104" y="134" fill="#302e36" font-family="Inter, Segoe UI, sans-serif" font-size="15">santi020k-theme</text>
21
+ <text x="126" y="176" fill="#403850" font-family="Inter, Segoe UI, sans-serif" font-size="14">themes</text>
22
+ <text x="146" y="214" fill="#6319be" font-family="Inter, Segoe UI, sans-serif" font-size="14">santi020k-light.json</text>
23
+ <text x="146" y="250" fill="#9880c0" font-family="Inter, Segoe UI, sans-serif" font-size="14">santi020k-dark.json</text>
24
+ <text x="126" y="304" fill="#403850" font-family="Inter, Segoe UI, sans-serif" font-size="14">scripts</text>
25
+ <text x="126" y="340" fill="#403850" font-family="Inter, Segoe UI, sans-serif" font-size="14">website</text>
26
+ <g font-family="JetBrains Mono, SFMono-Regular, Consolas, monospace" font-size="20">
27
+ <text x="376" y="142" fill="#9880c0">01</text>
28
+ <text x="424" y="142" fill="#5a1ab0" font-style="italic">const</text>
29
+ <text x="488" y="142" fill="#302e36">palette</text>
30
+ <text x="584" y="142" fill="#8b52d6">=</text>
31
+ <text x="620" y="142" fill="#8b52d6">{</text>
32
+ <text x="376" y="184" fill="#9880c0">02</text>
33
+ <text x="464" y="184" fill="#6020b8">surface</text>
34
+ <text x="548" y="184" fill="#8b52d6">:</text>
35
+ <text x="584" y="184" fill="#7030b0">'#f8f6fd'</text>
36
+ <text x="376" y="226" fill="#9880c0">03</text>
37
+ <text x="464" y="226" fill="#6020b8">accent</text>
38
+ <text x="536" y="226" fill="#8b52d6">:</text>
39
+ <text x="572" y="226" fill="#7030b0">'#6319be'</text>
40
+ <text x="376" y="268" fill="#9880c0">04</text>
41
+ <text x="464" y="268" fill="#6020b8">muted</text>
42
+ <text x="524" y="268" fill="#8b52d6">:</text>
43
+ <text x="560" y="268" fill="#7030b0">'#9880c0'</text>
44
+ <text x="376" y="310" fill="#9880c0">05</text>
45
+ <text x="424" y="310" fill="#8b52d6">}</text>
46
+ <text x="376" y="374" fill="#9880c0">06</text>
47
+ <text x="424" y="374" fill="#9880c0" font-style="italic">// Modern workbench surfaces stay violet and crisp.</text>
48
+ <text x="376" y="416" fill="#9880c0">07</text>
49
+ <text x="424" y="416" fill="#5a1ab0" font-style="italic">export</text>
50
+ <text x="512" y="416" fill="#5a1ab0" font-style="italic">function</text>
51
+ <text x="624" y="416" fill="#5a18a8">applyTheme</text>
52
+ <text x="748" y="416" fill="#8b52d6">()</text>
53
+ <text x="788" y="416" fill="#8b52d6">{</text>
54
+ <text x="376" y="458" fill="#9880c0">08</text>
55
+ <text x="464" y="458" fill="#5a1ab0" font-style="italic">return</text>
56
+ <text x="548" y="458" fill="#302e36">palette</text>
57
+ <text x="376" y="500" fill="#9880c0">09</text>
58
+ <text x="424" y="500" fill="#8b52d6">}</text>
59
+ </g>
60
+ <rect x="336" y="660" width="944" height="60" fill="#6319be"/>
61
+ <text x="376" y="696" fill="#ffffff" font-family="Inter, Segoe UI, sans-serif" font-size="15">santi020k light</text>
62
+ <text x="1110" y="696" fill="#ffffff" font-family="Inter, Segoe UI, sans-serif" font-size="15">validated</text>
63
+ </svg>
Binary file
Binary file
@@ -0,0 +1,7 @@
1
+ # Santi020k Theme Brand Guidelines
2
+
3
+ The canonical brand source of truth now lives at:
4
+
5
+ [`../../../docs/brand-guidelines.md`](../../../docs/brand-guidelines.md)
6
+
7
+ Keep brand direction, product names, palette rules, voice guidance, asset usage, and AI agent instructions there so the VS Code theme, Chrome theme, shared packages, and all websites stay aligned over time.
package/index.d.ts ADDED
@@ -0,0 +1,100 @@
1
+ import type {
2
+ AssetManifest,
3
+ BrandAsset,
4
+ BrandAssetCategory,
5
+ BrandConfig,
6
+ BrandSurface,
7
+ ColorToken,
8
+ TypographyConfig,
9
+ VoiceConfig
10
+ } from '@santi020k/theme-core'
11
+
12
+ export declare const packageName: '@santi020k/theme'
13
+ export declare const chromeThemeVariants: ['dark', 'light']
14
+ export declare const chromeThemeVariantManifests: Record<
15
+ ChromeThemeVariant,
16
+ {
17
+ manifest: string
18
+ output: string
19
+ }
20
+ >
21
+ export declare const chromeThemeImageRequirements: Record<
22
+ string,
23
+ {
24
+ format: 'png'
25
+ minWidth: number
26
+ minHeight: number
27
+ }
28
+ >
29
+ export declare const chromeThemeSourceTokenRoles: {
30
+ chrome: string
31
+ source: string
32
+ transform?: string
33
+ }[]
34
+ export declare const chromeThemeContrastPairs: {
35
+ fg: string
36
+ bg: string
37
+ label: string
38
+ minRatio?: number
39
+ }[]
40
+ export declare const chromeRuntimeAssetEntries: {
41
+ destination: string
42
+ source: string
43
+ }[]
44
+ export type ChromeThemeVariant = typeof chromeThemeVariants[number]
45
+ export type RgbColor = [number, number, number]
46
+ export declare const colors: ColorToken[]
47
+ export declare const typography: TypographyConfig
48
+ export declare const fontFamily: {
49
+ sans: string
50
+ display: string
51
+ mono: string
52
+ }
53
+ export declare const staticAssets: Record<string, string>
54
+ export declare const assets: BrandAsset[]
55
+ export declare const manifest: AssetManifest
56
+ export interface ProjectImageMetadata {
57
+ src: string
58
+ horizontal: string
59
+ vertical: string
60
+ logo: string
61
+ logoAspect: 'square' | 'portrait' | 'landscape'
62
+ logoSurface: 'dark' | 'light' | 'transparent'
63
+ alt: string
64
+ }
65
+ export interface ProjectMetadata {
66
+ slug: string
67
+ title: string
68
+ description: string
69
+ role: string
70
+ startingDate: string
71
+ githubUrl: string
72
+ liveDemoUrl: string
73
+ typesId: string
74
+ impactMetrics: string[]
75
+ technologies: string[]
76
+ coverImage: ProjectImageMetadata
77
+ previewImage: string
78
+ }
79
+ export declare const projects: {
80
+ santi020kTheme: ProjectMetadata
81
+ }
82
+ export declare const voice: VoiceConfig
83
+ export declare const config: BrandConfig
84
+ export declare function isChromeThemeVariant(variant: string): variant is ChromeThemeVariant
85
+ export declare function hexToRgb(hex: string): RgbColor
86
+ export declare function darkenRgb(rgb: RgbColor | number[], factor: number): RgbColor
87
+ export declare function darkenHex(hex: string, factor: number): RgbColor
88
+ export declare function clampRgb(rgb: RgbColor | number[]): RgbColor
89
+ export declare function getRgbLuminance(rgb: RgbColor | number[]): number
90
+ export declare function getRgbContrastRatio(rgb1: RgbColor | number[], rgb2: RgbColor | number[]): number
91
+ export declare function createChromeThemeFromVSCodeColors(
92
+ vscodeColors: Record<string, string>,
93
+ variant?: ChromeThemeVariant
94
+ ): {
95
+ colors: Record<string, RgbColor>
96
+ properties: Record<string, string | number>
97
+ }
98
+ export declare function getAsset(path: string): BrandAsset | undefined
99
+ export declare function getAssets(category: BrandAssetCategory): BrandAsset[]
100
+ export declare function getSurfaceAssets(surface: BrandSurface): BrandAsset[]