@lavalogic/scoria 0.33.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +58 -58
  2. package/dist/Components/AccordionGroup.svelte +44 -63
  3. package/dist/Components/AccordionGroup.svelte.d.ts +2 -25
  4. package/dist/Components/AccordionGroupButton.svelte +106 -114
  5. package/dist/Components/AccordionGroupButton.svelte.d.ts +2 -2
  6. package/dist/Components/AccordionGroupButtonProps.d.ts +21 -0
  7. package/dist/Components/AccordionGroupButtonProps.js +1 -0
  8. package/dist/Components/Action.svelte +138 -138
  9. package/dist/Components/AlertModal.svelte +125 -125
  10. package/dist/Components/Base/ContextWrapper.svelte +50 -50
  11. package/dist/Components/Base/Pagination.svelte +190 -190
  12. package/dist/Components/Base/Snippets.svelte +29 -29
  13. package/dist/Components/BigRadioSet.svelte +29 -29
  14. package/dist/Components/Bubble.svelte +77 -77
  15. package/dist/Components/Button.svelte +197 -197
  16. package/dist/Components/Checkbox.svelte +68 -68
  17. package/dist/Components/CollapsibleCard.svelte +70 -70
  18. package/dist/Components/Contexts/ContextMenu.svelte +157 -157
  19. package/dist/Components/Contexts/ContextMenuDivider.svelte +11 -11
  20. package/dist/Components/Contexts/ContextMenuOption.svelte +52 -52
  21. package/dist/Components/Contexts/Toast.svelte +61 -61
  22. package/dist/Components/Contexts/ToastContainer.svelte +46 -46
  23. package/dist/Components/Contexts/Tooltip.svelte +26 -26
  24. package/dist/Components/DataMatrixIcon.svelte +41 -41
  25. package/dist/Components/DateInput.svelte +109 -109
  26. package/dist/Components/DatePicker.svelte +312 -312
  27. package/dist/Components/DesktopModal.svelte +106 -106
  28. package/dist/Components/Dial.svelte +151 -151
  29. package/dist/Components/DimensionInput.svelte +184 -184
  30. package/dist/Components/DragMenu/DragMenuHolder.svelte +106 -106
  31. package/dist/Components/DragMenu/DraggableCard.svelte +41 -41
  32. package/dist/Components/FileCard.svelte +20 -20
  33. package/dist/Components/FileUpload.svelte +196 -196
  34. package/dist/Components/GridInput.svelte +190 -190
  35. package/dist/Components/GridInputSet.svelte +22 -22
  36. package/dist/Components/HorizontalTabGroup.svelte +78 -78
  37. package/dist/Components/HorizontalTabGroupButton.svelte +96 -96
  38. package/dist/Components/Icon.svelte +97 -97
  39. package/dist/Components/Icons.js +357 -357
  40. package/dist/Components/LoadingAnimation.svelte +32 -32
  41. package/dist/Components/LoadingModal.svelte +47 -47
  42. package/dist/Components/LoadingOverlay.svelte +27 -27
  43. package/dist/Components/Modal.svelte +251 -251
  44. package/dist/Components/MultiSelect.svelte +197 -197
  45. package/dist/Components/Nav/Nav.svelte +97 -97
  46. package/dist/Components/Nav/NavServiceMenuList.svelte +34 -34
  47. package/dist/Components/Nav/NavTab.svelte +91 -91
  48. package/dist/Components/Nav/ServiceMenuItem.svelte +91 -91
  49. package/dist/Components/Nav/ServicesNav.svelte +53 -53
  50. package/dist/Components/NumberInput.svelte +144 -144
  51. package/dist/Components/PageHeading.svelte +36 -36
  52. package/dist/Components/PasswordInput.svelte +73 -73
  53. package/dist/Components/Portal.svelte +25 -25
  54. package/dist/Components/ProgressBubble.svelte +80 -80
  55. package/dist/Components/QuerySelect.svelte +411 -411
  56. package/dist/Components/SingleSelect.svelte +261 -261
  57. package/dist/Components/StepButton.svelte +120 -120
  58. package/dist/Components/StepForm.svelte +108 -108
  59. package/dist/Components/Switch.svelte +36 -36
  60. package/dist/Components/Table/Body/QuickSearchCell.svelte +632 -632
  61. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +30 -30
  62. package/dist/Components/Table/Body/Rows/ColumnList.svelte +56 -56
  63. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +179 -179
  64. package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +49 -49
  65. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +180 -180
  66. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +102 -102
  67. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +119 -119
  68. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +114 -114
  69. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +96 -96
  70. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +72 -72
  71. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +131 -131
  72. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +144 -144
  73. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +238 -238
  74. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +358 -358
  75. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +338 -338
  76. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +183 -183
  77. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +309 -309
  78. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +369 -369
  79. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +170 -170
  80. package/dist/Components/Table/Body/Rows/TableRow.svelte +259 -259
  81. package/dist/Components/Table/Body/TableBody.svelte +67 -67
  82. package/dist/Components/Table/Headers/HighlightAllHeader.svelte +39 -39
  83. package/dist/Components/Table/Headers/SelectAllHeader.svelte +28 -28
  84. package/dist/Components/Table/Headers/TableHead.svelte +260 -260
  85. package/dist/Components/Table/Misc/ColumnPanel.svelte +78 -78
  86. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +99 -99
  87. package/dist/Components/Table/Misc/FilterInput.svelte +556 -556
  88. package/dist/Components/Table/Misc/FilterPanel.svelte +46 -46
  89. package/dist/Components/Table/Misc/FilterPanelModal.svelte +67 -67
  90. package/dist/Components/Table/Misc/SidePanel.svelte +32 -32
  91. package/dist/Components/Table/Misc/TableFooter.svelte +304 -304
  92. package/dist/Components/Table/Misc/TableHorizontalBar.svelte +156 -156
  93. package/dist/Components/Table/Misc/TableSidebar.svelte +176 -176
  94. package/dist/Components/Table/Misc/ToolboxPanel.svelte +77 -77
  95. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +91 -91
  96. package/dist/Components/Table/NestedTable.svelte +84 -84
  97. package/dist/Components/Table/Table.svelte +492 -492
  98. package/dist/Components/Test/TestContextConsumer.svelte +13 -13
  99. package/dist/Components/TextArea.svelte +108 -108
  100. package/dist/Components/TextInput.svelte +147 -147
  101. package/dist/Components/ThreeStateRadio.svelte +124 -124
  102. package/dist/Components/Touch/BoolCard.svelte +52 -52
  103. package/dist/Components/Touch/DateModal.svelte +217 -217
  104. package/dist/Components/Touch/EditCard.svelte +52 -52
  105. package/dist/Components/Touch/InfoCard.svelte +24 -24
  106. package/dist/Components/Touch/InfoTextCard.svelte +21 -21
  107. package/dist/Components/Touch/ModalExplanation.svelte +20 -20
  108. package/dist/Components/Touch/NumberKeyboard.svelte +268 -268
  109. package/dist/Components/Touch/NumberModal.svelte +69 -69
  110. package/dist/Components/Touch/PlusMinusCard.svelte +50 -50
  111. package/dist/Components/Touch/SelectModal.svelte +105 -105
  112. package/dist/Components/Touch/SummaryCard.svelte +65 -65
  113. package/dist/Components/Touch/TextAreaModal.svelte +86 -86
  114. package/dist/Components/Touch/TextModal.svelte +123 -123
  115. package/dist/Components/Touch/TouchCard.svelte +28 -28
  116. package/dist/Components/Touch/TouchModal.svelte +259 -259
  117. package/dist/Components/Touch/UtilityButton.svelte +91 -91
  118. package/dist/Components/VerticalTabGroup.svelte +66 -66
  119. package/dist/Components/VerticalTabGroupButton.svelte +97 -97
  120. package/dist/Helpers/Datamatrix.d.ts +10 -10
  121. package/dist/Helpers/Datamatrix.js +1 -1
  122. package/dist/Helpers/Helpers.svelte.js +6 -4
  123. package/dist/Types/Examples/ExampleModal.svelte +34 -34
  124. package/dist/index.d.ts +1 -0
  125. package/dist/scss/_basics.scss +12 -12
  126. package/dist/scss/_colours.scss +134 -134
  127. package/dist/scss/_mixins.scss +3016 -3016
  128. package/dist/scss/_sizing.scss +69 -69
  129. package/dist/scss/_transitions.scss +8 -8
  130. package/package.json +2 -2
@@ -1,199 +1,199 @@
1
- <svelte:options runes />
2
-
3
- <script module lang="ts">
4
- import { TooltipContext } from '../Contexts/TooltipContext.svelte.js';
5
- import { Delay } from '../Delay/Delay.js';
6
- import { passthrough } from '../Helpers/Helpers.svelte.js';
7
- import { Colour, ColourSet } from '../scss/colours.js';
8
- import { Side } from '../Types/Internal/Side.js';
9
- import { Size } from '../Types/Internal/Size.js';
10
- import { Variant } from '../Types/Internal/Variant.js';
11
- import { getContext } from 'svelte';
12
- import type { ButtonProps } from './ButtonProps.js';
13
- import Icon from './Icon.svelte';
14
-
15
- const paddingSizesVertical: Record<Size, string> = {
16
- [Size.Tiny]: '0.25rem',
17
- [Size.Small]: '0.375rem',
18
- [Size.MediumSmall]: '0.5rem',
19
- // [Size.Medium]: '0.625rem',
20
- [Size.Medium]: '0.90625rem',
21
- [Size.MediumLarge]: '0.90625rem',
22
- [Size.Large]: '0.925rem',
23
- [Size.XLarge]: '1.0125rem',
24
- [Size.DoubleXLarge]: '1.1rem',
25
- [Size.TripleXLarge]: '1.2975rem',
26
- [Size.FillWidth]: '0.75rem', // TODO decide
27
- [Size.FillHeight]: '0' // TODO decide
28
- };
29
-
30
- // TODO alter the values for these if required
31
- const paddingSizesHorizontal: Record<Size, string> = {
32
- [Size.Tiny]: '0.4875rem',
33
- [Size.Small]: '0.8rem',
34
- [Size.MediumSmall]: '0.6625rem',
35
- [Size.Medium]: '0.75rem',
36
- [Size.MediumLarge]: '0.8375rem',
37
- [Size.Large]: '0.925rem',
38
- [Size.XLarge]: '1.0125rem',
39
- [Size.DoubleXLarge]: '1.1rem',
40
- [Size.TripleXLarge]: '1.2975rem',
41
- [Size.FillWidth]: '0.75rem', // TODO decide
42
- [Size.FillHeight]: '0.75rem' // TODO decide
43
- };
44
-
45
- // const fontSizes: Record<Size, string> = {
46
- // [Size.Tiny]: '0.8rem',
47
- // [Size.Small]: '0.85rem',
48
- // [Size.MediumSmall]: '0.94rem',
49
- // [Size.Medium]: '1rem',
50
- // [Size.MediumLarge]: '1rem',
51
- // [Size.Large]: '1.16rem',
52
- // [Size.XLarge]: '1.32rem',
53
- // [Size.DoubleXLarge]: '1.48rem',
54
- // [Size.TripleXLarge]: '1.64rem',
55
- // [Size.FillWidth]: '1rem', // TODO decide
56
- // [Size.FillHeight]: '1rem' // TODO decide
57
- // };
58
-
59
- // TODO
60
- const borderSizes: Record<Size, string> = {
61
- [Size.Tiny]: '0.1875rem',
62
- [Size.Small]: '0.1875rem',
63
- [Size.MediumSmall]: '0.1875rem',
64
- [Size.Medium]: '0.1875rem',
65
- [Size.MediumLarge]: '0.1875rem',
66
- [Size.Large]: '0.1875rem',
67
- [Size.XLarge]: '0.1875rem',
68
- [Size.DoubleXLarge]: '0.1875rem',
69
- [Size.TripleXLarge]: '0.1875rem',
70
- [Size.FillWidth]: '0.1875rem', // TODO decide
71
- [Size.FillHeight]: '0.1875rem' // TODO decide
72
- };
73
-
74
- const iconColours: Record<ColourSet, Colour | undefined> = {
75
- [ColourSet.Primary]: Colour['$ui-white'],
76
- [ColourSet.CallToAction]: Colour['$ui-white'],
77
- [ColourSet.Secondary]: undefined,
78
- [ColourSet.Auxiliary]: undefined,
79
- [ColourSet.Warning]: Colour['$error-border'],
80
- [ColourSet.Error]: Colour['$error-border'],
81
- [ColourSet.Info]: Colour['$error-border']
82
- };
83
- </script>
84
-
85
- <script lang="ts">
86
- const {
87
- type = 'button',
88
- variant = Variant.Default,
89
- toggled = false,
90
- iconLeft,
91
- iconTop,
92
- iconRight,
93
- iconBottom,
94
- nowrap = false,
95
- side,
96
- size = Size.Medium,
97
- label,
98
- colourSet = ColourSet.Secondary,
99
- dashed = false,
100
- disabled = false,
101
- fullWidth = false,
102
- onclick,
103
- onfocus,
104
- onblur,
105
- children,
106
- relative,
107
- noninteractive
108
- }: ButtonProps = $props();
109
- const tooltipContext = getContext<TooltipContext>(TooltipContext.identifier);
110
- </script>
111
-
112
- <!-- title={label} -->
113
- <!-- style="--font-size: {fontSizes[
114
- size
115
- ]};" -->
116
- <button
117
- onmouseenter={(e) => {
118
- if (label) {
119
- const rect = (e.target as HTMLButtonElement).getBoundingClientRect();
120
- tooltipContext.showTooltip({
121
- text: label,
122
- arrow: side ?? Side.Left,
123
- delay: Delay.Default,
124
- rect
125
- });
126
- }
127
- }}
128
- onmouseleave={() => {
129
- if (label) {
130
- tooltipContext.hideTooltip(label);
131
- }
132
- }}
133
- class:noninteractive
134
- class:relative
135
- class:default={variant === Variant.Default}
136
- class:card-inner={variant === Variant.CardInner}
137
- class:card={variant === Variant.Card}
138
- class:call-to-action={colourSet === ColourSet.CallToAction}
139
- class:primary={colourSet === ColourSet.Primary}
140
- class:secondary-colour={colourSet === ColourSet.Secondary}
141
- class:secondary-variant={variant === Variant.Secondary}
142
- class:warning={colourSet === ColourSet.Warning}
143
- class:error={colourSet === ColourSet.Error}
144
- class:info={colourSet === ColourSet.Info}
145
- class:fill-height={size === Size.FillHeight}
146
- class:fill-width={size === Size.FillWidth}
147
- style="--fallback-padding-horizontal: {paddingSizesHorizontal[
148
- size
149
- ]}; --fallback-padding-vertical: {paddingSizesVertical[size]}; --border-width: {borderSizes[
150
- size
151
- ]};"
152
- class:dashed
153
- class:full-width={fullWidth}
154
- class:toolbar={variant === Variant.Toolbar}
155
- class:left={side === Side.Left}
156
- class:right={side === Side.Right}
157
- class:top={side === Side.Top}
158
- class:bottom={side === Side.Bottom}
159
- class:toggled
160
- class:nowrap
161
- {type}
162
- aria-label={label}
163
- {disabled}
164
- onclick={(e) => {
165
- // e.stopImmediatePropagation();
166
- // if (dev) {
167
- // // console.trace();
168
- // }
169
- if (label) {
170
- tooltipContext.hideTooltip(label);
171
- }
172
- onclick?.(e);
173
- }}
174
- {onfocus}
175
- {onblur}
176
- onkeydown={passthrough}
177
- >
178
- <div class="icon-container">
179
- {#if iconLeft}
180
- <Icon {...iconLeft} colour={iconColours[colourSet]} size={iconLeft.size ?? size} />
181
- {/if}
182
- {#if iconTop}
183
- <Icon {...iconTop} />
184
- {/if}
185
- {#if children}
186
- <span>{@render children()}</span>
187
- {/if}
188
- {#if iconBottom}
189
- <Icon {...iconBottom} />
190
- {/if}
191
- {#if iconRight}
192
- <Icon {...iconRight} colour={iconColours[colourSet]} size={iconRight.size ?? size} />
193
- {/if}
194
- </div>
195
- </button>
196
-
1
+ <svelte:options runes />
2
+
3
+ <script module lang="ts">
4
+ import { TooltipContext } from '../Contexts/TooltipContext.svelte.js';
5
+ import { Delay } from '../Delay/Delay.js';
6
+ import { passthrough } from '../Helpers/Helpers.svelte.js';
7
+ import { Colour, ColourSet } from '../scss/colours.js';
8
+ import { Side } from '../Types/Internal/Side.js';
9
+ import { Size } from '../Types/Internal/Size.js';
10
+ import { Variant } from '../Types/Internal/Variant.js';
11
+ import { getContext } from 'svelte';
12
+ import type { ButtonProps } from './ButtonProps.js';
13
+ import Icon from './Icon.svelte';
14
+
15
+ const paddingSizesVertical: Record<Size, string> = {
16
+ [Size.Tiny]: '0.25rem',
17
+ [Size.Small]: '0.375rem',
18
+ [Size.MediumSmall]: '0.5rem',
19
+ // [Size.Medium]: '0.625rem',
20
+ [Size.Medium]: '0.90625rem',
21
+ [Size.MediumLarge]: '0.90625rem',
22
+ [Size.Large]: '0.925rem',
23
+ [Size.XLarge]: '1.0125rem',
24
+ [Size.DoubleXLarge]: '1.1rem',
25
+ [Size.TripleXLarge]: '1.2975rem',
26
+ [Size.FillWidth]: '0.75rem', // TODO decide
27
+ [Size.FillHeight]: '0' // TODO decide
28
+ };
29
+
30
+ // TODO alter the values for these if required
31
+ const paddingSizesHorizontal: Record<Size, string> = {
32
+ [Size.Tiny]: '0.4875rem',
33
+ [Size.Small]: '0.8rem',
34
+ [Size.MediumSmall]: '0.6625rem',
35
+ [Size.Medium]: '0.75rem',
36
+ [Size.MediumLarge]: '0.8375rem',
37
+ [Size.Large]: '0.925rem',
38
+ [Size.XLarge]: '1.0125rem',
39
+ [Size.DoubleXLarge]: '1.1rem',
40
+ [Size.TripleXLarge]: '1.2975rem',
41
+ [Size.FillWidth]: '0.75rem', // TODO decide
42
+ [Size.FillHeight]: '0.75rem' // TODO decide
43
+ };
44
+
45
+ // const fontSizes: Record<Size, string> = {
46
+ // [Size.Tiny]: '0.8rem',
47
+ // [Size.Small]: '0.85rem',
48
+ // [Size.MediumSmall]: '0.94rem',
49
+ // [Size.Medium]: '1rem',
50
+ // [Size.MediumLarge]: '1rem',
51
+ // [Size.Large]: '1.16rem',
52
+ // [Size.XLarge]: '1.32rem',
53
+ // [Size.DoubleXLarge]: '1.48rem',
54
+ // [Size.TripleXLarge]: '1.64rem',
55
+ // [Size.FillWidth]: '1rem', // TODO decide
56
+ // [Size.FillHeight]: '1rem' // TODO decide
57
+ // };
58
+
59
+ // TODO
60
+ const borderSizes: Record<Size, string> = {
61
+ [Size.Tiny]: '0.1875rem',
62
+ [Size.Small]: '0.1875rem',
63
+ [Size.MediumSmall]: '0.1875rem',
64
+ [Size.Medium]: '0.1875rem',
65
+ [Size.MediumLarge]: '0.1875rem',
66
+ [Size.Large]: '0.1875rem',
67
+ [Size.XLarge]: '0.1875rem',
68
+ [Size.DoubleXLarge]: '0.1875rem',
69
+ [Size.TripleXLarge]: '0.1875rem',
70
+ [Size.FillWidth]: '0.1875rem', // TODO decide
71
+ [Size.FillHeight]: '0.1875rem' // TODO decide
72
+ };
73
+
74
+ const iconColours: Record<ColourSet, Colour | undefined> = {
75
+ [ColourSet.Primary]: Colour['$ui-white'],
76
+ [ColourSet.CallToAction]: Colour['$ui-white'],
77
+ [ColourSet.Secondary]: undefined,
78
+ [ColourSet.Auxiliary]: undefined,
79
+ [ColourSet.Warning]: Colour['$error-border'],
80
+ [ColourSet.Error]: Colour['$error-border'],
81
+ [ColourSet.Info]: Colour['$error-border']
82
+ };
83
+ </script>
84
+
85
+ <script lang="ts">
86
+ const {
87
+ type = 'button',
88
+ variant = Variant.Default,
89
+ toggled = false,
90
+ iconLeft,
91
+ iconTop,
92
+ iconRight,
93
+ iconBottom,
94
+ nowrap = false,
95
+ side,
96
+ size = Size.Medium,
97
+ label,
98
+ colourSet = ColourSet.Secondary,
99
+ dashed = false,
100
+ disabled = false,
101
+ fullWidth = false,
102
+ onclick,
103
+ onfocus,
104
+ onblur,
105
+ children,
106
+ relative,
107
+ noninteractive
108
+ }: ButtonProps = $props();
109
+ const tooltipContext = getContext<TooltipContext>(TooltipContext.identifier);
110
+ </script>
111
+
112
+ <!-- title={label} -->
113
+ <!-- style="--font-size: {fontSizes[
114
+ size
115
+ ]};" -->
116
+ <button
117
+ onmouseenter={(e) => {
118
+ if (label) {
119
+ const rect = (e.target as HTMLButtonElement).getBoundingClientRect();
120
+ tooltipContext.showTooltip({
121
+ text: label,
122
+ arrow: side ?? Side.Left,
123
+ delay: Delay.Default,
124
+ rect
125
+ });
126
+ }
127
+ }}
128
+ onmouseleave={() => {
129
+ if (label) {
130
+ tooltipContext.hideTooltip(label);
131
+ }
132
+ }}
133
+ class:noninteractive
134
+ class:relative
135
+ class:default={variant === Variant.Default}
136
+ class:card-inner={variant === Variant.CardInner}
137
+ class:card={variant === Variant.Card}
138
+ class:call-to-action={colourSet === ColourSet.CallToAction}
139
+ class:primary={colourSet === ColourSet.Primary}
140
+ class:secondary-colour={colourSet === ColourSet.Secondary}
141
+ class:secondary-variant={variant === Variant.Secondary}
142
+ class:warning={colourSet === ColourSet.Warning}
143
+ class:error={colourSet === ColourSet.Error}
144
+ class:info={colourSet === ColourSet.Info}
145
+ class:fill-height={size === Size.FillHeight}
146
+ class:fill-width={size === Size.FillWidth}
147
+ style="--fallback-padding-horizontal: {paddingSizesHorizontal[
148
+ size
149
+ ]}; --fallback-padding-vertical: {paddingSizesVertical[size]}; --border-width: {borderSizes[
150
+ size
151
+ ]};"
152
+ class:dashed
153
+ class:full-width={fullWidth}
154
+ class:toolbar={variant === Variant.Toolbar}
155
+ class:left={side === Side.Left}
156
+ class:right={side === Side.Right}
157
+ class:top={side === Side.Top}
158
+ class:bottom={side === Side.Bottom}
159
+ class:toggled
160
+ class:nowrap
161
+ {type}
162
+ aria-label={label}
163
+ {disabled}
164
+ onclick={(e) => {
165
+ // e.stopImmediatePropagation();
166
+ // if (dev) {
167
+ // // console.trace();
168
+ // }
169
+ if (label) {
170
+ tooltipContext.hideTooltip(label);
171
+ }
172
+ onclick?.(e);
173
+ }}
174
+ {onfocus}
175
+ {onblur}
176
+ onkeydown={passthrough}
177
+ >
178
+ <div class="icon-container">
179
+ {#if iconLeft}
180
+ <Icon {...iconLeft} colour={iconColours[colourSet]} size={iconLeft.size ?? size} />
181
+ {/if}
182
+ {#if iconTop}
183
+ <Icon {...iconTop} />
184
+ {/if}
185
+ {#if children}
186
+ <span>{@render children()}</span>
187
+ {/if}
188
+ {#if iconBottom}
189
+ <Icon {...iconBottom} />
190
+ {/if}
191
+ {#if iconRight}
192
+ <Icon {...iconRight} colour={iconColours[colourSet]} size={iconRight.size ?? size} />
193
+ {/if}
194
+ </div>
195
+ </button>
196
+
197
197
  <style>.card {
198
198
  color: #3a4952;
199
199
  fill: #3a4952;
@@ -507,4 +507,4 @@ button.toolbar:not([disabled]).toggled.bottom {
507
507
  }
508
508
  button.toolbar:not([disabled]).toggled svg {
509
509
  fill: #259fc7;
510
- }</style>
510
+ }</style>
@@ -1,70 +1,70 @@
1
- <svelte:options runes />
2
-
3
- <script lang="ts" module>
4
- import { generateShortUUID } from '../Helpers/Helpers.svelte.js';
5
- import { Size } from '../Types/Internal/Size.js';
6
- import type { ChangeEventHandler } from 'svelte/elements';
7
- import Icon from './Icon.svelte';
8
- import type { IconProps } from './IconProps.js';
9
-
10
- export interface CheckboxProps {
11
- value: boolean;
12
- id?: string;
13
- icon?: IconProps;
14
- size?: Size;
15
- label?: string;
16
- disabled?: boolean;
17
- onchange?: ChangeEventHandler<HTMLInputElement>;
18
- }
19
- </script>
20
-
21
- <script lang="ts">
22
- let {
23
- value = false,
24
- id = generateShortUUID(),
25
- icon,
26
- size,
27
- label,
28
- disabled,
29
- onchange
30
- }: CheckboxProps = $props();
31
- </script>
32
-
33
- {#if icon}
34
- <!-- style="--inner-checkbox-container-width: {(size != undefined ? widths[size] : undefined) ??
35
- '2.75rem'};" -->
36
- <div
37
- class="outer-checkbox-container"
38
- class:fill-width={size === Size.FillWidth}
39
- class:fill-height={size === Size.FillHeight}
40
- >
41
- <div class="inner-checkbox-container with-icon" class:disabled>
42
- <input
43
- {id}
44
- name={id}
45
- class="with-icon"
46
- {onchange}
47
- type="checkbox"
48
- {disabled}
49
- checked={value}
50
- />
51
- <label class="icon-label" for={id} class:disabled>
52
- <Icon {...icon} size={icon.size ?? size ?? Size.DoubleXLarge} />
53
- </label>
54
- </div>
55
- {#if label}
56
- <label class="text-label" for={id}>{label}</label>
57
- {/if}
58
- </div>
59
- {:else}
60
- <div class="checkbox-container">
61
- <input {id} {onchange} type="checkbox" checked={value} {disabled} />
62
- {#if label}
63
- <label class="text-label" for={id}>{label}</label>
64
- {/if}
65
- </div>
66
- {/if}
67
-
1
+ <svelte:options runes />
2
+
3
+ <script lang="ts" module>
4
+ import { generateShortUUID } from '../Helpers/Helpers.svelte.js';
5
+ import { Size } from '../Types/Internal/Size.js';
6
+ import type { ChangeEventHandler } from 'svelte/elements';
7
+ import Icon from './Icon.svelte';
8
+ import type { IconProps } from './IconProps.js';
9
+
10
+ export interface CheckboxProps {
11
+ value: boolean;
12
+ id?: string;
13
+ icon?: IconProps;
14
+ size?: Size;
15
+ label?: string;
16
+ disabled?: boolean;
17
+ onchange?: ChangeEventHandler<HTMLInputElement>;
18
+ }
19
+ </script>
20
+
21
+ <script lang="ts">
22
+ let {
23
+ value = false,
24
+ id = generateShortUUID(),
25
+ icon,
26
+ size,
27
+ label,
28
+ disabled,
29
+ onchange
30
+ }: CheckboxProps = $props();
31
+ </script>
32
+
33
+ {#if icon}
34
+ <!-- style="--inner-checkbox-container-width: {(size != undefined ? widths[size] : undefined) ??
35
+ '2.75rem'};" -->
36
+ <div
37
+ class="outer-checkbox-container"
38
+ class:fill-width={size === Size.FillWidth}
39
+ class:fill-height={size === Size.FillHeight}
40
+ >
41
+ <div class="inner-checkbox-container with-icon" class:disabled>
42
+ <input
43
+ {id}
44
+ name={id}
45
+ class="with-icon"
46
+ {onchange}
47
+ type="checkbox"
48
+ {disabled}
49
+ checked={value}
50
+ />
51
+ <label class="icon-label" for={id} class:disabled>
52
+ <Icon {...icon} size={icon.size ?? size ?? Size.DoubleXLarge} />
53
+ </label>
54
+ </div>
55
+ {#if label}
56
+ <label class="text-label" for={id}>{label}</label>
57
+ {/if}
58
+ </div>
59
+ {:else}
60
+ <div class="checkbox-container">
61
+ <input {id} {onchange} type="checkbox" checked={value} {disabled} />
62
+ {#if label}
63
+ <label class="text-label" for={id}>{label}</label>
64
+ {/if}
65
+ </div>
66
+ {/if}
67
+
68
68
  <style>.outer-checkbox-container {
69
69
  display: flex;
70
70
  flex-flow: row nowrap;
@@ -148,4 +148,4 @@ label {
148
148
  display: block;
149
149
  cursor: pointer;
150
150
  position: relative;
151
- }</style>
151
+ }</style>