@malilion/block-ui-react 0.3.0 → 0.4.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 (90) hide show
  1. package/dist/components/display/Avatar/Avatar.d.ts +7 -0
  2. package/dist/components/display/Avatar/Avatar.d.ts.map +1 -0
  3. package/dist/components/display/Avatar/Avatar.js +53 -0
  4. package/dist/components/display/Avatar/Avatar.js.map +1 -0
  5. package/dist/components/display/Avatar/Avatar.module.js +17 -0
  6. package/dist/components/display/Avatar/Avatar.module.js.map +1 -0
  7. package/dist/components/display/Avatar/Avatar.types.d.ts +18 -0
  8. package/dist/components/display/Avatar/Avatar.types.d.ts.map +1 -0
  9. package/dist/components/display/Avatar/Avatar.types.js +11 -0
  10. package/dist/components/display/Avatar/Avatar.types.js.map +1 -0
  11. package/dist/components/display/Avatar/Avatar.utils.d.ts +7 -0
  12. package/dist/components/display/Avatar/Avatar.utils.d.ts.map +1 -0
  13. package/dist/components/display/Avatar/Avatar.utils.js +28 -0
  14. package/dist/components/display/Avatar/Avatar.utils.js.map +1 -0
  15. package/dist/components/display/Avatar/index.d.ts +5 -0
  16. package/dist/components/display/Avatar/index.d.ts.map +1 -0
  17. package/dist/components/display/index.d.ts +1 -0
  18. package/dist/components/display/index.d.ts.map +1 -1
  19. package/dist/components/feedback/Drawer/Drawer.d.ts +7 -0
  20. package/dist/components/feedback/Drawer/Drawer.d.ts.map +1 -0
  21. package/dist/components/feedback/Drawer/Drawer.js +78 -0
  22. package/dist/components/feedback/Drawer/Drawer.js.map +1 -0
  23. package/dist/components/feedback/Drawer/Drawer.module.js +25 -0
  24. package/dist/components/feedback/Drawer/Drawer.module.js.map +1 -0
  25. package/dist/components/feedback/Drawer/Drawer.types.d.ts +21 -0
  26. package/dist/components/feedback/Drawer/Drawer.types.d.ts.map +1 -0
  27. package/dist/components/feedback/Drawer/index.d.ts +3 -0
  28. package/dist/components/feedback/Drawer/index.d.ts.map +1 -0
  29. package/dist/components/feedback/EmptyState/EmptyState.d.ts +4 -0
  30. package/dist/components/feedback/EmptyState/EmptyState.d.ts.map +1 -0
  31. package/dist/components/feedback/EmptyState/EmptyState.js +35 -0
  32. package/dist/components/feedback/EmptyState/EmptyState.js.map +1 -0
  33. package/dist/components/feedback/EmptyState/EmptyState.module.js +17 -0
  34. package/dist/components/feedback/EmptyState/EmptyState.module.js.map +1 -0
  35. package/dist/components/feedback/EmptyState/EmptyState.types.d.ts +14 -0
  36. package/dist/components/feedback/EmptyState/EmptyState.types.d.ts.map +1 -0
  37. package/dist/components/feedback/EmptyState/index.d.ts +3 -0
  38. package/dist/components/feedback/EmptyState/index.d.ts.map +1 -0
  39. package/dist/components/feedback/Modal/BlockModal.d.ts.map +1 -1
  40. package/dist/components/feedback/Modal/BlockModal.js +3 -12
  41. package/dist/components/feedback/Modal/BlockModal.js.map +1 -1
  42. package/dist/components/feedback/Skeleton/Skeleton.d.ts +7 -0
  43. package/dist/components/feedback/Skeleton/Skeleton.d.ts.map +1 -0
  44. package/dist/components/feedback/Skeleton/Skeleton.js +33 -0
  45. package/dist/components/feedback/Skeleton/Skeleton.js.map +1 -0
  46. package/dist/components/feedback/Skeleton/Skeleton.module.js +12 -0
  47. package/dist/components/feedback/Skeleton/Skeleton.module.js.map +1 -0
  48. package/dist/components/feedback/Skeleton/Skeleton.types.d.ts +14 -0
  49. package/dist/components/feedback/Skeleton/Skeleton.types.d.ts.map +1 -0
  50. package/dist/components/feedback/Skeleton/Skeleton.types.js +11 -0
  51. package/dist/components/feedback/Skeleton/Skeleton.types.js.map +1 -0
  52. package/dist/components/feedback/Skeleton/index.d.ts +4 -0
  53. package/dist/components/feedback/Skeleton/index.d.ts.map +1 -0
  54. package/dist/components/feedback/index.d.ts +3 -0
  55. package/dist/components/feedback/index.d.ts.map +1 -1
  56. package/dist/components/forms/NumberInput/NumberInput.d.ts +8 -0
  57. package/dist/components/forms/NumberInput/NumberInput.d.ts.map +1 -0
  58. package/dist/components/forms/NumberInput/NumberInput.js +122 -0
  59. package/dist/components/forms/NumberInput/NumberInput.js.map +1 -0
  60. package/dist/components/forms/NumberInput/NumberInput.module.js +13 -0
  61. package/dist/components/forms/NumberInput/NumberInput.module.js.map +1 -0
  62. package/dist/components/forms/NumberInput/NumberInput.types.d.ts +20 -0
  63. package/dist/components/forms/NumberInput/NumberInput.types.d.ts.map +1 -0
  64. package/dist/components/forms/NumberInput/NumberInput.utils.d.ts +11 -0
  65. package/dist/components/forms/NumberInput/NumberInput.utils.d.ts.map +1 -0
  66. package/dist/components/forms/NumberInput/NumberInput.utils.js +26 -0
  67. package/dist/components/forms/NumberInput/NumberInput.utils.js.map +1 -0
  68. package/dist/components/forms/NumberInput/index.d.ts +3 -0
  69. package/dist/components/forms/NumberInput/index.d.ts.map +1 -0
  70. package/dist/components/forms/index.d.ts +1 -0
  71. package/dist/components/forms/index.d.ts.map +1 -1
  72. package/dist/components/layout/Accordion/Accordion.d.ts +7 -0
  73. package/dist/components/layout/Accordion/Accordion.d.ts.map +1 -0
  74. package/dist/components/layout/Accordion/Accordion.js +95 -0
  75. package/dist/components/layout/Accordion/Accordion.js.map +1 -0
  76. package/dist/components/layout/Accordion/Accordion.module.js +23 -0
  77. package/dist/components/layout/Accordion/Accordion.module.js.map +1 -0
  78. package/dist/components/layout/Accordion/Accordion.types.d.ts +21 -0
  79. package/dist/components/layout/Accordion/Accordion.types.d.ts.map +1 -0
  80. package/dist/components/layout/Accordion/index.d.ts +3 -0
  81. package/dist/components/layout/Accordion/index.d.ts.map +1 -0
  82. package/dist/components/layout/index.d.ts +1 -0
  83. package/dist/components/layout/index.d.ts.map +1 -1
  84. package/dist/hooks/useScrollLock.d.ts +6 -0
  85. package/dist/hooks/useScrollLock.d.ts.map +1 -0
  86. package/dist/hooks/useScrollLock.js +26 -0
  87. package/dist/hooks/useScrollLock.js.map +1 -0
  88. package/dist/index.js +10 -1
  89. package/dist/styles.css +459 -0
  90. package/package.json +4 -4
package/dist/index.js CHANGED
@@ -19,6 +19,7 @@ import { BlockRadio, BlockRadioGroup } from "./components/forms/BlockRadio/Block
19
19
  import { BlockToggle } from "./components/forms/BlockToggle/BlockToggle.js";
20
20
  import { clamp, formatNumber, ratio } from "./utils/number.js";
21
21
  import { BlockSlider } from "./components/forms/BlockSlider/BlockSlider.js";
22
+ import { NumberInput } from "./components/forms/NumberInput/NumberInput.js";
22
23
  import { durabilityLevel } from "./components/inventory/DurabilityBar/DurabilityBar.utils.js";
23
24
  import { DurabilityBar } from "./components/inventory/DurabilityBar/DurabilityBar.js";
24
25
  import { describeItemStack } from "./components/inventory/ItemStack/ItemStack.utils.js";
@@ -88,6 +89,9 @@ import { tooltipPlacements } from "./components/display/BlockTooltip/BlockToolti
88
89
  import { BlockTable } from "./components/display/BlockTable/BlockTable.js";
89
90
  import { skillState } from "./components/display/SkillTree/SkillTree.utils.js";
90
91
  import { SkillTree } from "./components/display/SkillTree/SkillTree.js";
92
+ import { initials } from "./components/display/Avatar/Avatar.utils.js";
93
+ import { Avatar } from "./components/display/Avatar/Avatar.js";
94
+ import { avatarStatuses } from "./components/display/Avatar/Avatar.types.js";
91
95
  import { ChatWindow } from "./components/social/ChatWindow/ChatWindow.js";
92
96
  import { chatMessageTypes } from "./components/social/ChatWindow/ChatWindow.types.js";
93
97
  import { suggestCommands } from "./components/social/CommandConsole/CommandConsole.utils.js";
@@ -104,10 +108,15 @@ import { BlockStack } from "./components/layout/BlockStack/BlockStack.js";
104
108
  import { stackGaps } from "./components/layout/BlockStack/BlockStack.types.js";
105
109
  import { BlockDivider } from "./components/layout/BlockDivider/BlockDivider.js";
106
110
  import { dividerVariants } from "./components/layout/BlockDivider/BlockDivider.types.js";
111
+ import { Accordion } from "./components/layout/Accordion/Accordion.js";
107
112
  import { alertVariants } from "./components/feedback/Alert/BlockAlert.types.js";
108
113
  import { useFocusTrap } from "./hooks/useFocusTrap.js";
109
114
  import { BlockModal } from "./components/feedback/Modal/BlockModal.js";
110
115
  import { ConfirmDialog } from "./components/feedback/ConfirmDialog/ConfirmDialog.js";
111
116
  import { progressVariants } from "./components/feedback/Progress/BlockProgress.types.js";
112
117
  import { BlockLoading } from "./components/feedback/Loading/BlockLoading.js";
113
- export { AchievementCard, Anvil, ArmorBar, BiomeIndicator, BlockAlert, BlockBadge, BlockButton, BlockCard, BlockCheckbox, BlockDivider, BlockInput, BlockLoading, BlockMenu, BlockModal, BlockPagination, BlockPanel, BlockProgress, BlockRadio, BlockRadioGroup, BlockSelect, BlockSidebar, BlockSlider, BlockStack, BlockTable, BlockTabs, BlockTextarea, BlockToaster, BlockToggle, BlockTooltip, BlockUIProvider, BossBar, Breadcrumb, BrewingStand, ChatWindow, CommandConsole, ConfirmDialog, CoordinatesHUD, CraftingGrid, CraftingResult, CraftingSlot, CraftingTable, DEFAULT_TOAST_DURATION, DayNightIndicator, DurabilityBar, EnchantingTable, Furnace, HealthBar, Hotbar, HotbarNavigation, HungerBar, IconButton, Inventory, InventoryGrid, InventorySection, InventorySlot, ItemStack, ItemTooltip, MiniMap, PlayerCard, PlayerHUD, QuestCard, RecipeBook, Scoreboard, ServerBrowser, ServerCard, SidebarItem, SkillTree, TradingUI, WeatherIndicator, WorldBrowser, WorldCard, XPBar, alertVariants, anvilCostState, badgeVariants, biomeTypes, blockButtonVariants, bossBarColors, bossBarSegments, brewingStates, browseServers, browseWorlds, cardMaterials, chatMessageTypes, clamp, compassName, consoleEntryKinds, cx, dayPhase, describeItemStack, describeMarker, dividerVariants, durabilityLevel, facings, filterRecipes, formatClock, formatNumber, furnaceStates, getBrewingState, getFurnaceState, getPaginationRange, itemRarities, miniMapMarkerKinds, miniMapTerrain, normalizeRarity, pingQuality, progressVariants, ratio, skillState, stackGaps, suggestCommands, toast, tooltipPlacements, useBlockUI, useControllableState, useDigitHotkeys, useFocusTrap, useMediaQuery, usePortalContainer, useToasts, villagerLevels, weatherTypes };
118
+ import { Drawer } from "./components/feedback/Drawer/Drawer.js";
119
+ import { EmptyState } from "./components/feedback/EmptyState/EmptyState.js";
120
+ import { Skeleton } from "./components/feedback/Skeleton/Skeleton.js";
121
+ import { skeletonVariants } from "./components/feedback/Skeleton/Skeleton.types.js";
122
+ export { Accordion, AchievementCard, Anvil, ArmorBar, Avatar, BiomeIndicator, BlockAlert, BlockBadge, BlockButton, BlockCard, BlockCheckbox, BlockDivider, BlockInput, BlockLoading, BlockMenu, BlockModal, BlockPagination, BlockPanel, BlockProgress, BlockRadio, BlockRadioGroup, BlockSelect, BlockSidebar, BlockSlider, BlockStack, BlockTable, BlockTabs, BlockTextarea, BlockToaster, BlockToggle, BlockTooltip, BlockUIProvider, BossBar, Breadcrumb, BrewingStand, ChatWindow, CommandConsole, ConfirmDialog, CoordinatesHUD, CraftingGrid, CraftingResult, CraftingSlot, CraftingTable, DEFAULT_TOAST_DURATION, DayNightIndicator, Drawer, DurabilityBar, EmptyState, EnchantingTable, Furnace, HealthBar, Hotbar, HotbarNavigation, HungerBar, IconButton, Inventory, InventoryGrid, InventorySection, InventorySlot, ItemStack, ItemTooltip, MiniMap, NumberInput, PlayerCard, PlayerHUD, QuestCard, RecipeBook, Scoreboard, ServerBrowser, ServerCard, SidebarItem, Skeleton, SkillTree, TradingUI, WeatherIndicator, WorldBrowser, WorldCard, XPBar, alertVariants, anvilCostState, avatarStatuses, badgeVariants, biomeTypes, blockButtonVariants, bossBarColors, bossBarSegments, brewingStates, browseServers, browseWorlds, cardMaterials, chatMessageTypes, clamp, compassName, consoleEntryKinds, cx, dayPhase, describeItemStack, describeMarker, dividerVariants, durabilityLevel, facings, filterRecipes, formatClock, formatNumber, furnaceStates, getBrewingState, getFurnaceState, getPaginationRange, initials, itemRarities, miniMapMarkerKinds, miniMapTerrain, normalizeRarity, pingQuality, progressVariants, ratio, skeletonVariants, skillState, stackGaps, suggestCommands, toast, tooltipPlacements, useBlockUI, useControllableState, useDigitHotkeys, useFocusTrap, useMediaQuery, usePortalContainer, useToasts, villagerLevels, weatherTypes };
package/dist/styles.css CHANGED
@@ -1415,6 +1415,46 @@
1415
1415
  .block-slider-RnmGA:active::-webkit-slider-thumb {
1416
1416
  filter: brightness(1.15);
1417
1417
  }
1418
+ .block-wrapper-b-npH {
1419
+ display: flex;
1420
+ align-items: stretch;
1421
+ gap: var(--block-space-1);
1422
+ }
1423
+
1424
+ .block-input-cg-Fv {
1425
+ flex: 1;
1426
+ min-width: 0;
1427
+ height: var(--block-size-control-md);
1428
+ text-align: center;
1429
+ font-variant-numeric: tabular-nums;
1430
+ }
1431
+
1432
+ .block-button-8xOEk {
1433
+ display: inline-flex;
1434
+ flex-shrink: 0;
1435
+ align-items: center;
1436
+ justify-content: center;
1437
+ width: var(--block-size-control-md);
1438
+ padding: 0;
1439
+ color: var(--block-text);
1440
+ background-color: var(--block-surface-alt);
1441
+ border: var(--block-border-width-thin) solid var(--block-border);
1442
+ box-shadow: var(--block-shadow-bevel);
1443
+ cursor: pointer;
1444
+ }
1445
+
1446
+ .block-button-8xOEk:hover:not(:disabled) {
1447
+ background-color: var(--block-slot-hover);
1448
+ }
1449
+
1450
+ .block-button-8xOEk:active:not(:disabled) {
1451
+ box-shadow: var(--block-shadow-inset);
1452
+ }
1453
+
1454
+ .block-button-8xOEk:disabled {
1455
+ cursor: not-allowed;
1456
+ opacity: 0.45;
1457
+ }
1418
1458
  .block-root-Adx9O {
1419
1459
  display: flex;
1420
1460
  align-items: center;
@@ -4177,6 +4217,87 @@ div.block-slot-ZIG6g:not([role="gridcell"]):not([tabindex]) {
4177
4217
  /* Lightened so it stays above 4.5:1 on every theme's panel colour. */
4178
4218
  color: color-mix(in srgb, var(--block-redstone-light) 65%, var(--block-white));
4179
4219
  }
4220
+ .block-avatar-9s1vM {
4221
+ --avatar-size: 32px;
4222
+ position: relative;
4223
+ display: inline-flex;
4224
+ flex-shrink: 0;
4225
+ align-items: center;
4226
+ justify-content: center;
4227
+ width: var(--avatar-size);
4228
+ height: var(--avatar-size);
4229
+ color: var(--block-mat-on);
4230
+ background-color: var(--block-mat);
4231
+ border: var(--block-border-width-thin) solid var(--block-black);
4232
+ box-shadow:
4233
+ inset 2px 2px 0 var(--block-mat-light),
4234
+ inset -2px -2px 0 var(--block-mat-dark);
4235
+ vertical-align: middle;
4236
+ }
4237
+
4238
+ .block-avatar-9s1vM[data-size="sm"] {
4239
+ --avatar-size: 24px;
4240
+ }
4241
+
4242
+ .block-avatar-9s1vM[data-size="lg"] {
4243
+ --avatar-size: 48px;
4244
+ }
4245
+
4246
+ .block-avatar-9s1vM[data-size="xl"] {
4247
+ --avatar-size: 64px;
4248
+ }
4249
+
4250
+ .block-image-RZELF {
4251
+ width: 100%;
4252
+ height: 100%;
4253
+ object-fit: cover;
4254
+ image-rendering: pixelated;
4255
+ }
4256
+
4257
+ .block-icon-mq-FE {
4258
+ display: inline-flex;
4259
+ width: 70%;
4260
+ height: 70%;
4261
+ }
4262
+
4263
+ .block-icon-mq-FE > * {
4264
+ width: 100%;
4265
+ height: 100%;
4266
+ }
4267
+
4268
+ .block-initials-siD-X {
4269
+ font-family: var(--block-font-display);
4270
+ font-size: calc(var(--avatar-size) * 0.4);
4271
+ font-weight: var(--block-font-weight-bold);
4272
+ line-height: 1;
4273
+ text-shadow: var(--block-mat-text-shadow, none);
4274
+ }
4275
+
4276
+ /* Presence dot, a quarter of the avatar, in the bottom-right corner. */
4277
+ .block-status-CalIQ {
4278
+ position: absolute;
4279
+ right: -3px;
4280
+ bottom: -3px;
4281
+ width: max(8px, calc(var(--avatar-size) * 0.3));
4282
+ height: max(8px, calc(var(--avatar-size) * 0.3));
4283
+ border: 2px solid var(--block-black);
4284
+ }
4285
+
4286
+ .block-status-CalIQ[data-status="online"] {
4287
+ background-color: var(--block-emerald-light);
4288
+ }
4289
+
4290
+ .block-status-CalIQ[data-status="away"] {
4291
+ background-color: var(--block-gold-light);
4292
+ }
4293
+
4294
+ .block-status-CalIQ[data-status="busy"] {
4295
+ background-color: var(--block-redstone-light);
4296
+ }
4297
+
4298
+ .block-status-CalIQ[data-status="offline"] {
4299
+ background-color: var(--block-stone);
4300
+ }
4180
4301
  .block-chat-Q0XDo {
4181
4302
  --chat-height: 240px;
4182
4303
  display: flex;
@@ -5069,6 +5190,86 @@ div.block-slot-ZIG6g:not([role="gridcell"]):not([tabindex]) {
5069
5190
  letter-spacing: var(--block-letter-spacing-wide);
5070
5191
  text-transform: uppercase;
5071
5192
  }
5193
+ .block-accordion-u7KUD {
5194
+ display: flex;
5195
+ flex-direction: column;
5196
+ gap: var(--block-space-1);
5197
+ width: 100%;
5198
+ }
5199
+
5200
+ .block-item-Anf9u {
5201
+ background-color: var(--block-surface);
5202
+ border: var(--block-border-width) solid var(--block-border);
5203
+ box-shadow: var(--block-shadow-bevel);
5204
+ }
5205
+
5206
+ .block-heading-YzlrO {
5207
+ margin: 0;
5208
+ }
5209
+
5210
+ .block-trigger-r-rVI {
5211
+ display: flex;
5212
+ align-items: center;
5213
+ gap: var(--block-space-2);
5214
+ width: 100%;
5215
+ min-height: 44px;
5216
+ padding: var(--block-space-2) var(--block-space-3);
5217
+ font-family: var(--block-font-display);
5218
+ font-size: var(--block-font-size-sm);
5219
+ font-weight: var(--block-font-weight-bold);
5220
+ letter-spacing: var(--block-letter-spacing-wide);
5221
+ text-align: left;
5222
+ text-transform: uppercase;
5223
+ color: var(--block-text);
5224
+ background-color: var(--block-surface-header);
5225
+ border: 0;
5226
+ cursor: pointer;
5227
+ }
5228
+
5229
+ .block-trigger-r-rVI:hover:not(:disabled) {
5230
+ background-color: var(--block-slot-hover);
5231
+ }
5232
+
5233
+ .block-trigger-r-rVI:focus-visible {
5234
+ outline: 3px solid var(--block-focus);
5235
+ outline-offset: -3px;
5236
+ }
5237
+
5238
+ .block-trigger-r-rVI:disabled {
5239
+ cursor: not-allowed;
5240
+ opacity: 0.5;
5241
+ }
5242
+
5243
+ .block-icon-ja4pL {
5244
+ display: inline-flex;
5245
+ flex-shrink: 0;
5246
+ }
5247
+
5248
+ .block-title-xq19m {
5249
+ flex: 1;
5250
+ min-width: 0;
5251
+ overflow-wrap: anywhere;
5252
+ }
5253
+
5254
+ .block-chevron-hKGfT {
5255
+ display: inline-flex;
5256
+ flex-shrink: 0;
5257
+ transition: transform var(--block-duration-instant) var(--block-ease-step);
5258
+ }
5259
+
5260
+ .block-item-Anf9u[data-open] .block-chevron-hKGfT {
5261
+ transform: rotate(180deg);
5262
+ }
5263
+
5264
+ .block-panel-wcIDx {
5265
+ padding: var(--block-space-3);
5266
+ border-top: var(--block-border-width-thin) solid var(--block-border);
5267
+ color: var(--block-text);
5268
+ }
5269
+
5270
+ .block-panel-wcIDx[hidden] {
5271
+ display: none;
5272
+ }
5072
5273
  .block-overlay-gc2QW {
5073
5274
  position: fixed;
5074
5275
  inset: 0;
@@ -5274,4 +5475,262 @@ div.block-slot-ZIG6g:not([role="gridcell"]):not([tabindex]) {
5274
5475
  .block-bar-oFS7J {
5275
5476
  width: 100%;
5276
5477
  }
5478
+ .block-overlay-MaF41 {
5479
+ position: fixed;
5480
+ inset: 0;
5481
+ z-index: var(--block-z-modal);
5482
+ display: flex;
5483
+ justify-content: flex-end;
5484
+ background-color: var(--block-overlay);
5485
+ animation: block-block-drawer-fade-4rcmM var(--block-duration-fast) steps(3, end);
5486
+ }
5487
+
5488
+ .block-overlay-MaF41[data-side="left"] {
5489
+ justify-content: flex-start;
5490
+ }
5491
+
5492
+ .block-overlay-MaF41[data-side="bottom"] {
5493
+ flex-direction: column;
5494
+ justify-content: flex-end;
5495
+ }
5496
+
5497
+ .block-drawer-aWDC6 {
5498
+ --drawer-size: 360px;
5499
+ display: flex;
5500
+ flex-direction: column;
5501
+ width: min(var(--drawer-size), 100%);
5502
+ height: 100%;
5503
+ color: var(--block-text);
5504
+ background-color: var(--block-surface);
5505
+ background-image:
5506
+ linear-gradient(
5507
+ color-mix(in srgb, var(--block-surface) 88%, transparent),
5508
+ color-mix(in srgb, var(--block-surface) 88%, transparent)
5509
+ ),
5510
+ var(--block-texture);
5511
+ background-size:
5512
+ auto,
5513
+ 64px 64px;
5514
+ border-left: var(--block-border-width) solid var(--block-border);
5515
+ box-shadow: var(--block-shadow-bevel);
5516
+ outline: none;
5517
+ animation: block-block-drawer-in-right-Krar9 var(--block-duration-normal) steps(4, end);
5518
+ }
5519
+
5520
+ .block-drawer-aWDC6[data-size="sm"] {
5521
+ --drawer-size: 280px;
5522
+ }
5523
+
5524
+ .block-drawer-aWDC6[data-size="lg"] {
5525
+ --drawer-size: 520px;
5526
+ }
5527
+
5528
+ .block-drawer-aWDC6[data-side="left"] {
5529
+ border-left: 0;
5530
+ border-right: var(--block-border-width) solid var(--block-border);
5531
+ animation-name: block-block-drawer-in-left-EnlSn;
5532
+ }
5533
+
5534
+ .block-drawer-aWDC6[data-side="bottom"] {
5535
+ --drawer-size: 50dvh;
5536
+ width: 100%;
5537
+ height: min(var(--drawer-size), 100%);
5538
+ border-left: 0;
5539
+ border-top: var(--block-border-width) solid var(--block-border);
5540
+ animation-name: block-block-drawer-in-bottom-yyZ8z;
5541
+ }
5542
+
5543
+ .block-drawer-aWDC6[data-side="bottom"][data-size="sm"] {
5544
+ --drawer-size: 33dvh;
5545
+ }
5546
+
5547
+ .block-drawer-aWDC6[data-side="bottom"][data-size="lg"] {
5548
+ --drawer-size: 80dvh;
5549
+ }
5550
+
5551
+ .block-header-FheCx {
5552
+ display: flex;
5553
+ align-items: center;
5554
+ gap: var(--block-space-2);
5555
+ margin: 3px 3px 0;
5556
+ padding: var(--block-space-2) var(--block-space-3);
5557
+ background-color: var(--block-surface-header);
5558
+ border-bottom: var(--block-border-width-thin) solid var(--block-border);
5559
+ }
5560
+
5561
+ .block-title-4QE9I {
5562
+ flex: 1;
5563
+ margin: 0;
5564
+ font-family: var(--block-font-display);
5565
+ font-size: var(--block-font-size-lg);
5566
+ font-weight: var(--block-font-weight-bold);
5567
+ letter-spacing: var(--block-letter-spacing-wide);
5568
+ text-transform: uppercase;
5569
+ text-shadow: var(--block-shadow-text);
5570
+ }
5571
+
5572
+ .block-close-fdVrq {
5573
+ display: inline-flex;
5574
+ align-items: center;
5575
+ justify-content: center;
5576
+ width: 32px;
5577
+ height: 32px;
5578
+ padding: 0;
5579
+ color: var(--block-text);
5580
+ background-color: var(--block-slot);
5581
+ border: var(--block-border-width-thin) solid var(--block-border);
5582
+ box-shadow: var(--block-shadow-inset);
5583
+ cursor: pointer;
5584
+ }
5585
+
5586
+ .block-close-fdVrq:focus-visible {
5587
+ outline: 3px solid var(--block-focus);
5588
+ outline-offset: 2px;
5589
+ }
5590
+
5591
+ .block-body-aFN-w {
5592
+ flex: 1;
5593
+ min-height: 0;
5594
+ padding: var(--block-space-4);
5595
+ overflow-y: auto;
5596
+ }
5597
+
5598
+ .block-footer-m9z0P {
5599
+ display: flex;
5600
+ flex-wrap: wrap;
5601
+ justify-content: flex-end;
5602
+ gap: var(--block-space-2);
5603
+ padding: var(--block-space-3) var(--block-space-4);
5604
+ border-top: var(--block-border-width-thin) solid var(--block-border);
5605
+ }
5606
+
5607
+ @keyframes block-block-drawer-fade-4rcmM {
5608
+ from {
5609
+ opacity: 0;
5610
+ }
5611
+ }
5612
+
5613
+ @keyframes block-block-drawer-in-right-Krar9 {
5614
+ from {
5615
+ transform: translateX(100%);
5616
+ }
5617
+ }
5618
+
5619
+ @keyframes block-block-drawer-in-left-EnlSn {
5620
+ from {
5621
+ transform: translateX(-100%);
5622
+ }
5623
+ }
5624
+
5625
+ @keyframes block-block-drawer-in-bottom-yyZ8z {
5626
+ from {
5627
+ transform: translateY(100%);
5628
+ }
5629
+ }
5630
+ .block-empty-CypAE {
5631
+ display: flex;
5632
+ flex-direction: column;
5633
+ align-items: center;
5634
+ gap: var(--block-space-2);
5635
+ width: 100%;
5636
+ padding: var(--block-space-8) var(--block-space-4);
5637
+ text-align: center;
5638
+ color: var(--block-text);
5639
+ background-color: var(--block-slot);
5640
+ border: var(--block-border-width-thin) dashed var(--block-border);
5641
+ }
5642
+
5643
+ .block-empty-CypAE[data-size="sm"] {
5644
+ padding: var(--block-space-4) var(--block-space-3);
5645
+ }
5646
+
5647
+ .block-icon-RT29d {
5648
+ display: inline-flex;
5649
+ opacity: 0.6;
5650
+ filter: grayscale(0.5);
5651
+ }
5652
+
5653
+ .block-title-gsp4I {
5654
+ margin: 0;
5655
+ font-family: var(--block-font-display);
5656
+ font-size: var(--block-font-size-md);
5657
+ font-weight: var(--block-font-weight-bold);
5658
+ letter-spacing: var(--block-letter-spacing-wide);
5659
+ text-transform: uppercase;
5660
+ text-shadow: var(--block-shadow-text);
5661
+ }
5662
+
5663
+ .block-empty-CypAE[data-size="sm"] .block-title-gsp4I {
5664
+ font-size: var(--block-font-size-sm);
5665
+ }
5666
+
5667
+ .block-description-es-JM {
5668
+ max-width: 42ch;
5669
+ margin: 0;
5670
+ font-size: var(--block-font-size-sm);
5671
+ color: var(--block-text-muted);
5672
+ }
5673
+
5674
+ .block-action-TqLZE {
5675
+ margin-top: var(--block-space-2);
5676
+ }
5677
+ .block-skeleton-iGMZW {
5678
+ display: flex;
5679
+ flex-direction: column;
5680
+ gap: var(--block-space-2);
5681
+ width: var(--block-skeleton-width, 100%);
5682
+ max-width: 100%;
5683
+ }
5684
+
5685
+ .block-bone-cYRm- {
5686
+ display: block;
5687
+ height: 12px;
5688
+ background-color: var(--block-slot);
5689
+ background-image: linear-gradient(
5690
+ 90deg,
5691
+ transparent 0 40%,
5692
+ color-mix(in srgb, var(--block-text) 12%, transparent) 40% 60%,
5693
+ transparent 60%
5694
+ );
5695
+ background-size: 300% 100%;
5696
+ border: var(--block-border-width-thin) solid var(--block-border);
5697
+ animation: block-block-skeleton-sweep-8kYA1 1.2s steps(8, end) infinite;
5698
+ }
5699
+
5700
+ .block-bone-cYRm-[data-last] {
5701
+ width: 60%;
5702
+ }
5703
+
5704
+ .block-skeleton-iGMZW[data-variant="block"] .block-bone-cYRm- {
5705
+ height: var(--block-skeleton-height, 96px);
5706
+ }
5707
+
5708
+ .block-skeleton-iGMZW[data-variant="slot"] {
5709
+ width: var(--block-skeleton-width, var(--block-size-slot-md));
5710
+ }
5711
+
5712
+ .block-skeleton-iGMZW[data-variant="slot"] .block-bone-cYRm- {
5713
+ aspect-ratio: 1;
5714
+ height: auto;
5715
+ box-shadow: var(--block-shadow-inset);
5716
+ }
5717
+
5718
+ .block-skeleton-iGMZW[data-variant="avatar"] {
5719
+ width: var(--block-skeleton-width, 48px);
5720
+ }
5721
+
5722
+ .block-skeleton-iGMZW[data-variant="avatar"] .block-bone-cYRm- {
5723
+ aspect-ratio: 1;
5724
+ height: auto;
5725
+ }
5726
+
5727
+ /* A stepped highlight sweep; reduced motion stops it (base.css). */
5728
+ @keyframes block-block-skeleton-sweep-8kYA1 {
5729
+ from {
5730
+ background-position: 100% 0;
5731
+ }
5732
+ to {
5733
+ background-position: 0 0;
5734
+ }
5735
+ }
5277
5736
  /*$vite$:1*/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@malilion/block-ui-react",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Block UI — block / pixel / crafting game-style React components: inventory, crafting, HUD, cards, forms and more.",
5
5
  "license": "MIT",
6
6
  "author": "Block UI Contributors",
@@ -42,9 +42,9 @@
42
42
  "react-dom": "^18.2.0 || ^19.0.0"
43
43
  },
44
44
  "dependencies": {
45
- "@malilion/block-ui-icons": "^0.3.0",
46
- "@malilion/block-ui-themes": "^0.3.0",
47
- "@malilion/block-ui-tokens": "^0.3.0"
45
+ "@malilion/block-ui-icons": "^0.4.0",
46
+ "@malilion/block-ui-themes": "^0.4.0",
47
+ "@malilion/block-ui-tokens": "^0.4.0"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@storybook/react-vite": "^10.6.1",