@crewlethq/icons 0.4.4 → 0.5.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 (350) hide show
  1. package/README.md +161 -19
  2. package/TRADEMARKS.md +1 -1
  3. package/dist/Glyph-0ZR8lPCf.d.ts +67 -0
  4. package/dist/chunk-J55MMDSE.js +820 -0
  5. package/dist/{chunk-CUOUFELK.js → chunk-TOSJN7HA.js} +15 -18
  6. package/dist/glyphs-registry.d.ts +128 -6
  7. package/dist/glyphs-registry.js +97 -84
  8. package/dist/glyphs.d.ts +123 -93
  9. package/dist/glyphs.js +5 -4
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.js +1 -1
  12. package/glyphs/LICENSE +43 -0
  13. package/glyphs/README.md +168 -0
  14. package/glyphs/SHA256SUMS +119 -0
  15. package/glyphs/activity.svg +15 -0
  16. package/glyphs/arrow-down-to-line.svg +17 -0
  17. package/glyphs/arrow-down.svg +16 -0
  18. package/glyphs/arrow-right.svg +16 -0
  19. package/glyphs/arrow-up-down.svg +18 -0
  20. package/glyphs/arrow-up-right.svg +16 -0
  21. package/glyphs/arrow-up.svg +16 -0
  22. package/glyphs/badge-percent.svg +18 -0
  23. package/glyphs/ban.svg +16 -0
  24. package/glyphs/bell.svg +16 -0
  25. package/glyphs/book-open.svg +16 -0
  26. package/glyphs/bot.svg +20 -0
  27. package/glyphs/brain.svg +22 -0
  28. package/glyphs/bug.svg +25 -0
  29. package/glyphs/building-complex.svg +19 -0
  30. package/glyphs/calendar-clock.svg +20 -0
  31. package/glyphs/calendar.svg +18 -0
  32. package/glyphs/camera.svg +16 -0
  33. package/glyphs/chart-no-axes-gantt.svg +17 -0
  34. package/glyphs/check.svg +15 -0
  35. package/glyphs/chevron-down.svg +15 -0
  36. package/glyphs/chevron-left.svg +15 -0
  37. package/glyphs/chevron-right.svg +15 -0
  38. package/glyphs/chevron-up.svg +15 -0
  39. package/glyphs/chevrons-left.svg +16 -0
  40. package/glyphs/chevrons-right.svg +16 -0
  41. package/glyphs/chevrons-up-down.svg +16 -0
  42. package/glyphs/circle-alert.svg +17 -0
  43. package/glyphs/circle-check.svg +16 -0
  44. package/glyphs/circle-question-mark.svg +17 -0
  45. package/glyphs/circle.svg +15 -0
  46. package/glyphs/clock.svg +16 -0
  47. package/glyphs/code.svg +16 -0
  48. package/glyphs/cog.svg +28 -0
  49. package/glyphs/coins.svg +18 -0
  50. package/glyphs/columns-3.svg +17 -0
  51. package/glyphs/command.svg +15 -0
  52. package/glyphs/compass.svg +16 -0
  53. package/glyphs/copy.svg +16 -0
  54. package/glyphs/corner-down-left.svg +16 -0
  55. package/glyphs/cpu.svg +28 -0
  56. package/glyphs/crown.svg +16 -0
  57. package/glyphs/database.svg +17 -0
  58. package/glyphs/diff.svg +17 -0
  59. package/glyphs/ellipsis-vertical.svg +17 -0
  60. package/glyphs/ellipsis.svg +17 -0
  61. package/glyphs/external-link.svg +17 -0
  62. package/glyphs/eye-off.svg +18 -0
  63. package/glyphs/eye.svg +16 -0
  64. package/glyphs/file-text.svg +19 -0
  65. package/glyphs/flag.svg +15 -0
  66. package/glyphs/folder-input.svg +17 -0
  67. package/glyphs/folder-plus.svg +17 -0
  68. package/glyphs/folder.svg +15 -0
  69. package/glyphs/fullscreen.svg +19 -0
  70. package/glyphs/globe.svg +17 -0
  71. package/glyphs/grip-vertical.svg +20 -0
  72. package/glyphs/hash.svg +18 -0
  73. package/glyphs/house.svg +16 -0
  74. package/glyphs/inbox.svg +16 -0
  75. package/glyphs/info.svg +17 -0
  76. package/glyphs/key.svg +17 -0
  77. package/glyphs/layers.svg +17 -0
  78. package/glyphs/layout-dashboard.svg +18 -0
  79. package/glyphs/link.svg +16 -0
  80. package/glyphs/list-filter.svg +17 -0
  81. package/glyphs/list.svg +20 -0
  82. package/glyphs/maximize-2.svg +18 -0
  83. package/glyphs/maximize.svg +18 -0
  84. package/glyphs/menu.svg +17 -0
  85. package/glyphs/message-square.svg +15 -0
  86. package/glyphs/minimize.svg +18 -0
  87. package/glyphs/minus.svg +15 -0
  88. package/glyphs/monitor.svg +17 -0
  89. package/glyphs/moon.svg +15 -0
  90. package/glyphs/network.svg +19 -0
  91. package/glyphs/package.svg +18 -0
  92. package/glyphs/paperclip.svg +15 -0
  93. package/glyphs/pause.svg +16 -0
  94. package/glyphs/pencil.svg +16 -0
  95. package/glyphs/pin.svg +16 -0
  96. package/glyphs/plug.svg +18 -0
  97. package/glyphs/plus.svg +16 -0
  98. package/glyphs/power.svg +16 -0
  99. package/glyphs/redo.svg +16 -0
  100. package/glyphs/refresh-ccw.svg +18 -0
  101. package/glyphs/refresh-cw.svg +18 -0
  102. package/glyphs/repeat-2.svg +18 -0
  103. package/glyphs/rotate-ccw.svg +16 -0
  104. package/glyphs/rotate-cw.svg +16 -0
  105. package/glyphs/save.svg +17 -0
  106. package/glyphs/search.svg +16 -0
  107. package/glyphs/send.svg +16 -0
  108. package/glyphs/server.svg +18 -0
  109. package/glyphs/settings-2.svg +18 -0
  110. package/glyphs/settings.svg +16 -0
  111. package/glyphs/shield-user.svg +17 -0
  112. package/glyphs/shield.svg +15 -0
  113. package/glyphs/sliders-vertical.svg +23 -0
  114. package/glyphs/split.svg +18 -0
  115. package/glyphs/square-kanban.svg +18 -0
  116. package/glyphs/square-terminal.svg +17 -0
  117. package/glyphs/star.svg +15 -0
  118. package/glyphs/sun.svg +23 -0
  119. package/glyphs/table.svg +18 -0
  120. package/glyphs/target.svg +17 -0
  121. package/glyphs/trash.svg +19 -0
  122. package/glyphs/triangle-alert.svg +17 -0
  123. package/glyphs/undo.svg +16 -0
  124. package/glyphs/user-plus.svg +18 -0
  125. package/glyphs/user.svg +16 -0
  126. package/glyphs/users.svg +18 -0
  127. package/glyphs/wand-sparkles.svg +22 -0
  128. package/glyphs/wrench.svg +15 -0
  129. package/glyphs/x.svg +16 -0
  130. package/glyphs/zap.svg +15 -0
  131. package/glyphs/zoom-in.svg +18 -0
  132. package/glyphs/zoom-out.svg +17 -0
  133. package/package.json +7 -7
  134. package/dist/Glyph-kbRsfe3S.d.ts +0 -57
  135. package/dist/chunk-IBPOFE7X.js +0 -740
  136. package/dist/index-DRMc9hb_.d.ts +0 -4
  137. package/symbols/20/account_tree.svg +0 -1
  138. package/symbols/20/add.svg +0 -1
  139. package/symbols/20/apartment.svg +0 -1
  140. package/symbols/20/arrow_downward.svg +0 -1
  141. package/symbols/20/arrow_forward.svg +0 -1
  142. package/symbols/20/arrow_outward.svg +0 -1
  143. package/symbols/20/arrow_upward.svg +0 -1
  144. package/symbols/20/autorenew.svg +0 -1
  145. package/symbols/20/block.svg +0 -1
  146. package/symbols/20/bolt.svg +0 -1
  147. package/symbols/20/book_2.svg +0 -1
  148. package/symbols/20/bug_report.svg +0 -1
  149. package/symbols/20/build.svg +0 -1
  150. package/symbols/20/cable.svg +0 -1
  151. package/symbols/20/cached.svg +0 -1
  152. package/symbols/20/calendar_clock.svg +0 -1
  153. package/symbols/20/calendar_today.svg +0 -1
  154. package/symbols/20/chat.svg +0 -1
  155. package/symbols/20/check.svg +0 -1
  156. package/symbols/20/check_circle-fill.svg +0 -1
  157. package/symbols/20/check_circle.svg +0 -1
  158. package/symbols/20/chevron_left.svg +0 -1
  159. package/symbols/20/chevron_right.svg +0 -1
  160. package/symbols/20/close.svg +0 -1
  161. package/symbols/20/code.svg +0 -1
  162. package/symbols/20/computer.svg +0 -1
  163. package/symbols/20/content_copy.svg +0 -1
  164. package/symbols/20/create_new_folder.svg +0 -1
  165. package/symbols/20/crown.svg +0 -1
  166. package/symbols/20/cycle.svg +0 -1
  167. package/symbols/20/dark_mode.svg +0 -1
  168. package/symbols/20/dashboard.svg +0 -1
  169. package/symbols/20/database.svg +0 -1
  170. package/symbols/20/delete.svg +0 -1
  171. package/symbols/20/description.svg +0 -1
  172. package/symbols/20/difference.svg +0 -1
  173. package/symbols/20/dns.svg +0 -1
  174. package/symbols/20/drag_indicator.svg +0 -1
  175. package/symbols/20/edit.svg +0 -1
  176. package/symbols/20/error-fill.svg +0 -1
  177. package/symbols/20/error.svg +0 -1
  178. package/symbols/20/explore.svg +0 -1
  179. package/symbols/20/fit_screen.svg +0 -1
  180. package/symbols/20/flag.svg +0 -1
  181. package/symbols/20/folder.svg +0 -1
  182. package/symbols/20/fork_right.svg +0 -1
  183. package/symbols/20/fullscreen.svg +0 -1
  184. package/symbols/20/fullscreen_exit.svg +0 -1
  185. package/symbols/20/group.svg +0 -1
  186. package/symbols/20/help.svg +0 -1
  187. package/symbols/20/inbox.svg +0 -1
  188. package/symbols/20/info-fill.svg +0 -1
  189. package/symbols/20/info.svg +0 -1
  190. package/symbols/20/key.svg +0 -1
  191. package/symbols/20/keyboard_arrow_down.svg +0 -1
  192. package/symbols/20/keyboard_arrow_up.svg +0 -1
  193. package/symbols/20/keyboard_double_arrow_left.svg +0 -1
  194. package/symbols/20/keyboard_double_arrow_right.svg +0 -1
  195. package/symbols/20/layers.svg +0 -1
  196. package/symbols/20/light_mode.svg +0 -1
  197. package/symbols/20/link.svg +0 -1
  198. package/symbols/20/list.svg +0 -1
  199. package/symbols/20/manufacturing.svg +0 -1
  200. package/symbols/20/memory.svg +0 -1
  201. package/symbols/20/menu.svg +0 -1
  202. package/symbols/20/more_vert.svg +0 -1
  203. package/symbols/20/move_item.svg +0 -1
  204. package/symbols/20/neurology.svg +0 -1
  205. package/symbols/20/notifications.svg +0 -1
  206. package/symbols/20/open_in_new.svg +0 -1
  207. package/symbols/20/package_2.svg +0 -1
  208. package/symbols/20/pause.svg +0 -1
  209. package/symbols/20/person.svg +0 -1
  210. package/symbols/20/person_add.svg +0 -1
  211. package/symbols/20/photo_camera.svg +0 -1
  212. package/symbols/20/power_settings_new.svg +0 -1
  213. package/symbols/20/redo.svg +0 -1
  214. package/symbols/20/refresh.svg +0 -1
  215. package/symbols/20/remove.svg +0 -1
  216. package/symbols/20/save.svg +0 -1
  217. package/symbols/20/schedule.svg +0 -1
  218. package/symbols/20/search.svg +0 -1
  219. package/symbols/20/settings.svg +0 -1
  220. package/symbols/20/settings_backup_restore.svg +0 -1
  221. package/symbols/20/shield.svg +0 -1
  222. package/symbols/20/shield_person.svg +0 -1
  223. package/symbols/20/smart_toy.svg +0 -1
  224. package/symbols/20/star-fill.svg +0 -1
  225. package/symbols/20/star.svg +0 -1
  226. package/symbols/20/swap_vert.svg +0 -1
  227. package/symbols/20/tag.svg +0 -1
  228. package/symbols/20/target.svg +0 -1
  229. package/symbols/20/terminal.svg +0 -1
  230. package/symbols/20/timeline.svg +0 -1
  231. package/symbols/20/token.svg +0 -1
  232. package/symbols/20/tune.svg +0 -1
  233. package/symbols/20/undo.svg +0 -1
  234. package/symbols/20/unfold_more.svg +0 -1
  235. package/symbols/20/view_column.svg +0 -1
  236. package/symbols/20/visibility.svg +0 -1
  237. package/symbols/20/visibility_off.svg +0 -1
  238. package/symbols/20/warning-fill.svg +0 -1
  239. package/symbols/20/warning.svg +0 -1
  240. package/symbols/20/zoom_in.svg +0 -1
  241. package/symbols/20/zoom_out.svg +0 -1
  242. package/symbols/24/account_tree.svg +0 -1
  243. package/symbols/24/add.svg +0 -1
  244. package/symbols/24/apartment.svg +0 -1
  245. package/symbols/24/arrow_downward.svg +0 -1
  246. package/symbols/24/arrow_forward.svg +0 -1
  247. package/symbols/24/arrow_outward.svg +0 -1
  248. package/symbols/24/arrow_upward.svg +0 -1
  249. package/symbols/24/autorenew.svg +0 -1
  250. package/symbols/24/block.svg +0 -1
  251. package/symbols/24/bolt.svg +0 -1
  252. package/symbols/24/book_2.svg +0 -1
  253. package/symbols/24/bug_report.svg +0 -1
  254. package/symbols/24/build.svg +0 -1
  255. package/symbols/24/cable.svg +0 -1
  256. package/symbols/24/cached.svg +0 -1
  257. package/symbols/24/calendar_clock.svg +0 -1
  258. package/symbols/24/calendar_today.svg +0 -1
  259. package/symbols/24/chat.svg +0 -1
  260. package/symbols/24/check.svg +0 -1
  261. package/symbols/24/check_circle-fill.svg +0 -1
  262. package/symbols/24/check_circle.svg +0 -1
  263. package/symbols/24/chevron_left.svg +0 -1
  264. package/symbols/24/chevron_right.svg +0 -1
  265. package/symbols/24/close.svg +0 -1
  266. package/symbols/24/code.svg +0 -1
  267. package/symbols/24/computer.svg +0 -1
  268. package/symbols/24/content_copy.svg +0 -1
  269. package/symbols/24/create_new_folder.svg +0 -1
  270. package/symbols/24/crown.svg +0 -1
  271. package/symbols/24/cycle.svg +0 -1
  272. package/symbols/24/dark_mode.svg +0 -1
  273. package/symbols/24/dashboard.svg +0 -1
  274. package/symbols/24/database.svg +0 -1
  275. package/symbols/24/delete.svg +0 -1
  276. package/symbols/24/description.svg +0 -1
  277. package/symbols/24/difference.svg +0 -1
  278. package/symbols/24/dns.svg +0 -1
  279. package/symbols/24/drag_indicator.svg +0 -1
  280. package/symbols/24/edit.svg +0 -1
  281. package/symbols/24/error-fill.svg +0 -1
  282. package/symbols/24/error.svg +0 -1
  283. package/symbols/24/explore.svg +0 -1
  284. package/symbols/24/fit_screen.svg +0 -1
  285. package/symbols/24/flag.svg +0 -1
  286. package/symbols/24/folder.svg +0 -1
  287. package/symbols/24/fork_right.svg +0 -1
  288. package/symbols/24/fullscreen.svg +0 -1
  289. package/symbols/24/fullscreen_exit.svg +0 -1
  290. package/symbols/24/group.svg +0 -1
  291. package/symbols/24/help.svg +0 -1
  292. package/symbols/24/inbox.svg +0 -1
  293. package/symbols/24/info-fill.svg +0 -1
  294. package/symbols/24/info.svg +0 -1
  295. package/symbols/24/key.svg +0 -1
  296. package/symbols/24/keyboard_arrow_down.svg +0 -1
  297. package/symbols/24/keyboard_arrow_up.svg +0 -1
  298. package/symbols/24/keyboard_double_arrow_left.svg +0 -1
  299. package/symbols/24/keyboard_double_arrow_right.svg +0 -1
  300. package/symbols/24/layers.svg +0 -1
  301. package/symbols/24/light_mode.svg +0 -1
  302. package/symbols/24/link.svg +0 -1
  303. package/symbols/24/list.svg +0 -1
  304. package/symbols/24/manufacturing.svg +0 -1
  305. package/symbols/24/memory.svg +0 -1
  306. package/symbols/24/menu.svg +0 -1
  307. package/symbols/24/more_vert.svg +0 -1
  308. package/symbols/24/move_item.svg +0 -1
  309. package/symbols/24/neurology.svg +0 -1
  310. package/symbols/24/notifications.svg +0 -1
  311. package/symbols/24/open_in_new.svg +0 -1
  312. package/symbols/24/package_2.svg +0 -1
  313. package/symbols/24/pause.svg +0 -1
  314. package/symbols/24/person.svg +0 -1
  315. package/symbols/24/person_add.svg +0 -1
  316. package/symbols/24/photo_camera.svg +0 -1
  317. package/symbols/24/power_settings_new.svg +0 -1
  318. package/symbols/24/redo.svg +0 -1
  319. package/symbols/24/refresh.svg +0 -1
  320. package/symbols/24/remove.svg +0 -1
  321. package/symbols/24/save.svg +0 -1
  322. package/symbols/24/schedule.svg +0 -1
  323. package/symbols/24/search.svg +0 -1
  324. package/symbols/24/settings.svg +0 -1
  325. package/symbols/24/settings_backup_restore.svg +0 -1
  326. package/symbols/24/shield.svg +0 -1
  327. package/symbols/24/shield_person.svg +0 -1
  328. package/symbols/24/smart_toy.svg +0 -1
  329. package/symbols/24/star-fill.svg +0 -1
  330. package/symbols/24/star.svg +0 -1
  331. package/symbols/24/swap_vert.svg +0 -1
  332. package/symbols/24/tag.svg +0 -1
  333. package/symbols/24/target.svg +0 -1
  334. package/symbols/24/terminal.svg +0 -1
  335. package/symbols/24/timeline.svg +0 -1
  336. package/symbols/24/token.svg +0 -1
  337. package/symbols/24/tune.svg +0 -1
  338. package/symbols/24/undo.svg +0 -1
  339. package/symbols/24/unfold_more.svg +0 -1
  340. package/symbols/24/view_column.svg +0 -1
  341. package/symbols/24/visibility.svg +0 -1
  342. package/symbols/24/visibility_off.svg +0 -1
  343. package/symbols/24/warning-fill.svg +0 -1
  344. package/symbols/24/warning.svg +0 -1
  345. package/symbols/24/zoom_in.svg +0 -1
  346. package/symbols/24/zoom_out.svg +0 -1
  347. package/symbols/LICENSE +0 -202
  348. package/symbols/NOTICE +0 -15
  349. package/symbols/README.md +0 -44
  350. package/symbols/SHA256SUMS +0 -210
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # @crewlethq/icons
2
2
 
3
- Everything a Crewlet surface draws that is not text: the Material Symbols glyph set, the marks of the applications the platform integrates with, and the Crewlet signature illustrations.
3
+ Everything a Crewlet surface draws that is not text: the Lucide glyph set, the marks of the applications the platform integrates with, and the Crewlet signature illustrations.
4
4
 
5
5
  All three are React components compiled from SVG files that ship in the package. Nothing here fetches a font, a sprite or an image from another host, so a closed network draws exactly what an open one does.
6
6
 
7
7
  | What | Import from | Looks like |
8
8
  | ---- | ----------- | ---------- |
9
- | Glyphs (105 Material Symbols) | `@crewlethq/icons/glyphs` | `<CloseGlyph size="md" />` |
9
+ | Glyphs (Lucide, stroke on the 24 grid) | `@crewlethq/icons/glyphs` | `<XGlyph size="md" />` |
10
10
  | A glyph chosen from a value | `@crewlethq/icons/glyphs/registry` | `glyphByName(name)` |
11
11
  | Vendor marks | `@crewlethq/icons` | `<VendorMark vendor="slack" />` |
12
12
  | Signature illustrations | `@crewlethq/icons` | `<AgentReading />`, `<Icon name="AgentReading" />` |
@@ -15,33 +15,42 @@ All three are React components compiled from SVG files that ship in the package.
15
15
  ## Glyphs
16
16
 
17
17
  ```tsx
18
- import { CloseGlyph, KeyboardArrowDownGlyph } from '@crewlethq/icons/glyphs';
18
+ import { StarGlyph, XGlyph } from '@crewlethq/icons/glyphs';
19
19
 
20
- <CloseGlyph size="md" />
21
- <CloseGlyph size="lg" title="Close" />
20
+ <XGlyph size="md" />
21
+ <XGlyph size="lg" title="Close" />
22
+ <StarGlyph filled={kept} />
22
23
  ```
23
24
 
24
- Material Symbols Outlined, weight 400, grade 0, vendored at the 20 px and 24 px optical sizes from `google/material-design-icons`. [`symbols/README.md`](./symbols/README.md) records the provenance, the checksums and how to add or replace one.
25
+ Lucide drawings, vendored unchanged from `lucide-static` and drawn as the approved design draws them: a stroke on the 24 unit grid at a weight of 1.75, with round caps and round joins. [`glyphs/README.md`](./glyphs/README.md) records which glyphs the set carries and why, their provenance, the checksums and how to add or replace one.
25
26
 
26
27
  | Prop | Type | Default | Purpose |
27
28
  | ---- | ---- | ------- | ------- |
28
29
  | `size` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` (12, 14, 16, 20, 24), a number of px, or any CSS length | `'1em'` | How big it draws. |
29
30
  | `title` | string | none | Names the glyph for assistive technology. Without one the glyph is `aria-hidden` and unfocusable, which is right wherever a label sits beside it. |
30
- | `opsz` | `20 \| 24` | follows `size` | Which vendored drawing to use. |
31
+ | `filled` | boolean | `false` | Paints the drawing's inside in the text colour. Only a glyph listed in `FILLABLE` takes it; see below. |
31
32
 
32
- Every SVG attribute passes through, and `className` is added to the component's own `crewlet-glyph`.
33
+ Every other SVG attribute a caller sets on an icon passes through (a class, a style, a colour, a handler, an `aria-` or `data-` attribute), and `className` is added to the component's own `crewlet-glyph`. What the frame owns does not: `viewBox`, `fill`, `strokeWidth`, `strokeLinecap` and `strokeLinejoin` are not props, and the frame keeps them even against a caller the types do not reach, because each changes the drawing rather than where it sits or how big it is.
33
34
 
34
- **Names carry a `Glyph` suffix** because the bare words collide: `Timeline`, `List`, `Menu`, `Tag`, `Link` and `Code` are all `@crewlethq/ui` components, and a glyph taking one of those names would shadow the component at every import site that wanted both. `close` is `CloseGlyph`, `keyboard_arrow_down` is `KeyboardArrowDownGlyph`, `check_circle-fill` is `CheckCircleFillGlyph`.
35
+ **Names are Lucide's, with a `Glyph` suffix,** because the bare words collide: `Timeline`, `List`, `Menu`, `Tag`, `Link` and `Code` are all `@crewlethq/ui` components, and a glyph taking one of those names would shadow the component at every import site that wanted both. `x` is `XGlyph`, `chevron-down` is `ChevronDownGlyph`, `columns-3` is `Columns3Glyph`. `GLYPH_NAMES` lists every vendored name and `GlyphName` is the union of them, so a name the package does not ship is a compile error.
35
36
 
36
- **A filled state is its own name**, not a `fill` attribute: a Material Symbol is a filled path already, so `fill` paints the outline's own shape rather than solidifying it. Five glyphs ship both drawings — `check_circle` / `check_circle-fill`, `error` / `error-fill`, `info` / `info-fill`, `star` / `star-fill` and `warning` / `warning-fill` — so a surface that toggles a state swaps the component rather than a prop.
37
+ ### The stroke
37
38
 
38
- `GLYPH_NAMES` lists every vendored name and `GlyphName` is the union of them, so a name the package does not ship is a compile error.
39
+ The weight is 1.75 units of the 24 grid, where Lucide's own files say 2, and it scales with the glyph as the design's does: a 16 px glyph draws a 1.17 px line and a 24 px one a 1.75 px line. `--crewlet-glyph-stroke` moves it for every glyph beneath the element that sets it, and it is the one way to:
39
40
 
40
- ### The optical size
41
+ ```css
42
+ .dense-toolbar {
43
+ --crewlet-glyph-stroke: 2;
44
+ }
45
+ ```
46
+
47
+ The glyph carries the weight twice: as a style that reads the variable, and as a plain `stroke-width="1.75"` attribute beneath it, so markup rendered on a server under a `style-src` policy that refuses style attributes still draws at the design weight rather than at the SVG default of 1. `GLYPH_STROKE` is the number, for a drawing of your own that stands beside a glyph.
41
48
 
42
- The optical size axis is a different drawing, not a scaled one: the 20 px `close` is a 51-unit stroke on the 960 unit grid and the 24 px one is 56. `Glyph` takes the 20 px drawing at and below 20 px and the 24 px drawing above it, which it can work out whenever `size` says how many px it is.
49
+ ### The filled state
43
50
 
44
- It cannot when `size` is left at `1em` and an ancestor's `font-size` decides, because CSS has no way to hand a computed font size back to the component that would have to choose. The default there is the 20 px drawing, on the grounds that a glyph inheriting a font size sits in body text or a control label, every step of which is at or below 20 px. A surface that sets a larger font size passes `opsz={24}`.
51
+ **Only a `FILLABLE` glyph takes `filled`.** A stroke drawing with its inside painted reads as the mark only where the drawing is one closed silhouette: `bell` has an open clapper and would fill into a blob with a line through it, and `compass` and `target` are closed but would fill into a disc with nothing left to say which disc it is. So `FILLABLE` is a decision about meaning rather than a property of the geometry, the build refuses a name there whose drawing has an open stroke, and the component of every other glyph has no `filled` prop at all, so passing one is a compile error. It is `['star']` today: the kept state of the Crewlet console's favourite toggle.
52
+
53
+ A glyph a surface draws in two states that `FILLABLE` does not cover changes colour or changes glyph, rather than filling.
45
54
 
46
55
  ### Choosing a glyph from a value
47
56
 
@@ -49,7 +58,7 @@ It cannot when `size` is left at `1em` and an ancestor's `font-size` decides, be
49
58
  import { glyphByName } from '@crewlethq/icons/glyphs/registry';
50
59
  ```
51
60
 
52
- **This entry pulls in every glyph**, because a lookup by name is a lookup over all of them. That is the right trade where the name really is data (a navigation table, an event category, a configured integration kind) and the wrong one everywhere else, which is why it is a separate entry: code that imports one glyph never reaches it.
61
+ **This entry pulls in every glyph**, because a lookup by name is a lookup over all of them. That is the right trade where the name really is data (a navigation table, an event category, a configured integration kind) and the wrong one everywhere else, which is why it is a separate entry: code that imports one glyph never reaches it. The answer is the component registered under the name, with its own type: `glyphByName('star')` takes `filled` and `glyphByName('x')` does not.
53
62
 
54
63
  ## Vendor marks
55
64
 
@@ -105,7 +114,7 @@ The source SVGs ship in the package and are exported as `@crewlethq/icons/svg/*`
105
114
  import markUrl from '@crewlethq/icons/svg/crewlet-icon.svg';
106
115
  ```
107
116
 
108
- A bundler resolves the import to a URL. Outside a bundler, resolve the same specifier with `import.meta.resolve('@crewlethq/icons/svg/crewlet-icon.svg')` to get the file on disk. The vendored glyph drawings are exported the same way, as `@crewlethq/icons/symbols/20/close.svg`.
117
+ A bundler resolves the import to a URL. Outside a bundler, resolve the same specifier with `import.meta.resolve('@crewlethq/icons/svg/crewlet-icon.svg')` to get the file on disk. The vendored glyph drawings are exported the same way, as `@crewlethq/icons/glyphs/x.svg`, and so is the license that travels with them, as `@crewlethq/icons/glyphs/LICENSE`. A raw file is upstream's drawing at upstream's stroke of 2; the components are what draw it at the design's 1.75.
109
118
 
110
119
  ### Favicons
111
120
 
@@ -155,7 +164,7 @@ Loading the built entry in plain Node, with no bundler, therefore fails on the s
155
164
  2. Run `npm run build`.
156
165
  3. The new illustration is exported from `@crewlethq/icons` and appears in `ICON_NAMES`.
157
166
 
158
- A vendor mark goes into `svg/vendor/` instead, and is added to the `VENDORS` list and the `Vendor` union in `src/VendorMark.tsx`. A glyph is vendored rather than drawn; see [`symbols/README.md`](./symbols/README.md).
167
+ A vendor mark goes into `svg/vendor/` instead, and is added to the `VENDORS` list and the `Vendor` union in `src/VendorMark.tsx`. A glyph is vendored rather than drawn; see [`glyphs/README.md`](./glyphs/README.md).
159
168
 
160
169
  ## Conventions for source SVGs
161
170
 
@@ -180,10 +189,143 @@ Signature illustrations follow these rules so they recolor from CSS and sit on o
180
189
 
181
190
  **Vendor marks** (`svg/vendor/`): each application's own drawing in its own colours, on its own viewBox. The root element declares the fill it wants, because the build only supplies `currentColor` where a source declares none.
182
191
 
192
+ ## Breaking changes in 0.5.0
193
+
194
+ **The glyphs are Lucide's stroke drawings, and the Material Symbols set is gone.** The approved design draws every glyph as a stroke on the 24 grid with round caps and joins, and a filled Material Symbol beside one reads as a mark from another set, so `@crewlethq/icons/glyphs` now carries Lucide drawings under Lucide's names. Every glyph changes drawing, and most change name. The `symbols/` tree, its `@crewlethq/icons/symbols/*` export and `scripts/vendor-symbols.mjs` are removed; the drawings are in `glyphs/`, exported as `@crewlethq/icons/glyphs/*`. The package's license is `MIT AND ISC` rather than `MIT AND Apache-2.0`, and the notice an application's third-party notices carry for the glyphs is `@crewlethq/icons/glyphs/LICENSE` rather than `@crewlethq/icons/symbols/LICENSE` and `NOTICE`.
195
+
196
+ The optical size axis goes with Material: a Lucide drawing is one drawing at every size, so `opsz` and the two functions that chose it are removed. A filled state is a prop rather than a second glyph, and only on a glyph that can carry one: Material's `check_circle-fill`, `error-fill`, `info-fill` and `warning-fill` were solid discs and triangles with the mark knocked out, which a stroke drawing cannot be, so they take the outline, and the tone around them carries the state as it already did.
197
+
198
+ **One name survives with a different meaning, and it is not a compile error**, so look for it: `FullscreenGlyph` is Lucide's `fullscreen`, the corners with a screen inside that succeed Material's `fit_screen`, and Material's `fullscreen`, the bare corners, is now `MaximizeGlyph`. `TagGlyph` is gone rather than repurposed: Material's `tag` was a hash sign, which is `HashGlyph`, and Lucide's own `tag` is a price label that under the old name would have drawn a different thing without a word.
199
+
200
+ | Was | Is |
201
+ | --- | --- |
202
+ | a glyph imported by its Material name | its Lucide successor, from the table below |
203
+ | `opsz={20}` or `opsz={24}` on a glyph | nothing: remove the prop |
204
+ | `glyphOpticalSize()`, `glyphPixels()`, the `GlyphOpticalSize` and `GlyphDrawing` types | nothing; `cssLength()` still says what length a size means |
205
+ | `<StarFillGlyph />` | `<StarGlyph filled />` |
206
+ | `fill="currentColor"` or `fill` in a stylesheet to solidify a glyph | `filled` on a `FILLABLE` glyph; a stylesheet `fill` paints a stroke drawing's inside, so drop it from any rule that reaches a `.crewlet-glyph` |
207
+ | a stylesheet or `strokeWidth` changing a glyph's weight | `--crewlet-glyph-stroke` on an ancestor |
208
+ | `@crewlethq/icons/symbols/20/<name>.svg` or `/24/<name>.svg` | `@crewlethq/icons/glyphs/<lucide-name>.svg` |
209
+ | `@crewlethq/icons/symbols/LICENSE` and `NOTICE` in your third-party notices | `@crewlethq/icons/glyphs/LICENSE` |
210
+ | a license scan expecting `MIT AND Apache-2.0` | `MIT AND ISC` |
211
+ | `glyphByName('close')` and the other Material names in a `GlyphName` | the Lucide name, from the table below |
212
+
213
+ Every Material Symbols name the package shipped, and its successor. A row's Lucide name is also the `GlyphName` for `glyphByName`.
214
+
215
+ <!-- The migration table: every Material Symbols name 0.4 shipped, once. test/migration.test.mjs holds it to that. -->
216
+
217
+ | Material Symbols name | Was | Lucide name | Is |
218
+ | --------------------- | --- | ----------- | -- |
219
+ | `account_tree` | `AccountTreeGlyph` | `network` | `NetworkGlyph` |
220
+ | `add` | `AddGlyph` | `plus` | `PlusGlyph` |
221
+ | `apartment` | `ApartmentGlyph` | `building-complex` | `BuildingComplexGlyph` |
222
+ | `arrow_downward` | `ArrowDownwardGlyph` | `arrow-down` | `ArrowDownGlyph` |
223
+ | `arrow_forward` | `ArrowForwardGlyph` | `arrow-right` | `ArrowRightGlyph` |
224
+ | `arrow_outward` | `ArrowOutwardGlyph` | `arrow-up-right` | `ArrowUpRightGlyph` |
225
+ | `arrow_upward` | `ArrowUpwardGlyph` | `arrow-up` | `ArrowUpGlyph` |
226
+ | `autorenew` | `AutorenewGlyph` | `refresh-cw` | `RefreshCwGlyph` |
227
+ | `block` | `BlockGlyph` | `ban` | `BanGlyph` |
228
+ | `bolt` | `BoltGlyph` | `zap` | `ZapGlyph` |
229
+ | `book_2` | `Book2Glyph` | `book-open` | `BookOpenGlyph` |
230
+ | `bug_report` | `BugReportGlyph` | `bug` | `BugGlyph` |
231
+ | `build` | `BuildGlyph` | `wrench` | `WrenchGlyph` |
232
+ | `cable` | `CableGlyph` | `plug` | `PlugGlyph` |
233
+ | `cached` | `CachedGlyph` | `refresh-ccw` | `RefreshCcwGlyph` |
234
+ | `calendar_clock` | `CalendarClockGlyph` | `calendar-clock` | `CalendarClockGlyph` |
235
+ | `calendar_today` | `CalendarTodayGlyph` | `calendar` | `CalendarGlyph` |
236
+ | `chat` | `ChatGlyph` | `message-square` | `MessageSquareGlyph` |
237
+ | `check` | `CheckGlyph` | `check` | `CheckGlyph` |
238
+ | `check_circle` | `CheckCircleGlyph` | `circle-check` | `CircleCheckGlyph` |
239
+ | `check_circle-fill` | `CheckCircleFillGlyph` | `circle-check` | `CircleCheckGlyph` |
240
+ | `chevron_left` | `ChevronLeftGlyph` | `chevron-left` | `ChevronLeftGlyph` |
241
+ | `chevron_right` | `ChevronRightGlyph` | `chevron-right` | `ChevronRightGlyph` |
242
+ | `close` | `CloseGlyph` | `x` | `XGlyph` |
243
+ | `code` | `CodeGlyph` | `code` | `CodeGlyph` |
244
+ | `computer` | `ComputerGlyph` | `monitor` | `MonitorGlyph` |
245
+ | `content_copy` | `ContentCopyGlyph` | `copy` | `CopyGlyph` |
246
+ | `create_new_folder` | `CreateNewFolderGlyph` | `folder-plus` | `FolderPlusGlyph` |
247
+ | `crown` | `CrownGlyph` | `crown` | `CrownGlyph` |
248
+ | `cycle` | `CycleGlyph` | `repeat-2` | `Repeat2Glyph` |
249
+ | `dark_mode` | `DarkModeGlyph` | `moon` | `MoonGlyph` |
250
+ | `dashboard` | `DashboardGlyph` | `layout-dashboard` | `LayoutDashboardGlyph` |
251
+ | `database` | `DatabaseGlyph` | `database` | `DatabaseGlyph` |
252
+ | `delete` | `DeleteGlyph` | `trash` | `TrashGlyph` |
253
+ | `description` | `DescriptionGlyph` | `file-text` | `FileTextGlyph` |
254
+ | `difference` | `DifferenceGlyph` | `diff` | `DiffGlyph` |
255
+ | `dns` | `DnsGlyph` | `server` | `ServerGlyph` |
256
+ | `drag_indicator` | `DragIndicatorGlyph` | `grip-vertical` | `GripVerticalGlyph` |
257
+ | `edit` | `EditGlyph` | `pencil` | `PencilGlyph` |
258
+ | `error` | `ErrorGlyph` | `circle-alert` | `CircleAlertGlyph` |
259
+ | `error-fill` | `ErrorFillGlyph` | `circle-alert` | `CircleAlertGlyph` |
260
+ | `explore` | `ExploreGlyph` | `compass` | `CompassGlyph` |
261
+ | `fit_screen` | `FitScreenGlyph` | `fullscreen` | `FullscreenGlyph` |
262
+ | `flag` | `FlagGlyph` | `flag` | `FlagGlyph` |
263
+ | `folder` | `FolderGlyph` | `folder` | `FolderGlyph` |
264
+ | `fork_right` | `ForkRightGlyph` | `split` | `SplitGlyph` |
265
+ | `fullscreen` | `FullscreenGlyph` | `maximize` | `MaximizeGlyph` |
266
+ | `fullscreen_exit` | `FullscreenExitGlyph` | `minimize` | `MinimizeGlyph` |
267
+ | `group` | `GroupGlyph` | `users` | `UsersGlyph` |
268
+ | `help` | `HelpGlyph` | `circle-question-mark` | `CircleQuestionMarkGlyph` |
269
+ | `inbox` | `InboxGlyph` | `inbox` | `InboxGlyph` |
270
+ | `info` | `InfoGlyph` | `info` | `InfoGlyph` |
271
+ | `info-fill` | `InfoFillGlyph` | `info` | `InfoGlyph` |
272
+ | `key` | `KeyGlyph` | `key` | `KeyGlyph` |
273
+ | `keyboard_arrow_down` | `KeyboardArrowDownGlyph` | `chevron-down` | `ChevronDownGlyph` |
274
+ | `keyboard_arrow_up` | `KeyboardArrowUpGlyph` | `chevron-up` | `ChevronUpGlyph` |
275
+ | `keyboard_double_arrow_left` | `KeyboardDoubleArrowLeftGlyph` | `chevrons-left` | `ChevronsLeftGlyph` |
276
+ | `keyboard_double_arrow_right` | `KeyboardDoubleArrowRightGlyph` | `chevrons-right` | `ChevronsRightGlyph` |
277
+ | `layers` | `LayersGlyph` | `layers` | `LayersGlyph` |
278
+ | `light_mode` | `LightModeGlyph` | `sun` | `SunGlyph` |
279
+ | `link` | `LinkGlyph` | `link` | `LinkGlyph` |
280
+ | `list` | `ListGlyph` | `list` | `ListGlyph` |
281
+ | `manufacturing` | `ManufacturingGlyph` | `cog` | `CogGlyph` |
282
+ | `memory` | `MemoryGlyph` | `cpu` | `CpuGlyph` |
283
+ | `menu` | `MenuGlyph` | `menu` | `MenuGlyph` |
284
+ | `more_vert` | `MoreVertGlyph` | `ellipsis-vertical` | `EllipsisVerticalGlyph` |
285
+ | `move_item` | `MoveItemGlyph` | `folder-input` | `FolderInputGlyph` |
286
+ | `neurology` | `NeurologyGlyph` | `brain` | `BrainGlyph` |
287
+ | `notifications` | `NotificationsGlyph` | `bell` | `BellGlyph` |
288
+ | `open_in_new` | `OpenInNewGlyph` | `external-link` | `ExternalLinkGlyph` |
289
+ | `package_2` | `Package2Glyph` | `package` | `PackageGlyph` |
290
+ | `pause` | `PauseGlyph` | `pause` | `PauseGlyph` |
291
+ | `person` | `PersonGlyph` | `user` | `UserGlyph` |
292
+ | `person_add` | `PersonAddGlyph` | `user-plus` | `UserPlusGlyph` |
293
+ | `photo_camera` | `PhotoCameraGlyph` | `camera` | `CameraGlyph` |
294
+ | `power_settings_new` | `PowerSettingsNewGlyph` | `power` | `PowerGlyph` |
295
+ | `redo` | `RedoGlyph` | `redo` | `RedoGlyph` |
296
+ | `refresh` | `RefreshGlyph` | `rotate-cw` | `RotateCwGlyph` |
297
+ | `remove` | `RemoveGlyph` | `minus` | `MinusGlyph` |
298
+ | `save` | `SaveGlyph` | `save` | `SaveGlyph` |
299
+ | `schedule` | `ScheduleGlyph` | `clock` | `ClockGlyph` |
300
+ | `search` | `SearchGlyph` | `search` | `SearchGlyph` |
301
+ | `settings` | `SettingsGlyph` | `settings` | `SettingsGlyph` |
302
+ | `settings_backup_restore` | `SettingsBackupRestoreGlyph` | `rotate-ccw` | `RotateCcwGlyph` |
303
+ | `shield` | `ShieldGlyph` | `shield` | `ShieldGlyph` |
304
+ | `shield_person` | `ShieldPersonGlyph` | `shield-user` | `ShieldUserGlyph` |
305
+ | `smart_toy` | `SmartToyGlyph` | `bot` | `BotGlyph` |
306
+ | `star` | `StarGlyph` | `star` | `StarGlyph` |
307
+ | `star-fill` | `StarFillGlyph` | `star` | `<StarGlyph filled />` |
308
+ | `swap_vert` | `SwapVertGlyph` | `arrow-up-down` | `ArrowUpDownGlyph` |
309
+ | `tag` | `TagGlyph` | `hash` | `HashGlyph` |
310
+ | `target` | `TargetGlyph` | `target` | `TargetGlyph` |
311
+ | `terminal` | `TerminalGlyph` | `square-terminal` | `SquareTerminalGlyph` |
312
+ | `timeline` | `TimelineGlyph` | `chart-no-axes-gantt` | `ChartNoAxesGanttGlyph` |
313
+ | `token` | `TokenGlyph` | `coins` | `CoinsGlyph` |
314
+ | `tune` | `TuneGlyph` | `sliders-vertical` | `SlidersVerticalGlyph` |
315
+ | `undo` | `UndoGlyph` | `undo` | `UndoGlyph` |
316
+ | `unfold_more` | `UnfoldMoreGlyph` | `chevrons-up-down` | `ChevronsUpDownGlyph` |
317
+ | `view_column` | `ViewColumnGlyph` | `columns-3` | `Columns3Glyph` |
318
+ | `visibility` | `VisibilityGlyph` | `eye` | `EyeGlyph` |
319
+ | `visibility_off` | `VisibilityOffGlyph` | `eye-off` | `EyeOffGlyph` |
320
+ | `warning` | `WarningGlyph` | `triangle-alert` | `TriangleAlertGlyph` |
321
+ | `warning-fill` | `WarningFillGlyph` | `triangle-alert` | `TriangleAlertGlyph` |
322
+ | `zoom_in` | `ZoomInGlyph` | `zoom-in` | `ZoomInGlyph` |
323
+ | `zoom_out` | `ZoomOutGlyph` | `zoom-out` | `ZoomOutGlyph` |
324
+
183
325
  ## License
184
326
 
185
- MIT AND Apache-2.0.
327
+ MIT AND ISC.
186
328
 
187
- The package's own code and artwork are MIT; the license text is in [`LICENSE`](./LICENSE), which ships in the package. The vendored Material Symbols drawings in `symbols/` are Google's, under the Apache License 2.0, whose text and attribution are in [`symbols/LICENSE`](./symbols/LICENSE) and [`symbols/NOTICE`](./symbols/NOTICE) and ship beside them.
329
+ The package's own code and artwork are MIT; the license text is in [`LICENSE`](./LICENSE), which ships in the package. The vendored Lucide drawings in `glyphs/` are under the ISC License, and those Lucide derives from Feather are under Feather's MIT License as well; upstream's own [`glyphs/LICENSE`](./glyphs/LICENSE) carries both texts and ships beside them.
188
330
 
189
331
  Both licenses cover copyright only. The Crewlet name, logo and character are trademarks, and so are the third-party marks in `svg/vendor/`. [`TRADEMARKS.md`](./TRADEMARKS.md), which also ships in the package, says how each may be used.
package/TRADEMARKS.md CHANGED
@@ -34,6 +34,6 @@ Crewlet claims no rights in these marks. They are excluded from the MIT License'
34
34
 
35
35
  ## The glyph set
36
36
 
37
- The Material Symbols drawings in `packages/icons/symbols/` are Google's, under the Apache License 2.0. That license grants a copyright license and explicitly grants no trademark rights, so the drawings may be used and redistributed while "Material Symbols" and "Google" remain Google's marks. `packages/icons/symbols/LICENSE` and `NOTICE` carry the terms and ship in the package.
37
+ The Lucide drawings in `packages/icons/glyphs/` are Lucide's, under the ISC License, and those Lucide derives from Feather are under Feather's MIT License as well. Both licenses grant copyright permissions and say nothing about names, so the drawings may be used and redistributed, while "Lucide" and "Feather" stay the names of those projects: nothing this repository publishes is called by either, and neither project endorses it. `packages/icons/glyphs/LICENSE` carries both texts and ships in the package.
38
38
 
39
39
  For any use this page does not allow, ask the maintainers first by opening an issue in this repository.
@@ -0,0 +1,67 @@
1
+ import { SVGProps } from 'react';
2
+
3
+ /** The size steps, in px. The type scale's own steps, not a new scale. */
4
+ declare const GLYPH_SIZES: {
5
+ readonly xs: 12;
6
+ readonly sm: 14;
7
+ readonly md: 16;
8
+ readonly lg: 20;
9
+ readonly xl: 24;
10
+ };
11
+ type GlyphSizeStep = keyof typeof GLYPH_SIZES;
12
+ type GlyphSize = GlyphSizeStep | number | (string & {});
13
+ /**
14
+ * The stroke every glyph draws at, in units of the 24 grid: the approved
15
+ * design's `.ico` rule, 1.75 where Lucide's own files say 2. It scales with
16
+ * the glyph, as the design's does, so a 16 px glyph draws a 1.17 px line and a
17
+ * 24 px one a 1.75 px line.
18
+ *
19
+ * `--crewlet-glyph-stroke` on any ancestor moves it for everything beneath,
20
+ * and it is the one way to: a surface whose glyphs sit at a size where the
21
+ * line thins past legibility sets the variable once, rather than every glyph
22
+ * taking a prop that the next glyph added to the surface forgets.
23
+ */
24
+ declare const GLYPH_STROKE = 1.75;
25
+ /**
26
+ * A glyph's props: its size, its name for assistive technology, and every SVG
27
+ * attribute a caller legitimately sets on an icon (a class, a style, a colour,
28
+ * a handler, an aria- or data- attribute).
29
+ *
30
+ * WHAT THE FRAME OWNS IS NOT HERE: the viewBox, the fill, the stroke width and
31
+ * the caps and joins. Each of those changes the drawing rather than where or
32
+ * how big it is, and each has one right answer for every glyph. `fill` in
33
+ * particular paints the inside of a stroke drawing, which turns every glyph
34
+ * with an open line into a blob. The filled state is `filled`, which only a
35
+ * FILLABLE glyph takes; the weight is `--crewlet-glyph-stroke`.
36
+ */
37
+ interface GlyphProps extends Omit<SVGProps<SVGSVGElement>, 'title' | 'children' | 'viewBox' | 'fill' | 'strokeWidth' | 'strokeLinecap' | 'strokeLinejoin'> {
38
+ /** A step, a number of px, or any CSS length. Defaults to `1em`. */
39
+ size?: GlyphSize;
40
+ /**
41
+ * Names the glyph for assistive technology. Without one the glyph is
42
+ * decoration, which is what it almost always is: the meaning is carried by
43
+ * the label beside it.
44
+ */
45
+ title?: string;
46
+ }
47
+ /** The props of a glyph listed in `FILLABLE`, and of no other. */
48
+ interface FillableGlyphProps extends GlyphProps {
49
+ /**
50
+ * Paints the drawing's inside in the text colour, for a state the outline
51
+ * and the solid mark tell apart: a kept item's star. The stroke stays, so
52
+ * the two states are one silhouette at one size.
53
+ */
54
+ filled?: boolean;
55
+ }
56
+ /**
57
+ * The CSS length a size prop means, `1em` when it says nothing.
58
+ *
59
+ * Shared with VendorMark, which sits on the same steps because it sits beside
60
+ * glyphs, and PUBLISHED for the same reason: a drawing that is not a Glyph at
61
+ * all (the Crewlet figure, a vendor's own SVG) is sized by a consumer who is
62
+ * choosing between it and a glyph, and a second reading of what `sm` is worth
63
+ * is how one of them stops matching the other.
64
+ */
65
+ declare function cssLength(size: GlyphSize | undefined): string;
66
+
67
+ export { type FillableGlyphProps as F, type GlyphSize as G, type GlyphProps as a, GLYPH_SIZES as b, GLYPH_STROKE as c, type GlyphSizeStep as d, cssLength as e };