@dataengineeringformachinelearning/viking-ui 3.0.0-alpha.4 → 4.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 (173) hide show
  1. package/README.md +6 -3
  2. package/dist/LICENSE +201 -0
  3. package/dist/README.md +251 -0
  4. package/dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs +13751 -0
  5. package/dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs.map +1 -0
  6. package/dist/index.js +1 -4051
  7. package/dist/package.json +87 -0
  8. package/dist/scripts/build-web-components.mjs +37 -0
  9. package/dist/src/tokens/series-presets.ts +15 -0
  10. package/dist/src/tokens/tailwind.preset.js +209 -0
  11. package/dist/src/tokens/viking-tokens.json +318 -0
  12. package/dist/src/web/badge/viking-badge-wc.ts +116 -0
  13. package/dist/src/web/button/viking-button-wc.ts +165 -0
  14. package/dist/src/web/callout/viking-callout-wc.ts +105 -0
  15. package/dist/src/web/card/viking-card-wc.ts +66 -0
  16. package/dist/src/web/core/base.ts +56 -0
  17. package/dist/src/web/core/dom.ts +53 -0
  18. package/dist/src/web/core/icons-inline.ts +44 -0
  19. package/dist/src/web/core/styles.ts +1138 -0
  20. package/dist/src/web/core/types.ts +19 -0
  21. package/dist/src/web/field/viking-field-wc.ts +154 -0
  22. package/dist/src/web/index.ts +73 -0
  23. package/dist/src/web/input/viking-input-wc.ts +211 -0
  24. package/dist/src/web/modal/viking-modal-wc.ts +187 -0
  25. package/dist/src/web/search-palette/viking-search-palette-wc.ts +494 -0
  26. package/dist/src/web/select/viking-select-wc.ts +218 -0
  27. package/dist/src/web/suite-header/viking-suite-header-wc.ts +714 -0
  28. package/dist/src/web/suite-search-palette/viking-suite-search-palette-wc.ts +234 -0
  29. package/dist/src/web/theme-toggle/viking-theme-toggle-wc.ts +139 -0
  30. package/dist/src/web/types.ts +37 -0
  31. package/dist/src/web/web-components.spec.ts +297 -0
  32. package/dist/types/dataengineeringformachinelearning-viking-ui.d.ts +2658 -0
  33. package/dist/viking.manifest.json +271 -0
  34. package/dist/web-components.js +2427 -126
  35. package/package.json +25 -11
  36. package/dist/core/brand-icons.d.ts +0 -29
  37. package/dist/core/icons.d.ts +0 -132
  38. package/dist/core/integration-brand-icons.d.ts +0 -18
  39. package/dist/core/lucide-paths.generated.d.ts +0 -90
  40. package/dist/core/types.d.ts +0 -56
  41. package/dist/core/uid.d.ts +0 -2
  42. package/dist/elements/button/viking-button.d.ts +0 -14
  43. package/dist/elements/card/viking-card.d.ts +0 -8
  44. package/dist/elements/core/dom.d.ts +0 -4
  45. package/dist/elements/core/styles.d.ts +0 -2
  46. package/dist/elements/modal/viking-modal.d.ts +0 -15
  47. package/dist/index.d.ts +0 -1
  48. package/dist/lib/accordion/accordion.d.ts +0 -19
  49. package/dist/lib/app-header/app-header.d.ts +0 -8
  50. package/dist/lib/app-sidebar/app-sidebar.d.ts +0 -10
  51. package/dist/lib/auth-panel/auth-panel.d.ts +0 -13
  52. package/dist/lib/autocomplete/autocomplete.d.ts +0 -25
  53. package/dist/lib/avatar/avatar.d.ts +0 -14
  54. package/dist/lib/badge/badge.d.ts +0 -16
  55. package/dist/lib/bar/bar.d.ts +0 -4
  56. package/dist/lib/brand/brand.d.ts +0 -8
  57. package/dist/lib/breadcrumbs/breadcrumbs.d.ts +0 -10
  58. package/dist/lib/button/button-group.d.ts +0 -6
  59. package/dist/lib/button/button.d.ts +0 -25
  60. package/dist/lib/calendar/calendar.d.ts +0 -22
  61. package/dist/lib/callout/callout.d.ts +0 -14
  62. package/dist/lib/card/card-title.d.ts +0 -12
  63. package/dist/lib/card/card.d.ts +0 -19
  64. package/dist/lib/carousel/carousel.d.ts +0 -13
  65. package/dist/lib/chart/chart-zoom.d.ts +0 -14
  66. package/dist/lib/chart/chart.d.ts +0 -119
  67. package/dist/lib/chart-card-header/chart-card-header.d.ts +0 -10
  68. package/dist/lib/chart-empty-state/chart-empty-state.d.ts +0 -13
  69. package/dist/lib/chart-panel/chart-panel.d.ts +0 -10
  70. package/dist/lib/checkbox/checkbox.d.ts +0 -13
  71. package/dist/lib/color-picker/color-picker.d.ts +0 -16
  72. package/dist/lib/command/command.d.ts +0 -23
  73. package/dist/lib/composer/composer.d.ts +0 -15
  74. package/dist/lib/confirm-dialog/confirm-dialog.d.ts +0 -18
  75. package/dist/lib/confirm-dialog/dialog.service.d.ts +0 -28
  76. package/dist/lib/context/context.d.ts +0 -17
  77. package/dist/lib/core/brand-icons.d.ts +0 -29
  78. package/dist/lib/core/cva.d.ts +0 -15
  79. package/dist/lib/core/icons.d.ts +0 -132
  80. package/dist/lib/core/integration-brand-icons.d.ts +0 -18
  81. package/dist/lib/core/lucide-paths.generated.d.ts +0 -90
  82. package/dist/lib/date-picker/date-picker.d.ts +0 -18
  83. package/dist/lib/dropdown/dropdown.d.ts +0 -29
  84. package/dist/lib/editor/editor.d.ts +0 -26
  85. package/dist/lib/empty-state/empty-state.d.ts +0 -9
  86. package/dist/lib/fab/fab.d.ts +0 -9
  87. package/dist/lib/field/field.d.ts +0 -14
  88. package/dist/lib/file-upload/file-upload.d.ts +0 -19
  89. package/dist/lib/footer/footer.d.ts +0 -6
  90. package/dist/lib/form-section/form-section.d.ts +0 -15
  91. package/dist/lib/gauge-arc/gauge-arc.d.ts +0 -8
  92. package/dist/lib/hud-panel/hud-panel.d.ts +0 -5
  93. package/dist/lib/icon/icon.d.ts +0 -44
  94. package/dist/lib/icon-badge/icon-badge.d.ts +0 -14
  95. package/dist/lib/icon-heading/icon-heading.d.ts +0 -9
  96. package/dist/lib/icon-text/icon-text.d.ts +0 -12
  97. package/dist/lib/input/input.d.ts +0 -23
  98. package/dist/lib/kanban/kanban.d.ts +0 -16
  99. package/dist/lib/kbd/kbd.d.ts +0 -5
  100. package/dist/lib/label/label.d.ts +0 -7
  101. package/dist/lib/loading-overlay/loading-overlay.d.ts +0 -10
  102. package/dist/lib/menubar/menubar.d.ts +0 -10
  103. package/dist/lib/metric-card/metric-card.d.ts +0 -9
  104. package/dist/lib/modal/modal.d.ts +0 -13
  105. package/dist/lib/native-select/native-select.d.ts +0 -17
  106. package/dist/lib/navbar/navbar.d.ts +0 -13
  107. package/dist/lib/navigation-menu/navigation-menu.d.ts +0 -13
  108. package/dist/lib/otp-input/otp-input.d.ts +0 -23
  109. package/dist/lib/page-back-link/page-back-link.d.ts +0 -11
  110. package/dist/lib/page-header/page-header.d.ts +0 -15
  111. package/dist/lib/pagination/pagination.d.ts +0 -10
  112. package/dist/lib/pillbox/pillbox.d.ts +0 -15
  113. package/dist/lib/popover/popover.d.ts +0 -15
  114. package/dist/lib/profile/profile.d.ts +0 -11
  115. package/dist/lib/progress/progress.d.ts +0 -12
  116. package/dist/lib/radio/radio.d.ts +0 -16
  117. package/dist/lib/ring-gauge/ring-gauge.d.ts +0 -8
  118. package/dist/lib/scroll-area/scroll-area.d.ts +0 -7
  119. package/dist/lib/search-palette/search-palette.d.ts +0 -16
  120. package/dist/lib/select/select.d.ts +0 -26
  121. package/dist/lib/separator/separator.d.ts +0 -8
  122. package/dist/lib/sheet/sheet.d.ts +0 -13
  123. package/dist/lib/sidebar-nav/sidebar-nav.d.ts +0 -46
  124. package/dist/lib/site-drakkar/site-drakkar.config.d.ts +0 -50
  125. package/dist/lib/site-drakkar/site-footer.d.ts +0 -18
  126. package/dist/lib/site-drakkar/site-navbar.d.ts +0 -25
  127. package/dist/lib/site-drakkar/suite-search-items.d.ts +0 -17
  128. package/dist/lib/skeleton/skeleton.d.ts +0 -8
  129. package/dist/lib/slider/slider.d.ts +0 -17
  130. package/dist/lib/spinner/spinner.d.ts +0 -7
  131. package/dist/lib/status-metric-row/status-metric-row.d.ts +0 -9
  132. package/dist/lib/suite-search-palette/suite-search-palette.d.ts +0 -25
  133. package/dist/lib/switch/switch.d.ts +0 -12
  134. package/dist/lib/table/table.d.ts +0 -10
  135. package/dist/lib/tabs/tab-panel.d.ts +0 -12
  136. package/dist/lib/tabs/tab.d.ts +0 -14
  137. package/dist/lib/tabs/tabs.d.ts +0 -10
  138. package/dist/lib/textarea/textarea.d.ts +0 -16
  139. package/dist/lib/theme-toggle/theme-toggle.d.ts +0 -9
  140. package/dist/lib/time-picker/time-picker.d.ts +0 -21
  141. package/dist/lib/timeline/timeline.d.ts +0 -14
  142. package/dist/lib/toast/toast.d.ts +0 -21
  143. package/dist/lib/toggle/toggle-group.d.ts +0 -9
  144. package/dist/lib/toggle/toggle.d.ts +0 -15
  145. package/dist/lib/tooltip/tooltip.d.ts +0 -20
  146. package/dist/lib/typography/heading.d.ts +0 -9
  147. package/dist/lib/typography/text.d.ts +0 -11
  148. package/dist/lib/uptime-bar/uptime-bar.d.ts +0 -6
  149. package/dist/lib/verification-code-field/verification-code-field.d.ts +0 -19
  150. package/dist/lib/whitepaper-cta/whitepaper-cta.d.ts +0 -15
  151. package/dist/lib/wizard/wizard.d.ts +0 -13
  152. package/dist/public-api.d.ts +0 -109
  153. package/dist/tokens/series-presets.d.ts +0 -4
  154. package/dist/web/badge/viking-badge-wc.d.ts +0 -28
  155. package/dist/web/button/viking-button-wc.d.ts +0 -28
  156. package/dist/web/callout/viking-callout-wc.d.ts +0 -27
  157. package/dist/web/card/viking-card-wc.d.ts +0 -29
  158. package/dist/web/core/base.d.ts +0 -12
  159. package/dist/web/core/dom.d.ts +0 -11
  160. package/dist/web/core/icons-inline.d.ts +0 -7
  161. package/dist/web/core/styles.d.ts +0 -12
  162. package/dist/web/core/types.d.ts +0 -10
  163. package/dist/web/field/viking-field-wc.d.ts +0 -32
  164. package/dist/web/index.d.ts +0 -15
  165. package/dist/web/input/viking-input-wc.d.ts +0 -32
  166. package/dist/web/modal/viking-modal-wc.d.ts +0 -50
  167. package/dist/web/search-palette/viking-search-palette-wc.d.ts +0 -64
  168. package/dist/web/select/viking-select-wc.d.ts +0 -48
  169. package/dist/web/suite-header/viking-suite-header-wc.d.ts +0 -36
  170. package/dist/web/suite-search-palette/viking-suite-search-palette-wc.d.ts +0 -39
  171. package/dist/web/theme-toggle/viking-theme-toggle-wc.d.ts +0 -19
  172. package/dist/web/types.d.ts +0 -40
  173. package/dist/web-components/index.d.ts +0 -1
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "@dataengineeringformachinelearning/viking-ui",
3
+ "version": "4.0.0",
4
+ "description": "Universal Viking-UI design system for Astro, Angular, and Django.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "private": false,
8
+ "main": "./dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs",
9
+ "module": "fesm2022/dataengineeringformachinelearning-viking-ui.mjs",
10
+ "types": "./dist/types/dataengineeringformachinelearning-viking-ui.d.ts",
11
+ "style": "./dist/viking-ui.css",
12
+ "browser": "./dist/viking-ui-elements.js",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/dataengineeringformachinelearning/dataengineeringformachinelearning.git",
16
+ "directory": "packages/viking-ui"
17
+ },
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "exports": {
22
+ ".": {
23
+ "import": "./dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs",
24
+ "types": "./types/dataengineeringformachinelearning-viking-ui.d.ts",
25
+ "default": "./fesm2022/dataengineeringformachinelearning-viking-ui.mjs"
26
+ },
27
+ "./dist/index.js": "./dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs",
28
+ "./dist/viking-ui.css": "./dist/viking-ui.css",
29
+ "./dist/viking-ui-elements.js": "./dist/viking-ui-elements.js",
30
+ "./dist/web-components.js": "./dist/web-components.js",
31
+ "./dist/widget.js": "./dist/widget.js",
32
+ "./elements": {
33
+ "types": "./dist/types/dataengineeringformachinelearning-viking-ui.d.ts",
34
+ "import": "./dist/web-components.js",
35
+ "default": "./dist/web-components.js"
36
+ },
37
+ "./elements.js": "./dist/viking-ui-elements.js",
38
+ "./viking-ui-elements.js": "./dist/viking-ui-elements.js",
39
+ "./web-components.js": "./dist/web-components.js",
40
+ "./web-components": {
41
+ "types": "./dist/types/dataengineeringformachinelearning-viking-ui.d.ts",
42
+ "import": "./dist/web-components.js",
43
+ "default": "./dist/web-components.js"
44
+ },
45
+ "./css": "./dist/viking-ui.css",
46
+ "./css/index.css": "./dist/viking-ui.css",
47
+ "./css/viking-ui.css": "./dist/viking-ui.css",
48
+ "./css/design-tokens.css": "./dist/design-tokens.css",
49
+ "./css/viking-components.css": "./dist/viking-components.css",
50
+ "./css/deml-components.css": "./dist/deml-components.css",
51
+ "./css/tokens.css": "./dist/design-tokens.css",
52
+ "./css/components.css": "./dist/viking-components.css",
53
+ "./design-tokens.css": "./dist/design-tokens.css",
54
+ "./tokens.css": "./dist/design-tokens.css",
55
+ "./tokens": "./dist/viking-tokens.json",
56
+ "./tokens.json": "./dist/viking-tokens.json",
57
+ "./viking-tokens.json": "./dist/viking-tokens.json",
58
+ "./components.css": "./dist/viking-components.css",
59
+ "./deml-components.css": "./dist/deml-components.css",
60
+ "./viking-ui.css": "./dist/viking-ui.css",
61
+ "./package.json": {
62
+ "default": "./package.json"
63
+ }
64
+ },
65
+ "files": [
66
+ "dist",
67
+ "src",
68
+ "README.md"
69
+ ],
70
+ "peerDependencies": {
71
+ "@angular/common": "^22.0.0",
72
+ "@angular/core": "^22.0.0",
73
+ "@angular/forms": "^22.0.0"
74
+ },
75
+ "sideEffects": [
76
+ "./dist/viking-ui-elements.js",
77
+ "./dist/viking-ui.css",
78
+ "./dist/design-tokens.css",
79
+ "./dist/viking-components.css",
80
+ "./dist/deml-components.css",
81
+ "./src/index.ts"
82
+ ],
83
+ "typings": "types/dataengineeringformachinelearning-viking-ui.d.ts",
84
+ "dependencies": {
85
+ "tslib": "^2.3.0"
86
+ }
87
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Bundles Viking-UI Web Components for framework-agnostic usage.
3
+ * Output: viking-ui-elements.js (IIFE, auto-registers custom elements)
4
+ */
5
+ import { execSync } from "node:child_process";
6
+ import fs from "node:fs";
7
+ import path from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+
10
+ const dirname = path.dirname(fileURLToPath(import.meta.url));
11
+ const pkgDir = path.join(dirname, "..");
12
+ const rootDir = path.join(pkgDir, "..", "..");
13
+ const docsDir = path.join(rootDir, "viking-ui-docs");
14
+ const outDir = path.join(docsDir, "dist", "static-css");
15
+ const entry = path.join(pkgDir, "src", "web", "index.ts");
16
+ const outFile = path.join(outDir, "viking-ui-elements.js");
17
+
18
+ const esbuildCandidates = [
19
+ path.join(rootDir, "frontend", "node_modules", ".bin", "esbuild"),
20
+ path.join(docsDir, "node_modules", ".bin", "esbuild"),
21
+ ];
22
+ const esbuildBin =
23
+ esbuildCandidates.find((candidate) => fs.existsSync(candidate)) ?? "esbuild";
24
+
25
+ fs.mkdirSync(outDir, { recursive: true });
26
+
27
+ execSync(
28
+ `"${esbuildBin}" "${entry}" --bundle --format=iife --global-name=VikingUI --outfile="${outFile}" --target=es2022 --minify`,
29
+ { cwd: pkgDir, stdio: "inherit" },
30
+ );
31
+
32
+ console.log(`Wrote ${outFile}`);
33
+
34
+ // Mirror to docs public assets
35
+ const publicAssetsDir = path.join(docsDir, "public", "assets");
36
+ fs.mkdirSync(publicAssetsDir, { recursive: true });
37
+ fs.copyFileSync(outFile, path.join(publicAssetsDir, "viking-ui-elements.js"));
@@ -0,0 +1,15 @@
1
+ /** Fixed series palette — keep in sync with viking-tokens.json and THEME.md §8.4 */
2
+ export const VIKING_SERIES_PRESETS = [
3
+ "var(--viking-electric-500)",
4
+ "var(--viking-crimson-600)",
5
+ "var(--viking-green-500)",
6
+ "var(--viking-gold-500)",
7
+ "var(--viking-crimson-500)",
8
+ "var(--viking-blue-500)",
9
+ "var(--viking-charcoal-700)",
10
+ "var(--viking-metallic-500)",
11
+ ] as const;
12
+
13
+ export const VIKING_SERIES_DEFAULT = VIKING_SERIES_PRESETS[0];
14
+
15
+ export type VikingSeriesPreset = (typeof VIKING_SERIES_PRESETS)[number];
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Viking-UI Tailwind CSS preset
3
+ * ---------------------------------------------------------------------------
4
+ * Maps Tailwind utilities to canonical --viking-* CSS custom properties.
5
+ * Use with Tailwind v3/v4: presets: [require('@dataengineeringformachinelearning/viking-ui/tokens/tailwind.preset')]
6
+ *
7
+ * Load viking-ui.css or design-tokens.css before Tailwind so variables resolve.
8
+ */
9
+
10
+ /** @type {import('tailwindcss').Config} */
11
+ module.exports = {
12
+ theme: {
13
+ extend: {
14
+ colors: {
15
+ viking: {
16
+ bg: "var(--viking-bg)",
17
+ surface: "var(--viking-surface)",
18
+ "surface-alt": "var(--viking-surface-alt)",
19
+ "surface-raised": "var(--viking-surface-raised)",
20
+ text: "var(--viking-text)",
21
+ "text-muted": "var(--viking-text-muted)",
22
+ "text-subtle": "var(--viking-text-subtle)",
23
+ "text-inverted": "var(--viking-text-inverted)",
24
+ border: "var(--viking-border)",
25
+ "border-strong": "var(--viking-border-strong)",
26
+ "border-subtle": "var(--viking-border-subtle)",
27
+ accent: "var(--viking-accent)",
28
+ "accent-hover": "var(--viking-accent-hover)",
29
+ "accent-content": "var(--viking-accent-content)",
30
+ "accent-soft": "var(--viking-accent-soft)",
31
+ "accent-strong": "var(--viking-accent-strong)",
32
+ "accent-secondary": "var(--viking-accent-secondary)",
33
+ "accent-secondary-hover": "var(--viking-accent-secondary-hover)",
34
+ "accent-secondary-content": "var(--viking-accent-secondary-content)",
35
+ "accent-secondary-soft": "var(--viking-accent-secondary-soft)",
36
+ success: "var(--viking-success)",
37
+ warning: "var(--viking-warning)",
38
+ danger: "var(--viking-danger)",
39
+ info: "var(--viking-info)",
40
+ ring: "var(--viking-ring)",
41
+ charcoal: {
42
+ 950: "var(--viking-charcoal-950)",
43
+ 900: "var(--viking-charcoal-900)",
44
+ 800: "var(--viking-charcoal-800)",
45
+ 700: "var(--viking-charcoal-700)",
46
+ 600: "var(--viking-charcoal-600)",
47
+ 500: "var(--viking-charcoal-500)",
48
+ },
49
+ metallic: {
50
+ 600: "var(--viking-metallic-600)",
51
+ 500: "var(--viking-metallic-500)",
52
+ 400: "var(--viking-metallic-400)",
53
+ 300: "var(--viking-metallic-300)",
54
+ 200: "var(--viking-metallic-200)",
55
+ 100: "var(--viking-metallic-100)",
56
+ },
57
+ electric: {
58
+ 900: "var(--viking-electric-900)",
59
+ 800: "var(--viking-electric-800)",
60
+ 700: "var(--viking-electric-700)",
61
+ 600: "var(--viking-electric-600)",
62
+ 500: "var(--viking-electric-500)",
63
+ 400: "var(--viking-electric-400)",
64
+ 300: "var(--viking-electric-300)",
65
+ 200: "var(--viking-electric-200)",
66
+ 100: "var(--viking-electric-100)",
67
+ },
68
+ teal: {
69
+ 700: "var(--viking-electric-700)",
70
+ 600: "var(--viking-electric-600)",
71
+ 500: "var(--viking-electric-500)",
72
+ 400: "var(--viking-electric-400)",
73
+ 300: "var(--viking-electric-300)",
74
+ },
75
+ crimson: {
76
+ 700: "var(--viking-crimson-700)",
77
+ 600: "var(--viking-crimson-600)",
78
+ 500: "var(--viking-crimson-500)",
79
+ 400: "var(--viking-crimson-400)",
80
+ },
81
+ series: {
82
+ 1: "var(--viking-series-1)",
83
+ 2: "var(--viking-series-2)",
84
+ 3: "var(--viking-series-3)",
85
+ 4: "var(--viking-series-4)",
86
+ 5: "var(--viking-series-5)",
87
+ 6: "var(--viking-series-6)",
88
+ 7: "var(--viking-series-7)",
89
+ 8: "var(--viking-series-8)",
90
+ DEFAULT: "var(--viking-series-default)",
91
+ },
92
+ },
93
+ },
94
+ fontFamily: {
95
+ sans: ["var(--viking-font-family)"],
96
+ mono: ["var(--viking-font-family-mono)"],
97
+ },
98
+ fontSize: {
99
+ "viking-2xs": [
100
+ "var(--viking-font-size-2xs)",
101
+ { lineHeight: "var(--viking-line-height-tight)" },
102
+ ],
103
+ "viking-xs": [
104
+ "var(--viking-font-size-xs)",
105
+ { lineHeight: "var(--viking-line-height-tight)" },
106
+ ],
107
+ "viking-sm": [
108
+ "var(--viking-font-size-sm)",
109
+ { lineHeight: "var(--viking-line-height-normal)" },
110
+ ],
111
+ viking: [
112
+ "var(--viking-font-size)",
113
+ { lineHeight: "var(--viking-line-height-relaxed)" },
114
+ ],
115
+ "viking-md": [
116
+ "var(--viking-font-size-md)",
117
+ { lineHeight: "var(--viking-line-height-relaxed)" },
118
+ ],
119
+ "viking-lg": [
120
+ "var(--viking-font-size-lg)",
121
+ { lineHeight: "var(--viking-line-height-tight)" },
122
+ ],
123
+ "viking-xl": [
124
+ "var(--viking-font-size-xl)",
125
+ { lineHeight: "var(--viking-line-height-tight)" },
126
+ ],
127
+ "viking-2xl": [
128
+ "var(--viking-font-size-2xl)",
129
+ { lineHeight: "var(--viking-line-height-tight)" },
130
+ ],
131
+ "viking-3xl": [
132
+ "var(--viking-font-size-3xl)",
133
+ { lineHeight: "var(--viking-line-height-tight)" },
134
+ ],
135
+ "viking-4xl": [
136
+ "var(--viking-font-size-4xl)",
137
+ { lineHeight: "var(--viking-line-height-tight)" },
138
+ ],
139
+ },
140
+ spacing: {
141
+ "viking-0": "var(--viking-space-0)",
142
+ "viking-px": "var(--viking-space-px)",
143
+ "viking-half": "var(--viking-space-half)",
144
+ "viking-1": "var(--viking-space-1)",
145
+ "viking-1.5": "var(--viking-space-1-5)",
146
+ "viking-2": "var(--viking-space-2)",
147
+ "viking-3": "var(--viking-space-3)",
148
+ "viking-4": "var(--viking-space-4)",
149
+ "viking-5": "var(--viking-space-5)",
150
+ "viking-6": "var(--viking-space-6)",
151
+ "viking-7": "var(--viking-space-7)",
152
+ "viking-8": "var(--viking-space-8)",
153
+ "viking-9": "var(--viking-space-9)",
154
+ "viking-10": "var(--viking-space-10)",
155
+ },
156
+ borderRadius: {
157
+ "viking-xs": "var(--viking-radius-xs)",
158
+ "viking-sm": "var(--viking-radius-sm)",
159
+ viking: "var(--viking-radius)",
160
+ "viking-md": "var(--viking-radius-md)",
161
+ "viking-lg": "var(--viking-radius-lg)",
162
+ "viking-xl": "var(--viking-radius-xl)",
163
+ "viking-pill": "var(--viking-radius-pill)",
164
+ },
165
+ boxShadow: {
166
+ "viking-xs": "var(--viking-shadow-xs)",
167
+ "viking-sm": "var(--viking-shadow-sm)",
168
+ "viking-md": "var(--viking-shadow-md)",
169
+ "viking-lg": "var(--viking-shadow-lg)",
170
+ "viking-inner": "var(--viking-shadow-inner)",
171
+ "viking-hover": "var(--viking-shadow-hover)",
172
+ },
173
+ transitionTimingFunction: {
174
+ viking: "var(--viking-ease-default)",
175
+ "viking-in": "var(--viking-ease-in)",
176
+ "viking-out": "var(--viking-ease-out)",
177
+ },
178
+ transitionDuration: {
179
+ "viking-fast": "var(--viking-duration-fast)",
180
+ viking: "var(--viking-duration)",
181
+ "viking-slow": "var(--viking-duration-slow)",
182
+ },
183
+ maxWidth: {
184
+ "viking-container": "var(--viking-container-max-width)",
185
+ },
186
+ height: {
187
+ "viking-control": "var(--viking-control-height)",
188
+ "viking-control-sm": "var(--viking-control-height-sm)",
189
+ "viking-control-xs": "var(--viking-control-height-xs)",
190
+ "viking-navbar": "var(--viking-navbar-height)",
191
+ },
192
+ width: {
193
+ "viking-sidebar": "var(--viking-sidebar-width)",
194
+ "viking-btn-min": "var(--viking-btn-min-width)",
195
+ },
196
+ zIndex: {
197
+ "viking-overlay": "var(--viking-z-overlay)",
198
+ "viking-toast": "var(--viking-z-toast)",
199
+ "viking-tooltip": "var(--viking-z-tooltip)",
200
+ },
201
+ outlineWidth: {
202
+ viking: "var(--viking-ring-width)",
203
+ },
204
+ outlineOffset: {
205
+ viking: "var(--viking-ring-offset)",
206
+ },
207
+ },
208
+ },
209
+ };
@@ -0,0 +1,318 @@
1
+ {
2
+ "$schema": "./viking-tokens.schema.json",
3
+ "meta": {
4
+ "name": "viking-ui",
5
+ "version": "2.1.0",
6
+ "description": "Canonical DEML design tokens — single source of truth for primitives, semantic aliases, and component foundations",
7
+ "canonicalScss": "../styles/_variables.scss",
8
+ "documentation": "../../../THEME.md"
9
+ },
10
+ "color": {
11
+ "navy": {
12
+ "1000": "#01030a",
13
+ "950": "#030818",
14
+ "900": "#0a1024",
15
+ "800": "#101b33",
16
+ "700": "#162544",
17
+ "600": "#1e3054",
18
+ "500": "#284068",
19
+ "400": "#39547f",
20
+ "300": "#58719e",
21
+ "200": "#8fa2c2",
22
+ "100": "#d7e0ef"
23
+ },
24
+ "charcoal": {
25
+ "950": "{color.navy.950}",
26
+ "900": "{color.navy.900}",
27
+ "800": "{color.navy.800}",
28
+ "700": "{color.navy.700}",
29
+ "600": "{color.navy.600}",
30
+ "500": "{color.navy.500}",
31
+ "400": "{color.navy.400}",
32
+ "300": "{color.navy.300}",
33
+ "200": "{color.navy.200}",
34
+ "100": "{color.navy.100}"
35
+ },
36
+ "electric": {
37
+ "900": "#04225f",
38
+ "800": "#073a99",
39
+ "700": "#0a4fd4",
40
+ "600": "#1565f0",
41
+ "500": "#2176ff",
42
+ "400": "#4d94ff",
43
+ "300": "#7ab0ff",
44
+ "200": "#b6d3ff",
45
+ "100": "#e7f1ff"
46
+ },
47
+ "metallic": {
48
+ "600": "#555555",
49
+ "500": "#666666",
50
+ "400": "#777777",
51
+ "300": "#999999",
52
+ "200": "#aaaaaa",
53
+ "100": "#bbbbbb",
54
+ "050": "#e6e8ec"
55
+ },
56
+ "teal": {
57
+ "700": "{color.electric.700}",
58
+ "600": "{color.electric.600}",
59
+ "500": "{color.electric.500}",
60
+ "400": "{color.electric.400}",
61
+ "300": "{color.electric.300}"
62
+ },
63
+ "crimson": {
64
+ "700": "#7a2231",
65
+ "600": "#922b3e",
66
+ "500": "#a83344",
67
+ "400": "#c44355",
68
+ "300": "#dc6b78",
69
+ "100": "#fde8ec"
70
+ },
71
+ "cyan": { "600": "#168aad", "500": "#1fa2c9", "400": "#47bee0" },
72
+ "violet": { "600": "#6f5bd7", "500": "#8674f0" },
73
+ "amber": { "600": "#a77912", "500": "#d69e2e" },
74
+ "green": { "500": "#2a9d8f" },
75
+ "gold": { "500": "#c4a035" },
76
+ "blue": { "500": "{color.electric.400}" },
77
+ "red": { "500": "{color.crimson.500}" },
78
+ "ink": {
79
+ "1000": "#000000",
80
+ "950": "#050609",
81
+ "900": "#0c0f14",
82
+ "800": "#151a22",
83
+ "700": "#202735"
84
+ },
85
+ "slate": { "100": "#f4f7fb", "050": "#fbfcfe" },
86
+ "white": "#f5f5f5",
87
+ "whitePure": "#ffffff",
88
+ "black": "#000000"
89
+ },
90
+ "series": {
91
+ "1": {
92
+ "hex": "#2176ff",
93
+ "token": "--viking-series-1",
94
+ "role": "Primary series, default selection"
95
+ },
96
+ "2": {
97
+ "hex": "#922b3e",
98
+ "token": "--viking-series-2",
99
+ "role": "Secondary / comparison series"
100
+ },
101
+ "3": {
102
+ "hex": "#2a9d8f",
103
+ "token": "--viking-series-3",
104
+ "role": "Success / stable metrics"
105
+ },
106
+ "4": {
107
+ "hex": "#c4a035",
108
+ "token": "--viking-series-4",
109
+ "role": "Warning / threshold proximity"
110
+ },
111
+ "5": {
112
+ "hex": "#a83344",
113
+ "token": "--viking-series-5",
114
+ "role": "Critical / anomaly series"
115
+ },
116
+ "6": {
117
+ "hex": "#4d94ff",
118
+ "token": "--viking-series-6",
119
+ "role": "Info / auxiliary series"
120
+ },
121
+ "7": {
122
+ "hex": "#162544",
123
+ "token": "--viking-series-7",
124
+ "role": "Baseline / muted series"
125
+ },
126
+ "8": {
127
+ "hex": "#666666",
128
+ "token": "--viking-series-8",
129
+ "role": "Disabled / archived series"
130
+ },
131
+ "default": "#2176ff"
132
+ },
133
+ "semantic": {
134
+ "dark": {
135
+ "bg": "navy.900",
136
+ "bgSubtle": "ink.950",
137
+ "surface": "navy.800",
138
+ "surfaceAlt": "navy.700",
139
+ "surfaceInset": "navy.950",
140
+ "surfaceRaised": "navy.600",
141
+ "surfaceOverlay": "ink.800",
142
+ "text": "white",
143
+ "textMuted": "metallic.200",
144
+ "textSubtle": "metallic.300",
145
+ "textDisabled": "metallic.400",
146
+ "textLink": "electric.300",
147
+ "accent": "electric.500",
148
+ "accentHover": "electric.400",
149
+ "accentActive": "electric.700",
150
+ "accentSoft": "color-mix(in srgb, #2176ff 18%, transparent)",
151
+ "accentSecondary": "crimson.600",
152
+ "success": "green.500",
153
+ "warning": "gold.500",
154
+ "danger": "crimson.500",
155
+ "info": "blue.500",
156
+ "ring": "electric.400"
157
+ },
158
+ "light": {
159
+ "bg": "slate.050",
160
+ "bgSubtle": "slate.100",
161
+ "surface": "whitePure",
162
+ "surfaceAlt": "slate.100",
163
+ "surfaceInset": "metallic.050",
164
+ "surfaceRaised": "whitePure",
165
+ "surfaceOverlay": "whitePure",
166
+ "text": "navy.900",
167
+ "textMuted": "metallic.500",
168
+ "textSubtle": "metallic.400",
169
+ "textDisabled": "metallic.300",
170
+ "textLink": "electric.700",
171
+ "accent": "electric.600",
172
+ "accentHover": "electric.500",
173
+ "accentActive": "electric.700",
174
+ "accentSoft": "color-mix(in srgb, #1565f0 14%, transparent)",
175
+ "accentSecondary": "crimson.700",
176
+ "success": "green.500",
177
+ "warning": "gold.500",
178
+ "danger": "crimson.500",
179
+ "info": "blue.500",
180
+ "ring": "electric.500"
181
+ }
182
+ },
183
+ "typography": {
184
+ "fontFamily": {
185
+ "sans": "'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
186
+ "mono": "ui-monospace, 'JetBrains Mono', 'SF Mono', 'Cascadia Code', Consolas, monospace"
187
+ },
188
+ "fontSize": {
189
+ "2xs": "11px",
190
+ "xs": "12px",
191
+ "sm": "14px",
192
+ "base": "16px",
193
+ "md": "18px",
194
+ "lg": "20px",
195
+ "xl": "24px",
196
+ "2xl": "30px",
197
+ "3xl": "36px",
198
+ "4xl": "48px",
199
+ "5xl": "60px",
200
+ "6xl": "72px"
201
+ },
202
+ "fontWeight": {
203
+ "regular": 400,
204
+ "medium": 500,
205
+ "semibold": 600,
206
+ "bold": 700,
207
+ "extrabold": 800
208
+ },
209
+ "lineHeight": {
210
+ "tight": 1.25,
211
+ "snug": 1.375,
212
+ "normal": 1.5,
213
+ "relaxed": 1.625,
214
+ "loose": 1.75
215
+ },
216
+ "letterSpacing": {
217
+ "tighter": "-0.03em",
218
+ "tight": "-0.02em",
219
+ "normal": "0",
220
+ "wide": "0.025em",
221
+ "wider": "0.05em",
222
+ "caps": "0.08em"
223
+ }
224
+ },
225
+ "spacing": {
226
+ "gridUnit": "4px",
227
+ "spaceUnit": "8px",
228
+ "0": "0",
229
+ "px": "1px",
230
+ "half": "4px",
231
+ "0.5": "4px",
232
+ "1": "8px",
233
+ "1.5": "12px",
234
+ "2": "16px",
235
+ "2.5": "20px",
236
+ "3": "24px",
237
+ "4": "32px",
238
+ "5": "40px",
239
+ "6": "48px",
240
+ "7": "56px",
241
+ "8": "64px",
242
+ "8.5": "72px",
243
+ "9": "80px",
244
+ "10": "96px",
245
+ "11": "112px",
246
+ "12": "128px",
247
+ "14": "160px",
248
+ "16": "192px",
249
+ "20": "256px",
250
+ "24": "320px"
251
+ },
252
+ "radius": {
253
+ "xs": "4px",
254
+ "sm": "6px",
255
+ "DEFAULT": "8px",
256
+ "md": "10px",
257
+ "lg": "12px",
258
+ "xl": "16px",
259
+ "2xl": "24px",
260
+ "pill": "999px",
261
+ "full": "999px"
262
+ },
263
+ "shadow": {
264
+ "xs": "0 1px 2px rgba(0, 0, 0, 0.2)",
265
+ "sm": "0 1px 2px rgba(0,0,0,0.18), 0 1px 3px rgba(0,0,0,0.12), inset 0 1px 0 rgba(255,255,255,0.04)",
266
+ "md": "0 2px 4px rgba(0,0,0,0.16), 0 4px 8px rgba(0,0,0,0.12), inset 0 1px 0 rgba(255,255,255,0.05)",
267
+ "lg": "0 4px 8px rgba(0,0,0,0.14), 0 12px 24px rgba(0,0,0,0.18), inset 0 1px 0 rgba(255,255,255,0.06)",
268
+ "inner": "inset 0 1px 2px rgba(0, 0, 0, 0.14)",
269
+ "hover": "0 8px 16px rgba(0,0,0,0.14), 0 4px 8px rgba(0,0,0,0.1), inset 0 1px 0 rgba(255,255,255,0.06)",
270
+ "focus": "0 0 0 var(--viking-ring-offset) var(--viking-bg), 0 0 0 calc(var(--viking-ring-offset) + var(--viking-ring-width)) var(--viking-ring)",
271
+ "surfaceHighlight": "inset 0 1px 0 rgba(255,255,255,0.06)"
272
+ },
273
+ "motion": {
274
+ "ease": {
275
+ "default": "cubic-bezier(0.4, 0, 0.2, 1)",
276
+ "in": "cubic-bezier(0.4, 0, 1, 1)",
277
+ "out": "cubic-bezier(0, 0, 0.2, 1)",
278
+ "emphasized": "cubic-bezier(0.2, 0, 0, 1)"
279
+ },
280
+ "duration": {
281
+ "instant": "75ms",
282
+ "fast": "150ms",
283
+ "DEFAULT": "250ms",
284
+ "slow": "350ms",
285
+ "slower": "500ms"
286
+ },
287
+ "state": {
288
+ "hoverLift": "-1px",
289
+ "activeScale": "0.985",
290
+ "disabledOpacity": "0.48"
291
+ }
292
+ },
293
+ "layout": {
294
+ "containerMaxWidth": "1260px",
295
+ "navbarHeight": "64px",
296
+ "sidebarWidth": "256px",
297
+ "controlHeight": "40px",
298
+ "controlHeightSm": "32px",
299
+ "controlHeightXs": "24px",
300
+ "btnMinWidth": "120px",
301
+ "touchTargetMin": "44px",
302
+ "pageGutter": "16px",
303
+ "pageGutterLg": "24px",
304
+ "pageStackGap": "24px",
305
+ "pageSectionGap": "32px",
306
+ "cardPadding": "24px",
307
+ "cardPaddingCompact": "16px",
308
+ "panelPadding": "24px",
309
+ "formMaxWidth": "42rem",
310
+ "formNarrowMaxWidth": "28rem",
311
+ "contentReadableMaxWidth": "48rem"
312
+ },
313
+ "zIndex": {
314
+ "overlay": 1000,
315
+ "toast": 1100,
316
+ "tooltip": 1200
317
+ }
318
+ }