@almadar/ui 5.81.0 → 5.83.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 (56) hide show
  1. package/dist/avl/index.cjs +1716 -5789
  2. package/dist/avl/index.js +684 -4757
  3. package/dist/components/core/atoms/Badge.d.ts +3 -0
  4. package/dist/components/core/atoms/Button.d.ts +3 -1
  5. package/dist/components/core/molecules/Tabs.d.ts +3 -1
  6. package/dist/components/core/templates/index.d.ts +0 -10
  7. package/dist/components/game/2d/atoms/GameCard.d.ts +3 -1
  8. package/dist/components/game/2d/molecules/Canvas2D.d.ts +6 -5
  9. package/dist/components/game/2d/molecules/ControlGrid.d.ts +6 -1
  10. package/dist/components/game/2d/molecules/index.d.ts +0 -34
  11. package/dist/components/game/3d/index.cjs +3 -1
  12. package/dist/components/game/3d/index.js +3 -1
  13. package/dist/components/index.cjs +8353 -12451
  14. package/dist/components/index.js +4667 -8731
  15. package/dist/marketing/index.cjs +6 -3
  16. package/dist/marketing/index.d.cts +5 -1
  17. package/dist/marketing/index.js +7 -4
  18. package/dist/providers/index.cjs +1583 -5656
  19. package/dist/providers/index.js +660 -4733
  20. package/dist/runtime/index.cjs +1577 -5650
  21. package/dist/runtime/index.js +664 -4737
  22. package/package.json +1 -1
  23. package/dist/components/game/2d/organisms/BattleBoard.d.ts +0 -132
  24. package/dist/components/game/2d/organisms/BoardgameBoard.d.ts +0 -37
  25. package/dist/components/game/2d/organisms/CastleBoard.d.ts +0 -107
  26. package/dist/components/game/2d/organisms/CityBuilderBoard.d.ts +0 -64
  27. package/dist/components/game/2d/organisms/FishingBoard.d.ts +0 -41
  28. package/dist/components/game/2d/organisms/HexStrategyBoard.d.ts +0 -44
  29. package/dist/components/game/2d/organisms/HolidayRunnerBoard.d.ts +0 -37
  30. package/dist/components/game/2d/organisms/MatchPuzzleBoard.d.ts +0 -37
  31. package/dist/components/game/2d/organisms/MinigolfBoard.d.ts +0 -37
  32. package/dist/components/game/2d/organisms/PinballBoard.d.ts +0 -43
  33. package/dist/components/game/2d/organisms/PirateBoard.d.ts +0 -44
  34. package/dist/components/game/2d/organisms/PlatformerBoard.d.ts +0 -48
  35. package/dist/components/game/2d/organisms/RacingBoard.d.ts +0 -44
  36. package/dist/components/game/2d/organisms/RoguelikeBoard.d.ts +0 -62
  37. package/dist/components/game/2d/organisms/SokobanBoard.d.ts +0 -37
  38. package/dist/components/game/2d/organisms/SpaceShmupBoard.d.ts +0 -44
  39. package/dist/components/game/2d/organisms/SpaceStationBoard.d.ts +0 -37
  40. package/dist/components/game/2d/organisms/SportsBoard.d.ts +0 -37
  41. package/dist/components/game/2d/organisms/TanksBoard.d.ts +0 -39
  42. package/dist/components/game/2d/organisms/TopDownShooterBoard.d.ts +0 -65
  43. package/dist/components/game/2d/organisms/TowerDefenseBoard.d.ts +0 -87
  44. package/dist/components/game/2d/organisms/UncontrolledBattleBoard.d.ts +0 -43
  45. package/dist/components/game/2d/organisms/WorldMapBoard.d.ts +0 -155
  46. package/dist/components/game/2d/templates/BattleTemplate.d.ts +0 -34
  47. package/dist/components/game/2d/templates/CardBattlerTemplate.d.ts +0 -35
  48. package/dist/components/game/2d/templates/CastleTemplate.d.ts +0 -32
  49. package/dist/components/game/2d/templates/CityBuilderTemplate.d.ts +0 -40
  50. package/dist/components/game/2d/templates/PlatformerTemplate.d.ts +0 -27
  51. package/dist/components/game/2d/templates/RoguelikeTemplate.d.ts +0 -23
  52. package/dist/components/game/2d/templates/TopDownShooterTemplate.d.ts +0 -42
  53. package/dist/components/game/2d/templates/TowerDefenseTemplate.d.ts +0 -43
  54. package/dist/components/game/2d/templates/VisualNovelTemplate.d.ts +0 -28
  55. package/dist/components/game/2d/templates/WorldMapTemplate.d.ts +0 -38
  56. package/dist/components/game/shared/hooks/useBattleState.d.ts +0 -47
@@ -3983,6 +3983,7 @@ var Button = React11__default.default.forwardRef(
3983
3983
  rightIcon,
3984
3984
  icon: iconProp,
3985
3985
  iconRight: iconRightProp,
3986
+ iconAsset,
3986
3987
  action,
3987
3988
  actionPayload,
3988
3989
  label,
@@ -3994,7 +3995,8 @@ var Button = React11__default.default.forwardRef(
3994
3995
  const eventBus = useEventBus();
3995
3996
  const leftIconValue = leftIcon || iconProp;
3996
3997
  const rightIconValue = rightIcon || iconRightProp;
3997
- const resolvedLeftIcon = resolveIconProp(leftIconValue, iconSizeStyles[size]);
3998
+ const px = size === "sm" ? 16 : size === "lg" ? 20 : 16;
3999
+ const resolvedLeftIcon = iconAsset?.url ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: iconAsset.url, alt: iconAsset.name ?? iconAsset.category ?? "", width: px, height: px, style: { imageRendering: "pixelated", objectFit: "contain", width: px, height: px }, className: "flex-shrink-0" }) : resolveIconProp(leftIconValue, iconSizeStyles[size]);
3998
4000
  const resolvedRightIcon = resolveIconProp(rightIconValue, iconSizeStyles[size]);
3999
4001
  const handleClick = (e) => {
4000
4002
  if (action) {
@@ -4070,13 +4072,14 @@ var sizeStyles2 = {
4070
4072
  lg: "px-3 py-1.5 text-base"
4071
4073
  };
4072
4074
  var Badge = React11__default.default.forwardRef(
4073
- ({ className, variant = "default", size = "sm", amount, label, icon, children, onRemove, removeLabel, ...props }, ref) => {
4075
+ ({ className, variant = "default", size = "sm", amount, label, icon, iconAsset, children, onRemove, removeLabel, ...props }, ref) => {
4074
4076
  const iconSizes = {
4075
4077
  sm: "h-icon-default w-icon-default",
4076
4078
  md: "h-icon-default w-icon-default",
4077
4079
  lg: "h-icon-default w-icon-default"
4078
4080
  };
4079
- const resolvedIcon = typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: icon, className: iconSizes[size] }) : icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon, className: iconSizes[size] }) : null;
4081
+ const iconPx = size === "lg" ? 20 : 16;
4082
+ const resolvedIcon = iconAsset?.url ? /* @__PURE__ */ jsxRuntime.jsx("img", { src: iconAsset.url, alt: iconAsset.name ?? iconAsset.category ?? "", width: iconPx, height: iconPx, style: { imageRendering: "pixelated", objectFit: "contain", width: iconPx, height: iconPx }, className: "flex-shrink-0" }) : typeof icon === "string" ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { name: icon, className: iconSizes[size] }) : icon ? /* @__PURE__ */ jsxRuntime.jsx(Icon, { icon, className: iconSizes[size] }) : null;
4080
4083
  return /* @__PURE__ */ jsxRuntime.jsxs(
4081
4084
  "span",
4082
4085
  {
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { EventKey, EventPayload, AssetUrl } from '@almadar/core';
2
+ import { EventKey, EventPayload, AssetUrl, Asset } from '@almadar/core';
3
3
  import { LucideIcon } from 'lucide-react';
4
4
 
5
5
  /**
@@ -259,6 +259,8 @@ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
259
259
  icon?: IconInput;
260
260
  /** Alias for rightIcon */
261
261
  iconRight?: IconInput;
262
+ /** Asset image rendered as the leading icon; takes precedence over icon/leftIcon when provided. */
263
+ iconAsset?: Asset;
262
264
  /** Declarative event name — emits UI:{action} via eventBus on click */
263
265
  action?: EventKey;
264
266
  /** Payload to include with the action event */
@@ -287,6 +289,8 @@ interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
287
289
  label?: string | number;
288
290
  /** Lucide icon component or canonical kebab-case icon name string */
289
291
  icon?: IconInput;
292
+ /** Asset image rendered as the badge icon; takes precedence over icon when provided. */
293
+ iconAsset?: Asset;
290
294
  /** When set, renders a small X button on the right of the badge that
291
295
  * invokes this handler — turns the badge into a removable chip.
292
296
  * Used by the TagInput molecule and other "list of removable values"
@@ -1,6 +1,6 @@
1
1
  import React11, { createContext, useCallback, useState, useRef, useEffect, useContext, useMemo, useSyncExternalStore, useId } from 'react';
2
2
  import { createLogger } from '@almadar/logger';
3
- import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
3
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
4
4
  import * as LucideIcons2 from 'lucide-react';
5
5
  import { Loader2, X } from 'lucide-react';
6
6
 
@@ -3959,6 +3959,7 @@ var Button = React11.forwardRef(
3959
3959
  rightIcon,
3960
3960
  icon: iconProp,
3961
3961
  iconRight: iconRightProp,
3962
+ iconAsset,
3962
3963
  action,
3963
3964
  actionPayload,
3964
3965
  label,
@@ -3970,7 +3971,8 @@ var Button = React11.forwardRef(
3970
3971
  const eventBus = useEventBus();
3971
3972
  const leftIconValue = leftIcon || iconProp;
3972
3973
  const rightIconValue = rightIcon || iconRightProp;
3973
- const resolvedLeftIcon = resolveIconProp(leftIconValue, iconSizeStyles[size]);
3974
+ const px = size === "sm" ? 16 : size === "lg" ? 20 : 16;
3975
+ const resolvedLeftIcon = iconAsset?.url ? /* @__PURE__ */ jsx("img", { src: iconAsset.url, alt: iconAsset.name ?? iconAsset.category ?? "", width: px, height: px, style: { imageRendering: "pixelated", objectFit: "contain", width: px, height: px }, className: "flex-shrink-0" }) : resolveIconProp(leftIconValue, iconSizeStyles[size]);
3974
3976
  const resolvedRightIcon = resolveIconProp(rightIconValue, iconSizeStyles[size]);
3975
3977
  const handleClick = (e) => {
3976
3978
  if (action) {
@@ -4046,13 +4048,14 @@ var sizeStyles2 = {
4046
4048
  lg: "px-3 py-1.5 text-base"
4047
4049
  };
4048
4050
  var Badge = React11.forwardRef(
4049
- ({ className, variant = "default", size = "sm", amount, label, icon, children, onRemove, removeLabel, ...props }, ref) => {
4051
+ ({ className, variant = "default", size = "sm", amount, label, icon, iconAsset, children, onRemove, removeLabel, ...props }, ref) => {
4050
4052
  const iconSizes = {
4051
4053
  sm: "h-icon-default w-icon-default",
4052
4054
  md: "h-icon-default w-icon-default",
4053
4055
  lg: "h-icon-default w-icon-default"
4054
4056
  };
4055
- const resolvedIcon = typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, className: iconSizes[size] }) : icon ? /* @__PURE__ */ jsx(Icon, { icon, className: iconSizes[size] }) : null;
4057
+ const iconPx = size === "lg" ? 20 : 16;
4058
+ const resolvedIcon = iconAsset?.url ? /* @__PURE__ */ jsx("img", { src: iconAsset.url, alt: iconAsset.name ?? iconAsset.category ?? "", width: iconPx, height: iconPx, style: { imageRendering: "pixelated", objectFit: "contain", width: iconPx, height: iconPx }, className: "flex-shrink-0" }) : typeof icon === "string" ? /* @__PURE__ */ jsx(Icon, { name: icon, className: iconSizes[size] }) : icon ? /* @__PURE__ */ jsx(Icon, { icon, className: iconSizes[size] }) : null;
4056
4059
  return /* @__PURE__ */ jsxs(
4057
4060
  "span",
4058
4061
  {