wand-decks-kit 0.8.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 (170) hide show
  1. package/PROMPT.md +461 -0
  2. package/README.md +137 -0
  3. package/START-HERE.md +98 -0
  4. package/assets/README.md +40 -0
  5. package/assets/_icon-contact-sheet.png +0 -0
  6. package/assets/bg-cover-dark.png +0 -0
  7. package/assets/bg-overlay-dark.png +0 -0
  8. package/assets/bg-statement-dark.png +0 -0
  9. package/assets/glyphs/README.md +29 -0
  10. package/assets/glyphs/activity.svg +15 -0
  11. package/assets/glyphs/atom.svg +17 -0
  12. package/assets/glyphs/badge-check.svg +16 -0
  13. package/assets/glyphs/bell.svg +16 -0
  14. package/assets/glyphs/blocks.svg +16 -0
  15. package/assets/glyphs/book-open.svg +16 -0
  16. package/assets/glyphs/bot.svg +20 -0
  17. package/assets/glyphs/boxes.svg +26 -0
  18. package/assets/glyphs/brain.svg +23 -0
  19. package/assets/glyphs/briefcase.svg +16 -0
  20. package/assets/glyphs/building-2.svg +21 -0
  21. package/assets/glyphs/calendar.svg +18 -0
  22. package/assets/glyphs/chart-column.svg +18 -0
  23. package/assets/glyphs/chart-line.svg +16 -0
  24. package/assets/glyphs/chart-pie.svg +16 -0
  25. package/assets/glyphs/circle-check.svg +16 -0
  26. package/assets/glyphs/clipboard-check.svg +17 -0
  27. package/assets/glyphs/clock.svg +16 -0
  28. package/assets/glyphs/cloud.svg +15 -0
  29. package/assets/glyphs/coins.svg +18 -0
  30. package/assets/glyphs/compass.svg +16 -0
  31. package/assets/glyphs/cpu.svg +24 -0
  32. package/assets/glyphs/database.svg +17 -0
  33. package/assets/glyphs/eye.svg +16 -0
  34. package/assets/glyphs/file-check.svg +17 -0
  35. package/assets/glyphs/filter.svg +15 -0
  36. package/assets/glyphs/fingerprint.svg +23 -0
  37. package/assets/glyphs/flag.svg +16 -0
  38. package/assets/glyphs/gauge.svg +16 -0
  39. package/assets/glyphs/gavel.svg +19 -0
  40. package/assets/glyphs/git-branch.svg +18 -0
  41. package/assets/glyphs/globe.svg +17 -0
  42. package/assets/glyphs/graduation-cap.svg +17 -0
  43. package/assets/glyphs/handshake.svg +19 -0
  44. package/assets/glyphs/hexagon.svg +15 -0
  45. package/assets/glyphs/index.json +175 -0
  46. package/assets/glyphs/infinity.svg +15 -0
  47. package/assets/glyphs/key.svg +17 -0
  48. package/assets/glyphs/landmark.svg +20 -0
  49. package/assets/glyphs/layers.svg +17 -0
  50. package/assets/glyphs/lightbulb.svg +17 -0
  51. package/assets/glyphs/link.svg +16 -0
  52. package/assets/glyphs/list-checks.svg +19 -0
  53. package/assets/glyphs/lock.svg +16 -0
  54. package/assets/glyphs/map.svg +17 -0
  55. package/assets/glyphs/megaphone.svg +16 -0
  56. package/assets/glyphs/message-square.svg +15 -0
  57. package/assets/glyphs/milestone.svg +17 -0
  58. package/assets/glyphs/network.svg +19 -0
  59. package/assets/glyphs/orbit.svg +19 -0
  60. package/assets/glyphs/package.svg +18 -0
  61. package/assets/glyphs/plug.svg +18 -0
  62. package/assets/glyphs/puzzle.svg +15 -0
  63. package/assets/glyphs/radar.svg +22 -0
  64. package/assets/glyphs/receipt.svg +17 -0
  65. package/assets/glyphs/refresh-cw.svg +18 -0
  66. package/assets/glyphs/rocket.svg +18 -0
  67. package/assets/glyphs/route.svg +17 -0
  68. package/assets/glyphs/scale.svg +19 -0
  69. package/assets/glyphs/search.svg +16 -0
  70. package/assets/glyphs/server.svg +18 -0
  71. package/assets/glyphs/settings.svg +16 -0
  72. package/assets/glyphs/share-2.svg +19 -0
  73. package/assets/glyphs/shield-check.svg +16 -0
  74. package/assets/glyphs/shuffle.svg +19 -0
  75. package/assets/glyphs/sparkles.svg +19 -0
  76. package/assets/glyphs/square-stack.svg +17 -0
  77. package/assets/glyphs/target.svg +17 -0
  78. package/assets/glyphs/trending-up.svg +16 -0
  79. package/assets/glyphs/triangle-alert.svg +17 -0
  80. package/assets/glyphs/trophy.svg +20 -0
  81. package/assets/glyphs/users.svg +18 -0
  82. package/assets/glyphs/wallet.svg +16 -0
  83. package/assets/glyphs/wand-sparkles.svg +22 -0
  84. package/assets/glyphs/workflow.svg +17 -0
  85. package/assets/glyphs/zap.svg +15 -0
  86. package/assets/icons/icon-11.png +0 -0
  87. package/assets/icons/icon-12.png +0 -0
  88. package/assets/icons/icon-13.png +0 -0
  89. package/assets/icons/icon-14.png +0 -0
  90. package/assets/icons/icon-15.png +0 -0
  91. package/assets/icons/icon-16.png +0 -0
  92. package/assets/icons/icon-17.png +0 -0
  93. package/assets/icons/icon-18.png +0 -0
  94. package/assets/icons/icon-20.png +0 -0
  95. package/assets/icons/icon-23.png +0 -0
  96. package/assets/icons/icon-24.png +0 -0
  97. package/assets/icons/icon-25.png +0 -0
  98. package/assets/icons/icon-27.png +0 -0
  99. package/assets/icons/icon-28.png +0 -0
  100. package/assets/icons/icon-30.png +0 -0
  101. package/assets/icons/icon-31.png +0 -0
  102. package/assets/icons/icon-32.png +0 -0
  103. package/assets/icons/icon-33.png +0 -0
  104. package/assets/icons/icon-34.png +0 -0
  105. package/assets/icons/icon-35.png +0 -0
  106. package/assets/icons/icon-36.png +0 -0
  107. package/assets/icons/icon-37.png +0 -0
  108. package/assets/icons/icon-39.png +0 -0
  109. package/assets/icons/icon-40.png +0 -0
  110. package/assets/icons/icon-41.png +0 -0
  111. package/assets/icons/icon-43.png +0 -0
  112. package/assets/icons/icon-44.png +0 -0
  113. package/assets/icons/icon-45.png +0 -0
  114. package/assets/icons/icon-46.png +0 -0
  115. package/assets/icons/icon-48.png +0 -0
  116. package/assets/icons/icon-49.png +0 -0
  117. package/assets/icons/icon-50.png +0 -0
  118. package/assets/icons/icon-51.png +0 -0
  119. package/assets/icons/icon-52.png +0 -0
  120. package/assets/icons/icon-53.png +0 -0
  121. package/assets/icons/icon-9.png +0 -0
  122. package/assets/mark-dark.png +0 -0
  123. package/assets/mark-white.png +0 -0
  124. package/assets/orb-cover.png +0 -0
  125. package/assets/wordmark-dark.png +0 -0
  126. package/assets/wordmark-white.png +0 -0
  127. package/build.js +192 -0
  128. package/build_example.js +91 -0
  129. package/build_infinite.js +283 -0
  130. package/docs/LAYOUTS.md +86 -0
  131. package/docs/PIPELINE.md +116 -0
  132. package/docs/SPEC.md +89 -0
  133. package/embed_fonts.py +193 -0
  134. package/examples/template.json +164 -0
  135. package/fonts/Geist-Bold.ttf +0 -0
  136. package/fonts/Geist-BoldItalic.ttf +0 -0
  137. package/fonts/Geist-ExtraBold.ttf +0 -0
  138. package/fonts/Geist-ExtraBoldItalic.ttf +0 -0
  139. package/fonts/Geist-Italic.ttf +0 -0
  140. package/fonts/Geist-Light.ttf +0 -0
  141. package/fonts/Geist-LightItalic.ttf +0 -0
  142. package/fonts/Geist-Medium.ttf +0 -0
  143. package/fonts/Geist-MediumItalic.ttf +0 -0
  144. package/fonts/Geist-Regular.ttf +0 -0
  145. package/fonts/Geist-SemiBold.ttf +0 -0
  146. package/fonts/Geist-SemiBoldItalic.ttf +0 -0
  147. package/lib/README.md +23 -0
  148. package/lib/brand.js +51 -0
  149. package/lib/glyphs.js +87 -0
  150. package/lib/layouts_client.js +212 -0
  151. package/lib/layouts_consult.js +301 -0
  152. package/lib/layouts_dense.js +361 -0
  153. package/lib/measure.js +109 -0
  154. package/lib/pdf.js +517 -0
  155. package/lib/plan.js +305 -0
  156. package/lib/render_pdf.js +203 -0
  157. package/lib/schema.js +399 -0
  158. package/lib/shared.js +15 -0
  159. package/lib/trace.js +88 -0
  160. package/lib/ttf.py +167 -0
  161. package/lib/wandxml.py +37 -0
  162. package/package.json +17 -0
  163. package/preview/preview.css +112 -0
  164. package/preview/preview.html +24 -0
  165. package/preview/preview.js +169 -0
  166. package/qa_coverage.py +120 -0
  167. package/requirements.txt +9 -0
  168. package/tools/extract.py +199 -0
  169. package/wand.js +397 -0
  170. package/wand_kit.js +1016 -0
package/START-HERE.md ADDED
@@ -0,0 +1,98 @@
1
+ # Read this first
2
+
3
+ You have this folder and, probably, a source `.pptx`. This is the Wand deck
4
+ engine: it rebuilds a deck onto the Wand design system, or authors one from a
5
+ brief.
6
+
7
+ `PROMPT.md` is the design system and the source of truth on every design
8
+ question. This file is only the operating instructions.
9
+
10
+ ## If you were handed this zip and a deck
11
+
12
+ Upload both to a fresh chat and paste this:
13
+
14
+ > Unzip this and read START-HERE.md, then rebuild the attached deck.
15
+
16
+ Nothing to install. Nothing to configure. That one line is the whole interface.
17
+
18
+ ## Setup
19
+
20
+ There isn't any. Dependencies ship inside the zip and the Python side runs on
21
+ the standard library, so there is no `npm install` and no `pip install` — which
22
+ matters, because this often runs in a container with no network.
23
+
24
+ ```bash
25
+ node wand.js doctor # confirms it before you start
26
+ ```
27
+
28
+ `doctor` is not decoration. It tells you whether Python is present (needed to
29
+ read the source deck and to embed fonts), whether the dependencies and the brand
30
+ payload resolved, and whether LibreOffice exists.
31
+
32
+ ## Rebuilding a deck
33
+
34
+ ```bash
35
+ node wand.js rebuild source.pptx # phases 0-3
36
+ # ... you write work/deck.json ...
37
+ node wand.js ship work/deck.json # phases 4-6, every gate
38
+ ```
39
+
40
+ `rebuild` normalises the source onto the 10" grid, dumps every verbatim string,
41
+ and writes `work/PLAN.md` — a worksheet with, per slide, the source's shape, a
42
+ shortlist of layouts with the reason for each, the verbatim text, and a stub
43
+ carrying that layout's required fields.
44
+
45
+ Then **you** do the part no script does: choose a layout per slide, and
46
+ transcribe the text into `work/deck.json`. `node wand.js layouts <name>` prints
47
+ any layout's fields. `node wand.js validate work/deck.json` checks them before
48
+ you build.
49
+
50
+ `ship` validates the spec, measures every text box in real Geist, builds,
51
+ embeds the fonts, runs coverage against the verbatim dump, inspects the file,
52
+ and writes the browser preview. It prints a gate table at the end.
53
+
54
+ ## Authoring without a source
55
+
56
+ Skip `rebuild`. Write the spec against `node wand.js layouts`, then `ship` it.
57
+ Coverage will be skipped — there is no source to cover — and it will say so.
58
+
59
+ ## Four rules that decide whether the output is usable
60
+
61
+ 1. **Faithful means verbatim.** No consolidating slides, no paraphrasing to
62
+ tighten, no restructuring. Reflowing text to fit is fine; rewording is not.
63
+ Paraphrase passes the schema check and passes the eye. Only coverage catches
64
+ it, and only if you ran it.
65
+ 2. **A spec has no coordinates, no colours and no font sizes.** If a slide needs
66
+ geometry the layouts don't have, add a layout. Don't leak positioning into
67
+ content.
68
+ 3. **Vary the layouts.** Three `sixUpIcon` slides in a row is a failure even if
69
+ each one is correct. Across 15 slides aim for at least 8 distinct layouts,
70
+ alternating dark and light. `validate` warns when you don't.
71
+ 4. **Look at every slide.** Open `preview/preview.html` after `ship`. It renders
72
+ the same recorded geometry the `.pptx` gets, in real Geist, so it cannot
73
+ drift from the deck. It is the only gate that catches a slide that is
74
+ correct and still ugly.
75
+
76
+ ## What the gates are blind to
77
+
78
+ They fail on different things, which is why `ship` runs all of them.
79
+
80
+ | Gate | Catches | Blind to |
81
+ |---|---|---|
82
+ | `validate` | missing fields, wrong types, item counts past what a layout draws | anything about the words |
83
+ | fit | text overflowing its box **in real Geist** | content |
84
+ | bounds | a shape past the content band | text that fits but is wrong |
85
+ | coverage | a dropped or paraphrased source string | a string that is present but hidden under a band |
86
+ | file | broken parts, dangling relationships, unembedded or subsetted fonts | everything visual |
87
+ | preview | geometry, overlap, contrast, orphaned art | nothing else does this |
88
+
89
+ If LibreOffice is installed you can also render a PDF, but don't trust it on
90
+ fit or weight: it substitutes DejaVu, which is wider than Geist, so it
91
+ over-reports overflow and loses every weight distinction. The fit check
92
+ measures the real face.
93
+
94
+ ## Deliver
95
+
96
+ The `.pptx` first, then a review note: every split or merge, every fallback
97
+ mapping, anything tight after fitting, and **everything dropped from the
98
+ verbatim dump**. A rebuild that drops a string without saying so is not done.
@@ -0,0 +1,40 @@
1
+ # Wand brand asset pack
2
+
3
+ Extracted from `Infinite_Labor__by_Rotem__July_2026.pptx` (`ppt/media/`) on 2026-09-01.
4
+ All assets are RGBA with correct transparency.
5
+
6
+ Shared by every power prompt — resolve this directory through `brand.js`, never
7
+ copy it into a kit. `tools/package.mjs` copies it into a distributable zip.
8
+ Tokens and type: [../BRAND.md](../BRAND.md).
9
+
10
+ ## Chrome
11
+
12
+ | File | Size | Placement |
13
+ |---|---|---|
14
+ | `bg-cover-dark.png` | 2048×1152 | Cover (`L1`) full bleed `0,0 → 10.00 × 5.625` |
15
+ | `bg-statement-dark.png` | 2048×1062 | Statement / divider (`L2`, `L3`) full bleed |
16
+ | `bg-overlay-dark.png` | 2048×1152 | **Translucent.** Layer over `<p:bg>` solid `0F0C26` on every dark content slide, as the first shape. This is the dark-theme gradient art. |
17
+ | `orb-cover.png` | 1787×1787 | Cover only, `x5.72 y0.38 w4.61 h4.61` |
18
+ | `wordmark-white.png` | 222×60 | Full `wand` wordmark — closing slide, centred |
19
+ | `mark-white.png` | 74×60 | `w✦` top-right on **dark** slides, `x9.52 y0.24 w0.23 h0.19` |
20
+ | `mark-dark.png` | 289×269 | `w✦` top-right on **light** slides, same box |
21
+
22
+ ### The mark is a cropped wordmark
23
+ In the reference decks the `w✦` mark is *not* a separate file — it is `wordmark-white.png`
24
+ placed with `<a:srcRect r="66826"/>`, cropping to the left 33.174%. `mark-white.png` here is
25
+ that crop, pre-applied, so no `srcRect` is needed. **If you instead reuse the full wordmark,
26
+ you must carry the `srcRect`** — without it the wordmark squashes into the mark's box.
27
+
28
+ ## Icons
29
+
30
+ 36 glyphs in `icons/`, all 256×256 RGBA, white or `accent`-tinted. Place at `0.17"–0.21"`,
31
+ optically centred inside a tile (`accent` fill on dark, `surface` on light). See
32
+ `_icon-contact-sheet.png` to pick one. Filenames keep the source numbering
33
+ (`icon-14.png` was `image14.png`) so they can be traced back.
34
+
35
+ Two glyphs appear in both polarities (a white and an accent variant of the same shape) —
36
+ check the sheet rather than assuming a single version.
37
+
38
+ ## Not included
39
+
40
+ `bg-light` — light slides have **no art**. Background is `<p:bg>` solid `F8F6FB`.
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,29 @@
1
+ # Glyphs — Lucide
2
+
3
+ 75 icons from [Lucide](https://lucide.dev) v0.469.0, **ISC licensed** (permissive:
4
+ use, modify and redistribute, keep the notice). They replace the numbered PNGs
5
+ that were reverse-extracted from a reference deck.
6
+
7
+ Two problems they fix, both of which were standing known gaps:
8
+
9
+ **Polarity.** The old glyphs were baked white or baked accent, so a white one on
10
+ a light-theme `surface` tile was invisible. These are single-colour stroke SVGs
11
+ with `stroke="currentColor"`, and the kit substitutes the theme's ink colour at
12
+ build time. There is no variant to pick and nothing to get wrong.
13
+
14
+ **Meaning.** They have names. A spec says `icon: "shield-check"`, not
15
+ `icon: "icon-17.png"`. `index.json` groups them by what a deck actually needs —
16
+ governance, workforce, platform, process, outcome, signal.
17
+
18
+ ## How they reach the deck
19
+
20
+ As vector. pptxgenjs writes the OOXML `asvg:svgBlip` extension with a raster
21
+ fallback, so PowerPoint 2016+ renders the SVG and anything older gets the PNG.
22
+ Nothing is rasterised at build time, so the kit still needs no native
23
+ dependency.
24
+
25
+ ## The old set
26
+
27
+ `../icons/*.png` is still there and still works — every existing spec references
28
+ those filenames. New specs should use glyph names. The two sets can coexist
29
+ indefinitely; `iconTile` resolves a name first and falls back to a filename.
@@ -0,0 +1,15 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-activity"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2" />
15
+ </svg>
@@ -0,0 +1,17 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-atom"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <circle cx="12" cy="12" r="1" />
15
+ <path d="M20.2 20.2c2.04-2.03.02-7.36-4.5-11.9-4.54-4.52-9.87-6.54-11.9-4.5-2.04 2.03-.02 7.36 4.5 11.9 4.54 4.52 9.87 6.54 11.9 4.5Z" />
16
+ <path d="M15.7 15.7c4.52-4.54 6.54-9.87 4.5-11.9-2.03-2.04-7.36-.02-11.9 4.5-4.52 4.54-6.54 9.87-4.5 11.9 2.03 2.04 7.36.02 11.9-4.5Z" />
17
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-badge-check"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z" />
15
+ <path d="m9 12 2 2 4-4" />
16
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-bell"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M10.268 21a2 2 0 0 0 3.464 0" />
15
+ <path d="M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326" />
16
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-blocks"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <rect width="7" height="7" x="14" y="3" rx="1" />
15
+ <path d="M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3" />
16
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-book-open"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M12 7v14" />
15
+ <path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z" />
16
+ </svg>
@@ -0,0 +1,20 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-bot"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M12 8V4H8" />
15
+ <rect width="16" height="12" x="4" y="8" rx="2" />
16
+ <path d="M2 14h2" />
17
+ <path d="M20 14h2" />
18
+ <path d="M15 13v2" />
19
+ <path d="M9 13v2" />
20
+ </svg>
@@ -0,0 +1,26 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-boxes"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z" />
15
+ <path d="m7 16.5-4.74-2.85" />
16
+ <path d="m7 16.5 5-3" />
17
+ <path d="M7 16.5v5.17" />
18
+ <path d="M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z" />
19
+ <path d="m17 16.5-5-3" />
20
+ <path d="m17 16.5 4.74-2.85" />
21
+ <path d="M17 16.5v5.17" />
22
+ <path d="M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z" />
23
+ <path d="M12 8 7.26 5.15" />
24
+ <path d="m12 8 4.74-2.85" />
25
+ <path d="M12 13.5V8" />
26
+ </svg>
@@ -0,0 +1,23 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-brain"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z" />
15
+ <path d="M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z" />
16
+ <path d="M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4" />
17
+ <path d="M17.599 6.5a3 3 0 0 0 .399-1.375" />
18
+ <path d="M6.003 5.125A3 3 0 0 0 6.401 6.5" />
19
+ <path d="M3.477 10.896a4 4 0 0 1 .585-.396" />
20
+ <path d="M19.938 10.5a4 4 0 0 1 .585.396" />
21
+ <path d="M6 18a4 4 0 0 1-1.967-.516" />
22
+ <path d="M19.967 17.484A4 4 0 0 1 18 18" />
23
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-briefcase"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16" />
15
+ <rect width="20" height="14" x="2" y="6" rx="2" />
16
+ </svg>
@@ -0,0 +1,21 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-building-2"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z" />
15
+ <path d="M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2" />
16
+ <path d="M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2" />
17
+ <path d="M10 6h4" />
18
+ <path d="M10 10h4" />
19
+ <path d="M10 14h4" />
20
+ <path d="M10 18h4" />
21
+ </svg>
@@ -0,0 +1,18 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-calendar"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M8 2v4" />
15
+ <path d="M16 2v4" />
16
+ <rect width="18" height="18" x="3" y="4" rx="2" />
17
+ <path d="M3 10h18" />
18
+ </svg>
@@ -0,0 +1,18 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-chart-column"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M3 3v16a2 2 0 0 0 2 2h16" />
15
+ <path d="M18 17V9" />
16
+ <path d="M13 17V5" />
17
+ <path d="M8 17v-3" />
18
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-chart-line"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M3 3v16a2 2 0 0 0 2 2h16" />
15
+ <path d="m19 9-5 5-4-4-3 3" />
16
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-chart-pie"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z" />
15
+ <path d="M21.21 15.89A10 10 0 1 1 8 2.83" />
16
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-circle-check"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <circle cx="12" cy="12" r="10" />
15
+ <path d="m9 12 2 2 4-4" />
16
+ </svg>
@@ -0,0 +1,17 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-clipboard-check"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <rect width="8" height="4" x="8" y="2" rx="1" ry="1" />
15
+ <path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2" />
16
+ <path d="m9 14 2 2 4-4" />
17
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-clock"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <circle cx="12" cy="12" r="10" />
15
+ <polyline points="12 6 12 12 16 14" />
16
+ </svg>
@@ -0,0 +1,15 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-cloud"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z" />
15
+ </svg>
@@ -0,0 +1,18 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-coins"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <circle cx="8" cy="8" r="6" />
15
+ <path d="M18.09 10.37A6 6 0 1 1 10.34 18" />
16
+ <path d="M7 6h1v4" />
17
+ <path d="m16.71 13.88.7.71-2.82 2.82" />
18
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-compass"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z" />
15
+ <circle cx="12" cy="12" r="10" />
16
+ </svg>
@@ -0,0 +1,24 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-cpu"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <rect width="16" height="16" x="4" y="4" rx="2" />
15
+ <rect width="6" height="6" x="9" y="9" rx="1" />
16
+ <path d="M15 2v2" />
17
+ <path d="M15 20v2" />
18
+ <path d="M2 15h2" />
19
+ <path d="M2 9h2" />
20
+ <path d="M20 15h2" />
21
+ <path d="M20 9h2" />
22
+ <path d="M9 2v2" />
23
+ <path d="M9 20v2" />
24
+ </svg>
@@ -0,0 +1,17 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-database"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <ellipse cx="12" cy="5" rx="9" ry="3" />
15
+ <path d="M3 5V19A9 3 0 0 0 21 19V5" />
16
+ <path d="M3 12A9 3 0 0 0 21 12" />
17
+ </svg>
@@ -0,0 +1,16 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-eye"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0" />
15
+ <circle cx="12" cy="12" r="3" />
16
+ </svg>
@@ -0,0 +1,17 @@
1
+ <!-- @license lucide-static v0.469.0 - ISC -->
2
+ <svg
3
+ class="lucide lucide-file-check"
4
+ xmlns="http://www.w3.org/2000/svg"
5
+ width="24"
6
+ height="24"
7
+ viewBox="0 0 24 24"
8
+ fill="none"
9
+ stroke="currentColor"
10
+ stroke-width="2"
11
+ stroke-linecap="round"
12
+ stroke-linejoin="round"
13
+ >
14
+ <path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z" />
15
+ <path d="M14 2v4a2 2 0 0 0 2 2h4" />
16
+ <path d="m9 15 2 2 4-4" />
17
+ </svg>