@internetstiftelsen/styleguide 5.0.16 → 5.0.18-beta.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 (97) hide show
  1. package/dist/app.js +71 -0
  2. package/dist/assets/js/Events.js +43 -77
  3. package/dist/assets/js/RequestError.js +16 -31
  4. package/dist/assets/js/anchorScroll.js +22 -15
  5. package/dist/assets/js/charCounter.js +100 -142
  6. package/dist/assets/js/className.js +19 -20
  7. package/dist/assets/js/conditional.js +96 -152
  8. package/dist/assets/js/debounce.js +15 -22
  9. package/dist/assets/js/el.js +108 -159
  10. package/dist/assets/js/getCookieByName.js +13 -11
  11. package/dist/assets/js/hasCookieConsent.js +30 -40
  12. package/dist/assets/js/htmlTextLength.js +12 -10
  13. package/dist/assets/js/iconToggle.js +16 -20
  14. package/dist/assets/js/nodeAdded.js +40 -53
  15. package/dist/assets/js/objToQuery.js +25 -41
  16. package/dist/assets/js/offset.js +29 -25
  17. package/dist/assets/js/ot.js +10 -13
  18. package/dist/assets/js/parallax.js +23 -23
  19. package/dist/assets/js/queryToObj.js +16 -22
  20. package/dist/assets/js/readSpeakerHandling.js +26 -28
  21. package/dist/assets/js/request.js +43 -52
  22. package/dist/assets/js/responsivePosition.js +46 -74
  23. package/dist/assets/js/stringToNode.js +11 -10
  24. package/dist/assets/js/template.js +15 -21
  25. package/dist/assets/js/textToggle.js +19 -24
  26. package/dist/assets/js/track.js +14 -12
  27. package/dist/assets/js/uid.js +10 -6
  28. package/dist/assets/js/utmGenerator.js +27 -33
  29. package/dist/assets/js/validationMessage.js +18 -25
  30. package/dist/assets/js/youtube.js +134 -170
  31. package/dist/atoms/button/Button.js +42 -55
  32. package/dist/atoms/file/file.js +25 -29
  33. package/dist/atoms/file/filePreview.js +27 -31
  34. package/dist/atoms/grid-toggle/grid-toggle.js +6 -9
  35. package/dist/atoms/height-limiter/height-limiter.js +37 -50
  36. package/dist/atoms/password-toggle/password-toggle.js +9 -11
  37. package/dist/atoms/range/range.js +32 -39
  38. package/dist/atoms/textarea/rich-text.js +223 -205
  39. package/dist/atoms/tooltip/tooltip.js +13 -17
  40. package/dist/components.js +42 -77
  41. package/dist/focusTrap.js +66 -77
  42. package/dist/molecules/alert/alert.js +15 -20
  43. package/dist/molecules/context-menu/context-menu.js +11 -16
  44. package/dist/molecules/continue-video-guide/continue-video-guide.js +90 -101
  45. package/dist/molecules/cookie-disclaimer/cookie-disclaimer.js +24 -33
  46. package/dist/molecules/form/Form.js +242 -352
  47. package/dist/molecules/form/index.js +15 -14
  48. package/dist/molecules/glider/glider-course.js +62 -75
  49. package/dist/molecules/glider/glider-hero.js +88 -101
  50. package/dist/molecules/glider/glider.js +49 -45
  51. package/dist/molecules/modal/modal.js +256 -325
  52. package/dist/molecules/multi-select/multi-select.js +198 -304
  53. package/dist/molecules/natural-language-form/natural-language-form.js +32 -46
  54. package/dist/molecules/overview-navigation/overview-navigation.js +90 -141
  55. package/dist/molecules/share/share.js +15 -20
  56. package/dist/molecules/system-error/system-error.js +6 -9
  57. package/dist/organisms/accordion/accordion.js +44 -50
  58. package/dist/organisms/footer/footer.js +1 -1
  59. package/dist/organisms/haveibeenpwned/haveibeenpwned.js +17 -16
  60. package/dist/organisms/mailchimp/mailchimp.js +72 -89
  61. package/dist/organisms/map-box/map-box.js +3 -4
  62. package/dist/organisms/mega-menu/mega-menu.js +177 -212
  63. package/dist/organisms/podcast/podcast.js +192 -215
  64. package/dist/organisms/schedule/schedule-filter.js +9 -15
  65. package/dist/organisms/tabs/tabs.js +194 -253
  66. package/dist/organisms/timeline/openTimelineItem.js +38 -51
  67. package/dist/organisms/timeline/timeline.js +111 -128
  68. package/dist/organisms/video-guide/VideoGuidePlayback.js +210 -286
  69. package/dist/organisms/video-guide/VideoGuideSubtitles.js +57 -80
  70. package/dist/organisms/video-guide/VideoGuideTimeline.js +74 -108
  71. package/dist/organisms/video-guide/getCurrentCueIndex.js +11 -9
  72. package/dist/organisms/video-guide/video-guide.js +66 -103
  73. package/dist/utilities/tab-highlighting/tab-highlighting.js +14 -22
  74. package/dist/vendor/toggle/a11y.toggle-switcher.js +10 -16
  75. package/package.json +78 -97
  76. package/src/app.js +5 -5
  77. package/src/assets/js/anchorScroll.js +1 -1
  78. package/src/assets/js/offset.js +1 -1
  79. package/src/atoms/button/Button.js +1 -1
  80. package/src/atoms/icon/_all-icons.zip +0 -0
  81. package/src/atoms/icon/heading-3.svg +8 -0
  82. package/src/atoms/icon/richtext-heading-2.svg +8 -0
  83. package/src/atoms/icon/richtext-ordered-list.svg +8 -0
  84. package/src/atoms/icon/sprite.svg +25 -2
  85. package/src/atoms/textarea/rich-text.js +53 -9
  86. package/src/configurations/icons.json +1 -1
  87. package/src/configurations/typography/_typography.scss +0 -9
  88. package/src/molecules/glider/glider-course.js +0 -2
  89. package/src/molecules/glider/glider.js +2 -2
  90. package/src/organisms/accordion/accordion.js +1 -2
  91. package/src/organisms/timeline/timeline.js +2 -3
  92. package/dist/atoms/timeline/anchorScroll.js +0 -13
  93. package/dist/atoms/toggle-high-contrast/toggle-high-contrast.js +0 -12
  94. package/dist/molecules/glider/glider-single.js +0 -68
  95. package/dist/molecules/modal/modal-graph.js +0 -40
  96. package/dist/molecules/timeline-navigation/timeline-navigation.js +0 -34
  97. /package/src/molecules/alert/{_alert.scss → alert.scss} +0 -0
package/package.json CHANGED
@@ -1,99 +1,80 @@
1
1
  {
2
- "name": "@internetstiftelsen/styleguide",
3
- "version": "5.0.16",
4
- "main": "dist/components.js",
5
- "ports": {
6
- "fractal": "3000"
7
- },
8
- "scripts": {
9
- "start": "npm run dev --trace-deprecation",
10
- "start:fractal": "fractal start -s",
11
- "build:fractal": "fractal build",
12
- "scss": "sass src/app.scss public/assets/css/app.css",
13
- "stylelint": "stylelint 'src/**/*.scss' '!**/vendor/**' '!**/colors/_colors-functions.scss' --fix --cache --cache-location '.stylelintcache'",
14
- "cssmin": "postcss --use cssnano -b '' public/assets/css/app.css > public/assets/css/app.min.css",
15
- "browserify": "browserify public/assets/js/cjs/app.js -o public/assets/js/scripts.js",
16
- "babel": "npx babel src --out-dir public/assets/js/cjs --ignore src/**/*.config.js",
17
- "eslint": "eslint --fix src",
18
- "uglify": "uglifyjs -o public/assets/js/scripts.js public/assets/js/scripts.js",
19
- "imagemin": "imagemin --out-dir=public/assets/img src/**/*.{png,jpg,gif}",
20
- "build:css": "npm run stylelint && npm run scss && npm run cssmin",
21
- "build:js": "npm run eslint && npm run babel && npm run browserify",
22
- "build:js:replace:string": "replace \"require('./components');\" \"//require('./components');\" src/ -r --include=\"app.js\"",
23
- "build:img": "npm run imagemin",
24
- "watch:css": "onchange 'src/**/*.scss' -- npm run build:css",
25
- "watch:js": "onchange 'src/**/*.js' -- npm run build:js",
26
- "watch:icons": "onchange 'src/atoms/icon/*.svg' -- npm run create-icons-config",
27
- "watch": "concurrently \"npm:watch:css\" \"npm:watch:js\" \"npm:watch:icons\"",
28
- "copy:images": "copyfiles -f src/assets/images/* public/assets/images",
29
- "copy:videos": "copyfiles -f src/assets/video/* public/assets/video",
30
- "copy:fonts": "copyfiles -f src/base/fonts/* public/assets/fonts",
31
- "copy:zip": "copyfiles -f src/assets/zip/* public/assets/zip",
32
- "copy:local-assets": "npm run copy:images && npm run copy:fonts && npm run copy:videos && npm run copy:zip",
33
- "copy:images:build": "copyfiles -f src/assets/images/* build/assets/images",
34
- "copy:videos:build": "copyfiles -f src/assets/video/* build/assets/video",
35
- "copy:zip:build": "copyfiles -f src/assets/zip/* build/assets/zip",
36
- "copy:fonts:build": "copyfiles -f src/base/fonts/* build/assets/fonts",
37
- "copy:build": "npm run copy:images:build && npm run copy:zip:build && npm run copy:fonts:build && npm run copy:videos:build",
38
- "build": "npm run build:css && npm run build:js:replace:string && npm run build:js && npm run uglify && npm run package-js && npm run build:fractal && npm run copy:build && npm run create-icons-config",
39
- "dev": "concurrently \"npm:start:fractal\" \"npm:watch\" \"npm:copy:local-assets\"",
40
- "package-js": "NODE_ENV=production babel src --out-dir dist --ignore src/**/*.config.js,src/app.js",
41
- "create-icons-config": "node ./createIconsJson"
42
- },
43
- "devDependencies": {
44
- "@babel/core": "^7.26.0",
45
- "@babel/eslint-parser": "^7.25.9",
46
- "@eslint/eslintrc": "^3.1.0",
47
- "@eslint/js": "^9.14.0",
48
- "@frctl/fractal": "^1.5.15",
49
- "@frctl/mandelbrot": "^1.10.3",
50
- "@internetstiftelsen/eslint-config": "^4.0.3",
51
- "@internetstiftelsen/stylelint-config": "^3.0.0",
52
- "babel-cli": "^6.26.0",
53
- "babel-eslint": "^10.1.0",
54
- "babel-plugin-syntax-dynamic-import": "^6.18.0",
55
- "babel-plugin-transform-class-properties": "^6.24.1",
56
- "babel-plugin-transform-custom-element-classes": "^0.1.0",
57
- "babel-plugin-transform-es2015-classes": "^6.24.1",
58
- "babel-plugin-transform-object-rest-spread": "^6.26.0",
59
- "babel-preset-env": "^1.7.0",
60
- "browserify": "^17.0.1",
61
- "concat": "^1.0.3",
62
- "concurrently": "^9.0.1",
63
- "copyfiles": "^2.4.1",
64
- "css-loader": "^7.1.2",
65
- "cssnano": "^7.0.6",
66
- "eslint": "^9.14.0",
67
- "globals": "^15.12.0",
68
- "imagemin-cli": "^8.0.0",
69
- "onchange": "^7.1.0",
70
- "postcss-class-prefix": "^0.3.0",
71
- "postcss-cli": "^11.0.0",
72
- "replace": "^1.2.2",
73
- "sass": "^1.80.3",
74
- "stylelint": "^16.10.0",
75
- "uglify-es": "^3.3.9"
76
- },
77
- "dependencies": {
78
- "@tiptap/core": "^2.9.0",
79
- "@tiptap/extension-bold": "^2.9.0",
80
- "@tiptap/extension-bullet-list": "^2.9.0",
81
- "@tiptap/extension-document": "^2.9.0",
82
- "@tiptap/extension-dropcursor": "^2.9.0",
83
- "@tiptap/extension-history": "^2.9.0",
84
- "@tiptap/extension-italic": "^2.9.0",
85
- "@tiptap/extension-link": "^2.9.0",
86
- "@tiptap/extension-list-item": "^2.9.0",
87
- "@tiptap/extension-paragraph": "^2.9.0",
88
- "@tiptap/extension-text": "^2.9.0",
89
- "a11y-toggle": "^2.1.0",
90
- "focus-trap": "^6.7.3",
91
- "glider-js": "^1.7.7",
92
- "lodash": "^4.17.21",
93
- "smooth-scroll": "^16.1.3",
94
- "van11y-accessible-accordion-aria": "^3.0.1"
95
- },
96
- "fractal": {
97
- "main": "fractal.config.js"
98
- }
2
+ "name": "@internetstiftelsen/styleguide",
3
+ "version": "5.0.18-beta.0.1",
4
+ "main": "dist/components.js",
5
+ "ports": {
6
+ "fractal": "3000"
7
+ },
8
+ "scripts": {
9
+ "start": "npm run dev --trace-deprecation",
10
+ "start:fractal": "fractal start -s",
11
+ "build:fractal": "fractal build",
12
+ "stylelint": "stylelint 'src/**/*.scss' '!**/vendor/**' '!**/colors/_colors-functions.scss' --fix --cache --cache-location '.stylelintcache'",
13
+ "eslint": "eslint --fix src",
14
+ "imagemin": "imagemin --out-dir=public/assets/img src/**/*.{png,jpg,gif}",
15
+ "build:img": "npm run imagemin",
16
+ "watch:icons": "onchange 'src/atoms/icon/*.svg' -- npm run create-icons-config",
17
+ "watch": "concurrently \"npm:vite:dev\" \"npm:watch:icons\"",
18
+ "copy:images": "copyfiles -f src/assets/images/* public/assets/images",
19
+ "copy:videos": "copyfiles -f src/assets/video/* public/assets/video",
20
+ "copy:fonts": "copyfiles -f src/base/fonts/* public/assets/fonts",
21
+ "copy:zip": "copyfiles -f src/assets/zip/* public/assets/zip",
22
+ "copy:local-assets": "npm run copy:images && npm run copy:fonts && npm run copy:videos && npm run copy:zip",
23
+ "copy:images:build": "copyfiles -f src/assets/images/* build/assets/images",
24
+ "copy:videos:build": "copyfiles -f src/assets/video/* build/assets/video",
25
+ "copy:zip:build": "copyfiles -f src/assets/zip/* build/assets/zip",
26
+ "copy:fonts:build": "copyfiles -f src/base/fonts/* build/assets/fonts",
27
+ "copy:build": "npm run copy:images:build && npm run copy:zip:build && npm run copy:fonts:build && npm run copy:videos:build",
28
+ "build": "npm run vite:build && npm run package-js && npm run build:fractal && npm run copy:build && npm run create-icons-config",
29
+ "dev": "concurrently \"npm:start:fractal\" \"npm:watch\" \"npm:copy:local-assets\"",
30
+ "package-js": "NODE_ENV=production swc src --out-dir dist --ignore \"**/*.config.js\",\"app.js\" --strip-leading-paths",
31
+ "create-icons-config": "node ./createIconsJson",
32
+ "vite:dev": "vite dev",
33
+ "vite:build": "vite build"
34
+ },
35
+ "devDependencies": {
36
+ "@eslint/eslintrc": "^3.1.0",
37
+ "@eslint/js": "^9.14.0",
38
+ "@frctl/fractal": "^1.5.15",
39
+ "@frctl/mandelbrot": "^1.10.3",
40
+ "@internetstiftelsen/eslint-config": "^4.0.3",
41
+ "@internetstiftelsen/stylelint-config": "^3.0.0",
42
+ "@swc/cli": "^0.7.5",
43
+ "@swc/core": "^1.11.24",
44
+ "concurrently": "^9.0.1",
45
+ "copyfiles": "^2.4.1",
46
+ "eslint": "^9.14.0",
47
+ "globals": "^15.12.0",
48
+ "imagemin-cli": "^8.0.0",
49
+ "lightningcss": "^1.29.3",
50
+ "onchange": "^7.1.0",
51
+ "prettier": "3.5.3",
52
+ "sass": "^1.80.3",
53
+ "stylelint": "^16.10.0",
54
+ "vite": "^6.3.5"
55
+ },
56
+ "dependencies": {
57
+ "@tiptap/core": "^2.9.0",
58
+ "@tiptap/extension-bold": "^2.9.0",
59
+ "@tiptap/extension-bullet-list": "^2.9.0",
60
+ "@tiptap/extension-ordered-list": "^2.9.0",
61
+ "@tiptap/extension-heading": "^2.9.0",
62
+ "@tiptap/extension-document": "^2.9.0",
63
+ "@tiptap/extension-dropcursor": "^2.9.0",
64
+ "@tiptap/extension-history": "^2.9.0",
65
+ "@tiptap/extension-italic": "^2.9.0",
66
+ "@tiptap/extension-link": "^2.9.0",
67
+ "@tiptap/extension-list-item": "^2.9.0",
68
+ "@tiptap/extension-paragraph": "^2.9.0",
69
+ "@tiptap/extension-text": "^2.9.0",
70
+ "a11y-toggle": "^2.1.0",
71
+ "focus-trap": "^6.7.3",
72
+ "glider-js": "^1.7.7",
73
+ "lodash": "^4.17.21",
74
+ "smooth-scroll": "^16.1.3",
75
+ "van11y-accessible-accordion-aria": "^3.0.1"
76
+ },
77
+ "fractal": {
78
+ "main": "fractal.config.js"
79
+ }
99
80
  }
package/src/app.js CHANGED
@@ -1,12 +1,12 @@
1
+ import './app.scss';
1
2
  import 'a11y-toggle';
2
3
  import './focusTrap';
3
4
  import './assets/js/conditional';
4
5
 
5
- require('./atoms/grid-toggle/grid-toggle');
6
- require('./components');
7
-
8
- const Button = require('./atoms/button/Button');
9
- const { open } = require('./molecules/modal/modal');
6
+ import './atoms/grid-toggle/grid-toggle';
7
+ import './components';
8
+ import Button from './atoms/button/Button';
9
+ import { open} from './molecules/modal/modal';
10
10
 
11
11
  const demoButtons = document.querySelectorAll('button.a-button.has-loader');
12
12
 
@@ -7,4 +7,4 @@ const anchorScroll = new SmoothScroll('a[href*="#"]', {
7
7
  ignore: '[data-scroll-ignore]',
8
8
  });
9
9
 
10
- module.exports = anchorScroll;
10
+ export default anchorScroll;
@@ -1,4 +1,4 @@
1
- module.exports = {
1
+ export default {
2
2
  // Get top of element relative to window
3
3
  offsetTop(el) {
4
4
  const rect = el.getBoundingClientRect();
@@ -38,4 +38,4 @@ class Button {
38
38
  }
39
39
  }
40
40
 
41
- module.exports = Button;
41
+ export default Button;
Binary file
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 15" width="17" height="15">
3
+ <g>
4
+ <path d="M.02,2.36h1.89v4.05h4.37V2.36h1.89v10.15h-1.89v-4.35H1.91v4.35H.02V2.36Z"/>
5
+ <path d="M11.15,12.22c-.57-.28-1.02-.67-1.33-1.18-.32-.5-.47-1.09-.47-1.75l1.8-.11c0,.35.08.65.25.91.17.26.41.46.72.6s.67.21,1.08.21c.6,0,1.07-.13,1.41-.4.33-.27.5-.64.5-1.12,0-.52-.21-.9-.63-1.13-.42-.23-1.04-.34-1.85-.34v-1.42c.59,0,1.06-.11,1.39-.32.34-.21.51-.54.51-.99,0-.38-.13-.68-.38-.9-.25-.22-.59-.33-1.02-.33-.47,0-.84.13-1.11.38-.27.25-.41.59-.42,1.03l-1.78-.12c0-.58.14-1.1.43-1.55.29-.46.69-.82,1.2-1.07.52-.26,1.09-.39,1.74-.39.61,0,1.16.12,1.63.35s.85.56,1.12.98.4.9.4,1.44c0,.46-.11.86-.34,1.2-.23.34-.54.61-.93.8.57.19,1.02.49,1.35.9.34.41.5.91.5,1.51,0,.64-.16,1.2-.48,1.69-.32.49-.76.87-1.34,1.14-.57.27-1.23.41-1.97.41s-1.41-.14-1.98-.42Z"/>
6
+ </g>
7
+ <rect style="fill:none;" width="17" height="15"/>
8
+ </svg>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 15" width="17" height="15">
3
+ <g>
4
+ <path d="M.07,2.35h1.9v4.09h4.4V2.35h1.9v10.23h-1.9v-4.39H1.97v4.39H.07V2.35Z"/>
5
+ <path d="M10.31,10.88c.82-.59,1.52-1.13,2.12-1.63.6-.5,1.13-1.08,1.59-1.72.46-.65.69-1.3.69-1.96,0-.46-.12-.84-.37-1.13-.25-.29-.61-.43-1.09-.43-.56,0-.98.2-1.25.6-.27.4-.42.9-.44,1.49l-1.79-.14c0-.63.14-1.23.42-1.8.28-.57.69-1.03,1.22-1.39.53-.36,1.16-.53,1.89-.53.62,0,1.18.14,1.66.4s.87.65,1.14,1.14c.27.49.41,1.06.41,1.71,0,1.03-.34,2.01-1.03,2.93-.68.92-1.61,1.74-2.79,2.46h4.22v1.7h-7.06v-1.38l.45-.32Z"/>
6
+ </g>
7
+ <rect style="fill:none;" width="17" height="15"/>
8
+ </svg>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18.02 18">
3
+ <path d="M5.52,2.5h12v2.09H5.52v-2.09ZM5.52,7.95h12v2.09H5.52v-2.09ZM5.52,13.41h12v2.09H5.52v-2.09Z"/>
4
+ <rect style="fill:none;" x=".02" width="18" height="18"/>
5
+ <path d="M1.32,2.67H.28v-.58h.63c.14,0,.25-.03.31-.09.07-.06.1-.16.1-.31v-.24h.73v4.09h-.73v-2.88Z"/>
6
+ <path d="M.31,10.39c.33-.23.61-.45.85-.65s.45-.43.63-.69c.19-.26.28-.52.28-.78,0-.19-.05-.34-.15-.45-.1-.11-.24-.17-.44-.17-.22,0-.39.08-.5.24-.11.16-.17.36-.18.6l-.72-.06c0-.25.06-.49.17-.72.11-.23.27-.41.49-.55s.47-.21.76-.21c.25,0,.47.05.66.16.19.11.35.26.46.46.11.2.16.43.16.68,0,.41-.14.8-.41,1.17s-.65.7-1.12.98h1.69v.68H.13v-.55l.18-.13Z"/>
7
+ <path d="M.73,16.49c-.23-.11-.41-.27-.54-.47-.13-.2-.19-.44-.19-.71l.72-.04c0,.14.03.26.1.37s.16.19.29.24c.12.06.27.09.43.09.24,0,.43-.05.57-.16s.2-.26.2-.45c0-.21-.08-.36-.25-.45-.17-.09-.42-.14-.75-.14v-.57c.24,0,.43-.04.56-.13.14-.08.2-.22.2-.4,0-.15-.05-.27-.15-.36-.1-.09-.24-.13-.41-.13-.19,0-.34.05-.45.15-.11.1-.17.24-.17.41l-.72-.05c0-.23.06-.44.17-.63.12-.19.28-.33.49-.43.21-.1.44-.16.7-.16.25,0,.47.05.66.14.19.09.34.23.45.39.11.17.16.36.16.58,0,.18-.05.34-.14.48s-.22.24-.38.32c.23.08.41.2.55.36s.2.37.2.61c0,.26-.06.48-.19.68-.13.2-.31.35-.54.46-.23.11-.49.16-.79.16s-.57-.06-.8-.17Z"/>
8
+ </svg>
@@ -296,10 +296,30 @@
296
296
  <path d="M18.312 13.274h2.49a9.319 9.319 0 0 1-2.593 6.534 10.434 10.434 0 0 1-6.257 3.353V28h-2.9v-4.839a10.445 10.445 0 0 1-6.257-3.353 9.315 9.315 0 0 1-2.597-6.534h2.49c-.054 2.04.793 4 2.316 5.358a7.89 7.89 0 0 0 5.5 2.109 7.89 7.89 0 0 0 5.5-2.109 6.932 6.932 0 0 0 2.316-5.358h-.008zm-7.813 4.425a4.488 4.488 0 0 1-4.425-4.425V4.425a4.248 4.248 0 0 1 1.314-3.111 4.34 4.34 0 0 1 6.221 0 4.255 4.255 0 0 1 1.314 3.111v8.85a4.488 4.488 0 0 1-4.425 4.425l.001-.001z"/>
297
297
  </symbol>
298
298
 
299
+ <symbol id="icon-richtext-heading-2" viewbox="0 0 17 15">
300
+ <g>
301
+ <path d="M.07,2.35h1.9v4.09h4.4V2.35h1.9v10.23h-1.9v-4.39H1.97v4.39H.07V2.35Z"/>
302
+ <path d="M10.31,10.88c.82-.59,1.52-1.13,2.12-1.63.6-.5,1.13-1.08,1.59-1.72.46-.65.69-1.3.69-1.96,0-.46-.12-.84-.37-1.13-.25-.29-.61-.43-1.09-.43-.56,0-.98.2-1.25.6-.27.4-.42.9-.44,1.49l-1.79-.14c0-.63.14-1.23.42-1.8.28-.57.69-1.03,1.22-1.39.53-.36,1.16-.53,1.89-.53.62,0,1.18.14,1.66.4s.87.65,1.14,1.14c.27.49.41,1.06.41,1.71,0,1.03-.34,2.01-1.03,2.93-.68.92-1.61,1.74-2.79,2.46h4.22v1.7h-7.06v-1.38l.45-.32Z"/>
303
+ </g>
304
+ <rect style="fill:none;" width="17" height="15"/>
305
+ </symbol>
306
+
307
+ <symbol id="icon-richtext-heading-3" viewbox="0 0 17 15">
308
+ <g>
309
+ <path d="M.02,2.36h1.89v4.05h4.37V2.36h1.89v10.15h-1.89v-4.35H1.91v4.35H.02V2.36Z"/>
310
+ <path d="M11.15,12.22c-.57-.28-1.02-.67-1.33-1.18-.32-.5-.47-1.09-.47-1.75l1.8-.11c0,.35.08.65.25.91.17.26.41.46.72.6s.67.21,1.08.21c.6,0,1.07-.13,1.41-.4.33-.27.5-.64.5-1.12,0-.52-.21-.9-.63-1.13-.42-.23-1.04-.34-1.85-.34v-1.42c.59,0,1.06-.11,1.39-.32.34-.21.51-.54.51-.99,0-.38-.13-.68-.38-.9-.25-.22-.59-.33-1.02-.33-.47,0-.84.13-1.11.38-.27.25-.41.59-.42,1.03l-1.78-.12c0-.58.14-1.1.43-1.55.29-.46.69-.82,1.2-1.07.52-.26,1.09-.39,1.74-.39.61,0,1.16.12,1.63.35s.85.56,1.12.98.4.9.4,1.44c0,.46-.11.86-.34,1.2-.23.34-.54.61-.93.8.57.19,1.02.49,1.35.9.34.41.5.91.5,1.51,0,.64-.16,1.2-.48,1.69-.32.49-.76.87-1.34,1.14-.57.27-1.23.41-1.97.41s-1.41-.14-1.98-.42Z"/>
311
+ </g>
312
+ <rect style="fill:none;" width="17" height="15"/>
313
+ </symbol>
314
+
299
315
  <symbol id="icon-richtext-bold" viewbox="0 0 10 14">
300
316
  <path d="M.55 13.209h4.844c2.109 0 4.056-1.292 4.056-3.6a3.45 3.45 0 0 0-2-3.041A2.797 2.797 0 0 0 8.83 4.14C8.83 1.653 6.747.791 4.857.791H.55v12.418zm2.232-7.418V2.803h2.111c1.063 0 1.89.492 1.89 1.459 0 1.222-.844 1.529-1.714 1.529H2.782zm0 5.291V7.716h2.559A1.734 1.734 0 0 1 7.25 9.359c0 1.169-.67 1.723-1.821 1.723H2.782z"/>
301
317
  </symbol>
302
318
 
319
+ <symbol id="icon-richtext-italic" viewbox="0 0 10 14">
320
+ <path d="M10.082 2.282v-2H4.364v2h1.508l-3.908 9.436H-.082v2h5.718v-2H4.129l3.908-9.436z"/>
321
+ </symbol>
322
+
303
323
  <symbol id="icon-richtext-bullet-list" viewbox="0 0 17 15">
304
324
  <circle cx="1.86" cy="2.291" r="1.86"/>
305
325
  <circle cx="1.86" cy="7.5" r="1.86"/>
@@ -307,8 +327,11 @@
307
327
  <path d="M6.07 1.291H17v2H6.07zM6.07 6.5H17v2H6.07zM6.07 11.709H17v2H6.07z"/>
308
328
  </symbol>
309
329
 
310
- <symbol id="icon-richtext-italic" viewbox="0 0 10 14">
311
- <path d="M10.082 2.282v-2H4.364v2h1.508l-3.908 9.436H-.082v2h5.718v-2H4.129l3.908-9.436z"/>
330
+ <symbol id="icon-richtext-ordered-list" viewbox="0 0 17 15">
331
+ <path d="M5.55.75h10.93v2H5.55V.75ZM5.55,5.96h10.93v2H5.55v-2ZM5.55,11.17h10.93v2H5.55v-2Z"/>
332
+ <path d="M1.22,1.13H.34v-.6h.49c.13,0,.23-.03.29-.09.06-.06.1-.15.1-.29v-.16h.75v3.48h-.75V1.13Z"/>
333
+ <path d="M.18,7.89c.27-.18.5-.36.71-.53.21-.17.39-.36.56-.58s.25-.44.25-.65c0-.13-.03-.24-.1-.32s-.16-.12-.3-.12c-.29,0-.45.21-.48.63l-.74-.06c0-.21.05-.42.15-.62.1-.2.24-.37.43-.49s.41-.19.67-.19c.22,0,.41.05.58.14.17.09.3.23.4.4s.15.37.15.6c0,.32-.09.63-.28.92-.19.29-.46.54-.81.76h1.23v.7H.11v-.55s.05-.04.07-.05Z"/>
334
+ <path d="M.64,13.72c-.2-.1-.36-.24-.47-.42-.11-.18-.17-.39-.17-.62l.75-.04c0,.1.02.19.07.27.05.08.12.14.21.18.09.04.2.06.32.06.18,0,.31-.04.41-.11s.15-.18.15-.32c0-.15-.06-.25-.18-.32s-.31-.1-.57-.1v-.59c.18,0,.31-.03.4-.09.09-.06.14-.15.14-.28,0-.11-.03-.19-.1-.25-.07-.06-.16-.09-.28-.09-.14,0-.24.04-.32.11-.08.07-.12.17-.12.29l-.75-.05c0-.2.05-.39.15-.55.1-.16.25-.29.43-.38.18-.09.39-.14.62-.14.21,0,.41.04.57.12.17.08.3.2.39.34s.14.32.14.51c0,.14-.03.27-.09.38-.06.11-.14.21-.25.28.17.07.31.18.4.32.09.14.14.3.14.49,0,.22-.06.42-.17.6-.11.17-.27.31-.47.4-.2.1-.43.14-.7.14s-.5-.05-.7-.15Z"/>
312
335
  </symbol>
313
336
 
314
337
  <symbol id="icon-streaming" viewbox="0 0 28 20">
@@ -3,6 +3,8 @@ import Document from '@tiptap/extension-document';
3
3
  import Paragraph from '@tiptap/extension-paragraph';
4
4
  import Text from '@tiptap/extension-text';
5
5
  import BulletList from '@tiptap/extension-bullet-list';
6
+ import OrderedList from '@tiptap/extension-ordered-list';
7
+ import Heading from '@tiptap/extension-heading'
6
8
  import ListItem from '@tiptap/extension-list-item';
7
9
  import Bold from '@tiptap/extension-bold';
8
10
  import Italic from '@tiptap/extension-italic';
@@ -23,6 +25,26 @@ function kebabToPascal(str) {
23
25
  return str.replace(/(^\w|-\w)/g, clearAndCapitalize);
24
26
  }
25
27
 
28
+ function insertHeading(button, editor) {
29
+
30
+ const levelAttr = button.dataset.richTextControl;
31
+
32
+ const level = parseInt(levelAttr.replace('heading-', ''), 10);
33
+
34
+ editor.commands.toggleHeading({ level });
35
+
36
+ const toolbar = button.parentElement; // The toolbar div
37
+ const headingButtons = toolbar.querySelectorAll('button[data-rich-text-control^="heading-"]');
38
+
39
+ headingButtons.forEach(btn => {
40
+ btn.classList.remove('is-active');
41
+ });
42
+
43
+ if (editor.isActive('heading', { level })) {
44
+ button.classList.add('is-active');
45
+ }
46
+ }
47
+
26
48
  function insertLink(el, editor) {
27
49
  const addLink = (e, modal, close) => {
28
50
  e.preventDefault();
@@ -97,6 +119,8 @@ function createToolbarButton(el, control, editor) {
97
119
 
98
120
  if (control === 'link') {
99
121
  insertLink(el, editor);
122
+ } else if(control === 'heading-2' || control === 'heading-3') {
123
+ insertHeading(button, editor);
100
124
  } else {
101
125
  const method = `toggle${kebabToPascal(control)}`;
102
126
 
@@ -108,17 +132,33 @@ function createToolbarButton(el, control, editor) {
108
132
  }
109
133
 
110
134
  function toogleButtonState(editor, el) {
111
- [].forEach.call(el.parentNode.querySelectorAll('[data-rich-text-control]'), (control) => {
112
- if (editor.isActive(control.value)) {
113
- control.classList.add('is-active');
135
+ const buttons = el.parentNode.querySelectorAll('[data-rich-text-control]');
136
+
137
+ buttons.forEach((button) => {
138
+ const control = button.getAttribute('data-rich-text-control');
139
+ const value = kebabToCamel(control);
140
+
141
+ // 🧠 Handle heading separately
142
+ if (control === 'heading-2' || control === 'heading-3') {
143
+ const level = parseInt(control.replace('heading-', ''), 10);
144
+ if (editor.isActive('heading', { level })) {
145
+ button.classList.add('is-active');
146
+ } else {
147
+ button.classList.remove('is-active');
148
+ }
149
+ return;
150
+ }
151
+
152
+ // 🔠 Handle all others like bold, italic, bullet-list, etc.
153
+ if (editor.isActive(value)) {
154
+ button.classList.add('is-active');
114
155
  } else {
115
- control.classList.remove('is-active');
156
+ button.classList.remove('is-active');
116
157
  }
117
158
 
118
- if (control.value === 'link' && editor.view.state.selection.empty) {
119
- control.disabled = true;
120
- } else if (control.value === 'link') {
121
- control.disabled = false;
159
+ // 🔗 Special logic for link
160
+ if (value === 'link') {
161
+ button.disabled = editor.view.state.selection.empty;
122
162
  }
123
163
  });
124
164
  }
@@ -130,7 +170,7 @@ function createToolbar(el, editor) {
130
170
 
131
171
  el.parentNode.insertBefore(toolbar, el);
132
172
 
133
- ['bold', 'italic', 'link', 'bullet-list'].forEach((control) => {
173
+ ['heading-2', 'heading-3', 'bold', 'italic', 'link', 'bullet-list', 'ordered-list'].forEach((control) => {
134
174
  createToolbarButton(toolbar, control, editor);
135
175
  });
136
176
  }
@@ -153,6 +193,10 @@ export function setupTextArea(el, onChange = () => {}) {
153
193
  Text,
154
194
  ListItem,
155
195
  BulletList,
196
+ OrderedList,
197
+ Heading.configure({
198
+ levels: [2, 3],
199
+ }),
156
200
  Bold,
157
201
  Italic,
158
202
  Link.configure({
@@ -1 +1 @@
1
- [{"id":"search","name":"Search"},{"id":"search-domain","name":"Search Domain"},{"id":"arrow-forwards","name":"Arrow Forwards"},{"id":"arrow-backwards","name":"Arrow Backwards"},{"id":"arrow-down","name":"Arrow Down"},{"id":"arrow-variant","name":"Arrow Variant"},{"id":"hamburger","name":"Hamburger"},{"id":"close","name":"Close"},{"id":"check","name":"Check"},{"id":"quote","name":"Quote"},{"id":"file","name":"File"},{"id":"download","name":"Download"},{"id":"upload","name":"Upload"},{"id":"filter","name":"Filter"},{"id":"read","name":"Read"},{"id":"pin","name":"Pin"},{"id":"user","name":"User"},{"id":"language","name":"Language"},{"id":"linkedin","name":"Linkedin"},{"id":"facebook","name":"Facebook"},{"id":"instagram","name":"Instagram"},{"id":"twitter","name":"Twitter"},{"id":"x","name":"X"},{"id":"external-link","name":"External Link"},{"id":"app-share","name":"App Share"},{"id":"print","name":"Print"},{"id":"chapters","name":"Chapters"},{"id":"article","name":"Article"},{"id":"padlock","name":"Padlock"},{"id":"trash","name":"Trash"},{"id":"link","name":"Link"},{"id":"share","name":"Share"},{"id":"questionmark","name":"Questionmark"},{"id":"info","name":"Info"},{"id":"contrast","name":"Contrast"},{"id":"gauge","name":"Gauge"},{"id":"backward-15","name":"Backward 15"},{"id":"step-backwards","name":"Step Backwards"},{"id":"play","name":"Play"},{"id":"step-forwards","name":"Step Forwards"},{"id":"forward-60","name":"Forward 60"},{"id":"pause","name":"Pause"},{"id":"subtitles","name":"Subtitles"},{"id":"author","name":"Author"},{"id":"copy","name":"Copy"},{"id":"speaker","name":"Speaker"},{"id":"mute","name":"Mute"},{"id":"settings","name":"Settings"},{"id":"lte","name":"Lte"},{"id":"wifi","name":"Wifi"},{"id":"reception","name":"Reception"},{"id":"2g","name":"2g"},{"id":"3g","name":"3g"},{"id":"4g","name":"4g"},{"id":"5g","name":"5g"},{"id":"latency","name":"Latency"},{"id":"spinner","name":"Spinner"},{"id":"spinner-white","name":"Spinner White"},{"id":"3d","name":"3d"},{"id":"accessibility","name":"Accessibility"},{"id":"cafe","name":"Cafe"},{"id":"capacity","name":"Capacity"},{"id":"display","name":"Display"},{"id":"email","name":"Email"},{"id":"headset","name":"Headset"},{"id":"phone","name":"Phone"},{"id":"plus","name":"Plus"},{"id":"podcast","name":"Podcast"},{"id":"richtext-bold","name":"Richtext Bold"},{"id":"richtext-bullet-list","name":"Richtext Bullet List"},{"id":"richtext-italic","name":"Richtext Italic"},{"id":"streaming","name":"Streaming"},{"id":"time","name":"Time"},{"id":"drag-item","name":"Drag Item"},{"id":"personal-data","name":"Personal Data"},{"id":"romance","name":"Romance"},{"id":"shopping","name":"Shopping"},{"id":"warning","name":"Warning"},{"id":"diamond","name":"Diamond"},{"id":"world","name":"World"},{"id":"table","name":"Table"}]
1
+ [{"id":"search","name":"Search"},{"id":"search-domain","name":"Search Domain"},{"id":"arrow-forwards","name":"Arrow Forwards"},{"id":"arrow-backwards","name":"Arrow Backwards"},{"id":"arrow-down","name":"Arrow Down"},{"id":"arrow-variant","name":"Arrow Variant"},{"id":"hamburger","name":"Hamburger"},{"id":"close","name":"Close"},{"id":"check","name":"Check"},{"id":"quote","name":"Quote"},{"id":"file","name":"File"},{"id":"download","name":"Download"},{"id":"upload","name":"Upload"},{"id":"filter","name":"Filter"},{"id":"read","name":"Read"},{"id":"pin","name":"Pin"},{"id":"user","name":"User"},{"id":"language","name":"Language"},{"id":"linkedin","name":"Linkedin"},{"id":"facebook","name":"Facebook"},{"id":"instagram","name":"Instagram"},{"id":"twitter","name":"Twitter"},{"id":"x","name":"X"},{"id":"external-link","name":"External Link"},{"id":"app-share","name":"App Share"},{"id":"print","name":"Print"},{"id":"chapters","name":"Chapters"},{"id":"article","name":"Article"},{"id":"padlock","name":"Padlock"},{"id":"trash","name":"Trash"},{"id":"link","name":"Link"},{"id":"share","name":"Share"},{"id":"questionmark","name":"Questionmark"},{"id":"info","name":"Info"},{"id":"contrast","name":"Contrast"},{"id":"gauge","name":"Gauge"},{"id":"backward-15","name":"Backward 15"},{"id":"step-backwards","name":"Step Backwards"},{"id":"play","name":"Play"},{"id":"step-forwards","name":"Step Forwards"},{"id":"forward-60","name":"Forward 60"},{"id":"pause","name":"Pause"},{"id":"subtitles","name":"Subtitles"},{"id":"author","name":"Author"},{"id":"copy","name":"Copy"},{"id":"speaker","name":"Speaker"},{"id":"mute","name":"Mute"},{"id":"settings","name":"Settings"},{"id":"lte","name":"Lte"},{"id":"wifi","name":"Wifi"},{"id":"reception","name":"Reception"},{"id":"2g","name":"2g"},{"id":"3g","name":"3g"},{"id":"4g","name":"4g"},{"id":"5g","name":"5g"},{"id":"latency","name":"Latency"},{"id":"spinner","name":"Spinner"},{"id":"spinner-white","name":"Spinner White"},{"id":"3d","name":"3d"},{"id":"accessibility","name":"Accessibility"},{"id":"cafe","name":"Cafe"},{"id":"capacity","name":"Capacity"},{"id":"display","name":"Display"},{"id":"email","name":"Email"},{"id":"headset","name":"Headset"},{"id":"phone","name":"Phone"},{"id":"plus","name":"Plus"},{"id":"podcast","name":"Podcast"},{"id":"richtext-bold","name":"Richtext Bold"},{"id":"richtext-italic","name":"Richtext Italic"},{"id":"richtext-heading-2","name":"Richtext Heading 2"},{"id":"richtext-heading-3","name":"Richtext Heading 3"},{"id":"richtext-bullet-list","name":"Richtext Bullet List"},{"id":"richtext-ordered-list","name":"Richtext Ordered List"},{"id":"streaming","name":"Streaming"},{"id":"time","name":"Time"},{"id":"drag-item","name":"Drag Item"},{"id":"personal-data","name":"Personal Data"},{"id":"romance","name":"Romance"},{"id":"shopping","name":"Shopping"},{"id":"warning","name":"Warning"},{"id":"diamond","name":"Diamond"},{"id":"world","name":"World"},{"id":"table","name":"Table"}]
@@ -137,15 +137,6 @@ dl {
137
137
  );
138
138
  }
139
139
 
140
- ul,
141
- ol,
142
- dl {
143
- + h2,
144
- + .beta {
145
- margin-top: func.rhythm(5);
146
- }
147
- }
148
-
149
140
  .small,
150
141
  small {
151
142
  @include plumber.plumber(
@@ -61,6 +61,4 @@ if (gliderElementCourse) {
61
61
  });
62
62
  });
63
63
  }
64
-
65
- module.exports = GliderCourse;
66
64
  }
@@ -6,7 +6,8 @@ if (gliderWrappers) {
6
6
  [].forEach.call(gliderWrappers, (gliderWrapper) => {
7
7
  const gliderElement = gliderWrapper.querySelector('.js-glider');
8
8
  const dots = gliderWrapper.classList.toString();
9
- const glider = new Glider(gliderElement, {
9
+
10
+ gliderElement.glider = new Glider(gliderElement, {
10
11
  scrollLock: true,
11
12
  slidesToShow: 1,
12
13
  slidesToScroll: 1,
@@ -39,6 +40,5 @@ if (gliderWrappers) {
39
40
  },
40
41
  ],
41
42
  });
42
- module.exports = glider;
43
43
  });
44
44
  }
@@ -1,6 +1,5 @@
1
1
  import debounce from '../../assets/js/debounce';
2
-
3
- require('van11y-accessible-accordion-aria');
2
+ import 'van11y-accessible-accordion-aria';
4
3
 
5
4
  const className = 'o-accordion';
6
5
  const accordionElement = document.querySelector(`.js-${className}`);
@@ -1,8 +1,7 @@
1
1
  import '../../assets/js/parallax';
2
+ import offset from '../../assets/js/offset';
2
3
 
3
- const { offsetTop, offsetBottom, offsetLeft } = require('../../assets/js/offset');
4
-
5
-
4
+ const { offsetTop, offsetBottom, offsetLeft } = offset;
6
5
  const dataLayer = window._mtm || [];
7
6
  const progressBar = document.querySelector('.js-progress-bar');
8
7
  const decadeContainer = document.querySelector('.js-decade-container');
@@ -1,13 +0,0 @@
1
- 'use strict';
2
-
3
- var _smoothScroll = require('smooth-scroll');
4
-
5
- var _smoothScroll2 = _interopRequireDefault(_smoothScroll);
6
-
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
-
9
- var anchorScroll = new _smoothScroll2.default('a[href*="#"]', {
10
- easing: 'easeOutCubic'
11
- });
12
-
13
- module.exports = anchorScroll;
@@ -1,12 +0,0 @@
1
- 'use strict';
2
-
3
- var element = document.querySelector('.js-toggle-high-contrast');
4
-
5
- function classToggle() {
6
- var body = document.querySelector('body');
7
- body.classList.toggle('high-contrast');
8
- }
9
-
10
- if (element) {
11
- element.addEventListener('click', classToggle);
12
- }
@@ -1,68 +0,0 @@
1
- 'use strict';
2
-
3
- var _gliderJs = require('glider-js');
4
-
5
- var _gliderJs2 = _interopRequireDefault(_gliderJs);
6
-
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
-
9
- var gliderElementSingle = document.querySelector('.js-glider-single');
10
-
11
- if (gliderElementSingle) {
12
- var GliderSingle = new _gliderJs2.default(gliderElementSingle, {
13
- scrollLock: true,
14
- slidesToShow: 1,
15
- slidesToScroll: 1
16
- });
17
-
18
- var nextBtns = document.querySelectorAll('.js-glider-next');
19
- var prevBtns = document.querySelectorAll('.js-glider-prev');
20
- var siteMain = document.querySelector('#siteMain');
21
- var zoomImages = document.querySelectorAll('.js-zoom.zoom');
22
- var slideIndex = GliderSingle.getCurrentSlide();
23
- var bounding = 0;
24
-
25
- var scrollTop = function scrollTop() {
26
- siteMain.scrollIntoView();
27
- };
28
-
29
- if (nextBtns) {
30
- [].forEach.call(nextBtns, function (nextBtn) {
31
- nextBtn.addEventListener('click', function () {
32
- GliderSingle.scrollItem(slideIndex += 1, true);
33
-
34
- if (siteMain) {
35
- bounding = siteMain.getBoundingClientRect();
36
- if (bounding.top < 0) {
37
- scrollTop();
38
- }
39
- }
40
- });
41
- });
42
- }
43
-
44
- if (prevBtns) {
45
- [].forEach.call(prevBtns, function (prevBtn) {
46
- prevBtn.addEventListener('click', function () {
47
- GliderSingle.scrollItem(slideIndex -= 1, true);
48
-
49
- if (siteMain) {
50
- bounding = siteMain.getBoundingClientRect();
51
- if (bounding.top < 0) {
52
- scrollTop();
53
- }
54
- }
55
- });
56
- });
57
- }
58
-
59
- if (zoomImages) {
60
- [].forEach.call(zoomImages, function (zoomImage) {
61
- zoomImage.addEventListener('click', function () {
62
- zoomImage.classList.toggle('is-zoomed');
63
- });
64
- });
65
- }
66
-
67
- module.exports = GliderSingle;
68
- }