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