slexkit 0.2.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 (221) hide show
  1. package/AGENTS.slexkit.md +29 -0
  2. package/CHANGELOG.md +90 -0
  3. package/LICENSE +21 -0
  4. package/README.md +165 -0
  5. package/README.zh-CN.md +165 -0
  6. package/dist/ai/llms-authoring.txt +44 -0
  7. package/dist/ai/llms-components.txt +669 -0
  8. package/dist/ai/llms-full.txt +6586 -0
  9. package/dist/ai/llms-runtime.txt +1475 -0
  10. package/dist/ai/llms-toolhost.txt +295 -0
  11. package/dist/ai/llms.txt +69 -0
  12. package/dist/ai/slexkit-ai-manifest.json +2922 -0
  13. package/dist/base.css +621 -0
  14. package/dist/chunks/accordion-5f0nvjjm.js +376 -0
  15. package/dist/chunks/accordion-830dw78f.js +221 -0
  16. package/dist/chunks/accordion-cfjyxw93.js +630 -0
  17. package/dist/chunks/accordion-cw5r75jm.js +424 -0
  18. package/dist/chunks/accordion-ehnhpeca.js +492 -0
  19. package/dist/chunks/accordion-hzyrngd6.js +2377 -0
  20. package/dist/chunks/accordion-nw12ytps.js +6823 -0
  21. package/dist/components/accordion.js +163 -0
  22. package/dist/components/badge.js +80 -0
  23. package/dist/components/button.css +114 -0
  24. package/dist/components/button.js +16 -0
  25. package/dist/components/callout.js +154 -0
  26. package/dist/components/card.js +95 -0
  27. package/dist/components/checkbox.js +114 -0
  28. package/dist/components/choice.css +165 -0
  29. package/dist/components/code-block.js +264 -0
  30. package/dist/components/collapsible.js +111 -0
  31. package/dist/components/column.js +49 -0
  32. package/dist/components/content.css +474 -0
  33. package/dist/components/disclosure.css +162 -0
  34. package/dist/components/display.css +259 -0
  35. package/dist/components/divider.js +98 -0
  36. package/dist/components/feedback.css +219 -0
  37. package/dist/components/grid.js +67 -0
  38. package/dist/components/index.js +13364 -0
  39. package/dist/components/input.css +1247 -0
  40. package/dist/components/input.js +384 -0
  41. package/dist/components/link.js +77 -0
  42. package/dist/components/progress.js +111 -0
  43. package/dist/components/radio-group.js +189 -0
  44. package/dist/components/row.js +200 -0
  45. package/dist/components/section.js +161 -0
  46. package/dist/components/select.css +260 -0
  47. package/dist/components/select.js +16 -0
  48. package/dist/components/slider.css +125 -0
  49. package/dist/components/slider.js +175 -0
  50. package/dist/components/specs.js +1090 -0
  51. package/dist/components/stat.js +178 -0
  52. package/dist/components/submit.css +9 -0
  53. package/dist/components/submit.js +77 -0
  54. package/dist/components/switch.css +114 -0
  55. package/dist/components/switch.js +114 -0
  56. package/dist/components/table.js +157 -0
  57. package/dist/components/tabs.css +192 -0
  58. package/dist/components/tabs.js +17 -0
  59. package/dist/components/text-input.css +245 -0
  60. package/dist/components/text.js +50 -0
  61. package/dist/components/toast.js +240 -0
  62. package/dist/components/tooling.css +1009 -0
  63. package/dist/components/tooling.js +48951 -0
  64. package/dist/runtime.cjs +3728 -0
  65. package/dist/runtime.js +3686 -0
  66. package/dist/slexkit.cjs +18539 -0
  67. package/dist/slexkit.css +4776 -0
  68. package/dist/slexkit.js +18497 -0
  69. package/dist/tooling.js +59141 -0
  70. package/dist/types/components/accordion.d.ts +2 -0
  71. package/dist/types/components/badge.d.ts +2 -0
  72. package/dist/types/components/button.d.ts +2 -0
  73. package/dist/types/components/callout.d.ts +2 -0
  74. package/dist/types/components/card.d.ts +2 -0
  75. package/dist/types/components/checkbox.d.ts +2 -0
  76. package/dist/types/components/code-block.d.ts +2 -0
  77. package/dist/types/components/collapsible.d.ts +2 -0
  78. package/dist/types/components/column.d.ts +2 -0
  79. package/dist/types/components/divider.d.ts +2 -0
  80. package/dist/types/components/entries/accordion.d.ts +3 -0
  81. package/dist/types/components/entries/badge.d.ts +3 -0
  82. package/dist/types/components/entries/button.d.ts +3 -0
  83. package/dist/types/components/entries/callout.d.ts +3 -0
  84. package/dist/types/components/entries/card.d.ts +3 -0
  85. package/dist/types/components/entries/checkbox.d.ts +3 -0
  86. package/dist/types/components/entries/code-block.d.ts +3 -0
  87. package/dist/types/components/entries/collapsible.d.ts +3 -0
  88. package/dist/types/components/entries/column.d.ts +3 -0
  89. package/dist/types/components/entries/divider.d.ts +3 -0
  90. package/dist/types/components/entries/grid.d.ts +3 -0
  91. package/dist/types/components/entries/input.d.ts +3 -0
  92. package/dist/types/components/entries/link.d.ts +3 -0
  93. package/dist/types/components/entries/progress.d.ts +3 -0
  94. package/dist/types/components/entries/radio-group.d.ts +3 -0
  95. package/dist/types/components/entries/row.d.ts +3 -0
  96. package/dist/types/components/entries/section.d.ts +3 -0
  97. package/dist/types/components/entries/select.d.ts +3 -0
  98. package/dist/types/components/entries/slider.d.ts +3 -0
  99. package/dist/types/components/entries/specs.d.ts +1 -0
  100. package/dist/types/components/entries/stat.d.ts +3 -0
  101. package/dist/types/components/entries/submit.d.ts +3 -0
  102. package/dist/types/components/entries/switch.d.ts +3 -0
  103. package/dist/types/components/entries/table.d.ts +3 -0
  104. package/dist/types/components/entries/tabs.d.ts +3 -0
  105. package/dist/types/components/entries/text.d.ts +3 -0
  106. package/dist/types/components/entries/toast.d.ts +3 -0
  107. package/dist/types/components/entries/tooling.d.ts +1 -0
  108. package/dist/types/components/grid.d.ts +2 -0
  109. package/dist/types/components/index.d.ts +6 -0
  110. package/dist/types/components/input.d.ts +2 -0
  111. package/dist/types/components/link.d.ts +2 -0
  112. package/dist/types/components/progress.d.ts +2 -0
  113. package/dist/types/components/radio-group.d.ts +2 -0
  114. package/dist/types/components/row.d.ts +2 -0
  115. package/dist/types/components/section.d.ts +2 -0
  116. package/dist/types/components/select.d.ts +2 -0
  117. package/dist/types/components/slider.d.ts +2 -0
  118. package/dist/types/components/spec-helpers.d.ts +23 -0
  119. package/dist/types/components/spec-registry.d.ts +12 -0
  120. package/dist/types/components/spec-schema.d.ts +74 -0
  121. package/dist/types/components/specs.d.ts +2 -0
  122. package/dist/types/components/stat.d.ts +2 -0
  123. package/dist/types/components/submit.d.ts +2 -0
  124. package/dist/types/components/svelte/adapter.d.ts +3 -0
  125. package/dist/types/components/svelte/bindProps.d.ts +2 -0
  126. package/dist/types/components/svelte/helpers.d.ts +33 -0
  127. package/dist/types/components/svelte/layout/balancedTiles.d.ts +14 -0
  128. package/dist/types/components/svelte/types.d.ts +12 -0
  129. package/dist/types/components/switch.d.ts +2 -0
  130. package/dist/types/components/table.d.ts +2 -0
  131. package/dist/types/components/tabs.d.ts +2 -0
  132. package/dist/types/components/text.d.ts +2 -0
  133. package/dist/types/components/toast.d.ts +2 -0
  134. package/dist/types/components/tooling.d.ts +2 -0
  135. package/dist/types/components-svelte.d.ts +5 -0
  136. package/dist/types/engine/component-scope.d.ts +14 -0
  137. package/dist/types/engine/component-state.d.ts +9 -0
  138. package/dist/types/engine/diagnostics.d.ts +24 -0
  139. package/dist/types/engine/engineering.d.ts +11 -0
  140. package/dist/types/engine/eval.d.ts +5 -0
  141. package/dist/types/engine/index.d.ts +26 -0
  142. package/dist/types/engine/markdown-runtime.d.ts +33 -0
  143. package/dist/types/engine/merge.d.ts +1 -0
  144. package/dist/types/engine/reactive.d.ts +11 -0
  145. package/dist/types/engine/registry.d.ts +4 -0
  146. package/dist/types/engine/renderer.d.ts +6 -0
  147. package/dist/types/engine/sandbox-runner.d.ts +2 -0
  148. package/dist/types/engine/secure-runtime.d.ts +214 -0
  149. package/dist/types/engine/store.d.ts +12 -0
  150. package/dist/types/engine/types.d.ts +58 -0
  151. package/dist/types/icons/manager.d.ts +17 -0
  152. package/dist/types/icons/phosphor.d.ts +45 -0
  153. package/dist/types/index.d.ts +61 -0
  154. package/dist/types/runtime.d.ts +32 -0
  155. package/dist/types/toolhost/index.d.ts +78 -0
  156. package/dist/types/tooling-umd.d.ts +47 -0
  157. package/dist/types/version.d.ts +8 -0
  158. package/dist/umd/slexkit.tooling.umd.js +66553 -0
  159. package/dist/umd/slexkit.umd.js +18552 -0
  160. package/package.json +136 -0
  161. package/scripts/cli.mjs +47 -0
  162. package/skills/slexkit/SKILL.md +27 -0
  163. package/skills/slexkit-author/SKILL.md +50 -0
  164. package/skills/slexkit-host-integration/SKILL.md +33 -0
  165. package/skills/slexkit-secure-runtime/SKILL.md +31 -0
  166. package/skills/slexkit-toolhost/SKILL.md +38 -0
  167. package/skills/slexkit-update/SKILL.md +23 -0
  168. package/src/components/svelte/InlineIcon.svelte +66 -0
  169. package/src/components/svelte/adapter.ts +76 -0
  170. package/src/components/svelte/bindProps.ts +9 -0
  171. package/src/components/svelte/content/Badge.svelte +19 -0
  172. package/src/components/svelte/content/Callout.svelte +57 -0
  173. package/src/components/svelte/content/CodeBlock.svelte +130 -0
  174. package/src/components/svelte/content/Divider.svelte +21 -0
  175. package/src/components/svelte/content/Link.svelte +21 -0
  176. package/src/components/svelte/content/Section.svelte +24 -0
  177. package/src/components/svelte/content/Table.svelte +44 -0
  178. package/src/components/svelte/disclosure/Accordion.svelte +100 -0
  179. package/src/components/svelte/disclosure/Collapsible.svelte +45 -0
  180. package/src/components/svelte/display/Stat.svelte +102 -0
  181. package/src/components/svelte/display/Text.svelte +11 -0
  182. package/src/components/svelte/feedback/Progress.svelte +34 -0
  183. package/src/components/svelte/feedback/Toast.svelte +105 -0
  184. package/src/components/svelte/helpers.ts +148 -0
  185. package/src/components/svelte/input/Button.svelte +78 -0
  186. package/src/components/svelte/input/Checkbox.svelte +52 -0
  187. package/src/components/svelte/input/Input.svelte +202 -0
  188. package/src/components/svelte/input/RadioGroup.svelte +71 -0
  189. package/src/components/svelte/input/Select.svelte +220 -0
  190. package/src/components/svelte/input/Slider.svelte +96 -0
  191. package/src/components/svelte/input/Submit.svelte +32 -0
  192. package/src/components/svelte/input/Switch.svelte +53 -0
  193. package/src/components/svelte/input/Tabs.svelte +188 -0
  194. package/src/components/svelte/layout/Card.svelte +17 -0
  195. package/src/components/svelte/layout/Column.svelte +15 -0
  196. package/src/components/svelte/layout/Grid.svelte +26 -0
  197. package/src/components/svelte/layout/Row.svelte +105 -0
  198. package/src/components/svelte/layout/balancedTiles.ts +85 -0
  199. package/src/components/svelte/tooling/CodeMirror.svelte +91 -0
  200. package/src/components/svelte/tooling/Playground.svelte +765 -0
  201. package/src/components/svelte/tooling/PlaygroundMarkdown.svelte +26 -0
  202. package/src/components/svelte/tooling/PlaygroundSlexCode.svelte +76 -0
  203. package/src/components/svelte/types.ts +17 -0
  204. package/src/styles/animation.css +98 -0
  205. package/src/styles/components/button.css +114 -0
  206. package/src/styles/components/choice.css +165 -0
  207. package/src/styles/components/select.css +260 -0
  208. package/src/styles/components/slider.css +125 -0
  209. package/src/styles/components/submit.css +9 -0
  210. package/src/styles/components/switch.css +114 -0
  211. package/src/styles/components/tabs.css +192 -0
  212. package/src/styles/components/text-input.css +245 -0
  213. package/src/styles/content.css +474 -0
  214. package/src/styles/disclosure.css +162 -0
  215. package/src/styles/display.css +259 -0
  216. package/src/styles/entry.css +34 -0
  217. package/src/styles/feedback.css +219 -0
  218. package/src/styles/input.css +8 -0
  219. package/src/styles/layout.css +365 -0
  220. package/src/styles/theme.css +31 -0
  221. package/src/styles/tooling.css +1009 -0
@@ -0,0 +1,114 @@
1
+ import {
2
+ InlineIcon
3
+ } from "../chunks/accordion-cw5r75jm.js";
4
+ import {
5
+ append,
6
+ bindPropStore,
7
+ bind_checked,
8
+ child,
9
+ createSvelteRenderer,
10
+ delegate,
11
+ delegated,
12
+ emit,
13
+ from_html,
14
+ get,
15
+ if_block,
16
+ pop,
17
+ proxy,
18
+ push,
19
+ remove_input_defaults,
20
+ reset,
21
+ set,
22
+ set_attribute,
23
+ set_text,
24
+ sibling,
25
+ state,
26
+ template_effect,
27
+ text1 as text,
28
+ user_effect
29
+ } from "../chunks/accordion-nw12ytps.js";
30
+
31
+ // src/components/entries/checkbox.ts
32
+ import { register } from "../runtime.js";
33
+
34
+ // src/components/svelte/input/Checkbox.svelte
35
+ var root = from_html(`<span class="slex-choice-event-layer"><label class="slex-checkbox-field"><input type="checkbox" class="slex-checkbox"/> <span class="slex-checkbox-label"><!> <span> </span></span></label></span>`);
36
+ function Checkbox($$anchor, $$props) {
37
+ push($$props, true);
38
+ let p = state(proxy({}));
39
+ let checked = state(false);
40
+ let lastHapticAt = 0;
41
+ user_effect(() => bindPropStore($$props.props, (next) => {
42
+ set(p, next, true);
43
+ set(checked, !!(next.checked ?? next.value));
44
+ }));
45
+ function toggle(event) {
46
+ if (get(p).disabled)
47
+ return;
48
+ set(checked, event.target.checked, true);
49
+ emit($$props.ctx, "change", get(checked));
50
+ }
51
+ function vibrate(duration = 8) {
52
+ if (get(p).haptic === false || get(p).haptics === false || get(p).disabled)
53
+ return;
54
+ const api = globalThis.navigator;
55
+ api?.vibrate?.(duration);
56
+ }
57
+ function haptic(duration = 8) {
58
+ const now = Date.now();
59
+ if (now - lastHapticAt < 80)
60
+ return;
61
+ lastHapticAt = now;
62
+ vibrate(duration);
63
+ }
64
+ var span = root();
65
+ var label = child(span);
66
+ var input = child(label);
67
+ remove_input_defaults(input);
68
+ var span_1 = sibling(input, 2);
69
+ var node = child(span_1);
70
+ {
71
+ var consequent = ($$anchor2) => {
72
+ InlineIcon($$anchor2, {
73
+ get name() {
74
+ return get(p).icon;
75
+ },
76
+ className: "slex-checkbox-icon"
77
+ });
78
+ };
79
+ if_block(node, ($$render) => {
80
+ if (get(p).icon)
81
+ $$render(consequent);
82
+ });
83
+ }
84
+ var span_2 = sibling(node, 2);
85
+ var text_1 = child(span_2, true);
86
+ reset(span_2);
87
+ reset(span_1);
88
+ reset(label);
89
+ reset(span);
90
+ template_effect(($0, $1) => {
91
+ input.disabled = !!get(p).disabled;
92
+ set_attribute(input, "data-state", get(checked) ? "checked" : "unchecked");
93
+ set_attribute(input, "aria-label", $0);
94
+ set_text(text_1, $1);
95
+ }, [
96
+ () => text(get(p)["aria-label"] ?? get(p).ariaLabel ?? get(p).label) || undefined,
97
+ () => text(get(p).label)
98
+ ]);
99
+ delegated("pointerdown", span, () => haptic(8));
100
+ delegated("click", span, () => haptic(8));
101
+ delegated("change", input, toggle);
102
+ bind_checked(input, () => get(checked), ($$value) => set(checked, $$value));
103
+ append($$anchor, span);
104
+ pop();
105
+ }
106
+ delegate(["pointerdown", "click", "change"]);
107
+
108
+ // src/components/entries/checkbox.ts
109
+ register("checkbox", createSvelteRenderer("checkbox", Checkbox), { state: "checked" });
110
+ var checkbox_default = Checkbox;
111
+ export {
112
+ checkbox_default as default,
113
+ Checkbox
114
+ };
@@ -0,0 +1,165 @@
1
+ .slex-checkbox-field,
2
+ .slex-radio-field {
3
+ display: inline-flex;
4
+ align-items: center;
5
+ gap: 0.5rem;
6
+ color: var(--foreground);
7
+ font-size: 0.875rem;
8
+ cursor: pointer;
9
+ user-select: none;
10
+ transition: color 150ms ease, opacity 150ms ease;
11
+ }
12
+
13
+ .slex-checkbox-label,
14
+ .slex-radio-label {
15
+ display: inline-flex;
16
+ align-items: center;
17
+ gap: 0.375rem;
18
+ min-width: 0;
19
+ color: var(--foreground);
20
+ line-height: 1.35;
21
+ transition: color 150ms ease;
22
+ }
23
+
24
+ .slex-checkbox,
25
+ .slex-radio {
26
+ box-sizing: border-box;
27
+ position: relative;
28
+ display: inline-grid;
29
+ place-items: center;
30
+ flex: 0 0 auto;
31
+ width: 1rem;
32
+ height: 1rem;
33
+ margin: 0;
34
+ border: 1.5px solid var(--input);
35
+ color: var(--primary);
36
+ accent-color: var(--primary);
37
+ background: var(--background);
38
+ cursor: pointer;
39
+ appearance: none;
40
+ -webkit-appearance: none;
41
+ transition:
42
+ background-color 150ms ease,
43
+ border-color 150ms ease,
44
+ box-shadow 150ms ease,
45
+ transform 120ms ease;
46
+ }
47
+
48
+ .slex-checkbox {
49
+ border-radius: calc(var(--radius) - 4px);
50
+ }
51
+
52
+ .slex-radio {
53
+ border-radius: 999px;
54
+ }
55
+
56
+ .slex-checkbox::after,
57
+ .slex-radio::after {
58
+ content: "";
59
+ display: block;
60
+ opacity: 0;
61
+ transform: scale(0.5);
62
+ transition: opacity 120ms ease, transform 140ms ease;
63
+ }
64
+
65
+ .slex-checkbox::after {
66
+ width: 0.55rem;
67
+ height: 0.34rem;
68
+ border: solid var(--primary-foreground);
69
+ border-width: 0 0 2px 2px;
70
+ transform: translateY(-0.08rem) rotate(-45deg) scale(0.5);
71
+ }
72
+
73
+ .slex-radio::after {
74
+ width: 0.45rem;
75
+ height: 0.45rem;
76
+ border-radius: 999px;
77
+ background: var(--primary-foreground);
78
+ }
79
+
80
+ .slex-checkbox-field:hover .slex-checkbox:not(:disabled),
81
+ .slex-radio-field:hover .slex-radio:not(:disabled) {
82
+ border-color: color-mix(in oklab, var(--primary) 48%, var(--input));
83
+ box-shadow: 0 0 0 4px color-mix(in oklab, var(--primary) 8%, transparent);
84
+ }
85
+
86
+ .slex-checkbox-field:active .slex-checkbox:not(:disabled),
87
+ .slex-radio-field:active .slex-radio:not(:disabled) {
88
+ transform: scale(0.92);
89
+ box-shadow: 0 0 0 5px color-mix(in oklab, var(--primary) 12%, transparent);
90
+ }
91
+
92
+ .slex-checkbox:checked,
93
+ .slex-radio:checked {
94
+ border-color: var(--primary);
95
+ background: var(--primary);
96
+ }
97
+
98
+ .slex-checkbox:checked::after,
99
+ .slex-radio:checked::after {
100
+ opacity: 1;
101
+ }
102
+
103
+ .slex-checkbox:checked::after {
104
+ transform: translateY(-0.08rem) rotate(-45deg) scale(1);
105
+ }
106
+
107
+ .slex-radio:checked::after {
108
+ transform: scale(1);
109
+ }
110
+
111
+ .slex-checkbox-field:hover .slex-checkbox-label,
112
+ .slex-radio-field:hover .slex-radio-label {
113
+ color: var(--foreground);
114
+ }
115
+
116
+ .slex-checkbox:focus-visible,
117
+ .slex-radio:focus-visible {
118
+ outline: 2px solid var(--ring);
119
+ outline-offset: 2px;
120
+ }
121
+
122
+ .slex-radio-group {
123
+ display: flex;
124
+ flex-direction: column;
125
+ gap: 0.625rem;
126
+ }
127
+
128
+ .slex-radio-group-label {
129
+ display: inline-flex;
130
+ align-items: center;
131
+ gap: 0.375rem;
132
+ min-width: 0;
133
+ color: var(--foreground);
134
+ font-size: 0.875rem;
135
+ font-weight: 500;
136
+ }
137
+
138
+ .slex-radio-group-list {
139
+ display: flex;
140
+ flex-direction: column;
141
+ gap: 0.5rem;
142
+ }
143
+
144
+ .slex-radio-group[data-orientation="horizontal"] .slex-radio-group-list {
145
+ flex-direction: row;
146
+ flex-wrap: wrap;
147
+ }
148
+
149
+ .slex-checkbox:disabled,
150
+ .slex-radio:disabled {
151
+ cursor: not-allowed;
152
+ opacity: 0.5;
153
+ box-shadow: none;
154
+ transform: none;
155
+ }
156
+
157
+ .slex-checkbox-field:has(.slex-checkbox:disabled),
158
+ .slex-radio-field:has(.slex-radio:disabled) {
159
+ cursor: not-allowed;
160
+ opacity: 0.65;
161
+ }
162
+
163
+ .slex-radio-indicator {
164
+ display: none;
165
+ }
@@ -0,0 +1,264 @@
1
+ import {
2
+ InlineIcon
3
+ } from "../chunks/accordion-cw5r75jm.js";
4
+ import {
5
+ append,
6
+ bindPropStore,
7
+ child,
8
+ clsx,
9
+ comment,
10
+ createSvelteRenderer,
11
+ each,
12
+ first_child,
13
+ from_html,
14
+ get,
15
+ if_block,
16
+ index,
17
+ pop,
18
+ proxy,
19
+ push,
20
+ reset,
21
+ set,
22
+ set_attribute,
23
+ set_class,
24
+ set_text,
25
+ sibling,
26
+ state,
27
+ template_effect,
28
+ text,
29
+ text1 as text2,
30
+ user_derived,
31
+ user_effect
32
+ } from "../chunks/accordion-nw12ytps.js";
33
+
34
+ // src/components/entries/code-block.ts
35
+ import { register } from "../runtime.js";
36
+
37
+ // src/components/svelte/content/CodeBlock.svelte
38
+ var root_3 = from_html(`<span> </span>`);
39
+ var root_4 = from_html(`<span class="slex-code-block-language"> </span>`);
40
+ var root_1 = from_html(`<figcaption class="slex-code-block-header"><span class="slex-code-block-title"><!> <!></span> <!></figcaption>`);
41
+ var root_7 = from_html(`<span> </span>`);
42
+ var root_5 = from_html(`<span class="slex-code-line"><span class="slex-code-line-content"></span></span>`);
43
+ var root = from_html(`<figure class="slex-code-block"><!> <pre class="slex-code-block-pre"><code></code></pre></figure>`);
44
+ function CodeBlock($$anchor, $$props) {
45
+ push($$props, true);
46
+ const supportedLanguages = new Set([
47
+ "bash",
48
+ "css",
49
+ "html",
50
+ "javascript",
51
+ "js",
52
+ "json",
53
+ "markdown",
54
+ "md",
55
+ "python",
56
+ "py",
57
+ "sh",
58
+ "shell",
59
+ "sql",
60
+ "ts",
61
+ "tsx",
62
+ "typescript",
63
+ "xml",
64
+ "yaml",
65
+ "yml"
66
+ ]);
67
+ const keywordLanguages = new Set(["javascript", "js", "ts", "tsx", "typescript"]);
68
+ const keywords = new Set([
69
+ "as",
70
+ "async",
71
+ "await",
72
+ "break",
73
+ "case",
74
+ "catch",
75
+ "class",
76
+ "const",
77
+ "continue",
78
+ "default",
79
+ "do",
80
+ "else",
81
+ "export",
82
+ "extends",
83
+ "finally",
84
+ "for",
85
+ "from",
86
+ "function",
87
+ "if",
88
+ "import",
89
+ "in",
90
+ "interface",
91
+ "let",
92
+ "new",
93
+ "of",
94
+ "return",
95
+ "switch",
96
+ "throw",
97
+ "try",
98
+ "type",
99
+ "var",
100
+ "while"
101
+ ]);
102
+ const literals = new Set(["false", "null", "true", "undefined"]);
103
+ const tokenPattern = /\/\/[^\n]*|\/\*[\s\S]*?\*\/|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|`(?:\\.|[^`\\])*`|\r\n|\r|\n|\b\d+(?:\.\d+)?\b|\b[$A-Z_a-z][$\w]*\b|./g;
104
+ let p = state(proxy({}));
105
+ let code = user_derived(() => text2(get(p).code ?? get(p).content ?? get(p).source));
106
+ let languageName = user_derived(() => text2(get(p).language).trim().toLowerCase());
107
+ let languageClass = user_derived(() => get(languageName) === "js" ? "javascript" : get(languageName) || "");
108
+ let lines = user_derived(() => highlightCode(get(code), get(languageName)) ?? plainCodeLines(get(code)));
109
+ let highlighted = user_derived(() => supportedLanguages.has(get(languageName)));
110
+ let showLineNumbers = user_derived(() => get(p).lineNumbers !== false && get(p).lineNumbers !== "false");
111
+ user_effect(() => bindPropStore($$props.props, (next) => set(p, next, true)));
112
+ function highlightCode(source, language) {
113
+ if (!supportedLanguages.has(language))
114
+ return null;
115
+ const tokens = Array.from(source.matchAll(tokenPattern), ([value]) => {
116
+ if (value.startsWith("//") || value.startsWith("/*"))
117
+ return { text: value, kind: "comment" };
118
+ if (/^["'`]/.test(value))
119
+ return { text: value, kind: "string" };
120
+ if (/^\d/.test(value))
121
+ return { text: value, kind: "number" };
122
+ if (literals.has(value))
123
+ return { text: value, kind: "literal" };
124
+ if (keywordLanguages.has(language) && keywords.has(value))
125
+ return { text: value, kind: "keyword" };
126
+ return { text: value };
127
+ });
128
+ return splitTokenLines(tokens);
129
+ }
130
+ function plainCodeLines(source) {
131
+ return splitTokenLines([{ text: source }]);
132
+ }
133
+ function splitTokenLines(tokens) {
134
+ const lines2 = [[]];
135
+ for (const token of tokens) {
136
+ for (const part of token.text.split(/(\r\n|\r|\n)/)) {
137
+ if (!part)
138
+ continue;
139
+ if (part === `
140
+ ` || part === "\r" || part === `\r
141
+ `) {
142
+ lines2.push([]);
143
+ } else {
144
+ lines2[lines2.length - 1].push({ ...token, text: part });
145
+ }
146
+ }
147
+ }
148
+ return lines2;
149
+ }
150
+ var figure = root();
151
+ var node = child(figure);
152
+ {
153
+ var consequent_3 = ($$anchor2) => {
154
+ var figcaption = root_1();
155
+ var span = child(figcaption);
156
+ var node_1 = child(span);
157
+ {
158
+ var consequent = ($$anchor3) => {
159
+ InlineIcon($$anchor3, {
160
+ get name() {
161
+ return get(p).icon;
162
+ },
163
+ className: "slex-code-block-icon"
164
+ });
165
+ };
166
+ if_block(node_1, ($$render) => {
167
+ if (get(p).icon)
168
+ $$render(consequent);
169
+ });
170
+ }
171
+ var node_2 = sibling(node_1, 2);
172
+ {
173
+ var consequent_1 = ($$anchor3) => {
174
+ var span_1 = root_3();
175
+ var text_1 = child(span_1, true);
176
+ reset(span_1);
177
+ template_effect(($0) => set_text(text_1, $0), [() => text2(get(p).title)]);
178
+ append($$anchor3, span_1);
179
+ };
180
+ if_block(node_2, ($$render) => {
181
+ if (get(p).title)
182
+ $$render(consequent_1);
183
+ });
184
+ }
185
+ reset(span);
186
+ var node_3 = sibling(span, 2);
187
+ {
188
+ var consequent_2 = ($$anchor3) => {
189
+ var span_2 = root_4();
190
+ var text_2 = child(span_2, true);
191
+ reset(span_2);
192
+ template_effect(($0) => set_text(text_2, $0), [() => text2(get(p).language)]);
193
+ append($$anchor3, span_2);
194
+ };
195
+ if_block(node_3, ($$render) => {
196
+ if (get(p).language)
197
+ $$render(consequent_2);
198
+ });
199
+ }
200
+ reset(figcaption);
201
+ append($$anchor2, figcaption);
202
+ };
203
+ if_block(node, ($$render) => {
204
+ if (get(p).title || get(p).language || get(p).icon)
205
+ $$render(consequent_3);
206
+ });
207
+ }
208
+ var pre = sibling(node, 2);
209
+ var code_1 = child(pre);
210
+ each(code_1, 21, () => get(lines), index, ($$anchor2, line) => {
211
+ var span_3 = root_5();
212
+ var span_4 = child(span_3);
213
+ each(span_4, 21, () => get(line), index, ($$anchor3, token) => {
214
+ var fragment_1 = comment();
215
+ var node_4 = first_child(fragment_1);
216
+ {
217
+ var consequent_4 = ($$anchor4) => {
218
+ var span_5 = root_7();
219
+ var text_3 = child(span_5, true);
220
+ reset(span_5);
221
+ template_effect(() => {
222
+ set_class(span_5, 1, `slex-code-token slex-code-token--${get(token).kind}`);
223
+ set_text(text_3, get(token).text);
224
+ });
225
+ append($$anchor4, span_5);
226
+ };
227
+ var alternate = ($$anchor4) => {
228
+ var text_4 = text();
229
+ template_effect(() => set_text(text_4, get(token).text));
230
+ append($$anchor4, text_4);
231
+ };
232
+ if_block(node_4, ($$render) => {
233
+ if (get(token).kind)
234
+ $$render(consequent_4);
235
+ else
236
+ $$render(alternate, -1);
237
+ });
238
+ }
239
+ append($$anchor3, fragment_1);
240
+ });
241
+ reset(span_4);
242
+ reset(span_3);
243
+ append($$anchor2, span_3);
244
+ });
245
+ reset(code_1);
246
+ reset(pre);
247
+ reset(figure);
248
+ template_effect(($0) => {
249
+ set_class(code_1, 1, $0);
250
+ set_attribute(code_1, "data-line-numbers", get(showLineNumbers) ? "true" : "false");
251
+ }, [
252
+ () => clsx(`${get(highlighted) ? "slex-code-highlight" : ""} slex-code-lines${get(p).language ? ` language-${get(highlighted) ? get(languageClass) : text2(get(p).language)}` : ""}`.trim())
253
+ ]);
254
+ append($$anchor, figure);
255
+ pop();
256
+ }
257
+
258
+ // src/components/entries/code-block.ts
259
+ register("code-block", createSvelteRenderer("code-block", CodeBlock), { state: "readable" });
260
+ var code_block_default = CodeBlock;
261
+ export {
262
+ code_block_default as default,
263
+ CodeBlock
264
+ };
@@ -0,0 +1,111 @@
1
+ import {
2
+ InlineIcon
3
+ } from "../chunks/accordion-cw5r75jm.js";
4
+ import {
5
+ action,
6
+ append,
7
+ bindPropStore,
8
+ child,
9
+ createSvelteRenderer,
10
+ delegate,
11
+ delegated,
12
+ emit,
13
+ from_html,
14
+ get,
15
+ if_block,
16
+ label,
17
+ next,
18
+ pop,
19
+ proxy,
20
+ push,
21
+ renderChildren,
22
+ reset,
23
+ set,
24
+ set_attribute,
25
+ set_text,
26
+ sibling,
27
+ state,
28
+ template_effect,
29
+ text1 as text,
30
+ user_effect
31
+ } from "../chunks/accordion-nw12ytps.js";
32
+
33
+ // src/components/entries/collapsible.ts
34
+ import { register } from "../runtime.js";
35
+
36
+ // src/components/svelte/disclosure/Collapsible.svelte
37
+ var root = from_html(`<div class="slex-collapsible"><button type="button" class="slex-collapsible-trigger"><span class="slex-collapsible-label"><!> <span> </span></span> <span class="slex-collapsible-indicator" aria-hidden="true"></span></button> <div class="slex-collapsible-content"><div class="slex-collapsible-content-inner"> </div></div></div>`);
38
+ function Collapsible($$anchor, $$props) {
39
+ push($$props, true);
40
+ let p = state(proxy({}));
41
+ let open = state(false);
42
+ user_effect(() => bindPropStore($$props.props, (next2) => {
43
+ set(p, next2, true);
44
+ set(open, !!(next2.open ?? next2.value));
45
+ }));
46
+ function toggle() {
47
+ set(open, !get(open));
48
+ emit($$props.ctx, get(open) ? "open" : "close", get(open));
49
+ emit($$props.ctx, "change", get(open));
50
+ }
51
+ var div = root();
52
+ var button = child(div);
53
+ var span = child(button);
54
+ var node = child(span);
55
+ {
56
+ var consequent = ($$anchor2) => {
57
+ InlineIcon($$anchor2, {
58
+ get name() {
59
+ return get(p).icon;
60
+ },
61
+ get selected() {
62
+ return get(open);
63
+ },
64
+ className: "slex-collapsible-icon"
65
+ });
66
+ };
67
+ if_block(node, ($$render) => {
68
+ if (get(p).icon)
69
+ $$render(consequent);
70
+ });
71
+ }
72
+ var span_1 = sibling(node, 2);
73
+ var text_1 = child(span_1, true);
74
+ reset(span_1);
75
+ reset(span);
76
+ next(2);
77
+ reset(button);
78
+ var div_1 = sibling(button, 2);
79
+ var div_2 = child(div_1);
80
+ var text_2 = child(div_2, true);
81
+ reset(div_2);
82
+ action(div_2, ($$node, $$action_arg) => renderChildren?.($$node, $$action_arg), () => $$props.ctx);
83
+ reset(div_1);
84
+ reset(div);
85
+ template_effect(($0, $1) => {
86
+ set_attribute(div, "data-state", get(open) ? "open" : "closed");
87
+ set_attribute(button, "data-state", get(open) ? "open" : "closed");
88
+ set_attribute(button, "aria-expanded", get(open));
89
+ set_attribute(button, "aria-controls", `${$$props.ctx.id}-content`);
90
+ set_text(text_1, $0);
91
+ set_attribute(div_1, "id", `${$$props.ctx.id}-content`);
92
+ set_attribute(div_1, "data-state", get(open) ? "open" : "closed");
93
+ set_attribute(div_1, "aria-hidden", !get(open));
94
+ set_text(text_2, $1);
95
+ }, [
96
+ () => label($$props.ctx, "collapsible.trigger", get(p).trigger, "Toggle"),
97
+ () => text(get(p).content)
98
+ ]);
99
+ delegated("click", button, toggle);
100
+ append($$anchor, div);
101
+ pop();
102
+ }
103
+ delegate(["click"]);
104
+
105
+ // src/components/entries/collapsible.ts
106
+ register("collapsible", createSvelteRenderer("collapsible", Collapsible), { state: "none" });
107
+ var collapsible_default = Collapsible;
108
+ export {
109
+ collapsible_default as default,
110
+ Collapsible
111
+ };
@@ -0,0 +1,49 @@
1
+ import {
2
+ action,
3
+ append,
4
+ bindPropStore,
5
+ createSvelteRenderer,
6
+ from_html,
7
+ get,
8
+ pop,
9
+ proxy,
10
+ push,
11
+ renderChildren,
12
+ set,
13
+ set_attribute,
14
+ set_class,
15
+ state,
16
+ template_effect,
17
+ text1 as text,
18
+ user_effect
19
+ } from "../chunks/accordion-nw12ytps.js";
20
+
21
+ // src/components/entries/column.ts
22
+ import { register } from "../runtime.js";
23
+
24
+ // src/components/svelte/layout/Column.svelte
25
+ var root = from_html(`<div></div>`);
26
+ function Column($$anchor, $$props) {
27
+ push($$props, true);
28
+ let p = state(proxy({}));
29
+ user_effect(() => bindPropStore($$props.props, (next) => set(p, next, true)));
30
+ var div = root();
31
+ action(div, ($$node, $$action_arg) => renderChildren?.($$node, $$action_arg), () => $$props.ctx);
32
+ template_effect(($0, $1) => {
33
+ set_class(div, 1, $0);
34
+ set_attribute(div, "id", $1);
35
+ }, [
36
+ () => `slex-column${get(p).class ? ` ${text(get(p).class)}` : ""}`,
37
+ () => get(p).id ? text(get(p).id) : undefined
38
+ ]);
39
+ append($$anchor, div);
40
+ pop();
41
+ }
42
+
43
+ // src/components/entries/column.ts
44
+ register("column", createSvelteRenderer("column", Column), { state: "none" });
45
+ var column_default = Column;
46
+ export {
47
+ column_default as default,
48
+ Column
49
+ };