@isavia-sut/dd-cdn-npm 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 (109) hide show
  1. package/CSS/base-style.css +2664 -0
  2. package/LICENSE +43 -0
  3. package/README.md +82 -0
  4. package/Resources/Flags/Denmark.svg +14 -0
  5. package/Resources/Flags/Germany.svg +12 -0
  6. package/Resources/Flags/Greece.svg +15 -0
  7. package/Resources/Flags/Iceland.svg +15 -0
  8. package/Resources/Flags/Ireland.svg +12 -0
  9. package/Resources/Flags/Italy.svg +12 -0
  10. package/Resources/Flags/Netherlands.svg +12 -0
  11. package/Resources/Flags/Poland.svg +11 -0
  12. package/Resources/Flags/Portugal.svg +14 -0
  13. package/Resources/Flags/Spain.svg +12 -0
  14. package/Resources/Flags/United Kingdom.svg +23 -0
  15. package/Resources/Flags/United States.svg +15 -0
  16. package/Resources/Fonts/KefFont.woff2 +0 -0
  17. package/Resources/Icons/icon-svg-arrivals-alt.svg +4 -0
  18. package/Resources/Icons/icon-svg-arrivals-bold.svg +4 -0
  19. package/Resources/Icons/icon-svg-arrivals-large.svg +4 -0
  20. package/Resources/Icons/icon-svg-arrivals.svg +4 -0
  21. package/Resources/Icons/icon-svg-at-the-airport.svg +4 -0
  22. package/Resources/Icons/icon-svg-atm.svg +4 -0
  23. package/Resources/Icons/icon-svg-autopay-app.svg +4 -0
  24. package/Resources/Icons/icon-svg-autopay.svg +4 -0
  25. package/Resources/Icons/icon-svg-brightness.svg +4 -0
  26. package/Resources/Icons/icon-svg-bus.svg +4 -0
  27. package/Resources/Icons/icon-svg-calendar.svg +4 -0
  28. package/Resources/Icons/icon-svg-camera.svg +4 -0
  29. package/Resources/Icons/icon-svg-car-rates.svg +4 -0
  30. package/Resources/Icons/icon-svg-car.svg +4 -0
  31. package/Resources/Icons/icon-svg-chat.svg +4 -0
  32. package/Resources/Icons/icon-svg-check-filled.svg +4 -0
  33. package/Resources/Icons/icon-svg-check-in.svg +4 -0
  34. package/Resources/Icons/icon-svg-check.svg +4 -0
  35. package/Resources/Icons/icon-svg-checklist.svg +4 -0
  36. package/Resources/Icons/icon-svg-children.svg +4 -0
  37. package/Resources/Icons/icon-svg-clock.svg +4 -0
  38. package/Resources/Icons/icon-svg-close.svg +4 -0
  39. package/Resources/Icons/icon-svg-cloud.svg +4 -0
  40. package/Resources/Icons/icon-svg-contact.svg +4 -0
  41. package/Resources/Icons/icon-svg-cookie.svg +4 -0
  42. package/Resources/Icons/icon-svg-copy.svg +4 -0
  43. package/Resources/Icons/icon-svg-cross.svg +4 -0
  44. package/Resources/Icons/icon-svg-departures-alt.svg +4 -0
  45. package/Resources/Icons/icon-svg-departures-large.svg +4 -0
  46. package/Resources/Icons/icon-svg-departures.svg +4 -0
  47. package/Resources/Icons/icon-svg-devices.svg +4 -0
  48. package/Resources/Icons/icon-svg-download-small.svg +4 -0
  49. package/Resources/Icons/icon-svg-download.svg +4 -0
  50. package/Resources/Icons/icon-svg-drop-off.svg +4 -0
  51. package/Resources/Icons/icon-svg-facebook.svg +4 -0
  52. package/Resources/Icons/icon-svg-flight-domestic.svg +4 -0
  53. package/Resources/Icons/icon-svg-flight-globe.svg +4 -0
  54. package/Resources/Icons/icon-svg-flight-tracker.svg +4 -0
  55. package/Resources/Icons/icon-svg-flight.svg +4 -0
  56. package/Resources/Icons/icon-svg-flights.svg +4 -0
  57. package/Resources/Icons/icon-svg-globe.svg +4 -0
  58. package/Resources/Icons/icon-svg-info-filled.svg +4 -0
  59. package/Resources/Icons/icon-svg-info.svg +4 -0
  60. package/Resources/Icons/icon-svg-instagram.svg +4 -0
  61. package/Resources/Icons/icon-svg-link.svg +4 -0
  62. package/Resources/Icons/icon-svg-lost-and-found.svg +4 -0
  63. package/Resources/Icons/icon-svg-lounge.svg +4 -0
  64. package/Resources/Icons/icon-svg-luggage-and-security.svg +4 -0
  65. package/Resources/Icons/icon-svg-mail-filled.svg +4 -0
  66. package/Resources/Icons/icon-svg-mail.svg +4 -0
  67. package/Resources/Icons/icon-svg-map-pin.svg +4 -0
  68. package/Resources/Icons/icon-svg-map.svg +4 -0
  69. package/Resources/Icons/icon-svg-meet-and-greet.svg +4 -0
  70. package/Resources/Icons/icon-svg-parking.svg +4 -0
  71. package/Resources/Icons/icon-svg-pen.svg +4 -0
  72. package/Resources/Icons/icon-svg-phone-car.svg +4 -0
  73. package/Resources/Icons/icon-svg-phone-message.svg +4 -0
  74. package/Resources/Icons/icon-svg-phone-pay.svg +4 -0
  75. package/Resources/Icons/icon-svg-phone.svg +4 -0
  76. package/Resources/Icons/icon-svg-plus.svg +4 -0
  77. package/Resources/Icons/icon-svg-rain.svg +4 -0
  78. package/Resources/Icons/icon-svg-reset.svg +4 -0
  79. package/Resources/Icons/icon-svg-runway.svg +4 -0
  80. package/Resources/Icons/icon-svg-search.svg +4 -0
  81. package/Resources/Icons/icon-svg-secure.svg +4 -0
  82. package/Resources/Icons/icon-svg-security.svg +4 -0
  83. package/Resources/Icons/icon-svg-services.svg +4 -0
  84. package/Resources/Icons/icon-svg-shop-and-eat.svg +4 -0
  85. package/Resources/Icons/icon-svg-sms.svg +4 -0
  86. package/Resources/Icons/icon-svg-snow.svg +4 -0
  87. package/Resources/Icons/icon-svg-special-assistance.svg +4 -0
  88. package/Resources/Icons/icon-svg-sun.svg +4 -0
  89. package/Resources/Icons/icon-svg-taxi-queue.svg +4 -0
  90. package/Resources/Icons/icon-svg-tiktok.svg +4 -0
  91. package/Resources/Icons/icon-svg-time-filled.svg +4 -0
  92. package/Resources/Icons/icon-svg-time.svg +4 -0
  93. package/Resources/Icons/icon-svg-transfer.svg +4 -0
  94. package/Resources/Icons/icon-svg-trash.svg +4 -0
  95. package/Resources/Icons/icon-svg-vimeo.svg +4 -0
  96. package/Resources/Icons/icon-svg-walk-filled.svg +4 -0
  97. package/Resources/Icons/icon-svg-walk.svg +4 -0
  98. package/Resources/Icons/icon-svg-warning-filled.svg +4 -0
  99. package/Resources/Icons/icon-svg-warning.svg +4 -0
  100. package/Resources/Icons/icon-svg-wifi.svg +4 -0
  101. package/Resources/Icons/icon-svg-x.svg +4 -0
  102. package/Resources/Icons/icon-svg-youtube.svg +4 -0
  103. package/Resources/Icons/kef-icons-sprite.svg +260 -0
  104. package/Resources/KEF_logos/KEFENsvart.svg +29 -0
  105. package/Resources/KEF_logos/KEFISsvart.svg +36 -0
  106. package/Resources/KEF_logos/KEFsvart.svg +13 -0
  107. package/Resources/KEF_logos/README.md +55 -0
  108. package/Tokens/tokens.json +156 -0
  109. package/package.json +39 -0
@@ -0,0 +1,55 @@
1
+ # KEF Logos
2
+
3
+ Lightweight, themeable logo SVGs for the website and buttons.
4
+
5
+ ## Files
6
+
7
+ | File | Use |
8
+ | --- | --- |
9
+ | `kef-logo-mark.svg` | KEF symbol only (no text) — favicons, buttons, tight spaces |
10
+ | `kef-logo-en.svg` | Full logo with the English wordmark |
11
+ | `kef-logo-is.svg` | Full logo with the Icelandic wordmark |
12
+ | `kef-logos.svg` | Combined sprite of all three for `<use>` references |
13
+ | `generate-logos.mjs` | Source/generator — the single source of truth |
14
+
15
+ The original master logos (`KEFsvart.svg`, `KEFISsvart.svg`, `KEFENsvart.svg`) are
16
+ the print/download masters and are left unchanged.
17
+
18
+ ## Use
19
+
20
+ **Inline (recommended — fully themeable):**
21
+
22
+ ```html
23
+ <!-- inherits the current text colour -->
24
+ <span style="color: var(--fg-brand)">
25
+ <!-- paste the contents of kef-logo-mark.svg here, or: -->
26
+ <svg width="80"><use href="kef-logos.svg#kef-logo-mark"></use></svg>
27
+ </span>
28
+ ```
29
+
30
+ **As an image (fixed colour):**
31
+
32
+ ```html
33
+ <img src="Resources/KEF_logos/kef-logo-en.svg" alt="KEF" height="24">
34
+ ```
35
+
36
+ > Note: CSS custom properties only apply to **inlined** SVGs, not `<img>`.
37
+
38
+ ## Theming
39
+
40
+ Each logo inherits `currentColor` by default. To override, set:
41
+
42
+ ```css
43
+ .my-logo {
44
+ --logo-color-primary: var(--color-leifur-black); /* the KEF mark */
45
+ --logo-color-secondary: var(--fg-secondary); /* the wordmark text */
46
+ }
47
+ ```
48
+
49
+ ## Modify / regenerate
50
+
51
+ Edit the path data in `generate-logos.mjs`, then run:
52
+
53
+ ```bash
54
+ node Resources/KEF_logos/generate-logos.mjs
55
+ ```
@@ -0,0 +1,156 @@
1
+ {
2
+ "_meta": {
3
+ "name": "KEF Airport Design Tokens",
4
+ "version": "1.0.0",
5
+ "description": "Platform-agnostic design tokens for the KEF Airport brand system. Use cssVar for web, value fields for iOS/Android/Flutter. Duration values in seconds — multiply by 1000 for ms (e.g. 0.15s = 150ms)."
6
+ },
7
+
8
+ "color": {
9
+ "brand": {
10
+ "leifur-black": { "value": "#101010", "description": "Primary black — text, backgrounds, primary buttons" },
11
+ "hrimfaxi-white": { "value": "#ffffff", "description": "Primary white — backgrounds, inverse text" },
12
+ "geysir-blue": { "value": "#004df4", "description": "Brand blue — links, focus rings, Go-to-gate status, hero CTA" },
13
+ "gullfaxi-gold": { "value": "#bb8b3f", "description": "Brand gold — emphasis accents" },
14
+ "gljafaxi-green": { "value": "#0d9935", "description": "Success / positive — On-time status" },
15
+ "hekla-red": { "value": "#db2a12", "description": "Error / danger — Cancelled status" },
16
+ "amber": { "value": "#db8112", "description": "Warning / caution — amber yellow" }
17
+ },
18
+ "semantic": {
19
+ "text-primary": { "value": "#101010", "cssVar": "--color-text-primary" },
20
+ "text-inverse": { "value": "#ffffff", "cssVar": "--color-text-inverse" },
21
+ "text-muted": { "value": "#5f5f5f", "cssVar": "--color-text-muted" },
22
+ "text-disabled": { "value": "#919191", "cssVar": "--color-text-disabled" },
23
+ "border-default": { "value": "#e7e7e7", "cssVar": "--color-border-default" },
24
+ "border-focus": { "value": "#004df4", "cssVar": "--color-border-focus" },
25
+ "border-error": { "value": "#db2a12", "cssVar": "--color-border-error" },
26
+ "bg-primary": { "value": "#ffffff", "cssVar": "--color-bg-primary" },
27
+ "bg-secondary": { "value": "#f5f5f5", "cssVar": "--color-bg-secondary" },
28
+ "bg-inverse": { "value": "#101010", "cssVar": "--color-bg-inverse" },
29
+ "interactive-primary": { "value": "#004df4", "cssVar": "--color-interactive-primary" },
30
+ "interactive-primary-hover": { "value": "#0037ad", "cssVar": "--color-interactive-primary-hover" },
31
+ "interactive-accent": { "value": "#bb8b3f", "cssVar": "--color-interactive-accent" },
32
+ "interactive-accent-hover": { "value": "#85632d", "cssVar": "--color-interactive-accent-hover" },
33
+ "feedback-success": { "value": "#0d9935", "cssVar": "--color-feedback-success" },
34
+ "feedback-warning": { "value": "#db8112", "cssVar": "--color-feedback-warning" },
35
+ "feedback-error": { "value": "#db2a12", "cssVar": "--color-feedback-error" },
36
+ "feedback-info": { "value": "#004df4", "cssVar": "--color-feedback-info" }
37
+ },
38
+ "flight-status": {
39
+ "on-time": { "value": "#0d9935", "label": "On time", "description": "Flight is on schedule" },
40
+ "gate-closing": { "value": "#db8112", "label": "Gate closing","description": "Urgent — passengers must proceed immediately" },
41
+ "cancelled": { "value": "#db2a12", "label": "Cancelled", "description": "Flight will not operate" },
42
+ "go-to-gate": { "value": "#004df4", "label": "Go to gate", "description": "Boarding is open, proceed to gate" },
43
+ "delayed": { "value": "#101010", "label": "Delayed", "description": "Flight is delayed from schedule" },
44
+ "departed": { "value": "#919191", "label": "Departed", "description": "Flight has left" }
45
+ }
46
+ },
47
+
48
+ "spacing": {
49
+ "025": { "value": "2px", "valuePx": 2, "cssVar": "--space-025" },
50
+ "050": { "value": "4px", "valuePx": 4, "cssVar": "--space-050" },
51
+ "100": { "value": "8px", "valuePx": 8, "cssVar": "--space-100" },
52
+ "150": { "value": "12px", "valuePx": 12, "cssVar": "--space-150" },
53
+ "200": { "value": "16px", "valuePx": 16, "cssVar": "--space-200" },
54
+ "250": { "value": "20px", "valuePx": 20, "cssVar": "--space-250" },
55
+ "300": { "value": "24px", "valuePx": 24, "cssVar": "--space-300" },
56
+ "400": { "value": "32px", "valuePx": 32, "cssVar": "--space-400" },
57
+ "500": { "value": "40px", "valuePx": 40, "cssVar": "--space-500" },
58
+ "600": { "value": "48px", "valuePx": 48, "cssVar": "--space-600" },
59
+ "700": { "value": "56px", "valuePx": 56, "cssVar": "--space-700" },
60
+ "800": { "value": "64px", "valuePx": 64, "cssVar": "--space-800" },
61
+ "900": { "value": "72px", "valuePx": 72, "cssVar": "--space-900" },
62
+ "1000": { "value": "80px", "valuePx": 80, "cssVar": "--space-1000" }
63
+ },
64
+
65
+ "size": {
66
+ "100": { "value": "8px", "valuePx": 8, "cssVar": "--size-100" },
67
+ "150": { "value": "12px", "valuePx": 12, "cssVar": "--size-150" },
68
+ "200": { "value": "16px", "valuePx": 16, "cssVar": "--size-200" },
69
+ "250": { "value": "20px", "valuePx": 20, "cssVar": "--size-250" },
70
+ "300": { "value": "24px", "valuePx": 24, "cssVar": "--size-300" },
71
+ "400": { "value": "32px", "valuePx": 32, "cssVar": "--size-400" },
72
+ "500": { "value": "40px", "valuePx": 40, "cssVar": "--size-500" },
73
+ "600": { "value": "48px", "valuePx": 48, "cssVar": "--size-600" },
74
+ "700": { "value": "56px", "valuePx": 56, "cssVar": "--size-700" },
75
+ "800": { "value": "64px", "valuePx": 64, "cssVar": "--size-800" }
76
+ },
77
+
78
+ "radius": {
79
+ "025": { "value": "2px", "valuePx": 2, "cssVar": "--radius-025", "description": "Hairline rounding — table rows, tight UI" },
80
+ "050": { "value": "4px", "valuePx": 4, "cssVar": "--radius-050", "description": "Subtle rounding — tags, badges" },
81
+ "100": { "value": "8px", "valuePx": 8, "cssVar": "--radius-100", "description": "Default rounding — cards, inputs" },
82
+ "200": { "value": "16px", "valuePx": 16, "cssVar": "--radius-200", "description": "Large rounding — panels, modals" },
83
+ "full": { "value": "360px", "valuePx": 360, "cssVar": "--radius-full","description": "Pill shape — buttons, chips" }
84
+ },
85
+
86
+ "shadow": {
87
+ "sm": { "value": "0 1px 4px rgba(0,0,0,0.08)", "cssVar": "--shadow-sm", "description": "Subtle lift — cards on white" },
88
+ "md": { "value": "0 4px 16px rgba(0,0,0,0.10)", "cssVar": "--shadow-md", "description": "Card hover, dropdowns" },
89
+ "lg": { "value": "0 8px 32px rgba(0,0,0,0.12)", "cssVar": "--shadow-lg", "description": "Modals, popovers" },
90
+ "xl": { "value": "0 16px 56px rgba(0,0,0,0.14)", "cssVar": "--shadow-xl", "description": "High elevation — full-screen overlays" }
91
+ },
92
+
93
+ "motion": {
94
+ "duration": {
95
+ "fast": { "value": "0.15s", "valueMs": 150, "cssVar": "--duration-fast", "description": "Micro-interactions: hover, focus, icon transitions" },
96
+ "normal": { "value": "0.2s", "valueMs": 200, "cssVar": "--duration-normal", "description": "Default: most UI transitions" },
97
+ "slow": { "value": "0.3s", "valueMs": 300, "cssVar": "--duration-slow", "description": "Larger elements: modals, panels, drawers" }
98
+ },
99
+ "easing": {
100
+ "default": { "value": "ease", "cssVar": "--ease", "description": "Standard easing for all transitions" }
101
+ },
102
+ "note": "When prefers-reduced-motion: reduce is set, all animated durations collapse to 0.01s and transforms are suppressed."
103
+ },
104
+
105
+ "typography": {
106
+ "fontFamily": {
107
+ "primary": {
108
+ "value": "KEF Oasis, Arial, sans-serif",
109
+ "cssVar": "--font-family-main",
110
+ "description": "KEF Oasis is a variable font (weight 300–700). Fallback stack for non-web: SF Pro (iOS), Roboto (Android)."
111
+ }
112
+ },
113
+ "scale": {
114
+ "desktop": {
115
+ "h1": { "fontSize": "96px", "lineHeight": "100px", "fontWeight": 700, "cssClass": "text-h1" },
116
+ "h2": { "fontSize": "76px", "lineHeight": "78px", "fontWeight": 700, "cssClass": "text-h2" },
117
+ "h3": { "fontSize": "58px", "lineHeight": "61px", "fontWeight": 700, "cssClass": "text-h3" },
118
+ "h4": { "fontSize": "44px", "lineHeight": "50px", "fontWeight": 700, "cssClass": "text-h4" },
119
+ "h5": { "fontSize": "32px", "lineHeight": "34px", "fontWeight": 700, "cssClass": "text-h5" },
120
+ "h6": { "fontSize": "20px", "lineHeight": "24px", "fontWeight": 700, "cssClass": "text-h6" },
121
+ "intro": { "fontSize": "32px", "lineHeight": "40px", "fontWeight": 300, "cssClass": "text-intro" },
122
+ "callout": { "fontSize": "24px", "lineHeight": "32px", "fontWeight": 300, "cssClass": "text-callout" },
123
+ "body-large": { "fontSize": "18px", "lineHeight": "24px", "fontWeight": 400, "cssClass": "text-body-large" },
124
+ "body-normal": { "fontSize": "16px", "lineHeight": "22px", "fontWeight": 400, "cssClass": "text-body" },
125
+ "body-small": { "fontSize": "14px", "lineHeight": "18px", "fontWeight": 400, "cssClass": "text-body-small" },
126
+ "body-tiny": { "fontSize": "11px", "lineHeight": "15px", "fontWeight": 400, "cssClass": "text-tiny" }
127
+ },
128
+ "mobile": {
129
+ "h1": { "fontSize": "52px", "lineHeight": "auto", "fontWeight": 700 },
130
+ "h2": { "fontSize": "44px", "lineHeight": "46px", "fontWeight": 700 },
131
+ "h3": { "fontSize": "38px", "lineHeight": "40px", "fontWeight": 700 },
132
+ "h4": { "fontSize": "32px", "lineHeight": "34px", "fontWeight": 700 },
133
+ "h5": { "fontSize": "26px", "lineHeight": "28px", "fontWeight": 700 },
134
+ "h6": { "fontSize": "18px", "lineHeight": "22px", "fontWeight": 700 },
135
+ "intro": { "fontSize": "28px", "lineHeight": "32px", "fontWeight": 300 },
136
+ "callout": { "fontSize": "20px", "lineHeight": "28px", "fontWeight": 300 },
137
+ "body-large": { "fontSize": "16px", "lineHeight": "22px", "fontWeight": 400 },
138
+ "body-normal": { "fontSize": "14px", "lineHeight": "22px", "fontWeight": 400 }
139
+ }
140
+ }
141
+ },
142
+
143
+ "grid": {
144
+ "desktop": {
145
+ "columns": 12,
146
+ "gutter": "32px",
147
+ "margin": "32px",
148
+ "maxWidth": "1512px"
149
+ },
150
+ "mobile": {
151
+ "columns": 4,
152
+ "gutter": "20px",
153
+ "margin": "20px"
154
+ }
155
+ }
156
+ }
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@isavia-sut/dd-cdn-npm",
3
+ "version": "1.0.0",
4
+ "description": "KEF brand style system — design tokens, typography, components, and brand assets, published to npm and served via CDN (jsDelivr).",
5
+ "author": "thorsteinn-asgrimsson",
6
+ "license": "SEE LICENSE IN LICENSE",
7
+ "homepage": "https://github.com/isavia-sut/dd-cdn-npm#readme",
8
+ "bugs": {
9
+ "url": "https://github.com/isavia-sut/dd-cdn-npm/issues"
10
+ },
11
+ "keywords": [
12
+ "isavia",
13
+ "kef",
14
+ "keflavik",
15
+ "brand",
16
+ "design-system",
17
+ "design-tokens",
18
+ "css",
19
+ "cdn",
20
+ "theme"
21
+ ],
22
+ "main": "CSS/base-style.css",
23
+ "style": "CSS/base-style.css",
24
+ "files": [
25
+ "CSS",
26
+ "Resources",
27
+ "!Resources/Other_logos/Airlines",
28
+ "!Resources/Other_logos/Shops_&_restaurants",
29
+ "Tokens"
30
+ ],
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "git+https://github.com/isavia-sut/dd-cdn-npm.git"
34
+ },
35
+ "private": false,
36
+ "publishConfig": {
37
+ "access": "public"
38
+ }
39
+ }