@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,11 +1,15 @@
1
+ import { enMessages } from "../../../locale/messages.js";
1
2
  import { formatNumber } from "../../../utils/number.js";
2
3
  //#region src/components/inventory/ItemStack/ItemStack.utils.ts
3
4
  /** Accessible description of a stack, e.g. "Diamond Pickaxe, durability 126 of 1,561". */
4
- function describeItemStack({ name, amount, durability, maxDurability }) {
5
+ function describeItemStack({ name, amount, durability, maxDurability }, messages = enMessages) {
5
6
  const parts = [];
6
7
  if (name) parts.push(name);
7
8
  if (amount !== void 0 && amount > 1) parts.push(`× ${formatNumber(amount)}`);
8
- if (durability !== void 0 && maxDurability !== void 0) parts.push(`durability ${formatNumber(durability)} of ${formatNumber(maxDurability)}`);
9
+ if (durability !== void 0 && maxDurability !== void 0) {
10
+ const m = typeof messages === "object" && messages !== null ? messages : enMessages;
11
+ parts.push(m.durability.value(formatNumber(durability), formatNumber(maxDurability)));
12
+ }
9
13
  return parts.join(", ");
10
14
  }
11
15
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"ItemStack.utils.js","names":[],"sources":["../../../../src/components/inventory/ItemStack/ItemStack.utils.ts"],"sourcesContent":["import { formatNumber } from \"../../../utils/number\";\nimport type { ItemStackProps } from \"./ItemStack.types\";\n\n/** Accessible description of a stack, e.g. \"Diamond Pickaxe, durability 126 of 1,561\". */\nexport function describeItemStack({\n name,\n amount,\n durability,\n maxDurability,\n}: Pick<ItemStackProps, \"name\" | \"amount\" | \"durability\" | \"maxDurability\">): string {\n const parts: string[] = [];\n if (name) parts.push(name);\n if (amount !== undefined && amount > 1) parts.push(`× ${formatNumber(amount)}`);\n if (durability !== undefined && maxDurability !== undefined) {\n parts.push(`durability ${formatNumber(durability)} of ${formatNumber(maxDurability)}`);\n }\n return parts.join(\", \");\n}\n"],"mappings":";;;AAIA,SAAgB,kBAAkB,EAChC,MACA,QACA,YACA,iBACmF;CACnF,MAAM,QAAkB,CAAC;CACzB,IAAI,MAAM,MAAM,KAAK,IAAI;CACzB,IAAI,WAAW,KAAA,KAAa,SAAS,GAAG,MAAM,KAAK,KAAK,aAAa,MAAM,GAAG;CAC9E,IAAI,eAAe,KAAA,KAAa,kBAAkB,KAAA,GAChD,MAAM,KAAK,cAAc,aAAa,UAAU,EAAE,MAAM,aAAa,aAAa,GAAG;CAEvF,OAAO,MAAM,KAAK,IAAI;AACxB"}
1
+ {"version":3,"file":"ItemStack.utils.js","names":[],"sources":["../../../../src/components/inventory/ItemStack/ItemStack.utils.ts"],"sourcesContent":["import { enMessages, type BlockUIMessages } from \"../../../locale/messages\";\nimport { formatNumber } from \"../../../utils/number\";\nimport type { ItemStackProps } from \"./ItemStack.types\";\n\n/** Accessible description of a stack, e.g. \"Diamond Pickaxe, durability 126 of 1,561\". */\nexport function describeItemStack(\n {\n name,\n amount,\n durability,\n maxDurability,\n }: Pick<ItemStackProps, \"name\" | \"amount\" | \"durability\" | \"maxDurability\">,\n messages: BlockUIMessages = enMessages,\n): string {\n const parts: string[] = [];\n if (name) parts.push(name);\n if (amount !== undefined && amount > 1) parts.push(`× ${formatNumber(amount)}`);\n if (durability !== undefined && maxDurability !== undefined) {\n const m = typeof messages === \"object\" && messages !== null ? messages : enMessages;\n parts.push(m.durability.value(formatNumber(durability), formatNumber(maxDurability)));\n }\n return parts.join(\", \");\n}\n"],"mappings":";;;;AAKA,SAAgB,kBACd,EACE,MACA,QACA,YACA,iBAEF,WAA4B,YACpB;CACR,MAAM,QAAkB,CAAC;CACzB,IAAI,MAAM,MAAM,KAAK,IAAI;CACzB,IAAI,WAAW,KAAA,KAAa,SAAS,GAAG,MAAM,KAAK,KAAK,aAAa,MAAM,GAAG;CAC9E,IAAI,eAAe,KAAA,KAAa,kBAAkB,KAAA,GAAW;EAC3D,MAAM,IAAI,OAAO,aAAa,YAAY,aAAa,OAAO,WAAW;EACzE,MAAM,KAAK,EAAE,WAAW,MAAM,aAAa,UAAU,GAAG,aAAa,aAAa,CAAC,CAAC;CACtF;CACA,OAAO,MAAM,KAAK,IAAI;AACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ItemTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/inventory/ItemTooltip/ItemTooltip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D;;;GAGG;AACH,eAAO,MAAM,WAAW,6GAoCtB,CAAC"}
1
+ {"version":3,"file":"ItemTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/inventory/ItemTooltip/ItemTooltip.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI5D;;;GAGG;AACH,eAAO,MAAM,WAAW,6GAuCtB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { cx } from "../../../utils/cx.js";
2
+ import { useBlockUIMessages } from "../../../provider/context.js";
2
3
  import ItemTooltip_module_default from "./ItemTooltip.module.js";
3
4
  import { normalizeRarity } from "./ItemTooltip.utils.js";
4
5
  import { forwardRef } from "react";
@@ -9,6 +10,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
9
10
  * automatically by `InventorySlot` when it receives a `tooltip`.
10
11
  */
11
12
  var ItemTooltip = forwardRef(function ItemTooltip({ name, rarity, description, enchantments, stats, statIcon, className, ...rest }, ref) {
13
+ const m = useBlockUIMessages();
12
14
  const normalized = normalizeRarity(rarity);
13
15
  return /* @__PURE__ */ jsxs("div", {
14
16
  ref,
@@ -22,7 +24,7 @@ var ItemTooltip = forwardRef(function ItemTooltip({ name, rarity, description, e
22
24
  }),
23
25
  rarity ? /* @__PURE__ */ jsx("p", {
24
26
  className: ItemTooltip_module_default.rarity,
25
- children: rarity
27
+ children: normalized ? m.rarity[normalized] : rarity
26
28
  }) : null,
27
29
  enchantments && enchantments.length > 0 ? /* @__PURE__ */ jsx("ul", {
28
30
  className: ItemTooltip_module_default.enchantments,
@@ -1 +1 @@
1
- {"version":3,"file":"ItemTooltip.js","names":["styles"],"sources":["../../../../src/components/inventory/ItemTooltip/ItemTooltip.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport styles from \"./ItemTooltip.module.css\";\nimport type { ItemTooltipProps } from \"./ItemTooltip.types\";\nimport { normalizeRarity } from \"./ItemTooltip.utils\";\n\n/**\n * Item details card: rarity-colored name, enchantments and stats. Rendered\n * automatically by `InventorySlot` when it receives a `tooltip`.\n */\nexport const ItemTooltip = forwardRef<HTMLDivElement, ItemTooltipProps>(function ItemTooltip(\n { name, rarity, description, enchantments, stats, statIcon, className, ...rest },\n ref,\n) {\n const normalized = normalizeRarity(rarity);\n return (\n <div ref={ref} className={cx(styles.tooltip, className)} data-rarity={normalized} {...rest}>\n <p className={styles.name}>{name}</p>\n {rarity ? <p className={styles.rarity}>{rarity}</p> : null}\n {enchantments && enchantments.length > 0 ? (\n <ul className={styles.enchantments}>\n {enchantments.map((enchantment) => (\n <li key={enchantment}>{enchantment}</li>\n ))}\n </ul>\n ) : null}\n {description ? <div className={styles.description}>{description}</div> : null}\n {stats && stats.length > 0 ? (\n <dl className={styles.stats}>\n {stats.map((stat) => (\n <div key={stat.label} className={styles.stat}>\n <dt>\n {statIcon ? (\n <span className={styles.statIcon} aria-hidden=\"true\">\n {statIcon}\n </span>\n ) : null}\n {stat.label}\n </dt>\n <dd>{stat.value}</dd>\n </div>\n ))}\n </dl>\n ) : null}\n </div>\n );\n});\n"],"mappings":";;;;;;;;;;AAUA,IAAa,cAAc,WAA6C,SAAS,YAC/E,EAAE,MAAM,QAAQ,aAAa,cAAc,OAAO,UAAU,WAAW,GAAG,QAC1E,KACA;CACA,MAAM,aAAa,gBAAgB,MAAM;CACzC,OACE,qBAAC,OAAD;EAAU;EAAK,WAAW,GAAGA,2BAAO,SAAS,SAAS;EAAG,eAAa;EAAY,GAAI;EAAtF,UAAA;GACE,oBAAC,KAAD;IAAG,WAAWA,2BAAO;IAAO,UAAA;GAAQ,CAAA;GACnC,SAAS,oBAAC,KAAD;IAAG,WAAWA,2BAAO;IAAS,UAAA;GAAU,CAAA,IAAI;GACrD,gBAAgB,aAAa,SAAS,IACrC,oBAAC,MAAD;IAAI,WAAWA,2BAAO;IACnB,UAAA,aAAa,KAAK,gBACjB,oBAAC,MAAD,EAAA,UAAuB,YAAgB,GAA9B,WAA8B,CACxC;GACC,CAAA,IACF;GACH,cAAc,oBAAC,OAAD;IAAK,WAAWA,2BAAO;IAAc,UAAA;GAAiB,CAAA,IAAI;GACxE,SAAS,MAAM,SAAS,IACvB,oBAAC,MAAD;IAAI,WAAWA,2BAAO;IACnB,UAAA,MAAM,KAAK,SACV,qBAAC,OAAD;KAAsB,WAAWA,2BAAO;KAAxC,UAAA,CACE,qBAAC,MAAD,EAAA,UAAA,CACG,WACC,oBAAC,QAAD;MAAM,WAAWA,2BAAO;MAAU,eAAY;MAC3C,UAAA;KACG,CAAA,IACJ,MACH,KAAK,KACJ,EAAA,CAAA,GACJ,oBAAC,MAAD,EAAA,UAAK,KAAK,MAAU,CAAA,CACjB;IAVK,GAAA,KAAK,KAUV,CACN;GACC,CAAA,IACF;EACD;;AAET,CAAC"}
1
+ {"version":3,"file":"ItemTooltip.js","names":["styles"],"sources":["../../../../src/components/inventory/ItemTooltip/ItemTooltip.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport styles from \"./ItemTooltip.module.css\";\nimport type { ItemTooltipProps } from \"./ItemTooltip.types\";\nimport { normalizeRarity } from \"./ItemTooltip.utils\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\n\n/**\n * Item details card: rarity-colored name, enchantments and stats. Rendered\n * automatically by `InventorySlot` when it receives a `tooltip`.\n */\nexport const ItemTooltip = forwardRef<HTMLDivElement, ItemTooltipProps>(function ItemTooltip(\n { name, rarity, description, enchantments, stats, statIcon, className, ...rest },\n ref,\n) {\n const m = useBlockUIMessages();\n const normalized = normalizeRarity(rarity);\n return (\n <div ref={ref} className={cx(styles.tooltip, className)} data-rarity={normalized} {...rest}>\n <p className={styles.name}>{name}</p>\n {rarity ? (\n <p className={styles.rarity}>{normalized ? m.rarity[normalized] : rarity}</p>\n ) : null}\n {enchantments && enchantments.length > 0 ? (\n <ul className={styles.enchantments}>\n {enchantments.map((enchantment) => (\n <li key={enchantment}>{enchantment}</li>\n ))}\n </ul>\n ) : null}\n {description ? <div className={styles.description}>{description}</div> : null}\n {stats && stats.length > 0 ? (\n <dl className={styles.stats}>\n {stats.map((stat) => (\n <div key={stat.label} className={styles.stat}>\n <dt>\n {statIcon ? (\n <span className={styles.statIcon} aria-hidden=\"true\">\n {statIcon}\n </span>\n ) : null}\n {stat.label}\n </dt>\n <dd>{stat.value}</dd>\n </div>\n ))}\n </dl>\n ) : null}\n </div>\n );\n});\n"],"mappings":";;;;;;;;;;;AAWA,IAAa,cAAc,WAA6C,SAAS,YAC/E,EAAE,MAAM,QAAQ,aAAa,cAAc,OAAO,UAAU,WAAW,GAAG,QAC1E,KACA;CACA,MAAM,IAAI,mBAAmB;CAC7B,MAAM,aAAa,gBAAgB,MAAM;CACzC,OACE,qBAAC,OAAD;EAAU;EAAK,WAAW,GAAGA,2BAAO,SAAS,SAAS;EAAG,eAAa;EAAY,GAAI;EAAtF,UAAA;GACE,oBAAC,KAAD;IAAG,WAAWA,2BAAO;IAAO,UAAA;GAAQ,CAAA;GACnC,SACC,oBAAC,KAAD;IAAG,WAAWA,2BAAO;IAAS,UAAA,aAAa,EAAE,OAAO,cAAc;GAAU,CAAA,IAC1E;GACH,gBAAgB,aAAa,SAAS,IACrC,oBAAC,MAAD;IAAI,WAAWA,2BAAO;IACnB,UAAA,aAAa,KAAK,gBACjB,oBAAC,MAAD,EAAA,UAAuB,YAAgB,GAA9B,WAA8B,CACxC;GACC,CAAA,IACF;GACH,cAAc,oBAAC,OAAD;IAAK,WAAWA,2BAAO;IAAc,UAAA;GAAiB,CAAA,IAAI;GACxE,SAAS,MAAM,SAAS,IACvB,oBAAC,MAAD;IAAI,WAAWA,2BAAO;IACnB,UAAA,MAAM,KAAK,SACV,qBAAC,OAAD;KAAsB,WAAWA,2BAAO;KAAxC,UAAA,CACE,qBAAC,MAAD,EAAA,UAAA,CACG,WACC,oBAAC,QAAD;MAAM,WAAWA,2BAAO;MAAU,eAAY;MAC3C,UAAA;KACG,CAAA,IACJ,MACH,KAAK,KACJ,EAAA,CAAA,GACJ,oBAAC,MAAD,EAAA,UAAK,KAAK,MAAU,CAAA,CACjB;IAVK,GAAA,KAAK,KAUV,CACN;GACC,CAAA,IACF;EACD;;AAET,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockPagination.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockPagination/BlockPagination.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAGpE;;;GAGG;AACH,eAAO,MAAM,eAAe,8GA+F3B,CAAC"}
1
+ {"version":3,"file":"BlockPagination.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockPagination/BlockPagination.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAIpE;;;GAGG;AACH,eAAO,MAAM,eAAe,8GAgG3B,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 { useControllableState } from "../../../hooks/useControllableState.js";
4
5
  import { clamp } from "../../../utils/number.js";
@@ -12,7 +13,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
12
13
  * Page navigation with previous / next arrows. The current page is a grass
13
14
  * block marked `aria-current="page"`; long ranges collapse into ellipses.
14
15
  */
15
- var BlockPagination = forwardRef(function BlockPagination({ pageCount, page, defaultPage = 1, onPageChange, siblingCount = 1, boundaryCount = 1, variant = "full", size = "md", disabled = false, label = "Pagination", className, ...rest }, ref) {
16
+ var BlockPagination = forwardRef(function BlockPagination({ pageCount, page, defaultPage = 1, onPageChange, siblingCount = 1, boundaryCount = 1, variant = "full", size = "md", disabled = false, label, className, ...rest }, ref) {
17
+ const m = useBlockUIMessages();
16
18
  const count = Math.max(1, Math.floor(pageCount));
17
19
  const [rawPage, setPage] = useControllableState({
18
20
  value: page,
@@ -27,7 +29,7 @@ var BlockPagination = forwardRef(function BlockPagination({ pageCount, page, def
27
29
  const buttonSize = size === "sm" ? "sm" : "md";
28
30
  return /* @__PURE__ */ jsx("nav", {
29
31
  ref,
30
- "aria-label": label,
32
+ "aria-label": label ?? m.pagination.label,
31
33
  "data-size": size,
32
34
  className: cx(BlockPagination_module_default.pagination, className),
33
35
  ...rest,
@@ -36,25 +38,20 @@ var BlockPagination = forwardRef(function BlockPagination({ pageCount, page, def
36
38
  children: [
37
39
  /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(BlockButton, {
38
40
  size: buttonSize,
39
- "aria-label": "Previous page",
41
+ "aria-label": m.pagination.previous,
40
42
  disabled: disabled || current <= 1,
41
43
  className: BlockPagination_module_default.arrow,
42
44
  onClick: () => goTo(current - 1),
43
45
  children: /* @__PURE__ */ jsx(ChevronLeftIcon, { size: 16 })
44
46
  }) }),
45
- variant === "compact" ? /* @__PURE__ */ jsxs("li", {
47
+ variant === "compact" ? /* @__PURE__ */ jsx("li", {
46
48
  className: BlockPagination_module_default.status,
47
49
  "aria-live": "polite",
48
- children: [
49
- "Page ",
50
- current,
51
- " of ",
52
- count
53
- ]
50
+ children: m.pagination.pageOf(current, count)
54
51
  }) : getPaginationRange(current, count, siblingCount, boundaryCount).map((entry) => typeof entry === "number" ? /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(BlockButton, {
55
52
  size: buttonSize,
56
53
  variant: entry === current ? "grass" : "stone",
57
- "aria-label": `Page ${entry}`,
54
+ "aria-label": m.pagination.page(entry),
58
55
  "aria-current": entry === current ? "page" : void 0,
59
56
  disabled,
60
57
  className: BlockPagination_module_default.page,
@@ -67,7 +64,7 @@ var BlockPagination = forwardRef(function BlockPagination({ pageCount, page, def
67
64
  }, entry)),
68
65
  /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx(BlockButton, {
69
66
  size: buttonSize,
70
- "aria-label": "Next page",
67
+ "aria-label": m.pagination.next,
71
68
  disabled: disabled || current >= count,
72
69
  className: BlockPagination_module_default.arrow,
73
70
  onClick: () => goTo(current + 1),
@@ -1 +1 @@
1
- {"version":3,"file":"BlockPagination.js","names":["styles"],"sources":["../../../../src/components/navigation/BlockPagination/BlockPagination.tsx"],"sourcesContent":["import { ChevronLeftIcon, ChevronRightIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef } from \"react\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport { cx } from \"../../../utils/cx\";\nimport { clamp } from \"../../../utils/number\";\nimport { BlockButton } from \"../../actions/BlockButton/BlockButton\";\nimport styles from \"./BlockPagination.module.css\";\nimport type { BlockPaginationProps } from \"./BlockPagination.types\";\nimport { getPaginationRange } from \"./BlockPagination.utils\";\n\n/**\n * Page navigation with previous / next arrows. The current page is a grass\n * block marked `aria-current=\"page\"`; long ranges collapse into ellipses.\n */\nexport const BlockPagination = forwardRef<HTMLElement, BlockPaginationProps>(\n function BlockPagination(\n {\n pageCount,\n page,\n defaultPage = 1,\n onPageChange,\n siblingCount = 1,\n boundaryCount = 1,\n variant = \"full\",\n size = \"md\",\n disabled = false,\n label = \"Pagination\",\n className,\n ...rest\n },\n ref,\n ) {\n const count = Math.max(1, Math.floor(pageCount));\n const [rawPage, setPage] = useControllableState({\n value: page,\n defaultValue: defaultPage,\n onChange: onPageChange,\n });\n const current = clamp(rawPage, 1, count);\n\n const goTo = (next: number) => {\n if (disabled || next < 1 || next > count || next === current) return;\n setPage(next);\n };\n\n const buttonSize = size === \"sm\" ? \"sm\" : \"md\";\n\n return (\n <nav\n ref={ref}\n aria-label={label}\n data-size={size}\n className={cx(styles.pagination, className)}\n {...rest}\n >\n <ul className={styles.list}>\n <li>\n <BlockButton\n size={buttonSize}\n aria-label=\"Previous page\"\n disabled={disabled || current <= 1}\n className={styles.arrow}\n onClick={() => goTo(current - 1)}\n >\n <ChevronLeftIcon size={16} />\n </BlockButton>\n </li>\n {variant === \"compact\" ? (\n <li className={styles.status} aria-live=\"polite\">\n Page {current} of {count}\n </li>\n ) : (\n getPaginationRange(current, count, siblingCount, boundaryCount).map((entry) =>\n typeof entry === \"number\" ? (\n <li key={entry}>\n <BlockButton\n size={buttonSize}\n variant={entry === current ? \"grass\" : \"stone\"}\n aria-label={`Page ${entry}`}\n aria-current={entry === current ? \"page\" : undefined}\n disabled={disabled}\n className={styles.page}\n onClick={() => goTo(entry)}\n >\n {entry}\n </BlockButton>\n </li>\n ) : (\n <li key={entry} className={styles.ellipsis} aria-hidden=\"true\">\n …\n </li>\n ),\n )\n )}\n <li>\n <BlockButton\n size={buttonSize}\n aria-label=\"Next page\"\n disabled={disabled || current >= count}\n className={styles.arrow}\n onClick={() => goTo(current + 1)}\n >\n <ChevronRightIcon size={16} />\n </BlockButton>\n </li>\n </ul>\n </nav>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;;AAcA,IAAa,kBAAkB,WAC7B,SAAS,gBACP,EACE,WACA,MACA,cAAc,GACd,cACA,eAAe,GACf,gBAAgB,GAChB,UAAU,QACV,OAAO,MACP,WAAW,OACX,QAAQ,cACR,WACA,GAAG,QAEL,KACA;CACA,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC;CAC/C,MAAM,CAAC,SAAS,WAAW,qBAAqB;EAC9C,OAAO;EACP,cAAc;EACd,UAAU;CACZ,CAAC;CACD,MAAM,UAAU,MAAM,SAAS,GAAG,KAAK;CAEvC,MAAM,QAAQ,SAAiB;EAC7B,IAAI,YAAY,OAAO,KAAK,OAAO,SAAS,SAAS,SAAS;EAC9D,QAAQ,IAAI;CACd;CAEA,MAAM,aAAa,SAAS,OAAO,OAAO;CAE1C,OACE,oBAAC,OAAD;EACO;EACL,cAAY;EACZ,aAAW;EACX,WAAW,GAAGA,+BAAO,YAAY,SAAS;EAC1C,GAAI;EAEJ,UAAA,qBAAC,MAAD;GAAI,WAAWA,+BAAO;GAAtB,UAAA;IACE,oBAAC,MAAD,EAAA,UACE,oBAAC,aAAD;KACE,MAAM;KACN,cAAW;KACX,UAAU,YAAY,WAAW;KACjC,WAAWA,+BAAO;KAClB,eAAe,KAAK,UAAU,CAAC;KAE/B,UAAA,oBAAC,iBAAD,EAAiB,MAAM,GAAK,CAAA;IACjB,CAAA,EACX,CAAA;IACH,YAAY,YACX,qBAAC,MAAD;KAAI,WAAWA,+BAAO;KAAQ,aAAU;KAAxC,UAAA;MAAiD;MACzC;MAAQ;MAAK;KACjB;IAEJ,CAAA,IAAA,mBAAmB,SAAS,OAAO,cAAc,aAAa,CAAC,CAAC,KAAK,UACnE,OAAO,UAAU,WACf,oBAAC,MAAD,EAAA,UACE,oBAAC,aAAD;KACE,MAAM;KACN,SAAS,UAAU,UAAU,UAAU;KACvC,cAAY,QAAQ;KACpB,gBAAc,UAAU,UAAU,SAAS,KAAA;KACjC;KACV,WAAWA,+BAAO;KAClB,eAAe,KAAK,KAAK;KAExB,UAAA;IACU,CAAA,EACX,GAZK,KAYL,IAEJ,oBAAC,MAAD;KAAgB,WAAWA,+BAAO;KAAU,eAAY;KAAO,UAAA;IAE3D,GAFK,KAEL,CAER;IAEF,oBAAC,MAAD,EAAA,UACE,oBAAC,aAAD;KACE,MAAM;KACN,cAAW;KACX,UAAU,YAAY,WAAW;KACjC,WAAWA,+BAAO;KAClB,eAAe,KAAK,UAAU,CAAC;KAE/B,UAAA,oBAAC,kBAAD,EAAkB,MAAM,GAAK,CAAA;IAClB,CAAA,EACX,CAAA;GACF;;CACD,CAAA;AAET,CACF"}
1
+ {"version":3,"file":"BlockPagination.js","names":["styles"],"sources":["../../../../src/components/navigation/BlockPagination/BlockPagination.tsx"],"sourcesContent":["import { ChevronLeftIcon, ChevronRightIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef } from \"react\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport { cx } from \"../../../utils/cx\";\nimport { clamp } from \"../../../utils/number\";\nimport { BlockButton } from \"../../actions/BlockButton/BlockButton\";\nimport styles from \"./BlockPagination.module.css\";\nimport type { BlockPaginationProps } from \"./BlockPagination.types\";\nimport { getPaginationRange } from \"./BlockPagination.utils\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\n\n/**\n * Page navigation with previous / next arrows. The current page is a grass\n * block marked `aria-current=\"page\"`; long ranges collapse into ellipses.\n */\nexport const BlockPagination = forwardRef<HTMLElement, BlockPaginationProps>(\n function BlockPagination(\n {\n pageCount,\n page,\n defaultPage = 1,\n onPageChange,\n siblingCount = 1,\n boundaryCount = 1,\n variant = \"full\",\n size = \"md\",\n disabled = false,\n label,\n className,\n ...rest\n },\n ref,\n ) {\n const m = useBlockUIMessages();\n const count = Math.max(1, Math.floor(pageCount));\n const [rawPage, setPage] = useControllableState({\n value: page,\n defaultValue: defaultPage,\n onChange: onPageChange,\n });\n const current = clamp(rawPage, 1, count);\n\n const goTo = (next: number) => {\n if (disabled || next < 1 || next > count || next === current) return;\n setPage(next);\n };\n\n const buttonSize = size === \"sm\" ? \"sm\" : \"md\";\n\n return (\n <nav\n ref={ref}\n aria-label={label ?? m.pagination.label}\n data-size={size}\n className={cx(styles.pagination, className)}\n {...rest}\n >\n <ul className={styles.list}>\n <li>\n <BlockButton\n size={buttonSize}\n aria-label={m.pagination.previous}\n disabled={disabled || current <= 1}\n className={styles.arrow}\n onClick={() => goTo(current - 1)}\n >\n <ChevronLeftIcon size={16} />\n </BlockButton>\n </li>\n {variant === \"compact\" ? (\n <li className={styles.status} aria-live=\"polite\">\n {m.pagination.pageOf(current, count)}\n </li>\n ) : (\n getPaginationRange(current, count, siblingCount, boundaryCount).map((entry) =>\n typeof entry === \"number\" ? (\n <li key={entry}>\n <BlockButton\n size={buttonSize}\n variant={entry === current ? \"grass\" : \"stone\"}\n aria-label={m.pagination.page(entry)}\n aria-current={entry === current ? \"page\" : undefined}\n disabled={disabled}\n className={styles.page}\n onClick={() => goTo(entry)}\n >\n {entry}\n </BlockButton>\n </li>\n ) : (\n <li key={entry} className={styles.ellipsis} aria-hidden=\"true\">\n …\n </li>\n ),\n )\n )}\n <li>\n <BlockButton\n size={buttonSize}\n aria-label={m.pagination.next}\n disabled={disabled || current >= count}\n className={styles.arrow}\n onClick={() => goTo(current + 1)}\n >\n <ChevronRightIcon size={16} />\n </BlockButton>\n </li>\n </ul>\n </nav>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;;;;AAeA,IAAa,kBAAkB,WAC7B,SAAS,gBACP,EACE,WACA,MACA,cAAc,GACd,cACA,eAAe,GACf,gBAAgB,GAChB,UAAU,QACV,OAAO,MACP,WAAW,OACX,OACA,WACA,GAAG,QAEL,KACA;CACA,MAAM,IAAI,mBAAmB;CAC7B,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,CAAC;CAC/C,MAAM,CAAC,SAAS,WAAW,qBAAqB;EAC9C,OAAO;EACP,cAAc;EACd,UAAU;CACZ,CAAC;CACD,MAAM,UAAU,MAAM,SAAS,GAAG,KAAK;CAEvC,MAAM,QAAQ,SAAiB;EAC7B,IAAI,YAAY,OAAO,KAAK,OAAO,SAAS,SAAS,SAAS;EAC9D,QAAQ,IAAI;CACd;CAEA,MAAM,aAAa,SAAS,OAAO,OAAO;CAE1C,OACE,oBAAC,OAAD;EACO;EACL,cAAY,SAAS,EAAE,WAAW;EAClC,aAAW;EACX,WAAW,GAAGA,+BAAO,YAAY,SAAS;EAC1C,GAAI;EAEJ,UAAA,qBAAC,MAAD;GAAI,WAAWA,+BAAO;GAAtB,UAAA;IACE,oBAAC,MAAD,EAAA,UACE,oBAAC,aAAD;KACE,MAAM;KACN,cAAY,EAAE,WAAW;KACzB,UAAU,YAAY,WAAW;KACjC,WAAWA,+BAAO;KAClB,eAAe,KAAK,UAAU,CAAC;KAE/B,UAAA,oBAAC,iBAAD,EAAiB,MAAM,GAAK,CAAA;IACjB,CAAA,EACX,CAAA;IACH,YAAY,YACX,oBAAC,MAAD;KAAI,WAAWA,+BAAO;KAAQ,aAAU;KACrC,UAAA,EAAE,WAAW,OAAO,SAAS,KAAK;IACjC,CAAA,IAEJ,mBAAmB,SAAS,OAAO,cAAc,aAAa,CAAC,CAAC,KAAK,UACnE,OAAO,UAAU,WACf,oBAAC,MAAD,EAAA,UACE,oBAAC,aAAD;KACE,MAAM;KACN,SAAS,UAAU,UAAU,UAAU;KACvC,cAAY,EAAE,WAAW,KAAK,KAAK;KACnC,gBAAc,UAAU,UAAU,SAAS,KAAA;KACjC;KACV,WAAWA,+BAAO;KAClB,eAAe,KAAK,KAAK;KAExB,UAAA;IACU,CAAA,EACX,GAZK,KAYL,IAEJ,oBAAC,MAAD;KAAgB,WAAWA,+BAAO;KAAU,eAAY;KAAO,UAAA;IAE3D,GAFK,KAEL,CAER;IAEF,oBAAC,MAAD,EAAA,UACE,oBAAC,aAAD;KACE,MAAM;KACN,cAAY,EAAE,WAAW;KACzB,UAAU,YAAY,WAAW;KACjC,WAAWA,+BAAO;KAClB,eAAe,KAAK,UAAU,CAAC;KAE/B,UAAA,oBAAC,kBAAD,EAAkB,MAAM,GAAK,CAAA;IAClB,CAAA,EACX,CAAA;GACF;;CACD,CAAA;AAET,CACF"}
@@ -16,7 +16,7 @@ export interface BlockPaginationProps extends Omit<HTMLAttributes<HTMLElement>,
16
16
  /** @default "md" */
17
17
  size?: "sm" | "md";
18
18
  disabled?: boolean;
19
- /** Accessible name of the navigation landmark. @default "Pagination" */
19
+ /** Accessible name of the navigation landmark. @default messages.pagination.label ("Pagination") */
20
20
  label?: string;
21
21
  }
22
22
  //# sourceMappingURL=BlockPagination.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockPagination.types.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockPagination/BlockPagination.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,cAAc,CAAC,WAAW,CAAC,EAC3B,UAAU,GAAG,cAAc,CAC5B;IACC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,oBAAoB;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"BlockPagination.types.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockPagination/BlockPagination.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,cAAc,CAAC,WAAW,CAAC,EAC3B,UAAU,GAAG,cAAc,CAC5B;IACC,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,oBAAoB;IACpB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oGAAoG;IACpG,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockSidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockSidebar/BlockSidebar.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGhF;;;GAGG;AACH,eAAO,MAAM,YAAY,2GAiCvB,CAAC;AAEH,wEAAwE;AACxE,eAAO,MAAM,WAAW,0GAsEtB,CAAC"}
1
+ {"version":3,"file":"BlockSidebar.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockSidebar/BlockSidebar.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIhF;;;GAGG;AACH,eAAO,MAAM,YAAY,2GAyBvB,CAAC;AAEH,wEAAwE;AACxE,eAAO,MAAM,WAAW,0GAsEtB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { cx } from "../../../utils/cx.js";
2
+ import { useBlockUIMessages } from "../../../provider/context.js";
2
3
  import { useMediaQuery } from "../../../hooks/useMediaQuery.js";
3
4
  import BlockSidebar_module_default from "./BlockSidebar.module.js";
4
5
  import { SidebarContext, useSidebar } from "./context.js";
@@ -10,13 +11,14 @@ import { media } from "@malilion/block-ui-tokens";
10
11
  * Main navigation rail. Collapses to icons on tablet and hides on mobile when
11
12
  * `responsive` (pair it with `HotbarNavigation`).
12
13
  */
13
- var BlockSidebar = forwardRef(function BlockSidebar({ header, footer, collapsed = false, responsive = true, label = "Main", className, children, ...rest }, ref) {
14
+ var BlockSidebar = forwardRef(function BlockSidebar({ header, footer, collapsed = false, responsive = true, label, className, children, ...rest }, ref) {
15
+ const m = useBlockUIMessages();
14
16
  const tablet = useMediaQuery(media.tablet);
15
17
  const isCollapsed = collapsed || responsive && tablet;
16
18
  const context = useMemo(() => ({ collapsed: isCollapsed }), [isCollapsed]);
17
19
  return /* @__PURE__ */ jsxs("nav", {
18
20
  ref,
19
- "aria-label": label,
21
+ "aria-label": label ?? m.sidebar.label,
20
22
  "data-collapsed": isCollapsed || void 0,
21
23
  "data-responsive": responsive || void 0,
22
24
  className: cx(BlockSidebar_module_default.sidebar, className),
@@ -1 +1 @@
1
- {"version":3,"file":"BlockSidebar.js","names":["styles","_Fragment"],"sources":["../../../../src/components/navigation/BlockSidebar/BlockSidebar.tsx"],"sourcesContent":["import { media } from \"@malilion/block-ui-tokens\";\nimport { forwardRef, useMemo, type MouseEvent, type Ref } from \"react\";\nimport { useMediaQuery } from \"../../../hooks/useMediaQuery\";\nimport { cx } from \"../../../utils/cx\";\nimport styles from \"./BlockSidebar.module.css\";\nimport type { BlockSidebarProps, SidebarItemProps } from \"./BlockSidebar.types\";\nimport { SidebarContext, useSidebar } from \"./context\";\n\n/**\n * Main navigation rail. Collapses to icons on tablet and hides on mobile when\n * `responsive` (pair it with `HotbarNavigation`).\n */\nexport const BlockSidebar = forwardRef<HTMLElement, BlockSidebarProps>(function BlockSidebar(\n {\n header,\n footer,\n collapsed = false,\n responsive = true,\n label = \"Main\",\n className,\n children,\n ...rest\n },\n ref,\n) {\n const tablet = useMediaQuery(media.tablet);\n const isCollapsed = collapsed || (responsive && tablet);\n const context = useMemo(() => ({ collapsed: isCollapsed }), [isCollapsed]);\n\n return (\n <nav\n ref={ref}\n aria-label={label}\n data-collapsed={isCollapsed || undefined}\n data-responsive={responsive || undefined}\n className={cx(styles.sidebar, className)}\n {...rest}\n >\n {header ? <div className={styles.header}>{header}</div> : null}\n <SidebarContext.Provider value={context}>\n <ul className={styles.list}>{children}</ul>\n </SidebarContext.Provider>\n {footer ? <div className={styles.footer}>{footer}</div> : null}\n </nav>\n );\n});\n\n/** A sidebar entry. Renders `<a>` with `href`, otherwise `<button>`. */\nexport const SidebarItem = forwardRef<HTMLElement, SidebarItemProps>(function SidebarItem(\n {\n icon,\n active = false,\n href,\n onClick,\n badge,\n disabled = false,\n className,\n children,\n title,\n ...rest\n },\n ref,\n) {\n const { collapsed } = useSidebar();\n const tooltip = title ?? (collapsed && typeof children === \"string\" ? children : undefined);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n };\n\n const content = (\n <>\n {icon ? (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className={styles.label}>{children}</span>\n {badge !== undefined && badge !== null ? (\n <>\n {\" \"}\n <span className={styles.badge}>{badge}</span>\n </>\n ) : null}\n </>\n );\n\n const shared = {\n className: cx(styles.item, className),\n \"aria-current\": active ? (\"page\" as const) : undefined,\n \"aria-disabled\": disabled || undefined,\n \"data-active\": active || undefined,\n title: tooltip,\n onClick: handleClick,\n };\n\n return (\n <li className={styles.listItem}>\n {href !== undefined ? (\n <a\n ref={ref as Ref<HTMLAnchorElement>}\n href={disabled ? undefined : href}\n {...shared}\n {...rest}\n >\n {content}\n </a>\n ) : (\n <button ref={ref as Ref<HTMLButtonElement>} type=\"button\" {...shared}>\n {content}\n </button>\n )}\n </li>\n );\n});\n"],"mappings":";;;;;;;;;;;;AAYA,IAAa,eAAe,WAA2C,SAAS,aAC9E,EACE,QACA,QACA,YAAY,OACZ,aAAa,MACb,QAAQ,QACR,WACA,UACA,GAAG,QAEL,KACA;CACA,MAAM,SAAS,cAAc,MAAM,MAAM;CACzC,MAAM,cAAc,aAAc,cAAc;CAChD,MAAM,UAAU,eAAe,EAAE,WAAW,YAAY,IAAI,CAAC,WAAW,CAAC;CAEzE,OACE,qBAAC,OAAD;EACO;EACL,cAAY;EACZ,kBAAgB,eAAe,KAAA;EAC/B,mBAAiB,cAAc,KAAA;EAC/B,WAAW,GAAGA,4BAAO,SAAS,SAAS;EACvC,GAAI;EANN,UAAA;GAQG,SAAS,oBAAC,OAAD;IAAK,WAAWA,4BAAO;IAAS,UAAA;GAAY,CAAA,IAAI;GAC1D,oBAAC,eAAe,UAAhB;IAAyB,OAAO;IAC9B,UAAA,oBAAC,MAAD;KAAI,WAAWA,4BAAO;KAAO;IAAa,CAAA;GACnB,CAAA;GACxB,SAAS,oBAAC,OAAD;IAAK,WAAWA,4BAAO;IAAS,UAAA;GAAY,CAAA,IAAI;EACvD;;AAET,CAAC;;AAGD,IAAa,cAAc,WAA0C,SAAS,YAC5E,EACE,MACA,SAAS,OACT,MACA,SACA,OACA,WAAW,OACX,WACA,UACA,OACA,GAAG,QAEL,KACA;CACA,MAAM,EAAE,cAAc,WAAW;CACjC,MAAM,UAAU,UAAU,aAAa,OAAO,aAAa,WAAW,WAAW,KAAA;CAEjF,MAAM,eAAe,UAAmC;EACtD,IAAI,UAAU;GACZ,MAAM,eAAe;GACrB;EACF;EACA,UAAU,KAAK;CACjB;CAEA,MAAM,UACJ,qBAAAC,YAAA,EAAA,UAAA;EACG,OACC,oBAAC,QAAD;GAAM,WAAWD,4BAAO;GAAM,eAAY;GACvC,UAAA;EACG,CAAA,IACJ;EACJ,oBAAC,QAAD;GAAM,WAAWA,4BAAO;GAAQ;EAAe,CAAA;EAC9C,UAAU,KAAA,KAAa,UAAU,OAChC,qBAAAC,YAAA,EAAA,UAAA,CACG,KACD,oBAAC,QAAD;GAAM,WAAWD,4BAAO;GAAQ,UAAA;EAAY,CAAA,CAC5C,EAAA,CAAA,IACA;CACJ,EAAA,CAAA;CAGJ,MAAM,SAAS;EACb,WAAW,GAAGA,4BAAO,MAAM,SAAS;EACpC,gBAAgB,SAAU,SAAmB,KAAA;EAC7C,iBAAiB,YAAY,KAAA;EAC7B,eAAe,UAAU,KAAA;EACzB,OAAO;EACP,SAAS;CACX;CAEA,OACE,oBAAC,MAAD;EAAI,WAAWA,4BAAO;EACnB,UAAA,SAAS,KAAA,IACR,oBAAC,KAAD;GACO;GACL,MAAM,WAAW,KAAA,IAAY;GAC7B,GAAI;GACJ,GAAI;GAEH,UAAA;EACA,CAAA,IAEH,oBAAC,UAAD;GAAa;GAA+B,MAAK;GAAS,GAAI;GAC3D,UAAA;EACK,CAAA;CAER,CAAA;AAER,CAAC"}
1
+ {"version":3,"file":"BlockSidebar.js","names":["styles","_Fragment"],"sources":["../../../../src/components/navigation/BlockSidebar/BlockSidebar.tsx"],"sourcesContent":["import { media } from \"@malilion/block-ui-tokens\";\nimport { forwardRef, useMemo, type MouseEvent, type Ref } from \"react\";\nimport { useMediaQuery } from \"../../../hooks/useMediaQuery\";\nimport { cx } from \"../../../utils/cx\";\nimport styles from \"./BlockSidebar.module.css\";\nimport type { BlockSidebarProps, SidebarItemProps } from \"./BlockSidebar.types\";\nimport { SidebarContext, useSidebar } from \"./context\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\n\n/**\n * Main navigation rail. Collapses to icons on tablet and hides on mobile when\n * `responsive` (pair it with `HotbarNavigation`).\n */\nexport const BlockSidebar = forwardRef<HTMLElement, BlockSidebarProps>(function BlockSidebar(\n { header, footer, collapsed = false, responsive = true, label, className, children, ...rest },\n ref,\n) {\n const m = useBlockUIMessages();\n const tablet = useMediaQuery(media.tablet);\n const isCollapsed = collapsed || (responsive && tablet);\n const context = useMemo(() => ({ collapsed: isCollapsed }), [isCollapsed]);\n\n return (\n <nav\n ref={ref}\n aria-label={label ?? m.sidebar.label}\n data-collapsed={isCollapsed || undefined}\n data-responsive={responsive || undefined}\n className={cx(styles.sidebar, className)}\n {...rest}\n >\n {header ? <div className={styles.header}>{header}</div> : null}\n <SidebarContext.Provider value={context}>\n <ul className={styles.list}>{children}</ul>\n </SidebarContext.Provider>\n {footer ? <div className={styles.footer}>{footer}</div> : null}\n </nav>\n );\n});\n\n/** A sidebar entry. Renders `<a>` with `href`, otherwise `<button>`. */\nexport const SidebarItem = forwardRef<HTMLElement, SidebarItemProps>(function SidebarItem(\n {\n icon,\n active = false,\n href,\n onClick,\n badge,\n disabled = false,\n className,\n children,\n title,\n ...rest\n },\n ref,\n) {\n const { collapsed } = useSidebar();\n const tooltip = title ?? (collapsed && typeof children === \"string\" ? children : undefined);\n\n const handleClick = (event: MouseEvent<HTMLElement>) => {\n if (disabled) {\n event.preventDefault();\n return;\n }\n onClick?.(event);\n };\n\n const content = (\n <>\n {icon ? (\n <span className={styles.icon} aria-hidden=\"true\">\n {icon}\n </span>\n ) : null}\n <span className={styles.label}>{children}</span>\n {badge !== undefined && badge !== null ? (\n <>\n {\" \"}\n <span className={styles.badge}>{badge}</span>\n </>\n ) : null}\n </>\n );\n\n const shared = {\n className: cx(styles.item, className),\n \"aria-current\": active ? (\"page\" as const) : undefined,\n \"aria-disabled\": disabled || undefined,\n \"data-active\": active || undefined,\n title: tooltip,\n onClick: handleClick,\n };\n\n return (\n <li className={styles.listItem}>\n {href !== undefined ? (\n <a\n ref={ref as Ref<HTMLAnchorElement>}\n href={disabled ? undefined : href}\n {...shared}\n {...rest}\n >\n {content}\n </a>\n ) : (\n <button ref={ref as Ref<HTMLButtonElement>} type=\"button\" {...shared}>\n {content}\n </button>\n )}\n </li>\n );\n});\n"],"mappings":";;;;;;;;;;;;;AAaA,IAAa,eAAe,WAA2C,SAAS,aAC9E,EAAE,QAAQ,QAAQ,YAAY,OAAO,aAAa,MAAM,OAAO,WAAW,UAAU,GAAG,QACvF,KACA;CACA,MAAM,IAAI,mBAAmB;CAC7B,MAAM,SAAS,cAAc,MAAM,MAAM;CACzC,MAAM,cAAc,aAAc,cAAc;CAChD,MAAM,UAAU,eAAe,EAAE,WAAW,YAAY,IAAI,CAAC,WAAW,CAAC;CAEzE,OACE,qBAAC,OAAD;EACO;EACL,cAAY,SAAS,EAAE,QAAQ;EAC/B,kBAAgB,eAAe,KAAA;EAC/B,mBAAiB,cAAc,KAAA;EAC/B,WAAW,GAAGA,4BAAO,SAAS,SAAS;EACvC,GAAI;EANN,UAAA;GAQG,SAAS,oBAAC,OAAD;IAAK,WAAWA,4BAAO;IAAS,UAAA;GAAY,CAAA,IAAI;GAC1D,oBAAC,eAAe,UAAhB;IAAyB,OAAO;IAC9B,UAAA,oBAAC,MAAD;KAAI,WAAWA,4BAAO;KAAO;IAAa,CAAA;GACnB,CAAA;GACxB,SAAS,oBAAC,OAAD;IAAK,WAAWA,4BAAO;IAAS,UAAA;GAAY,CAAA,IAAI;EACvD;;AAET,CAAC;;AAGD,IAAa,cAAc,WAA0C,SAAS,YAC5E,EACE,MACA,SAAS,OACT,MACA,SACA,OACA,WAAW,OACX,WACA,UACA,OACA,GAAG,QAEL,KACA;CACA,MAAM,EAAE,cAAc,WAAW;CACjC,MAAM,UAAU,UAAU,aAAa,OAAO,aAAa,WAAW,WAAW,KAAA;CAEjF,MAAM,eAAe,UAAmC;EACtD,IAAI,UAAU;GACZ,MAAM,eAAe;GACrB;EACF;EACA,UAAU,KAAK;CACjB;CAEA,MAAM,UACJ,qBAAAC,YAAA,EAAA,UAAA;EACG,OACC,oBAAC,QAAD;GAAM,WAAWD,4BAAO;GAAM,eAAY;GACvC,UAAA;EACG,CAAA,IACJ;EACJ,oBAAC,QAAD;GAAM,WAAWA,4BAAO;GAAQ;EAAe,CAAA;EAC9C,UAAU,KAAA,KAAa,UAAU,OAChC,qBAAAC,YAAA,EAAA,UAAA,CACG,KACD,oBAAC,QAAD;GAAM,WAAWD,4BAAO;GAAQ,UAAA;EAAY,CAAA,CAC5C,EAAA,CAAA,IACA;CACJ,EAAA,CAAA;CAGJ,MAAM,SAAS;EACb,WAAW,GAAGA,4BAAO,MAAM,SAAS;EACpC,gBAAgB,SAAU,SAAmB,KAAA;EAC7C,iBAAiB,YAAY,KAAA;EAC7B,eAAe,UAAU,KAAA;EACzB,OAAO;EACP,SAAS;CACX;CAEA,OACE,oBAAC,MAAD;EAAI,WAAWA,4BAAO;EACnB,UAAA,SAAS,KAAA,IACR,oBAAC,KAAD;GACO;GACL,MAAM,WAAW,KAAA,IAAY;GAC7B,GAAI;GACJ,GAAI;GAEH,UAAA;EACA,CAAA,IAEH,oBAAC,UAAD;GAAa;GAA+B,MAAK;GAAS,GAAI;GAC3D,UAAA;EACK,CAAA;CAER,CAAA;AAER,CAAC"}
@@ -11,7 +11,7 @@ export interface BlockSidebarProps extends HTMLAttributes<HTMLElement> {
11
11
  * mobile (< 768px, use `HotbarNavigation` there). @default true
12
12
  */
13
13
  responsive?: boolean;
14
- /** Accessible name of the `<nav>`. @default "Main" */
14
+ /** Accessible name of the `<nav>`. @default messages.sidebar.label ("Main") */
15
15
  label?: string;
16
16
  children?: ReactNode;
17
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BlockSidebar.types.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockSidebar/BlockSidebar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzF,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACpE,oCAAoC;IACpC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,oCAAoC;IACpC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,SAAS,GAAG,UAAU,CACvB;IACC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACnD,iEAAiE;IACjE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB"}
1
+ {"version":3,"file":"BlockSidebar.types.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockSidebar/BlockSidebar.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzF,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACpE,oCAAoC;IACpC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,oCAAoC;IACpC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,SAAS,GAAG,UAAU,CACvB;IACC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,iDAAiD;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACnD,iEAAiE;IACjE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;CACrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"BlockStepper.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockStepper/BlockStepper.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D;;;;GAIG;AACH,eAAO,MAAM,YAAY,2GAoEvB,CAAC"}
1
+ {"version":3,"file":"BlockStepper.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockStepper/BlockStepper.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAK9D;;;;GAIG;AACH,eAAO,MAAM,YAAY,2GA6DvB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { cx } from "../../../utils/cx.js";
2
+ import { useBlockUIMessages } from "../../../provider/context.js";
2
3
  import BlockStepper_module_default from "./BlockStepper.module.js";
3
4
  import { forwardRef } from "react";
4
5
  import { CheckIcon } from "@malilion/block-ui-icons";
@@ -9,10 +10,11 @@ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
10
  * check and can be revisited when `onStepClick` is set; the current step has
10
11
  * `aria-current="step"`.
11
12
  */
12
- var BlockStepper = forwardRef(function BlockStepper({ steps, current, onStepClick, orientation = "horizontal", label = "Progress", className, ...rest }, ref) {
13
+ var BlockStepper = forwardRef(function BlockStepper({ steps, current, onStepClick, orientation = "horizontal", label, className, ...rest }, ref) {
14
+ const m = useBlockUIMessages();
13
15
  return /* @__PURE__ */ jsx("nav", {
14
16
  ref,
15
- "aria-label": label,
17
+ "aria-label": label ?? m.stepper.label,
16
18
  className: cx(BlockStepper_module_default.stepper, className),
17
19
  "data-orientation": orientation,
18
20
  ...rest,
@@ -1 +1 @@
1
- {"version":3,"file":"BlockStepper.js","names":["styles","_Fragment"],"sources":["../../../../src/components/navigation/BlockStepper/BlockStepper.tsx"],"sourcesContent":["import { CheckIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport styles from \"./BlockStepper.module.css\";\nimport type { BlockStepperProps } from \"./BlockStepper.types\";\n\ntype StepState = \"complete\" | \"current\" | \"upcoming\";\n\n/**\n * Multi-step progress (create a world, set up a server). Completed steps show a\n * check and can be revisited when `onStepClick` is set; the current step has\n * `aria-current=\"step\"`.\n */\nexport const BlockStepper = forwardRef<HTMLElement, BlockStepperProps>(function BlockStepper(\n {\n steps,\n current,\n onStepClick,\n orientation = \"horizontal\",\n label = \"Progress\",\n className,\n ...rest\n },\n ref,\n) {\n return (\n <nav\n ref={ref}\n aria-label={label}\n className={cx(styles.stepper, className)}\n data-orientation={orientation}\n {...rest}\n >\n <ol className={styles.list}>\n {steps.map((step, index) => {\n const state: StepState =\n index < current ? \"complete\" : index === current ? \"current\" : \"upcoming\";\n const marker = (\n <span className={styles.marker} aria-hidden=\"true\">\n {state === \"complete\" ? <CheckIcon size={16} /> : (step.icon ?? index + 1)}\n </span>\n );\n const text = (\n <span className={styles.text}>\n <span className={styles.label}>{step.label}</span>\n {/* The space keeps label and description apart for screen readers; flex hides it. */}\n {step.description ? (\n <>\n {\" \"}\n <span className={styles.description}>{step.description}</span>\n </>\n ) : null}\n {state === \"complete\" ? (\n <span className=\"block-visually-hidden\"> (completed)</span>\n ) : null}\n </span>\n );\n return (\n <li\n key={step.id}\n className={styles.step}\n data-state={state}\n aria-current={state === \"current\" ? \"step\" : undefined}\n >\n {state === \"complete\" && onStepClick ? (\n <button type=\"button\" className={styles.content} onClick={() => onStepClick(index)}>\n {marker}\n {text}\n </button>\n ) : (\n <span className={styles.content}>\n {marker}\n {text}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n});\n"],"mappings":";;;;;;;;;;;AAaA,IAAa,eAAe,WAA2C,SAAS,aAC9E,EACE,OACA,SACA,aACA,cAAc,cACd,QAAQ,YACR,WACA,GAAG,QAEL,KACA;CACA,OACE,oBAAC,OAAD;EACO;EACL,cAAY;EACZ,WAAW,GAAGA,4BAAO,SAAS,SAAS;EACvC,oBAAkB;EAClB,GAAI;EAEJ,UAAA,oBAAC,MAAD;GAAI,WAAWA,4BAAO;GACnB,UAAA,MAAM,KAAK,MAAM,UAAU;IAC1B,MAAM,QACJ,QAAQ,UAAU,aAAa,UAAU,UAAU,YAAY;IACjE,MAAM,SACJ,oBAAC,QAAD;KAAM,WAAWA,4BAAO;KAAQ,eAAY;KACzC,UAAA,UAAU,aAAa,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA,IAAK,KAAK,QAAQ,QAAQ;IACpE,CAAA;IAER,MAAM,OACJ,qBAAC,QAAD;KAAM,WAAWA,4BAAO;KAAxB,UAAA;MACE,oBAAC,QAAD;OAAM,WAAWA,4BAAO;OAAQ,UAAA,KAAK;MAAY,CAAA;MAEhD,KAAK,cACJ,qBAAAC,YAAA,EAAA,UAAA,CACG,KACD,oBAAC,QAAD;OAAM,WAAWD,4BAAO;OAAc,UAAA,KAAK;MAAkB,CAAA,CAC7D,EAAA,CAAA,IACA;MACH,UAAU,aACT,oBAAC,QAAD;OAAM,WAAU;OAAwB,UAAA;MAAkB,CAAA,IACxD;KACA;;IAER,OACE,oBAAC,MAAD;KAEE,WAAWA,4BAAO;KAClB,cAAY;KACZ,gBAAc,UAAU,YAAY,SAAS,KAAA;KAE5C,UAAA,UAAU,cAAc,cACvB,qBAAC,UAAD;MAAQ,MAAK;MAAS,WAAWA,4BAAO;MAAS,eAAe,YAAY,KAAK;MAAjF,UAAA,CACG,QACA,IACK;KAER,CAAA,IAAA,qBAAC,QAAD;MAAM,WAAWA,4BAAO;MAAxB,UAAA,CACG,QACA,IACG;;IAEN,GAhBG,KAAK,EAgBR;GAER,CAAC;EACC,CAAA;CACD,CAAA;AAET,CAAC"}
1
+ {"version":3,"file":"BlockStepper.js","names":["styles","_Fragment"],"sources":["../../../../src/components/navigation/BlockStepper/BlockStepper.tsx"],"sourcesContent":["import { CheckIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport styles from \"./BlockStepper.module.css\";\nimport type { BlockStepperProps } from \"./BlockStepper.types\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\n\ntype StepState = \"complete\" | \"current\" | \"upcoming\";\n\n/**\n * Multi-step progress (create a world, set up a server). Completed steps show a\n * check and can be revisited when `onStepClick` is set; the current step has\n * `aria-current=\"step\"`.\n */\nexport const BlockStepper = forwardRef<HTMLElement, BlockStepperProps>(function BlockStepper(\n { steps, current, onStepClick, orientation = \"horizontal\", label, className, ...rest },\n ref,\n) {\n const m = useBlockUIMessages();\n return (\n <nav\n ref={ref}\n aria-label={label ?? m.stepper.label}\n className={cx(styles.stepper, className)}\n data-orientation={orientation}\n {...rest}\n >\n <ol className={styles.list}>\n {steps.map((step, index) => {\n const state: StepState =\n index < current ? \"complete\" : index === current ? \"current\" : \"upcoming\";\n const marker = (\n <span className={styles.marker} aria-hidden=\"true\">\n {state === \"complete\" ? <CheckIcon size={16} /> : (step.icon ?? index + 1)}\n </span>\n );\n const text = (\n <span className={styles.text}>\n <span className={styles.label}>{step.label}</span>\n {/* The space keeps label and description apart for screen readers; flex hides it. */}\n {step.description ? (\n <>\n {\" \"}\n <span className={styles.description}>{step.description}</span>\n </>\n ) : null}\n {state === \"complete\" ? (\n <span className=\"block-visually-hidden\"> (completed)</span>\n ) : null}\n </span>\n );\n return (\n <li\n key={step.id}\n className={styles.step}\n data-state={state}\n aria-current={state === \"current\" ? \"step\" : undefined}\n >\n {state === \"complete\" && onStepClick ? (\n <button type=\"button\" className={styles.content} onClick={() => onStepClick(index)}>\n {marker}\n {text}\n </button>\n ) : (\n <span className={styles.content}>\n {marker}\n {text}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n});\n"],"mappings":";;;;;;;;;;;;AAcA,IAAa,eAAe,WAA2C,SAAS,aAC9E,EAAE,OAAO,SAAS,aAAa,cAAc,cAAc,OAAO,WAAW,GAAG,QAChF,KACA;CACA,MAAM,IAAI,mBAAmB;CAC7B,OACE,oBAAC,OAAD;EACO;EACL,cAAY,SAAS,EAAE,QAAQ;EAC/B,WAAW,GAAGA,4BAAO,SAAS,SAAS;EACvC,oBAAkB;EAClB,GAAI;EAEJ,UAAA,oBAAC,MAAD;GAAI,WAAWA,4BAAO;GACnB,UAAA,MAAM,KAAK,MAAM,UAAU;IAC1B,MAAM,QACJ,QAAQ,UAAU,aAAa,UAAU,UAAU,YAAY;IACjE,MAAM,SACJ,oBAAC,QAAD;KAAM,WAAWA,4BAAO;KAAQ,eAAY;KACzC,UAAA,UAAU,aAAa,oBAAC,WAAD,EAAW,MAAM,GAAK,CAAA,IAAK,KAAK,QAAQ,QAAQ;IACpE,CAAA;IAER,MAAM,OACJ,qBAAC,QAAD;KAAM,WAAWA,4BAAO;KAAxB,UAAA;MACE,oBAAC,QAAD;OAAM,WAAWA,4BAAO;OAAQ,UAAA,KAAK;MAAY,CAAA;MAEhD,KAAK,cACJ,qBAAAC,YAAA,EAAA,UAAA,CACG,KACD,oBAAC,QAAD;OAAM,WAAWD,4BAAO;OAAc,UAAA,KAAK;MAAkB,CAAA,CAC7D,EAAA,CAAA,IACA;MACH,UAAU,aACT,oBAAC,QAAD;OAAM,WAAU;OAAwB,UAAA;MAAkB,CAAA,IACxD;KACA;;IAER,OACE,oBAAC,MAAD;KAEE,WAAWA,4BAAO;KAClB,cAAY;KACZ,gBAAc,UAAU,YAAY,SAAS,KAAA;KAE5C,UAAA,UAAU,cAAc,cACvB,qBAAC,UAAD;MAAQ,MAAK;MAAS,WAAWA,4BAAO;MAAS,eAAe,YAAY,KAAK;MAAjF,UAAA,CACG,QACA,IACK;KAER,CAAA,IAAA,qBAAC,QAAD;MAAM,WAAWA,4BAAO;MAAxB,UAAA,CACG,QACA,IACG;;IAEN,GAhBG,KAAK,EAgBR;GAER,CAAC;EACC,CAAA;CACD,CAAA;AAET,CAAC"}
@@ -13,7 +13,7 @@ export interface BlockStepperProps extends HTMLAttributes<HTMLElement> {
13
13
  onStepClick?: (index: number) => void;
14
14
  /** @default "horizontal" */
15
15
  orientation?: "horizontal" | "vertical";
16
- /** Accessible name of the progress list. @default "Progress" */
16
+ /** Accessible name of the progress list. @default messages.stepper.label ("Progress") */
17
17
  label?: string;
18
18
  }
19
19
  //# sourceMappingURL=BlockStepper.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockStepper.types.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockStepper/BlockStepper.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACpE,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,4BAA4B;IAC5B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"BlockStepper.types.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/BlockStepper/BlockStepper.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACpE,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,4BAA4B;IAC5B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumb.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/Breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,4EAA4E;AAC5E,eAAO,MAAM,UAAU,yGA+CrB,CAAC"}
1
+ {"version":3,"file":"Breadcrumb.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/Breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,4EAA4E;AAC5E,eAAO,MAAM,UAAU,yGAqDrB,CAAC"}
@@ -1,14 +1,16 @@
1
1
  import { cx } from "../../../utils/cx.js";
2
+ import { useBlockUIMessages } from "../../../provider/context.js";
2
3
  import Breadcrumb_module_default from "./Breadcrumb.module.js";
3
4
  import { forwardRef } from "react";
4
5
  import { ChevronRightIcon } from "@malilion/block-ui-icons";
5
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
7
  //#region src/components/navigation/Breadcrumb/Breadcrumb.tsx
7
8
  /** Breadcrumb trail. The last item is marked with `aria-current="page"`. */
8
- var Breadcrumb = forwardRef(function Breadcrumb({ items, separator, label = "Breadcrumb", className, ...rest }, ref) {
9
+ var Breadcrumb = forwardRef(function Breadcrumb({ items, separator, label, className, ...rest }, ref) {
10
+ const m = useBlockUIMessages();
9
11
  return /* @__PURE__ */ jsx("nav", {
10
12
  ref,
11
- "aria-label": label,
13
+ "aria-label": label ?? m.breadcrumb.label,
12
14
  className: cx(Breadcrumb_module_default.breadcrumb, className),
13
15
  ...rest,
14
16
  children: /* @__PURE__ */ jsx("ol", {
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumb.js","names":["styles","_Fragment"],"sources":["../../../../src/components/navigation/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["import { ChevronRightIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport styles from \"./Breadcrumb.module.css\";\nimport type { BreadcrumbProps } from \"./Breadcrumb.types\";\n\n/** Breadcrumb trail. The last item is marked with `aria-current=\"page\"`. */\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(function Breadcrumb(\n { items, separator, label = \"Breadcrumb\", className, ...rest },\n ref,\n) {\n return (\n <nav ref={ref} aria-label={label} className={cx(styles.breadcrumb, className)} {...rest}>\n <ol className={styles.list}>\n {items.map((item, index) => {\n const current = index === items.length - 1;\n const content = (\n <>\n {item.icon ? (\n <span className={styles.icon} aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : null}\n <span>{item.label}</span>\n </>\n );\n return (\n <li key={index} className={styles.item}>\n {current ? (\n <span className={styles.current} aria-current=\"page\">\n {content}\n </span>\n ) : item.href !== undefined ? (\n <a href={item.href} onClick={item.onClick} className={styles.link}>\n {content}\n </a>\n ) : item.onClick ? (\n <button type=\"button\" onClick={item.onClick} className={styles.link}>\n {content}\n </button>\n ) : (\n <span className={styles.text}>{content}</span>\n )}\n {!current ? (\n <span className={styles.separator} aria-hidden=\"true\">\n {separator ?? <ChevronRightIcon size={16} />}\n </span>\n ) : null}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n});\n"],"mappings":";;;;;;;AAOA,IAAa,aAAa,WAAyC,SAAS,WAC1E,EAAE,OAAO,WAAW,QAAQ,cAAc,WAAW,GAAG,QACxD,KACA;CACA,OACE,oBAAC,OAAD;EAAU;EAAK,cAAY;EAAO,WAAW,GAAGA,0BAAO,YAAY,SAAS;EAAG,GAAI;EACjF,UAAA,oBAAC,MAAD;GAAI,WAAWA,0BAAO;GACnB,UAAA,MAAM,KAAK,MAAM,UAAU;IAC1B,MAAM,UAAU,UAAU,MAAM,SAAS;IACzC,MAAM,UACJ,qBAAAC,YAAA,EAAA,UAAA,CACG,KAAK,OACJ,oBAAC,QAAD;KAAM,WAAWD,0BAAO;KAAM,eAAY;KACvC,UAAA,KAAK;IACF,CAAA,IACJ,MACJ,oBAAC,QAAD,EAAA,UAAO,KAAK,MAAY,CAAA,CACxB,EAAA,CAAA;IAEJ,OACE,qBAAC,MAAD;KAAgB,WAAWA,0BAAO;KAAlC,UAAA,CACG,UACC,oBAAC,QAAD;MAAM,WAAWA,0BAAO;MAAS,gBAAa;MAC3C,UAAA;KACG,CAAA,IACJ,KAAK,SAAS,KAAA,IAChB,oBAAC,KAAD;MAAG,MAAM,KAAK;MAAM,SAAS,KAAK;MAAS,WAAWA,0BAAO;MAC1D,UAAA;KACA,CAAA,IACD,KAAK,UACP,oBAAC,UAAD;MAAQ,MAAK;MAAS,SAAS,KAAK;MAAS,WAAWA,0BAAO;MAC5D,UAAA;KACK,CAAA,IAER,oBAAC,QAAD;MAAM,WAAWA,0BAAO;MAAO,UAAA;KAAc,CAAA,GAE9C,CAAC,UACA,oBAAC,QAAD;MAAM,WAAWA,0BAAO;MAAW,eAAY;MAC5C,UAAA,aAAa,oBAAC,kBAAD,EAAkB,MAAM,GAAK,CAAA;KACvC,CAAA,IACJ,IACF;IArBK,GAAA,KAqBL;GAER,CAAC;EACC,CAAA;CACD,CAAA;AAET,CAAC"}
1
+ {"version":3,"file":"Breadcrumb.js","names":["styles","_Fragment"],"sources":["../../../../src/components/navigation/Breadcrumb/Breadcrumb.tsx"],"sourcesContent":["import { ChevronRightIcon } from \"@malilion/block-ui-icons\";\nimport { forwardRef } from \"react\";\nimport { cx } from \"../../../utils/cx\";\nimport styles from \"./Breadcrumb.module.css\";\nimport type { BreadcrumbProps } from \"./Breadcrumb.types\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\n\n/** Breadcrumb trail. The last item is marked with `aria-current=\"page\"`. */\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(function Breadcrumb(\n { items, separator, label, className, ...rest },\n ref,\n) {\n const m = useBlockUIMessages();\n return (\n <nav\n ref={ref}\n aria-label={label ?? m.breadcrumb.label}\n className={cx(styles.breadcrumb, className)}\n {...rest}\n >\n <ol className={styles.list}>\n {items.map((item, index) => {\n const current = index === items.length - 1;\n const content = (\n <>\n {item.icon ? (\n <span className={styles.icon} aria-hidden=\"true\">\n {item.icon}\n </span>\n ) : null}\n <span>{item.label}</span>\n </>\n );\n return (\n <li key={index} className={styles.item}>\n {current ? (\n <span className={styles.current} aria-current=\"page\">\n {content}\n </span>\n ) : item.href !== undefined ? (\n <a href={item.href} onClick={item.onClick} className={styles.link}>\n {content}\n </a>\n ) : item.onClick ? (\n <button type=\"button\" onClick={item.onClick} className={styles.link}>\n {content}\n </button>\n ) : (\n <span className={styles.text}>{content}</span>\n )}\n {!current ? (\n <span className={styles.separator} aria-hidden=\"true\">\n {separator ?? <ChevronRightIcon size={16} />}\n </span>\n ) : null}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n});\n"],"mappings":";;;;;;;;AAQA,IAAa,aAAa,WAAyC,SAAS,WAC1E,EAAE,OAAO,WAAW,OAAO,WAAW,GAAG,QACzC,KACA;CACA,MAAM,IAAI,mBAAmB;CAC7B,OACE,oBAAC,OAAD;EACO;EACL,cAAY,SAAS,EAAE,WAAW;EAClC,WAAW,GAAGA,0BAAO,YAAY,SAAS;EAC1C,GAAI;EAEJ,UAAA,oBAAC,MAAD;GAAI,WAAWA,0BAAO;GACnB,UAAA,MAAM,KAAK,MAAM,UAAU;IAC1B,MAAM,UAAU,UAAU,MAAM,SAAS;IACzC,MAAM,UACJ,qBAAAC,YAAA,EAAA,UAAA,CACG,KAAK,OACJ,oBAAC,QAAD;KAAM,WAAWD,0BAAO;KAAM,eAAY;KACvC,UAAA,KAAK;IACF,CAAA,IACJ,MACJ,oBAAC,QAAD,EAAA,UAAO,KAAK,MAAY,CAAA,CACxB,EAAA,CAAA;IAEJ,OACE,qBAAC,MAAD;KAAgB,WAAWA,0BAAO;KAAlC,UAAA,CACG,UACC,oBAAC,QAAD;MAAM,WAAWA,0BAAO;MAAS,gBAAa;MAC3C,UAAA;KACG,CAAA,IACJ,KAAK,SAAS,KAAA,IAChB,oBAAC,KAAD;MAAG,MAAM,KAAK;MAAM,SAAS,KAAK;MAAS,WAAWA,0BAAO;MAC1D,UAAA;KACA,CAAA,IACD,KAAK,UACP,oBAAC,UAAD;MAAQ,MAAK;MAAS,SAAS,KAAK;MAAS,WAAWA,0BAAO;MAC5D,UAAA;KACK,CAAA,IAER,oBAAC,QAAD;MAAM,WAAWA,0BAAO;MAAO,UAAA;KAAc,CAAA,GAE9C,CAAC,UACA,oBAAC,QAAD;MAAM,WAAWA,0BAAO;MAAW,eAAY;MAC5C,UAAA,aAAa,oBAAC,kBAAD,EAAkB,MAAM,GAAK,CAAA;KACvC,CAAA,IACJ,IACF;IArBK,GAAA,KAqBL;GAER,CAAC;EACC,CAAA;CACD,CAAA;AAET,CAAC"}
@@ -10,7 +10,7 @@ export interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {
10
10
  items: BreadcrumbItem[];
11
11
  /** Separator between items. Defaults to a pixel chevron. */
12
12
  separator?: ReactNode;
13
- /** Accessible name. @default "Breadcrumb" */
13
+ /** Accessible name. @default messages.breadcrumb.label ("Breadcrumb") */
14
14
  label?: string;
15
15
  }
16
16
  //# sourceMappingURL=Breadcrumb.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumb.types.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/Breadcrumb/Breadcrumb.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACnD,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,WAAW,CAAC;IAClE,sDAAsD;IACtD,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"Breadcrumb.types.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/Breadcrumb/Breadcrumb.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEnE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACnD,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,WAAW,CAAC;IAClE,sDAAsD;IACtD,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"HotbarNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/HotbarNavigation/HotbarNavigation.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,+GAmF5B,CAAC"}
1
+ {"version":3,"file":"HotbarNavigation.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/HotbarNavigation/HotbarNavigation.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGtE,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,+GAoF5B,CAAC"}
@@ -1,11 +1,13 @@
1
1
  import { cx } from "../../../utils/cx.js";
2
+ import { useBlockUIMessages } from "../../../provider/context.js";
2
3
  import { useControllableState } from "../../../hooks/useControllableState.js";
3
4
  import HotbarNavigation_module_default from "./HotbarNavigation.module.js";
4
5
  import { forwardRef } from "react";
5
6
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
6
7
  //#region src/components/navigation/HotbarNavigation/HotbarNavigation.tsx
7
8
  /** Mobile bottom navigation styled as a hotbar (max 5 items). */
8
- var HotbarNavigation = forwardRef(function HotbarNavigation({ items, value, defaultValue, onValueChange, maxItems = 5, fixed = false, mobileOnly = false, label = "Quick navigation", className, ...rest }, ref) {
9
+ var HotbarNavigation = forwardRef(function HotbarNavigation({ items, value, defaultValue, onValueChange, maxItems = 5, fixed = false, mobileOnly = false, label, className, ...rest }, ref) {
10
+ const m = useBlockUIMessages();
9
11
  const visible = items.slice(0, maxItems);
10
12
  const [active, setActive] = useControllableState({
11
13
  value,
@@ -14,7 +16,7 @@ var HotbarNavigation = forwardRef(function HotbarNavigation({ items, value, defa
14
16
  });
15
17
  return /* @__PURE__ */ jsx("nav", {
16
18
  ref,
17
- "aria-label": label,
19
+ "aria-label": label ?? m.hotbarNavigation.label,
18
20
  "data-fixed": fixed || void 0,
19
21
  "data-mobile-only": mobileOnly || void 0,
20
22
  className: cx(HotbarNavigation_module_default.nav, className),
@@ -1 +1 @@
1
- {"version":3,"file":"HotbarNavigation.js","names":["styles","_Fragment"],"sources":["../../../../src/components/navigation/HotbarNavigation/HotbarNavigation.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport { cx } from \"../../../utils/cx\";\nimport styles from \"./HotbarNavigation.module.css\";\nimport type { HotbarNavigationProps } from \"./HotbarNavigation.types\";\n\n/** Mobile bottom navigation styled as a hotbar (max 5 items). */\nexport const HotbarNavigation = forwardRef<HTMLElement, HotbarNavigationProps>(\n function HotbarNavigation(\n {\n items,\n value,\n defaultValue,\n onValueChange,\n maxItems = 5,\n fixed = false,\n mobileOnly = false,\n label = \"Quick navigation\",\n className,\n ...rest\n },\n ref,\n ) {\n const visible = items.slice(0, maxItems);\n const [active, setActive] = useControllableState({\n value,\n defaultValue: defaultValue ?? visible[0]?.id ?? \"\",\n onChange: onValueChange,\n });\n\n return (\n <nav\n ref={ref}\n aria-label={label}\n data-fixed={fixed || undefined}\n data-mobile-only={mobileOnly || undefined}\n className={cx(styles.nav, className)}\n {...rest}\n >\n <ul className={styles.list}>\n {visible.map((item, index) => {\n const current = item.id === active;\n const content = (\n <>\n <span className={styles.slot}>\n <span className={styles.icon} aria-hidden=\"true\">\n {item.icon}\n </span>\n {item.badge !== undefined && item.badge !== null ? (\n <span className={styles.badge} aria-hidden=\"true\">\n {item.badge}\n </span>\n ) : null}\n <span className={styles.key} aria-hidden=\"true\">\n {index + 1}\n </span>\n </span>\n <span className={styles.label}>{item.label}</span>\n {item.badge !== undefined && item.badge !== null ? (\n <>\n {\" \"}\n <span className=\"block-visually-hidden\">({item.badge})</span>\n </>\n ) : null}\n </>\n );\n const shared = {\n className: styles.item,\n \"aria-current\": current ? (\"page\" as const) : undefined,\n \"data-active\": current || undefined,\n onClick: () => setActive(item.id),\n };\n return (\n <li key={item.id} className={styles.listItem}>\n {item.href !== undefined ? (\n <a href={item.href} {...shared}>\n {content}\n </a>\n ) : (\n <button type=\"button\" {...shared}>\n {content}\n </button>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n },\n);\n"],"mappings":";;;;;;;AAOA,IAAa,mBAAmB,WAC9B,SAAS,iBACP,EACE,OACA,OACA,cACA,eACA,WAAW,GACX,QAAQ,OACR,aAAa,OACb,QAAQ,oBACR,WACA,GAAG,QAEL,KACA;CACA,MAAM,UAAU,MAAM,MAAM,GAAG,QAAQ;CACvC,MAAM,CAAC,QAAQ,aAAa,qBAAqB;EAC/C;EACA,cAAc,gBAAgB,QAAQ,EAAE,EAAE,MAAM;EAChD,UAAU;CACZ,CAAC;CAED,OACE,oBAAC,OAAD;EACO;EACL,cAAY;EACZ,cAAY,SAAS,KAAA;EACrB,oBAAkB,cAAc,KAAA;EAChC,WAAW,GAAGA,gCAAO,KAAK,SAAS;EACnC,GAAI;EAEJ,UAAA,oBAAC,MAAD;GAAI,WAAWA,gCAAO;GACnB,UAAA,QAAQ,KAAK,MAAM,UAAU;IAC5B,MAAM,UAAU,KAAK,OAAO;IAC5B,MAAM,UACJ,qBAAAC,YAAA,EAAA,UAAA;KACE,qBAAC,QAAD;MAAM,WAAWD,gCAAO;MAAxB,UAAA;OACE,oBAAC,QAAD;QAAM,WAAWA,gCAAO;QAAM,eAAY;QACvC,UAAA,KAAK;OACF,CAAA;OACL,KAAK,UAAU,KAAA,KAAa,KAAK,UAAU,OAC1C,oBAAC,QAAD;QAAM,WAAWA,gCAAO;QAAO,eAAY;QACxC,UAAA,KAAK;OACF,CAAA,IACJ;OACJ,oBAAC,QAAD;QAAM,WAAWA,gCAAO;QAAK,eAAY;QACtC,UAAA,QAAQ;OACL,CAAA;MACF;;KACN,oBAAC,QAAD;MAAM,WAAWA,gCAAO;MAAQ,UAAA,KAAK;KAAY,CAAA;KAChD,KAAK,UAAU,KAAA,KAAa,KAAK,UAAU,OAC1C,qBAAAC,YAAA,EAAA,UAAA,CACG,KACD,qBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OAAwC;OAAE,KAAK;OAAM;MAAO;KAC5D,CAAA,CAAA,EAAA,CAAA,IACA;IACJ,EAAA,CAAA;IAEJ,MAAM,SAAS;KACb,WAAWD,gCAAO;KAClB,gBAAgB,UAAW,SAAmB,KAAA;KAC9C,eAAe,WAAW,KAAA;KAC1B,eAAe,UAAU,KAAK,EAAE;IAClC;IACA,OACE,oBAAC,MAAD;KAAkB,WAAWA,gCAAO;KACjC,UAAA,KAAK,SAAS,KAAA,IACb,oBAAC,KAAD;MAAG,MAAM,KAAK;MAAM,GAAI;MACrB,UAAA;KACA,CAAA,IAEH,oBAAC,UAAD;MAAQ,MAAK;MAAS,GAAI;MACvB,UAAA;KACK,CAAA;IAER,GAVK,KAAK,EAUV;GAER,CAAC;EACC,CAAA;CACD,CAAA;AAET,CACF"}
1
+ {"version":3,"file":"HotbarNavigation.js","names":["styles","_Fragment"],"sources":["../../../../src/components/navigation/HotbarNavigation/HotbarNavigation.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport { useControllableState } from \"../../../hooks/useControllableState\";\nimport { cx } from \"../../../utils/cx\";\nimport styles from \"./HotbarNavigation.module.css\";\nimport type { HotbarNavigationProps } from \"./HotbarNavigation.types\";\nimport { useBlockUIMessages } from \"../../../provider/context\";\n\n/** Mobile bottom navigation styled as a hotbar (max 5 items). */\nexport const HotbarNavigation = forwardRef<HTMLElement, HotbarNavigationProps>(\n function HotbarNavigation(\n {\n items,\n value,\n defaultValue,\n onValueChange,\n maxItems = 5,\n fixed = false,\n mobileOnly = false,\n label,\n className,\n ...rest\n },\n ref,\n ) {\n const m = useBlockUIMessages();\n const visible = items.slice(0, maxItems);\n const [active, setActive] = useControllableState({\n value,\n defaultValue: defaultValue ?? visible[0]?.id ?? \"\",\n onChange: onValueChange,\n });\n\n return (\n <nav\n ref={ref}\n aria-label={label ?? m.hotbarNavigation.label}\n data-fixed={fixed || undefined}\n data-mobile-only={mobileOnly || undefined}\n className={cx(styles.nav, className)}\n {...rest}\n >\n <ul className={styles.list}>\n {visible.map((item, index) => {\n const current = item.id === active;\n const content = (\n <>\n <span className={styles.slot}>\n <span className={styles.icon} aria-hidden=\"true\">\n {item.icon}\n </span>\n {item.badge !== undefined && item.badge !== null ? (\n <span className={styles.badge} aria-hidden=\"true\">\n {item.badge}\n </span>\n ) : null}\n <span className={styles.key} aria-hidden=\"true\">\n {index + 1}\n </span>\n </span>\n <span className={styles.label}>{item.label}</span>\n {item.badge !== undefined && item.badge !== null ? (\n <>\n {\" \"}\n <span className=\"block-visually-hidden\">({item.badge})</span>\n </>\n ) : null}\n </>\n );\n const shared = {\n className: styles.item,\n \"aria-current\": current ? (\"page\" as const) : undefined,\n \"data-active\": current || undefined,\n onClick: () => setActive(item.id),\n };\n return (\n <li key={item.id} className={styles.listItem}>\n {item.href !== undefined ? (\n <a href={item.href} {...shared}>\n {content}\n </a>\n ) : (\n <button type=\"button\" {...shared}>\n {content}\n </button>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n },\n);\n"],"mappings":";;;;;;;;AAQA,IAAa,mBAAmB,WAC9B,SAAS,iBACP,EACE,OACA,OACA,cACA,eACA,WAAW,GACX,QAAQ,OACR,aAAa,OACb,OACA,WACA,GAAG,QAEL,KACA;CACA,MAAM,IAAI,mBAAmB;CAC7B,MAAM,UAAU,MAAM,MAAM,GAAG,QAAQ;CACvC,MAAM,CAAC,QAAQ,aAAa,qBAAqB;EAC/C;EACA,cAAc,gBAAgB,QAAQ,EAAE,EAAE,MAAM;EAChD,UAAU;CACZ,CAAC;CAED,OACE,oBAAC,OAAD;EACO;EACL,cAAY,SAAS,EAAE,iBAAiB;EACxC,cAAY,SAAS,KAAA;EACrB,oBAAkB,cAAc,KAAA;EAChC,WAAW,GAAGA,gCAAO,KAAK,SAAS;EACnC,GAAI;EAEJ,UAAA,oBAAC,MAAD;GAAI,WAAWA,gCAAO;GACnB,UAAA,QAAQ,KAAK,MAAM,UAAU;IAC5B,MAAM,UAAU,KAAK,OAAO;IAC5B,MAAM,UACJ,qBAAAC,YAAA,EAAA,UAAA;KACE,qBAAC,QAAD;MAAM,WAAWD,gCAAO;MAAxB,UAAA;OACE,oBAAC,QAAD;QAAM,WAAWA,gCAAO;QAAM,eAAY;QACvC,UAAA,KAAK;OACF,CAAA;OACL,KAAK,UAAU,KAAA,KAAa,KAAK,UAAU,OAC1C,oBAAC,QAAD;QAAM,WAAWA,gCAAO;QAAO,eAAY;QACxC,UAAA,KAAK;OACF,CAAA,IACJ;OACJ,oBAAC,QAAD;QAAM,WAAWA,gCAAO;QAAK,eAAY;QACtC,UAAA,QAAQ;OACL,CAAA;MACF;;KACN,oBAAC,QAAD;MAAM,WAAWA,gCAAO;MAAQ,UAAA,KAAK;KAAY,CAAA;KAChD,KAAK,UAAU,KAAA,KAAa,KAAK,UAAU,OAC1C,qBAAAC,YAAA,EAAA,UAAA,CACG,KACD,qBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA;OAAwC;OAAE,KAAK;OAAM;MAAO;KAC5D,CAAA,CAAA,EAAA,CAAA,IACA;IACJ,EAAA,CAAA;IAEJ,MAAM,SAAS;KACb,WAAWD,gCAAO;KAClB,gBAAgB,UAAW,SAAmB,KAAA;KAC9C,eAAe,WAAW,KAAA;KAC1B,eAAe,UAAU,KAAK,EAAE;IAClC;IACA,OACE,oBAAC,MAAD;KAAkB,WAAWA,gCAAO;KACjC,UAAA,KAAK,SAAS,KAAA,IACb,oBAAC,KAAD;MAAG,MAAM,KAAK;MAAM,GAAI;MACrB,UAAA;KACA,CAAA,IAEH,oBAAC,UAAD;MAAQ,MAAK;MAAS,GAAI;MACvB,UAAA;KACK,CAAA;IAER,GAVK,KAAK,EAUV;GAER,CAAC;EACC,CAAA;CACD,CAAA;AAET,CACF"}
@@ -19,7 +19,7 @@ export interface HotbarNavigationProps extends Omit<HTMLAttributes<HTMLElement>,
19
19
  fixed?: boolean;
20
20
  /** Only show below 768px (pair with a responsive `BlockSidebar`). @default false */
21
21
  mobileOnly?: boolean;
22
- /** Accessible name. @default "Quick navigation" */
22
+ /** Accessible name. @default messages.hotbarNavigation.label ("Quick navigation") */
23
23
  label?: string;
24
24
  }
25
25
  //# sourceMappingURL=HotbarNavigation.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HotbarNavigation.types.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/HotbarNavigation/HotbarNavigation.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAC1F,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"HotbarNavigation.types.d.ts","sourceRoot":"","sources":["../../../../src/components/navigation/HotbarNavigation/HotbarNavigation.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,qBAAsB,SAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAC1F,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatWindow.d.ts","sourceRoot":"","sources":["../../../../src/components/social/ChatWindow/ChatWindow.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK1D;;;;GAIG;AACH,eAAO,MAAM,UAAU,4GAmIrB,CAAC"}
1
+ {"version":3,"file":"ChatWindow.d.ts","sourceRoot":"","sources":["../../../../src/components/social/ChatWindow/ChatWindow.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D;;;;GAIG;AACH,eAAO,MAAM,UAAU,4GAqIrB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { cx } from "../../../utils/cx.js";
2
+ import { useBlockUIMessages } from "../../../provider/context.js";
2
3
  import ChatWindow_module_default from "./ChatWindow.module.js";
3
4
  import { forwardRef, useEffect, useId, useLayoutEffect, useRef, useState } from "react";
4
5
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -10,7 +11,9 @@ var STICK_THRESHOLD = 24;
10
11
  * Enter sends, ↑ / ↓ recall sent messages, and the log only auto-scrolls while
11
12
  * the reader is already at the bottom.
12
13
  */
13
- var ChatWindow = forwardRef(function ChatWindow({ messages, onSend, placeholder = "Type a message…", maxLength = 256, showTimestamps = false, size = "md", label = "Chat", className, ...rest }, ref) {
14
+ var ChatWindow = forwardRef(function ChatWindow({ messages, onSend, placeholder, maxLength = 256, showTimestamps = false, size = "md", label: labelProp, className, ...rest }, ref) {
15
+ const m = useBlockUIMessages();
16
+ const label = labelProp ?? m.chatWindow.label;
14
17
  const inputId = useId();
15
18
  const logRef = useRef(null);
16
19
  const stick = useRef(true);
@@ -69,7 +72,7 @@ var ChatWindow = forwardRef(function ChatWindow({ messages, onSend, placeholder
69
72
  children: [/* @__PURE__ */ jsx("div", {
70
73
  ref: logRef,
71
74
  role: "log",
72
- "aria-label": `${label} messages`,
75
+ "aria-label": m.chatWindow.messages(label),
73
76
  tabIndex: 0,
74
77
  className: ChatWindow_module_default.log,
75
78
  children: /* @__PURE__ */ jsx("ol", {
@@ -96,9 +99,9 @@ var ChatWindow = forwardRef(function ChatWindow({ messages, onSend, placeholder
96
99
  "> "
97
100
  ]
98
101
  }) : null,
99
- type === "whisper" && message.author ? /* @__PURE__ */ jsxs("span", {
102
+ type === "whisper" && message.author ? /* @__PURE__ */ jsx("span", {
100
103
  className: ChatWindow_module_default.author,
101
- children: [message.author, " whispers: "]
104
+ children: m.chatWindow.whispers(message.author)
102
105
  }) : null,
103
106
  /* @__PURE__ */ jsx("span", {
104
107
  className: ChatWindow_module_default.text,
@@ -115,14 +118,14 @@ var ChatWindow = forwardRef(function ChatWindow({ messages, onSend, placeholder
115
118
  /* @__PURE__ */ jsx("label", {
116
119
  htmlFor: inputId,
117
120
  className: "block-visually-hidden",
118
- children: "Message"
121
+ children: m.chatWindow.message
119
122
  }),
120
123
  /* @__PURE__ */ jsx("input", {
121
124
  id: inputId,
122
125
  type: "text",
123
126
  value: draft,
124
127
  maxLength,
125
- placeholder,
128
+ placeholder: placeholder ?? m.chatWindow.placeholder,
126
129
  autoComplete: "off",
127
130
  className: ChatWindow_module_default.input,
128
131
  onChange: (event) => {
@@ -134,7 +137,7 @@ var ChatWindow = forwardRef(function ChatWindow({ messages, onSend, placeholder
134
137
  /* @__PURE__ */ jsx("button", {
135
138
  type: "submit",
136
139
  className: ChatWindow_module_default.send,
137
- children: "Send"
140
+ children: m.chatWindow.send
138
141
  })
139
142
  ]
140
143
  }) : null]