@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
@@ -1,184 +1,184 @@
1
- <script lang="ts">
2
- import { onMount, onDestroy, createEventDispatcher, getContext } from "svelte";
3
- import Icon from "./ToolbarIcon.svelte";
4
- import HelpModal from "./HelpModal.svelte";
5
- import { nanoid } from "nanoid";
6
-
7
- // Props for the ToolbarButton
8
- let {
9
- id = nanoid(6),
10
- icon = "",
11
- label = "",
12
- disabled = false,
13
- classes = "",
14
- helpText = null,
15
- selected = false,
16
- custom = false,
17
- hasAriaControls = false,
18
- sticky = false,
19
- transient = false,
20
- disableHelp = false
21
- }: {
22
- id?: string;
23
- icon?: string;
24
- label?: string;
25
- disabled?: boolean;
26
- classes?: string;
27
- helpText?: string | null;
28
- selected?: boolean;
29
- custom?: boolean;
30
- hasAriaControls?: boolean;
31
- sticky?: boolean;
32
- transient?: boolean;
33
- disableHelp?: boolean;
34
- } = $props();
35
-
36
- const dispatch = createEventDispatcher();
37
-
38
- let buttonElement: HTMLElement;
39
-
40
- // Get activeModalId store from context
41
- const activeModalId = getContext("activeModalId");
42
- const currentActiveId = $derived(activeModalId);
43
- const isActive = $derived($currentActiveId === id);
44
-
45
- // Retrieve button registry from context
46
- const { register, unregister } = getContext("buttonIds");
47
-
48
- // Register button on mount
49
- onMount(() => {
50
- register(id);
51
- });
52
-
53
- // Unregister button on destroy
54
- onDestroy(() => {
55
- unregister(id);
56
- });
57
-
58
- // Subscribe to the store to determine if this modal is active
59
- function handleClick() {
60
- if (!disabled) {
61
- if (transient) {
62
- // If it's a transient button, just trigger the action and return
63
- dispatch("click");
64
- return;
65
- }
66
-
67
- dispatch("click");
68
- if ($activeModalId === id && sticky) {
69
- // If it's already active and sticky, keep it selected
70
- return;
71
- }
72
- activeModalId.set(isActive ? null : id); // Toggle the modal
73
- }
74
- }
75
- </script>
76
-
77
- <div class="toolbar-button-wrapper">
78
- {#if custom}
79
- <div on:click={handleClick} bind:this={buttonElement}>
80
- <slot name="custom" />
81
- </div>
82
- {:else}
83
- <button
84
- type="button"
85
- aria-label={label}
86
- class={`toolbar-button ${disabled ? "disabled" : ""} ${
87
- isActive && !transient ? "selected" : ""
88
- } ${classes}`}
89
- on:click={handleClick}
90
- {disabled}
91
- bind:this={buttonElement}
92
- id={`button-${id}`}
93
- aria-controls={hasAriaControls ? `panel-${id}` : undefined}
94
- >
95
- {#if icon}
96
- <Icon type={icon} selected={!transient ? (isActive ? true : false) : false} {disabled} />
97
- {:else}
98
- {label}
99
- {/if}
100
- </button>
101
- {/if}
102
-
103
- {#if isActive}
104
- {#if helpText && !disableHelp}
105
- <HelpModal triggerElement={buttonElement} onClose={() => activeModalId.set(null)}>
106
- <p>{helpText}</p>
107
- </HelpModal>
108
- {:else if !helpText && !disableHelp}
109
- <HelpModal triggerElement={buttonElement} onClose={() => activeModalId.set(null)}>
110
- <slot />
111
- </HelpModal>
112
- {/if}
113
- {/if}
114
- </div>
115
-
116
- <!--
117
-
118
- /* /* Slightly darker gray when clicked */
119
-
120
- /*
121
- button:active {
122
- background-color: #d6d6d6;
123
- }
124
-
125
- button.active {
126
- background-color: #ddd; /* Selected button background */
127
- border: 2px solid #333; /* Active button border */
128
- }
129
-
130
- button:hover:active {
131
- background-color: #ccc; /* Slightly more contrast when active */
132
- }
133
-
134
- button:disabled {
135
- opacity: 0.5;
136
- cursor: not-allowed;
137
- background-color: #f2f2f2;
138
- border: 1px solid #ddd;
139
- }
140
-
141
- button:hover:disabled {
142
- background-color: #f2f2f2; /* Keep it the same so disabled buttons don’t change on hover */
143
- border: 1px solid #ddd;
144
- } */
145
- -->
146
-
147
- <style>
148
- .toolbar-button-wrapper {
149
- position: relative;
150
- }
151
- .toolbar-button {
152
- display: flex;
153
- align-items: center;
154
- justify-content: center;
155
- padding: 0.5rem;
156
- background: none;
157
- border: none;
158
- cursor: pointer;
159
- flex-shrink: 0;
160
- flex-grow: 0;
161
- }
162
-
163
- .toolbar-button.disabled {
164
- /* opacity: 0.5; */
165
- cursor: not-allowed;
166
- }
167
-
168
- .selected {
169
- background: #e9eff4;
170
- border-radius: 8px;
171
- }
172
-
173
- button:hover {
174
- background-color: #f5f5f6;
175
- border-radius: 8px;
176
- }
177
-
178
- button:focus {
179
- outline: 2px solid #fbc900;
180
- outline-offset: 2px;
181
- box-shadow: 0 0 2px 2px #222222;
182
- border-radius: 8px;
183
- }
184
- </style>
1
+ <script lang="ts">
2
+ import { onMount, onDestroy, createEventDispatcher, getContext } from "svelte";
3
+ import Icon from "./ToolbarIcon.svelte";
4
+ import HelpModal from "./HelpModal.svelte";
5
+ import { nanoid } from "nanoid";
6
+
7
+ // Props for the ToolbarButton
8
+ let {
9
+ id = nanoid(6),
10
+ icon = "",
11
+ label = "",
12
+ disabled = false,
13
+ classes = "",
14
+ helpText = null,
15
+ selected = false,
16
+ custom = false,
17
+ hasAriaControls = false,
18
+ sticky = false,
19
+ transient = false,
20
+ disableHelp = false
21
+ }: {
22
+ id?: string;
23
+ icon?: string;
24
+ label?: string;
25
+ disabled?: boolean;
26
+ classes?: string;
27
+ helpText?: string | null;
28
+ selected?: boolean;
29
+ custom?: boolean;
30
+ hasAriaControls?: boolean;
31
+ sticky?: boolean;
32
+ transient?: boolean;
33
+ disableHelp?: boolean;
34
+ } = $props();
35
+
36
+ const dispatch = createEventDispatcher();
37
+
38
+ let buttonElement: HTMLElement;
39
+
40
+ // Get activeModalId store from context
41
+ const activeModalId = getContext("activeModalId");
42
+ const currentActiveId = $derived(activeModalId);
43
+ const isActive = $derived($currentActiveId === id);
44
+
45
+ // Retrieve button registry from context
46
+ const { register, unregister } = getContext("buttonIds");
47
+
48
+ // Register button on mount
49
+ onMount(() => {
50
+ register(id);
51
+ });
52
+
53
+ // Unregister button on destroy
54
+ onDestroy(() => {
55
+ unregister(id);
56
+ });
57
+
58
+ // Subscribe to the store to determine if this modal is active
59
+ function handleClick() {
60
+ if (!disabled) {
61
+ if (transient) {
62
+ // If it's a transient button, just trigger the action and return
63
+ dispatch("click");
64
+ return;
65
+ }
66
+
67
+ dispatch("click");
68
+ if ($activeModalId === id && sticky) {
69
+ // If it's already active and sticky, keep it selected
70
+ return;
71
+ }
72
+ activeModalId.set(isActive ? null : id); // Toggle the modal
73
+ }
74
+ }
75
+ </script>
76
+
77
+ <div class="toolbar-button-wrapper">
78
+ {#if custom}
79
+ <div on:click={handleClick} bind:this={buttonElement}>
80
+ <slot name="custom" />
81
+ </div>
82
+ {:else}
83
+ <button
84
+ type="button"
85
+ aria-label={label}
86
+ class={`toolbar-button ${disabled ? "disabled" : ""} ${
87
+ isActive && !transient ? "selected" : ""
88
+ } ${classes}`}
89
+ on:click={handleClick}
90
+ {disabled}
91
+ bind:this={buttonElement}
92
+ id={`button-${id}`}
93
+ aria-controls={hasAriaControls ? `panel-${id}` : undefined}
94
+ >
95
+ {#if icon}
96
+ <Icon type={icon} selected={!transient ? (isActive ? true : false) : false} {disabled} />
97
+ {:else}
98
+ {label}
99
+ {/if}
100
+ </button>
101
+ {/if}
102
+
103
+ {#if isActive}
104
+ {#if helpText && !disableHelp}
105
+ <HelpModal triggerElement={buttonElement} onClose={() => activeModalId.set(null)}>
106
+ <p>{helpText}</p>
107
+ </HelpModal>
108
+ {:else if !helpText && !disableHelp}
109
+ <HelpModal triggerElement={buttonElement} onClose={() => activeModalId.set(null)}>
110
+ <slot />
111
+ </HelpModal>
112
+ {/if}
113
+ {/if}
114
+ </div>
115
+
116
+ <!--
117
+
118
+ /* /* Slightly darker gray when clicked */
119
+
120
+ /*
121
+ button:active {
122
+ background-color: #d6d6d6;
123
+ }
124
+
125
+ button.active {
126
+ background-color: #ddd; /* Selected button background */
127
+ border: 2px solid #333; /* Active button border */
128
+ }
129
+
130
+ button:hover:active {
131
+ background-color: #ccc; /* Slightly more contrast when active */
132
+ }
133
+
134
+ button:disabled {
135
+ opacity: 0.5;
136
+ cursor: not-allowed;
137
+ background-color: #f2f2f2;
138
+ border: 1px solid #ddd;
139
+ }
140
+
141
+ button:hover:disabled {
142
+ background-color: #f2f2f2; /* Keep it the same so disabled buttons don’t change on hover */
143
+ border: 1px solid #ddd;
144
+ } */
145
+ -->
146
+
147
+ <style>
148
+ .toolbar-button-wrapper {
149
+ position: relative;
150
+ }
151
+ .toolbar-button {
152
+ display: flex;
153
+ align-items: center;
154
+ justify-content: center;
155
+ padding: 0.5rem;
156
+ background: none;
157
+ border: none;
158
+ cursor: pointer;
159
+ flex-shrink: 0;
160
+ flex-grow: 0;
161
+ }
162
+
163
+ .toolbar-button.disabled {
164
+ /* opacity: 0.5; */
165
+ cursor: not-allowed;
166
+ }
167
+
168
+ .selected {
169
+ background: #e9eff4;
170
+ border-radius: 8px;
171
+ }
172
+
173
+ button:hover {
174
+ background-color: #f5f5f6;
175
+ border-radius: 8px;
176
+ }
177
+
178
+ button:focus {
179
+ outline: 2px solid #fbc900;
180
+ outline-offset: 2px;
181
+ box-shadow: 0 0 2px 2px #222222;
182
+ border-radius: 8px;
183
+ }
184
+ </style>
@@ -1,29 +1,29 @@
1
- <script lang="ts">
2
- import { getContext } from "svelte";
3
-
4
- let { classes = "" }: { classes?: string } = $props();
5
-
6
- // Get the orientation store from context
7
- const orientationStore = getContext("orientation");
8
-
9
- // Subscribe to the store to get its value
10
- const orientation = $derived(orientationStore);
11
- </script>
12
-
13
- <div class={`toolbar-divider ${$orientation} ${classes}`} aria-hidden="true"></div>
14
-
15
- <style>
16
- .toolbar-divider {
17
- background-color: #ccc;
18
- }
19
-
20
- .toolbar-divider.horizontal {
21
- width: 1px;
22
- }
23
-
24
- .toolbar-divider.vertical {
25
- width: 100%;
26
- height: 1px;
27
- margin: 0.5rem 0;
28
- }
29
- </style>
1
+ <script lang="ts">
2
+ import { getContext } from "svelte";
3
+
4
+ let { classes = "" }: { classes?: string } = $props();
5
+
6
+ // Get the orientation store from context
7
+ const orientationStore = getContext("orientation");
8
+
9
+ // Subscribe to the store to get its value
10
+ const orientation = $derived(orientationStore);
11
+ </script>
12
+
13
+ <div class={`toolbar-divider ${$orientation} ${classes}`} aria-hidden="true"></div>
14
+
15
+ <style>
16
+ .toolbar-divider {
17
+ background-color: #ccc;
18
+ }
19
+
20
+ .toolbar-divider.horizontal {
21
+ width: 1px;
22
+ }
23
+
24
+ .toolbar-divider.vertical {
25
+ width: 100%;
26
+ height: 1px;
27
+ margin: 0.5rem 0;
28
+ }
29
+ </style>
@@ -1,106 +1,106 @@
1
- <script>
2
- /**
3
- * @typedef {Object} Props
4
- * @property {string} [type]
5
- * @property {boolean} [marginLeft]
6
- * @property {boolean} [marginRight]
7
- * @property {boolean} [selected]
8
- * @property {boolean} [disabled]
9
- */
10
-
11
- /** @type {Props} */
12
- let {
13
- type = "move",
14
- marginLeft = false,
15
- marginRight = false,
16
- selected = false,
17
- disabled = false
18
- } = $props();
19
-
20
- const paths = {
21
- move: {
22
- selected: "M29 16L16 29L3 16L16 3L29 16Z",
23
- d: "M11.293 7.707a1 1 0 0 1 0-1.415l4-4a1 1 0 0 1 1.415 0l4 4a1 1 0 0 1-1.415 1.415L17 5.414V12a1 1 0 0 1-2 0V5.414l-2.293 2.293a1 1 0 0 1-1.415 0m8 16.586L17 26.586V20a1 1 0 0 0-2 0v6.586l-2.293-2.293a1 1 0 1 0-1.415 1.415l4 4a1 1 0 0 0 1.415 0l4-4a1 1 0 0 0-1.415-1.415m10.415-9-4-4a1 1 0 1 0-1.415 1.415L26.586 15H20a1 1 0 0 0 0 2h6.586l-2.293 2.293a1 1 0 1 0 1.415 1.415l4-4a1 1 0 0 0 0-1.415M5.413 17H12a1 1 0 0 0 0-2H5.414l2.293-2.293a1 1 0 1 0-1.415-1.415l-4 4a1 1 0 0 0 0 1.415l4 4a1 1 0 0 0 1.415-1.415z"
24
- },
25
- polygon: {
26
- selected: "M17.5 24L7.5 17V12.5L12.5 8.5L16 9L17.5 7.5L22.5 8.5L25 12.5L21 23L17.5 24Z",
27
- d: "M28.83 6.17a4 4 0 0 0-6.302.845L19 6.053a4 4 0 1 0-7.549 1.793L7.21 11.665a4.01 4.01 0 0 0-5.039.506 4 4 0 0 0 5.361 5.927l8.75 6.42a4 4 0 1 0 5.947-1.837l3.423-9.699q.172.015.345.016a4 4 0 0 0 2.829-6.828zM13.58 4.584a2 2 0 1 1-.433 2.18 2 2 0 0 1 .438-2.18zm-10 11.831a2 2 0 1 1 2.826-2.83 2 2 0 0 1-2.826 2.83m17.831 11a2 2 0 1 1-2.829-2.828 2 2 0 0 1 2.83 2.828m-1.069-5.398a4 4 0 0 0-2.874.886l-8.75-6.42a4.02 4.02 0 0 0-.168-3.332l4.244-3.818a4 4 0 0 0 5.683-1.352L22 8.945a4 4 0 0 0 1.765 3.375zm7.07-11.604a2 2 0 1 1-2.825-2.828 2 2 0 1 1 2.83 2.829z"
28
- },
29
- radius: {},
30
- erase: {
31
- d: "M28.125 10.05 22.95 4.875a3 3 0 0 0-4.242 0L3.874 19.708a3 3 0 0 0 0 4.242l3.758 3.758a1 1 0 0 0 .71.292H27a1 1 0 1 0 0-2H16.413l11.712-11.707a3 3 0 0 0 0-4.243M13.585 26H8.756l-3.465-3.465a1 1 0 0 1 0-1.414L12 14.414 18.586 21zM26.71 12.875 20 19.586 13.414 13l6.711-6.707a1 1 0 0 1 1.415 0l5.172 5.172a1 1 0 0 1 0 1.414z"
32
- },
33
- zoomin: {
34
- selected: "M24 14a10 10 0 1 1-20 0 10 10 0 0 1 20 0",
35
- d: "M19 14a1 1 0 0 1-1 1h-3v3a1 1 0 0 1-2 0v-3h-3a1 1 0 0 1 0-2h3v-3a1 1 0 0 1 2 0v3h3a1 1 0 0 1 1 1m9.708 14.708a1 1 0 0 1-1.415 0l-6.258-6.26a11.014 11.014 0 1 1 1.414-1.413l6.258 6.258a1 1 0 0 1 0 1.415M14 23a9 9 0 1 0-9-9 9.01 9.01 0 0 0 9 9"
36
- },
37
- zoomout: {
38
- selected: "M24 14a10 10 0 1 1-20 0 10 10 0 0 1 20 0",
39
- d: "M19 14a1 1 0 0 1-1 1h-8a1 1 0 0 1 0-2h8a1 1 0 0 1 1 1m9.708 14.708a1 1 0 0 1-1.415 0l-6.258-6.26a11.014 11.014 0 1 1 1.414-1.413l6.258 6.258a1 1 0 0 1 0 1.415M14 23a9 9 0 1 0-9-9 9.01 9.01 0 0 0 9 9"
40
- },
41
- undo: {
42
- selected: "M10 5V17L4 11L10 5Z",
43
- d: "M29 18a8.01 8.01 0 0 1-8 8H10a1 1 0 1 1 0-2h11a6 6 0 1 0 0-12H6.414l4.294 4.293a1 1 0 0 1-1.416 1.415l-6-6a1 1 0 0 1 0-1.415l6-6a1 1 0 0 1 1.415 1.415L6.414 10H21a8.01 8.01 0 0 1 8 8"
44
- },
45
- redo: {
46
- selected: "M28 11L22 17V5L28 11Z",
47
- d: "M21.293 16.293 25.586 12H11a6 6 0 1 0 0 12h11a1 1 0 0 1 0 2H11a8 8 0 1 1 0-16h14.586l-4.293-4.292a1.001 1.001 0 0 1 1.415-1.415l6 6a1 1 0 0 1 0 1.415l-6 6a1 1 0 1 1-1.415-1.415"
48
- },
49
- search: {
50
- selected: "M24 14a10 10 0 1 1-20 0 10 10 0 0 1 20 0",
51
- d: "m28.708 27.293-6.26-6.258a11.014 11.014 0 1 0-1.413 1.414l6.258 6.258a1 1 0 0 0 1.415-1.415M5 14a9 9 0 1 1 9 9 9.01 9.01 0 0 1-9-9"
52
- },
53
- download: {
54
- selected: "M27 6v20H5V6a2 2 0 0 1 2-2h18a2 2 0 0 1 2 2",
55
- d: "M28 18v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8a1 1 0 1 1 2 0v7h20v-7a1 1 0 0 1 2 0m-12.707.707a1 1 0 0 0 1.415 0l5-5a1 1 0 0 0-1.415-1.415L17 15.587V4a1 1 0 0 0-2 0v11.586l-3.293-3.293a1 1 0 1 0-1.415 1.415z"
56
- },
57
- upload: {
58
- selected: "M27 6v20H5V6a2 2 0 0 1 2-2h18a2 2 0 0 1 2 2",
59
- d: "M28 18v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8a1 1 0 1 1 2 0v7h20v-7a1 1 0 0 1 2 0M11.708 9.707 15 6.414V18a1 1 0 0 0 2 0V6.414l3.293 3.293a1 1 0 1 0 1.415-1.415l-5-5a1 1 0 0 0-1.415 0l-5 5a1 1 0 0 0 1.415 1.415"
60
- },
61
- help: {
62
- selected: "M28 16a12 12 0 1 1-23.999 0A12 12 0 0 1 28 16",
63
- d: "M17.5 22.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M16 9c-2.758 0-5 2.019-5 4.5v.5a1 1 0 0 0 2 0v-.5c0-1.375 1.346-2.5 3-2.5s3 1.125 3 2.5-1.346 2.5-3 2.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-.09c2.28-.419 4-2.238 4-4.41 0-2.481-2.242-4.5-5-4.5m13 7A13 13 0 1 1 16 3a13.014 13.014 0 0 1 13 13m-2 0a11 11 0 1 0-11 11 11.01 11.01 0 0 0 11-11"
64
- },
65
- bin: {
66
- selected: "M25 7v19a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V7z",
67
- d: "M27 6h-5V5a3 3 0 0 0-3-3h-6a3 3 0 0 0-3 3v1H5a1 1 0 0 0 0 2h1v18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8h1a1 1 0 1 0 0-2M12 5a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v1h-8zm12 21H8V8h16zM14 13v8a1 1 0 0 1-2 0v-8a1 1 0 0 1 2 0m6 0v8a1 1 0 0 1-2 0v-8a1 1 0 0 1 2 0"
68
- }
69
- };
70
- </script>
71
-
72
- {#if paths[type]}
73
- <svg
74
- class="ons-svg-icon ons-svg-icon--m"
75
- class:ons-u-ml-xs={marginLeft}
76
- class:ons-u-mr-xs={marginRight}
77
- class:selected
78
- viewBox="0 0 32 32"
79
- xmlns="http://www.w3.org/2000/svg"
80
- focusable="false"
81
- fill={selected ? "#206095" : disabled ? "#BCBCBD" : "currentColor"}
82
- >
83
- {#if selected}
84
- <path opacity="0.2" d={paths[type].selected}></path>
85
- {/if}
86
- {#if type != "radius"}
87
- <path d={paths[type].d}></path>
88
- {:else if type == "radius"}
89
- <circle
90
- cx="16"
91
- cy="16"
92
- r="12"
93
- stroke="currentColor"
94
- stroke-width="2"
95
- fill={selected ? "#206095" : "none"}
96
- fill-opacity={selected ? "0.2" : "0"}
97
- ></circle>
98
- {/if}
99
- </svg>
100
- {/if}
101
-
102
- <style>
103
- .selected {
104
- fill: #206095;
105
- }
106
- </style>
1
+ <script>
2
+ /**
3
+ * @typedef {Object} Props
4
+ * @property {string} [type]
5
+ * @property {boolean} [marginLeft]
6
+ * @property {boolean} [marginRight]
7
+ * @property {boolean} [selected]
8
+ * @property {boolean} [disabled]
9
+ */
10
+
11
+ /** @type {Props} */
12
+ let {
13
+ type = "move",
14
+ marginLeft = false,
15
+ marginRight = false,
16
+ selected = false,
17
+ disabled = false
18
+ } = $props();
19
+
20
+ const paths = {
21
+ move: {
22
+ selected: "M29 16L16 29L3 16L16 3L29 16Z",
23
+ d: "M11.293 7.707a1 1 0 0 1 0-1.415l4-4a1 1 0 0 1 1.415 0l4 4a1 1 0 0 1-1.415 1.415L17 5.414V12a1 1 0 0 1-2 0V5.414l-2.293 2.293a1 1 0 0 1-1.415 0m8 16.586L17 26.586V20a1 1 0 0 0-2 0v6.586l-2.293-2.293a1 1 0 1 0-1.415 1.415l4 4a1 1 0 0 0 1.415 0l4-4a1 1 0 0 0-1.415-1.415m10.415-9-4-4a1 1 0 1 0-1.415 1.415L26.586 15H20a1 1 0 0 0 0 2h6.586l-2.293 2.293a1 1 0 1 0 1.415 1.415l4-4a1 1 0 0 0 0-1.415M5.413 17H12a1 1 0 0 0 0-2H5.414l2.293-2.293a1 1 0 1 0-1.415-1.415l-4 4a1 1 0 0 0 0 1.415l4 4a1 1 0 0 0 1.415-1.415z"
24
+ },
25
+ polygon: {
26
+ selected: "M17.5 24L7.5 17V12.5L12.5 8.5L16 9L17.5 7.5L22.5 8.5L25 12.5L21 23L17.5 24Z",
27
+ d: "M28.83 6.17a4 4 0 0 0-6.302.845L19 6.053a4 4 0 1 0-7.549 1.793L7.21 11.665a4.01 4.01 0 0 0-5.039.506 4 4 0 0 0 5.361 5.927l8.75 6.42a4 4 0 1 0 5.947-1.837l3.423-9.699q.172.015.345.016a4 4 0 0 0 2.829-6.828zM13.58 4.584a2 2 0 1 1-.433 2.18 2 2 0 0 1 .438-2.18zm-10 11.831a2 2 0 1 1 2.826-2.83 2 2 0 0 1-2.826 2.83m17.831 11a2 2 0 1 1-2.829-2.828 2 2 0 0 1 2.83 2.828m-1.069-5.398a4 4 0 0 0-2.874.886l-8.75-6.42a4.02 4.02 0 0 0-.168-3.332l4.244-3.818a4 4 0 0 0 5.683-1.352L22 8.945a4 4 0 0 0 1.765 3.375zm7.07-11.604a2 2 0 1 1-2.825-2.828 2 2 0 1 1 2.83 2.829z"
28
+ },
29
+ radius: {},
30
+ erase: {
31
+ d: "M28.125 10.05 22.95 4.875a3 3 0 0 0-4.242 0L3.874 19.708a3 3 0 0 0 0 4.242l3.758 3.758a1 1 0 0 0 .71.292H27a1 1 0 1 0 0-2H16.413l11.712-11.707a3 3 0 0 0 0-4.243M13.585 26H8.756l-3.465-3.465a1 1 0 0 1 0-1.414L12 14.414 18.586 21zM26.71 12.875 20 19.586 13.414 13l6.711-6.707a1 1 0 0 1 1.415 0l5.172 5.172a1 1 0 0 1 0 1.414z"
32
+ },
33
+ zoomin: {
34
+ selected: "M24 14a10 10 0 1 1-20 0 10 10 0 0 1 20 0",
35
+ d: "M19 14a1 1 0 0 1-1 1h-3v3a1 1 0 0 1-2 0v-3h-3a1 1 0 0 1 0-2h3v-3a1 1 0 0 1 2 0v3h3a1 1 0 0 1 1 1m9.708 14.708a1 1 0 0 1-1.415 0l-6.258-6.26a11.014 11.014 0 1 1 1.414-1.413l6.258 6.258a1 1 0 0 1 0 1.415M14 23a9 9 0 1 0-9-9 9.01 9.01 0 0 0 9 9"
36
+ },
37
+ zoomout: {
38
+ selected: "M24 14a10 10 0 1 1-20 0 10 10 0 0 1 20 0",
39
+ d: "M19 14a1 1 0 0 1-1 1h-8a1 1 0 0 1 0-2h8a1 1 0 0 1 1 1m9.708 14.708a1 1 0 0 1-1.415 0l-6.258-6.26a11.014 11.014 0 1 1 1.414-1.413l6.258 6.258a1 1 0 0 1 0 1.415M14 23a9 9 0 1 0-9-9 9.01 9.01 0 0 0 9 9"
40
+ },
41
+ undo: {
42
+ selected: "M10 5V17L4 11L10 5Z",
43
+ d: "M29 18a8.01 8.01 0 0 1-8 8H10a1 1 0 1 1 0-2h11a6 6 0 1 0 0-12H6.414l4.294 4.293a1 1 0 0 1-1.416 1.415l-6-6a1 1 0 0 1 0-1.415l6-6a1 1 0 0 1 1.415 1.415L6.414 10H21a8.01 8.01 0 0 1 8 8"
44
+ },
45
+ redo: {
46
+ selected: "M28 11L22 17V5L28 11Z",
47
+ d: "M21.293 16.293 25.586 12H11a6 6 0 1 0 0 12h11a1 1 0 0 1 0 2H11a8 8 0 1 1 0-16h14.586l-4.293-4.292a1.001 1.001 0 0 1 1.415-1.415l6 6a1 1 0 0 1 0 1.415l-6 6a1 1 0 1 1-1.415-1.415"
48
+ },
49
+ search: {
50
+ selected: "M24 14a10 10 0 1 1-20 0 10 10 0 0 1 20 0",
51
+ d: "m28.708 27.293-6.26-6.258a11.014 11.014 0 1 0-1.413 1.414l6.258 6.258a1 1 0 0 0 1.415-1.415M5 14a9 9 0 1 1 9 9 9.01 9.01 0 0 1-9-9"
52
+ },
53
+ download: {
54
+ selected: "M27 6v20H5V6a2 2 0 0 1 2-2h18a2 2 0 0 1 2 2",
55
+ d: "M28 18v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8a1 1 0 1 1 2 0v7h20v-7a1 1 0 0 1 2 0m-12.707.707a1 1 0 0 0 1.415 0l5-5a1 1 0 0 0-1.415-1.415L17 15.587V4a1 1 0 0 0-2 0v11.586l-3.293-3.293a1 1 0 1 0-1.415 1.415z"
56
+ },
57
+ upload: {
58
+ selected: "M27 6v20H5V6a2 2 0 0 1 2-2h18a2 2 0 0 1 2 2",
59
+ d: "M28 18v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8a1 1 0 1 1 2 0v7h20v-7a1 1 0 0 1 2 0M11.708 9.707 15 6.414V18a1 1 0 0 0 2 0V6.414l3.293 3.293a1 1 0 1 0 1.415-1.415l-5-5a1 1 0 0 0-1.415 0l-5 5a1 1 0 0 0 1.415 1.415"
60
+ },
61
+ help: {
62
+ selected: "M28 16a12 12 0 1 1-23.999 0A12 12 0 0 1 28 16",
63
+ d: "M17.5 22.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0M16 9c-2.758 0-5 2.019-5 4.5v.5a1 1 0 0 0 2 0v-.5c0-1.375 1.346-2.5 3-2.5s3 1.125 3 2.5-1.346 2.5-3 2.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-.09c2.28-.419 4-2.238 4-4.41 0-2.481-2.242-4.5-5-4.5m13 7A13 13 0 1 1 16 3a13.014 13.014 0 0 1 13 13m-2 0a11 11 0 1 0-11 11 11.01 11.01 0 0 0 11-11"
64
+ },
65
+ bin: {
66
+ selected: "M25 7v19a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V7z",
67
+ d: "M27 6h-5V5a3 3 0 0 0-3-3h-6a3 3 0 0 0-3 3v1H5a1 1 0 0 0 0 2h1v18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8h1a1 1 0 1 0 0-2M12 5a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v1h-8zm12 21H8V8h16zM14 13v8a1 1 0 0 1-2 0v-8a1 1 0 0 1 2 0m6 0v8a1 1 0 0 1-2 0v-8a1 1 0 0 1 2 0"
68
+ }
69
+ };
70
+ </script>
71
+
72
+ {#if paths[type]}
73
+ <svg
74
+ class="ons-svg-icon ons-svg-icon--m"
75
+ class:ons-u-ml-xs={marginLeft}
76
+ class:ons-u-mr-xs={marginRight}
77
+ class:selected
78
+ viewBox="0 0 32 32"
79
+ xmlns="http://www.w3.org/2000/svg"
80
+ focusable="false"
81
+ fill={selected ? "#206095" : disabled ? "#BCBCBD" : "currentColor"}
82
+ >
83
+ {#if selected}
84
+ <path opacity="0.2" d={paths[type].selected}></path>
85
+ {/if}
86
+ {#if type != "radius"}
87
+ <path d={paths[type].d}></path>
88
+ {:else if type == "radius"}
89
+ <circle
90
+ cx="16"
91
+ cy="16"
92
+ r="12"
93
+ stroke="currentColor"
94
+ stroke-width="2"
95
+ fill={selected ? "#206095" : "none"}
96
+ fill-opacity={selected ? "0.2" : "0"}
97
+ ></circle>
98
+ {/if}
99
+ </svg>
100
+ {/if}
101
+
102
+ <style>
103
+ .selected {
104
+ fill: #206095;
105
+ }
106
+ </style>