@axiapps/axi-design 1.12.0 → 1.14.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 (105) hide show
  1. package/README.md +41 -7
  2. package/dist/axi.css +36 -1
  3. package/dist/icons/arrow-down.svg +4 -0
  4. package/dist/icons/arrow-left.svg +4 -0
  5. package/dist/icons/arrow-right.svg +4 -0
  6. package/dist/icons/arrow-up.svg +4 -0
  7. package/dist/icons/calendar.svg +6 -0
  8. package/dist/icons/check-check.svg +4 -0
  9. package/dist/icons/check.svg +3 -0
  10. package/dist/icons/chevron-down.svg +3 -0
  11. package/dist/icons/chevron-left.svg +3 -0
  12. package/dist/icons/chevron-right.svg +3 -0
  13. package/dist/icons/chevron-up.svg +3 -0
  14. package/dist/icons/circle-alert.svg +5 -0
  15. package/dist/icons/circle-check.svg +4 -0
  16. package/dist/icons/circle-x.svg +5 -0
  17. package/dist/icons/clock.svg +4 -0
  18. package/dist/icons/copy.svg +4 -0
  19. package/dist/icons/download.svg +5 -0
  20. package/dist/icons/external-link.svg +5 -0
  21. package/dist/icons/eye.svg +4 -0
  22. package/dist/icons/file-text.svg +6 -0
  23. package/dist/icons/file.svg +4 -0
  24. package/dist/icons/filter.svg +3 -0
  25. package/dist/icons/folder-open.svg +4 -0
  26. package/dist/icons/folder.svg +3 -0
  27. package/dist/icons/icons.json +671 -0
  28. package/dist/icons/info.svg +5 -0
  29. package/dist/icons/link.svg +5 -0
  30. package/dist/icons/lock.svg +4 -0
  31. package/dist/icons/menu.svg +5 -0
  32. package/dist/icons/minus.svg +3 -0
  33. package/dist/icons/pause.svg +4 -0
  34. package/dist/icons/pencil.svg +4 -0
  35. package/dist/icons/play.svg +3 -0
  36. package/dist/icons/plus.svg +4 -0
  37. package/dist/icons/refresh-cw.svg +6 -0
  38. package/dist/icons/save.svg +5 -0
  39. package/dist/icons/search.svg +4 -0
  40. package/dist/icons/settings-2.svg +6 -0
  41. package/dist/icons/skip-forward.svg +4 -0
  42. package/dist/icons/sprite.svg +203 -0
  43. package/dist/icons/square.svg +3 -0
  44. package/dist/icons/tag.svg +4 -0
  45. package/dist/icons/trash-2.svg +5 -0
  46. package/dist/icons/unlock.svg +4 -0
  47. package/dist/icons/upload.svg +5 -0
  48. package/dist/icons/user.svg +4 -0
  49. package/dist/icons/users.svg +6 -0
  50. package/dist/icons/volume-2.svg +5 -0
  51. package/dist/icons/x.svg +4 -0
  52. package/dist/themes/glass.css +19 -6
  53. package/docs/RULES.md +123 -18
  54. package/icons/LICENSE-LUCIDE +51 -0
  55. package/icons/arrow-down.svg +4 -0
  56. package/icons/arrow-left.svg +4 -0
  57. package/icons/arrow-right.svg +4 -0
  58. package/icons/arrow-up.svg +4 -0
  59. package/icons/calendar.svg +6 -0
  60. package/icons/check-check.svg +4 -0
  61. package/icons/check.svg +3 -0
  62. package/icons/chevron-down.svg +3 -0
  63. package/icons/chevron-left.svg +3 -0
  64. package/icons/chevron-right.svg +3 -0
  65. package/icons/chevron-up.svg +3 -0
  66. package/icons/circle-alert.svg +5 -0
  67. package/icons/circle-check.svg +4 -0
  68. package/icons/circle-x.svg +5 -0
  69. package/icons/clock.svg +4 -0
  70. package/icons/copy.svg +4 -0
  71. package/icons/download.svg +5 -0
  72. package/icons/external-link.svg +5 -0
  73. package/icons/eye.svg +4 -0
  74. package/icons/file-text.svg +6 -0
  75. package/icons/file.svg +4 -0
  76. package/icons/filter.svg +3 -0
  77. package/icons/folder-open.svg +4 -0
  78. package/icons/folder.svg +3 -0
  79. package/icons/info.svg +5 -0
  80. package/icons/link.svg +5 -0
  81. package/icons/lock.svg +4 -0
  82. package/icons/menu.svg +5 -0
  83. package/icons/minus.svg +3 -0
  84. package/icons/pause.svg +4 -0
  85. package/icons/pencil.svg +4 -0
  86. package/icons/play.svg +3 -0
  87. package/icons/plus.svg +4 -0
  88. package/icons/refresh-cw.svg +6 -0
  89. package/icons/save.svg +5 -0
  90. package/icons/search.svg +4 -0
  91. package/icons/settings-2.svg +6 -0
  92. package/icons/skip-forward.svg +4 -0
  93. package/icons/square.svg +3 -0
  94. package/icons/tag.svg +4 -0
  95. package/icons/trash-2.svg +5 -0
  96. package/icons/unlock.svg +4 -0
  97. package/icons/upload.svg +5 -0
  98. package/icons/user.svg +4 -0
  99. package/icons/users.svg +6 -0
  100. package/icons/volume-2.svg +5 -0
  101. package/icons/x.svg +4 -0
  102. package/package.json +5 -1
  103. package/src/base.css +7 -1
  104. package/src/primitives.css +15 -0
  105. package/src/tokens.css +14 -0
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M8.5 4.5 L19.5 4.5 L19.5 15.5"/>
3
+ <path d="M16.5 12.5 L19.5 15.5 L22.5 12.5"/>
4
+ <path d="M15.5 19.5 L4.5 19.5 L4.5 8.5"/>
5
+ <path d="M1.5 11.5 L4.5 8.5 L7.5 11.5"/>
6
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M3.5 3.5 L16.5 3.5 L20.5 7.5 L20.5 20.5 L3.5 20.5 Z"/>
3
+ <path d="M7.5 3.5 L7.5 9.5 L15.5 9.5 L15.5 3.5"/>
4
+ <path d="M7.5 20.5 L7.5 14.5 L16.5 14.5 L16.5 20.5"/>
5
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M9.5 3.5 L15.5 9.5 L9.5 15.5 L3.5 9.5 Z"/>
3
+ <path d="M13.5 13.5 L20.5 20.5"/>
4
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M3.5 8.5 L20.5 8.5"/>
3
+ <path d="M3.5 15.5 L20.5 15.5"/>
4
+ <path d="M9.5 5.5 L12.5 8.5 L9.5 11.5 L6.5 8.5 Z"/>
5
+ <path d="M15.5 12.5 L18.5 15.5 L15.5 18.5 L12.5 15.5 Z"/>
6
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M6.5 5.5 L13 12 L6.5 18.5 Z"/>
3
+ <path d="M17.5 5.5 L17.5 18.5"/>
4
+ </svg>
@@ -0,0 +1,203 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg">
2
+ <!-- axi design language - generated by scripts/build.mjs from icons/.
3
+ Edit the files in icons/ and run `npm run build`; do not edit this file. -->
4
+ <symbol id="axi-arrow-down" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
5
+ <path d="M12 3.5 L12 19.5"/>
6
+ <path d="M6 13.5 L12 19.5 L18 13.5"/>
7
+ </symbol>
8
+ <symbol id="axi-arrow-left" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
9
+ <path d="M20.5 12 L4.5 12"/>
10
+ <path d="M10.5 6 L4.5 12 L10.5 18"/>
11
+ </symbol>
12
+ <symbol id="axi-arrow-right" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
13
+ <path d="M3.5 12 L19.5 12"/>
14
+ <path d="M13.5 6 L19.5 12 L13.5 18"/>
15
+ </symbol>
16
+ <symbol id="axi-arrow-up" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
17
+ <path d="M12 20.5 L12 4.5"/>
18
+ <path d="M6 10.5 L12 4.5 L18 10.5"/>
19
+ </symbol>
20
+ <symbol id="axi-calendar" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
21
+ <path d="M3.5 5.5 L20.5 5.5 L20.5 20.5 L3.5 20.5 Z"/>
22
+ <path d="M3.5 10.5 L20.5 10.5"/>
23
+ <path d="M8.5 2.5 L8.5 7.5"/>
24
+ <path d="M15.5 2.5 L15.5 7.5"/>
25
+ </symbol>
26
+ <symbol id="axi-check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
27
+ <path d="M3.5 12.5 L9.5 18.5 L20.5 7.5"/>
28
+ </symbol>
29
+ <symbol id="axi-check-check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
30
+ <path d="M1.5 12.5 L6.5 17.5 L15.5 8.5"/>
31
+ <path d="M9.5 15.5 L11.5 17.5 L21.5 7.5"/>
32
+ </symbol>
33
+ <symbol id="axi-chevron-down" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
34
+ <path d="M5.5 9 L12 15.5 L18.5 9"/>
35
+ </symbol>
36
+ <symbol id="axi-chevron-left" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
37
+ <path d="M15 5.5 L8.5 12 L15 18.5"/>
38
+ </symbol>
39
+ <symbol id="axi-chevron-right" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
40
+ <path d="M9 5.5 L15.5 12 L9 18.5"/>
41
+ </symbol>
42
+ <symbol id="axi-chevron-up" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
43
+ <path d="M5.5 15 L12 8.5 L18.5 15"/>
44
+ </symbol>
45
+ <symbol id="axi-circle-alert" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
46
+ <path d="M8.5 1.5 L15.5 1.5 L22.5 8.5 L22.5 15.5 L15.5 22.5 L8.5 22.5 L1.5 15.5 L1.5 8.5 Z"/>
47
+ <path d="M12 6.5 L12 13.5"/>
48
+ <path d="M12 16.5 L12 18"/>
49
+ </symbol>
50
+ <symbol id="axi-circle-check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
51
+ <path d="M8.5 1.5 L15.5 1.5 L22.5 8.5 L22.5 15.5 L15.5 22.5 L8.5 22.5 L1.5 15.5 L1.5 8.5 Z"/>
52
+ <path d="M7 12 L10.5 15.5 L17 9"/>
53
+ </symbol>
54
+ <symbol id="axi-circle-x" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
55
+ <path d="M8.5 1.5 L15.5 1.5 L22.5 8.5 L22.5 15.5 L15.5 22.5 L8.5 22.5 L1.5 15.5 L1.5 8.5 Z"/>
56
+ <path d="M8 8 L16 16"/>
57
+ <path d="M16 8 L8 16"/>
58
+ </symbol>
59
+ <symbol id="axi-clock" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
60
+ <path d="M3.5 3.5 L20.5 3.5 L20.5 20.5 L3.5 20.5 Z"/>
61
+ <path d="M12 7.5 L12 12 L16.5 12"/>
62
+ </symbol>
63
+ <symbol id="axi-copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
64
+ <path d="M8.5 8.5 L20.5 8.5 L20.5 20.5 L8.5 20.5 Z"/>
65
+ <path d="M15.5 5.5 L15.5 3.5 L3.5 3.5 L3.5 15.5 L5.5 15.5"/>
66
+ </symbol>
67
+ <symbol id="axi-download" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
68
+ <path d="M12 2.5 L12 14.5"/>
69
+ <path d="M6.5 9 L12 14.5 L17.5 9"/>
70
+ <path d="M3.5 18.5 L3.5 21.5 L20.5 21.5 L20.5 18.5"/>
71
+ </symbol>
72
+ <symbol id="axi-external-link" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
73
+ <path d="M12.5 4.5 L3.5 4.5 L3.5 20.5 L19.5 20.5 L19.5 11.5"/>
74
+ <path d="M11.5 12.5 L20.5 3.5"/>
75
+ <path d="M13.5 3.5 L20.5 3.5 L20.5 10.5"/>
76
+ </symbol>
77
+ <symbol id="axi-eye" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
78
+ <path d="M2.5 12 L8 6.5 L16 6.5 L21.5 12 L16 17.5 L8 17.5 Z"/>
79
+ <path d="M12 9 L15 12 L12 15 L9 12 Z"/>
80
+ </symbol>
81
+ <symbol id="axi-file" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
82
+ <path d="M5.5 2.5 L14.5 2.5 L19.5 7.5 L19.5 21.5 L5.5 21.5 Z"/>
83
+ <path d="M14.5 2.5 L14.5 7.5 L19.5 7.5"/>
84
+ </symbol>
85
+ <symbol id="axi-file-text" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
86
+ <path d="M5.5 2.5 L14.5 2.5 L19.5 7.5 L19.5 21.5 L5.5 21.5 Z"/>
87
+ <path d="M14.5 2.5 L14.5 7.5 L19.5 7.5"/>
88
+ <path d="M8.5 12.5 L15.5 12.5"/>
89
+ <path d="M8.5 16.5 L15.5 16.5"/>
90
+ </symbol>
91
+ <symbol id="axi-filter" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
92
+ <path d="M2.5 4.5 L21.5 4.5 L13.5 12.5 L13.5 19.5 L10.5 19.5 L10.5 12.5 Z"/>
93
+ </symbol>
94
+ <symbol id="axi-folder" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
95
+ <path d="M2.5 20.5 L2.5 4.5 L8.5 4.5 L11.5 7.5 L21.5 7.5 L21.5 20.5 Z"/>
96
+ </symbol>
97
+ <symbol id="axi-folder-open" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
98
+ <path d="M2.5 20.5 L2.5 4.5 L8.5 4.5 L11.5 7.5 L19.5 7.5 L19.5 12.5"/>
99
+ <path d="M10.5 12.5 L22.5 12.5 L14.5 20.5 L2.5 20.5 Z"/>
100
+ </symbol>
101
+ <symbol id="axi-info" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
102
+ <path d="M3.5 3.5 L20.5 3.5 L20.5 20.5 L3.5 20.5 Z"/>
103
+ <path d="M12 7 L12 8.5"/>
104
+ <path d="M12 11.5 L12 17"/>
105
+ </symbol>
106
+ <symbol id="axi-link" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
107
+ <path d="M9.5 14.5 L14.5 9.5"/>
108
+ <path d="M13.5 6.5 L16.5 3.5 L20.5 7.5 L17.5 10.5"/>
109
+ <path d="M10.5 17.5 L7.5 20.5 L3.5 16.5 L6.5 13.5"/>
110
+ </symbol>
111
+ <symbol id="axi-lock" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
112
+ <path d="M4.5 11.5 L19.5 11.5 L19.5 21.5 L4.5 21.5 Z"/>
113
+ <path d="M8.5 11.5 L8.5 6.5 L15.5 6.5 L15.5 11.5"/>
114
+ </symbol>
115
+ <symbol id="axi-menu" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
116
+ <path d="M3.5 5.5 L20.5 5.5"/>
117
+ <path d="M3.5 12 L20.5 12"/>
118
+ <path d="M3.5 18.5 L20.5 18.5"/>
119
+ </symbol>
120
+ <symbol id="axi-minus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
121
+ <path d="M3.5 12 L20.5 12"/>
122
+ </symbol>
123
+ <symbol id="axi-pause" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
124
+ <path d="M8.5 5.5 L8.5 18.5"/>
125
+ <path d="M15.5 5.5 L15.5 18.5"/>
126
+ </symbol>
127
+ <symbol id="axi-pencil" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
128
+ <path d="M3.5 20.5 L3.5 16.5 L15.5 4.5 L19.5 8.5 L7.5 20.5 Z"/>
129
+ <path d="M12.5 7.5 L16.5 11.5"/>
130
+ </symbol>
131
+ <symbol id="axi-play" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
132
+ <path d="M8.5 5.5 L15 12 L8.5 18.5 Z"/>
133
+ </symbol>
134
+ <symbol id="axi-plus" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
135
+ <path d="M12 3.5 L12 20.5"/>
136
+ <path d="M3.5 12 L20.5 12"/>
137
+ </symbol>
138
+ <symbol id="axi-refresh-cw" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
139
+ <path d="M8.5 4.5 L19.5 4.5 L19.5 15.5"/>
140
+ <path d="M16.5 12.5 L19.5 15.5 L22.5 12.5"/>
141
+ <path d="M15.5 19.5 L4.5 19.5 L4.5 8.5"/>
142
+ <path d="M1.5 11.5 L4.5 8.5 L7.5 11.5"/>
143
+ </symbol>
144
+ <symbol id="axi-save" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
145
+ <path d="M3.5 3.5 L16.5 3.5 L20.5 7.5 L20.5 20.5 L3.5 20.5 Z"/>
146
+ <path d="M7.5 3.5 L7.5 9.5 L15.5 9.5 L15.5 3.5"/>
147
+ <path d="M7.5 20.5 L7.5 14.5 L16.5 14.5 L16.5 20.5"/>
148
+ </symbol>
149
+ <symbol id="axi-search" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
150
+ <path d="M9.5 3.5 L15.5 9.5 L9.5 15.5 L3.5 9.5 Z"/>
151
+ <path d="M13.5 13.5 L20.5 20.5"/>
152
+ </symbol>
153
+ <symbol id="axi-settings-2" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
154
+ <path d="M3.5 8.5 L20.5 8.5"/>
155
+ <path d="M3.5 15.5 L20.5 15.5"/>
156
+ <path d="M9.5 5.5 L12.5 8.5 L9.5 11.5 L6.5 8.5 Z"/>
157
+ <path d="M15.5 12.5 L18.5 15.5 L15.5 18.5 L12.5 15.5 Z"/>
158
+ </symbol>
159
+ <symbol id="axi-skip-forward" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
160
+ <path d="M6.5 5.5 L13 12 L6.5 18.5 Z"/>
161
+ <path d="M17.5 5.5 L17.5 18.5"/>
162
+ </symbol>
163
+ <symbol id="axi-square" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
164
+ <path d="M4.5 4.5 L19.5 4.5 L19.5 19.5 L4.5 19.5 Z"/>
165
+ </symbol>
166
+ <symbol id="axi-tag" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
167
+ <path d="M2.5 2.5 L13.5 2.5 L21.5 10.5 L10.5 21.5 L2.5 13.5 Z"/>
168
+ <path d="M6.5 4.5 L8.5 6.5 L6.5 8.5 L4.5 6.5 Z"/>
169
+ </symbol>
170
+ <symbol id="axi-trash-2" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
171
+ <path d="M2.5 6.5 L21.5 6.5"/>
172
+ <path d="M5.5 6.5 L5.5 21.5 L18.5 21.5 L18.5 6.5"/>
173
+ <path d="M9.5 6.5 L9.5 2.5 L14.5 2.5 L14.5 6.5"/>
174
+ </symbol>
175
+ <symbol id="axi-unlock" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
176
+ <path d="M4.5 11.5 L19.5 11.5 L19.5 21.5 L4.5 21.5 Z"/>
177
+ <path d="M8.5 11.5 L8.5 6.5 L15.5 6.5"/>
178
+ </symbol>
179
+ <symbol id="axi-upload" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
180
+ <path d="M12 14.5 L12 2.5"/>
181
+ <path d="M6.5 8 L12 2.5 L17.5 8"/>
182
+ <path d="M3.5 18.5 L3.5 21.5 L20.5 21.5 L20.5 18.5"/>
183
+ </symbol>
184
+ <symbol id="axi-user" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
185
+ <path d="M12 3.5 L16.5 8 L12 12.5 L7.5 8 Z"/>
186
+ <path d="M4.5 21.5 L4.5 19.5 L8.5 15.5 L15.5 15.5 L19.5 19.5 L19.5 21.5"/>
187
+ </symbol>
188
+ <symbol id="axi-users" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
189
+ <path d="M9 2.5 L13 6.5 L9 10.5 L5 6.5 Z"/>
190
+ <path d="M1.5 20.5 L1.5 18.5 L5.5 14.5 L12.5 14.5 L16.5 18.5 L16.5 20.5"/>
191
+ <path d="M17 5.5 L20 8.5 L17 11.5"/>
192
+ <path d="M17 14.5 L19.5 14.5 L22.5 17.5 L22.5 20.5"/>
193
+ </symbol>
194
+ <symbol id="axi-volume-2" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
195
+ <path d="M2.5 9.5 L6.5 9.5 L12.5 3.5 L12.5 20.5 L6.5 14.5 L2.5 14.5 Z"/>
196
+ <path d="M16.5 8.5 L16.5 15.5"/>
197
+ <path d="M20.5 5.5 L20.5 18.5"/>
198
+ </symbol>
199
+ <symbol id="axi-x" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
200
+ <path d="M5.5 5.5 L18.5 18.5"/>
201
+ <path d="M18.5 5.5 L5.5 18.5"/>
202
+ </symbol>
203
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M4.5 4.5 L19.5 4.5 L19.5 19.5 L4.5 19.5 Z"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M2.5 2.5 L13.5 2.5 L21.5 10.5 L10.5 21.5 L2.5 13.5 Z"/>
3
+ <path d="M6.5 4.5 L8.5 6.5 L6.5 8.5 L4.5 6.5 Z"/>
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M2.5 6.5 L21.5 6.5"/>
3
+ <path d="M5.5 6.5 L5.5 21.5 L18.5 21.5 L18.5 6.5"/>
4
+ <path d="M9.5 6.5 L9.5 2.5 L14.5 2.5 L14.5 6.5"/>
5
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M4.5 11.5 L19.5 11.5 L19.5 21.5 L4.5 21.5 Z"/>
3
+ <path d="M8.5 11.5 L8.5 6.5 L15.5 6.5"/>
4
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M12 14.5 L12 2.5"/>
3
+ <path d="M6.5 8 L12 2.5 L17.5 8"/>
4
+ <path d="M3.5 18.5 L3.5 21.5 L20.5 21.5 L20.5 18.5"/>
5
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M12 3.5 L16.5 8 L12 12.5 L7.5 8 Z"/>
3
+ <path d="M4.5 21.5 L4.5 19.5 L8.5 15.5 L15.5 15.5 L19.5 19.5 L19.5 21.5"/>
4
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M9 2.5 L13 6.5 L9 10.5 L5 6.5 Z"/>
3
+ <path d="M1.5 20.5 L1.5 18.5 L5.5 14.5 L12.5 14.5 L16.5 18.5 L16.5 20.5"/>
4
+ <path d="M17 5.5 L20 8.5 L17 11.5"/>
5
+ <path d="M17 14.5 L19.5 14.5 L22.5 17.5 L22.5 20.5"/>
6
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M2.5 9.5 L6.5 9.5 L12.5 3.5 L12.5 20.5 L6.5 14.5 L2.5 14.5 Z"/>
3
+ <path d="M16.5 8.5 L16.5 15.5"/>
4
+ <path d="M20.5 5.5 L20.5 18.5"/>
5
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M5.5 5.5 L18.5 18.5"/>
3
+ <path d="M18.5 5.5 L5.5 18.5"/>
4
+ </svg>
@@ -3,13 +3,26 @@
3
3
 
4
4
  [data-axi-theme="glass"] {
5
5
  --axi-ground: #0a0c10;
6
- --axi-surface: rgba(255, 255, 255, .09);
7
- --axi-surface-raised: rgba(255, 255, 255, .15);
8
- --axi-ink-line: #242b38;
6
+ --axi-ground-image: radial-gradient(900px 500px at 15% 0%, rgba(120, 90, 255, .30), transparent 60%), radial-gradient(700px 500px at 95% 30%, rgba(0, 190, 255, .22), transparent 62%), radial-gradient(600px 600px at 60% 100%, rgba(255, 90, 170, .20), transparent 60%);
7
+ --axi-surface: linear-gradient(145deg, rgba(58, 68, 92, .55), rgba(28, 33, 46, .42));
8
+ --axi-surface-raised: linear-gradient(145deg, rgba(86, 99, 130, .5), rgba(44, 52, 71, .38));
9
+ --axi-surface-filter: blur(18px) saturate(140%);
10
+ --axi-ink-line: rgba(180, 200, 255, .16);
11
+ --axi-rule: rgba(180, 200, 255, .14);
9
12
  --axi-ground-deep: #0c0e12;
10
13
  --axi-accent-ink: #0c0e12;
11
14
  --axi-ink-on-fill: #0c0e12;
12
- --axi-rule: rgba(255, 255, 255, .17);
13
- --axi-scrim: rgba(6, 7, 9, .55);
14
- --axi-surface-filter: blur(14px) saturate(140%);
15
+ --axi-text: #f2f5fb;
16
+ --axi-text-dim: #b3bdd0;
17
+ --axi-text-faint: #7f8aa0;
18
+ --axi-scrim: rgba(4, 6, 12, .66);
19
+ --axi-shadow-panel: 0 18px 44px rgba(0, 0, 0, .55), inset 0 1px 0 rgba(255, 255, 255, .14);
20
+ --axi-shadow-control: 0 6px 16px rgba(0, 0, 0, .45), inset 0 1px 0 rgba(255, 255, 255, .12);
21
+ --axi-shadow-panel-hover: 0 26px 60px rgba(0, 0, 0, .6), inset 0 1px 0 rgba(255, 255, 255, .2);
22
+ --axi-shadow-control-hover: 0 10px 24px rgba(0, 0, 0, .5), inset 0 1px 0 rgba(255, 255, 255, .18);
23
+ --axi-border-panel: 1px;
24
+ --axi-border-control: 1px;
25
+ --axi-border-hairline: 1px;
26
+ --axi-radius: 16px;
27
+ --axi-radius-sm: 10px;
15
28
  }
package/docs/RULES.md CHANGED
@@ -16,10 +16,11 @@ gridlines (a `repeating-linear-gradient` of hard stops, which is how N evenly
16
16
  spaced rules get drawn without asking every consumer to emit N empty divs).
17
17
  A gradient across a surface is still forbidden in every component file, and
18
18
  always will be. The single relief is a *theme* restating the surface tokens
19
- themselves — see [Themes](#themes) — which is what lets a glass theme exist
20
- without one component ever learning the word "glass". A component cannot reach
21
- for that exception, because it cannot see it: what it reads is the same surface
22
- token it was already reading.
19
+ themselves — and `--axi-ground-image`, the page's own light, which is declared
20
+ inert in `tokens.css` and read only by `body`; see [Themes](#themes). That is
21
+ what lets a glass theme exist without one component ever learning the word
22
+ "glass". A component cannot reach for that exception, because it cannot see it:
23
+ what it reads is the same surface token it was already reading.
23
24
 
24
25
  ## 2. No colour at partial opacity over the ground
25
26
 
@@ -28,13 +29,19 @@ just brown, and five muted inks over near-black are five browns. When something
28
29
  should be quieter, reach for a neutral from the ramp — that is what the ramp is
29
30
  for.
30
31
 
31
- A theme gets the same carve-out as rule 1 and not one inch more: it may hold the
32
- *surface* tokens at partial opacity, because a translucent surface is that
33
- surface's own definition rather than a colour laid over the ground. The inks are
34
- untouched. A muted `--axi-warn`, a faded accent, a status ink at 60% — still
35
- forbidden, in a theme exactly as in a component, because the paragraph above is
36
- about what happens to meaning when five inks become five browns, and changing
37
- which stylesheet does the muting does not change that.
32
+ A theme gets the same carve-out as rule 1: it may hold the *surface layer* at
33
+ partial opacity, because a translucent surface is that surface's own definition
34
+ rather than a colour laid over the ground. That layer is the two surfaces and
35
+ the lines that bound and divide them — `--axi-ink-line` and `--axi-rule` — for
36
+ the same reason: the edge of a translucent panel is as much the panel as its
37
+ face, and an opaque hairline around a pane of glass is a picture frame.
38
+
39
+ The five saturated inks are untouched. A muted `--axi-warn`, a faded accent, a
40
+ status ink at 60% — still forbidden, in a theme exactly as in a component,
41
+ because the paragraph above is about what happens to meaning when five inks
42
+ become five browns, and changing which stylesheet does the muting does not
43
+ change that. The neutral text ramp is likewise a theme's to restate but not to
44
+ fade: a theme picks where `--axi-text-dim` sits, it does not write text at 60%.
38
45
 
39
46
  ## 3. Every raised element is outlined and blocked
40
47
 
@@ -350,6 +357,70 @@ anything that claims to show liveness.
350
357
 
351
358
  Motion elsewhere is still rationed by rule 4.
352
359
 
360
+ ## 12. An icon is drawn in the language's angles, at control weight
361
+
362
+ An icon is an object, not a rule. The objects here are outlined at
363
+ `--axi-border-control` (3px), so that is the weight a glyph is drawn at — an
364
+ icon at the 2px hairline is a *rule* weight on a thing that is not a rule, and
365
+ inside a 3px-bordered button it reads as a thin drawing in a heavy frame
366
+ rather than as one object.
367
+
368
+ The contract:
369
+
370
+ | | |
371
+ |---|---|
372
+ | Canvas | 24×24 `viewBox`, all geometry inset 1.5 from every edge |
373
+ | Stroke | 3px, `currentColor`, mitered joins, butt caps |
374
+ | Corners | radius 0, as everywhere else |
375
+ | Angles | 0°, 45° and 90°, and nothing between |
376
+ | Curves | none |
377
+ | Coordinates | multiples of 0.5; an axis-aligned stroke sits on an odd half-integer or on the centre axis at 12 |
378
+
379
+ **No curve.** This language has no rounded corner (rule 3) and its motif is a
380
+ rotated square (rule 7). One arc in the set is one exception in the set, and
381
+ the exception is where the eye finds the seam. Where a borrowed metaphor
382
+ genuinely needs a circle, the circle becomes a **diamond if it is a node** — a
383
+ lens, a head, a dot, a knob — and a **square if it is a boundary** — a clock
384
+ face, a frame, a container. The diamond frame reads as a warning sign, so it
385
+ is spent only where warning is the meaning. An octagon was considered as a
386
+ third frame shape and refused for the reason rule 3 refuses a third weight
387
+ step.
388
+
389
+ **No colour of its own.** An icon inherits `currentColor` and is whatever ink
390
+ it sits in. A two-tone glyph with an accent detail would be colour encoding
391
+ nothing, which rule 5 refuses on a chip and rule 10 refuses in a chart.
392
+
393
+ **The centre-axis exemption, precisely.** A 3px stroke centred on a 24 canvas
394
+ spans 10.5–13.5: it can be centred or pixel-aligned, never both. For the few
395
+ glyphs built around a centre line, symmetry wins. The exemption is one
396
+ coordinate wide — `12` — so it cannot spread into a general licence to sit on
397
+ whole integers.
398
+
399
+ **What is mechanically enforced.** `tests/icons.test.mjs` reads every file in
400
+ `icons/` and works from an **allowlist**, not a list of prohibitions. A drawing
401
+ may contain one root `<svg>` and `<path>` elements, and nothing else — a
402
+ `<circle>`, a `<rect>` or a `<polygon>` is rejected for being unlisted rather
403
+ than for being round. The root declares exactly the six attributes in the
404
+ contract above, at exactly those values; a `<path>` may carry `d`, and `fill`
405
+ or `stroke` only at `none` or `currentColor`. Everything else — a
406
+ `transform`, an `rx`, a `stroke-linecap`, a per-element `stroke-width="2"`, a
407
+ colour of any spelling — is an unlisted attribute and fails on that ground.
408
+ A file containing no `<path>` at all fails too, because a drawing with nothing
409
+ in it satisfies every geometric check by having nothing to check.
410
+
411
+ Each `d` is then parsed — tracking the current point through relative
412
+ commands, and reading the extra coordinate pairs of an `M` as the implicit
413
+ linetos they are — and fails on a curve command, an angle that is neither
414
+ axis-aligned nor 45°, a coordinate off the 0.5 grid or outside the live
415
+ area, or an axis-aligned stroke off its permitted centerlines. Both ends of
416
+ every segment are checked, including the moveto point that starts a subpath and
417
+ may never appear as any segment's endpoint.
418
+
419
+ The checker is itself tested: `tests/icons.test.mjs` feeds it a set of drawings
420
+ that must be rejected, one per prohibition. The rule above is therefore a check
421
+ rather than a promise — the same treatment rule 3's weights get in
422
+ `tests/tokens.test.mjs`.
423
+
353
424
  ## Tokens
354
425
 
355
426
  Three layers, in `src/tokens.css` — the only file permitted to contain a colour
@@ -474,13 +545,47 @@ main-theme token first.** A glass theme wants a `backdrop-filter`; it does not
474
545
  get to introduce one. `--axi-surface-filter` is declared in `tokens.css` with an
475
546
  inert default (`none`), the surfaces read it unconditionally, and the theme
476
547
  restates it. The main theme is unchanged in appearance and the hook is part of
477
- the language rather than part of the theme. Every theme pays this toll, and it
478
- is what keeps the mirror true: a token the theme could set that the main theme
479
- had never heard of is the first step back toward theme-only components.
480
-
481
- Rules 1 and 2 name the only relief a theme gets, and it is confined to the
482
- surface layer: a theme may put a gradient on a surface and may hold a surface
483
- token at partial opacity. It may not mute an ink. Read those two rules for why.
548
+ the language rather than part of the theme. `--axi-ground-image` is the second
549
+ of these, on the same terms: the page's light, inert at `none`, read by `body`
550
+ and nowhere else. Every theme pays this toll, and it is what keeps the mirror
551
+ true: a token the theme could set that the main theme had never heard of is the
552
+ first step back toward theme-only components.
553
+
554
+ ### What a theme may restate
555
+
556
+ Rules 1 and 2 name the relief a theme gets in the surface layer: a theme may
557
+ put a gradient on a surface and may hold a surface token at partial opacity. It
558
+ may not mute an ink. Read those two rules for why.
559
+
560
+ The relief is not confined to that layer, though, and the first draft of this
561
+ section said it was. **A theme may also restate the block and the corner** —
562
+ `--axi-shadow-*`, `--axi-border-*`, `--axi-radius` and `--axi-radius-sm`. Rule 3
563
+ requires that a raised element read as raised and an outlined one as outlined.
564
+ A hard offset block in the line ink is how the main theme answers that; a soft
565
+ drop with an inset top highlight is a different answer to the same question,
566
+ and a translucent panel wearing an opaque theme's block does not look like
567
+ glass, it looks like a bug. The block and the corner are how a theme says what
568
+ its material is.
569
+
570
+ What is **not** a theme's to restate, and each for its own reason:
571
+
572
+ - **The five saturated fills.** `--axi-accent`, `--axi-meta`, `--axi-ok`,
573
+ `--axi-warn`, `--axi-danger` carry meaning (rules 5, 6, 9, 10). Their `-ink`
574
+ companions are not on this list: `--axi-accent-ink` and `--axi-ink-on-fill`
575
+ are the colour a word is written in when it sits on a fill, and a theme that
576
+ lightens the outline has to be able to hold them dark.
577
+ - **The offset scale.** `--axi-offset-*` is what the main theme's block is
578
+ composed *from*. A theme restates the composed `--axi-shadow-*` wholesale or
579
+ leaves it; retuning the offsets underneath would leave the two spellings of
580
+ "the block" disagreeing.
581
+ - **The measure.** `--axi-page`, `--axi-gutter`. Where the text wraps is not a
582
+ look, and moving it would reflow every page rather than repaint it.
583
+ - **The type.** `--axi-sans`, `--axi-mono`, `--axi-t-*`, `--axi-ls-*`. The same
584
+ call, harder: the type scale is the voice.
585
+
586
+ The line to hold is the one-for-one rule above, not a list of layers. A theme
587
+ that restates the block still paints every component; a theme that invents one
588
+ does not.
484
589
 
485
590
  **What is mechanically enforced.** `tests/themes.test.mjs` reads every
486
591
  `dist/themes/*.css` and checks the mirror rather than trusting it: the file
@@ -0,0 +1,51 @@
1
+ ISC License
2
+
3
+ Copyright (c) 2026 Lucide Icons and Contributors
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted, provided that the above
7
+ copyright notice and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
+
17
+ ---
18
+
19
+ The following Lucide icons are derived from the Feather project:
20
+
21
+ airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
22
+
23
+ The MIT License (MIT) (for the icons listed above)
24
+
25
+ Copyright (c) 2013-present Cole Bemis
26
+
27
+ Permission is hereby granted, free of charge, to any person obtaining a copy
28
+ of this software and associated documentation files (the "Software"), to deal
29
+ in the Software without restriction, including without limitation the rights
30
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
31
+ copies of the Software, and to permit persons to whom the Software is
32
+ furnished to do so, subject to the following conditions:
33
+
34
+ The above copyright notice and this permission notice shall be included in all
35
+ copies or substantial portions of the Software.
36
+
37
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
38
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
39
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
40
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
41
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
42
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
43
+ SOFTWARE.
44
+
45
+ ---
46
+
47
+ The axi icon set derives its vocabulary from Lucide: the inventory of icons,
48
+ the metaphors they use and the names they are called by. No Lucide path data
49
+ is used. Every glyph is re-drawn against axi's own grammar (docs/RULES.md,
50
+ rule 12), which differs from Lucide's in stroke weight, terminals, joins,
51
+ corner radius and the prohibition on curves.
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M12 3.5 L12 19.5"/>
3
+ <path d="M6 13.5 L12 19.5 L18 13.5"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M20.5 12 L4.5 12"/>
3
+ <path d="M10.5 6 L4.5 12 L10.5 18"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M3.5 12 L19.5 12"/>
3
+ <path d="M13.5 6 L19.5 12 L13.5 18"/>
4
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M12 20.5 L12 4.5"/>
3
+ <path d="M6 10.5 L12 4.5 L18 10.5"/>
4
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M3.5 5.5 L20.5 5.5 L20.5 20.5 L3.5 20.5 Z"/>
3
+ <path d="M3.5 10.5 L20.5 10.5"/>
4
+ <path d="M8.5 2.5 L8.5 7.5"/>
5
+ <path d="M15.5 2.5 L15.5 7.5"/>
6
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M1.5 12.5 L6.5 17.5 L15.5 8.5"/>
3
+ <path d="M9.5 15.5 L11.5 17.5 L21.5 7.5"/>
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M3.5 12.5 L9.5 18.5 L20.5 7.5"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M5.5 9 L12 15.5 L18.5 9"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M15 5.5 L8.5 12 L15 18.5"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linejoin="miter">
2
+ <path d="M9 5.5 L15.5 12 L9 18.5"/>
3
+ </svg>