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
package/dist/base.css ADDED
@@ -0,0 +1,621 @@
1
+ :root {
2
+ color-scheme: light;
3
+ }
4
+
5
+ :root:where(.dark, [data-theme="dark"]) {
6
+ color-scheme: dark;
7
+ }
8
+
9
+ .slexkit-theme-uno,
10
+ .slexkit-theme-flowbite,
11
+ body.slexkit-theme-uno {
12
+ color-scheme: light;
13
+ --background: #fff;
14
+ --foreground: oklch(14.1% 0.005 285.823);
15
+ --card: #fff;
16
+ --card-foreground: oklch(14.1% 0.005 285.823);
17
+ --popover: #fff;
18
+ --popover-foreground: oklch(14.1% 0.005 285.823);
19
+ --primary: oklch(21% 0.006 285.885);
20
+ --primary-foreground: oklch(98.5% 0 0);
21
+ --secondary: oklch(96.7% 0.001 286.375);
22
+ --secondary-foreground: oklch(21% 0.006 285.885);
23
+ --muted: oklch(96.7% 0.001 286.375);
24
+ --muted-foreground: oklch(55.2% 0.016 285.938);
25
+ --accent: oklch(96.7% 0.001 286.375);
26
+ --accent-foreground: oklch(21% 0.006 285.885);
27
+ --info: oklch(48.8% 0.243 264.376);
28
+ --info-foreground: #fff;
29
+ --success: oklch(59.6% 0.145 163.225);
30
+ --success-foreground: #fff;
31
+ --warning: oklch(66.6% 0.179 58.318);
32
+ --warning-foreground: oklch(14.1% 0.005 285.823);
33
+ --destructive: oklch(57.7% 0.245 27.325);
34
+ --destructive-foreground: oklch(98.5% 0 0);
35
+ --border: oklch(92% 0.004 286.32);
36
+ --input: oklch(92% 0.004 286.32);
37
+ --ring: oklch(14.1% 0.005 285.823);
38
+ --radius: 0.5rem;
39
+ --slex-control-height: 2.25rem;
40
+ --slex-primary-50: oklch(98.5% 0 0);
41
+ --slex-primary-100: oklch(96.7% 0.001 286.375);
42
+ --slex-primary-200: oklch(92% 0.004 286.32);
43
+ --slex-primary-300: oklch(87.1% 0.006 286.286);
44
+ --slex-primary-400: oklch(70.5% 0.015 286.067);
45
+ --slex-primary-500: oklch(55.2% 0.016 285.938);
46
+ --slex-primary-600: oklch(44.2% 0.017 285.786);
47
+ --slex-primary-700: oklch(37% 0.013 285.805);
48
+ --slex-primary-800: oklch(27.4% 0.006 286.033);
49
+ --slex-primary-900: oklch(21% 0.006 285.885);
50
+ --slex-primary-950: oklch(14.1% 0.005 285.823);
51
+ }
52
+
53
+ :where(.dark, [data-theme="dark"]) .slexkit-theme-uno,
54
+ .slexkit-theme-uno:where(.dark, [data-theme="dark"]),
55
+ :where(.dark, [data-theme="dark"]) .slexkit-theme-flowbite,
56
+ .slexkit-theme-flowbite:where(.dark, [data-theme="dark"]),
57
+ :where(.dark, [data-theme="dark"]) body.slexkit-theme-uno,
58
+ body.slexkit-theme-uno:where(.dark, [data-theme="dark"]) {
59
+ color-scheme: dark;
60
+ --background: oklch(14.1% 0.005 285.823);
61
+ --foreground: oklch(98.5% 0 0);
62
+ --card: oklch(21% 0.006 285.885);
63
+ --card-foreground: oklch(98.5% 0 0);
64
+ --popover: oklch(21% 0.006 285.885);
65
+ --popover-foreground: oklch(98.5% 0 0);
66
+ --primary: oklch(98.5% 0 0);
67
+ --primary-foreground: oklch(14.1% 0.005 285.823);
68
+ --secondary: oklch(27.4% 0.006 286.033);
69
+ --secondary-foreground: oklch(98.5% 0 0);
70
+ --muted: oklch(27.4% 0.006 286.033);
71
+ --muted-foreground: oklch(70.5% 0.015 286.067);
72
+ --accent: oklch(27.4% 0.006 286.033);
73
+ --accent-foreground: oklch(98.5% 0 0);
74
+ --info: oklch(62.3% 0.214 259.815);
75
+ --info-foreground: oklch(14.1% 0.005 285.823);
76
+ --success: oklch(76.5% 0.177 163.223);
77
+ --success-foreground: oklch(14.1% 0.005 285.823);
78
+ --warning: oklch(82.8% 0.189 84.429);
79
+ --warning-foreground: oklch(14.1% 0.005 285.823);
80
+ --destructive: oklch(70.4% 0.191 22.216);
81
+ --destructive-foreground: oklch(14.1% 0.005 285.823);
82
+ --border: oklch(27.4% 0.006 286.033);
83
+ --input: oklch(37% 0.013 285.805);
84
+ --ring: oklch(87.1% 0.006 286.286);
85
+ --radius: 0.5rem;
86
+ --slex-control-height: 2.25rem;
87
+ --slex-primary-50: oklch(98.5% 0 0);
88
+ --slex-primary-100: oklch(96.7% 0.001 286.375);
89
+ --slex-primary-200: oklch(92% 0.004 286.32);
90
+ --slex-primary-300: oklch(87.1% 0.006 286.286);
91
+ --slex-primary-400: oklch(70.5% 0.015 286.067);
92
+ --slex-primary-500: oklch(55.2% 0.016 285.938);
93
+ --slex-primary-600: oklch(44.2% 0.017 285.786);
94
+ --slex-primary-700: oklch(37% 0.013 285.805);
95
+ --slex-primary-800: oklch(27.4% 0.006 286.033);
96
+ --slex-primary-900: oklch(21% 0.006 285.885);
97
+ --slex-primary-950: oklch(14.1% 0.005 285.823);
98
+ }
99
+
100
+ /* layout.css */
101
+
102
+ .slexkit-root {
103
+ --font-sans:
104
+ "Geist", "Geist Sans", "Noto Sans SC", "Noto Sans", ui-sans-serif, system-ui, -apple-system,
105
+ BlinkMacSystemFont, "Segoe UI", sans-serif;
106
+ --font-mono:
107
+ "Geist Mono", "Noto Sans Mono", "Noto Sans Mono CJK SC", "SFMono-Regular", "Cascadia Code",
108
+ Consolas, monospace;
109
+ font-family: var(
110
+ --font-sans,
111
+ "Geist",
112
+ "Geist Sans",
113
+ "Noto Sans SC",
114
+ "Noto Sans",
115
+ ui-sans-serif,
116
+ system-ui,
117
+ -apple-system,
118
+ BlinkMacSystemFont,
119
+ "Segoe UI",
120
+ sans-serif
121
+ );
122
+ color: var(--foreground);
123
+ background: transparent;
124
+ line-height: 1.5;
125
+ -webkit-font-smoothing: antialiased;
126
+ -moz-osx-font-smoothing: grayscale;
127
+ }
128
+
129
+ .slexkit-root,
130
+ .slexkit-root *,
131
+ .slexkit-root *::before,
132
+ .slexkit-root *::after {
133
+ box-sizing: border-box;
134
+ }
135
+
136
+ body[data-mobile-nav-open] {
137
+ overflow: hidden;
138
+ overscroll-behavior: contain;
139
+ }
140
+
141
+ #mobileNav {
142
+ --mobile-nav-backdrop-opacity: 0;
143
+ --mobile-nav-panel-translate: -100%;
144
+ pointer-events: none;
145
+ }
146
+
147
+ #mobileNav[data-open="true"] {
148
+ --mobile-nav-backdrop-opacity: 1;
149
+ --mobile-nav-panel-translate: 0px;
150
+ pointer-events: auto;
151
+ }
152
+
153
+ #mobileNav [data-mobile-nav-backdrop] {
154
+ opacity: var(--mobile-nav-backdrop-opacity);
155
+ touch-action: pan-y;
156
+ transition: opacity 180ms ease;
157
+ }
158
+
159
+ #mobileNav [data-mobile-nav-panel] {
160
+ transform: translateX(var(--mobile-nav-panel-translate));
161
+ touch-action: pan-y;
162
+ transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
163
+ will-change: transform;
164
+ }
165
+
166
+ #mobileNav[data-dragging="true"] [data-mobile-nav-backdrop],
167
+ #mobileNav[data-dragging="true"] [data-mobile-nav-panel] {
168
+ transition: none;
169
+ }
170
+
171
+ @media (prefers-reduced-motion: reduce) {
172
+ #mobileNav [data-mobile-nav-backdrop],
173
+ #mobileNav [data-mobile-nav-panel] {
174
+ transition: none;
175
+ }
176
+ }
177
+
178
+ .slexkit-for-wrapper {
179
+ display: contents;
180
+ }
181
+
182
+ .slexkit-source-toolbar {
183
+ display: flex;
184
+ align-items: center;
185
+ justify-content: flex-end;
186
+ gap: 0.5rem;
187
+ margin: 0.5rem 0;
188
+ }
189
+
190
+ .slexkit-source-button {
191
+ display: inline-flex;
192
+ align-items: center;
193
+ justify-content: center;
194
+ min-height: 28px;
195
+ padding: 0 0.625rem;
196
+ border: 1px solid var(--border);
197
+ border-radius: calc(var(--radius) - 2px);
198
+ background: var(--secondary);
199
+ color: var(--secondary-foreground);
200
+ font-family: inherit;
201
+ font-size: 0.75rem;
202
+ font-weight: 500;
203
+ cursor: pointer;
204
+ transition:
205
+ background 150ms ease,
206
+ color 150ms ease,
207
+ border-color 150ms ease;
208
+ }
209
+
210
+ .slexkit-source-button:hover {
211
+ background: var(--accent);
212
+ color: var(--accent-foreground);
213
+ border-color: var(--border);
214
+ }
215
+
216
+ .slexkit-source-button:focus-visible {
217
+ outline: 2px solid var(--ring);
218
+ outline-offset: 2px;
219
+ }
220
+
221
+ .slexkit-preview {
222
+ width: 100%;
223
+ }
224
+
225
+ .slex-layout {
226
+ display: grid;
227
+ width: 100%;
228
+ min-width: 0;
229
+ gap: 1rem;
230
+ }
231
+
232
+ .slex-layout > .slex-row {
233
+ justify-content: space-between;
234
+ align-items: center;
235
+ }
236
+
237
+ .slex-layout .slex-text {
238
+ color: var(--foreground);
239
+ }
240
+
241
+ .slex-layout .slex-text--muted {
242
+ color: var(--muted-foreground);
243
+ }
244
+
245
+ .slex-card {
246
+ display: flex;
247
+ flex-direction: column;
248
+ width: 100%;
249
+ max-width: none;
250
+ min-width: 0;
251
+ background: var(--card);
252
+ color: var(--card-foreground);
253
+ border: 1px solid var(--border);
254
+ border-radius: calc(var(--radius) + 4px);
255
+ padding: 1.25rem;
256
+ box-shadow: var(--shadow-sm);
257
+ transition:
258
+ box-shadow 150ms ease,
259
+ border-color 150ms ease;
260
+ }
261
+
262
+ .slex-card:hover {
263
+ border-color: var(--border);
264
+ box-shadow: var(--shadow-md);
265
+ }
266
+
267
+ .slex-card-title {
268
+ display: inline-flex;
269
+ align-items: center;
270
+ gap: 0.5rem;
271
+ margin: 0 0 1rem;
272
+ padding-bottom: 0.75rem;
273
+ border-bottom: 1px solid var(--border);
274
+ color: var(--card-foreground);
275
+ font-size: 1.125rem;
276
+ font-weight: 600;
277
+ line-height: 1.25;
278
+ }
279
+
280
+ .slex-card-body {
281
+ display: flex;
282
+ width: 100%;
283
+ min-width: 0;
284
+ flex-direction: column;
285
+ gap: 1rem;
286
+ }
287
+
288
+ .slex-column {
289
+ display: flex;
290
+ min-width: 0;
291
+ flex-direction: column;
292
+ gap: 1rem;
293
+ }
294
+
295
+ .slex-row {
296
+ display: flex;
297
+ flex-direction: row;
298
+ gap: 1rem;
299
+ align-items: center;
300
+ flex-wrap: wrap;
301
+ }
302
+
303
+ .slex-row > * {
304
+ min-width: 0;
305
+ }
306
+
307
+ .slex-row--balanced-tiles {
308
+ --slex-balanced-tile-width: 136px;
309
+ display: grid;
310
+ width: 100%;
311
+ grid-template-columns: repeat(var(--slex-balanced-tracks, var(--slex-balanced-cols)), minmax(0, 1fr));
312
+ justify-content: stretch;
313
+ align-items: stretch;
314
+ }
315
+
316
+ .slex-row--balanced-tiles > :is(.slex-stat, .slex-card) {
317
+ width: 100%;
318
+ }
319
+
320
+ .slex-grid {
321
+ display: grid;
322
+ width: 100%;
323
+ min-width: 0;
324
+ gap: 1rem;
325
+ }
326
+
327
+ .slex-grid {
328
+ grid-template-columns: 1fr;
329
+ }
330
+ .slex-grid[data-cols="1"] {
331
+ grid-template-columns: 1fr;
332
+ }
333
+ .slex-grid[data-cols="2"] {
334
+ grid-template-columns: repeat(2, 1fr);
335
+ }
336
+ .slex-grid[data-cols="3"] {
337
+ grid-template-columns: repeat(3, 1fr);
338
+ }
339
+ .slex-grid[data-cols="4"] {
340
+ grid-template-columns: repeat(4, 1fr);
341
+ }
342
+ .slex-grid[data-cols="5"] {
343
+ grid-template-columns: repeat(5, 1fr);
344
+ }
345
+ .slex-grid[data-cols="6"] {
346
+ grid-template-columns: repeat(6, 1fr);
347
+ }
348
+ .slex-grid[data-cols="12"] {
349
+ grid-template-columns: repeat(12, 1fr);
350
+ }
351
+
352
+ @media (min-width: 640px) {
353
+ .slex-grid[data-cols-sm="1"] {
354
+ grid-template-columns: 1fr;
355
+ }
356
+ .slex-grid[data-cols-sm="2"] {
357
+ grid-template-columns: repeat(2, 1fr);
358
+ }
359
+ .slex-grid[data-cols-sm="3"] {
360
+ grid-template-columns: repeat(3, 1fr);
361
+ }
362
+ .slex-grid[data-cols-sm="4"] {
363
+ grid-template-columns: repeat(4, 1fr);
364
+ }
365
+ .slex-grid[data-cols-sm="5"] {
366
+ grid-template-columns: repeat(5, 1fr);
367
+ }
368
+ .slex-grid[data-cols-sm="6"] {
369
+ grid-template-columns: repeat(6, 1fr);
370
+ }
371
+ .slex-grid[data-cols-sm="12"] {
372
+ grid-template-columns: repeat(12, 1fr);
373
+ }
374
+ }
375
+
376
+ @media (min-width: 768px) {
377
+ .slex-grid[data-cols-md="1"] {
378
+ grid-template-columns: 1fr;
379
+ }
380
+ .slex-grid[data-cols-md="2"] {
381
+ grid-template-columns: repeat(2, 1fr);
382
+ }
383
+ .slex-grid[data-cols-md="3"] {
384
+ grid-template-columns: repeat(3, 1fr);
385
+ }
386
+ .slex-grid[data-cols-md="4"] {
387
+ grid-template-columns: repeat(4, 1fr);
388
+ }
389
+ .slex-grid[data-cols-md="5"] {
390
+ grid-template-columns: repeat(5, 1fr);
391
+ }
392
+ .slex-grid[data-cols-md="6"] {
393
+ grid-template-columns: repeat(6, 1fr);
394
+ }
395
+ .slex-grid[data-cols-md="12"] {
396
+ grid-template-columns: repeat(12, 1fr);
397
+ }
398
+ }
399
+
400
+ @media (min-width: 1024px) {
401
+ .slex-grid[data-cols-lg="1"] {
402
+ grid-template-columns: 1fr;
403
+ }
404
+ .slex-grid[data-cols-lg="2"] {
405
+ grid-template-columns: repeat(2, 1fr);
406
+ }
407
+ .slex-grid[data-cols-lg="3"] {
408
+ grid-template-columns: repeat(3, 1fr);
409
+ }
410
+ .slex-grid[data-cols-lg="4"] {
411
+ grid-template-columns: repeat(4, 1fr);
412
+ }
413
+ .slex-grid[data-cols-lg="5"] {
414
+ grid-template-columns: repeat(5, 1fr);
415
+ }
416
+ .slex-grid[data-cols-lg="6"] {
417
+ grid-template-columns: repeat(6, 1fr);
418
+ }
419
+ .slex-grid[data-cols-lg="12"] {
420
+ grid-template-columns: repeat(12, 1fr);
421
+ }
422
+ }
423
+
424
+ @media (min-width: 1280px) {
425
+ .slex-grid[data-cols-xl="1"] {
426
+ grid-template-columns: 1fr;
427
+ }
428
+ .slex-grid[data-cols-xl="2"] {
429
+ grid-template-columns: repeat(2, 1fr);
430
+ }
431
+ .slex-grid[data-cols-xl="3"] {
432
+ grid-template-columns: repeat(3, 1fr);
433
+ }
434
+ .slex-grid[data-cols-xl="4"] {
435
+ grid-template-columns: repeat(4, 1fr);
436
+ }
437
+ .slex-grid[data-cols-xl="5"] {
438
+ grid-template-columns: repeat(5, 1fr);
439
+ }
440
+ .slex-grid[data-cols-xl="6"] {
441
+ grid-template-columns: repeat(6, 1fr);
442
+ }
443
+ .slex-grid[data-cols-xl="12"] {
444
+ grid-template-columns: repeat(12, 1fr);
445
+ }
446
+ }
447
+
448
+ @media (max-width: 639px) {
449
+ .slex-card {
450
+ padding: 1rem;
451
+ }
452
+
453
+ .slex-row {
454
+ align-items: stretch;
455
+ }
456
+
457
+ .slex-grid[data-cols],
458
+ .slex-grid[data-cols="2"],
459
+ .slex-grid[data-cols="3"],
460
+ .slex-grid[data-cols="4"],
461
+ .slex-grid[data-cols="5"],
462
+ .slex-grid[data-cols="6"],
463
+ .slex-grid[data-cols="12"] {
464
+ grid-template-columns: 1fr;
465
+ }
466
+ }
467
+
468
+ /* theme.css */
469
+
470
+ .slexkit-root {
471
+ color: var(--foreground, #111827);
472
+ background: transparent;
473
+ font-family: var(
474
+ --font-sans,
475
+ "Geist",
476
+ "Geist Sans",
477
+ "Noto Sans SC",
478
+ "Noto Sans",
479
+ ui-sans-serif,
480
+ system-ui,
481
+ -apple-system,
482
+ BlinkMacSystemFont,
483
+ "Segoe UI",
484
+ sans-serif
485
+ );
486
+ }
487
+
488
+ .slexkit-theme-host-shadcn {
489
+ --slex-primary-50: color-mix(in srgb, var(--primary, #4A90E2) 8%, white);
490
+ --slex-primary-100: color-mix(in srgb, var(--primary, #4A90E2) 14%, white);
491
+ --slex-primary-200: color-mix(in srgb, var(--primary, #4A90E2) 25%, white);
492
+ --slex-primary-300: color-mix(in srgb, var(--primary, #4A90E2) 38%, white);
493
+ --slex-primary-400: color-mix(in srgb, var(--primary, #4A90E2) 62%, white);
494
+ --slex-primary-500: var(--primary, #4A90E2);
495
+ --slex-primary-600: color-mix(in srgb, var(--primary, #4A90E2) 82%, black);
496
+ --slex-primary-700: color-mix(in srgb, var(--primary, #4A90E2) 74%, black);
497
+ --slex-primary-800: color-mix(in srgb, var(--primary, #4A90E2) 65%, black);
498
+ --slex-primary-900: color-mix(in srgb, var(--primary, #4A90E2) 56%, black);
499
+ --slex-primary-950: color-mix(in srgb, var(--primary, #4A90E2) 44%, black);
500
+ }
501
+
502
+ /* animation.css */
503
+
504
+ @keyframes slex-fade-in {
505
+ from {
506
+ opacity: 0;
507
+ transform: translateY(4px);
508
+ }
509
+ to {
510
+ opacity: 1;
511
+ transform: translateY(0);
512
+ }
513
+ }
514
+
515
+ @keyframes slex-fade-out {
516
+ from {
517
+ opacity: 1;
518
+ transform: translateY(0);
519
+ }
520
+ to {
521
+ opacity: 0;
522
+ transform: translateY(4px);
523
+ }
524
+ }
525
+
526
+ @keyframes slex-slide-in {
527
+ from {
528
+ opacity: 0;
529
+ transform: translateX(-8px);
530
+ }
531
+ to {
532
+ opacity: 1;
533
+ transform: translateX(0);
534
+ }
535
+ }
536
+
537
+ @keyframes slex-slide-out {
538
+ from {
539
+ opacity: 1;
540
+ transform: translateX(0);
541
+ }
542
+ to {
543
+ opacity: 0;
544
+ transform: translateX(-8px);
545
+ }
546
+ }
547
+
548
+ @keyframes slex-pulse {
549
+ 0%, 100% { opacity: 1; }
550
+ 50% { opacity: 0.6; }
551
+ }
552
+
553
+ .slex-fade-in {
554
+ animation: slex-fade-in 0.3s ease-out;
555
+ }
556
+
557
+ .slex-fade-out {
558
+ animation: slex-fade-out 0.3s ease-out;
559
+ }
560
+
561
+ .slex-slide-in {
562
+ animation: slex-slide-in 0.3s ease-out;
563
+ }
564
+
565
+ .slex-slide-out {
566
+ animation: slex-slide-out 0.3s ease-out;
567
+ }
568
+
569
+ .slex-pulse {
570
+ animation: slex-pulse 2s ease-in-out infinite;
571
+ }
572
+
573
+ .slex-enter {
574
+ animation-duration: 0.3s;
575
+ animation-fill-mode: both;
576
+ }
577
+
578
+ @keyframes slex-scale-in {
579
+ from {
580
+ opacity: 0;
581
+ transform: scale(0.95);
582
+ }
583
+ to {
584
+ opacity: 1;
585
+ transform: scale(1);
586
+ }
587
+ }
588
+
589
+ .slex-scale-in {
590
+ animation-name: slex-scale-in;
591
+ }
592
+
593
+ @media (max-width: 640px) {
594
+ .slex-card {
595
+ padding: 1rem;
596
+ }
597
+
598
+ .slex-stat-value {
599
+ font-size: 1.25rem;
600
+ }
601
+ }
602
+
603
+ /* entry.css */
604
+
605
+ .slex-icon {
606
+ display: inline-flex;
607
+ width: 1em;
608
+ height: 1em;
609
+ align-items: center;
610
+ justify-content: center;
611
+ color: currentColor;
612
+ line-height: 1;
613
+ flex-shrink: 0;
614
+ }
615
+
616
+ .slex-icon svg {
617
+ display: block;
618
+ width: 1em;
619
+ height: 1em;
620
+ fill: currentColor;
621
+ }