@malilion/block-ui-react 0.5.0 → 0.6.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 (257) hide show
  1. package/dist/components/actions/ContextMenu/ContextMenu.d.ts.map +1 -1
  2. package/dist/components/actions/ContextMenu/ContextMenu.js +4 -2
  3. package/dist/components/actions/ContextMenu/ContextMenu.js.map +1 -1
  4. package/dist/components/actions/ContextMenu/ContextMenu.types.d.ts +1 -1
  5. package/dist/components/actions/ContextMenu/ContextMenu.types.d.ts.map +1 -1
  6. package/dist/components/cards/AchievementCard/AchievementCard.d.ts.map +1 -1
  7. package/dist/components/cards/AchievementCard/AchievementCard.js +6 -4
  8. package/dist/components/cards/AchievementCard/AchievementCard.js.map +1 -1
  9. package/dist/components/cards/PlayerCard/PlayerCard.d.ts.map +1 -1
  10. package/dist/components/cards/PlayerCard/PlayerCard.js +7 -5
  11. package/dist/components/cards/PlayerCard/PlayerCard.js.map +1 -1
  12. package/dist/components/cards/QuestCard/QuestCard.d.ts.map +1 -1
  13. package/dist/components/cards/QuestCard/QuestCard.js +9 -7
  14. package/dist/components/cards/QuestCard/QuestCard.js.map +1 -1
  15. package/dist/components/cards/ServerBrowser/ServerBrowser.d.ts.map +1 -1
  16. package/dist/components/cards/ServerBrowser/ServerBrowser.js +27 -25
  17. package/dist/components/cards/ServerBrowser/ServerBrowser.js.map +1 -1
  18. package/dist/components/cards/ServerBrowser/ServerBrowser.types.d.ts +2 -2
  19. package/dist/components/cards/ServerBrowser/ServerBrowser.types.d.ts.map +1 -1
  20. package/dist/components/cards/ServerCard/ServerCard.d.ts.map +1 -1
  21. package/dist/components/cards/ServerCard/ServerCard.js +10 -8
  22. package/dist/components/cards/ServerCard/ServerCard.js.map +1 -1
  23. package/dist/components/cards/WorldBrowser/WorldBrowser.d.ts.map +1 -1
  24. package/dist/components/cards/WorldBrowser/WorldBrowser.js +20 -18
  25. package/dist/components/cards/WorldBrowser/WorldBrowser.js.map +1 -1
  26. package/dist/components/cards/WorldBrowser/WorldBrowser.types.d.ts +2 -2
  27. package/dist/components/cards/WorldBrowser/WorldBrowser.types.d.ts.map +1 -1
  28. package/dist/components/cards/WorldCard/WorldCard.d.ts.map +1 -1
  29. package/dist/components/cards/WorldCard/WorldCard.js +16 -6
  30. package/dist/components/cards/WorldCard/WorldCard.js.map +1 -1
  31. package/dist/components/crafting/Anvil/Anvil.d.ts.map +1 -1
  32. package/dist/components/crafting/Anvil/Anvil.js +9 -7
  33. package/dist/components/crafting/Anvil/Anvil.js.map +1 -1
  34. package/dist/components/crafting/Anvil/Anvil.types.d.ts +1 -1
  35. package/dist/components/crafting/Anvil/Anvil.types.d.ts.map +1 -1
  36. package/dist/components/crafting/BrewingStand/BrewingStand.d.ts.map +1 -1
  37. package/dist/components/crafting/BrewingStand/BrewingStand.js +11 -20
  38. package/dist/components/crafting/BrewingStand/BrewingStand.js.map +1 -1
  39. package/dist/components/crafting/BrewingStand/BrewingStand.types.d.ts +1 -1
  40. package/dist/components/crafting/BrewingStand/BrewingStand.types.d.ts.map +1 -1
  41. package/dist/components/crafting/BrewingStand/BrewingStand.types.js.map +1 -1
  42. package/dist/components/crafting/CraftingGrid/CraftingGrid.d.ts.map +1 -1
  43. package/dist/components/crafting/CraftingGrid/CraftingGrid.js +4 -2
  44. package/dist/components/crafting/CraftingGrid/CraftingGrid.js.map +1 -1
  45. package/dist/components/crafting/CraftingResult/CraftingResult.d.ts.map +1 -1
  46. package/dist/components/crafting/CraftingResult/CraftingResult.js +5 -2
  47. package/dist/components/crafting/CraftingResult/CraftingResult.js.map +1 -1
  48. package/dist/components/crafting/CraftingResult/CraftingResult.types.d.ts +1 -1
  49. package/dist/components/crafting/CraftingResult/CraftingResult.types.d.ts.map +1 -1
  50. package/dist/components/crafting/CraftingTable/CraftingTable.d.ts.map +1 -1
  51. package/dist/components/crafting/CraftingTable/CraftingTable.js +5 -3
  52. package/dist/components/crafting/CraftingTable/CraftingTable.js.map +1 -1
  53. package/dist/components/crafting/CraftingTable/CraftingTable.types.d.ts +2 -2
  54. package/dist/components/crafting/CraftingTable/CraftingTable.types.d.ts.map +1 -1
  55. package/dist/components/crafting/EnchantingTable/EnchantingTable.d.ts.map +1 -1
  56. package/dist/components/crafting/EnchantingTable/EnchantingTable.js +15 -13
  57. package/dist/components/crafting/EnchantingTable/EnchantingTable.js.map +1 -1
  58. package/dist/components/crafting/EnchantingTable/EnchantingTable.types.d.ts +1 -1
  59. package/dist/components/crafting/EnchantingTable/EnchantingTable.types.d.ts.map +1 -1
  60. package/dist/components/crafting/Furnace/Furnace.d.ts.map +1 -1
  61. package/dist/components/crafting/Furnace/Furnace.js +11 -16
  62. package/dist/components/crafting/Furnace/Furnace.js.map +1 -1
  63. package/dist/components/crafting/Furnace/Furnace.types.d.ts +1 -1
  64. package/dist/components/crafting/Furnace/Furnace.types.d.ts.map +1 -1
  65. package/dist/components/crafting/Furnace/Furnace.types.js.map +1 -1
  66. package/dist/components/crafting/RecipeBook/RecipeBook.d.ts.map +1 -1
  67. package/dist/components/crafting/RecipeBook/RecipeBook.js +17 -15
  68. package/dist/components/crafting/RecipeBook/RecipeBook.js.map +1 -1
  69. package/dist/components/crafting/RecipeBook/RecipeBook.types.d.ts +1 -1
  70. package/dist/components/crafting/RecipeBook/RecipeBook.types.d.ts.map +1 -1
  71. package/dist/components/crafting/TradingUI/TradingUI.d.ts +1 -1
  72. package/dist/components/crafting/TradingUI/TradingUI.d.ts.map +1 -1
  73. package/dist/components/crafting/TradingUI/TradingUI.js +14 -13
  74. package/dist/components/crafting/TradingUI/TradingUI.js.map +1 -1
  75. package/dist/components/crafting/TradingUI/TradingUI.types.d.ts +1 -1
  76. package/dist/components/crafting/TradingUI/TradingUI.types.d.ts.map +1 -1
  77. package/dist/components/crafting/TradingUI/TradingUI.types.js.map +1 -1
  78. package/dist/components/display/Avatar/Avatar.d.ts.map +1 -1
  79. package/dist/components/display/Avatar/Avatar.js +3 -7
  80. package/dist/components/display/Avatar/Avatar.js.map +1 -1
  81. package/dist/components/display/BlockTable/BlockTable.d.ts.map +1 -1
  82. package/dist/components/display/BlockTable/BlockTable.js +4 -2
  83. package/dist/components/display/BlockTable/BlockTable.js.map +1 -1
  84. package/dist/components/display/BlockTable/BlockTable.types.d.ts +1 -1
  85. package/dist/components/display/BlockTable/BlockTable.types.d.ts.map +1 -1
  86. package/dist/components/display/SkillTree/SkillTree.d.ts.map +1 -1
  87. package/dist/components/display/SkillTree/SkillTree.js +16 -15
  88. package/dist/components/display/SkillTree/SkillTree.js.map +1 -1
  89. package/dist/components/display/SkillTree/SkillTree.types.d.ts +1 -1
  90. package/dist/components/display/SkillTree/SkillTree.types.d.ts.map +1 -1
  91. package/dist/components/feedback/Alert/BlockAlert.d.ts.map +1 -1
  92. package/dist/components/feedback/Alert/BlockAlert.js +4 -2
  93. package/dist/components/feedback/Alert/BlockAlert.js.map +1 -1
  94. package/dist/components/feedback/Alert/BlockAlert.types.d.ts +1 -1
  95. package/dist/components/feedback/Alert/BlockAlert.types.d.ts.map +1 -1
  96. package/dist/components/feedback/Alert/BlockAlert.types.js.map +1 -1
  97. package/dist/components/feedback/ConfirmDialog/ConfirmDialog.d.ts.map +1 -1
  98. package/dist/components/feedback/ConfirmDialog/ConfirmDialog.js +5 -3
  99. package/dist/components/feedback/ConfirmDialog/ConfirmDialog.js.map +1 -1
  100. package/dist/components/feedback/ConfirmDialog/ConfirmDialog.types.d.ts +2 -2
  101. package/dist/components/feedback/ConfirmDialog/ConfirmDialog.types.d.ts.map +1 -1
  102. package/dist/components/feedback/Drawer/Drawer.d.ts.map +1 -1
  103. package/dist/components/feedback/Drawer/Drawer.js +3 -2
  104. package/dist/components/feedback/Drawer/Drawer.js.map +1 -1
  105. package/dist/components/feedback/Loading/BlockLoading.d.ts.map +1 -1
  106. package/dist/components/feedback/Loading/BlockLoading.js +4 -2
  107. package/dist/components/feedback/Loading/BlockLoading.js.map +1 -1
  108. package/dist/components/feedback/Loading/BlockLoading.types.d.ts +1 -1
  109. package/dist/components/feedback/Loading/BlockLoading.types.d.ts.map +1 -1
  110. package/dist/components/feedback/Modal/BlockModal.d.ts.map +1 -1
  111. package/dist/components/feedback/Modal/BlockModal.js +3 -2
  112. package/dist/components/feedback/Modal/BlockModal.js.map +1 -1
  113. package/dist/components/feedback/Progress/BlockProgress.d.ts.map +1 -1
  114. package/dist/components/feedback/Progress/BlockProgress.js +3 -1
  115. package/dist/components/feedback/Progress/BlockProgress.js.map +1 -1
  116. package/dist/components/feedback/Toast/Toast.d.ts +1 -1
  117. package/dist/components/feedback/Toast/Toast.d.ts.map +1 -1
  118. package/dist/components/feedback/Toast/Toast.js +6 -4
  119. package/dist/components/feedback/Toast/Toast.js.map +1 -1
  120. package/dist/components/feedback/Toast/Toast.types.d.ts +1 -1
  121. package/dist/components/feedback/Toast/Toast.types.d.ts.map +1 -1
  122. package/dist/components/forms/NumberInput/NumberInput.d.ts.map +1 -1
  123. package/dist/components/forms/NumberInput/NumberInput.js +4 -2
  124. package/dist/components/forms/NumberInput/NumberInput.js.map +1 -1
  125. package/dist/components/hud/ArmorBar/ArmorBar.d.ts.map +1 -1
  126. package/dist/components/hud/ArmorBar/ArmorBar.js +4 -2
  127. package/dist/components/hud/ArmorBar/ArmorBar.js.map +1 -1
  128. package/dist/components/hud/BiomeIndicator/BiomeIndicator.d.ts.map +1 -1
  129. package/dist/components/hud/BiomeIndicator/BiomeIndicator.js +4 -2
  130. package/dist/components/hud/BiomeIndicator/BiomeIndicator.js.map +1 -1
  131. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.d.ts.map +1 -1
  132. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.js +9 -7
  133. package/dist/components/hud/CoordinatesHUD/CoordinatesHUD.js.map +1 -1
  134. package/dist/components/hud/DayNightIndicator/DayNightIndicator.d.ts.map +1 -1
  135. package/dist/components/hud/DayNightIndicator/DayNightIndicator.js +7 -11
  136. package/dist/components/hud/DayNightIndicator/DayNightIndicator.js.map +1 -1
  137. package/dist/components/hud/DayNightIndicator/DayNightIndicator.utils.d.ts +4 -1
  138. package/dist/components/hud/DayNightIndicator/DayNightIndicator.utils.d.ts.map +1 -1
  139. package/dist/components/hud/DayNightIndicator/DayNightIndicator.utils.js +5 -2
  140. package/dist/components/hud/DayNightIndicator/DayNightIndicator.utils.js.map +1 -1
  141. package/dist/components/hud/HealthBar/HealthBar.d.ts.map +1 -1
  142. package/dist/components/hud/HealthBar/HealthBar.js +4 -2
  143. package/dist/components/hud/HealthBar/HealthBar.js.map +1 -1
  144. package/dist/components/hud/HungerBar/HungerBar.d.ts.map +1 -1
  145. package/dist/components/hud/HungerBar/HungerBar.js +4 -2
  146. package/dist/components/hud/HungerBar/HungerBar.js.map +1 -1
  147. package/dist/components/hud/MiniMap/MiniMap.d.ts.map +1 -1
  148. package/dist/components/hud/MiniMap/MiniMap.js +8 -7
  149. package/dist/components/hud/MiniMap/MiniMap.js.map +1 -1
  150. package/dist/components/hud/MiniMap/MiniMap.utils.d.ts +10 -2
  151. package/dist/components/hud/MiniMap/MiniMap.utils.d.ts.map +1 -1
  152. package/dist/components/hud/MiniMap/MiniMap.utils.js +12 -15
  153. package/dist/components/hud/MiniMap/MiniMap.utils.js.map +1 -1
  154. package/dist/components/hud/PlayerHUD/PlayerHUD.d.ts.map +1 -1
  155. package/dist/components/hud/PlayerHUD/PlayerHUD.js +4 -2
  156. package/dist/components/hud/PlayerHUD/PlayerHUD.js.map +1 -1
  157. package/dist/components/hud/PointsBar/PointsBar.d.ts.map +1 -1
  158. package/dist/components/hud/PointsBar/PointsBar.js +3 -1
  159. package/dist/components/hud/PointsBar/PointsBar.js.map +1 -1
  160. package/dist/components/hud/Scoreboard/Scoreboard.d.ts.map +1 -1
  161. package/dist/components/hud/Scoreboard/Scoreboard.js +9 -11
  162. package/dist/components/hud/Scoreboard/Scoreboard.js.map +1 -1
  163. package/dist/components/hud/WeatherIndicator/WeatherIndicator.d.ts.map +1 -1
  164. package/dist/components/hud/WeatherIndicator/WeatherIndicator.js +7 -4
  165. package/dist/components/hud/WeatherIndicator/WeatherIndicator.js.map +1 -1
  166. package/dist/components/hud/WeatherIndicator/WeatherIndicator.utils.js +1 -8
  167. package/dist/components/hud/WeatherIndicator/WeatherIndicator.utils.js.map +1 -1
  168. package/dist/components/hud/XPBar/XPBar.d.ts.map +1 -1
  169. package/dist/components/hud/XPBar/XPBar.js +6 -4
  170. package/dist/components/hud/XPBar/XPBar.js.map +1 -1
  171. package/dist/components/inventory/DurabilityBar/DurabilityBar.d.ts.map +1 -1
  172. package/dist/components/inventory/DurabilityBar/DurabilityBar.js +4 -2
  173. package/dist/components/inventory/DurabilityBar/DurabilityBar.js.map +1 -1
  174. package/dist/components/inventory/Hotbar/Hotbar.d.ts.map +1 -1
  175. package/dist/components/inventory/Hotbar/Hotbar.js +4 -2
  176. package/dist/components/inventory/Hotbar/Hotbar.js.map +1 -1
  177. package/dist/components/inventory/Inventory/Inventory.d.ts.map +1 -1
  178. package/dist/components/inventory/Inventory/Inventory.js +4 -2
  179. package/dist/components/inventory/Inventory/Inventory.js.map +1 -1
  180. package/dist/components/inventory/InventoryGrid/InventoryGrid.d.ts.map +1 -1
  181. package/dist/components/inventory/InventoryGrid/InventoryGrid.js +4 -2
  182. package/dist/components/inventory/InventoryGrid/InventoryGrid.js.map +1 -1
  183. package/dist/components/inventory/InventorySlot/InventorySlot.d.ts.map +1 -1
  184. package/dist/components/inventory/InventorySlot/InventorySlot.js +3 -1
  185. package/dist/components/inventory/InventorySlot/InventorySlot.js.map +1 -1
  186. package/dist/components/inventory/ItemStack/ItemStack.d.ts.map +1 -1
  187. package/dist/components/inventory/ItemStack/ItemStack.js +3 -1
  188. package/dist/components/inventory/ItemStack/ItemStack.js.map +1 -1
  189. package/dist/components/inventory/ItemStack/ItemStack.utils.d.ts +2 -1
  190. package/dist/components/inventory/ItemStack/ItemStack.utils.d.ts.map +1 -1
  191. package/dist/components/inventory/ItemStack/ItemStack.utils.js +6 -2
  192. package/dist/components/inventory/ItemStack/ItemStack.utils.js.map +1 -1
  193. package/dist/components/inventory/ItemTooltip/ItemTooltip.d.ts.map +1 -1
  194. package/dist/components/inventory/ItemTooltip/ItemTooltip.js +3 -1
  195. package/dist/components/inventory/ItemTooltip/ItemTooltip.js.map +1 -1
  196. package/dist/components/navigation/BlockPagination/BlockPagination.d.ts.map +1 -1
  197. package/dist/components/navigation/BlockPagination/BlockPagination.js +9 -12
  198. package/dist/components/navigation/BlockPagination/BlockPagination.js.map +1 -1
  199. package/dist/components/navigation/BlockPagination/BlockPagination.types.d.ts +1 -1
  200. package/dist/components/navigation/BlockPagination/BlockPagination.types.d.ts.map +1 -1
  201. package/dist/components/navigation/BlockSidebar/BlockSidebar.d.ts.map +1 -1
  202. package/dist/components/navigation/BlockSidebar/BlockSidebar.js +4 -2
  203. package/dist/components/navigation/BlockSidebar/BlockSidebar.js.map +1 -1
  204. package/dist/components/navigation/BlockSidebar/BlockSidebar.types.d.ts +1 -1
  205. package/dist/components/navigation/BlockSidebar/BlockSidebar.types.d.ts.map +1 -1
  206. package/dist/components/navigation/BlockStepper/BlockStepper.d.ts.map +1 -1
  207. package/dist/components/navigation/BlockStepper/BlockStepper.js +4 -2
  208. package/dist/components/navigation/BlockStepper/BlockStepper.js.map +1 -1
  209. package/dist/components/navigation/BlockStepper/BlockStepper.types.d.ts +1 -1
  210. package/dist/components/navigation/BlockStepper/BlockStepper.types.d.ts.map +1 -1
  211. package/dist/components/navigation/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  212. package/dist/components/navigation/Breadcrumb/Breadcrumb.js +4 -2
  213. package/dist/components/navigation/Breadcrumb/Breadcrumb.js.map +1 -1
  214. package/dist/components/navigation/Breadcrumb/Breadcrumb.types.d.ts +1 -1
  215. package/dist/components/navigation/Breadcrumb/Breadcrumb.types.d.ts.map +1 -1
  216. package/dist/components/navigation/HotbarNavigation/HotbarNavigation.d.ts.map +1 -1
  217. package/dist/components/navigation/HotbarNavigation/HotbarNavigation.js +4 -2
  218. package/dist/components/navigation/HotbarNavigation/HotbarNavigation.js.map +1 -1
  219. package/dist/components/navigation/HotbarNavigation/HotbarNavigation.types.d.ts +1 -1
  220. package/dist/components/navigation/HotbarNavigation/HotbarNavigation.types.d.ts.map +1 -1
  221. package/dist/components/social/ChatWindow/ChatWindow.d.ts.map +1 -1
  222. package/dist/components/social/ChatWindow/ChatWindow.js +10 -7
  223. package/dist/components/social/ChatWindow/ChatWindow.js.map +1 -1
  224. package/dist/components/social/ChatWindow/ChatWindow.types.d.ts +2 -2
  225. package/dist/components/social/ChatWindow/ChatWindow.types.d.ts.map +1 -1
  226. package/dist/components/social/ChatWindow/ChatWindow.types.js.map +1 -1
  227. package/dist/components/social/CommandConsole/CommandConsole.d.ts.map +1 -1
  228. package/dist/components/social/CommandConsole/CommandConsole.js +7 -4
  229. package/dist/components/social/CommandConsole/CommandConsole.js.map +1 -1
  230. package/dist/components/social/CommandConsole/CommandConsole.types.d.ts +1 -1
  231. package/dist/components/social/CommandConsole/CommandConsole.types.d.ts.map +1 -1
  232. package/dist/components/social/CommandConsole/CommandConsole.types.js.map +1 -1
  233. package/dist/index.d.ts +1 -0
  234. package/dist/index.d.ts.map +1 -1
  235. package/dist/index.js +5 -3
  236. package/dist/locale/index.d.ts +4 -0
  237. package/dist/locale/index.d.ts.map +1 -0
  238. package/dist/locale/messages.d.ts +289 -0
  239. package/dist/locale/messages.d.ts.map +1 -0
  240. package/dist/locale/messages.js +341 -0
  241. package/dist/locale/messages.js.map +1 -0
  242. package/dist/locale/zhTW.d.ts +4 -0
  243. package/dist/locale/zhTW.d.ts.map +1 -0
  244. package/dist/locale/zhTW.js +331 -0
  245. package/dist/locale/zhTW.js.map +1 -0
  246. package/dist/provider/BlockUIProvider.d.ts.map +1 -1
  247. package/dist/provider/BlockUIProvider.js +10 -3
  248. package/dist/provider/BlockUIProvider.js.map +1 -1
  249. package/dist/provider/BlockUIProvider.types.d.ts +9 -0
  250. package/dist/provider/BlockUIProvider.types.d.ts.map +1 -1
  251. package/dist/provider/context.d.ts +3 -0
  252. package/dist/provider/context.d.ts.map +1 -1
  253. package/dist/provider/context.js +6 -1
  254. package/dist/provider/context.js.map +1 -1
  255. package/dist/provider/index.d.ts +1 -1
  256. package/dist/provider/index.d.ts.map +1 -1
  257. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"CraftingResult.js","names":["styles"],"sources":["../../../../src/components/crafting/CraftingResult/CraftingResult.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { InventorySlot } from \"../../inventory/InventorySlot/InventorySlot\";\nimport styles from \"./CraftingResult.module.css\";\nimport type { CraftingResultProps } from \"./CraftingResult.types\";\n\n/** The large output slot of a crafting table or furnace. Result changes are announced politely. */\nexport const CraftingResult = forwardRef<HTMLDivElement, CraftingResultProps>(\n function CraftingResult(\n { children, onTake, label = \"Crafting result\", disabled = false, className, ...rest },\n ref,\n ) {\n const empty = children === undefined || children === null || children === false;\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label}\n aria-live=\"polite\"\n data-empty={empty || undefined}\n className={cx(styles.result, className)}\n {...rest}\n >\n <InventorySlot\n size=\"lg\"\n disabled={disabled || empty}\n onClick={onTake}\n className={styles.slot}\n label={empty ? `${label}: empty` : undefined}\n >\n {children}\n </InventorySlot>\n </div>\n );\n },\n);\n"],"mappings":";;;;;;;AAOA,IAAa,iBAAiB,WAC5B,SAAS,eACP,EAAE,UAAU,QAAQ,QAAQ,mBAAmB,WAAW,OAAO,WAAW,GAAG,QAC/E,KACA;CACA,MAAM,QAAQ,aAAa,KAAA,KAAa,aAAa,QAAQ,aAAa;CAC1E,OACE,oBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAY;EACZ,aAAU;EACV,cAAY,SAAS,KAAA;EACrB,WAAW,GAAGA,8BAAO,QAAQ,SAAS;EACtC,GAAI;EAEJ,UAAA,oBAAC,eAAD;GACE,MAAK;GACL,UAAU,YAAY;GACtB,SAAS;GACT,WAAWA,8BAAO;GAClB,OAAO,QAAQ,GAAG,MAAM,WAAW,KAAA;GAElC;EACY,CAAA;CACZ,CAAA;AAET,CACF"}
1
+ {"version":3,"file":"CraftingResult.js","names":["styles"],"sources":["../../../../src/components/crafting/CraftingResult/CraftingResult.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\nimport { InventorySlot } from \"../../inventory/InventorySlot/InventorySlot\";\nimport styles from \"./CraftingResult.module.css\";\nimport type { CraftingResultProps } from \"./CraftingResult.types\";\n\n/** The large output slot of a crafting table or furnace. Result changes are announced politely. */\nexport const CraftingResult = forwardRef<HTMLDivElement, CraftingResultProps>(\n function CraftingResult(\n { children, onTake, label: labelProp, disabled = false, className, ...rest },\n ref,\n ) {\n const m = useBlockUIMessages();\n const label = labelProp ?? m.craftingResult.label;\n const empty = children === undefined || children === null || children === false;\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label}\n aria-live=\"polite\"\n data-empty={empty || undefined}\n className={cx(styles.result, className)}\n {...rest}\n >\n <InventorySlot\n size=\"lg\"\n disabled={disabled || empty}\n onClick={onTake}\n className={styles.slot}\n label={empty ? m.common.emptyNamed(label) : undefined}\n >\n {children}\n </InventorySlot>\n </div>\n );\n },\n);\n"],"mappings":";;;;;;;;AAQA,IAAa,iBAAiB,WAC5B,SAAS,eACP,EAAE,UAAU,QAAQ,OAAO,WAAW,WAAW,OAAO,WAAW,GAAG,QACtE,KACA;CACA,MAAM,IAAI,mBAAmB;CAC7B,MAAM,QAAQ,aAAa,EAAE,eAAe;CAC5C,MAAM,QAAQ,aAAa,KAAA,KAAa,aAAa,QAAQ,aAAa;CAC1E,OACE,oBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAY;EACZ,aAAU;EACV,cAAY,SAAS,KAAA;EACrB,WAAW,GAAGA,8BAAO,QAAQ,SAAS;EACtC,GAAI;EAEJ,UAAA,oBAAC,eAAD;GACE,MAAK;GACL,UAAU,YAAY;GACtB,SAAS;GACT,WAAWA,8BAAO;GAClB,OAAO,QAAQ,EAAE,OAAO,WAAW,KAAK,IAAI,KAAA;GAE3C;EACY,CAAA;CACZ,CAAA;AAET,CACF"}
@@ -4,7 +4,7 @@ export interface CraftingResultProps extends Omit<HTMLAttributes<HTMLDivElement>
4
4
  children?: ReactNode;
5
5
  /** Called when the player takes the result (click / Enter). */
6
6
  onTake?: () => void;
7
- /** Accessible label prefix. @default "Crafting result" */
7
+ /** Accessible label prefix. @default locale `craftingResult.label` ("Crafting result") */
8
8
  label?: string;
9
9
  disabled?: boolean;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CraftingResult.types.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/CraftingResult/CraftingResult.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC1F,oDAAoD;IACpD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
1
+ {"version":3,"file":"CraftingResult.types.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/CraftingResult/CraftingResult.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC1F,oDAAoD;IACpD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"CraftingTable.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/CraftingTable/CraftingTable.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,aAAa,+GAoDxB,CAAC"}
1
+ {"version":3,"file":"CraftingTable.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/CraftingTable/CraftingTable.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,aAAa,+GA0CxB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { cx } from "../../../utils/cx.js";
2
+ import { useBlockUIMessages } from "../../../provider/context.js";
2
3
  import { BlockButton } from "../../actions/BlockButton/BlockButton.js";
3
4
  import { CraftingResult } from "../CraftingResult/CraftingResult.js";
4
5
  import CraftingTable_module_default from "./CraftingTable.module.js";
@@ -10,7 +11,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
10
11
  * Crafting layout: input grid → arrow → result. Horizontal on desktop,
11
12
  * vertical on mobile (< 768px).
12
13
  */
13
- var CraftingTable = forwardRef(function CraftingTable({ input, result, onTake, onCraft, canCraft, craftLabel = "Craft", label = "Crafting table", className, children, ...rest }, ref) {
14
+ var CraftingTable = forwardRef(function CraftingTable({ input, result, onTake, onCraft, canCraft, craftLabel, label, className, children, ...rest }, ref) {
15
+ const m = useBlockUIMessages();
14
16
  const hasResult = result !== void 0 && result !== null && result !== false;
15
17
  const resultNode = isValidElement(result) && result.type === CraftingResult ? result : /* @__PURE__ */ jsx(CraftingResult, {
16
18
  onTake,
@@ -20,7 +22,7 @@ var CraftingTable = forwardRef(function CraftingTable({ input, result, onTake, o
20
22
  return /* @__PURE__ */ jsxs("div", {
21
23
  ref,
22
24
  role: "group",
23
- "aria-label": label,
25
+ "aria-label": label ?? m.craftingTable.label,
24
26
  className: cx(CraftingTable_module_default.table, className),
25
27
  ...rest,
26
28
  children: [
@@ -47,7 +49,7 @@ var CraftingTable = forwardRef(function CraftingTable({ input, result, onTake, o
47
49
  disabled: !craftEnabled,
48
50
  onClick: onCraft,
49
51
  className: CraftingTable_module_default.craft,
50
- children: craftLabel
52
+ children: craftLabel ?? m.craftingTable.craft
51
53
  }) : null,
52
54
  children
53
55
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"CraftingTable.js","names":["styles"],"sources":["../../../../src/components/crafting/CraftingTable/CraftingTable.tsx"],"sourcesContent":["import { ArrowIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef, isValidElement } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { BlockButton } from \"../../actions/BlockButton/BlockButton\";\nimport { CraftingResult } from \"../CraftingResult/CraftingResult\";\nimport styles from \"./CraftingTable.module.css\";\nimport type { CraftingTableProps } from \"./CraftingTable.types\";\n\n/**\n * Crafting layout: input grid → arrow → result. Horizontal on desktop,\n * vertical on mobile (< 768px).\n */\nexport const CraftingTable = forwardRef<HTMLDivElement, CraftingTableProps>(function CraftingTable(\n {\n input,\n result,\n onTake,\n onCraft,\n canCraft,\n craftLabel = \"Craft\",\n label = \"Crafting table\",\n className,\n children,\n ...rest\n },\n ref,\n) {\n const hasResult = result !== undefined && result !== null && result !== false;\n const resultNode =\n isValidElement(result) && result.type === CraftingResult ? (\n result\n ) : (\n <CraftingResult onTake={onTake}>{hasResult ? result : null}</CraftingResult>\n );\n const craftEnabled = canCraft ?? hasResult;\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label}\n className={cx(styles.table, className)}\n {...rest}\n >\n <div className={styles.layout}>\n <div className={styles.input}>{input}</div>\n <span className={styles.arrow} aria-hidden=\"true\">\n <ArrowIcon size={32} />\n </span>\n <div className={styles.output}>{resultNode}</div>\n </div>\n {onCraft ? (\n <BlockButton\n variant=\"grass\"\n disabled={!craftEnabled}\n onClick={onCraft}\n className={styles.craft}\n >\n {craftLabel}\n </BlockButton>\n ) : null}\n {children}\n </div>\n );\n});\n"],"mappings":";;;;;;;;;;;;AAYA,IAAa,gBAAgB,WAA+C,SAAS,cACnF,EACE,OACA,QACA,QACA,SACA,UACA,aAAa,SACb,QAAQ,kBACR,WACA,UACA,GAAG,QAEL,KACA;CACA,MAAM,YAAY,WAAW,KAAA,KAAa,WAAW,QAAQ,WAAW;CACxE,MAAM,aACJ,eAAe,MAAM,KAAK,OAAO,SAAS,iBACxC,SAEA,oBAAC,gBAAD;EAAwB;EAAS,UAAA,YAAY,SAAS;CAAqB,CAAA;CAE/E,MAAM,eAAe,YAAY;CAEjC,OACE,qBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAY;EACZ,WAAW,GAAGA,6BAAO,OAAO,SAAS;EACrC,GAAI;EALN,UAAA;GAOE,qBAAC,OAAD;IAAK,WAAWA,6BAAO;IAAvB,UAAA;KACE,oBAAC,OAAD;MAAK,WAAWA,6BAAO;MAAQ,UAAA;KAAW,CAAA;KAC1C,oBAAC,QAAD;MAAM,WAAWA,6BAAO;MAAO,eAAY;MACzC,UAAA,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA;KAClB,CAAA;KACN,oBAAC,OAAD;MAAK,WAAWA,6BAAO;MAAS,UAAA;KAAgB,CAAA;IAC7C;;GACJ,UACC,oBAAC,aAAD;IACE,SAAQ;IACR,UAAU,CAAC;IACX,SAAS;IACT,WAAWA,6BAAO;IAEjB,UAAA;GACU,CAAA,IACX;GACH;EACE;;AAET,CAAC"}
1
+ {"version":3,"file":"CraftingTable.js","names":["styles"],"sources":["../../../../src/components/crafting/CraftingTable/CraftingTable.tsx"],"sourcesContent":["import { ArrowIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef, isValidElement } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\nimport { BlockButton } from \"../../actions/BlockButton/BlockButton\";\nimport { CraftingResult } from \"../CraftingResult/CraftingResult\";\nimport styles from \"./CraftingTable.module.css\";\nimport type { CraftingTableProps } from \"./CraftingTable.types\";\n\n/**\n * Crafting layout: input grid → arrow → result. Horizontal on desktop,\n * vertical on mobile (< 768px).\n */\nexport const CraftingTable = forwardRef<HTMLDivElement, CraftingTableProps>(function CraftingTable(\n { input, result, onTake, onCraft, canCraft, craftLabel, label, className, children, ...rest },\n ref,\n) {\n const m = useBlockUIMessages();\n const hasResult = result !== undefined && result !== null && result !== false;\n const resultNode =\n isValidElement(result) && result.type === CraftingResult ? (\n result\n ) : (\n <CraftingResult onTake={onTake}>{hasResult ? result : null}</CraftingResult>\n );\n const craftEnabled = canCraft ?? hasResult;\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label ?? m.craftingTable.label}\n className={cx(styles.table, className)}\n {...rest}\n >\n <div className={styles.layout}>\n <div className={styles.input}>{input}</div>\n <span className={styles.arrow} aria-hidden=\"true\">\n <ArrowIcon size={32} />\n </span>\n <div className={styles.output}>{resultNode}</div>\n </div>\n {onCraft ? (\n <BlockButton\n variant=\"grass\"\n disabled={!craftEnabled}\n onClick={onCraft}\n className={styles.craft}\n >\n {craftLabel ?? m.craftingTable.craft}\n </BlockButton>\n ) : null}\n {children}\n </div>\n );\n});\n"],"mappings":";;;;;;;;;;;;;AAaA,IAAa,gBAAgB,WAA+C,SAAS,cACnF,EAAE,OAAO,QAAQ,QAAQ,SAAS,UAAU,YAAY,OAAO,WAAW,UAAU,GAAG,QACvF,KACA;CACA,MAAM,IAAI,mBAAmB;CAC7B,MAAM,YAAY,WAAW,KAAA,KAAa,WAAW,QAAQ,WAAW;CACxE,MAAM,aACJ,eAAe,MAAM,KAAK,OAAO,SAAS,iBACxC,SAEA,oBAAC,gBAAD;EAAwB;EAAS,UAAA,YAAY,SAAS;CAAqB,CAAA;CAE/E,MAAM,eAAe,YAAY;CAEjC,OACE,qBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAY,SAAS,EAAE,cAAc;EACrC,WAAW,GAAGA,6BAAO,OAAO,SAAS;EACrC,GAAI;EALN,UAAA;GAOE,qBAAC,OAAD;IAAK,WAAWA,6BAAO;IAAvB,UAAA;KACE,oBAAC,OAAD;MAAK,WAAWA,6BAAO;MAAQ,UAAA;KAAW,CAAA;KAC1C,oBAAC,QAAD;MAAM,WAAWA,6BAAO;MAAO,eAAY;MACzC,UAAA,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA;KAClB,CAAA;KACN,oBAAC,OAAD;MAAK,WAAWA,6BAAO;MAAS,UAAA;KAAgB,CAAA;IAC7C;;GACJ,UACC,oBAAC,aAAD;IACE,SAAQ;IACR,UAAU,CAAC;IACX,SAAS;IACT,WAAWA,6BAAO;IAEjB,UAAA,cAAc,EAAE,cAAc;GACpB,CAAA,IACX;GACH;EACE;;AAET,CAAC"}
@@ -10,9 +10,9 @@ export interface CraftingTableProps extends HTMLAttributes<HTMLDivElement> {
10
10
  onCraft?: () => void;
11
11
  /** Enables the Craft button. @default true when a result exists */
12
12
  canCraft?: boolean;
13
- /** @default "Craft" */
13
+ /** @default locale `craftingTable.craft` ("Craft") */
14
14
  craftLabel?: string;
15
- /** Accessible name of the crafting area. @default "Crafting table" */
15
+ /** Accessible name of the crafting area. @default locale `craftingTable.label` ("Crafting table") */
16
16
  label?: string;
17
17
  }
18
18
  //# sourceMappingURL=CraftingTable.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CraftingTable.types.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/CraftingTable/CraftingTable.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxE,qDAAqD;IACrD,KAAK,EAAE,SAAS,CAAC;IACjB,qFAAqF;IACrF,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"CraftingTable.types.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/CraftingTable/CraftingTable.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,kBAAmB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACxE,qDAAqD;IACrD,KAAK,EAAE,SAAS,CAAC;IACjB,qFAAqF;IACrF,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qGAAqG;IACrG,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnchantingTable.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/EnchantingTable/EnchantingTable.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AASpE;;;GAGG;AACH,eAAO,MAAM,eAAe,iHAyF3B,CAAC"}
1
+ {"version":3,"file":"EnchantingTable.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/EnchantingTable/EnchantingTable.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAGpE;;;GAGG;AACH,eAAO,MAAM,eAAe,iHA6F3B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { cx } from "../../../utils/cx.js";
2
+ import { useBlockUIMessages } from "../../../provider/context.js";
2
3
  import { InventorySlot } from "../../inventory/InventorySlot/InventorySlot.js";
3
4
  import EnchantingTable_module_default from "./EnchantingTable.module.js";
4
5
  import { enchantBlocker, hasContent } from "./EnchantingTable.utils.js";
@@ -6,21 +7,22 @@ import { forwardRef } from "react";
6
7
  import { BookIcon, LapisIcon } from "@malilion/block-ui-icons";
7
8
  import { jsx, jsxs } from "react/jsx-runtime";
8
9
  //#region src/components/crafting/EnchantingTable/EnchantingTable.tsx
9
- var BLOCKER_TEXT = {
10
- level: "Not enough levels",
11
- lapis: "Not enough lapis",
12
- disabled: "Unavailable"
13
- };
14
10
  /**
15
11
  * Enchanting table: item and lapis slots beside three enchantment offers.
16
12
  * Offers the player cannot afford stay visible but disabled, with the reason.
17
13
  */
18
- var EnchantingTable = forwardRef(function EnchantingTable({ item, lapis, lapisCount, playerLevel, options = [], onEnchant, label = "Enchanting table", className, ...rest }, ref) {
14
+ var EnchantingTable = forwardRef(function EnchantingTable({ item, lapis, lapisCount, playerLevel, options = [], onEnchant, label, className, ...rest }, ref) {
15
+ const m = useBlockUIMessages();
16
+ const blockerText = {
17
+ level: m.enchantingTable.notEnoughLevels,
18
+ lapis: m.enchantingTable.notEnoughLapis,
19
+ disabled: m.enchantingTable.unavailable
20
+ };
19
21
  const hasItem = hasContent(item);
20
22
  return /* @__PURE__ */ jsxs("div", {
21
23
  ref,
22
24
  role: "group",
23
- "aria-label": label,
25
+ "aria-label": label ?? m.enchantingTable.label,
24
26
  className: cx(EnchantingTable_module_default.table, className),
25
27
  ...rest,
26
28
  children: [/* @__PURE__ */ jsxs("div", {
@@ -33,11 +35,11 @@ var EnchantingTable = forwardRef(function EnchantingTable({ item, lapis, lapisCo
33
35
  className: EnchantingTable_module_default.slots,
34
36
  children: [/* @__PURE__ */ jsx(InventorySlot, {
35
37
  size: "lg",
36
- label: hasItem ? void 0 : "Item: empty",
38
+ label: hasItem ? void 0 : m.common.emptyNamed(m.enchantingTable.item),
37
39
  children: item
38
40
  }), /* @__PURE__ */ jsx(InventorySlot, {
39
41
  size: "lg",
40
- label: hasContent(lapis) ? void 0 : "Lapis: empty",
42
+ label: hasContent(lapis) ? void 0 : m.common.emptyNamed(m.enchantingTable.lapis),
41
43
  className: EnchantingTable_module_default.lapisSlot,
42
44
  children: lapis ?? /* @__PURE__ */ jsx("span", {
43
45
  className: EnchantingTable_module_default.ghost,
@@ -48,14 +50,14 @@ var EnchantingTable = forwardRef(function EnchantingTable({ item, lapis, lapisCo
48
50
  })]
49
51
  }), /* @__PURE__ */ jsx("ul", {
50
52
  className: EnchantingTable_module_default.options,
51
- "aria-label": "Enchantments",
53
+ "aria-label": m.enchantingTable.enchantments,
52
54
  children: options.slice(0, 3).map((option) => {
53
55
  const blocker = enchantBlocker(option, {
54
56
  hasItem,
55
57
  playerLevel,
56
58
  lapisCount
57
59
  });
58
- const reason = blocker && blocker !== "noItem" ? BLOCKER_TEXT[blocker] : void 0;
60
+ const reason = blocker && blocker !== "noItem" ? blockerText[blocker] : void 0;
59
61
  return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("button", {
60
62
  type: "button",
61
63
  className: EnchantingTable_module_default.option,
@@ -80,11 +82,11 @@ var EnchantingTable = forwardRef(function EnchantingTable({ item, lapis, lapisCo
80
82
  }) : null,
81
83
  /* @__PURE__ */ jsx("span", {
82
84
  className: EnchantingTable_module_default.clue,
83
- children: hasItem ? option.clue ?? "Unknown enchantment" : "Place an item"
85
+ children: hasItem ? option.clue ?? m.enchantingTable.unknown : m.enchantingTable.placeItem
84
86
  }),
85
87
  /* @__PURE__ */ jsx("span", {
86
88
  className: "block-visually-hidden",
87
- children: `, level ${option.level}, ${option.lapisCost} lapis${reason ? `. ${reason}` : ""}`
89
+ children: m.enchantingTable.optionDetail(String(option.level), String(option.lapisCost)) + (reason ? `. ${reason}` : "")
88
90
  })
89
91
  ]
90
92
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"EnchantingTable.js","names":["styles"],"sources":["../../../../src/components/crafting/EnchantingTable/EnchantingTable.tsx"],"sourcesContent":["import { BookIcon, LapisIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { InventorySlot } from \"../../inventory/InventorySlot/InventorySlot\";\nimport styles from \"./EnchantingTable.module.css\";\nimport type { EnchantingTableProps } from \"./EnchantingTable.types\";\nimport { enchantBlocker, hasContent } from \"./EnchantingTable.utils\";\n\nconst BLOCKER_TEXT = {\n level: \"Not enough levels\",\n lapis: \"Not enough lapis\",\n disabled: \"Unavailable\",\n} as const;\n\n/**\n * Enchanting table: item and lapis slots beside three enchantment offers.\n * Offers the player cannot afford stay visible but disabled, with the reason.\n */\nexport const EnchantingTable = forwardRef<HTMLDivElement, EnchantingTableProps>(\n function EnchantingTable(\n {\n item,\n lapis,\n lapisCount,\n playerLevel,\n options = [],\n onEnchant,\n label = \"Enchanting table\",\n className,\n ...rest\n },\n ref,\n ) {\n const hasItem = hasContent(item);\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label}\n className={cx(styles.table, className)}\n {...rest}\n >\n <div className={styles.inputs}>\n <span className={styles.book} aria-hidden=\"true\">\n <BookIcon size={32} />\n </span>\n <div className={styles.slots}>\n <InventorySlot size=\"lg\" label={hasItem ? undefined : \"Item: empty\"}>\n {item}\n </InventorySlot>\n <InventorySlot\n size=\"lg\"\n label={hasContent(lapis) ? undefined : \"Lapis: empty\"}\n className={styles.lapisSlot}\n >\n {lapis ?? (\n <span className={styles.ghost} aria-hidden=\"true\">\n <LapisIcon size={32} />\n </span>\n )}\n </InventorySlot>\n </div>\n </div>\n <ul className={styles.options} aria-label=\"Enchantments\">\n {options.slice(0, 3).map((option) => {\n const blocker = enchantBlocker(option, { hasItem, playerLevel, lapisCount });\n const reason = blocker && blocker !== \"noItem\" ? BLOCKER_TEXT[blocker] : undefined;\n return (\n <li key={option.id}>\n <button\n type=\"button\"\n className={styles.option}\n aria-disabled={blocker ? true : undefined}\n data-blocker={blocker ?? undefined}\n onClick={() => {\n if (!blocker) onEnchant?.(option.id);\n }}\n >\n <span className={styles.cost} aria-hidden=\"true\">\n {Array.from({ length: Math.min(3, Math.max(1, option.lapisCost)) }, (_, i) => (\n <LapisIcon key={i} size={16} />\n ))}\n </span>\n <span className={styles.text}>\n {hasItem && option.runes ? (\n <span className={styles.runes} aria-hidden=\"true\">\n {option.runes}\n </span>\n ) : null}\n <span className={styles.clue}>\n {hasItem ? (option.clue ?? \"Unknown enchantment\") : \"Place an item\"}\n </span>\n <span className=\"block-visually-hidden\">\n {`, level ${option.level}, ${option.lapisCost} lapis${reason ? `. ${reason}` : \"\"}`}\n </span>\n </span>\n <span className={styles.level} aria-hidden=\"true\">\n {option.level}\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n },\n);\n"],"mappings":";;;;;;;;AAQA,IAAM,eAAe;CACnB,OAAO;CACP,OAAO;CACP,UAAU;AACZ;;;;;AAMA,IAAa,kBAAkB,WAC7B,SAAS,gBACP,EACE,MACA,OACA,YACA,aACA,UAAU,CAAC,GACX,WACA,QAAQ,oBACR,WACA,GAAG,QAEL,KACA;CACA,MAAM,UAAU,WAAW,IAAI;CAC/B,OACE,qBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAY;EACZ,WAAW,GAAGA,+BAAO,OAAO,SAAS;EACrC,GAAI;EALN,UAAA,CAOE,qBAAC,OAAD;GAAK,WAAWA,+BAAO;GAAvB,UAAA,CACE,oBAAC,QAAD;IAAM,WAAWA,+BAAO;IAAM,eAAY;IACxC,UAAA,oBAAC,UAAD,EAAU,MAAM,GAAK,CAAA;GACjB,CAAA,GACN,qBAAC,OAAD;IAAK,WAAWA,+BAAO;IAAvB,UAAA,CACE,oBAAC,eAAD;KAAe,MAAK;KAAK,OAAO,UAAU,KAAA,IAAY;KACnD,UAAA;IACY,CAAA,GACf,oBAAC,eAAD;KACE,MAAK;KACL,OAAO,WAAW,KAAK,IAAI,KAAA,IAAY;KACvC,WAAWA,+BAAO;KAEjB,UAAA,SACC,oBAAC,QAAD;MAAM,WAAWA,+BAAO;MAAO,eAAY;MACzC,UAAA,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA;KAClB,CAAA;IAEK,CAAA,CACZ;GACF,CAAA,CAAA;EACL,CAAA,GAAA,oBAAC,MAAD;GAAI,WAAWA,+BAAO;GAAS,cAAW;GACvC,UAAA,QAAQ,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW;IACnC,MAAM,UAAU,eAAe,QAAQ;KAAE;KAAS;KAAa;IAAW,CAAC;IAC3E,MAAM,SAAS,WAAW,YAAY,WAAW,aAAa,WAAW,KAAA;IACzE,OACE,oBAAC,MAAD,EAAA,UACE,qBAAC,UAAD;KACE,MAAK;KACL,WAAWA,+BAAO;KAClB,iBAAe,UAAU,OAAO,KAAA;KAChC,gBAAc,WAAW,KAAA;KACzB,eAAe;MACb,IAAI,CAAC,SAAS,YAAY,OAAO,EAAE;KACrC;KAPF,UAAA;MASE,oBAAC,QAAD;OAAM,WAAWA,+BAAO;OAAM,eAAY;OACvC,UAAA,MAAM,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,OAAO,SAAS,CAAC,EAAE,IAAI,GAAG,MACtE,oBAAC,WAAD,EAAmB,MAAM,GAAK,GAAd,CAAc,CAC/B;MACG,CAAA;MACN,qBAAC,QAAD;OAAM,WAAWA,+BAAO;OAAxB,UAAA;QACG,WAAW,OAAO,QACjB,oBAAC,QAAD;SAAM,WAAWA,+BAAO;SAAO,eAAY;SACxC,UAAA,OAAO;QACJ,CAAA,IACJ;QACJ,oBAAC,QAAD;SAAM,WAAWA,+BAAO;SACrB,UAAA,UAAW,OAAO,QAAQ,wBAAyB;QAChD,CAAA;QACN,oBAAC,QAAD;SAAM,WAAU;SACb,UAAA,WAAW,OAAO,MAAM,IAAI,OAAO,UAAU,QAAQ,SAAS,KAAK,WAAW;QAC3E,CAAA;OACF;;MACN,oBAAC,QAAD;OAAM,WAAWA,+BAAO;OAAO,eAAY;OACxC,UAAA,OAAO;MACJ,CAAA;KACA;IACN,CAAA,EAAA,GAhCK,OAAO,EAgCZ;GAER,CAAC;EACC,CAAA,CACD;;AAET,CACF"}
1
+ {"version":3,"file":"EnchantingTable.js","names":["styles"],"sources":["../../../../src/components/crafting/EnchantingTable/EnchantingTable.tsx"],"sourcesContent":["import { BookIcon, LapisIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\nimport { InventorySlot } from \"../../inventory/InventorySlot/InventorySlot\";\nimport styles from \"./EnchantingTable.module.css\";\nimport type { EnchantingTableProps } from \"./EnchantingTable.types\";\nimport { enchantBlocker, hasContent } from \"./EnchantingTable.utils\";\n\n/**\n * Enchanting table: item and lapis slots beside three enchantment offers.\n * Offers the player cannot afford stay visible but disabled, with the reason.\n */\nexport const EnchantingTable = forwardRef<HTMLDivElement, EnchantingTableProps>(\n function EnchantingTable(\n { item, lapis, lapisCount, playerLevel, options = [], onEnchant, label, className, ...rest },\n ref,\n ) {\n const m = useBlockUIMessages();\n const blockerText = {\n level: m.enchantingTable.notEnoughLevels,\n lapis: m.enchantingTable.notEnoughLapis,\n disabled: m.enchantingTable.unavailable,\n };\n const hasItem = hasContent(item);\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label ?? m.enchantingTable.label}\n className={cx(styles.table, className)}\n {...rest}\n >\n <div className={styles.inputs}>\n <span className={styles.book} aria-hidden=\"true\">\n <BookIcon size={32} />\n </span>\n <div className={styles.slots}>\n <InventorySlot\n size=\"lg\"\n label={hasItem ? undefined : m.common.emptyNamed(m.enchantingTable.item)}\n >\n {item}\n </InventorySlot>\n <InventorySlot\n size=\"lg\"\n label={hasContent(lapis) ? undefined : m.common.emptyNamed(m.enchantingTable.lapis)}\n className={styles.lapisSlot}\n >\n {lapis ?? (\n <span className={styles.ghost} aria-hidden=\"true\">\n <LapisIcon size={32} />\n </span>\n )}\n </InventorySlot>\n </div>\n </div>\n <ul className={styles.options} aria-label={m.enchantingTable.enchantments}>\n {options.slice(0, 3).map((option) => {\n const blocker = enchantBlocker(option, { hasItem, playerLevel, lapisCount });\n const reason = blocker && blocker !== \"noItem\" ? blockerText[blocker] : undefined;\n return (\n <li key={option.id}>\n <button\n type=\"button\"\n className={styles.option}\n aria-disabled={blocker ? true : undefined}\n data-blocker={blocker ?? undefined}\n onClick={() => {\n if (!blocker) onEnchant?.(option.id);\n }}\n >\n <span className={styles.cost} aria-hidden=\"true\">\n {Array.from({ length: Math.min(3, Math.max(1, option.lapisCost)) }, (_, i) => (\n <LapisIcon key={i} size={16} />\n ))}\n </span>\n <span className={styles.text}>\n {hasItem && option.runes ? (\n <span className={styles.runes} aria-hidden=\"true\">\n {option.runes}\n </span>\n ) : null}\n <span className={styles.clue}>\n {hasItem\n ? (option.clue ?? m.enchantingTable.unknown)\n : m.enchantingTable.placeItem}\n </span>\n <span className=\"block-visually-hidden\">\n {m.enchantingTable.optionDetail(\n String(option.level),\n String(option.lapisCost),\n ) + (reason ? `. ${reason}` : \"\")}\n </span>\n </span>\n <span className={styles.level} aria-hidden=\"true\">\n {option.level}\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n },\n);\n"],"mappings":"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"}
@@ -23,7 +23,7 @@ export interface EnchantingTableProps extends Omit<HTMLAttributes<HTMLDivElement
23
23
  /** Up to three offers, cheapest first. Hidden while there is no item. */
24
24
  options?: EnchantOption[];
25
25
  onEnchant?: (id: string) => void;
26
- /** Accessible name. @default "Enchanting table" */
26
+ /** Accessible name. @default locale `enchantingTable.label` ("Enchanting table") */
27
27
  label?: string;
28
28
  }
29
29
  //# sourceMappingURL=EnchantingTable.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EnchantingTable.types.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/EnchantingTable/EnchantingTable.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5F,uBAAuB;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"EnchantingTable.types.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/EnchantingTable/EnchantingTable.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5F,uBAAuB;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Furnace.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/Furnace/Furnace.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAWlE;;;GAGG;AACH,eAAO,MAAM,OAAO,yGAoFlB,CAAC"}
1
+ {"version":3,"file":"Furnace.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/Furnace/Furnace.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAGpD;;;GAGG;AACH,eAAO,MAAM,OAAO,yGA2FlB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { cx } from "../../../utils/cx.js";
2
+ import { useBlockUIMessages } from "../../../provider/context.js";
2
3
  import { clamp } from "../../../utils/number.js";
3
4
  import { InventorySlot } from "../../inventory/InventorySlot/InventorySlot.js";
4
5
  import { CraftingResult } from "../CraftingResult/CraftingResult.js";
@@ -8,18 +9,12 @@ import { forwardRef } from "react";
8
9
  import { ArrowIcon, FireIcon } from "@malilion/block-ui-icons";
9
10
  import { jsx, jsxs } from "react/jsx-runtime";
10
11
  //#region src/components/crafting/Furnace/Furnace.tsx
11
- var defaultLabels = {
12
- idle: "Idle",
13
- burning: "Burning",
14
- processing: "Smelting",
15
- complete: "Complete",
16
- noFuel: "No fuel"
17
- };
18
12
  /**
19
13
  * Furnace UI: input and fuel slots, a flame, a progress arrow and a result
20
14
  * slot. States: idle, burning, processing, complete, no fuel.
21
15
  */
22
- var Furnace = forwardRef(function Furnace({ input, fuel, result, progress = 0, burning = false, fuelLevel, state, onTakeResult, statusLabels, label = "Furnace", className, ...rest }, ref) {
16
+ var Furnace = forwardRef(function Furnace({ input, fuel, result, progress = 0, burning = false, fuelLevel, state, onTakeResult, statusLabels, label, className, ...rest }, ref) {
17
+ const m = useBlockUIMessages();
23
18
  const current = state ?? getFurnaceState({
24
19
  input,
25
20
  fuel,
@@ -30,14 +25,14 @@ var Furnace = forwardRef(function Furnace({ input, fuel, result, progress = 0, b
30
25
  const pct = clamp(progress, 0, 100);
31
26
  const flame = burning ? clamp(fuelLevel ?? 100, 0, 100) : 0;
32
27
  const labels = {
33
- ...defaultLabels,
28
+ ...m.furnace.status,
34
29
  ...statusLabels
35
30
  };
36
31
  const statusText = current === "processing" ? `${labels.processing} ${Math.round(pct)}%` : labels[current];
37
32
  return /* @__PURE__ */ jsxs("div", {
38
33
  ref,
39
34
  role: "group",
40
- "aria-label": label,
35
+ "aria-label": label ?? m.furnace.label,
41
36
  "data-state": current,
42
37
  className: cx(Furnace_module_default.furnace, className),
43
38
  style: {
@@ -53,10 +48,10 @@ var Furnace = forwardRef(function Furnace({ input, fuel, result, progress = 0, b
53
48
  children: [
54
49
  /* @__PURE__ */ jsx("div", {
55
50
  role: "group",
56
- "aria-label": "Input",
51
+ "aria-label": m.common.input,
57
52
  children: /* @__PURE__ */ jsx(InventorySlot, {
58
53
  size: "lg",
59
- label: isPresent(input) ? void 0 : "Input: empty",
54
+ label: isPresent(input) ? void 0 : m.common.emptyNamed(m.common.input),
60
55
  children: input
61
56
  })
62
57
  }),
@@ -74,10 +69,10 @@ var Furnace = forwardRef(function Furnace({ input, fuel, result, progress = 0, b
74
69
  }),
75
70
  /* @__PURE__ */ jsx("div", {
76
71
  role: "group",
77
- "aria-label": "Fuel",
72
+ "aria-label": m.common.fuel,
78
73
  children: /* @__PURE__ */ jsx(InventorySlot, {
79
74
  size: "lg",
80
- label: isPresent(fuel) ? void 0 : "Fuel: empty",
75
+ label: isPresent(fuel) ? void 0 : m.common.emptyNamed(m.common.fuel),
81
76
  children: fuel
82
77
  })
83
78
  })
@@ -85,7 +80,7 @@ var Furnace = forwardRef(function Furnace({ input, fuel, result, progress = 0, b
85
80
  }),
86
81
  /* @__PURE__ */ jsxs("div", {
87
82
  role: "progressbar",
88
- "aria-label": "Smelting progress",
83
+ "aria-label": m.furnace.progress,
89
84
  "aria-valuemin": 0,
90
85
  "aria-valuemax": 100,
91
86
  "aria-valuenow": Math.round(pct),
@@ -101,7 +96,7 @@ var Furnace = forwardRef(function Furnace({ input, fuel, result, progress = 0, b
101
96
  })]
102
97
  }),
103
98
  /* @__PURE__ */ jsx(CraftingResult, {
104
- label: "Result",
99
+ label: m.common.result,
105
100
  onTake: onTakeResult,
106
101
  children: result
107
102
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Furnace.js","names":["styles"],"sources":["../../../../src/components/crafting/Furnace/Furnace.tsx"],"sourcesContent":["import { ArrowIcon, FireIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { clamp } from \"../../../utils/number\";\nimport { InventorySlot } from \"../../inventory/InventorySlot/InventorySlot\";\nimport { CraftingResult } from \"../CraftingResult/CraftingResult\";\nimport styles from \"./Furnace.module.css\";\nimport type { FurnaceProps, FurnaceState } from \"./Furnace.types\";\nimport { getFurnaceState, isPresent } from \"./Furnace.utils\";\n\nconst defaultLabels: Record<FurnaceState, string> = {\n idle: \"Idle\",\n burning: \"Burning\",\n processing: \"Smelting\",\n complete: \"Complete\",\n noFuel: \"No fuel\",\n};\n\n/**\n * Furnace UI: input and fuel slots, a flame, a progress arrow and a result\n * slot. States: idle, burning, processing, complete, no fuel.\n */\nexport const Furnace = forwardRef<HTMLDivElement, FurnaceProps>(function Furnace(\n {\n input,\n fuel,\n result,\n progress = 0,\n burning = false,\n fuelLevel,\n state,\n onTakeResult,\n statusLabels,\n label = \"Furnace\",\n className,\n ...rest\n },\n ref,\n) {\n const current = state ?? getFurnaceState({ input, fuel, result, progress, burning });\n const pct = clamp(progress, 0, 100);\n const flame = burning ? clamp(fuelLevel ?? 100, 0, 100) : 0;\n const labels = { ...defaultLabels, ...statusLabels };\n const statusText =\n current === \"processing\" ? `${labels.processing} ${Math.round(pct)}%` : labels[current];\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label}\n data-state={current}\n className={cx(styles.furnace, className)}\n style={\n {\n \"--block-furnace-progress\": `${pct}%`,\n \"--block-furnace-flame\": `${flame}%`,\n } as CSSProperties\n }\n {...rest}\n >\n <div className={styles.layout}>\n <div className={styles.inputs}>\n <div role=\"group\" aria-label=\"Input\">\n <InventorySlot size=\"lg\" label={isPresent(input) ? undefined : \"Input: empty\"}>\n {input}\n </InventorySlot>\n </div>\n <span className={styles.flame} data-lit={burning || undefined} aria-hidden=\"true\">\n <span className={styles.flameBase}>\n <FireIcon size={32} />\n </span>\n <span className={styles.flameFill}>\n <FireIcon size={32} />\n </span>\n </span>\n <div role=\"group\" aria-label=\"Fuel\">\n <InventorySlot size=\"lg\" label={isPresent(fuel) ? undefined : \"Fuel: empty\"}>\n {fuel}\n </InventorySlot>\n </div>\n </div>\n <div\n role=\"progressbar\"\n aria-label=\"Smelting progress\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(pct)}\n className={styles.arrow}\n >\n <span className={styles.arrowBase} aria-hidden=\"true\">\n <ArrowIcon size={40} />\n </span>\n <span className={styles.arrowFill} aria-hidden=\"true\">\n <ArrowIcon size={40} />\n </span>\n </div>\n <CraftingResult label=\"Result\" onTake={onTakeResult}>\n {result}\n </CraftingResult>\n </div>\n <p className={styles.status} aria-live=\"polite\">\n {statusText}\n </p>\n </div>\n );\n});\n"],"mappings":";;;;;;;;;;AAUA,IAAM,gBAA8C;CAClD,MAAM;CACN,SAAS;CACT,YAAY;CACZ,UAAU;CACV,QAAQ;AACV;;;;;AAMA,IAAa,UAAU,WAAyC,SAAS,QACvE,EACE,OACA,MACA,QACA,WAAW,GACX,UAAU,OACV,WACA,OACA,cACA,cACA,QAAQ,WACR,WACA,GAAG,QAEL,KACA;CACA,MAAM,UAAU,SAAS,gBAAgB;EAAE;EAAO;EAAM;EAAQ;EAAU;CAAQ,CAAC;CACnF,MAAM,MAAM,MAAM,UAAU,GAAG,GAAG;CAClC,MAAM,QAAQ,UAAU,MAAM,aAAa,KAAK,GAAG,GAAG,IAAI;CAC1D,MAAM,SAAS;EAAE,GAAG;EAAe,GAAG;CAAa;CACnD,MAAM,aACJ,YAAY,eAAe,GAAG,OAAO,WAAW,GAAG,KAAK,MAAM,GAAG,EAAE,KAAK,OAAO;CAEjF,OACE,qBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAY;EACZ,cAAY;EACZ,WAAW,GAAGA,uBAAO,SAAS,SAAS;EACvC,OACE;GACE,4BAA4B,GAAG,IAAI;GACnC,yBAAyB,GAAG,MAAM;EACpC;EAEF,GAAI;EAZN,UAAA,CAcE,qBAAC,OAAD;GAAK,WAAWA,uBAAO;GAAvB,UAAA;IACE,qBAAC,OAAD;KAAK,WAAWA,uBAAO;KAAvB,UAAA;MACE,oBAAC,OAAD;OAAK,MAAK;OAAQ,cAAW;OAC3B,UAAA,oBAAC,eAAD;QAAe,MAAK;QAAK,OAAO,UAAU,KAAK,IAAI,KAAA,IAAY;QAC5D,UAAA;OACY,CAAA;MACZ,CAAA;MACL,qBAAC,QAAD;OAAM,WAAWA,uBAAO;OAAO,YAAU,WAAW,KAAA;OAAW,eAAY;OAA3E,UAAA,CACE,oBAAC,QAAD;QAAM,WAAWA,uBAAO;QACtB,UAAA,oBAAC,UAAD,EAAU,MAAM,GAAK,CAAA;OACjB,CAAA,GACN,oBAAC,QAAD;QAAM,WAAWA,uBAAO;QACtB,UAAA,oBAAC,UAAD,EAAU,MAAM,GAAK,CAAA;OACjB,CAAA,CACF;;MACN,oBAAC,OAAD;OAAK,MAAK;OAAQ,cAAW;OAC3B,UAAA,oBAAC,eAAD;QAAe,MAAK;QAAK,OAAO,UAAU,IAAI,IAAI,KAAA,IAAY;QAC3D,UAAA;OACY,CAAA;MACZ,CAAA;KACF;;IACL,qBAAC,OAAD;KACE,MAAK;KACL,cAAW;KACX,iBAAe;KACf,iBAAe;KACf,iBAAe,KAAK,MAAM,GAAG;KAC7B,WAAWA,uBAAO;KANpB,UAAA,CAQE,oBAAC,QAAD;MAAM,WAAWA,uBAAO;MAAW,eAAY;MAC7C,UAAA,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA;KAClB,CAAA,GACN,oBAAC,QAAD;MAAM,WAAWA,uBAAO;MAAW,eAAY;MAC7C,UAAA,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA;KAClB,CAAA,CACH;;IACL,oBAAC,gBAAD;KAAgB,OAAM;KAAS,QAAQ;KACpC,UAAA;IACa,CAAA;GACb;EACL,CAAA,GAAA,oBAAC,KAAD;GAAG,WAAWA,uBAAO;GAAQ,aAAU;GACpC,UAAA;EACA,CAAA,CACA;;AAET,CAAC"}
1
+ {"version":3,"file":"Furnace.js","names":["styles"],"sources":["../../../../src/components/crafting/Furnace/Furnace.tsx"],"sourcesContent":["import { ArrowIcon, FireIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef, type CSSProperties } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport { clamp } from \"../../../utils/number\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\nimport { InventorySlot } from \"../../inventory/InventorySlot/InventorySlot\";\nimport { CraftingResult } from \"../CraftingResult/CraftingResult\";\nimport styles from \"./Furnace.module.css\";\nimport type { FurnaceProps } from \"./Furnace.types\";\nimport { getFurnaceState, isPresent } from \"./Furnace.utils\";\n\n/**\n * Furnace UI: input and fuel slots, a flame, a progress arrow and a result\n * slot. States: idle, burning, processing, complete, no fuel.\n */\nexport const Furnace = forwardRef<HTMLDivElement, FurnaceProps>(function Furnace(\n {\n input,\n fuel,\n result,\n progress = 0,\n burning = false,\n fuelLevel,\n state,\n onTakeResult,\n statusLabels,\n label,\n className,\n ...rest\n },\n ref,\n) {\n const m = useBlockUIMessages();\n const current = state ?? getFurnaceState({ input, fuel, result, progress, burning });\n const pct = clamp(progress, 0, 100);\n const flame = burning ? clamp(fuelLevel ?? 100, 0, 100) : 0;\n const labels = { ...m.furnace.status, ...statusLabels };\n const statusText =\n current === \"processing\" ? `${labels.processing} ${Math.round(pct)}%` : labels[current];\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label ?? m.furnace.label}\n data-state={current}\n className={cx(styles.furnace, className)}\n style={\n {\n \"--block-furnace-progress\": `${pct}%`,\n \"--block-furnace-flame\": `${flame}%`,\n } as CSSProperties\n }\n {...rest}\n >\n <div className={styles.layout}>\n <div className={styles.inputs}>\n <div role=\"group\" aria-label={m.common.input}>\n <InventorySlot\n size=\"lg\"\n label={isPresent(input) ? undefined : m.common.emptyNamed(m.common.input)}\n >\n {input}\n </InventorySlot>\n </div>\n <span className={styles.flame} data-lit={burning || undefined} aria-hidden=\"true\">\n <span className={styles.flameBase}>\n <FireIcon size={32} />\n </span>\n <span className={styles.flameFill}>\n <FireIcon size={32} />\n </span>\n </span>\n <div role=\"group\" aria-label={m.common.fuel}>\n <InventorySlot\n size=\"lg\"\n label={isPresent(fuel) ? undefined : m.common.emptyNamed(m.common.fuel)}\n >\n {fuel}\n </InventorySlot>\n </div>\n </div>\n <div\n role=\"progressbar\"\n aria-label={m.furnace.progress}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuenow={Math.round(pct)}\n className={styles.arrow}\n >\n <span className={styles.arrowBase} aria-hidden=\"true\">\n <ArrowIcon size={40} />\n </span>\n <span className={styles.arrowFill} aria-hidden=\"true\">\n <ArrowIcon size={40} />\n </span>\n </div>\n <CraftingResult label={m.common.result} onTake={onTakeResult}>\n {result}\n </CraftingResult>\n </div>\n <p className={styles.status} aria-live=\"polite\">\n {statusText}\n </p>\n </div>\n );\n});\n"],"mappings":";;;;;;;;;;;;;;;AAeA,IAAa,UAAU,WAAyC,SAAS,QACvE,EACE,OACA,MACA,QACA,WAAW,GACX,UAAU,OACV,WACA,OACA,cACA,cACA,OACA,WACA,GAAG,QAEL,KACA;CACA,MAAM,IAAI,mBAAmB;CAC7B,MAAM,UAAU,SAAS,gBAAgB;EAAE;EAAO;EAAM;EAAQ;EAAU;CAAQ,CAAC;CACnF,MAAM,MAAM,MAAM,UAAU,GAAG,GAAG;CAClC,MAAM,QAAQ,UAAU,MAAM,aAAa,KAAK,GAAG,GAAG,IAAI;CAC1D,MAAM,SAAS;EAAE,GAAG,EAAE,QAAQ;EAAQ,GAAG;CAAa;CACtD,MAAM,aACJ,YAAY,eAAe,GAAG,OAAO,WAAW,GAAG,KAAK,MAAM,GAAG,EAAE,KAAK,OAAO;CAEjF,OACE,qBAAC,OAAD;EACO;EACL,MAAK;EACL,cAAY,SAAS,EAAE,QAAQ;EAC/B,cAAY;EACZ,WAAW,GAAGA,uBAAO,SAAS,SAAS;EACvC,OACE;GACE,4BAA4B,GAAG,IAAI;GACnC,yBAAyB,GAAG,MAAM;EACpC;EAEF,GAAI;EAZN,UAAA,CAcE,qBAAC,OAAD;GAAK,WAAWA,uBAAO;GAAvB,UAAA;IACE,qBAAC,OAAD;KAAK,WAAWA,uBAAO;KAAvB,UAAA;MACE,oBAAC,OAAD;OAAK,MAAK;OAAQ,cAAY,EAAE,OAAO;OACrC,UAAA,oBAAC,eAAD;QACE,MAAK;QACL,OAAO,UAAU,KAAK,IAAI,KAAA,IAAY,EAAE,OAAO,WAAW,EAAE,OAAO,KAAK;QAEvE,UAAA;OACY,CAAA;MACZ,CAAA;MACL,qBAAC,QAAD;OAAM,WAAWA,uBAAO;OAAO,YAAU,WAAW,KAAA;OAAW,eAAY;OAA3E,UAAA,CACE,oBAAC,QAAD;QAAM,WAAWA,uBAAO;QACtB,UAAA,oBAAC,UAAD,EAAU,MAAM,GAAK,CAAA;OACjB,CAAA,GACN,oBAAC,QAAD;QAAM,WAAWA,uBAAO;QACtB,UAAA,oBAAC,UAAD,EAAU,MAAM,GAAK,CAAA;OACjB,CAAA,CACF;;MACN,oBAAC,OAAD;OAAK,MAAK;OAAQ,cAAY,EAAE,OAAO;OACrC,UAAA,oBAAC,eAAD;QACE,MAAK;QACL,OAAO,UAAU,IAAI,IAAI,KAAA,IAAY,EAAE,OAAO,WAAW,EAAE,OAAO,IAAI;QAErE,UAAA;OACY,CAAA;MACZ,CAAA;KACF;;IACL,qBAAC,OAAD;KACE,MAAK;KACL,cAAY,EAAE,QAAQ;KACtB,iBAAe;KACf,iBAAe;KACf,iBAAe,KAAK,MAAM,GAAG;KAC7B,WAAWA,uBAAO;KANpB,UAAA,CAQE,oBAAC,QAAD;MAAM,WAAWA,uBAAO;MAAW,eAAY;MAC7C,UAAA,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA;KAClB,CAAA,GACN,oBAAC,QAAD;MAAM,WAAWA,uBAAO;MAAW,eAAY;MAC7C,UAAA,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA;KAClB,CAAA,CACH;;IACL,oBAAC,gBAAD;KAAgB,OAAO,EAAE,OAAO;KAAQ,QAAQ;KAC7C,UAAA;IACa,CAAA;GACb;EACL,CAAA,GAAA,oBAAC,KAAD;GAAG,WAAWA,uBAAO;GAAQ,aAAU;GACpC,UAAA;EACA,CAAA,CACA;;AAET,CAAC"}
@@ -20,7 +20,7 @@ export interface FurnaceProps extends HTMLAttributes<HTMLDivElement> {
20
20
  onTakeResult?: () => void;
21
21
  /** Override status texts. */
22
22
  statusLabels?: Partial<Record<FurnaceState, string>>;
23
- /** Accessible name. @default "Furnace" */
23
+ /** Accessible name. @default locale `furnace.label` ("Furnace") */
24
24
  label?: string;
25
25
  }
26
26
  //# sourceMappingURL=Furnace.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Furnace.types.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/Furnace/Furnace.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,eAAO,MAAM,aAAa,kEAAmE,CAAC;AAE9F,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,cAAc,CAAC;IAClE,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,iBAAiB;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sBAAsB;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,6BAA6B;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"Furnace.types.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/Furnace/Furnace.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,eAAO,MAAM,aAAa,kEAAmE,CAAC;AAE9F,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,cAAc,CAAC;IAClE,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,iBAAiB;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,sBAAsB;IACtB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,6BAA6B;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Furnace.types.js","names":[],"sources":["../../../../src/components/crafting/Furnace/Furnace.types.ts"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\n\nexport const furnaceStates = [\"idle\", \"burning\", \"processing\", \"complete\", \"noFuel\"] as const;\n\nexport type FurnaceState = (typeof furnaceStates)[number];\n\nexport interface FurnaceProps extends HTMLAttributes<HTMLDivElement> {\n /** Item being smelted. */\n input?: ReactNode;\n /** Fuel item. */\n fuel?: ReactNode;\n /** Smelted output. */\n result?: ReactNode;\n /** Smelting progress 0–100. @default 0 */\n progress?: number;\n /** Whether the fire is lit. */\n burning?: boolean;\n /** Remaining fuel 0–100 (flame height). @default 100 while burning */\n fuelLevel?: number;\n /** Override the derived state. */\n state?: FurnaceState;\n /** Called when the result is taken. */\n onTakeResult?: () => void;\n /** Override status texts. */\n statusLabels?: Partial<Record<FurnaceState, string>>;\n /** Accessible name. @default \"Furnace\" */\n label?: string;\n}\n"],"mappings":";AAEA,IAAa,gBAAgB;CAAC;CAAQ;CAAW;CAAc;CAAY;AAAQ"}
1
+ {"version":3,"file":"Furnace.types.js","names":[],"sources":["../../../../src/components/crafting/Furnace/Furnace.types.ts"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\n\nexport const furnaceStates = [\"idle\", \"burning\", \"processing\", \"complete\", \"noFuel\"] as const;\n\nexport type FurnaceState = (typeof furnaceStates)[number];\n\nexport interface FurnaceProps extends HTMLAttributes<HTMLDivElement> {\n /** Item being smelted. */\n input?: ReactNode;\n /** Fuel item. */\n fuel?: ReactNode;\n /** Smelted output. */\n result?: ReactNode;\n /** Smelting progress 0–100. @default 0 */\n progress?: number;\n /** Whether the fire is lit. */\n burning?: boolean;\n /** Remaining fuel 0–100 (flame height). @default 100 while burning */\n fuelLevel?: number;\n /** Override the derived state. */\n state?: FurnaceState;\n /** Called when the result is taken. */\n onTakeResult?: () => void;\n /** Override status texts. */\n statusLabels?: Partial<Record<FurnaceState, string>>;\n /** Accessible name. @default locale `furnace.label` (\"Furnace\") */\n label?: string;\n}\n"],"mappings":";AAEA,IAAa,gBAAgB;CAAC;CAAQ;CAAW;CAAc;CAAY;AAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"RecipeBook.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/RecipeBook/RecipeBook.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D;;;GAGG;AACH,eAAO,MAAM,UAAU,4GAoIrB,CAAC"}
1
+ {"version":3,"file":"RecipeBook.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/RecipeBook/RecipeBook.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D;;;GAGG;AACH,eAAO,MAAM,UAAU,4GA8IrB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { cx } from "../../../utils/cx.js";
2
+ import { useBlockUIMessages } from "../../../provider/context.js";
2
3
  import { BlockButton } from "../../actions/BlockButton/BlockButton.js";
3
4
  import { BlockInput } from "../../forms/BlockInput/BlockInput.js";
4
5
  import { useControllableState } from "../../../hooks/useControllableState.js";
@@ -14,7 +15,8 @@ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
14
15
  * Recipe book: search, category filters and a "craftable only" switch over a
15
16
  * grid of recipes, with the selected recipe's 3 × 3 pattern and result.
16
17
  */
17
- var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, defaultValue, onValueChange, onCraft, defaultCraftableOnly = false, label = "Recipe book", className, ...rest }, ref) {
18
+ var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, defaultValue, onValueChange, onCraft, defaultCraftableOnly = false, label, className, ...rest }, ref) {
19
+ const m = useBlockUIMessages();
18
20
  const titleId = useId();
19
21
  const [query, setQuery] = useState("");
20
22
  const [category, setCategory] = useState("all");
@@ -26,7 +28,7 @@ var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, de
26
28
  });
27
29
  const filters = [{
28
30
  id: "all",
29
- label: "All"
31
+ label: m.recipeBook.all
30
32
  }, ...categories ?? deriveCategories(recipes)];
31
33
  const visible = filterRecipes(recipes, {
32
34
  query,
@@ -38,7 +40,7 @@ var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, de
38
40
  return /* @__PURE__ */ jsxs("div", {
39
41
  ref,
40
42
  role: "group",
41
- "aria-label": label,
43
+ "aria-label": label ?? m.recipeBook.label,
42
44
  className: cx(RecipeBook_module_default.book, className),
43
45
  ...rest,
44
46
  children: [/* @__PURE__ */ jsxs("div", {
@@ -46,7 +48,7 @@ var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, de
46
48
  children: [
47
49
  /* @__PURE__ */ jsx(BlockInput, {
48
50
  type: "search",
49
- label: "Search recipes",
51
+ label: m.recipeBook.search,
50
52
  value: query,
51
53
  onChange: (event) => setQuery(event.target.value),
52
54
  startIcon: /* @__PURE__ */ jsx(SearchIcon, { size: 16 })
@@ -55,7 +57,7 @@ var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, de
55
57
  className: RecipeBook_module_default.filters,
56
58
  children: [/* @__PURE__ */ jsx("div", {
57
59
  role: "group",
58
- "aria-label": "Categories",
60
+ "aria-label": m.recipeBook.categories,
59
61
  className: RecipeBook_module_default.categories,
60
62
  children: filters.map((filter) => /* @__PURE__ */ jsxs("button", {
61
63
  type: "button",
@@ -70,7 +72,7 @@ var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, de
70
72
  }, filter.id))
71
73
  }), /* @__PURE__ */ jsx(BlockToggle, {
72
74
  size: "sm",
73
- label: "Craftable only",
75
+ label: m.recipeBook.craftableOnly,
74
76
  checked: craftableOnly,
75
77
  onCheckedChange: setCraftableOnly
76
78
  })]
@@ -78,15 +80,15 @@ var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, de
78
80
  /* @__PURE__ */ jsx("p", {
79
81
  className: RecipeBook_module_default.count,
80
82
  role: "status",
81
- children: visible.length === 1 ? "1 recipe" : `${visible.length} recipes`
83
+ children: m.recipeBook.count(visible.length)
82
84
  }),
83
85
  visible.length > 0 ? /* @__PURE__ */ jsx("ul", {
84
86
  className: RecipeBook_module_default.grid,
85
- "aria-label": "Recipes",
87
+ "aria-label": m.recipeBook.recipes,
86
88
  children: visible.map((recipe) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(InventorySlot, {
87
89
  size: "md",
88
90
  selected: recipe.id === selectedId,
89
- label: recipe.craftable === false ? `${recipe.name} (missing ingredients)` : recipe.name,
91
+ label: recipe.craftable === false ? m.recipeBook.missingSuffix(recipe.name) : recipe.name,
90
92
  "data-craftable": recipe.craftable === false ? "false" : void 0,
91
93
  className: RecipeBook_module_default.recipe,
92
94
  onClick: () => setSelectedId(recipe.id),
@@ -94,7 +96,7 @@ var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, de
94
96
  }) }, recipe.id))
95
97
  }) : /* @__PURE__ */ jsx("p", {
96
98
  className: RecipeBook_module_default.empty,
97
- children: "No recipes match."
99
+ children: m.recipeBook.noMatch
98
100
  })
99
101
  ]
100
102
  }), /* @__PURE__ */ jsxs("section", {
@@ -103,14 +105,14 @@ var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, de
103
105
  children: [/* @__PURE__ */ jsx("h3", {
104
106
  id: titleId,
105
107
  className: RecipeBook_module_default.title,
106
- children: selected ? selected.name : "Select a recipe"
108
+ children: selected ? selected.name : m.recipeBook.selectRecipe
107
109
  }), selected ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
108
110
  /* @__PURE__ */ jsxs("div", {
109
111
  className: RecipeBook_module_default.preview,
110
112
  children: [
111
113
  /* @__PURE__ */ jsx("div", {
112
114
  role: "group",
113
- "aria-label": "Pattern",
115
+ "aria-label": m.recipeBook.pattern,
114
116
  className: RecipeBook_module_default.pattern,
115
117
  children: pattern.map((cell, index) => /* @__PURE__ */ jsx(InventorySlot, {
116
118
  size: "sm",
@@ -124,20 +126,20 @@ var RecipeBook = forwardRef(function RecipeBook({ recipes, categories, value, de
124
126
  }),
125
127
  /* @__PURE__ */ jsx(InventorySlot, {
126
128
  size: "lg",
127
- label: `Makes ${selected.name}`,
129
+ label: m.recipeBook.makes(selected.name),
128
130
  children: selected.result
129
131
  })
130
132
  ]
131
133
  }),
132
134
  selected.craftable === false ? /* @__PURE__ */ jsx("p", {
133
135
  className: RecipeBook_module_default.missing,
134
- children: "Missing ingredients"
136
+ children: m.recipeBook.missingIngredients
135
137
  }) : null,
136
138
  onCraft ? /* @__PURE__ */ jsx(BlockButton, {
137
139
  variant: "grass",
138
140
  disabled: selected.craftable === false,
139
141
  onClick: () => onCraft(selected.id),
140
- children: "Craft"
142
+ children: m.recipeBook.craft
141
143
  }) : null
142
144
  ] }) : null]
143
145
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"RecipeBook.js","names":["styles","_Fragment"],"sources":["../../../../src/components/crafting/RecipeBook/RecipeBook.tsx"],"sourcesContent":["import { ArrowIcon, SearchIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef, useId, useState } from \"react\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport { cx } from \"../../../utils/cx\";\nimport { BlockButton } from \"../../actions/BlockButton/BlockButton\";\nimport { BlockInput } from \"../../forms/BlockInput/BlockInput\";\nimport { BlockToggle } from \"../../forms/BlockToggle/BlockToggle\";\nimport { InventorySlot } from \"../../inventory/InventorySlot/InventorySlot\";\nimport styles from \"./RecipeBook.module.css\";\nimport type { RecipeBookProps } from \"./RecipeBook.types\";\nimport { ALL, deriveCategories, filterRecipes } from \"./RecipeBook.utils\";\n\n/**\n * Recipe book: search, category filters and a \"craftable only\" switch over a\n * grid of recipes, with the selected recipe's 3 × 3 pattern and result.\n */\nexport const RecipeBook = forwardRef<HTMLDivElement, RecipeBookProps>(function RecipeBook(\n {\n recipes,\n categories,\n value,\n defaultValue,\n onValueChange,\n onCraft,\n defaultCraftableOnly = false,\n label = \"Recipe book\",\n className,\n ...rest\n },\n ref,\n) {\n const titleId = useId();\n const [query, setQuery] = useState(\"\");\n const [category, setCategory] = useState(ALL);\n const [craftableOnly, setCraftableOnly] = useState(defaultCraftableOnly);\n const [selectedId, setSelectedId] = useControllableState({\n value,\n defaultValue: defaultValue ?? \"\",\n onChange: onValueChange,\n });\n\n const filters = [{ id: ALL, label: \"All\" }, ...(categories ?? deriveCategories(recipes))];\n const visible = filterRecipes(recipes, { query, category, craftableOnly });\n const selected = recipes.find((recipe) => recipe.id === selectedId);\n const pattern = Array.from({ length: 9 }, (_, i) => selected?.ingredients?.[i] ?? null);\n\n return (\n <div ref={ref} role=\"group\" aria-label={label} className={cx(styles.book, className)} {...rest}>\n <div className={styles.browser}>\n <BlockInput\n type=\"search\"\n label=\"Search recipes\"\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n startIcon={<SearchIcon size={16} />}\n />\n <div className={styles.filters}>\n <div role=\"group\" aria-label=\"Categories\" className={styles.categories}>\n {filters.map((filter) => (\n <button\n key={filter.id}\n type=\"button\"\n aria-pressed={category === filter.id}\n className={styles.category}\n onClick={() => setCategory(filter.id)}\n >\n {\"icon\" in filter && filter.icon ? (\n <span className={styles.categoryIcon} aria-hidden=\"true\">\n {filter.icon}\n </span>\n ) : null}\n {filter.label}\n </button>\n ))}\n </div>\n <BlockToggle\n size=\"sm\"\n label=\"Craftable only\"\n checked={craftableOnly}\n onCheckedChange={setCraftableOnly}\n />\n </div>\n <p className={styles.count} role=\"status\">\n {visible.length === 1 ? \"1 recipe\" : `${visible.length} recipes`}\n </p>\n {visible.length > 0 ? (\n <ul className={styles.grid} aria-label=\"Recipes\">\n {visible.map((recipe) => (\n <li key={recipe.id}>\n <InventorySlot\n size=\"md\"\n selected={recipe.id === selectedId}\n label={\n recipe.craftable === false\n ? `${recipe.name} (missing ingredients)`\n : recipe.name\n }\n data-craftable={recipe.craftable === false ? \"false\" : undefined}\n className={styles.recipe}\n onClick={() => setSelectedId(recipe.id)}\n >\n {recipe.result}\n </InventorySlot>\n </li>\n ))}\n </ul>\n ) : (\n <p className={styles.empty}>No recipes match.</p>\n )}\n </div>\n <section className={styles.detail} aria-labelledby={titleId}>\n <h3 id={titleId} className={styles.title}>\n {selected ? selected.name : \"Select a recipe\"}\n </h3>\n {selected ? (\n <>\n <div className={styles.preview}>\n <div role=\"group\" aria-label=\"Pattern\" className={styles.pattern}>\n {pattern.map((cell, index) => (\n <InventorySlot key={index} size=\"sm\">\n {cell}\n </InventorySlot>\n ))}\n </div>\n <span className={styles.arrow} aria-hidden=\"true\">\n <ArrowIcon size={24} />\n </span>\n <InventorySlot size=\"lg\" label={`Makes ${selected.name}`}>\n {selected.result}\n </InventorySlot>\n </div>\n {selected.craftable === false ? (\n <p className={styles.missing}>Missing ingredients</p>\n ) : null}\n {onCraft ? (\n <BlockButton\n variant=\"grass\"\n disabled={selected.craftable === false}\n onClick={() => onCraft(selected.id)}\n >\n Craft\n </BlockButton>\n ) : null}\n </>\n ) : null}\n </section>\n </div>\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"RecipeBook.js","names":["styles","_Fragment"],"sources":["../../../../src/components/crafting/RecipeBook/RecipeBook.tsx"],"sourcesContent":["import { ArrowIcon, SearchIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef, useId, useState } from \"react\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\nimport { cx } from \"../../../utils/cx\";\nimport { BlockButton } from \"../../actions/BlockButton/BlockButton\";\nimport { BlockInput } from \"../../forms/BlockInput/BlockInput\";\nimport { BlockToggle } from \"../../forms/BlockToggle/BlockToggle\";\nimport { InventorySlot } from \"../../inventory/InventorySlot/InventorySlot\";\nimport styles from \"./RecipeBook.module.css\";\nimport type { RecipeBookProps } from \"./RecipeBook.types\";\nimport { ALL, deriveCategories, filterRecipes } from \"./RecipeBook.utils\";\n\n/**\n * Recipe book: search, category filters and a \"craftable only\" switch over a\n * grid of recipes, with the selected recipe's 3 × 3 pattern and result.\n */\nexport const RecipeBook = forwardRef<HTMLDivElement, RecipeBookProps>(function RecipeBook(\n {\n recipes,\n categories,\n value,\n defaultValue,\n onValueChange,\n onCraft,\n defaultCraftableOnly = false,\n label,\n className,\n ...rest\n },\n ref,\n) {\n const m = useBlockUIMessages();\n const titleId = useId();\n const [query, setQuery] = useState(\"\");\n const [category, setCategory] = useState(ALL);\n const [craftableOnly, setCraftableOnly] = useState(defaultCraftableOnly);\n const [selectedId, setSelectedId] = useControllableState({\n value,\n defaultValue: defaultValue ?? \"\",\n onChange: onValueChange,\n });\n\n const filters = [\n { id: ALL, label: m.recipeBook.all },\n ...(categories ?? deriveCategories(recipes)),\n ];\n const visible = filterRecipes(recipes, { query, category, craftableOnly });\n const selected = recipes.find((recipe) => recipe.id === selectedId);\n const pattern = Array.from({ length: 9 }, (_, i) => selected?.ingredients?.[i] ?? null);\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={label ?? m.recipeBook.label}\n className={cx(styles.book, className)}\n {...rest}\n >\n <div className={styles.browser}>\n <BlockInput\n type=\"search\"\n label={m.recipeBook.search}\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n startIcon={<SearchIcon size={16} />}\n />\n <div className={styles.filters}>\n <div role=\"group\" aria-label={m.recipeBook.categories} className={styles.categories}>\n {filters.map((filter) => (\n <button\n key={filter.id}\n type=\"button\"\n aria-pressed={category === filter.id}\n className={styles.category}\n onClick={() => setCategory(filter.id)}\n >\n {\"icon\" in filter && filter.icon ? (\n <span className={styles.categoryIcon} aria-hidden=\"true\">\n {filter.icon}\n </span>\n ) : null}\n {filter.label}\n </button>\n ))}\n </div>\n <BlockToggle\n size=\"sm\"\n label={m.recipeBook.craftableOnly}\n checked={craftableOnly}\n onCheckedChange={setCraftableOnly}\n />\n </div>\n <p className={styles.count} role=\"status\">\n {m.recipeBook.count(visible.length)}\n </p>\n {visible.length > 0 ? (\n <ul className={styles.grid} aria-label={m.recipeBook.recipes}>\n {visible.map((recipe) => (\n <li key={recipe.id}>\n <InventorySlot\n size=\"md\"\n selected={recipe.id === selectedId}\n label={\n recipe.craftable === false\n ? m.recipeBook.missingSuffix(recipe.name)\n : recipe.name\n }\n data-craftable={recipe.craftable === false ? \"false\" : undefined}\n className={styles.recipe}\n onClick={() => setSelectedId(recipe.id)}\n >\n {recipe.result}\n </InventorySlot>\n </li>\n ))}\n </ul>\n ) : (\n <p className={styles.empty}>{m.recipeBook.noMatch}</p>\n )}\n </div>\n <section className={styles.detail} aria-labelledby={titleId}>\n <h3 id={titleId} className={styles.title}>\n {selected ? selected.name : m.recipeBook.selectRecipe}\n </h3>\n {selected ? (\n <>\n <div className={styles.preview}>\n <div role=\"group\" aria-label={m.recipeBook.pattern} className={styles.pattern}>\n {pattern.map((cell, index) => (\n <InventorySlot key={index} size=\"sm\">\n {cell}\n </InventorySlot>\n ))}\n </div>\n <span className={styles.arrow} aria-hidden=\"true\">\n <ArrowIcon size={24} />\n </span>\n <InventorySlot size=\"lg\" label={m.recipeBook.makes(selected.name)}>\n {selected.result}\n </InventorySlot>\n </div>\n {selected.craftable === false ? (\n <p className={styles.missing}>{m.recipeBook.missingIngredients}</p>\n ) : null}\n {onCraft ? (\n <BlockButton\n variant=\"grass\"\n disabled={selected.craftable === false}\n onClick={() => onCraft(selected.id)}\n >\n {m.recipeBook.craft}\n </BlockButton>\n ) : null}\n </>\n ) : null}\n </section>\n </div>\n );\n});\n"],"mappings":"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"}
@@ -30,7 +30,7 @@ export interface RecipeBookProps extends Omit<HTMLAttributes<HTMLDivElement>, "d
30
30
  onCraft?: (id: string) => void;
31
31
  /** Start with "Craftable only" switched on. */
32
32
  defaultCraftableOnly?: boolean;
33
- /** Accessible name. @default "Recipe book" */
33
+ /** Accessible name. @default locale `recipeBook.label` ("Recipe book") */
34
34
  label?: string;
35
35
  }
36
36
  //# sourceMappingURL=RecipeBook.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RecipeBook.types.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/RecipeBook/RecipeBook.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,MAAM,EAAE,SAAS,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACtC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IAC3F,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,sDAAsD;IACtD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,+CAA+C;IAC/C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"RecipeBook.types.d.ts","sourceRoot":"","sources":["../../../../src/components/crafting/RecipeBook/RecipeBook.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,MAAM,EAAE,SAAS,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACtC,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IAC3F,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8FAA8F;IAC9F,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,sDAAsD;IACtD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,+CAA+C;IAC/C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}