@onsvisual/svelte-components 1.0.47 → 1.0.48

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 (222) hide show
  1. package/README.md +24 -24
  2. package/dist/css/main.css +2 -513
  3. package/dist/datavis/BarChart/BarChart.stories.svelte +84 -84
  4. package/dist/datavis/BarChart/docs/component.md +19 -19
  5. package/dist/datavis/Chart/Chart.stories.svelte +128 -128
  6. package/dist/datavis/Chart/docs/component.md +31 -31
  7. package/dist/datavis/Chart/docs/example.md +28 -28
  8. package/dist/datavis/ColumnChart/ColumnChart.stories.svelte +84 -84
  9. package/dist/datavis/ColumnChart/docs/component.md +19 -19
  10. package/dist/datavis/DataCard/DataCard.stories.svelte +45 -45
  11. package/dist/datavis/DataCard/DataCard.svelte +70 -70
  12. package/dist/datavis/DataCard/Sparkline.svelte +117 -117
  13. package/dist/datavis/DataCard/docs/component.md +20 -20
  14. package/dist/datavis/DataCard/docs/example.md +25 -25
  15. package/dist/datavis/DotPlotChart/DotPlotChart.stories.svelte +40 -40
  16. package/dist/datavis/DotPlotChart/docs/component.md +19 -19
  17. package/dist/datavis/LineChart/LineChart.stories.svelte +64 -64
  18. package/dist/datavis/LineChart/docs/component.md +31 -31
  19. package/dist/datavis/ScatterChart/ScatterChart.stories.svelte +55 -55
  20. package/dist/datavis/ScatterChart/docs/component.md +53 -53
  21. package/dist/datavis/Table/Table.stories.svelte +48 -48
  22. package/dist/datavis/Table/Table.svelte +161 -161
  23. package/dist/datavis/Table/docs/component.md +20 -20
  24. package/dist/datavis/demo-data/data-scatter.js +40 -40
  25. package/dist/datavis/demo-data/data.js +18 -18
  26. package/dist/datavis/intro.mdx +21 -21
  27. package/dist/decorators/Blockquote/Blockquote.stories.svelte +25 -25
  28. package/dist/decorators/Blockquote/Blockquote.svelte +27 -27
  29. package/dist/decorators/Blockquote/docs/component.md +10 -10
  30. package/dist/decorators/Divider/Divider.stories.svelte +29 -29
  31. package/dist/decorators/Divider/Divider.svelte +52 -52
  32. package/dist/decorators/Divider/docs/component.md +12 -12
  33. package/dist/decorators/Em/Em.stories.svelte +30 -30
  34. package/dist/decorators/Em/Em.svelte +58 -58
  35. package/dist/decorators/Em/docs/component.md +12 -12
  36. package/dist/decorators/Icon/Icon.stories.svelte +27 -27
  37. package/dist/decorators/Icon/Icon.svelte +101 -101
  38. package/dist/decorators/Icon/docs/component.md +10 -10
  39. package/dist/decorators/Indent/Indent.stories.svelte +22 -22
  40. package/dist/decorators/Indent/Indent.svelte +3 -3
  41. package/dist/decorators/Indent/docs/component.md +10 -10
  42. package/dist/index.js +86 -86
  43. package/dist/inputs/Button/Button.stories.svelte +70 -70
  44. package/dist/inputs/Button/Button.svelte +152 -152
  45. package/dist/inputs/Button/docs/component.md +17 -17
  46. package/dist/inputs/ButtonGroup/ButtonGroup.stories.svelte +40 -40
  47. package/dist/inputs/ButtonGroup/ButtonGroup.svelte +57 -57
  48. package/dist/inputs/ButtonGroup/ButtonGroupItem.svelte +101 -101
  49. package/dist/inputs/ButtonGroup/docs/component.md +23 -23
  50. package/dist/inputs/Checkbox/Checkbox.stories.svelte +34 -34
  51. package/dist/inputs/Checkbox/Checkbox.svelte +180 -180
  52. package/dist/inputs/Checkbox/docs/component.md +14 -14
  53. package/dist/inputs/Checkboxes/Checkboxes.stories.svelte +34 -34
  54. package/dist/inputs/Checkboxes/Checkboxes.svelte +62 -62
  55. package/dist/inputs/Checkboxes/docs/component.md +20 -20
  56. package/dist/inputs/Checkboxes/docs/example.md +16 -16
  57. package/dist/inputs/Dropdown/Dropdown.stories.svelte +54 -54
  58. package/dist/inputs/Dropdown/Dropdown.svelte +66 -66
  59. package/dist/inputs/Dropdown/docs/component.md +22 -22
  60. package/dist/inputs/ErrorPanel/ErrorPanel.stories.svelte +25 -25
  61. package/dist/inputs/ErrorPanel/ErrorPanel.svelte +24 -24
  62. package/dist/inputs/ErrorPanel/docs/component.md +14 -14
  63. package/dist/inputs/ErrorSummary/ErrorSummary.stories.svelte +34 -34
  64. package/dist/inputs/ErrorSummary/ErrorSummary.svelte +47 -47
  65. package/dist/inputs/ErrorSummary/docs/component.md +17 -17
  66. package/dist/inputs/ErrorSummary/docs/example.md +12 -12
  67. package/dist/inputs/Input/Input.stories.svelte +73 -73
  68. package/dist/inputs/Input/Input.svelte +151 -151
  69. package/dist/inputs/Input/docs/component.md +16 -16
  70. package/dist/inputs/Radios/Radio.svelte +90 -90
  71. package/dist/inputs/Radios/Radios.stories.svelte +51 -51
  72. package/dist/inputs/Radios/Radios.svelte +62 -62
  73. package/dist/inputs/Radios/docs/component.md +24 -24
  74. package/dist/inputs/Radios/docs/example.md +21 -21
  75. package/dist/inputs/Select/Select.stories.svelte +63 -63
  76. package/dist/inputs/Select/Select.svelte +326 -326
  77. package/dist/inputs/Select/docs/component.md +27 -27
  78. package/dist/inputs/Textarea/Textarea.stories.svelte +40 -40
  79. package/dist/inputs/Textarea/Textarea.svelte +113 -113
  80. package/dist/inputs/Textarea/docs/component.md +16 -16
  81. package/dist/inputs/Toolbar/HelpModal.svelte +234 -234
  82. package/dist/inputs/Toolbar/ToolControl.svelte +23 -23
  83. package/dist/inputs/Toolbar/ToolControls.svelte +9 -9
  84. package/dist/inputs/Toolbar/Toolbar.stories.svelte +148 -148
  85. package/dist/inputs/Toolbar/Toolbar.svelte +70 -70
  86. package/dist/inputs/Toolbar/ToolbarButton.svelte +184 -184
  87. package/dist/inputs/Toolbar/ToolbarDivider.svelte +29 -29
  88. package/dist/inputs/Toolbar/ToolbarIcon.svelte +106 -106
  89. package/dist/inputs/Toolbar/ToolbarsContainer.svelte +69 -69
  90. package/dist/inputs/Toolbar/docs/component.md +101 -101
  91. package/dist/intro.mdx +66 -66
  92. package/dist/js/menuOptions.js +14 -14
  93. package/dist/js/utils.js +133 -133
  94. package/dist/js/withParams.js +43 -43
  95. package/dist/layout/Accordion/Accordion.stories.svelte +30 -30
  96. package/dist/layout/Accordion/Accordion.svelte +55 -55
  97. package/dist/layout/Accordion/AccordionItem.svelte +51 -51
  98. package/dist/layout/Accordion/accordion.js +64 -64
  99. package/dist/layout/Accordion/details.js +83 -83
  100. package/dist/layout/Accordion/docs/component.md +19 -19
  101. package/dist/layout/AnalyticsBanner/AnalyticsBanner.stories.svelte +16 -16
  102. package/dist/layout/AnalyticsBanner/AnalyticsBanner.svelte +314 -314
  103. package/dist/layout/AnalyticsBanner/docs/component.md +44 -44
  104. package/dist/layout/BackLink/BackLink.stories.svelte +16 -16
  105. package/dist/layout/BackLink/BackLink.svelte +30 -30
  106. package/dist/layout/BackLink/docs/component.md +12 -12
  107. package/dist/layout/Breadcrumb/Breadcrumb.stories.svelte +31 -31
  108. package/dist/layout/Breadcrumb/Breadcrumb.svelte +69 -69
  109. package/dist/layout/Breadcrumb/docs/component.md +15 -15
  110. package/dist/layout/Card/Card.stories.svelte +39 -39
  111. package/dist/layout/Card/Card.svelte +127 -127
  112. package/dist/layout/Card/docs/component.md +14 -14
  113. package/dist/layout/Card/docs/eg-images.md +27 -27
  114. package/dist/layout/Card/docs/eg-links.md +12 -12
  115. package/dist/layout/Card/docs/eg-spans.md +12 -12
  116. package/dist/layout/Contents/Contents.stories.svelte +27 -27
  117. package/dist/layout/Contents/Contents.svelte +51 -51
  118. package/dist/layout/Contents/docs/component.md +18 -18
  119. package/dist/layout/DescriptionList/DescriptionList.stories.svelte +22 -22
  120. package/dist/layout/DescriptionList/DescriptionList.svelte +59 -59
  121. package/dist/layout/DescriptionList/docs/component.md +18 -18
  122. package/dist/layout/Details/Details.stories.svelte +32 -32
  123. package/dist/layout/Details/Details.svelte +75 -75
  124. package/dist/layout/Details/docs/component.md +14 -14
  125. package/dist/layout/DocumentList/Document.svelte +103 -103
  126. package/dist/layout/DocumentList/DocumentList.stories.svelte +88 -88
  127. package/dist/layout/DocumentList/DocumentList.svelte +33 -33
  128. package/dist/layout/DocumentList/docs/component.md +28 -28
  129. package/dist/layout/DocumentList/docs/example.md +23 -23
  130. package/dist/layout/ErrorPage/ErrorPage.stories.svelte +18 -18
  131. package/dist/layout/ErrorPage/ErrorPage.svelte +48 -48
  132. package/dist/layout/ErrorPage/docs/component.md +13 -13
  133. package/dist/layout/Footer/Footer.stories.svelte +24 -24
  134. package/dist/layout/Footer/Footer.svelte +366 -366
  135. package/dist/layout/Footer/docs/component.md +10 -10
  136. package/dist/layout/Grid/Grid.stories.svelte +50 -50
  137. package/dist/layout/Grid/Grid.svelte +117 -117
  138. package/dist/layout/Grid/GridCell.svelte +65 -65
  139. package/dist/layout/Grid/docs/component.md +14 -14
  140. package/dist/layout/Header/Header.stories.svelte +26 -26
  141. package/dist/layout/Header/Header.svelte +875 -875
  142. package/dist/layout/Header/docs/component.md +11 -11
  143. package/dist/layout/Hero/Hero.stories.svelte +79 -79
  144. package/dist/layout/Hero/Hero.svelte +364 -364
  145. package/dist/layout/Hero/docs/component.md +14 -14
  146. package/dist/layout/Highlight/Highlight.stories.svelte +29 -29
  147. package/dist/layout/Highlight/Highlight.svelte +77 -77
  148. package/dist/layout/Highlight/docs/component.md +12 -12
  149. package/dist/layout/Image/Image.stories.svelte +23 -23
  150. package/dist/layout/Image/Image.svelte +29 -29
  151. package/dist/layout/Image/docs/component.md +15 -15
  152. package/dist/layout/List/Li.svelte +3 -3
  153. package/dist/layout/List/List.stories.svelte +40 -40
  154. package/dist/layout/List/List.svelte +46 -46
  155. package/dist/layout/List/docs/component.md +14 -14
  156. package/dist/layout/List/docs/example.md +12 -12
  157. package/dist/layout/NavSections/NavSection.svelte +90 -90
  158. package/dist/layout/NavSections/NavSections.stories.svelte +51 -51
  159. package/dist/layout/NavSections/NavSections.svelte +160 -160
  160. package/dist/layout/NavSections/docs/component.md +25 -25
  161. package/dist/layout/Notice/Notice.stories.svelte +61 -61
  162. package/dist/layout/Notice/Notice.svelte +56 -56
  163. package/dist/layout/Notice/docs/component.md +14 -14
  164. package/dist/layout/PhaseBanner/PhaseBanner.stories.svelte +24 -24
  165. package/dist/layout/PhaseBanner/PhaseBanner.svelte +66 -66
  166. package/dist/layout/PhaseBanner/docs/component.md +14 -14
  167. package/dist/layout/RelatedContent/RelatedContent.stories.svelte +36 -36
  168. package/dist/layout/RelatedContent/RelatedContent.svelte +54 -54
  169. package/dist/layout/RelatedContent/docs/component.md +16 -16
  170. package/dist/layout/Scroller/Scroller.stories.svelte +60 -60
  171. package/dist/layout/Scroller/Scroller.svelte +368 -368
  172. package/dist/layout/Scroller/ScrollerSection.svelte +70 -70
  173. package/dist/layout/Scroller/docs/component.md +39 -39
  174. package/dist/layout/Section/Section.stories.svelte +33 -33
  175. package/dist/layout/Section/Section.svelte +60 -60
  176. package/dist/layout/Section/docs/component.md +12 -12
  177. package/dist/layout/ShareButtons/ShareButtons.stories.svelte +20 -20
  178. package/dist/layout/ShareButtons/ShareButtons.svelte +131 -131
  179. package/dist/layout/ShareButtons/docs/component.md +14 -14
  180. package/dist/layout/SkipLink/SkipLink.stories.svelte +16 -16
  181. package/dist/layout/SkipLink/SkipLink.svelte +9 -9
  182. package/dist/layout/SkipLink/docs/component.md +11 -11
  183. package/dist/layout/Summary/Summary.stories.svelte +21 -21
  184. package/dist/layout/Summary/Summary.svelte +60 -60
  185. package/dist/layout/Summary/docs/component.md +17 -17
  186. package/dist/layout/Tabs/Tab.svelte +53 -53
  187. package/dist/layout/Tabs/Tabs.stories.svelte +29 -29
  188. package/dist/layout/Tabs/Tabs.svelte +89 -89
  189. package/dist/layout/Tabs/docs/component.md +16 -16
  190. package/dist/layout/Tabs/tabs.js +302 -302
  191. package/dist/layout/Timeline/Timeline.stories.svelte +44 -44
  192. package/dist/layout/Timeline/Timeline.svelte +17 -17
  193. package/dist/layout/Timeline/TimelineItem.svelte +14 -14
  194. package/dist/layout/Timeline/docs/component.md +27 -27
  195. package/dist/layout/Timeline/docs/example.md +20 -20
  196. package/dist/templates/EmbedArticle/EmbedArticle.stories.svelte +72 -72
  197. package/dist/templates/EmbedArticle/docs/component.md +56 -56
  198. package/dist/templates/FeatureArticle/FeatureArticle.stories.svelte +150 -150
  199. package/dist/templates/FeatureArticle/docs/component.md +125 -125
  200. package/dist/templates/StandardArticle/StandardArticle.stories.svelte +86 -86
  201. package/dist/templates/StandardArticle/docs/component.md +76 -76
  202. package/dist/templates/intro.mdx +18 -18
  203. package/dist/wrappers/Container/Container.stories.svelte +38 -38
  204. package/dist/wrappers/Container/Container.svelte +77 -77
  205. package/dist/wrappers/Container/docs/component.md +12 -12
  206. package/dist/wrappers/Embed/Embed.stories.svelte +24 -24
  207. package/dist/wrappers/Embed/Embed.svelte +44 -44
  208. package/dist/wrappers/Embed/docs/component.md +15 -15
  209. package/dist/wrappers/LazyLoad/LazyLoad.stories.svelte +37 -37
  210. package/dist/wrappers/LazyLoad/LazyLoad.svelte +50 -50
  211. package/dist/wrappers/LazyLoad/docs/component.md +29 -29
  212. package/dist/wrappers/Main/Main.stories.svelte +24 -24
  213. package/dist/wrappers/Main/Main.svelte +11 -11
  214. package/dist/wrappers/Main/docs/component.md +16 -16
  215. package/dist/wrappers/Observe/Observe.stories.svelte +29 -29
  216. package/dist/wrappers/Observe/Observe.svelte +45 -45
  217. package/dist/wrappers/Observe/docs/component.md +22 -22
  218. package/dist/wrappers/Theme/Theme.stories.svelte +70 -70
  219. package/dist/wrappers/Theme/Theme.svelte +76 -76
  220. package/dist/wrappers/Theme/docs/component.md +10 -10
  221. package/dist/wrappers/Theme/themes.js +70 -70
  222. package/package.json +88 -88
package/dist/js/utils.js CHANGED
@@ -1,133 +1,133 @@
1
- import parse from "parse-color";
2
-
3
- const randomString = () => {
4
- return Math.random().toString(16).slice(2, 8);
5
- };
6
-
7
- export const slugify = (str, suffix = false) =>
8
- typeof str === "string"
9
- ? str
10
- .toString()
11
- .normalize("NFD")
12
- .replace(/[\u0300-\u036f]/g, "")
13
- .toLowerCase()
14
- .trim()
15
- .replace(/\s+/g, "-")
16
- .replace(/[^\w-]+/g, "")
17
- .replace(/--+/g, "-")
18
- .concat(suffix ? `-${randomString()}` : "")
19
- : randomString();
20
-
21
- export const isNumeric = (val) => isFinite(val) && val !== null;
22
-
23
- export const validDate = (str) => {
24
- if (!str) return false;
25
- const date = new Date(str);
26
- // @ts-ignore
27
- return !isNaN(date);
28
- };
29
-
30
- export const formatDate = (
31
- str,
32
- locale = "en-GB",
33
- opts = { year: "numeric", month: "long", day: "2-digit" }
34
- ) => {
35
- const date = new Date(str);
36
- // @ts-ignore
37
- return date.toLocaleDateString(locale, opts);
38
- };
39
-
40
- export const format = (val, dp = null) => {
41
- return Number.isInteger(dp)
42
- ? val.toLocaleString("en-GB", {
43
- minimumFractionDigits: dp,
44
- maximumFractionDigits: dp
45
- })
46
- : val.toLocaleString("en-GB");
47
- };
48
-
49
- export const formatter = (dp = null) => {
50
- return Number.isInteger(dp)
51
- ? new Intl.NumberFormat("en-GB", {
52
- minimumFractionDigits: dp,
53
- maximumFractionDigits: dp
54
- }).format
55
- : new Intl.NumberFormat("en-GB").format;
56
- };
57
-
58
- // Functions for natural sorting, regardless of type
59
- // Less performant than d3.ascending and d3.descending, but handles mixed types
60
- const collator = new Intl.Collator("en", { numeric: true });
61
- const isSortable = (a, b) =>
62
- typeof a === typeof b &&
63
- (["number", "string", "boolean"].includes(typeof a) ||
64
- (typeof a.getMonth === "function" && typeof b.getMonth === "function"));
65
-
66
- export const ascending = (a, b) =>
67
- a === b
68
- ? 0
69
- : a == null
70
- ? 1
71
- : b == null
72
- ? -1
73
- : !isSortable(a, b)
74
- ? collator.compare(a, b)
75
- : a < b
76
- ? -1
77
- : a > b
78
- ? 1
79
- : 0;
80
-
81
- export const descending = (a, b) =>
82
- a === b
83
- ? 0
84
- : a == null
85
- ? 1
86
- : b == null
87
- ? -1
88
- : !isSortable(a, b)
89
- ? collator.compare(b, a)
90
- : b < a
91
- ? -1
92
- : b > a
93
- ? 1
94
- : 0;
95
-
96
- export const sleep = (ms = 1000) => new Promise((resolve) => setTimeout(resolve, ms));
97
-
98
- export const contrastColor = (color) => {
99
- if (!color || typeof color !== "string") return "black";
100
- const rgb = parse(color).rgb;
101
- if (rgb) {
102
- const brightness = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;
103
- return brightness > 125 ? "black" : "white";
104
- }
105
- return "black";
106
- };
107
-
108
- export const darkenColor = (color, factor = 0.5) => {
109
- if (!color || typeof color !== "string") return color;
110
- const hsl = parse(color).hsl;
111
- if (hsl) {
112
- hsl[2] = hsl[2] * factor;
113
- return `hsl(${hsl[0]}, ${hsl[1]}%, ${hsl[2]}%)`;
114
- }
115
- return color;
116
- };
117
-
118
- export const lipsum = (sentences = 4, offset = 0) => {
119
- const texts = [
120
- "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
121
- "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
122
- "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
123
- "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
124
- ];
125
- const passage = [];
126
- for (let i = 0; i < sentences; i++) {
127
- passage.push(texts[(i + offset) % 4]);
128
- }
129
- return passage.join(" ");
130
- };
131
-
132
- export const matchMedia = (query) => window.matchMedia(query);
133
- matchMedia.hasMatchMedia = () => typeof window.matchMedia === "function";
1
+ import parse from "parse-color";
2
+
3
+ const randomString = () => {
4
+ return Math.random().toString(16).slice(2, 8);
5
+ };
6
+
7
+ export const slugify = (str, suffix = false) =>
8
+ typeof str === "string"
9
+ ? str
10
+ .toString()
11
+ .normalize("NFD")
12
+ .replace(/[\u0300-\u036f]/g, "")
13
+ .toLowerCase()
14
+ .trim()
15
+ .replace(/\s+/g, "-")
16
+ .replace(/[^\w-]+/g, "")
17
+ .replace(/--+/g, "-")
18
+ .concat(suffix ? `-${randomString()}` : "")
19
+ : randomString();
20
+
21
+ export const isNumeric = (val) => isFinite(val) && val !== null;
22
+
23
+ export const validDate = (str) => {
24
+ if (!str) return false;
25
+ const date = new Date(str);
26
+ // @ts-ignore
27
+ return !isNaN(date);
28
+ };
29
+
30
+ export const formatDate = (
31
+ str,
32
+ locale = "en-GB",
33
+ opts = { year: "numeric", month: "long", day: "2-digit" }
34
+ ) => {
35
+ const date = new Date(str);
36
+ // @ts-ignore
37
+ return date.toLocaleDateString(locale, opts);
38
+ };
39
+
40
+ export const format = (val, dp = null) => {
41
+ return Number.isInteger(dp)
42
+ ? val.toLocaleString("en-GB", {
43
+ minimumFractionDigits: dp,
44
+ maximumFractionDigits: dp
45
+ })
46
+ : val.toLocaleString("en-GB");
47
+ };
48
+
49
+ export const formatter = (dp = null) => {
50
+ return Number.isInteger(dp)
51
+ ? new Intl.NumberFormat("en-GB", {
52
+ minimumFractionDigits: dp,
53
+ maximumFractionDigits: dp
54
+ }).format
55
+ : new Intl.NumberFormat("en-GB").format;
56
+ };
57
+
58
+ // Functions for natural sorting, regardless of type
59
+ // Less performant than d3.ascending and d3.descending, but handles mixed types
60
+ const collator = new Intl.Collator("en", { numeric: true });
61
+ const isSortable = (a, b) =>
62
+ typeof a === typeof b &&
63
+ (["number", "string", "boolean"].includes(typeof a) ||
64
+ (typeof a.getMonth === "function" && typeof b.getMonth === "function"));
65
+
66
+ export const ascending = (a, b) =>
67
+ a === b
68
+ ? 0
69
+ : a == null
70
+ ? 1
71
+ : b == null
72
+ ? -1
73
+ : !isSortable(a, b)
74
+ ? collator.compare(a, b)
75
+ : a < b
76
+ ? -1
77
+ : a > b
78
+ ? 1
79
+ : 0;
80
+
81
+ export const descending = (a, b) =>
82
+ a === b
83
+ ? 0
84
+ : a == null
85
+ ? 1
86
+ : b == null
87
+ ? -1
88
+ : !isSortable(a, b)
89
+ ? collator.compare(b, a)
90
+ : b < a
91
+ ? -1
92
+ : b > a
93
+ ? 1
94
+ : 0;
95
+
96
+ export const sleep = (ms = 1000) => new Promise((resolve) => setTimeout(resolve, ms));
97
+
98
+ export const contrastColor = (color) => {
99
+ if (!color || typeof color !== "string") return "black";
100
+ const rgb = parse(color).rgb;
101
+ if (rgb) {
102
+ const brightness = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;
103
+ return brightness > 125 ? "black" : "white";
104
+ }
105
+ return "black";
106
+ };
107
+
108
+ export const darkenColor = (color, factor = 0.5) => {
109
+ if (!color || typeof color !== "string") return color;
110
+ const hsl = parse(color).hsl;
111
+ if (hsl) {
112
+ hsl[2] = hsl[2] * factor;
113
+ return `hsl(${hsl[0]}, ${hsl[1]}%, ${hsl[2]}%)`;
114
+ }
115
+ return color;
116
+ };
117
+
118
+ export const lipsum = (sentences = 4, offset = 0) => {
119
+ const texts = [
120
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
121
+ "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",
122
+ "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",
123
+ "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
124
+ ];
125
+ const passage = [];
126
+ for (let i = 0; i < sentences; i++) {
127
+ passage.push(texts[(i + offset) % 4]);
128
+ }
129
+ return passage.join(" ");
130
+ };
131
+
132
+ export const matchMedia = (query) => window.matchMedia(query);
133
+ matchMedia.hasMatchMedia = () => typeof window.matchMedia === "function";
@@ -1,43 +1,43 @@
1
- /**
2
- * Use custom source code in the "Show code" pull down.
3
- * @param {object} source Source code object, where key is the language of the source code and value is the code string.
4
- * @param {object} otherOptions Other props object options, allowing chaining with other methods like withStoryDocs
5
- * @returns props object including parameters
6
- */
7
- export const withSource = (source, otherOptions = {}) => {
8
- const language = Object.keys(source)[0];
9
- const code = source[language];
10
- const docs = {
11
- ...otherOptions?.parameters?.docs,
12
- source: { code, language }
13
- };
14
- return { docs };
15
- };
16
-
17
- /**
18
- * Add custom documentation to a story.
19
- * @param {string} storyDocs Markdown string of docs
20
- * @param {object} otherOptions Other props object options, allowing chaining with other methods like withSource
21
- * @returns props object including parameters
22
- */
23
- export const withStoryDocs = (storyDocs, otherOptions = {}) => {
24
- const docs = {
25
- ...otherOptions?.parameters?.docs,
26
- description: { story: storyDocs }
27
- };
28
- return { docs };
29
- };
30
-
31
- /**
32
- * Add custom documentation to the top of the component docs page.
33
- * @param {string} componentDocs Markdown string of docs
34
- * @param {object} otherOptions Other props object options, allowing chaining with other methods like withSource
35
- * @returns props object including parameters
36
- */
37
- export const withComponentDocs = (componentDocs, otherOptions = {}) => {
38
- const docs = {
39
- ...otherOptions?.parameters?.docs,
40
- description: { component: componentDocs }
41
- };
42
- return { docs };
43
- };
1
+ /**
2
+ * Use custom source code in the "Show code" pull down.
3
+ * @param {object} source Source code object, where key is the language of the source code and value is the code string.
4
+ * @param {object} otherOptions Other props object options, allowing chaining with other methods like withStoryDocs
5
+ * @returns props object including parameters
6
+ */
7
+ export const withSource = (source, otherOptions = {}) => {
8
+ const language = Object.keys(source)[0];
9
+ const code = source[language];
10
+ const docs = {
11
+ ...otherOptions?.parameters?.docs,
12
+ source: { code, language }
13
+ };
14
+ return { docs };
15
+ };
16
+
17
+ /**
18
+ * Add custom documentation to a story.
19
+ * @param {string} storyDocs Markdown string of docs
20
+ * @param {object} otherOptions Other props object options, allowing chaining with other methods like withSource
21
+ * @returns props object including parameters
22
+ */
23
+ export const withStoryDocs = (storyDocs, otherOptions = {}) => {
24
+ const docs = {
25
+ ...otherOptions?.parameters?.docs,
26
+ description: { story: storyDocs }
27
+ };
28
+ return { docs };
29
+ };
30
+
31
+ /**
32
+ * Add custom documentation to the top of the component docs page.
33
+ * @param {string} componentDocs Markdown string of docs
34
+ * @param {object} otherOptions Other props object options, allowing chaining with other methods like withSource
35
+ * @returns props object including parameters
36
+ */
37
+ export const withComponentDocs = (componentDocs, otherOptions = {}) => {
38
+ const docs = {
39
+ ...otherOptions?.parameters?.docs,
40
+ description: { component: componentDocs }
41
+ };
42
+ return { docs };
43
+ };
@@ -1,30 +1,30 @@
1
- <script module>
2
- import { defineMeta } from "@storybook/addon-svelte-csf";
3
- import { withComponentDocs } from "../../js/withParams.js";
4
- import Accordion from "./Accordion.svelte";
5
- import AccordionItem from "./AccordionItem.svelte";
6
- import componentDocs from "./docs/component.md?raw";
7
-
8
- const { Story } = defineMeta({
9
- title: "Layout/Accordion",
10
- component: Accordion,
11
- tags: ["autodocs"],
12
- argTypes: {},
13
- parameters: withComponentDocs(componentDocs)
14
- });
15
- </script>
16
-
17
- {#snippet template(args)}
18
- <Accordion {...args}>
19
- <AccordionItem title="First item">
20
- <p>Contents of first item.</p>
21
- </AccordionItem>
22
- <AccordionItem title="Second item">
23
- <p>Contents of second item.</p>
24
- </AccordionItem>
25
- </Accordion>
26
- {/snippet}
27
-
28
- <Story name="Default" args={{}} {template} />
29
-
30
- <Story name="With 'show all' toggle" args={{ showToggle: true }} {template} />
1
+ <script module>
2
+ import { defineMeta } from "@storybook/addon-svelte-csf";
3
+ import { withComponentDocs } from "../../js/withParams.js";
4
+ import Accordion from "./Accordion.svelte";
5
+ import AccordionItem from "./AccordionItem.svelte";
6
+ import componentDocs from "./docs/component.md?raw";
7
+
8
+ const { Story } = defineMeta({
9
+ title: "Layout/Accordion",
10
+ component: Accordion,
11
+ tags: ["autodocs"],
12
+ argTypes: {},
13
+ parameters: withComponentDocs(componentDocs)
14
+ });
15
+ </script>
16
+
17
+ {#snippet template(args)}
18
+ <Accordion {...args}>
19
+ <AccordionItem title="First item">
20
+ <p>Contents of first item.</p>
21
+ </AccordionItem>
22
+ <AccordionItem title="Second item">
23
+ <p>Contents of second item.</p>
24
+ </AccordionItem>
25
+ </Accordion>
26
+ {/snippet}
27
+
28
+ <Story name="Default" args={{}} {template} />
29
+
30
+ <Story name="With 'show all' toggle" args={{ showToggle: true }} {template} />
@@ -1,55 +1,55 @@
1
- <script>
2
- import { onMount, setContext } from "svelte";
3
- import Accordion from "./accordion.js";
4
- import Details from "./details.js";
5
- import { slugify, sleep } from "../../js/utils.js";
6
-
7
- /**
8
- * Optional: Set the unique ID of the accordion
9
- * @type {string}
10
- */
11
- export let id = slugify();
12
- /**
13
- * Optional: Set an additional CSS class for the component
14
- * @type {string|null}
15
- */
16
- export let cls = null;
17
- /**
18
- * Option to include a "show all" toggle above the accordion
19
- * @type {boolean}
20
- */
21
- export let showToggle = false;
22
-
23
- let el, buttonEl;
24
-
25
- setContext("dataGroup", id);
26
-
27
- onMount(async () => {
28
- await sleep(0);
29
- const detailsComponents = [...el.querySelectorAll(".ons-js-details")];
30
- const detailsEls = detailsComponents.map((element) => new Details(element));
31
- new Accordion(buttonEl, detailsEls);
32
- });
33
- </script>
34
-
35
- <div {id} class="ons-accordion {cls}" bind:this={el}>
36
- <button
37
- type="button"
38
- class="ons-btn ons-accordion__toggle-all ons-u-mb-s ons-u-d-no ons-btn--secondary ons-btn--small"
39
- class:hide-toggle={!showToggle}
40
- data-close-all="Hide all"
41
- data-group={id}
42
- bind:this={buttonEl}
43
- >
44
- <span class="ons-btn__inner ons-accordion__toggle-all-inner"
45
- ><span class="ons-btn__text">Show all</span></span
46
- >
47
- </button>
48
- <slot />
49
- </div>
50
-
51
- <style>
52
- button.hide-toggle {
53
- display: none;
54
- }
55
- </style>
1
+ <script>
2
+ import { onMount, setContext } from "svelte";
3
+ import Accordion from "./accordion.js";
4
+ import Details from "./details.js";
5
+ import { slugify, sleep } from "../../js/utils.js";
6
+
7
+ /**
8
+ * Optional: Set the unique ID of the accordion
9
+ * @type {string}
10
+ */
11
+ export let id = slugify();
12
+ /**
13
+ * Optional: Set an additional CSS class for the component
14
+ * @type {string|null}
15
+ */
16
+ export let cls = null;
17
+ /**
18
+ * Option to include a "show all" toggle above the accordion
19
+ * @type {boolean}
20
+ */
21
+ export let showToggle = false;
22
+
23
+ let el, buttonEl;
24
+
25
+ setContext("dataGroup", id);
26
+
27
+ onMount(async () => {
28
+ await sleep(0);
29
+ const detailsComponents = [...el.querySelectorAll(".ons-js-details")];
30
+ const detailsEls = detailsComponents.map((element) => new Details(element));
31
+ new Accordion(buttonEl, detailsEls);
32
+ });
33
+ </script>
34
+
35
+ <div {id} class="ons-accordion {cls}" bind:this={el}>
36
+ <button
37
+ type="button"
38
+ class="ons-btn ons-accordion__toggle-all ons-u-mb-s ons-u-d-no ons-btn--secondary ons-btn--small"
39
+ class:hide-toggle={!showToggle}
40
+ data-close-all="Hide all"
41
+ data-group={id}
42
+ bind:this={buttonEl}
43
+ >
44
+ <span class="ons-btn__inner ons-accordion__toggle-all-inner"
45
+ ><span class="ons-btn__text">Show all</span></span
46
+ >
47
+ </button>
48
+ <slot />
49
+ </div>
50
+
51
+ <style>
52
+ button.hide-toggle {
53
+ display: none;
54
+ }
55
+ </style>
@@ -1,51 +1,51 @@
1
- <script>
2
- import { getContext } from "svelte";
3
- import { slugify } from "../../js/utils.js";
4
-
5
- /**
6
- * Sets the title of the accordion item
7
- * @type {string|null}
8
- */
9
- export let title = null;
10
- /**
11
- * Sets the unique ID of the accordion item
12
- * @type {string}
13
- */
14
- export let id = slugify(title);
15
- /**
16
- * Set the heading level for the accordion items
17
- * @type {"h2"|"h3"}
18
- */
19
- export let headingTag = "h2";
20
-
21
- const dataGroup = getContext("dataGroup");
22
- </script>
23
-
24
- <div {id} class="ons-details ons-js-details ons-details--accordion" data-group={dataGroup}>
25
- <div class="ons-details__heading ons-js-details-heading" role="button">
26
- {#if headingTag === "h3"}
27
- <h3 class="ons-details__title ons-u-fs-r--b">{title}</h3>
28
- {:else}
29
- <h2 class="ons-details__title ons-u-fs-r--b">{title}</h2>
30
- {/if}
31
- <span class="ons-details__icon">
32
- <svg
33
- class="ons-icon"
34
- viewBox="0 0 8 13"
35
- xmlns="http://www.w3.org/2000/svg"
36
- focusable="false"
37
- fill="currentColor"
38
- role="img"
39
- title="ons-icon-chevron"
40
- >
41
- <path
42
- 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"
43
- transform="translate(-5.02 -1.59)"
44
- />
45
- </svg></span
46
- >
47
- </div>
48
- <div id="{id}-content" class="ons-details__content ons-js-details-content">
49
- <slot />
50
- </div>
51
- </div>
1
+ <script>
2
+ import { getContext } from "svelte";
3
+ import { slugify } from "../../js/utils.js";
4
+
5
+ /**
6
+ * Sets the title of the accordion item
7
+ * @type {string|null}
8
+ */
9
+ export let title = null;
10
+ /**
11
+ * Sets the unique ID of the accordion item
12
+ * @type {string}
13
+ */
14
+ export let id = slugify(title);
15
+ /**
16
+ * Set the heading level for the accordion items
17
+ * @type {"h2"|"h3"}
18
+ */
19
+ export let headingTag = "h2";
20
+
21
+ const dataGroup = getContext("dataGroup");
22
+ </script>
23
+
24
+ <div {id} class="ons-details ons-js-details ons-details--accordion" data-group={dataGroup}>
25
+ <div class="ons-details__heading ons-js-details-heading" role="button">
26
+ {#if headingTag === "h3"}
27
+ <h3 class="ons-details__title ons-u-fs-r--b">{title}</h3>
28
+ {:else}
29
+ <h2 class="ons-details__title ons-u-fs-r--b">{title}</h2>
30
+ {/if}
31
+ <span class="ons-details__icon">
32
+ <svg
33
+ class="ons-icon"
34
+ viewBox="0 0 8 13"
35
+ xmlns="http://www.w3.org/2000/svg"
36
+ focusable="false"
37
+ fill="currentColor"
38
+ role="img"
39
+ title="ons-icon-chevron"
40
+ >
41
+ <path
42
+ 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"
43
+ transform="translate(-5.02 -1.59)"
44
+ />
45
+ </svg></span
46
+ >
47
+ </div>
48
+ <div id="{id}-content" class="ons-details__content ons-js-details-content">
49
+ <slot />
50
+ </div>
51
+ </div>