@lavalogic/scoria 0.40.31 → 0.40.33

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 (137) hide show
  1. package/README.md +58 -58
  2. package/dist/Components/AccordionGroup.svelte +28 -28
  3. package/dist/Components/AccordionGroupButton.svelte +60 -60
  4. package/dist/Components/Action.svelte +48 -48
  5. package/dist/Components/AlertModal.svelte +102 -102
  6. package/dist/Components/Base/ContextWrapper.svelte +45 -45
  7. package/dist/Components/Base/Pagination.svelte +135 -135
  8. package/dist/Components/Base/Snippets.svelte +25 -25
  9. package/dist/Components/BigRadioSet.svelte +34 -34
  10. package/dist/Components/Bubble.svelte +38 -38
  11. package/dist/Components/Button.svelte +83 -83
  12. package/dist/Components/Checkbox.svelte +71 -71
  13. package/dist/Components/CollapsibleCard.svelte +59 -59
  14. package/dist/Components/CollapsibleMenuGroup.svelte +43 -43
  15. package/dist/Components/ConditionBuilder/ConditionBuilder.svelte +101 -101
  16. package/dist/Components/Contexts/ContextMenu.svelte +76 -76
  17. package/dist/Components/Contexts/ContextMenuDivider.svelte +15 -15
  18. package/dist/Components/Contexts/ContextMenuOption.svelte +38 -38
  19. package/dist/Components/Contexts/Toast.svelte +71 -71
  20. package/dist/Components/Contexts/ToastContainer.svelte +34 -34
  21. package/dist/Components/Contexts/Tooltip.svelte +32 -32
  22. package/dist/Components/DataMatrixIcon.svelte +37 -37
  23. package/dist/Components/DateInput.svelte +80 -80
  24. package/dist/Components/DatePicker.svelte +86 -86
  25. package/dist/Components/DesktopModal.svelte +65 -65
  26. package/dist/Components/Dial.svelte +35 -35
  27. package/dist/Components/DimensionInput.svelte +95 -95
  28. package/dist/Components/DragMenu/DragMenuHolder.svelte +53 -53
  29. package/dist/Components/DragMenu/DraggableCard.svelte +49 -49
  30. package/dist/Components/FileCard.svelte +18 -18
  31. package/dist/Components/FileUpload.svelte +115 -115
  32. package/dist/Components/GridInput.svelte +123 -123
  33. package/dist/Components/GridInputSet.svelte +21 -21
  34. package/dist/Components/HorizontalTabGroup.svelte +54 -54
  35. package/dist/Components/HorizontalTabGroupButton.svelte +32 -32
  36. package/dist/Components/Icon.svelte +68 -68
  37. package/dist/Components/Icons.d.ts +3 -3
  38. package/dist/Components/Icons.js +11 -11
  39. package/dist/Components/InfoAlert.svelte +32 -32
  40. package/dist/Components/LoadingAnimation.svelte +228 -227
  41. package/dist/Components/LoadingModal.svelte +19 -19
  42. package/dist/Components/LoadingOverlay.svelte +20 -20
  43. package/dist/Components/Modal.svelte +127 -127
  44. package/dist/Components/MultiSelect.svelte +126 -126
  45. package/dist/Components/Nav/Nav.svelte +71 -71
  46. package/dist/Components/Nav/NavServiceMenuList.svelte +37 -37
  47. package/dist/Components/Nav/NavTab.svelte +46 -46
  48. package/dist/Components/Nav/ServiceMenuItem.svelte +62 -62
  49. package/dist/Components/Nav/ServicesNav.svelte +50 -50
  50. package/dist/Components/NumberInput.svelte +98 -98
  51. package/dist/Components/OptionCards.svelte +58 -58
  52. package/dist/Components/PageHeading.svelte +21 -21
  53. package/dist/Components/PasswordInput.svelte +61 -61
  54. package/dist/Components/PopoverButton.svelte +53 -53
  55. package/dist/Components/Portal.svelte +7 -7
  56. package/dist/Components/ProgressBubble.svelte +42 -42
  57. package/dist/Components/QuerySelect.svelte +102 -102
  58. package/dist/Components/ResourceCalendar/ResourceCalendar.svelte +241 -241
  59. package/dist/Components/SidebarPanel.svelte +32 -32
  60. package/dist/Components/SingleSelect.svelte +122 -122
  61. package/dist/Components/StepButton.svelte +48 -48
  62. package/dist/Components/StepForm.svelte +58 -58
  63. package/dist/Components/Switch.svelte +43 -43
  64. package/dist/Components/Table/ARCHITECTURE.md +298 -298
  65. package/dist/Components/Table/Body/Rows/ColumnHighlight.svelte +30 -30
  66. package/dist/Components/Table/Body/Rows/ColumnList.svelte +24 -24
  67. package/dist/Components/Table/Body/Rows/ColumnListRow.svelte +165 -165
  68. package/dist/Components/Table/Body/Rows/Columns/AccessorComponent.svelte +13 -13
  69. package/dist/Components/Table/Body/Rows/Columns/ActionsCell.svelte +120 -120
  70. package/dist/Components/Table/Body/Rows/Columns/BubbleCell.svelte +81 -81
  71. package/dist/Components/Table/Body/Rows/Columns/ExpandCell.svelte +92 -92
  72. package/dist/Components/Table/Body/Rows/Columns/FocusableImmutableCell.svelte +110 -110
  73. package/dist/Components/Table/Body/Rows/Columns/ProgressCell.svelte +54 -54
  74. package/dist/Components/Table/Body/Rows/Columns/TableAction.svelte +35 -35
  75. package/dist/Components/Table/Body/Rows/Columns/TableCheckbox.svelte +64 -64
  76. package/dist/Components/Table/Body/Rows/Columns/TableColumn.svelte +82 -82
  77. package/dist/Components/Table/Body/Rows/Columns/TableDatePicker.svelte +88 -88
  78. package/dist/Components/Table/Body/Rows/Columns/TableNumberInput.svelte +90 -90
  79. package/dist/Components/Table/Body/Rows/Columns/TableQuerySelect.svelte +96 -96
  80. package/dist/Components/Table/Body/Rows/Columns/TableRowSelectionCheckbox.svelte +71 -71
  81. package/dist/Components/Table/Body/Rows/Columns/TableSelect.svelte +124 -124
  82. package/dist/Components/Table/Body/Rows/Columns/TableTextInput.svelte +91 -91
  83. package/dist/Components/Table/Body/Rows/Columns/ValidityCell.svelte +88 -88
  84. package/dist/Components/Table/Body/Rows/TableRow.svelte +127 -127
  85. package/dist/Components/Table/Body/TableBody.svelte +92 -92
  86. package/dist/Components/Table/Headers/HighlightAllHeader.svelte +25 -25
  87. package/dist/Components/Table/Headers/SelectAllHeader.svelte +20 -20
  88. package/dist/Components/Table/Headers/TableHead.svelte +175 -175
  89. package/dist/Components/Table/Misc/ColumnPanel.svelte +32 -32
  90. package/dist/Components/Table/Misc/ColumnPanelModal.svelte +29 -29
  91. package/dist/Components/Table/Misc/FilterInput.svelte +326 -326
  92. package/dist/Components/Table/Misc/FilterPanel.svelte +79 -79
  93. package/dist/Components/Table/Misc/FilterPanelModal.svelte +21 -21
  94. package/dist/Components/Table/Misc/ShareViewModal.svelte +118 -118
  95. package/dist/Components/Table/Misc/SidePanel.svelte +24 -24
  96. package/dist/Components/Table/Misc/TableConfigurationModal.svelte +318 -318
  97. package/dist/Components/Table/Misc/TableFooter.svelte +201 -201
  98. package/dist/Components/Table/Misc/TableHorizontalBar.svelte +112 -112
  99. package/dist/Components/Table/Misc/TableSidebar.svelte +116 -116
  100. package/dist/Components/Table/Misc/TableViewDropdown.svelte +25 -25
  101. package/dist/Components/Table/Misc/ToolboxPanel.svelte +60 -60
  102. package/dist/Components/Table/Misc/ToolboxPanelModal.svelte +63 -63
  103. package/dist/Components/Table/Misc/UpdateViewOptionsModal.svelte +101 -101
  104. package/dist/Components/Table/NestedTable.svelte +29 -29
  105. package/dist/Components/Table/Table.svelte +140 -140
  106. package/dist/Components/Test/TestContextConsumer.svelte +8 -8
  107. package/dist/Components/TextArea.svelte +92 -90
  108. package/dist/Components/TextInput.svelte +128 -117
  109. package/dist/Components/ThreeStateRadio.svelte +101 -101
  110. package/dist/Components/Touch/BoolCard.svelte +27 -27
  111. package/dist/Components/Touch/DateModal.svelte +98 -98
  112. package/dist/Components/Touch/EditCard.svelte +44 -44
  113. package/dist/Components/Touch/InfoCard.svelte +25 -25
  114. package/dist/Components/Touch/InfoTextCard.svelte +22 -22
  115. package/dist/Components/Touch/ModalExplanation.svelte +13 -13
  116. package/dist/Components/Touch/NumberKeyboard.svelte +81 -81
  117. package/dist/Components/Touch/NumberModal.svelte +49 -49
  118. package/dist/Components/Touch/PlusMinusCard.svelte +40 -40
  119. package/dist/Components/Touch/SelectModal.svelte +86 -86
  120. package/dist/Components/Touch/SummaryCard.svelte +74 -74
  121. package/dist/Components/Touch/TextAreaModal.svelte +53 -53
  122. package/dist/Components/Touch/TextModal.svelte +56 -56
  123. package/dist/Components/Touch/TouchCard.svelte +28 -28
  124. package/dist/Components/Touch/TouchModal.svelte +141 -141
  125. package/dist/Components/Touch/UtilityButton.svelte +63 -63
  126. package/dist/Components/VerticalTabGroup.svelte +38 -38
  127. package/dist/Components/VerticalTabGroupButton.svelte +46 -46
  128. package/dist/Helpers/Datamatrix.d.ts +19 -19
  129. package/dist/Helpers/Datamatrix.js +291 -291
  130. package/dist/Types/Examples/ExampleModal.svelte +27 -27
  131. package/dist/paraglide/README.md +1 -1
  132. package/dist/scss/_basics.scss +12 -12
  133. package/dist/scss/_colours.scss +140 -140
  134. package/dist/scss/_motion.scss +57 -57
  135. package/dist/scss/_sizing.scss +85 -85
  136. package/dist/scss/_transitions.scss +8 -8
  137. package/package.json +1 -1
@@ -1,8 +1,8 @@
1
- <svelte:options runes />
2
-
3
- <script
4
- lang="ts"
5
- generics="T"
1
+ <svelte:options runes />
2
+
3
+ <script
4
+ lang="ts"
5
+ generics="T"
6
6
  >import { m as i18n } from "../../paraglide/messages.js";
7
7
  import { afterNavigate } from "$app/navigation";
8
8
  import { Size } from "../../Types/Internal/Size.js";
@@ -27,71 +27,71 @@ afterNavigate(() => {
27
27
  showServicesDialog = false;
28
28
  showUserDialog = false;
29
29
  });
30
- </script>
31
-
32
- <nav class="main-navigation">
33
- {#if typeof brand === 'string'}
34
- <span class="nav-link brand">{brand}</span>
35
- {:else if brand}
36
- <span class="nav-link brand">{@render brand()}</span>
37
- {/if}
38
-
39
- <div class="nav-link">
40
- <button
41
- onclick={() => {
42
- showServicesDialog = !showServicesDialog;
43
- }}
44
- >
45
- <div class="delimited">
46
- <Icon
47
- name="block-menu"
48
- size={Size.Medium}
49
- />
50
- <span>{i18n['scoria.label.services']()}</span>
51
- </div>
52
- </button>
53
-
54
- {#if showServicesDialog}
55
- <ServicesNav
56
- onclose={() => {
57
- showServicesDialog = false;
58
- }}
59
- {serviceTabs}
60
- {selectedServiceTab}
61
- />
62
- {/if}
63
- </div>
64
-
65
- <div class="nav-search-container"></div>
66
- {#if extras}
67
- <div class="nav-link spaced selects">
68
- {@render extras()}
69
- </div>
70
- {/if}
71
-
72
- <div>
73
- <button
74
- onclick={() => {
75
- showUserDialog = !showUserDialog;
76
- }}
77
- >
78
- <span class="nav-link padded">
79
- <span
80
- class="user-icon"
81
- class:visible={hasLetters}
82
- class:single-letter={singleLetter}>{userIcon}</span
83
- >
84
- <span class="user-name">{userName}</span>
85
- </span>
86
- </button>
87
- {#if showUserDialog}
88
- {@render userDialog(() => {
89
- showUserDialog = false;
90
- })}
91
- {/if}
92
- </div>
93
- </nav>
94
-
30
+ </script>
31
+
32
+ <nav class="main-navigation">
33
+ {#if typeof brand === 'string'}
34
+ <span class="nav-link brand">{brand}</span>
35
+ {:else if brand}
36
+ <span class="nav-link brand">{@render brand()}</span>
37
+ {/if}
38
+
39
+ <div class="nav-link">
40
+ <button
41
+ onclick={() => {
42
+ showServicesDialog = !showServicesDialog;
43
+ }}
44
+ >
45
+ <div class="delimited">
46
+ <Icon
47
+ name="block-menu"
48
+ size={Size.Medium}
49
+ />
50
+ <span>{i18n['scoria.label.services']()}</span>
51
+ </div>
52
+ </button>
53
+
54
+ {#if showServicesDialog}
55
+ <ServicesNav
56
+ onclose={() => {
57
+ showServicesDialog = false;
58
+ }}
59
+ {serviceTabs}
60
+ {selectedServiceTab}
61
+ />
62
+ {/if}
63
+ </div>
64
+
65
+ <div class="nav-search-container"></div>
66
+ {#if extras}
67
+ <div class="nav-link spaced selects">
68
+ {@render extras()}
69
+ </div>
70
+ {/if}
71
+
72
+ <div>
73
+ <button
74
+ onclick={() => {
75
+ showUserDialog = !showUserDialog;
76
+ }}
77
+ >
78
+ <span class="nav-link padded">
79
+ <span
80
+ class="user-icon"
81
+ class:visible={hasLetters}
82
+ class:single-letter={singleLetter}>{userIcon}</span
83
+ >
84
+ <span class="user-name">{userName}</span>
85
+ </span>
86
+ </button>
87
+ {#if showUserDialog}
88
+ {@render userDialog(() => {
89
+ showUserDialog = false;
90
+ })}
91
+ {/if}
92
+ </div>
93
+ </nav>
94
+
95
95
  <style>div.overlay {
96
96
  position: fixed;
97
97
  top: calc(3.25rem + var(--env-border-height, 0));
@@ -214,4 +214,4 @@ div.delimited {
214
214
  align-items: center;
215
215
  justify-content: center;
216
216
  gap: 0.5rem;
217
- }</style>
217
+ }</style>
@@ -1,5 +1,5 @@
1
- <svelte:options runes />
2
-
1
+ <svelte:options runes />
2
+
3
3
  <script lang="ts">import { page } from "$app/state";
4
4
  import { Colour } from "../../scss/colours.js";
5
5
  import { Size } from "../../Types/Internal/Size.js";
@@ -21,40 +21,40 @@ const activePath = $derived.by(() => {
21
21
  }
22
22
  return best;
23
23
  });
24
- </script>
25
-
26
- <div
27
- class="wrapper"
28
- style="--icon-column-width: {Dimensions.smallPanelWidth}rem"
29
- role="group"
30
- aria-label={title}
31
- >
32
- <h3>
33
- <div class="icon">
34
- {#if icon}
35
- <Icon
36
- size={Size.Large}
37
- colour={Colour['$font-primary']}
38
- {...icon}
39
- />
40
- {/if}
41
- </div>
42
- {title}
43
- </h3>
44
-
45
- <div
46
- class="items"
47
- role="list"
48
- >
49
- {#each items as { item } (item.label)}
50
- <ServiceMenuItem
51
- {item}
52
- selected={item.path != null && item.path === activePath}
53
- />
54
- {/each}
55
- </div>
56
- </div>
57
-
24
+ </script>
25
+
26
+ <div
27
+ class="wrapper"
28
+ style="--icon-column-width: {Dimensions.smallPanelWidth}rem"
29
+ role="group"
30
+ aria-label={title}
31
+ >
32
+ <h3>
33
+ <div class="icon">
34
+ {#if icon}
35
+ <Icon
36
+ size={Size.Large}
37
+ colour={Colour['$font-primary']}
38
+ {...icon}
39
+ />
40
+ {/if}
41
+ </div>
42
+ {title}
43
+ </h3>
44
+
45
+ <div
46
+ class="items"
47
+ role="list"
48
+ >
49
+ {#each items as { item } (item.label)}
50
+ <ServiceMenuItem
51
+ {item}
52
+ selected={item.path != null && item.path === activePath}
53
+ />
54
+ {/each}
55
+ </div>
56
+ </div>
57
+
58
58
  <style>h3 {
59
59
  font-size: 1.5rem;
60
60
  display: flex;
@@ -78,4 +78,4 @@ h3 .icon {
78
78
  .wrapper .items {
79
79
  flex-shrink: 1;
80
80
  overflow: auto;
81
- }</style>
81
+ }</style>
@@ -1,8 +1,8 @@
1
- <svelte:options runes />
2
-
3
- <script
4
- lang="ts"
5
- generics="Args"
1
+ <svelte:options runes />
2
+
3
+ <script
4
+ lang="ts"
5
+ generics="Args"
6
6
  >import { useAsyncFlag } from "../../Helpers/AsyncFlag.svelte.js";
7
7
  import { Colour } from "../../scss/colours.js";
8
8
  import { Size } from "../../Types/Internal/Size.js";
@@ -15,46 +15,46 @@ let { option, selected } = $props();
15
15
  const isValid = useAsyncFlag(() => option.isValid, true);
16
16
  const disabled = useAsyncFlag(() => option.disabled, false);
17
17
  const visible = useAsyncFlag(() => option.visible, true);
18
- </script>
19
-
20
- <button
21
- class:selected
22
- onclick={() => {
23
- option.onclick();
24
- }}
25
- type="button"
26
- class="tab"
27
- role="tab"
28
- aria-selected={selected}
29
- aria-label={option.label}
30
- disabled={disabled.value}
31
- class:invalid={!isValid.value}
32
- class:hidden={!visible.value}
33
- >
34
- <Icon
35
- name="nothing"
36
- colour={Colour['$brand-primary']}
37
- size={Size.MediumLarge}
38
- {...option.iconLeft}
39
- />
40
-
41
- {option.label}
42
- {#if option.isValid === false}
43
- <Icon
44
- name="error"
45
- colour={Colour['$error-border']}
46
- size={Size.MediumLarge}
47
- />
48
- {:else}
49
- <Icon
50
- name="nothing"
51
- colour={Colour['$brand-primary']}
52
- size={Size.MediumLarge}
53
- {...option.iconRight}
54
- />
55
- {/if}
56
- </button>
57
-
18
+ </script>
19
+
20
+ <button
21
+ class:selected
22
+ onclick={() => {
23
+ option.onclick();
24
+ }}
25
+ type="button"
26
+ class="tab"
27
+ role="tab"
28
+ aria-selected={selected}
29
+ aria-label={option.label}
30
+ disabled={disabled.value}
31
+ class:invalid={!isValid.value}
32
+ class:hidden={!visible.value}
33
+ >
34
+ <Icon
35
+ name="nothing"
36
+ colour={Colour['$brand-primary']}
37
+ size={Size.MediumLarge}
38
+ {...option.iconLeft}
39
+ />
40
+
41
+ {option.label}
42
+ {#if option.isValid === false}
43
+ <Icon
44
+ name="error"
45
+ colour={Colour['$error-border']}
46
+ size={Size.MediumLarge}
47
+ />
48
+ {:else}
49
+ <Icon
50
+ name="nothing"
51
+ colour={Colour['$brand-primary']}
52
+ size={Size.MediumLarge}
53
+ {...option.iconRight}
54
+ />
55
+ {/if}
56
+ </button>
57
+
58
58
  <style>button.tab.hidden {
59
59
  display: none !important;
60
60
  }
@@ -87,4 +87,4 @@ const visible = useAsyncFlag(() => option.visible, true);
87
87
  }
88
88
  .tab.invalid {
89
89
  color: #aa1414;
90
- }</style>
90
+ }</style>
@@ -1,5 +1,5 @@
1
- <svelte:options runes />
2
-
1
+ <svelte:options runes />
2
+
3
3
  <script lang="ts">import { dev } from "$app/environment";
4
4
  import { resolve } from "$app/paths";
5
5
  import { page } from "$app/state";
@@ -42,65 +42,65 @@ function safeHref(path) {
42
42
  }
43
43
  return resolve(path);
44
44
  }
45
- </script>
46
-
47
- {#if item.callback}
48
- <button
49
- onclick={() => {
50
- item.callback();
51
- }}
52
- style="--iconWidth: {Dimensions.smallPanelWidth}rem"
53
- class:selected
54
- class:hidden={!visible.value}
55
- >
56
- <!-- <div class="selected-marker"></div> -->
57
- <div class="icon-wrapper">
58
- {#if item.iconName}
59
- <Icon
60
- name={item.iconName}
61
- size={Size.Medium}
62
- label={item.label}
63
- />
64
- {/if}
65
- </div>
66
- <div class="spacer"></div>
67
- <div class="text">
68
- <div class="label">{item.label}</div>
69
- {#if item.subtitle}
70
- <div class="subtitle">{item.subtitle}</div>
71
- {/if}
72
- </div></button
73
- >
74
- {:else if item.path}
75
- <a
76
- href={safeHref(item.path)}
77
- style="--iconWidth: {Dimensions.smallPanelWidth}rem"
78
- aria-current={selected ? 'page' : undefined}
79
- class:selected
80
- class:hidden={!visible.value}
81
- >
82
- <!-- <div class="selected-marker"></div> -->
83
- <div class="icon-wrapper">
84
- {#if item.iconName}
85
- <Icon
86
- name={item.iconName}
87
- size={Size.Medium}
88
- label={item.label}
89
- />
90
- {/if}
91
- </div>
92
- <div class="spacer"></div>
93
- <div class="text">
94
- <div class="label">{item.label}</div>
95
- {#if item.subtitle}
96
- <div class="subtitle">{item.subtitle}</div>
97
- {/if}
98
- </div></a
99
- >
100
- {:else if dev}
101
- Error: Callback had neither callback nor path
102
- {/if}
103
-
45
+ </script>
46
+
47
+ {#if item.callback}
48
+ <button
49
+ onclick={() => {
50
+ item.callback();
51
+ }}
52
+ style="--iconWidth: {Dimensions.smallPanelWidth}rem"
53
+ class:selected
54
+ class:hidden={!visible.value}
55
+ >
56
+ <!-- <div class="selected-marker"></div> -->
57
+ <div class="icon-wrapper">
58
+ {#if item.iconName}
59
+ <Icon
60
+ name={item.iconName}
61
+ size={Size.Medium}
62
+ label={item.label}
63
+ />
64
+ {/if}
65
+ </div>
66
+ <div class="spacer"></div>
67
+ <div class="text">
68
+ <div class="label">{item.label}</div>
69
+ {#if item.subtitle}
70
+ <div class="subtitle">{item.subtitle}</div>
71
+ {/if}
72
+ </div></button
73
+ >
74
+ {:else if item.path}
75
+ <a
76
+ href={safeHref(item.path)}
77
+ style="--iconWidth: {Dimensions.smallPanelWidth}rem"
78
+ aria-current={selected ? 'page' : undefined}
79
+ class:selected
80
+ class:hidden={!visible.value}
81
+ >
82
+ <!-- <div class="selected-marker"></div> -->
83
+ <div class="icon-wrapper">
84
+ {#if item.iconName}
85
+ <Icon
86
+ name={item.iconName}
87
+ size={Size.Medium}
88
+ label={item.label}
89
+ />
90
+ {/if}
91
+ </div>
92
+ <div class="spacer"></div>
93
+ <div class="text">
94
+ <div class="label">{item.label}</div>
95
+ {#if item.subtitle}
96
+ <div class="subtitle">{item.subtitle}</div>
97
+ {/if}
98
+ </div></a
99
+ >
100
+ {:else if dev}
101
+ Error: Callback had neither callback nor path
102
+ {/if}
103
+
104
104
  <style>button.hidden,
105
105
  a.hidden {
106
106
  display: none !important;
@@ -168,4 +168,4 @@ button .spacer,
168
168
  a .spacer {
169
169
  width: 0.5rem;
170
170
  flex-shrink: 0;
171
- }</style>
171
+ }</style>
@@ -1,8 +1,8 @@
1
- <svelte:options runes />
2
-
3
- <script
4
- lang="ts"
5
- generics="Args"
1
+ <svelte:options runes />
2
+
3
+ <script
4
+ lang="ts"
5
+ generics="Args"
6
6
  >import { m as i18n } from "../../paraglide/messages.js";
7
7
  import { devCatch } from "../../Helpers/Helpers.svelte.js";
8
8
  import HorizontalTabGroup from "../HorizontalTabGroup.svelte";
@@ -27,50 +27,50 @@ $effect(() => {
27
27
  dialog.showModal();
28
28
  }
29
29
  });
30
- </script>
31
-
32
- <dialog
33
- bind:this={dialogRef}
34
- aria-label={i18n['scoria.label.services']()}
35
- class="overlay"
36
- oncancel={(e) => {
37
- // Escape fires `cancel` first; prevent the native close so we
38
- // fully delegate to the parent (it owns the visibility flag).
39
- e.preventDefault();
40
- fireClose();
41
- }}
42
- onclick={(e) => {
43
- // Native <dialog> click target is the dialog element itself when
44
- // the user clicks the backdrop; clicks on inner content bubble
45
- // up with a different target.
46
- if (dialogRef === e.target) {
47
- fireClose();
48
- }
49
- }}
50
- >
51
- <div
52
- role="navigation"
53
- aria-label={i18n['scoria.label.services_tabs']()}
54
- class="services"
55
- >
56
- <HorizontalTabGroup
57
- name="nav-services"
58
- tabs={serviceTabs}
59
- selected={selectedServiceTab}
60
- tabComponent={navTab}
61
- noRadius
62
- grow
63
- />
64
- </div>
65
- </dialog>
66
-
67
- {#snippet navTab(option: TabOption<Args>, selected: boolean)}
68
- <NavTab
69
- {option}
70
- {selected}
71
- />
72
- {/snippet}
73
-
30
+ </script>
31
+
32
+ <dialog
33
+ bind:this={dialogRef}
34
+ aria-label={i18n['scoria.label.services']()}
35
+ class="overlay"
36
+ oncancel={(e) => {
37
+ // Escape fires `cancel` first; prevent the native close so we
38
+ // fully delegate to the parent (it owns the visibility flag).
39
+ e.preventDefault();
40
+ fireClose();
41
+ }}
42
+ onclick={(e) => {
43
+ // Native <dialog> click target is the dialog element itself when
44
+ // the user clicks the backdrop; clicks on inner content bubble
45
+ // up with a different target.
46
+ if (dialogRef === e.target) {
47
+ fireClose();
48
+ }
49
+ }}
50
+ >
51
+ <div
52
+ role="navigation"
53
+ aria-label={i18n['scoria.label.services_tabs']()}
54
+ class="services"
55
+ >
56
+ <HorizontalTabGroup
57
+ name="nav-services"
58
+ tabs={serviceTabs}
59
+ selected={selectedServiceTab}
60
+ tabComponent={navTab}
61
+ noRadius
62
+ grow
63
+ />
64
+ </div>
65
+ </dialog>
66
+
67
+ {#snippet navTab(option: TabOption<Args>, selected: boolean)}
68
+ <NavTab
69
+ {option}
70
+ {selected}
71
+ />
72
+ {/snippet}
73
+
74
74
  <style>dialog.overlay {
75
75
  position: fixed;
76
76
  top: calc(3.25rem + var(--env-border-height, 0));
@@ -108,4 +108,4 @@ div.services {
108
108
  justify-content: stretch;
109
109
  height: var(--services-nav-height, min(710px, 80%));
110
110
  width: var(--services-nav-width, 800px);
111
- }</style>
111
+ }</style>