@malilion/block-ui-react 0.2.0 → 0.3.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 (263) hide show
  1. package/dist/components/cards/ServerBrowser/ServerBrowser.d.ts +7 -0
  2. package/dist/components/cards/ServerBrowser/ServerBrowser.d.ts.map +1 -0
  3. package/dist/components/cards/ServerBrowser/ServerBrowser.js +106 -0
  4. package/dist/components/cards/ServerBrowser/ServerBrowser.js.map +1 -0
  5. package/dist/components/cards/ServerBrowser/ServerBrowser.types.d.ts +22 -0
  6. package/dist/components/cards/ServerBrowser/ServerBrowser.types.d.ts.map +1 -0
  7. package/dist/components/cards/ServerBrowser/ServerBrowser.utils.d.ts +8 -0
  8. package/dist/components/cards/ServerBrowser/ServerBrowser.utils.d.ts.map +1 -0
  9. package/dist/components/cards/ServerBrowser/ServerBrowser.utils.js +16 -0
  10. package/dist/components/cards/ServerBrowser/ServerBrowser.utils.js.map +1 -0
  11. package/dist/components/cards/ServerBrowser/index.d.ts +4 -0
  12. package/dist/components/cards/ServerBrowser/index.d.ts.map +1 -0
  13. package/dist/components/cards/WorldBrowser/WorldBrowser.d.ts +4 -0
  14. package/dist/components/cards/WorldBrowser/WorldBrowser.d.ts.map +1 -0
  15. package/dist/components/cards/WorldBrowser/WorldBrowser.js +101 -0
  16. package/dist/components/cards/WorldBrowser/WorldBrowser.js.map +1 -0
  17. package/dist/components/cards/WorldBrowser/WorldBrowser.types.d.ts +22 -0
  18. package/dist/components/cards/WorldBrowser/WorldBrowser.types.d.ts.map +1 -0
  19. package/dist/components/cards/WorldBrowser/WorldBrowser.utils.d.ts +10 -0
  20. package/dist/components/cards/WorldBrowser/WorldBrowser.utils.d.ts.map +1 -0
  21. package/dist/components/cards/WorldBrowser/WorldBrowser.utils.js +12 -0
  22. package/dist/components/cards/WorldBrowser/WorldBrowser.utils.js.map +1 -0
  23. package/dist/components/cards/WorldBrowser/index.d.ts +4 -0
  24. package/dist/components/cards/WorldBrowser/index.d.ts.map +1 -0
  25. package/dist/components/cards/browser.module.js +23 -0
  26. package/dist/components/cards/browser.module.js.map +1 -0
  27. package/dist/components/cards/index.d.ts +2 -0
  28. package/dist/components/cards/index.d.ts.map +1 -1
  29. package/dist/components/crafting/Anvil/Anvil.d.ts +7 -0
  30. package/dist/components/crafting/Anvil/Anvil.d.ts.map +1 -0
  31. package/dist/components/crafting/Anvil/Anvil.js +94 -0
  32. package/dist/components/crafting/Anvil/Anvil.js.map +1 -0
  33. package/dist/components/crafting/Anvil/Anvil.module.js +21 -0
  34. package/dist/components/crafting/Anvil/Anvil.module.js.map +1 -0
  35. package/dist/components/crafting/Anvil/Anvil.types.d.ts +25 -0
  36. package/dist/components/crafting/Anvil/Anvil.types.d.ts.map +1 -0
  37. package/dist/components/crafting/Anvil/Anvil.utils.d.ts +3 -0
  38. package/dist/components/crafting/Anvil/Anvil.utils.d.ts.map +1 -0
  39. package/dist/components/crafting/Anvil/Anvil.utils.js +11 -0
  40. package/dist/components/crafting/Anvil/Anvil.utils.js.map +1 -0
  41. package/dist/components/crafting/Anvil/index.d.ts +5 -0
  42. package/dist/components/crafting/Anvil/index.d.ts.map +1 -0
  43. package/dist/components/crafting/BrewingStand/BrewingStand.d.ts +7 -0
  44. package/dist/components/crafting/BrewingStand/BrewingStand.d.ts.map +1 -0
  45. package/dist/components/crafting/BrewingStand/BrewingStand.js +116 -0
  46. package/dist/components/crafting/BrewingStand/BrewingStand.js.map +1 -0
  47. package/dist/components/crafting/BrewingStand/BrewingStand.module.js +29 -0
  48. package/dist/components/crafting/BrewingStand/BrewingStand.module.js.map +1 -0
  49. package/dist/components/crafting/BrewingStand/BrewingStand.types.d.ts +22 -0
  50. package/dist/components/crafting/BrewingStand/BrewingStand.types.d.ts.map +1 -0
  51. package/dist/components/crafting/BrewingStand/BrewingStand.types.js +11 -0
  52. package/dist/components/crafting/BrewingStand/BrewingStand.types.js.map +1 -0
  53. package/dist/components/crafting/BrewingStand/BrewingStand.utils.d.ts +6 -0
  54. package/dist/components/crafting/BrewingStand/BrewingStand.utils.d.ts.map +1 -0
  55. package/dist/components/crafting/BrewingStand/BrewingStand.utils.js +13 -0
  56. package/dist/components/crafting/BrewingStand/BrewingStand.utils.js.map +1 -0
  57. package/dist/components/crafting/BrewingStand/index.d.ts +5 -0
  58. package/dist/components/crafting/BrewingStand/index.d.ts.map +1 -0
  59. package/dist/components/crafting/EnchantingTable/EnchantingTable.d.ts +7 -0
  60. package/dist/components/crafting/EnchantingTable/EnchantingTable.d.ts.map +1 -0
  61. package/dist/components/crafting/EnchantingTable/EnchantingTable.js +105 -0
  62. package/dist/components/crafting/EnchantingTable/EnchantingTable.js.map +1 -0
  63. package/dist/components/crafting/EnchantingTable/EnchantingTable.module.js +32 -0
  64. package/dist/components/crafting/EnchantingTable/EnchantingTable.module.js.map +1 -0
  65. package/dist/components/crafting/EnchantingTable/EnchantingTable.types.d.ts +29 -0
  66. package/dist/components/crafting/EnchantingTable/EnchantingTable.types.d.ts.map +1 -0
  67. package/dist/components/crafting/EnchantingTable/EnchantingTable.utils.d.ts +11 -0
  68. package/dist/components/crafting/EnchantingTable/EnchantingTable.utils.d.ts.map +1 -0
  69. package/dist/components/crafting/EnchantingTable/EnchantingTable.utils.js +14 -0
  70. package/dist/components/crafting/EnchantingTable/EnchantingTable.utils.js.map +1 -0
  71. package/dist/components/crafting/EnchantingTable/index.d.ts +3 -0
  72. package/dist/components/crafting/EnchantingTable/index.d.ts.map +1 -0
  73. package/dist/components/crafting/RecipeBook/RecipeBook.d.ts +7 -0
  74. package/dist/components/crafting/RecipeBook/RecipeBook.d.ts.map +1 -0
  75. package/dist/components/crafting/RecipeBook/RecipeBook.js +149 -0
  76. package/dist/components/crafting/RecipeBook/RecipeBook.js.map +1 -0
  77. package/dist/components/crafting/RecipeBook/RecipeBook.module.js +39 -0
  78. package/dist/components/crafting/RecipeBook/RecipeBook.module.js.map +1 -0
  79. package/dist/components/crafting/RecipeBook/RecipeBook.types.d.ts +36 -0
  80. package/dist/components/crafting/RecipeBook/RecipeBook.types.d.ts.map +1 -0
  81. package/dist/components/crafting/RecipeBook/RecipeBook.utils.d.ts +9 -0
  82. package/dist/components/crafting/RecipeBook/RecipeBook.utils.d.ts.map +1 -0
  83. package/dist/components/crafting/RecipeBook/RecipeBook.utils.js +21 -0
  84. package/dist/components/crafting/RecipeBook/RecipeBook.utils.js.map +1 -0
  85. package/dist/components/crafting/RecipeBook/index.d.ts +4 -0
  86. package/dist/components/crafting/RecipeBook/index.d.ts.map +1 -0
  87. package/dist/components/crafting/TradingUI/TradingUI.d.ts +7 -0
  88. package/dist/components/crafting/TradingUI/TradingUI.d.ts.map +1 -0
  89. package/dist/components/crafting/TradingUI/TradingUI.js +181 -0
  90. package/dist/components/crafting/TradingUI/TradingUI.js.map +1 -0
  91. package/dist/components/crafting/TradingUI/TradingUI.module.js +39 -0
  92. package/dist/components/crafting/TradingUI/TradingUI.module.js.map +1 -0
  93. package/dist/components/crafting/TradingUI/TradingUI.types.d.ts +36 -0
  94. package/dist/components/crafting/TradingUI/TradingUI.types.d.ts.map +1 -0
  95. package/dist/components/crafting/TradingUI/TradingUI.types.js +12 -0
  96. package/dist/components/crafting/TradingUI/TradingUI.types.js.map +1 -0
  97. package/dist/components/crafting/TradingUI/TradingUI.utils.d.ts +3 -0
  98. package/dist/components/crafting/TradingUI/TradingUI.utils.d.ts.map +1 -0
  99. package/dist/components/crafting/TradingUI/TradingUI.utils.js +8 -0
  100. package/dist/components/crafting/TradingUI/TradingUI.utils.js.map +1 -0
  101. package/dist/components/crafting/TradingUI/index.d.ts +4 -0
  102. package/dist/components/crafting/TradingUI/index.d.ts.map +1 -0
  103. package/dist/components/crafting/index.d.ts +5 -0
  104. package/dist/components/crafting/index.d.ts.map +1 -1
  105. package/dist/components/display/SkillTree/SkillTree.d.ts +8 -0
  106. package/dist/components/display/SkillTree/SkillTree.d.ts.map +1 -0
  107. package/dist/components/display/SkillTree/SkillTree.js +138 -0
  108. package/dist/components/display/SkillTree/SkillTree.js.map +1 -0
  109. package/dist/components/display/SkillTree/SkillTree.module.js +33 -0
  110. package/dist/components/display/SkillTree/SkillTree.module.js.map +1 -0
  111. package/dist/components/display/SkillTree/SkillTree.types.d.ts +29 -0
  112. package/dist/components/display/SkillTree/SkillTree.types.d.ts.map +1 -0
  113. package/dist/components/display/SkillTree/SkillTree.utils.d.ts +8 -0
  114. package/dist/components/display/SkillTree/SkillTree.utils.d.ts.map +1 -0
  115. package/dist/components/display/SkillTree/SkillTree.utils.js +16 -0
  116. package/dist/components/display/SkillTree/SkillTree.utils.js.map +1 -0
  117. package/dist/components/display/SkillTree/index.d.ts +4 -0
  118. package/dist/components/display/SkillTree/index.d.ts.map +1 -0
  119. package/dist/components/display/index.d.ts +1 -0
  120. package/dist/components/display/index.d.ts.map +1 -1
  121. package/dist/components/hud/BiomeIndicator/BiomeIndicator.d.ts +4 -0
  122. package/dist/components/hud/BiomeIndicator/BiomeIndicator.d.ts.map +1 -0
  123. package/dist/components/hud/BiomeIndicator/BiomeIndicator.js +39 -0
  124. package/dist/components/hud/BiomeIndicator/BiomeIndicator.js.map +1 -0
  125. package/dist/components/hud/BiomeIndicator/BiomeIndicator.module.js +11 -0
  126. package/dist/components/hud/BiomeIndicator/BiomeIndicator.module.js.map +1 -0
  127. package/dist/components/hud/BiomeIndicator/BiomeIndicator.types.d.ts +16 -0
  128. package/dist/components/hud/BiomeIndicator/BiomeIndicator.types.d.ts.map +1 -0
  129. package/dist/components/hud/BiomeIndicator/BiomeIndicator.types.js +18 -0
  130. package/dist/components/hud/BiomeIndicator/BiomeIndicator.types.js.map +1 -0
  131. package/dist/components/hud/BiomeIndicator/BiomeIndicator.utils.d.ts +8 -0
  132. package/dist/components/hud/BiomeIndicator/BiomeIndicator.utils.d.ts.map +1 -0
  133. package/dist/components/hud/BiomeIndicator/BiomeIndicator.utils.js +55 -0
  134. package/dist/components/hud/BiomeIndicator/BiomeIndicator.utils.js.map +1 -0
  135. package/dist/components/hud/BiomeIndicator/index.d.ts +4 -0
  136. package/dist/components/hud/BiomeIndicator/index.d.ts.map +1 -0
  137. package/dist/components/hud/BossBar/BossBar.d.ts +4 -0
  138. package/dist/components/hud/BossBar/BossBar.d.ts.map +1 -0
  139. package/dist/components/hud/BossBar/BossBar.js +56 -0
  140. package/dist/components/hud/BossBar/BossBar.js.map +1 -0
  141. package/dist/components/hud/BossBar/BossBar.module.js +19 -0
  142. package/dist/components/hud/BossBar/BossBar.module.js.map +1 -0
  143. package/dist/components/hud/BossBar/BossBar.types.d.ts +22 -0
  144. package/dist/components/hud/BossBar/BossBar.types.d.ts.map +1 -0
  145. package/dist/components/hud/BossBar/BossBar.types.js +21 -0
  146. package/dist/components/hud/BossBar/BossBar.types.js.map +1 -0
  147. package/dist/components/hud/BossBar/index.d.ts +4 -0
  148. package/dist/components/hud/BossBar/index.d.ts.map +1 -0
  149. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.d.ts +4 -0
  150. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.d.ts.map +1 -0
  151. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.js +96 -0
  152. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.js.map +1 -0
  153. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.module.js +17 -0
  154. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.module.js.map +1 -0
  155. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.types.d.ts +19 -0
  156. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.types.d.ts.map +1 -0
  157. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.types.js +11 -0
  158. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.types.js.map +1 -0
  159. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.utils.d.ts +7 -0
  160. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.utils.d.ts.map +1 -0
  161. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.utils.js +24 -0
  162. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.utils.js.map +1 -0
  163. package/dist/components/hud/CoordinatesHUD/index.d.ts +4 -0
  164. package/dist/components/hud/CoordinatesHUD/index.d.ts.map +1 -0
  165. package/dist/components/hud/DayNightIndicator/DayNightIndicator.d.ts +4 -0
  166. package/dist/components/hud/DayNightIndicator/DayNightIndicator.d.ts.map +1 -0
  167. package/dist/components/hud/DayNightIndicator/DayNightIndicator.js +70 -0
  168. package/dist/components/hud/DayNightIndicator/DayNightIndicator.js.map +1 -0
  169. package/dist/components/hud/DayNightIndicator/DayNightIndicator.module.js +19 -0
  170. package/dist/components/hud/DayNightIndicator/DayNightIndicator.module.js.map +1 -0
  171. package/dist/components/hud/DayNightIndicator/DayNightIndicator.types.d.ts +17 -0
  172. package/dist/components/hud/DayNightIndicator/DayNightIndicator.types.d.ts.map +1 -0
  173. package/dist/components/hud/DayNightIndicator/DayNightIndicator.utils.d.ts +15 -0
  174. package/dist/components/hud/DayNightIndicator/DayNightIndicator.utils.d.ts.map +1 -0
  175. package/dist/components/hud/DayNightIndicator/DayNightIndicator.utils.js +43 -0
  176. package/dist/components/hud/DayNightIndicator/DayNightIndicator.utils.js.map +1 -0
  177. package/dist/components/hud/DayNightIndicator/index.d.ts +4 -0
  178. package/dist/components/hud/DayNightIndicator/index.d.ts.map +1 -0
  179. package/dist/components/hud/MiniMap/MiniMap.d.ts +8 -0
  180. package/dist/components/hud/MiniMap/MiniMap.d.ts.map +1 -0
  181. package/dist/components/hud/MiniMap/MiniMap.js +76 -0
  182. package/dist/components/hud/MiniMap/MiniMap.js.map +1 -0
  183. package/dist/components/hud/MiniMap/MiniMap.module.js +17 -0
  184. package/dist/components/hud/MiniMap/MiniMap.module.js.map +1 -0
  185. package/dist/components/hud/MiniMap/MiniMap.types.d.ts +43 -0
  186. package/dist/components/hud/MiniMap/MiniMap.types.d.ts.map +1 -0
  187. package/dist/components/hud/MiniMap/MiniMap.types.js +26 -0
  188. package/dist/components/hud/MiniMap/MiniMap.types.js.map +1 -0
  189. package/dist/components/hud/MiniMap/MiniMap.utils.d.ts +14 -0
  190. package/dist/components/hud/MiniMap/MiniMap.utils.d.ts.map +1 -0
  191. package/dist/components/hud/MiniMap/MiniMap.utils.js +47 -0
  192. package/dist/components/hud/MiniMap/MiniMap.utils.js.map +1 -0
  193. package/dist/components/hud/MiniMap/index.d.ts +5 -0
  194. package/dist/components/hud/MiniMap/index.d.ts.map +1 -0
  195. package/dist/components/hud/Scoreboard/Scoreboard.d.ts +7 -0
  196. package/dist/components/hud/Scoreboard/Scoreboard.d.ts.map +1 -0
  197. package/dist/components/hud/Scoreboard/Scoreboard.js +89 -0
  198. package/dist/components/hud/Scoreboard/Scoreboard.js.map +1 -0
  199. package/dist/components/hud/Scoreboard/Scoreboard.module.js +25 -0
  200. package/dist/components/hud/Scoreboard/Scoreboard.module.js.map +1 -0
  201. package/dist/components/hud/Scoreboard/Scoreboard.types.d.ts +23 -0
  202. package/dist/components/hud/Scoreboard/Scoreboard.types.d.ts.map +1 -0
  203. package/dist/components/hud/Scoreboard/Scoreboard.utils.d.ts +5 -0
  204. package/dist/components/hud/Scoreboard/Scoreboard.utils.d.ts.map +1 -0
  205. package/dist/components/hud/Scoreboard/Scoreboard.utils.js +15 -0
  206. package/dist/components/hud/Scoreboard/Scoreboard.utils.js.map +1 -0
  207. package/dist/components/hud/Scoreboard/index.d.ts +3 -0
  208. package/dist/components/hud/Scoreboard/index.d.ts.map +1 -0
  209. package/dist/components/hud/WeatherIndicator/WeatherIndicator.d.ts +4 -0
  210. package/dist/components/hud/WeatherIndicator/WeatherIndicator.d.ts.map +1 -0
  211. package/dist/components/hud/WeatherIndicator/WeatherIndicator.js +52 -0
  212. package/dist/components/hud/WeatherIndicator/WeatherIndicator.js.map +1 -0
  213. package/dist/components/hud/WeatherIndicator/WeatherIndicator.module.js +15 -0
  214. package/dist/components/hud/WeatherIndicator/WeatherIndicator.module.js.map +1 -0
  215. package/dist/components/hud/WeatherIndicator/WeatherIndicator.types.d.ts +17 -0
  216. package/dist/components/hud/WeatherIndicator/WeatherIndicator.types.d.ts.map +1 -0
  217. package/dist/components/hud/WeatherIndicator/WeatherIndicator.types.js +12 -0
  218. package/dist/components/hud/WeatherIndicator/WeatherIndicator.types.js.map +1 -0
  219. package/dist/components/hud/WeatherIndicator/WeatherIndicator.utils.d.ts +5 -0
  220. package/dist/components/hud/WeatherIndicator/WeatherIndicator.utils.d.ts.map +1 -0
  221. package/dist/components/hud/WeatherIndicator/WeatherIndicator.utils.js +22 -0
  222. package/dist/components/hud/WeatherIndicator/WeatherIndicator.utils.js.map +1 -0
  223. package/dist/components/hud/WeatherIndicator/index.d.ts +4 -0
  224. package/dist/components/hud/WeatherIndicator/index.d.ts.map +1 -0
  225. package/dist/components/hud/hudChip.module.js +15 -0
  226. package/dist/components/hud/hudChip.module.js.map +1 -0
  227. package/dist/components/hud/index.d.ts +7 -0
  228. package/dist/components/hud/index.d.ts.map +1 -1
  229. package/dist/components/social/ChatWindow/ChatWindow.d.ts +8 -0
  230. package/dist/components/social/ChatWindow/ChatWindow.d.ts.map +1 -0
  231. package/dist/components/social/ChatWindow/ChatWindow.js +146 -0
  232. package/dist/components/social/ChatWindow/ChatWindow.js.map +1 -0
  233. package/dist/components/social/ChatWindow/ChatWindow.module.js +27 -0
  234. package/dist/components/social/ChatWindow/ChatWindow.module.js.map +1 -0
  235. package/dist/components/social/ChatWindow/ChatWindow.types.d.ts +29 -0
  236. package/dist/components/social/ChatWindow/ChatWindow.types.d.ts.map +1 -0
  237. package/dist/components/social/ChatWindow/ChatWindow.types.js +12 -0
  238. package/dist/components/social/ChatWindow/ChatWindow.types.js.map +1 -0
  239. package/dist/components/social/ChatWindow/index.d.ts +4 -0
  240. package/dist/components/social/ChatWindow/index.d.ts.map +1 -0
  241. package/dist/components/social/CommandConsole/CommandConsole.d.ts +7 -0
  242. package/dist/components/social/CommandConsole/CommandConsole.d.ts.map +1 -0
  243. package/dist/components/social/CommandConsole/CommandConsole.js +187 -0
  244. package/dist/components/social/CommandConsole/CommandConsole.js.map +1 -0
  245. package/dist/components/social/CommandConsole/CommandConsole.module.js +31 -0
  246. package/dist/components/social/CommandConsole/CommandConsole.module.js.map +1 -0
  247. package/dist/components/social/CommandConsole/CommandConsole.types.d.ts +28 -0
  248. package/dist/components/social/CommandConsole/CommandConsole.types.d.ts.map +1 -0
  249. package/dist/components/social/CommandConsole/CommandConsole.types.js +11 -0
  250. package/dist/components/social/CommandConsole/CommandConsole.types.js.map +1 -0
  251. package/dist/components/social/CommandConsole/CommandConsole.utils.d.ts +4 -0
  252. package/dist/components/social/CommandConsole/CommandConsole.utils.d.ts.map +1 -0
  253. package/dist/components/social/CommandConsole/CommandConsole.utils.js +11 -0
  254. package/dist/components/social/CommandConsole/CommandConsole.utils.js.map +1 -0
  255. package/dist/components/social/CommandConsole/index.d.ts +5 -0
  256. package/dist/components/social/CommandConsole/index.d.ts.map +1 -0
  257. package/dist/components/social/index.d.ts +3 -0
  258. package/dist/components/social/index.d.ts.map +1 -0
  259. package/dist/index.d.ts +1 -0
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +36 -1
  262. package/dist/styles.css +2055 -486
  263. package/package.json +4 -4
@@ -0,0 +1,56 @@
1
+ import { cx } from "../../../utils/cx.js";
2
+ import { clamp, ratio } from "../../../utils/number.js";
3
+ import BossBar_module_default from "./BossBar.module.js";
4
+ import { forwardRef, useId } from "react";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/components/hud/BossBar/BossBar.tsx
7
+ /** Boss health bar: a centered title over a long notched bar, exposed as a `meter`. */
8
+ var BossBar = forwardRef(function BossBar({ name, value, max = 100, color = "amethyst", segments = 0, icon, showPercent = false, className, ...rest }, ref) {
9
+ const nameId = useId();
10
+ const safeMax = Math.max(0, max);
11
+ const current = clamp(value, 0, safeMax);
12
+ const percent = Math.round(ratio(current, safeMax) * 100);
13
+ return /* @__PURE__ */ jsxs("div", {
14
+ ref,
15
+ className: cx(BossBar_module_default.boss, className),
16
+ "data-material": color,
17
+ ...rest,
18
+ children: [/* @__PURE__ */ jsxs("div", {
19
+ className: BossBar_module_default.title,
20
+ children: [
21
+ icon ? /* @__PURE__ */ jsx("span", {
22
+ className: BossBar_module_default.icon,
23
+ "aria-hidden": "true",
24
+ children: icon
25
+ }) : null,
26
+ /* @__PURE__ */ jsx("span", {
27
+ id: nameId,
28
+ children: name
29
+ }),
30
+ showPercent ? /* @__PURE__ */ jsxs("span", {
31
+ className: BossBar_module_default.percent,
32
+ "aria-hidden": "true",
33
+ children: [percent, "%"]
34
+ }) : null
35
+ ]
36
+ }), /* @__PURE__ */ jsx("div", {
37
+ role: "meter",
38
+ "aria-labelledby": nameId,
39
+ "aria-valuemin": 0,
40
+ "aria-valuemax": safeMax,
41
+ "aria-valuenow": current,
42
+ "aria-valuetext": `${percent}%`,
43
+ className: BossBar_module_default.track,
44
+ "data-segments": segments || void 0,
45
+ style: {
46
+ "--block-boss-fill": `${percent}%`,
47
+ "--block-boss-segments": segments || 1
48
+ },
49
+ children: /* @__PURE__ */ jsx("span", { className: BossBar_module_default.fill })
50
+ })]
51
+ });
52
+ });
53
+ //#endregion
54
+ export { BossBar };
55
+
56
+ //# sourceMappingURL=BossBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BossBar.js","names":["styles"],"sources":["../../../../src/components/hud/BossBar/BossBar.tsx"],"sourcesContent":["import { forwardRef, useId, type CSSProperties } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { clamp, ratio } from \"../../../utils/number\";\nimport styles from \"./BossBar.module.css\";\nimport type { BossBarProps } from \"./BossBar.types\";\n\n/** Boss health bar: a centered title over a long notched bar, exposed as a `meter`. */\nexport const BossBar = forwardRef<HTMLDivElement, BossBarProps>(function BossBar(\n {\n name,\n value,\n max = 100,\n color = \"amethyst\",\n segments = 0,\n icon,\n showPercent = false,\n className,\n ...rest\n },\n ref,\n) {\n const nameId = useId();\n const safeMax = Math.max(0, max);\n const current = clamp(value, 0, safeMax);\n const percent = Math.round(ratio(current, safeMax) * 100);\n\n return (\n <div ref={ref} className={cx(styles.boss, className)} data-material={color} {...rest}>\n <div className={styles.title}>\n {icon ? (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span id={nameId}>{name}</span>\n {showPercent ? (\n <span className={styles.percent} aria-hidden=\"true\">\n {percent}%\n </span>\n ) : null}\n </div>\n <div\n role=\"meter\"\n aria-labelledby={nameId}\n aria-valuemin={0}\n aria-valuemax={safeMax}\n aria-valuenow={current}\n aria-valuetext={`${percent}%`}\n className={styles.track}\n data-segments={segments || undefined}\n style={\n {\n \"--block-boss-fill\": `${percent}%`,\n \"--block-boss-segments\": segments || 1,\n } as CSSProperties\n }\n >\n <span className={styles.fill} />\n </div>\n </div>\n );\n});\n"],"mappings":";;;;;;;AAOA,IAAa,UAAU,WAAyC,SAAS,QACvE,EACE,MACA,OACA,MAAM,KACN,QAAQ,YACR,WAAW,GACX,MACA,cAAc,OACd,WACA,GAAG,QAEL,KACA;CACA,MAAM,SAAS,MAAM;CACrB,MAAM,UAAU,KAAK,IAAI,GAAG,GAAG;CAC/B,MAAM,UAAU,MAAM,OAAO,GAAG,OAAO;CACvC,MAAM,UAAU,KAAK,MAAM,MAAM,SAAS,OAAO,IAAI,GAAG;CAExD,OACE,qBAAC,OAAD;EAAU;EAAK,WAAW,GAAGA,uBAAO,MAAM,SAAS;EAAG,iBAAe;EAAO,GAAI;EAAhF,UAAA,CACE,qBAAC,OAAD;GAAK,WAAWA,uBAAO;GAAvB,UAAA;IACG,OACC,oBAAC,QAAD;KAAM,WAAWA,uBAAO;KAAM,eAAY;KACvC,UAAA;IACG,CAAA,IACJ;IACJ,oBAAC,QAAD;KAAM,IAAI;KAAS,UAAA;IAAW,CAAA;IAC7B,cACC,qBAAC,QAAD;KAAM,WAAWA,uBAAO;KAAS,eAAY;KAA7C,UAAA,CACG,SAAQ,GACL;IACJ,CAAA,IAAA;GACD;EACL,CAAA,GAAA,oBAAC,OAAD;GACE,MAAK;GACL,mBAAiB;GACjB,iBAAe;GACf,iBAAe;GACf,iBAAe;GACf,kBAAgB,GAAG,QAAQ;GAC3B,WAAWA,uBAAO;GAClB,iBAAe,YAAY,KAAA;GAC3B,OACE;IACE,qBAAqB,GAAG,QAAQ;IAChC,yBAAyB,YAAY;GACvC;GAGF,UAAA,oBAAC,QAAD,EAAM,WAAWA,uBAAO,KAAO,CAAA;EAC5B,CAAA,CACF;;AAET,CAAC"}
@@ -0,0 +1,19 @@
1
+ //#region src/components/hud/BossBar/BossBar.module.css
2
+ var boss = "block-boss-lFT3g";
3
+ var title = "block-title-3wFxE";
4
+ var icon = "block-icon-NcxTM";
5
+ var percent = "block-percent-hKJqC";
6
+ var track = "block-track-7nV8B";
7
+ var fill = "block-fill-NNtpd";
8
+ var BossBar_module_default = {
9
+ boss,
10
+ title,
11
+ icon,
12
+ percent,
13
+ track,
14
+ fill
15
+ };
16
+ //#endregion
17
+ export { boss, BossBar_module_default as default, fill, icon, percent, title, track };
18
+
19
+ //# sourceMappingURL=BossBar.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BossBar.module.js","names":[],"sources":["../../../../src/components/hud/BossBar/BossBar.module.css"],"sourcesContent":[".boss {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--block-space-1);\n width: 100%;\n max-width: 480px;\n margin-inline: auto;\n}\n\n.title {\n display: inline-flex;\n align-items: center;\n gap: var(--block-space-2);\n max-width: 100%;\n font-family: var(--block-font-display);\n font-size: var(--block-font-size-md);\n font-weight: var(--block-font-weight-bold);\n line-height: var(--block-line-height-tight);\n text-align: center;\n color: var(--block-text);\n text-shadow: var(--block-shadow-text);\n overflow-wrap: anywhere;\n}\n\n.icon {\n display: inline-flex;\n flex-shrink: 0;\n}\n\n.percent {\n color: var(--block-text-muted);\n font-variant-numeric: tabular-nums;\n}\n\n.track {\n position: relative;\n width: 100%;\n height: 12px;\n background-color: var(--block-mat-dark);\n border: var(--block-border-width-thin) solid var(--block-black);\n overflow: hidden;\n}\n\n.fill {\n position: absolute;\n inset: 0 auto 0 0;\n width: var(--block-boss-fill);\n background-color: var(--block-mat);\n box-shadow:\n inset 0 2px 0 var(--block-mat-light),\n inset 0 -2px 0 color-mix(in srgb, var(--block-mat-dark) 70%, transparent);\n transition: width var(--block-duration-normal) steps(6, end);\n}\n\n/* Notches: thin dark dividers every 1/n of the bar. */\n.track[data-segments]::after {\n content: \"\";\n position: absolute;\n inset: 0;\n background-image: repeating-linear-gradient(\n to right,\n transparent 0 calc(100% / var(--block-boss-segments) - 2px),\n var(--block-black) calc(100% / var(--block-boss-segments) - 2px)\n calc(100% / var(--block-boss-segments))\n );\n opacity: 0.6;\n pointer-events: none;\n}\n"],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import type { HTMLAttributes, ReactNode } from "react";
2
+ export declare const bossBarColors: readonly ["amethyst", "redstone", "emerald", "diamond", "gold", "obsidian"];
3
+ export type BossBarColor = (typeof bossBarColors)[number];
4
+ /** Notch counts drawn over the bar. */
5
+ export declare const bossBarSegments: readonly [0, 6, 10, 12, 20];
6
+ export type BossBarSegments = (typeof bossBarSegments)[number];
7
+ export interface BossBarProps extends Omit<HTMLAttributes<HTMLDivElement>, "color"> {
8
+ /** Boss name shown above the bar — also the meter's accessible name. */
9
+ name: ReactNode;
10
+ value: number;
11
+ /** @default 100 */
12
+ max?: number;
13
+ /** Bar material. @default "amethyst" */
14
+ color?: BossBarColor;
15
+ /** Notches over the bar. @default 0 */
16
+ segments?: BossBarSegments;
17
+ /** Icon before the name. */
18
+ icon?: ReactNode;
19
+ /** Show the percentage after the name. */
20
+ showPercent?: boolean;
21
+ }
22
+ //# sourceMappingURL=BossBar.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BossBar.types.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/BossBar/BossBar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,eAAO,MAAM,aAAa,6EAOhB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,uCAAuC;AACvC,eAAO,MAAM,eAAe,6BAA8B,CAAC;AAE3D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IACjF,wEAAwE;IACxE,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,4BAA4B;IAC5B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
@@ -0,0 +1,21 @@
1
+ //#region src/components/hud/BossBar/BossBar.types.ts
2
+ var bossBarColors = [
3
+ "amethyst",
4
+ "redstone",
5
+ "emerald",
6
+ "diamond",
7
+ "gold",
8
+ "obsidian"
9
+ ];
10
+ /** Notch counts drawn over the bar. */
11
+ var bossBarSegments = [
12
+ 0,
13
+ 6,
14
+ 10,
15
+ 12,
16
+ 20
17
+ ];
18
+ //#endregion
19
+ export { bossBarColors, bossBarSegments };
20
+
21
+ //# sourceMappingURL=BossBar.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BossBar.types.js","names":[],"sources":["../../../../src/components/hud/BossBar/BossBar.types.ts"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\n\nexport const bossBarColors = [\n \"amethyst\",\n \"redstone\",\n \"emerald\",\n \"diamond\",\n \"gold\",\n \"obsidian\",\n] as const;\n\nexport type BossBarColor = (typeof bossBarColors)[number];\n\n/** Notch counts drawn over the bar. */\nexport const bossBarSegments = [0, 6, 10, 12, 20] as const;\n\nexport type BossBarSegments = (typeof bossBarSegments)[number];\n\nexport interface BossBarProps extends Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n /** Boss name shown above the bar — also the meter's accessible name. */\n name: ReactNode;\n value: number;\n /** @default 100 */\n max?: number;\n /** Bar material. @default \"amethyst\" */\n color?: BossBarColor;\n /** Notches over the bar. @default 0 */\n segments?: BossBarSegments;\n /** Icon before the name. */\n icon?: ReactNode;\n /** Show the percentage after the name. */\n showPercent?: boolean;\n}\n"],"mappings":";AAEA,IAAa,gBAAgB;CAC3B;CACA;CACA;CACA;CACA;CACA;AACF;;AAKA,IAAa,kBAAkB;CAAC;CAAG;CAAG;CAAI;CAAI;AAAE"}
@@ -0,0 +1,4 @@
1
+ export { BossBar } from "./BossBar";
2
+ export { bossBarColors, bossBarSegments } from "./BossBar.types";
3
+ export type { BossBarColor, BossBarProps, BossBarSegments } from "./BossBar.types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/BossBar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CoordinatesHUDProps } from "./CoordinatesHUD.types";
2
+ /** Debug-screen style XYZ read-out with an optional facing and copy button. */
3
+ export declare const CoordinatesHUD: import("react").ForwardRefExoticComponent<CoordinatesHUDProps & import("react").RefAttributes<HTMLDivElement>>;
4
+ //# sourceMappingURL=CoordinatesHUD.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoordinatesHUD.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/CoordinatesHUD/CoordinatesHUD.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,+EAA+E;AAC/E,eAAO,MAAM,cAAc,gHAiF1B,CAAC"}
@@ -0,0 +1,96 @@
1
+ import { cx } from "../../../utils/cx.js";
2
+ import hudChip_module_default from "../hudChip.module.js";
3
+ import CoordinatesHUD_module_default from "./CoordinatesHUD.module.js";
4
+ import { FACING_AXIS, coordinatesText, formatCoordinate } from "./CoordinatesHUD.utils.js";
5
+ import { forwardRef, useEffect, useRef, useState } from "react";
6
+ import { CheckIcon, CompassIcon } from "@malilion/block-ui-icons";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/components/hud/CoordinatesHUD/CoordinatesHUD.tsx
9
+ /** Debug-screen style XYZ read-out with an optional facing and copy button. */
10
+ var CoordinatesHUD = forwardRef(function CoordinatesHUD({ x, y, z, facing, precision = 0, copyable = false, size = "md", label = "Coordinates", className, ...rest }, ref) {
11
+ const [copied, setCopied] = useState(false);
12
+ const timer = useRef(void 0);
13
+ useEffect(() => () => clearTimeout(timer.current), []);
14
+ const copy = async () => {
15
+ try {
16
+ await navigator.clipboard.writeText(coordinatesText(x, y, z, precision));
17
+ setCopied(true);
18
+ clearTimeout(timer.current);
19
+ timer.current = setTimeout(() => setCopied(false), 2e3);
20
+ } catch {
21
+ setCopied(false);
22
+ }
23
+ };
24
+ return /* @__PURE__ */ jsxs("div", {
25
+ ref,
26
+ role: "group",
27
+ "aria-label": label,
28
+ "data-size": size,
29
+ className: cx(hudChip_module_default.chip, CoordinatesHUD_module_default.coordinates, className),
30
+ ...rest,
31
+ children: [
32
+ /* @__PURE__ */ jsx("span", {
33
+ className: hudChip_module_default.icon,
34
+ "aria-hidden": "true",
35
+ children: /* @__PURE__ */ jsx(CompassIcon, { size: size === "lg" ? 24 : 16 })
36
+ }),
37
+ /* @__PURE__ */ jsx("span", {
38
+ className: CoordinatesHUD_module_default.axes,
39
+ children: [
40
+ ["X", x],
41
+ ["Y", y],
42
+ ["Z", z]
43
+ ].map(([axis, value]) => /* @__PURE__ */ jsxs("span", {
44
+ className: CoordinatesHUD_module_default.axis,
45
+ children: [
46
+ /* @__PURE__ */ jsx("span", {
47
+ className: hudChip_module_default.label,
48
+ children: axis
49
+ }),
50
+ " ",
51
+ /* @__PURE__ */ jsx("span", {
52
+ className: hudChip_module_default.value,
53
+ children: formatCoordinate(value, precision)
54
+ })
55
+ ]
56
+ }, axis))
57
+ }),
58
+ facing ? /* @__PURE__ */ jsxs("span", {
59
+ className: CoordinatesHUD_module_default.facing,
60
+ children: [
61
+ /* @__PURE__ */ jsx("span", {
62
+ className: hudChip_module_default.label,
63
+ children: "Facing"
64
+ }),
65
+ " ",
66
+ facing,
67
+ " ",
68
+ /* @__PURE__ */ jsxs("span", {
69
+ className: hudChip_module_default.label,
70
+ children: [
71
+ "(",
72
+ FACING_AXIS[facing],
73
+ ")"
74
+ ]
75
+ })
76
+ ]
77
+ }) : null,
78
+ copyable ? /* @__PURE__ */ jsx("button", {
79
+ type: "button",
80
+ className: CoordinatesHUD_module_default.copy,
81
+ onClick: copy,
82
+ "aria-label": copied ? "Coordinates copied" : "Copy coordinates",
83
+ children: copied ? /* @__PURE__ */ jsx(CheckIcon, { size: 16 }) : "Copy"
84
+ }) : null,
85
+ copyable ? /* @__PURE__ */ jsx("span", {
86
+ className: "block-visually-hidden",
87
+ role: "status",
88
+ children: copied ? "Coordinates copied" : ""
89
+ }) : null
90
+ ]
91
+ });
92
+ });
93
+ //#endregion
94
+ export { CoordinatesHUD };
95
+
96
+ //# sourceMappingURL=CoordinatesHUD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoordinatesHUD.js","names":["chip","styles"],"sources":["../../../../src/components/hud/CoordinatesHUD/CoordinatesHUD.tsx"],"sourcesContent":["import { CheckIcon, CompassIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport chip from \"../hudChip.module.css\";\nimport styles from \"./CoordinatesHUD.module.css\";\nimport type { CoordinatesHUDProps } from \"./CoordinatesHUD.types\";\nimport { FACING_AXIS, coordinatesText, formatCoordinate } from \"./CoordinatesHUD.utils\";\n\n/** Debug-screen style XYZ read-out with an optional facing and copy button. */\nexport const CoordinatesHUD = forwardRef<HTMLDivElement, CoordinatesHUDProps>(\n function CoordinatesHUD(\n {\n x,\n y,\n z,\n facing,\n precision = 0,\n copyable = false,\n size = \"md\",\n label = \"Coordinates\",\n className,\n ...rest\n },\n ref,\n ) {\n const [copied, setCopied] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n useEffect(() => () => clearTimeout(timer.current), []);\n\n const copy = async () => {\n try {\n await navigator.clipboard.writeText(coordinatesText(x, y, z, precision));\n setCopied(true);\n clearTimeout(timer.current);\n timer.current = setTimeout(() => setCopied(false), 2000);\n } catch {\n setCopied(false);\n }\n };\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label}\n data-size={size}\n className={cx(chip.chip, styles.coordinates, className)}\n {...rest}\n >\n <span className={chip.icon} aria-hidden=\"true\">\n <CompassIcon size={size === \"lg\" ? 24 : 16} />\n </span>\n <span className={styles.axes}>\n {(\n [\n [\"X\", x],\n [\"Y\", y],\n [\"Z\", z],\n ] as const\n ).map(([axis, value]) => (\n <span key={axis} className={styles.axis}>\n <span className={chip.label}>{axis}</span>{\" \"}\n <span className={chip.value}>{formatCoordinate(value, precision)}</span>\n </span>\n ))}\n </span>\n {facing ? (\n <span className={styles.facing}>\n <span className={chip.label}>Facing</span> {facing}{\" \"}\n <span className={chip.label}>({FACING_AXIS[facing]})</span>\n </span>\n ) : null}\n {copyable ? (\n <button\n type=\"button\"\n className={styles.copy}\n onClick={copy}\n aria-label={copied ? \"Coordinates copied\" : \"Copy coordinates\"}\n >\n {copied ? <CheckIcon size={16} /> : \"Copy\"}\n </button>\n ) : null}\n {copyable ? (\n <span className=\"block-visually-hidden\" role=\"status\">\n {copied ? \"Coordinates copied\" : \"\"}\n </span>\n ) : null}\n </div>\n );\n },\n);\n"],"mappings":";;;;;;;;;AASA,IAAa,iBAAiB,WAC5B,SAAS,eACP,EACE,GACA,GACA,GACA,QACA,YAAY,GACZ,WAAW,OACX,OAAO,MACP,QAAQ,eACR,WACA,GAAG,QAEL,KACA;CACA,MAAM,CAAC,QAAQ,aAAa,SAAS,KAAK;CAC1C,MAAM,QAAQ,OAAkD,KAAA,CAAS;CACzE,sBAAsB,aAAa,MAAM,OAAO,GAAG,CAAC,CAAC;CAErD,MAAM,OAAO,YAAY;EACvB,IAAI;GACF,MAAM,UAAU,UAAU,UAAU,gBAAgB,GAAG,GAAG,GAAG,SAAS,CAAC;GACvE,UAAU,IAAI;GACd,aAAa,MAAM,OAAO;GAC1B,MAAM,UAAU,iBAAiB,UAAU,KAAK,GAAG,GAAI;EACzD,QAAQ;GACN,UAAU,KAAK;EACjB;CACF;CAEA,OACE,qBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAY;EACZ,aAAW;EACX,WAAW,GAAGA,uBAAK,MAAMC,8BAAO,aAAa,SAAS;EACtD,GAAI;EANN,UAAA;GAQE,oBAAC,QAAD;IAAM,WAAWD,uBAAK;IAAM,eAAY;IACtC,UAAA,oBAAC,aAAD,EAAa,MAAM,SAAS,OAAO,KAAK,GAAK,CAAA;GACzC,CAAA;GACN,oBAAC,QAAD;IAAM,WAAWC,8BAAO;IAEpB,UAAA;KACE,CAAC,KAAK,CAAC;KACP,CAAC,KAAK,CAAC;KACP,CAAC,KAAK,CAAC;IACT,CAAC,CACD,KAAK,CAAC,MAAM,WACZ,qBAAC,QAAD;KAAiB,WAAWA,8BAAO;KAAnC,UAAA;MACE,oBAAC,QAAD;OAAM,WAAWD,uBAAK;OAAQ,UAAA;MAAW,CAAA;MAAE;MAC3C,oBAAC,QAAD;OAAM,WAAWA,uBAAK;OAAQ,UAAA,iBAAiB,OAAO,SAAS;MAAQ,CAAA;KACnE;IAHK,GAAA,IAGL,CACP;GACG,CAAA;GACL,SACC,qBAAC,QAAD;IAAM,WAAWC,8BAAO;IAAxB,UAAA;KACE,oBAAC,QAAD;MAAM,WAAWD,uBAAK;MAAO,UAAA;KAAY,CAAA;KAAC;KAAE;KAAQ;KACpD,qBAAC,QAAD;MAAM,WAAWA,uBAAK;MAAtB,UAAA;OAA6B;OAAE,YAAY;OAAQ;MAAO;;IACtD;GACJ,CAAA,IAAA;GACH,WACC,oBAAC,UAAD;IACE,MAAK;IACL,WAAWC,8BAAO;IAClB,SAAS;IACT,cAAY,SAAS,uBAAuB;IAE3C,UAAA,SAAS,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA,IAAI;GAC9B,CAAA,IACN;GACH,WACC,oBAAC,QAAD;IAAM,WAAU;IAAwB,MAAK;IAC1C,UAAA,SAAS,uBAAuB;GAC7B,CAAA,IACJ;EACD;;AAET,CACF"}
@@ -0,0 +1,17 @@
1
+ //#region src/components/hud/CoordinatesHUD/CoordinatesHUD.module.css
2
+ var coordinates = "block-coordinates-1uGGW";
3
+ var axes = "block-axes-pVJgT";
4
+ var axis = "block-axis-WP6By";
5
+ var facing = "block-facing-1uYGb";
6
+ var copy = "block-copy-NFw0D";
7
+ var CoordinatesHUD_module_default = {
8
+ coordinates,
9
+ axes,
10
+ axis,
11
+ facing,
12
+ copy
13
+ };
14
+ //#endregion
15
+ export { axes, axis, coordinates, copy, CoordinatesHUD_module_default as default, facing };
16
+
17
+ //# sourceMappingURL=CoordinatesHUD.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoordinatesHUD.module.js","names":[],"sources":["../../../../src/components/hud/CoordinatesHUD/CoordinatesHUD.module.css"],"sourcesContent":[".coordinates {\n flex-wrap: wrap;\n column-gap: var(--block-space-3);\n}\n\n.axes {\n display: inline-flex;\n flex-wrap: wrap;\n gap: var(--block-space-3);\n}\n\n.axis {\n white-space: nowrap;\n}\n\n.facing {\n white-space: nowrap;\n text-transform: capitalize;\n}\n\n.copy {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 44px;\n min-height: 24px;\n margin-left: auto;\n padding: 0 var(--block-space-2);\n font: inherit;\n font-size: var(--block-font-size-xs);\n text-transform: uppercase;\n color: var(--block-text-primary);\n background-color: var(--block-obsidian-light);\n border: var(--block-border-width-thin) solid var(--block-black);\n box-shadow: inset 2px 2px 0 color-mix(in srgb, var(--block-white) 15%, transparent);\n cursor: pointer;\n}\n\n.copy:hover {\n background-color: color-mix(in srgb, var(--block-obsidian-light) 70%, var(--block-white));\n}\n\n.copy:focus-visible {\n outline: 3px solid var(--block-focus);\n outline-offset: 2px;\n}\n"],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import type { HTMLAttributes } from "react";
2
+ export declare const facings: readonly ["north", "south", "east", "west"];
3
+ export type Facing = (typeof facings)[number];
4
+ export interface CoordinatesHUDProps extends HTMLAttributes<HTMLDivElement> {
5
+ x: number;
6
+ y: number;
7
+ z: number;
8
+ /** Compass direction the player looks at; shown with its axis (north = −Z). */
9
+ facing?: Facing;
10
+ /** Decimal places. @default 0 */
11
+ precision?: number;
12
+ /** Add a button that copies `x y z` to the clipboard. */
13
+ copyable?: boolean;
14
+ /** @default "md" */
15
+ size?: "sm" | "md" | "lg";
16
+ /** Accessible name of the group. @default "Coordinates" */
17
+ label?: string;
18
+ }
19
+ //# sourceMappingURL=CoordinatesHUD.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoordinatesHUD.types.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/CoordinatesHUD/CoordinatesHUD.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,eAAO,MAAM,OAAO,6CAA8C,CAAC;AAEnE,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9C,MAAM,WAAW,mBAAoB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACzE,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,11 @@
1
+ //#region src/components/hud/CoordinatesHUD/CoordinatesHUD.types.ts
2
+ var facings = [
3
+ "north",
4
+ "south",
5
+ "east",
6
+ "west"
7
+ ];
8
+ //#endregion
9
+ export { facings };
10
+
11
+ //# sourceMappingURL=CoordinatesHUD.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoordinatesHUD.types.js","names":[],"sources":["../../../../src/components/hud/CoordinatesHUD/CoordinatesHUD.types.ts"],"sourcesContent":["import type { HTMLAttributes } from \"react\";\n\nexport const facings = [\"north\", \"south\", \"east\", \"west\"] as const;\n\nexport type Facing = (typeof facings)[number];\n\nexport interface CoordinatesHUDProps extends HTMLAttributes<HTMLDivElement> {\n x: number;\n y: number;\n z: number;\n /** Compass direction the player looks at; shown with its axis (north = −Z). */\n facing?: Facing;\n /** Decimal places. @default 0 */\n precision?: number;\n /** Add a button that copies `x y z` to the clipboard. */\n copyable?: boolean;\n /** @default \"md\" */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Accessible name of the group. @default \"Coordinates\" */\n label?: string;\n}\n"],"mappings":";AAEA,IAAa,UAAU;CAAC;CAAS;CAAS;CAAQ;AAAM"}
@@ -0,0 +1,7 @@
1
+ import type { Facing } from "./CoordinatesHUD.types";
2
+ export declare const FACING_AXIS: Record<Facing, string>;
3
+ /** Fixed decimals with a typographic minus, e.g. `-3.5` → `−3.5`. */
4
+ export declare function formatCoordinate(value: number, precision: number): string;
5
+ /** Plain-text form for copying (ASCII minus, space separated), e.g. `120 64 -340`. */
6
+ export declare function coordinatesText(x: number, y: number, z: number, precision: number): string;
7
+ //# sourceMappingURL=CoordinatesHUD.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoordinatesHUD.utils.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/CoordinatesHUD/CoordinatesHUD.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK9C,CAAC;AAEF,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAIzE;AAED,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1F"}
@@ -0,0 +1,24 @@
1
+ //#region src/components/hud/CoordinatesHUD/CoordinatesHUD.utils.ts
2
+ var FACING_AXIS = {
3
+ north: "−Z",
4
+ south: "+Z",
5
+ east: "+X",
6
+ west: "−X"
7
+ };
8
+ /** Fixed decimals with a typographic minus, e.g. `-3.5` → `−3.5`. */
9
+ function formatCoordinate(value, precision) {
10
+ const fixed = Math.abs(value).toFixed(Math.max(0, precision));
11
+ return value < 0 && Number(fixed) !== 0 ? `−${fixed}` : fixed;
12
+ }
13
+ /** Plain-text form for copying (ASCII minus, space separated), e.g. `120 64 -340`. */
14
+ function coordinatesText(x, y, z, precision) {
15
+ return [
16
+ x,
17
+ y,
18
+ z
19
+ ].map((value) => formatCoordinate(value, precision).replace("−", "-")).join(" ");
20
+ }
21
+ //#endregion
22
+ export { FACING_AXIS, coordinatesText, formatCoordinate };
23
+
24
+ //# sourceMappingURL=CoordinatesHUD.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoordinatesHUD.utils.js","names":[],"sources":["../../../../src/components/hud/CoordinatesHUD/CoordinatesHUD.utils.ts"],"sourcesContent":["import type { Facing } from \"./CoordinatesHUD.types\";\n\nexport const FACING_AXIS: Record<Facing, string> = {\n north: \"−Z\",\n south: \"+Z\",\n east: \"+X\",\n west: \"−X\",\n};\n\n/** Fixed decimals with a typographic minus, e.g. `-3.5` → `−3.5`. */\nexport function formatCoordinate(value: number, precision: number): string {\n const fixed = Math.abs(value).toFixed(Math.max(0, precision));\n const negative = value < 0 && Number(fixed) !== 0;\n return negative ? `−${fixed}` : fixed;\n}\n\n/** Plain-text form for copying (ASCII minus, space separated), e.g. `120 64 -340`. */\nexport function coordinatesText(x: number, y: number, z: number, precision: number): string {\n return [x, y, z].map((value) => formatCoordinate(value, precision).replace(\"−\", \"-\")).join(\" \");\n}\n"],"mappings":";AAEA,IAAa,cAAsC;CACjD,OAAO;CACP,OAAO;CACP,MAAM;CACN,MAAM;AACR;;AAGA,SAAgB,iBAAiB,OAAe,WAA2B;CACzE,MAAM,QAAQ,KAAK,IAAI,KAAK,CAAC,CAAC,QAAQ,KAAK,IAAI,GAAG,SAAS,CAAC;CAE5D,OADiB,QAAQ,KAAK,OAAO,KAAK,MAAM,IAC9B,IAAI,UAAU;AAClC;;AAGA,SAAgB,gBAAgB,GAAW,GAAW,GAAW,WAA2B;CAC1F,OAAO;EAAC;EAAG;EAAG;CAAC,CAAC,CAAC,KAAK,UAAU,iBAAiB,OAAO,SAAS,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;AAChG"}
@@ -0,0 +1,4 @@
1
+ export { CoordinatesHUD } from "./CoordinatesHUD";
2
+ export { facings } from "./CoordinatesHUD.types";
3
+ export type { CoordinatesHUDProps, Facing } from "./CoordinatesHUD.types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/CoordinatesHUD/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { DayNightIndicatorProps } from "./DayNightIndicator.types";
2
+ /** Day / night read-out: a pixel arc with the sun or moon, the day counter and the clock. */
3
+ export declare const DayNightIndicator: import("react").ForwardRefExoticComponent<DayNightIndicatorProps & import("react").RefAttributes<HTMLDivElement>>;
4
+ //# sourceMappingURL=DayNightIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DayNightIndicator.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/DayNightIndicator/DayNightIndicator.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAKxE,6FAA6F;AAC7F,eAAO,MAAM,iBAAiB,mHA0D7B,CAAC"}
@@ -0,0 +1,70 @@
1
+ import { cx } from "../../../utils/cx.js";
2
+ import hudChip_module_default from "../hudChip.module.js";
3
+ import DayNightIndicator_module_default from "./DayNightIndicator.module.js";
4
+ import { arcPosition, dayPhase, formatClock } from "./DayNightIndicator.utils.js";
5
+ import { forwardRef } from "react";
6
+ import { MoonIcon, SunIcon } from "@malilion/block-ui-icons";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/components/hud/DayNightIndicator/DayNightIndicator.tsx
9
+ var PHASE_LABEL = {
10
+ dawn: "Dawn",
11
+ day: "Day",
12
+ dusk: "Dusk",
13
+ night: "Night"
14
+ };
15
+ /** Day / night read-out: a pixel arc with the sun or moon, the day counter and the clock. */
16
+ var DayNightIndicator = forwardRef(function DayNightIndicator({ time, day, format = "24h", showDial = true, size = "md", label = "Time of day", className, ...rest }, ref) {
17
+ const phase = dayPhase(time);
18
+ const clock = formatClock(time, format);
19
+ const { body, progress, height } = arcPosition(time);
20
+ const Body = body === "sun" ? SunIcon : MoonIcon;
21
+ return /* @__PURE__ */ jsxs("div", {
22
+ ref,
23
+ role: "group",
24
+ "aria-label": label,
25
+ "data-phase": phase,
26
+ "data-size": size,
27
+ className: cx(hudChip_module_default.chip, DayNightIndicator_module_default.dayNight, className),
28
+ ...rest,
29
+ children: [showDial ? /* @__PURE__ */ jsxs("span", {
30
+ className: DayNightIndicator_module_default.dial,
31
+ "aria-hidden": "true",
32
+ style: {
33
+ "--block-dial-x": progress.toFixed(3),
34
+ "--block-dial-y": height.toFixed(3)
35
+ },
36
+ children: [/* @__PURE__ */ jsx("span", { className: DayNightIndicator_module_default.horizon }), /* @__PURE__ */ jsx("span", {
37
+ className: DayNightIndicator_module_default.body,
38
+ "data-body": body,
39
+ children: /* @__PURE__ */ jsx(Body, { size: 16 })
40
+ })]
41
+ }) : null, /* @__PURE__ */ jsxs("span", {
42
+ className: DayNightIndicator_module_default.text,
43
+ children: [
44
+ day !== void 0 ? /* @__PURE__ */ jsxs("span", { children: [
45
+ /* @__PURE__ */ jsx("span", {
46
+ className: hudChip_module_default.label,
47
+ children: "Day"
48
+ }),
49
+ " ",
50
+ /* @__PURE__ */ jsx("span", {
51
+ className: hudChip_module_default.value,
52
+ children: day
53
+ })
54
+ ] }) : null,
55
+ /* @__PURE__ */ jsx("span", {
56
+ className: hudChip_module_default.value,
57
+ children: clock
58
+ }),
59
+ /* @__PURE__ */ jsx("span", {
60
+ className: DayNightIndicator_module_default.phase,
61
+ children: PHASE_LABEL[phase]
62
+ })
63
+ ]
64
+ })]
65
+ });
66
+ });
67
+ //#endregion
68
+ export { DayNightIndicator };
69
+
70
+ //# sourceMappingURL=DayNightIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DayNightIndicator.js","names":["chip","styles"],"sources":["../../../../src/components/hud/DayNightIndicator/DayNightIndicator.tsx"],"sourcesContent":["import { MoonIcon, SunIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport chip from \"../hudChip.module.css\";\nimport styles from \"./DayNightIndicator.module.css\";\nimport type { DayNightIndicatorProps } from \"./DayNightIndicator.types\";\nimport { arcPosition, dayPhase, formatClock } from \"./DayNightIndicator.utils\";\n\nconst PHASE_LABEL = { dawn: \"Dawn\", day: \"Day\", dusk: \"Dusk\", night: \"Night\" } as const;\n\n/** Day / night read-out: a pixel arc with the sun or moon, the day counter and the clock. */\nexport const DayNightIndicator = forwardRef<HTMLDivElement, DayNightIndicatorProps>(\n function DayNightIndicator(\n {\n time,\n day,\n format = \"24h\",\n showDial = true,\n size = \"md\",\n label = \"Time of day\",\n className,\n ...rest\n },\n ref,\n ) {\n const phase = dayPhase(time);\n const clock = formatClock(time, format);\n const { body, progress, height } = arcPosition(time);\n const Body = body === \"sun\" ? SunIcon : MoonIcon;\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label}\n data-phase={phase}\n data-size={size}\n className={cx(chip.chip, styles.dayNight, className)}\n {...rest}\n >\n {showDial ? (\n <span\n className={styles.dial}\n aria-hidden=\"true\"\n style={\n {\n \"--block-dial-x\": progress.toFixed(3),\n \"--block-dial-y\": height.toFixed(3),\n } as CSSProperties\n }\n >\n <span className={styles.horizon} />\n <span className={styles.body} data-body={body}>\n <Body size={16} />\n </span>\n </span>\n ) : null}\n <span className={styles.text}>\n {day !== undefined ? (\n <span>\n <span className={chip.label}>Day</span> <span className={chip.value}>{day}</span>\n </span>\n ) : null}\n <span className={chip.value}>{clock}</span>\n <span className={styles.phase}>{PHASE_LABEL[phase]}</span>\n </span>\n </div>\n );\n },\n);\n"],"mappings":";;;;;;;;AAQA,IAAM,cAAc;CAAE,MAAM;CAAQ,KAAK;CAAO,MAAM;CAAQ,OAAO;AAAQ;;AAG7E,IAAa,oBAAoB,WAC/B,SAAS,kBACP,EACE,MACA,KACA,SAAS,OACT,WAAW,MACX,OAAO,MACP,QAAQ,eACR,WACA,GAAG,QAEL,KACA;CACA,MAAM,QAAQ,SAAS,IAAI;CAC3B,MAAM,QAAQ,YAAY,MAAM,MAAM;CACtC,MAAM,EAAE,MAAM,UAAU,WAAW,YAAY,IAAI;CACnD,MAAM,OAAO,SAAS,QAAQ,UAAU;CAExC,OACE,qBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAY;EACZ,cAAY;EACZ,aAAW;EACX,WAAW,GAAGA,uBAAK,MAAMC,iCAAO,UAAU,SAAS;EACnD,GAAI;EAPN,UAAA,CASG,WACC,qBAAC,QAAD;GACE,WAAWA,iCAAO;GAClB,eAAY;GACZ,OACE;IACE,kBAAkB,SAAS,QAAQ,CAAC;IACpC,kBAAkB,OAAO,QAAQ,CAAC;GACpC;GAPJ,UAAA,CAUE,oBAAC,QAAD,EAAM,WAAWA,iCAAO,QAAU,CAAA,GAClC,oBAAC,QAAD;IAAM,WAAWA,iCAAO;IAAM,aAAW;IACvC,UAAA,oBAAC,MAAD,EAAM,MAAM,GAAK,CAAA;GACb,CAAA,CACF;EACJ,CAAA,IAAA,MACJ,qBAAC,QAAD;GAAM,WAAWA,iCAAO;GAAxB,UAAA;IACG,QAAQ,KAAA,IACP,qBAAC,QAAD,EAAA,UAAA;KACE,oBAAC,QAAD;MAAM,WAAWD,uBAAK;MAAO,UAAA;KAAS,CAAA;KAAC;KAAC,oBAAC,QAAD;MAAM,WAAWA,uBAAK;MAAQ,UAAA;KAAU,CAAA;IAC5E,EAAA,CAAA,IACJ;IACJ,oBAAC,QAAD;KAAM,WAAWA,uBAAK;KAAQ,UAAA;IAAY,CAAA;IAC1C,oBAAC,QAAD;KAAM,WAAWC,iCAAO;KAAQ,UAAA,YAAY;IAAa,CAAA;GACrD;EACH,CAAA,CAAA;;AAET,CACF"}
@@ -0,0 +1,19 @@
1
+ //#region src/components/hud/DayNightIndicator/DayNightIndicator.module.css
2
+ var dayNight = "block-dayNight-LObYN";
3
+ var dial = "block-dial-R5NuO";
4
+ var horizon = "block-horizon-QANfm";
5
+ var body = "block-body-9QH1O";
6
+ var text = "block-text-ZOb1z";
7
+ var phase = "block-phase-nm6iH";
8
+ var DayNightIndicator_module_default = {
9
+ dayNight,
10
+ dial,
11
+ horizon,
12
+ body,
13
+ text,
14
+ phase
15
+ };
16
+ //#endregion
17
+ export { body, dayNight, DayNightIndicator_module_default as default, dial, horizon, phase, text };
18
+
19
+ //# sourceMappingURL=DayNightIndicator.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DayNightIndicator.module.js","names":[],"sources":["../../../../src/components/hud/DayNightIndicator/DayNightIndicator.module.css"],"sourcesContent":[".dayNight {\n gap: var(--block-space-3);\n}\n\n/* Sky arc: the body travels along a half ellipse above the horizon. */\n.dial {\n --dial-w: 56px;\n --dial-h: 28px;\n position: relative;\n flex-shrink: 0;\n width: var(--dial-w);\n height: var(--dial-h);\n overflow: hidden;\n background: linear-gradient(\n to top,\n color-mix(in srgb, var(--block-water) 60%, transparent),\n color-mix(in srgb, var(--block-water-dark) 30%, transparent)\n );\n border-bottom: 2px solid var(--block-grass);\n}\n\n.dayNight[data-phase=\"night\"] .dial {\n background: linear-gradient(\n to top,\n color-mix(in srgb, var(--block-obsidian-light) 80%, transparent),\n color-mix(in srgb, var(--block-black) 60%, transparent)\n );\n}\n\n.dayNight[data-phase=\"dawn\"] .dial,\n.dayNight[data-phase=\"dusk\"] .dial {\n background: linear-gradient(\n to top,\n color-mix(in srgb, var(--block-lava) 70%, transparent),\n color-mix(in srgb, var(--block-amethyst-dark) 50%, transparent)\n );\n}\n\n.dayNight[data-size=\"lg\"] .dial {\n --dial-w: 80px;\n --dial-h: 40px;\n}\n\n.dayNight[data-size=\"sm\"] .dial {\n --dial-w: 40px;\n --dial-h: 20px;\n}\n\n.horizon {\n position: absolute;\n inset: auto 0 0;\n height: 2px;\n background-color: var(--block-grass-dark);\n}\n\n.body {\n position: absolute;\n left: calc(var(--block-dial-x) * (var(--dial-w) - 16px));\n bottom: calc(var(--block-dial-y) * (var(--dial-h) - 16px) - 4px);\n display: inline-flex;\n image-rendering: pixelated;\n transition:\n left var(--block-duration-normal) var(--block-ease-step),\n bottom var(--block-duration-normal) var(--block-ease-step);\n}\n\n.text {\n display: inline-flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: var(--block-space-2);\n}\n\n.phase {\n color: var(--block-gold-light);\n}\n\n.dayNight[data-phase=\"night\"] .phase {\n color: var(--block-diamond-light);\n}\n"],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import type { HTMLAttributes } from "react";
2
+ export type DayPhase = "dawn" | "day" | "dusk" | "night";
3
+ export interface DayNightIndicatorProps extends HTMLAttributes<HTMLDivElement> {
4
+ /** In-game time of day in hours, 0–24 (fractions allowed: 14.5 = 14:30). */
5
+ time: number;
6
+ /** Day counter shown before the clock, e.g. "Day 156". */
7
+ day?: number;
8
+ /** @default "24h" */
9
+ format?: "24h" | "12h";
10
+ /** Show the sun / moon arc. @default true */
11
+ showDial?: boolean;
12
+ /** @default "md" */
13
+ size?: "sm" | "md" | "lg";
14
+ /** Accessible name of the group. @default "Time of day" */
15
+ label?: string;
16
+ }
17
+ //# sourceMappingURL=DayNightIndicator.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DayNightIndicator.types.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/DayNightIndicator/DayNightIndicator.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,sBAAuB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC5E,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACvB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,15 @@
1
+ import type { DayPhase } from "./DayNightIndicator.types";
2
+ /** Wraps any number of hours into [0, 24). */
3
+ export declare function normalizeTime(time: number): number;
4
+ export declare function dayPhase(time: number): DayPhase;
5
+ export declare function formatClock(time: number, format: "24h" | "12h"): string;
6
+ /**
7
+ * Where the sun (06:00–18:00) or moon (18:00–06:00) sits on the arc:
8
+ * `progress` 0 → 1 runs left to right, `height` 0 → 1 → 0 rises and sets.
9
+ */
10
+ export declare function arcPosition(time: number): {
11
+ body: "sun" | "moon";
12
+ progress: number;
13
+ height: number;
14
+ };
15
+ //# sourceMappingURL=DayNightIndicator.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DayNightIndicator.utils.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/DayNightIndicator/DayNightIndicator.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,8CAA8C;AAC9C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAM/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAYvE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;IACzC,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,CAKA"}
@@ -0,0 +1,43 @@
1
+ //#region src/components/hud/DayNightIndicator/DayNightIndicator.utils.ts
2
+ /** Wraps any number of hours into [0, 24). */
3
+ function normalizeTime(time) {
4
+ return (time % 24 + 24) % 24;
5
+ }
6
+ function dayPhase(time) {
7
+ const t = normalizeTime(time);
8
+ if (t >= 5 && t < 7) return "dawn";
9
+ if (t >= 7 && t < 17) return "day";
10
+ if (t >= 17 && t < 19) return "dusk";
11
+ return "night";
12
+ }
13
+ function formatClock(time, format) {
14
+ const t = normalizeTime(time);
15
+ let hours = Math.floor(t);
16
+ let minutes = Math.round((t - hours) * 60);
17
+ if (minutes === 60) {
18
+ minutes = 0;
19
+ hours = (hours + 1) % 24;
20
+ }
21
+ const mm = String(minutes).padStart(2, "0");
22
+ if (format === "24h") return `${String(hours).padStart(2, "0")}:${mm}`;
23
+ const suffix = hours < 12 ? "AM" : "PM";
24
+ return `${hours % 12 === 0 ? 12 : hours % 12}:${mm} ${suffix}`;
25
+ }
26
+ /**
27
+ * Where the sun (06:00–18:00) or moon (18:00–06:00) sits on the arc:
28
+ * `progress` 0 → 1 runs left to right, `height` 0 → 1 → 0 rises and sets.
29
+ */
30
+ function arcPosition(time) {
31
+ const t = normalizeTime(time);
32
+ const body = t >= 6 && t < 18 ? "sun" : "moon";
33
+ const progress = (t - 6 + 24) % 24 % 12 / 12;
34
+ return {
35
+ body,
36
+ progress,
37
+ height: Math.sin(Math.PI * progress)
38
+ };
39
+ }
40
+ //#endregion
41
+ export { arcPosition, dayPhase, formatClock, normalizeTime };
42
+
43
+ //# sourceMappingURL=DayNightIndicator.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DayNightIndicator.utils.js","names":[],"sources":["../../../../src/components/hud/DayNightIndicator/DayNightIndicator.utils.ts"],"sourcesContent":["import type { DayPhase } from \"./DayNightIndicator.types\";\n\n/** Wraps any number of hours into [0, 24). */\nexport function normalizeTime(time: number): number {\n return ((time % 24) + 24) % 24;\n}\n\nexport function dayPhase(time: number): DayPhase {\n const t = normalizeTime(time);\n if (t >= 5 && t < 7) return \"dawn\";\n if (t >= 7 && t < 17) return \"day\";\n if (t >= 17 && t < 19) return \"dusk\";\n return \"night\";\n}\n\nexport function formatClock(time: number, format: \"24h\" | \"12h\"): string {\n const t = normalizeTime(time);\n let hours = Math.floor(t);\n let minutes = Math.round((t - hours) * 60);\n if (minutes === 60) {\n minutes = 0;\n hours = (hours + 1) % 24;\n }\n const mm = String(minutes).padStart(2, \"0\");\n if (format === \"24h\") return `${String(hours).padStart(2, \"0\")}:${mm}`;\n const suffix = hours < 12 ? \"AM\" : \"PM\";\n return `${hours % 12 === 0 ? 12 : hours % 12}:${mm} ${suffix}`;\n}\n\n/**\n * Where the sun (06:00–18:00) or moon (18:00–06:00) sits on the arc:\n * `progress` 0 → 1 runs left to right, `height` 0 → 1 → 0 rises and sets.\n */\nexport function arcPosition(time: number): {\n body: \"sun\" | \"moon\";\n progress: number;\n height: number;\n} {\n const t = normalizeTime(time);\n const body = t >= 6 && t < 18 ? \"sun\" : \"moon\";\n const progress = (((t - 6 + 24) % 24) % 12) / 12;\n return { body, progress, height: Math.sin(Math.PI * progress) };\n}\n"],"mappings":";;AAGA,SAAgB,cAAc,MAAsB;CAClD,QAAS,OAAO,KAAM,MAAM;AAC9B;AAEA,SAAgB,SAAS,MAAwB;CAC/C,MAAM,IAAI,cAAc,IAAI;CAC5B,IAAI,KAAK,KAAK,IAAI,GAAG,OAAO;CAC5B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO;CAC7B,IAAI,KAAK,MAAM,IAAI,IAAI,OAAO;CAC9B,OAAO;AACT;AAEA,SAAgB,YAAY,MAAc,QAA+B;CACvE,MAAM,IAAI,cAAc,IAAI;CAC5B,IAAI,QAAQ,KAAK,MAAM,CAAC;CACxB,IAAI,UAAU,KAAK,OAAO,IAAI,SAAS,EAAE;CACzC,IAAI,YAAY,IAAI;EAClB,UAAU;EACV,SAAS,QAAQ,KAAK;CACxB;CACA,MAAM,KAAK,OAAO,OAAO,CAAC,CAAC,SAAS,GAAG,GAAG;CAC1C,IAAI,WAAW,OAAO,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE,GAAG;CAClE,MAAM,SAAS,QAAQ,KAAK,OAAO;CACnC,OAAO,GAAG,QAAQ,OAAO,IAAI,KAAK,QAAQ,GAAG,GAAG,GAAG,GAAG;AACxD;;;;;AAMA,SAAgB,YAAY,MAI1B;CACA,MAAM,IAAI,cAAc,IAAI;CAC5B,MAAM,OAAO,KAAK,KAAK,IAAI,KAAK,QAAQ;CACxC,MAAM,YAAc,IAAI,IAAI,MAAM,KAAM,KAAM;CAC9C,OAAO;EAAE;EAAM;EAAU,QAAQ,KAAK,IAAI,KAAK,KAAK,QAAQ;CAAE;AAChE"}
@@ -0,0 +1,4 @@
1
+ export { DayNightIndicator } from "./DayNightIndicator";
2
+ export { dayPhase, formatClock } from "./DayNightIndicator.utils";
3
+ export type { DayNightIndicatorProps, DayPhase } from "./DayNightIndicator.types";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/hud/DayNightIndicator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAClE,YAAY,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC"}