@onsvisual/svelte-components 0.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 (46) hide show
  1. package/README.md +5 -0
  2. package/dist/@types/actions/cssVariables/index.d.ts +4 -0
  3. package/dist/@types/actions/resizeObserver/index.d.ts +4 -0
  4. package/dist/@types/components/layout/Accordion/Accordion.svelte.d.ts +27 -0
  5. package/dist/@types/components/layout/Accordion/AccordionItem.svelte.d.ts +31 -0
  6. package/dist/@types/components/layout/Container/Container.svelte.d.ts +39 -0
  7. package/dist/@types/components/layout/Footer/Footer.svelte.d.ts +31 -0
  8. package/dist/@types/components/layout/Footer/ONSLogo.svelte.d.ts +29 -0
  9. package/dist/@types/components/layout/Header/Header.svelte.d.ts +35 -0
  10. package/dist/@types/components/layout/Header/ONSLogo.svelte.d.ts +29 -0
  11. package/dist/@types/components/layout/Theme/Theme.svelte.d.ts +33 -0
  12. package/dist/@types/components/layout/Theme/themes.d.ts +29 -0
  13. package/dist/@types/components/layout/Twisty/Twisty.svelte.d.ts +29 -0
  14. package/dist/@types/components/ui/Button/Button.svelte.d.ts +43 -0
  15. package/dist/@types/components/ui/Button/Icon.svelte.d.ts +27 -0
  16. package/dist/@types/components/ui/Dropdown/Dropdown.svelte.d.ts +37 -0
  17. package/dist/@types/components/ui/Em/Em.svelte.d.ts +29 -0
  18. package/dist/@types/components/ui/Input/Input.svelte.d.ts +51 -0
  19. package/dist/@types/components/ui/Select/Select.svelte.d.ts +67 -0
  20. package/dist/@types/components/ui/Textarea/Textarea.svelte.d.ts +37 -0
  21. package/dist/@types/index.d.ts +13 -0
  22. package/dist/@types/js/utils.d.ts +10 -0
  23. package/dist/actions/cssVariables/index.js +20 -0
  24. package/dist/actions/resizeObserver/index.js +25 -0
  25. package/dist/components/layout/Accordion/Accordion.svelte +37 -0
  26. package/dist/components/layout/Accordion/AccordionItem.svelte +81 -0
  27. package/dist/components/layout/Container/Container.svelte +99 -0
  28. package/dist/components/layout/Footer/Footer.svelte +266 -0
  29. package/dist/components/layout/Footer/ONSLogo.svelte +150 -0
  30. package/dist/components/layout/Header/Header.svelte +513 -0
  31. package/dist/components/layout/Header/ONSLogo.svelte +150 -0
  32. package/dist/components/layout/Theme/Theme.svelte +91 -0
  33. package/dist/components/layout/Theme/themes.js +24 -0
  34. package/dist/components/layout/Twisty/Twisty.svelte +48 -0
  35. package/dist/components/ui/Button/Button.svelte +87 -0
  36. package/dist/components/ui/Button/Icon.svelte +50 -0
  37. package/dist/components/ui/Dropdown/Dropdown.svelte +62 -0
  38. package/dist/components/ui/Em/Em.svelte +44 -0
  39. package/dist/components/ui/Input/Input.svelte +163 -0
  40. package/dist/components/ui/Select/Select.svelte +257 -0
  41. package/dist/components/ui/Textarea/Textarea.svelte +99 -0
  42. package/dist/css/main.css +55 -0
  43. package/dist/globals.d.ts +23 -0
  44. package/dist/index.js +16 -0
  45. package/dist/js/utils.js +41 -0
  46. package/package.json +144 -0
@@ -0,0 +1,150 @@
1
+ <script>
2
+ import { getContext } from "svelte";
3
+
4
+ const theme = getContext("theme");
5
+
6
+ $: primary = $theme === "dark" ? "white" : "#003c57";
7
+ const secondary = "#a8bd3a";
8
+
9
+ export let compact = false;
10
+ export let className = "ons-svg-logo";
11
+ export let width = "auto";
12
+ export let height = "auto";
13
+ </script>
14
+
15
+ {#if !compact}
16
+ <svg
17
+ class="{className}"
18
+ xmlns="http://www.w3.org/2000/svg"
19
+ width="{width}"
20
+ height="{height}"
21
+ viewBox="33 2 552 60"
22
+ aria-labelledby="ons-logo-en-alt"
23
+ >
24
+ <title id="ons-logo-en-alt">Office for National Statistics logo</title>
25
+ <g class="ons-svg-logo__group ons-svg-logo__group--secondary" fill="{secondary}">
26
+ <path
27
+ d="M0,34.6c.8-1.69,1.39-3,2.32-4.6A38.28,38.28,0,0,1,0,23.4V34.6M5,3S0,3,0,9.25v1A62.12,62.12,0,0,0,4.2,27a43.77,43.77,0,0,1,9.42-10.79C21.69,9.21,31.16,5.13,45.9,3Z"
28
+ ></path>
29
+ </g>
30
+ <g class="ons-svg-logo__group ons-svg-logo__group--primary" fill="{primary}">
31
+ <path
32
+ d="M53.06,6.42C36.2,8,24.68,12.92,16.43,20.07A41.46,41.46,0,0,0,6.4,32.2C12.87,44.93,28.88,57,46.6,57H47s6.32.21,6.32-6.91V6.36a1.22,1.22,0,0,1-.26.06M9.72,42.67a44.25,44.25,0,0,1-5-7.42A80.59,80.59,0,0,0,0,46.38V56.91L31.06,57c-9.83-3-15.74-7.64-21.34-14.3"
33
+ ></path>
34
+ </g>
35
+ <g class="ons-svg-logo__group ons-svg-logo__group--text" fill="{primary}">
36
+ <path
37
+ d="M82,47.49c-9.07,0-13.13-7.51-13.13-16.77S72.91,14,82,14s13.1,7.61,13.1,16.77S91.1,47.54,82,47.54m0-30.91c-6.69,0-9.07,7.33-9.07,14.05s2.16,13.9,9.07,13.9,9-7.28,9-13.9-2.34-14-9-14"
38
+ ></path>
39
+ <path
40
+ d="M106.36,23.81V46.88h-3.67V23.81H98.93V21.56h3.76V17.9c0-4.61,2.72-7.95,8.08-7.95.38,0,.86.05.86.05v2.35h-.43c-2.55,0-4.84,1.64-4.84,5.12v4.09h5.27v2.25Z"
41
+ ></path>
42
+ <path
43
+ d="M121.53,23.81V46.88h-3.67V23.81H114.1V21.56h3.76V17.9c0-4.61,2.72-7.95,8.08-7.95.38,0,.86.05.86.05v2.35h-.43c-2.55,0-4.84,1.64-4.84,5.12v4.09h5.27v2.25Z"
44
+ ></path>
45
+ <path
46
+ d="M132.85,16.72a2.28,2.28,0,0,1-2.33-2.23v0a2.34,2.34,0,0,1,4.67,0,2.28,2.28,0,0,1-2.3,2.26h0M131,21.56h3.71V46.88H131Z"
47
+ ></path>
48
+ <path
49
+ d="M150.53,47.49c-6,0-10.63-5.16-10.63-13.29S144.52,21,150.66,21a9.76,9.76,0,0,1,6.17,1.74l-1,2.25a7.53,7.53,0,0,0-4.4-1.36c-5.15,0-7.78,4.46-7.78,10.48,0,6.2,3,10.62,7.65,10.62a8,8,0,0,0,4.49-1.37l1,2.45a10.21,10.21,0,0,1-6.3,1.73"
50
+ ></path>
51
+ <path
52
+ d="M162.84,35.75c.48,6,3.76,9,8.9,9a14.66,14.66,0,0,0,6.88-1.55l1.08,2.59a18,18,0,0,1-8.22,1.73c-7.12,0-12.18-4.23-12.18-13.34,0-8.69,4.67-13.2,11-13.2s10.37,3.95,10.37,12.4Zm7.35-12.41c-4.1,0-7.56,3.2-7.52,10.29l14.39-2c0-5.87-2.81-8.32-6.87-8.32"
53
+ ></path>
54
+ <path
55
+ d="M198.57,23.81V46.88H194.9V23.81h-3.76V21.56h3.76V17.9c0-4.61,2.72-7.95,8.08-7.95.39,0,.87.05.87.05v2.35h-.44c-2.54,0-4.84,1.64-4.84,5.12v4.09h5.28v2.25Z"
56
+ ></path>
57
+ <path
58
+ d="M217.28,47.49c-7.47,0-10.89-5.78-10.89-13.24S209.81,21,217.28,21s10.85,5.82,10.85,13.3-3.37,13.24-10.85,13.24m0-24c-5.53,0-7.13,5.59-7.13,10.81s1.73,10.56,7.13,10.56,7.13-5.35,7.13-10.56-1.6-10.81-7.13-10.81"
59
+ ></path>
60
+ <path
61
+ d="M244.08,23.91c-2.34-.61-5.75-.52-7.35.47v22.5H233V22.69c2.67-1.13,5.36-1.74,10.11-1.74H245Z"
62
+ ></path>
63
+ <path
64
+ d="M277.42,47.13,263.07,25a32.2,32.2,0,0,1-1.85-3.29h-.09s.13,1.88.13,3.85V47.13h-4.71V14.8h5.31l13.61,20.82A28.76,28.76,0,0,1,277.38,39h.08s-.17-1.84-.17-3.77V14.8H282V47.13Z"
65
+ ></path>
66
+ <path
67
+ d="M297.52,47.79c-7.43,0-10.93-3-10.93-7.81,0-6.8,7.12-8.64,15.59-9.39V29.13c0-3.47-2.37-4.51-5.83-4.51a18,18,0,0,0-6.87,1.46L288.23,23a24,24,0,0,1,9.12-1.83c5.61,0,9.93,2.3,9.93,8.78V46a22.71,22.71,0,0,1-9.76,1.83m4.66-14.67c-6.26.67-10.45,1.84-10.45,6.73,0,3.42,2.42,4.88,6.22,4.88a10.09,10.09,0,0,0,4.23-.84Z"
68
+ ></path>
69
+ <path
70
+ d="M322,47.69c-5.31,0-7.34-3.43-7.34-6.86V25.09h-3.55V21.81h3.55V16.12l5.4-1.5v7.19H325v3.28h-5V40.55a3.26,3.26,0,0,0,3,3.52h.5a5.5,5.5,0,0,0,1.46-.23v3.33a7.69,7.69,0,0,1-3,.52"
71
+ ></path>
72
+ <path
73
+ d="M331.91,17.43a3,3,0,0,1-3.15-2.81,3.17,3.17,0,0,1,6.31,0,3,3,0,0,1-3.16,2.81m-2.72,4.38h5.44V47.13h-5.44Z"
74
+ ></path>
75
+ <path
76
+ d="M350.88,47.79c-7.73,0-11.57-5.74-11.57-13.3s3.84-13.34,11.57-13.34,11.54,5.78,11.54,13.34-3.8,13.3-11.54,13.3m0-23.17c-4.66,0-6.05,4.89-6.05,9.82s1.47,9.63,6.05,9.63,6.05-4.7,6.05-9.63-1.38-9.82-6.05-9.82"
77
+ ></path>
78
+ <path
79
+ d="M382.52,47.13V29c0-3.24-2.77-4.47-5.88-4.47a12.3,12.3,0,0,0-4.37.76v21.8h-5.39V23a26.81,26.81,0,0,1,10.06-1.83c6.61,0,11,2.25,11,7.8V47.13Z"
80
+ ></path>
81
+ <path
82
+ d="M403.18,47.79c-7.43,0-10.94-3-10.94-7.81,0-6.8,7.13-8.64,15.6-9.39V29.13c0-3.47-2.37-4.51-5.83-4.51a18,18,0,0,0-6.87,1.46L393.89,23A24,24,0,0,1,403,21.15c5.62,0,9.94,2.3,9.94,8.78V46a22.71,22.71,0,0,1-9.76,1.83m4.66-14.67c-6.27.67-10.46,1.84-10.46,6.73,0,3.42,2.43,4.88,6.23,4.88a10.09,10.09,0,0,0,4.23-.84Z"
83
+ ></path>
84
+ <polygon
85
+ points="418.52 47.13 418.52 34.91 418.52 10.25 423.92 10.25 423.92 22.76 423.92 47.13 418.52 47.13"
86
+ ></polygon>
87
+ <path
88
+ d="M445.39,47.79A19.11,19.11,0,0,1,436.58,46l1.51-4a13.48,13.48,0,0,0,6.22,1.55c3.76,0,6.44-2.21,6.44-5.41,0-7.09-13.44-4.36-13.44-14.42,0-5.13,4.15-9.59,10.72-9.59A15.82,15.82,0,0,1,455.8,16l-1.38,3.52a11.93,11.93,0,0,0-5.66-1.5c-3.5,0-5.79,2.11-5.79,5.12,0,7,13.74,3.94,13.74,14.65,0,5.74-4.71,10-11.32,10"
89
+ ></path>
90
+ <path
91
+ d="M470.41,47.69c-5.31,0-7.34-3.43-7.34-6.86V25.09h-3.54V21.81h3.54V16.12l5.4-1.5v7.19h4.92v3.28h-4.92V40.55a3.27,3.27,0,0,0,3,3.52h.48a5.12,5.12,0,0,0,1.46-.23v3.33a7.69,7.69,0,0,1-3,.52"
92
+ ></path>
93
+ <path
94
+ d="M487.27,47.79c-7.44,0-10.93-3-10.93-7.81,0-6.8,7.13-8.64,15.6-9.39V29.13c0-3.47-2.38-4.51-5.84-4.51a18,18,0,0,0-6.87,1.46L478,23a23.94,23.94,0,0,1,9.11-1.83c5.62,0,9.94,2.3,9.94,8.78V46a22.71,22.71,0,0,1-9.76,1.83M492,33.16c-6.27.67-10.46,1.84-10.46,6.73,0,3.42,2.42,4.88,6.22,4.88a10,10,0,0,0,4.24-.84Z"
95
+ ></path>
96
+ <path
97
+ d="M511.73,47.69c-5.32,0-7.35-3.43-7.35-6.86V25.09h-3.54V21.81h3.54V16.12l5.4-1.5v7.19h4.92v3.28h-4.92V40.55a3.26,3.26,0,0,0,3,3.52h.5a5.5,5.5,0,0,0,1.46-.23v3.33a7.69,7.69,0,0,1-3,.52"
98
+ ></path>
99
+ <path
100
+ d="M521.66,17.43a3,3,0,0,1-3.15-2.81,3.17,3.17,0,0,1,6.31,0,3,3,0,0,1-3.16,2.81m-2.72,4.38h5.45V47.13h-5.45Z"
101
+ ></path>
102
+ <path
103
+ d="M536.19,47.79A15.9,15.9,0,0,1,528.54,46L530,42.48a10.53,10.53,0,0,0,5.52,1.5c2.77,0,5-1.78,5-3.94,0-6-11.1-3.2-11.1-11.47,0-3.76,3.37-7.42,8.86-7.42A13.56,13.56,0,0,1,545.34,23l-1.42,3.14a8.47,8.47,0,0,0-4.62-1.45c-2.81,0-4.54,1.69-4.54,3.62,0,5.64,11.32,3.14,11.32,11.6,0,4-3.85,7.9-9.89,7.9"
104
+ ></path>
105
+ <path
106
+ d="M559.83,47.69c-5.31,0-7.35-3.43-7.35-6.86V25.09h-3.54V21.81h3.54V16.12l5.4-1.5v7.19h4.93v3.28h-4.93V40.55a3.27,3.27,0,0,0,3,3.52h.48a5.64,5.64,0,0,0,1.47-.23v3.33a7.72,7.72,0,0,1-3,.52"
107
+ ></path>
108
+ <path
109
+ d="M569.77,17.43a3,3,0,0,1-3.15-2.81,3.17,3.17,0,0,1,6.31,0,3,3,0,0,1-3.16,2.81m-2.72,4.38h5.44V47.13h-5.44Z"
110
+ ></path>
111
+ <path
112
+ d="M588.14,47.79c-6.23,0-11-5.08-11-13.35s4.88-13.29,11-13.29A10.51,10.51,0,0,1,594.66,23l-1.21,3a6.87,6.87,0,0,0-4-1.22c-4.4,0-6.69,3.81-6.69,9.49s2.63,9.59,6.61,9.59a6.74,6.74,0,0,0,4-1.28L594.7,46c-1.12.94-3.33,1.84-6.56,1.84"
113
+ ></path>
114
+ <path
115
+ d="M605.1,47.79A15.9,15.9,0,0,1,597.45,46l1.42-3.47A10.54,10.54,0,0,0,604.4,44c2.77,0,5-1.78,5-3.94,0-6-11.1-3.2-11.1-11.47,0-3.76,3.37-7.42,8.85-7.42a13.49,13.49,0,0,1,7.1,1.83l-1.42,3.14a8.42,8.42,0,0,0-4.63-1.45c-2.8,0-4.53,1.69-4.53,3.62,0,5.64,11.32,3.14,11.32,11.6,0,4-3.85,7.9-9.89,7.9"
116
+ ></path>
117
+ </g>
118
+ </svg>
119
+ {:else}
120
+ <svg
121
+ class="{className}"
122
+ xmlns="http://www.w3.org/2000/svg"
123
+ width="{width}"
124
+ height="{height}"
125
+ viewBox="0 5 595 116"
126
+ aria-labelledby="ons-logo-stacked-en-alt"
127
+ >
128
+ <title id="ons-logo-stacked-en-alt">Office for National Statistics logo</title>
129
+ <g class="ons-svg-logo__group ons-svg-logo__group--secondary" fill="{secondary}">
130
+ <path
131
+ d="M0,70.5c1.8-3.7,3.6-7.2,5.6-10.7A127.94,127.94,0,0,1,0,42.6V70.5M10.9,0S0,0,0,13.5v7.2A128.06,128.06,0,0,0,7.9,56.2a114.75,114.75,0,0,1,22.3-26C47.8,15.1,71.5,4.7,103.7.1Z"
132
+ ></path>
133
+ </g>
134
+ <g class="ons-svg-logo__group ons-svg-logo__group--primary" fill="{primary}">
135
+ <path
136
+ d="M115.9,7.3c-36.8,3.5-62,14-80,29.4a108.15,108.15,0,0,0-23.6,29c14.1,27.4,41.1,47.6,86,50.5h4.4s13.8.5,13.8-14.9V7.2l-.6.1M21.2,85.4a92.68,92.68,0,0,1-11-16A173,173,0,0,0,0,93.4v22.7l73.6.1c-22.9-5.5-40.1-16.4-52.4-30.8"
137
+ ></path>
138
+ </g>
139
+ <g class="ons-svg-logo__group ons-svg-logo__group--text" fill="{primary}">
140
+ <path
141
+ d="M161,51.9c-11.3,0-16.3-9.3-16.3-20.8s5-20.8,16.3-20.8,16.3,9.5,16.3,20.8c-.1,11.5-5.1,20.8-16.3,20.8m0-38.3c-8.3,0-11.3,9.1-11.3,17.4s2.7,17.3,11.3,17.3,11.2-9.1,11.2-17.3S169.3,13.6,161,13.6m30.2,8.9V51.2h-4.5V22.6H182V19.8h4.7V15.2c0-5.7,3.4-9.9,10-9.9a8,8,0,0,1,1.1.1V8.3h-.5c-3.2,0-6,2.1-6,6.4v5.1h6.6v2.8l-6.7-.1Zm18.9,0V51.2h-4.5V22.6h-4.7V19.8h4.7V15.2c0-5.7,3.4-9.9,10-9.9a8,8,0,0,1,1.1.1V8.3h-.5c-3.2,0-6,2.1-6,6.4v5.1h6.6v2.8l-6.7-.1Zm14-8.8a2.82,2.82,0,0,1-2.9-2.8,2.9,2.9,0,0,1,5.8,0,2.76,2.76,0,0,1-2.9,2.8m-2.3,6h4.6V51.2h-4.6Zm24.3,32.2c-7.4,0-13.2-6.4-13.2-16.5,0-10.3,5.8-16.5,13.4-16.5a12.36,12.36,0,0,1,7.7,2.2l-1.2,2.8a8.92,8.92,0,0,0-5.5-1.7c-6.4,0-9.7,5.5-9.7,13,0,7.7,3.7,13.2,9.5,13.2a9.8,9.8,0,0,0,5.6-1.7l1.2,3c-1.3,1.2-4,2.2-7.8,2.2m15.3-14.6c.6,7.4,4.7,11.1,11.1,11.1a18.36,18.36,0,0,0,8.5-1.9l1.3,3.2a22.58,22.58,0,0,1-10.2,2.1c-8.8,0-15.1-5.3-15.1-16.6,0-10.8,5.8-16.4,13.7-16.4s12.9,4.9,12.9,15.4l-22.2,3.1ZM270.5,22c-5.1,0-9.4,4-9.3,12.8l17.9-2.5C279,25,275.5,22,270.5,22m42.2.5V51.2h-4.5V22.6h-4.7V19.8h4.7V15.2c0-5.7,3.4-9.9,10-9.9a8,8,0,0,1,1.1.1V8.3h-.5c-3.2,0-6,2.1-6,6.4v5.1h6.6v2.8Zm23.2,29.4c-9.3,0-13.5-7.2-13.5-16.5s4.2-16.5,13.5-16.5,13.5,7.2,13.5,16.5-4.2,16.5-13.5,16.5m0-29.8c-6.9,0-8.8,7-8.8,13.4s2.1,13.1,8.8,13.1c6.9,0,8.9-6.6,8.9-13.1s-2-13.4-8.9-13.4m33.3.6c-2.9-.8-7.1-.6-9.1.6V51.2h-4.6V21.1c3.3-1.4,6.6-2.2,12.5-2.2h2.4c0,.1-1.2,3.8-1.2,3.8ZM171.3,114.8,153.5,87.3c-1.3-2.1-2.3-4.1-2.3-4.1h-.1s.2,2.3.2,4.8v26.8h-5.8V74.7h6.6L169,100.5a46.13,46.13,0,0,1,2.4,4.1h.1s-.2-2.3-.2-4.7V74.6h5.9v40.1l-5.9.1Zm25,.8c-9.2,0-13.6-3.7-13.6-9.7,0-8.5,8.8-10.7,19.4-11.7V92.4c0-4.3-2.9-5.6-7.2-5.6a22.34,22.34,0,0,0-8.5,1.8l-1.6-3.8a30.2,30.2,0,0,1,11.3-2.3c7,0,12.3,2.9,12.3,10.9v19.9c-2.7,1.4-6.9,2.3-12.1,2.3m5.8-18.2c-7.8.8-13,2.3-13,8.3,0,4.2,3,6.1,7.7,6.1a12.33,12.33,0,0,0,5.3-1.1Zm24.5,18.1c-6.6,0-9.1-4.3-9.1-8.5V87.5h-4.4V83.4h4.4v-7l6.7-1.9v8.9h6.1v4.1h-6.1v19.2c0,2.5,1.4,4.4,4.3,4.4a5.66,5.66,0,0,0,1.8-.3v4.1a11.47,11.47,0,0,1-3.7.6M239,77.9a3.52,3.52,0,1,1,3.9-3.5,3.71,3.71,0,0,1-3.9,3.5m-3.4,5.5h6.8v31.4h-6.8Zm26.9,32.2c-9.6,0-14.4-7.1-14.4-16.5s4.8-16.6,14.4-16.6,14.3,7.2,14.3,16.6-4.7,16.5-14.3,16.5m0-28.7c-5.8,0-7.5,6.1-7.5,12.2s1.8,11.9,7.5,11.9,7.5-5.8,7.5-11.9-1.7-12.2-7.5-12.2m39.3,27.9V92.3c0-4-3.4-5.5-7.3-5.5a16,16,0,0,0-5.4.9v27.1h-6.7v-30a32.8,32.8,0,0,1,12.5-2.3c8.2,0,13.7,2.8,13.7,9.7v22.6Zm25.7.8c-9.2,0-13.6-3.7-13.6-9.7,0-8.5,8.9-10.7,19.4-11.7V92.4c0-4.3-2.9-5.6-7.2-5.6a22.34,22.34,0,0,0-8.5,1.8L316,84.8a30.2,30.2,0,0,1,11.3-2.3c7,0,12.3,2.9,12.3,10.9v19.9c-2.7,1.4-6.9,2.3-12.1,2.3m5.8-18.2c-7.8.8-13,2.3-13,8.3,0,4.2,3,6.1,7.7,6.1a12.33,12.33,0,0,0,5.3-1.1Zm13.2,17.4V69h6.7v45.8Zm38.6.8a23.94,23.94,0,0,1-10.9-2.3l1.9-4.9a17,17,0,0,0,7.7,1.9c4.7,0,8-2.7,8-6.7,0-8.8-16.7-5.4-16.7-17.9,0-6.4,5.2-11.9,13.3-11.9a20.22,20.22,0,0,1,9.7,2.3l-1.7,4.4a14.57,14.57,0,0,0-7-1.9c-4.3,0-7.2,2.6-7.2,6.4,0,8.6,17.1,4.9,17.1,18.2-.1,7.1-6,12.4-14.2,12.4m31.1-.1c-6.6,0-9.1-4.3-9.1-8.5V87.5h-4.4V83.4h4.4v-7l6.7-1.9v8.9h6.1v4.1h-6.1v19.2a4.07,4.07,0,0,0,4.3,4.4,5.66,5.66,0,0,0,1.8-.3v4.1a12.06,12.06,0,0,1-3.7.6m20.9.1c-9.2,0-13.6-3.7-13.6-9.7,0-8.5,8.9-10.7,19.4-11.7V92.4c0-4.3-2.9-5.6-7.2-5.6a22.34,22.34,0,0,0-8.5,1.8l-1.6-3.8a30.2,30.2,0,0,1,11.3-2.3c7,0,12.3,2.9,12.3,10.9v19.9c-2.6,1.4-6.9,2.3-12.1,2.3m5.8-18.2c-7.8.8-13,2.3-13,8.3,0,4.2,3,6.1,7.7,6.1a12.33,12.33,0,0,0,5.3-1.1Zm24.6,18.1c-6.6,0-9.1-4.3-9.1-8.5V87.5H454V83.4h4.4v-7l6.7-1.9v8.9h6.1v4.1h-6.1v19.2a4.07,4.07,0,0,0,4.3,4.4,5.66,5.66,0,0,0,1.8-.3v4.1a12.69,12.69,0,0,1-3.7.6m12.3-37.6a3.52,3.52,0,1,1,3.9-3.5,3.65,3.65,0,0,1-3.9,3.5m-3.4,5.5h6.8v31.4h-6.8Zm21.4,32.2a19.46,19.46,0,0,1-9.5-2.3l1.8-4.3a13.21,13.21,0,0,0,6.9,1.9c3.4,0,6.2-2.2,6.2-4.9,0-7.5-13.8-4-13.8-14.2,0-4.7,4.2-9.2,11-9.2a16.21,16.21,0,0,1,8.8,2.3l-1.8,3.9a10.31,10.31,0,0,0-5.7-1.8c-3.5,0-5.6,2.1-5.6,4.5,0,7,14,3.9,14,14.4,0,4.9-4.7,9.7-12.3,9.7m29.4-.1c-6.6,0-9.1-4.3-9.1-8.5V87.5h-4.4V83.4h4.4v-7l6.7-1.9v8.9h6.1v4.1h-6.1v19.2c0,2.5,1.4,4.4,4.3,4.4a5.66,5.66,0,0,0,1.8-.3v4.1a12.06,12.06,0,0,1-3.7.6m12.3-37.6a3.52,3.52,0,1,1,3.9-3.5c.1,2-1.7,3.5-3.9,3.5m-3.3,5.5H543v31.4h-6.8Zm26.2,32.2c-7.7,0-13.6-6.3-13.6-16.6s6.1-16.5,13.7-16.5c3.9,0,6.6,1.1,8,2.3L569,88.6a8.61,8.61,0,0,0-4.9-1.5c-5.5,0-8.3,4.7-8.3,11.8s3.3,11.9,8.2,11.9a8.39,8.39,0,0,0,4.9-1.6l1.7,4.1c-1.5,1.2-4.2,2.3-8.2,2.3m20.6,0a19.46,19.46,0,0,1-9.5-2.3l1.8-4.3a13.21,13.21,0,0,0,6.9,1.9c3.4,0,6.2-2.2,6.2-4.9,0-7.5-13.8-4-13.8-14.2,0-4.7,4.2-9.2,11-9.2a16.85,16.85,0,0,1,8.9,2.3l-1.8,3.9A10.31,10.31,0,0,0,587,87c-3.5,0-5.6,2.1-5.6,4.5,0,7,14,3.9,14,14.4-.1,4.9-4.9,9.7-12.4,9.7"
142
+ ></path>
143
+ </g>
144
+ </svg>
145
+ {/if}
146
+
147
+ <style>
148
+ svg {
149
+ overflow: visible;
150
+ }</style>
@@ -0,0 +1,91 @@
1
+ <script>
2
+ import { setContext, getContext } from "svelte";
3
+ import { writable } from "svelte/store";
4
+ import themes from "./themes.js";
5
+
6
+ /**
7
+ * Sets the body background to match this theme (only use this at the top level)
8
+ * @type {boolean}
9
+ */
10
+ export let global = false;
11
+
12
+ let themeParent = global ? null : getContext("theme");
13
+
14
+ /**
15
+ * Sets a predefined theme
16
+ * @type {"light"|"dark"|"lightblue"}
17
+ */
18
+ export let theme = null;
19
+ /**
20
+ * Define additional props to override the base theme
21
+ * @type {object}
22
+ */
23
+ export let overrides = null;
24
+ /**
25
+ * Overrides the base theme background (accepts any valid CSS background value)
26
+ * @type {string}
27
+ */
28
+ export let background = overrides?.background || themes[theme]?.background || null;
29
+
30
+ const _theme = writable(theme || $themeParent);
31
+ $: _theme.set(theme || $themeParent);
32
+
33
+ setContext("theme", _theme);
34
+
35
+ function makeStyle(theme, overrides, background) {
36
+ if (theme && theme !== $themeParent) {
37
+ const _theme = themes[theme] || themes.light;
38
+ if (overrides) Object.keys(overrides).forEach((key) => (_theme[key] = overrides[key]));
39
+ if (background) _theme.background = background;
40
+ return Object.keys(_theme)
41
+ .map((key) => `--${key}: ${_theme[key]};`)
42
+ .join("");
43
+ } else if (background) {
44
+ return `--background:${background}`;
45
+ }
46
+ return null;
47
+ }
48
+
49
+ $: style = makeStyle($_theme, overrides, background);
50
+ </script>
51
+
52
+ <svelte:head>
53
+ {#if global && background}
54
+ {@html "<st" + `yle>body{background:${background}}</st` + "yle>"}
55
+ {/if}
56
+ </svelte:head>
57
+
58
+ {#if style}
59
+ <div class="theme-wrapper" style="{style}">
60
+ <slot />
61
+ </div>
62
+ {:else}
63
+ <slot />
64
+ {/if}
65
+
66
+ <style>
67
+ .theme-wrapper {
68
+ color: var(--text, #222);
69
+ background: var(--background, none);
70
+ --ons-color-text: var(--text, --ons-color-text);
71
+ --ons-color-text-light: var(--muted, --ons-color-text-light);
72
+ --ons-color-borders: var(--muted, --ons-color-borders);
73
+ }
74
+ .theme-wrapper :global(a) {
75
+ color: var(--link, --ons-color-text-link);
76
+ }
77
+ .theme-wrapper :global(a:hover) {
78
+ -webkit-text-decoration: underline solid var(--link-hover, --ons-color-text-link-hover) 2px;
79
+ text-decoration: underline solid var(--link-hover, --ons-color-text-link-hover) 2px;
80
+ }
81
+ .theme-wrapper :global(a:hover) {
82
+ color: var(--link-hover, --ons-color-text-link-hover);
83
+ }
84
+ .theme-wrapper :global(.form-label-bold) {
85
+ color: var(--text, #222);
86
+ }
87
+ .theme-wrapper :global(.form-control) {
88
+ background: none;
89
+ border-color: var(--text, #222);
90
+ color: var(--text, #222);
91
+ }</style>
@@ -0,0 +1,24 @@
1
+ export default {
2
+ light: {
3
+ text: "#222",
4
+ muted: "#777",
5
+ hinted: "#e2e2e3",
6
+ pale: "#f0f0f0",
7
+ background: "#fff",
8
+ },
9
+ dark: {
10
+ text: "#fff",
11
+ muted: "#bbb",
12
+ hinted: "#444",
13
+ pale: "#333",
14
+ background: "#222",
15
+ link: "#f5f5f6",
16
+ "link-hover": "#f5f5f6",
17
+ },
18
+ lightblue: {
19
+ text: "#206095",
20
+ muted: "#707070",
21
+ pale: "#f0f0f0",
22
+ background: "rgb(233, 239, 244)",
23
+ },
24
+ };
@@ -0,0 +1,48 @@
1
+ <script>
2
+ /**
3
+ * A title for the element
4
+ * @type {string}
5
+ */
6
+ export let title = "Title";
7
+ /**
8
+ * Option for element to be open/expanded by default
9
+ * @type {boolean}
10
+ */
11
+ export let open = false;
12
+ </script>
13
+
14
+ <details class="ons-collapsible ons-js-collapsible" open="{open}">
15
+ <summary
16
+ class="ons-collapsible__heading ons-js-collapsible-heading"
17
+ data-ga-action="{open ? 'Close panel' : 'Open panel'}"
18
+ >
19
+ <h3 class="ons-collapsible__title">{title}</h3>
20
+ <span class="ons-collapsible__icon">
21
+ <svg
22
+ class="ons-svg-icon"
23
+ viewBox="0 0 8 13"
24
+ xmlns="http://www.w3.org/2000/svg"
25
+ focusable="false"
26
+ >
27
+ <path
28
+ d="M5.74,14.28l-.57-.56a.5.5,0,0,1,0-.71h0l5-5-5-5a.5.5,0,0,1,0-.71h0l.57-.56a.5.5,0,0,1,.71,0h0l5.93,5.93a.5.5,0,0,1,0,.7L6.45,14.28a.5.5,0,0,1-.71,0Z"
29
+ transform="translate(-5.02 -1.59)"></path>
30
+ </svg>
31
+ </span>
32
+ </summary>
33
+ <div class="ons-collapsible__content ons-js-collapsible-content">
34
+ <slot />
35
+ </div>
36
+ </details>
37
+
38
+ <style>
39
+ .ons-collapsible__heading {
40
+ color: var(--link, --ons-color-text-link);
41
+ }
42
+ .ons-collapsible__heading:hover {
43
+ color: var(--link-hover, --ons-color-text-link-hover);
44
+ }
45
+ .ons-svg-icon {
46
+ color: var(--link, --ons-color-text-link);
47
+ fill: var(--link, --ons-color-text-link);
48
+ }</style>
@@ -0,0 +1,87 @@
1
+ <script>
2
+ import { createEventDispatcher } from "svelte";
3
+ import Icon from "./Icon.svelte";
4
+
5
+ const dispatch = createEventDispatcher();
6
+
7
+ /**
8
+ * Type of button
9
+ * @type {"button"|"sumbit"|"reset"}
10
+ */
11
+ export let type = "button";
12
+ /**
13
+ * Style variant of button
14
+ * @type {"primary"|"secondary"|"ghost"}
15
+ */
16
+ export let variant = "primary";
17
+ /**
18
+ * Href of button (renders button as a link)
19
+ * @type {string}
20
+ */
21
+ export let href = "";
22
+ /**
23
+ * Make button smaller
24
+ * @type {boolean}
25
+ */
26
+ export let small = false;
27
+ /**
28
+ * Icon on button, eg. "arrow", "search"
29
+ * @type {string}
30
+ */
31
+ export let icon = "";
32
+ /**
33
+ * Position of icon
34
+ * @type {"before"|"after"}
35
+ */
36
+ export let iconPosition = "before";
37
+ /**
38
+ * Show button as disabled
39
+ * @type {boolean}
40
+ */
41
+ export let disabled = false;
42
+ </script>
43
+
44
+ {#if href}
45
+ <a
46
+ href="{!disabled ? href : null}"
47
+ role="button"
48
+ class="ons-btn ons-btn--link ons-js-submit-btn"
49
+ class:ons-btn--small="{small}"
50
+ class:ons-btn--secondary="{variant === 'secondary'}"
51
+ class:ons-btn--ghost="{variant === 'ghost'}"
52
+ class:ons-btn--disabled="{disabled}"
53
+ disabled="{disabled}"
54
+ on:click="{(e) => dispatch('click', e)}"
55
+ >
56
+ <span class="ons-btn__inner">
57
+ {#if icon && iconPosition === "before"}
58
+ <Icon type="{icon}" marginRight />
59
+ {/if}
60
+ <span class="ons-btn__text"><slot /></span>
61
+ {#if icon && iconPosition === "after"}
62
+ <Icon type="{icon}" marginLeft />
63
+ {/if}
64
+ </span>
65
+ </a>
66
+ {:else}
67
+ <button
68
+ type="{type}"
69
+ class="ons-btn"
70
+ class:ons-btn--small="{small}"
71
+ class:ons-btn--secondary="{variant === 'secondary'}"
72
+ class:ons-btn--ghost="{variant === 'ghost'}"
73
+ class:ons-btn--disabled="{disabled}"
74
+ disabled="{disabled}"
75
+ on:click="{(e) => dispatch('click', e)}"
76
+ >
77
+ <span class="ons-btn__inner">
78
+ {#if icon && iconPosition === "before"}
79
+ <Icon type="{icon}" marginRight />
80
+ {/if}
81
+ <span class="ons-btn__text"><slot /></span>
82
+ {#if icon && iconPosition === "after"}
83
+ <Icon type="{icon}" marginLeft />
84
+ {/if}
85
+ </span>
86
+ </button>
87
+ {/if}
@@ -0,0 +1,50 @@
1
+ <script>
2
+ export let type = "arrow";
3
+ export let marginLeft = false;
4
+ export let marginRight = false;
5
+
6
+ const paths = {
7
+ arrow: {
8
+ d: "m10 .2-.9.9c-.1.1-.1.4 0 .5l4 4H.6c-.2 0-.4.2-.4.4v1.2c0 .2.2.4.4.4h12.5l-3.9 3.7c-.2.2-.2.4 0 .6l.8.9c.2.2.4.2.6 0L16.8 7c.2-.2.2-.4 0-.6L10.7.3c-.3-.2-.5-.2-.7-.1z",
9
+ viewBox: "0 0 17 13",
10
+ },
11
+ externalLink: {
12
+ d: "M13.5,9H13a.5.5,0,0,0-.5.5v3h-9v-9h3A.5.5,0,0,0,7,3V2.5A.5.5,0,0,0,6.5,2h-4a.5.5,0,0,0-.5.5v11a.5.5,0,0,0,.5.5h11a.5.5,0,0,0,.5-.5v-4A.5.5,0,0,0,13.5,9Z M8.83,7.88a.51.51,0,0,0,.71,0l2.31-2.32,1.28,1.28A.51.51,0,0,0,14,6.49v-4a.52.52,0,0,0-.5-.5h-4A.51.51,0,0,0,9,2.52a.58.58,0,0,0,.14.33l1.28,1.28L8.12,6.46a.51.51,0,0,0,0,.71Z",
13
+ viewBox: "2 2 12 12",
14
+ },
15
+ signout: {
16
+ d: "M13.85,7.65l-2.5-2.5a.5.5,0,0,0-.71,0,.48.48,0,0,0-.15.36V7h-3a.5.5,0,0,0-.5.5v1a.5.5,0,0,0,.5.5h3v1.5A.49.49,0,0,0,11,11a.48.48,0,0,0,.34-.14l2.51-2.5a.49.49,0,0,0,0-.68Z M8.5,14h-6a.5.5,0,0,1-.5-.5V2.5A.5.5,0,0,1,2.5,2h6a.5.5,0,0,1,.5.5V3a.5.5,0,0,1-.5.5h-5v9h5A.5.5,0,0,1,9,13v.5A.5.5,0,0,1,8.5,14Z",
17
+ viewBox: "0 0 12 12",
18
+ },
19
+ print: {
20
+ d: "M17 4H3C1.3 4 0 5.2 0 6.8v5.5h4V16h12v-3.7h4V6.8C20 5.2 18.7 4 17 4zm-3 10H6V9h8v5zm3-6a1 1 0 1 1 0-2 1 1 0 0 1 0 2zm-1-8H4v3h12V0z",
21
+ viewBox: "0 0 20 16",
22
+ },
23
+ download: {
24
+ d: "M5.6 9a.48.48 0 0 0 .7 0l3-3.2a.48.48 0 0 0 0-.7C9.3 5 9.2 5 9 5H7.5V.5A.47.47 0 0 0 7 0H5a.47.47 0 0 0-.5.5V5H3a.47.47 0 0 0-.5.5.37.37 0 0 0 .1.3Z M11.5 9H11a.47.47 0 0 0-.5.5v1h-9v-1A.47.47 0 0 0 1 9H.5a.47.47 0 0 0-.5.5v2a.47.47 0 0 0 .5.5h11a.47.47 0 0 0 .5-.5v-2a.47.47 0 0 0-.5-.5Z",
25
+ viewBox: "0 0 12 12",
26
+ },
27
+ tick: {
28
+ d: "M14.35,3.9l-.71-.71a.5.5,0,0,0-.71,0h0L5.79,10.34,3.07,7.61a.51.51,0,0,0-.71,0l-.71.71a.51.51,0,0,0,0,.71l3.78,3.78a.5.5,0,0,0,.71,0h0L14.35,4.6A.5.5,0,0,0,14.35,3.9Z",
29
+ viewBox: "1.5 3 13 10",
30
+ },
31
+ search: {
32
+ d: "M11.86 10.23 8.62 6.99a4.63 4.63 0 1 0-6.34 1.64 4.55 4.55 0 0 0 2.36.64 4.65 4.65 0 0 0 2.33-.65l3.24 3.23a.46.46 0 0 0 .65 0l1-1a.48.48 0 0 0 0-.62Zm-5-3.32a3.28 3.28 0 0 1-2.31.93 3.22 3.22 0 1 1 2.35-.93Z",
33
+ viewBox: "0 0 12 12",
34
+ },
35
+ };
36
+ </script>
37
+
38
+ {#if paths[type]}
39
+ <svg
40
+ class="ons-svg-icon"
41
+ class:ons-u-ml-xs="{marginLeft}"
42
+ class:ons-u-mr-xs="{marginRight}"
43
+ viewBox="{paths[type].viewBox}"
44
+ xmlns="http://www.w3.org/2000/svg"
45
+ focusable="false"
46
+ fill="currentColor"
47
+ >
48
+ <path d="{paths[type].d}"></path>
49
+ </svg>
50
+ {/if}
@@ -0,0 +1,62 @@
1
+ <script>
2
+ import { createEventDispatcher } from "svelte";
3
+
4
+ const dispatch = createEventDispatcher();
5
+
6
+ /**
7
+ * Unique id for the &lt;select&gt; element
8
+ * @type {string}
9
+ */
10
+ export let id = "";
11
+ /**
12
+ * A label to describe the &lt;select&gt; element (expected for accessibility)
13
+ * @type {string}
14
+ */
15
+ export let label = "";
16
+ /**
17
+ * Visually hide the label
18
+ * @type {boolean}
19
+ */
20
+ export let hideLabel = false;
21
+ /**
22
+ * An optional placeholder text
23
+ * @type {string}
24
+ */
25
+ export let placeholder = "Select an option";
26
+ /**
27
+ * A prop to bind to for the selected value
28
+ * @type {object}
29
+ */
30
+ export let value = null;
31
+ /**
32
+ * An array of options, formatted {id, label}
33
+ * @type {array}
34
+ */
35
+ export let options = [];
36
+ </script>
37
+
38
+ <div class="ons-field">
39
+ {#if label}
40
+ <label class="ons-label" for="{id}" class:ons-u-vh="{hideLabel}">{label}</label>
41
+ {/if}
42
+ <select
43
+ id="{id}"
44
+ name="{id}"
45
+ class="ons-input ons-input--select"
46
+ bind:value="{value}"
47
+ on:change="{(e) => dispatch('change', e)}"
48
+ >
49
+ {#if placeholder}
50
+ <option value="{null}" selected disabled>{placeholder}</option>
51
+ {/if}
52
+ {#each options as option}
53
+ <option value="{option}">{option.label}</option>
54
+ {/each}
55
+ </select>
56
+ </div>
57
+
58
+ <style>
59
+ .ons-input--select {
60
+ border-color: currentColor;
61
+ background-color: transparent;
62
+ }</style>
@@ -0,0 +1,44 @@
1
+ <script>
2
+ import parse from "parse-color";
3
+
4
+ /**
5
+ * Any valid CSS colour
6
+ * @type {string}
7
+ */
8
+ export let color = "lightgrey";
9
+ /**
10
+ * Don't break text across lines
11
+ * @type {boolean}
12
+ */
13
+ export let nowrap = true;
14
+
15
+ function textColor(color) {
16
+ const rgb = parse(color).rgb;
17
+ if (rgb) {
18
+ const brightness = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;
19
+ return brightness > 125 ? "black" : "white";
20
+ }
21
+ return "black";
22
+ }
23
+
24
+ $: text = textColor(color);
25
+ </script>
26
+
27
+ <mark
28
+ class="em"
29
+ class:nowrap="{nowrap}"
30
+ style:background-color="{color}"
31
+ style:color="{text}"
32
+ role="presentation"
33
+ >
34
+ <slot />
35
+ </mark>
36
+
37
+ <style>
38
+ .em {
39
+ padding: 1px 4px 1px 4px;
40
+ font-weight: bold;
41
+ }
42
+ .nowrap {
43
+ white-space: nowrap;
44
+ }</style>