@orianatech/pire 0.13.0 → 0.15.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 (35) hide show
  1. package/dist/components/core/Icon.d.ts.map +1 -1
  2. package/dist/components/core/Kbd.d.cts +17 -0
  3. package/dist/components/core/Kbd.d.ts +18 -0
  4. package/dist/components/core/Kbd.d.ts.map +1 -0
  5. package/dist/components/core/icon-data.generated.d.ts.map +1 -1
  6. package/dist/components/core/icon-map.d.cts +9 -0
  7. package/dist/components/core/icon-map.d.ts +9 -0
  8. package/dist/components/core/icon-map.d.ts.map +1 -1
  9. package/dist/components/forms/ValueHelpField.d.cts +12 -1
  10. package/dist/components/forms/ValueHelpField.d.ts +12 -1
  11. package/dist/components/forms/ValueHelpField.d.ts.map +1 -1
  12. package/dist/components/navigation/Menu.d.cts +7 -2
  13. package/dist/components/navigation/Menu.d.ts +7 -2
  14. package/dist/components/navigation/Menu.d.ts.map +1 -1
  15. package/dist/components/navigation/ShellBar.d.cts +13 -1
  16. package/dist/components/navigation/ShellBar.d.ts +13 -1
  17. package/dist/components/navigation/ShellBar.d.ts.map +1 -1
  18. package/dist/components/patterns/CommandPalette.d.cts +97 -0
  19. package/dist/components/patterns/CommandPalette.d.ts +98 -0
  20. package/dist/components/patterns/CommandPalette.d.ts.map +1 -0
  21. package/dist/components/patterns/ValueHelpDialog.d.cts +22 -1
  22. package/dist/components/patterns/ValueHelpDialog.d.ts +22 -1
  23. package/dist/components/patterns/ValueHelpDialog.d.ts.map +1 -1
  24. package/dist/components.css +76 -2
  25. package/dist/i18n/messages.d.cts +26 -0
  26. package/dist/i18n/messages.d.ts +26 -0
  27. package/dist/i18n/messages.d.ts.map +1 -1
  28. package/dist/index.cjs +909 -521
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.d.cts +3 -0
  31. package/dist/index.d.ts +3 -0
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +803 -408
  34. package/dist/index.js.map +1 -1
  35. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -2,16 +2,30 @@
2
2
  var ICON_MARKUP = {
3
3
  "add": '<path d="M17 15 17 8 15 8 15 15 8 15 8 17 15 17 15 24 17 24 17 17 24 17 24 15z"/>',
4
4
  "apps": '<path d="M8,4V8H4V4Zm2-2H2v8h8Zm8,2V8H14V4Zm2-2H12v8h8Zm8,2V8H24V4Zm2-2H22v8h8ZM8,14v4H4V14Zm2-2H2v8h8Zm8,2v4H14V14Zm2-2H12v8h8Zm8,2v4H24V14Zm2-2H22v8h8ZM8,24v4H4V24Zm2-2H2v8h8Zm8,2v4H14V24Zm2-2H12v8h8Zm8,2v4H24V24Zm2-2H22v8h8Z"/>',
5
+ "archive": '<path d="M14 19H18V21H14z"/><path d="M6,2V28a2,2,0,0,0,2,2H24a2,2,0,0,0,2-2V2ZM24,28H8V16H24Zm0-14H8V10H24ZM8,8V4H24V8Z"/>',
5
6
  "arrow--down": '<path d="M24.59 16.59 17 24.17 17 4 15 4 15 24.17 7.41 16.59 6 18 16 28 26 18 24.59 16.59z"/>',
7
+ "arrow--left": '<path d="M14 26 15.41 24.59 7.83 17 28 17 28 15 7.83 15 15.41 7.41 14 6 4 16 14 26z"/>',
6
8
  "arrow--right": '<path d="M18 6 16.57 7.393 24.15 15 4 15 4 17 24.15 17 16.57 24.573 18 26 28 16 18 6z"/>',
7
9
  "arrow--up": '<path d="M16 4 6 14 7.41 15.41 15 7.83 15 28 17 28 17 7.83 24.59 15.41 26 14 16 4z"/>',
8
10
  "arrows--vertical": '<path d="M27.6 20.6 24 24.2 24 4 22 4 22 24.2 18.4 20.6 17 22 23 28 29 22z"/><path d="M9 4 3 10 4.4 11.4 8 7.8 8 28 10 28 10 7.8 13.6 11.4 15 10z"/>',
11
+ "asterisk": '<path d="M28.316 13.949 27.684 12.051 17 15.612 17 4 15 4 15 15.612 4.316 12.051 3.684 13.949 14.368 17.51 7.2 27.066 8.8 28.267 16 18.667 23.2 28.267 24.8 27.066 17.632 17.51 28.316 13.949z"/>',
9
12
  "attachment": '<path d="M28.1,18.9L13.1,3.9c-2.5-2.6-6.6-2.6-9.2-0.1S1.3,10.5,3.9,13c0,0,0.1,0.1,0.1,0.1L6.8,16l1.4-1.4l-2.9-2.9 C3.6,10,3.6,7.1,5.3,5.4s4.6-1.8,6.3-0.1c0,0,0,0,0.1,0.1l14.9,14.9c1.8,1.7,1.8,4.6,0.1,6.3c-1.7,1.8-4.6,1.8-6.3,0.1 c0,0,0,0-0.1-0.1l-7.4-7.4c-1-1-0.9-2.6,0-3.5c1-0.9,2.5-0.9,3.5,0l4.1,4.1l1.4-1.4c0,0-4.2-4.2-4.2-4.2c-1.8-1.7-4.6-1.6-6.3,0.2 c-1.6,1.7-1.6,4.4,0,6.2l7.5,7.5c2.5,2.6,6.6,2.6,9.2,0.1S30.7,21.5,28.1,18.9C28.1,19,28.1,18.9,28.1,18.9L28.1,18.9z"/>',
13
+ "bank--vault": '<path d="M26,30h-2v-2H8v2h-2v-2h-2c-1.103,0-2-.8975-2-2V4c0-1.103.897-2,2-2h24c1.1025,0,2,.897,2,2v22c0,1.1025-.8975,2-2,2h-2v2ZM4,4v22h24.002l-.002-22H4ZM17,22h-2v-2.1006c-.626-.127-1.2207-.374-1.7573-.7285l-2.5356,2.5361-1.4141-1.4141,2.5366-2.5371c-.3555-.5371-.6021-1.1318-.729-1.7559h-2.1006v-2h2.1001c.1274-.626.374-1.2207.7285-1.7573l-2.5356-2.5356,1.4141-1.4141,2.5366,2.5366c.5376-.3555,1.1318-.6021,1.7563-.729v-2.1006h2v2.1006c.626.127,1.2207.3735,1.7568.728l2.5361-2.5356,1.4141,1.4141-2.5361,2.5356c.3545.5366.6016,1.1313.7285,1.7573h2.1006v2h-2.1006c-.127.626-.374,1.2207-.7285,1.7568l2.5361,2.5361-1.4141,1.4141-2.5371-2.5371c-.5371.3555-1.1318.6025-1.7559.7295v2.1006ZM16,12c-.7954,0-1.5513.3135-2.1279.8818-.5586.5669-.8721,1.3228-.8721,2.1182,0,.7949.3135,1.5508.8823,2.1279,1.1318,1.1162,3.0908,1.127,4.2456-.0098.5586-.5674.8721-1.3232.8721-2.1182,0-.793-.3115-1.5464-.877-2.1226-.5771-.5659-1.3306-.8774-2.123-.8774Z"/>',
14
+ "barcode": '<path d="M2 6H4V28H2z"/><path d="M12 6H14V26H12z"/><path d="M6 6H10V26H6z"/><path d="M16 6H20V26H16z"/><path d="M22 6H26V26H22z"/><path d="M28 6H30V28H28z"/>',
15
+ "book": '<path d="M19 10H26V12H19z"/><path d="M19 15H26V17H19z"/><path d="M19 20H26V22H19z"/><path d="M6 10H13V12H6z"/><path d="M6 15H13V17H6z"/><path d="M6 20H13V22H6z"/><path d="M28,5H4A2.002,2.002,0,0,0,2,7V25a2.002,2.002,0,0,0,2,2H28a2.002,2.002,0,0,0,2-2V7A2.002,2.002,0,0,0,28,5ZM4,7H15V25H4ZM17,25V7H28V25Z"/>',
16
+ "bookmark": '<path d="M24,4V26.75l-7.1-3.59-.9-.45-.9.45L8,26.75V4H24m0-2H8A2,2,0,0,0,6,4V30L16,25,26,30V4A2,2,0,0,0,24,2Z"/>',
10
17
  "box": '<path d="M20,21H12a2,2,0,0,1-2-2V17a2,2,0,0,1,2-2h8a2,2,0,0,1,2,2v2A2,2,0,0,1,20,21Zm-8-4v2h8V17Z"/><path d="M28,4H4A2,2,0,0,0,2,6v4a2,2,0,0,0,2,2V28a2,2,0,0,0,2,2H26a2,2,0,0,0,2-2V12a2,2,0,0,0,2-2V6A2,2,0,0,0,28,4ZM26,28H6V12H26Zm2-18H4V6H28v4Z"/>',
11
18
  "building": '<path d="M28,2H16a2.002,2.002,0,0,0-2,2V14H4a2.002,2.002,0,0,0-2,2V30H30V4A2.0023,2.0023,0,0,0,28,2ZM9,28V21h4v7Zm19,0H15V20a1,1,0,0,0-1-1H8a1,1,0,0,0-1,1v8H4V16H16V4H28Z"/><path d="M18 8H20V10H18z"/><path d="M24 8H26V10H24z"/><path d="M18 14H20V16H18z"/><path d="M24 14H26V16H24z"/><path d="M18 20H20V22H18z"/><path d="M24 20H26V22H24z"/>',
12
19
  "building--insights-1": '<path d="M28,2H16a2.002,2.002,0,0,0-2,2V14H4a2.002,2.002,0,0,0-2,2V30H30V4A2.0023,2.0023,0,0,0,28,2ZM9,28V21h4v7Zm19,0H15V20a1,1,0,0,0-1-1H8a1,1,0,0,0-1,1v8H4V16H16V4H28Z"/><path d="M18 8H20V10H18z"/><path d="M24 8H26V10H24z"/><path d="M18 14H20V16H18z"/><path d="M24 14H26V16H24z"/><path d="M18 20H20V22H18z"/><path d="M24 20H26V22H24z"/><path d="M9,12H7a5.0059,5.0059,0,0,1,5-5V9A3.0033,3.0033,0,0,0,9,12Z"/><path d="M4,12H2A10.0114,10.0114,0,0,1,12,2V4A8.0092,8.0092,0,0,0,4,12Z"/>',
13
20
  "calculator": '<path d="M26,4V28H6V4H26m0-2H6A2,2,0,0,0,4,4V28a2,2,0,0,0,2,2H26a2,2,0,0,0,2-2V4A2,2,0,0,0,26,2Z"/><path d="M9 23H11V25H9z"/><path d="M21 23H23V25H21z"/><path d="M9 18H11V20H9z"/><path d="M21 18H23V20H21z"/><path d="M9 13H11V15H9z"/><path d="M15 23H17V25H15z"/><path d="M15 18H17V20H15z"/><path d="M15 13H17V15H15z"/><path d="M21 13H23V15H21z"/><path d="M9 7H23V10H9z"/>',
14
21
  "calendar": '<path d="M26,4h-4V2h-2v2h-8V2h-2v2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V6C28,4.9,27.1,4,26,4z M26,26H6V12h20 V26z M26,10H6V6h4v2h2V6h8v2h2V6h4V10z"/>',
22
+ "calendar--add": '<switch><foreignObject width="1" height="1" x="0" y="0" requiredExtensions="http://ns.adobe.com/AdobeIllustrator/10.0/"/><g><path d="M30 22 24 22 24 16 22 16 22 22 16 22 16 24 22 24 22 30 24 30 24 24 30 24z"/><path d="M28,6c0-1.1-0.9-2-2-2h-4V2h-2v2h-8V2h-2v2H6C4.9,4,4,4.9,4,6v20c0,1.1,0.9,2,2,2h8v-2H6V6h4v2h2V6h8v2h2V6h4v8h2V6z"/></g></switch>',
23
+ "calendar--heat-map": '<path d="M26,4H22V2H20V4H12V2H10V4H6A2.0025,2.0025,0,0,0,4,6V26a2.0025,2.0025,0,0,0,2,2H26a2.0025,2.0025,0,0,0,2-2V6A2.0025,2.0025,0,0,0,26,4ZM6,6h4V8h2V6h8V8h2V6h4l0,4H6Zm0,6h5v6H6ZM19,26H13V20h6Zm0-8H13V12h6Zm2,8V20h5l.0012,6Z"/>',
24
+ "chart--area": '<path d="M20.4761,8.0151,13.4473,4.2109a2.0076,2.0076,0,0,0-2.1158.2051L4,10.001V2H2V28a2,2,0,0,0,2,2H30V5.7354ZM28,20.209l-7.62,1.8022-7.0288-2.8838a1.99,1.99,0,0,0-2.022.37L4,25.8359v-4.455l8.375-9.4,7.0186,5.62a2.0155,2.0155,0,0,0,2.0459.2119L28,14.6025ZM12.5239,5.9849l7.03,3.8042a2.012,2.012,0,0,0,1.3408.16L28,8.2646v4.1138L20.6187,16.02,13.6,10.4a1.99,1.99,0,0,0-2.6885.2642L4,18.3838v-5.87ZM4.5513,28,12.62,20.9888l7.0288,2.8838a1.9977,1.9977,0,0,0,1.147.0771L28,22.2612V28Z"/>',
25
+ "chart--bar": '<path d="M4,2H2V28a2,2,0,0,0,2,2H30V28H4V25H26V17H4V13H18V5H4ZM24,19v4H4V19ZM16,7v4H4V7Z"/>',
26
+ "chart--column": '<path d="M27,28V6H19V28H15V14H7V28H4V2H2V28a2,2,0,0,0,2,2H30V28ZM13,28H9V16h4Zm12,0H21V8h4Z"/>',
27
+ "chart--line": '<path d="M4.67,28l6.39-12,7.3,6.49a2,2,0,0,0,1.7.47,2,2,0,0,0,1.42-1.07L27,10.9,25.18,10,19.69,21l-7.3-6.49A2,2,0,0,0,10.71,14a2,2,0,0,0-1.42,1L4,25V2H2V28a2,2,0,0,0,2,2H30V28Z"/>',
28
+ "chart--pie": '<path d="M16,4A12,12,0,1,0,28,16,12,12,0,0,0,16,4ZM26,15H17V6.05A10,10,0,0,1,26,15ZM15.42,26A10,10,0,0,1,15,6.05v9a2,2,0,0,0,2,2h9A10,10,0,0,1,15.42,26Z"/>',
15
29
  "checkmark": '<path d="M13 24 4 15 5.414 13.586 13 21.171 26.586 7.586 28 9 13 24z"/>',
16
30
  "checkmark--filled": '<path d="M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2ZM14,21.5908l-5-5L10.5906,15,14,18.4092,21.41,11l1.5957,1.5859Z"/><path fill="none" d="M14 21.591 9 16.591 10.591 15 14 18.409 21.41 11 23.005 12.585 14 21.591z" data-icon-path="inner-path"/>',
17
31
  "checkmark--outline": '<path d="M14 21.414 9 16.413 10.413 15 14 18.586 21.585 11 23 12.415 14 21.414z"/><path d="M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2Zm0,26A12,12,0,1,1,28,16,12,12,0,0,1,16,28Z"/>',
@@ -19,48 +33,109 @@ var ICON_MARKUP = {
19
33
  "chevron--left": '<path d="M10 16 20 6 21.4 7.4 12.8 16 21.4 24.6 20 26z"/>',
20
34
  "chevron--right": '<path d="M22 16 12 26 10.6 24.6 19.2 16 10.6 7.4 12 6z"/>',
21
35
  "chevron--sort": '<path d="M16 28 9 21 10.41 19.59 16 25.17 21.59 19.59 23 21 16 28z"/><path d="M16 4 23 11 21.59 12.41 16 6.83 10.41 12.41 9 11 16 4z"/>',
36
+ "chevron--up": '<path d="M16 10 26 20 24.6 21.4 16 12.8 7.4 21.4 6 20z"/>',
22
37
  "circle-dash": '<path d="M7.7,4.7a14.7,14.7,0,0,0-3,3.1L6.3,9A13.26,13.26,0,0,1,8.9,6.3Z"/><path d="M4.6,12.3l-1.9-.6A12.51,12.51,0,0,0,2,16H4A11.48,11.48,0,0,1,4.6,12.3Z"/><path d="M2.7,20.4a14.4,14.4,0,0,0,2,3.9l1.6-1.2a12.89,12.89,0,0,1-1.7-3.3Z"/><path d="M7.8,27.3a14.4,14.4,0,0,0,3.9,2l.6-1.9A12.89,12.89,0,0,1,9,25.7Z"/><path d="M11.7,2.7l.6,1.9A11.48,11.48,0,0,1,16,4V2A12.51,12.51,0,0,0,11.7,2.7Z"/><path d="M24.2,27.3a15.18,15.18,0,0,0,3.1-3.1L25.7,23A11.53,11.53,0,0,1,23,25.7Z"/><path d="M27.4,19.7l1.9.6A15.47,15.47,0,0,0,30,16H28A11.48,11.48,0,0,1,27.4,19.7Z"/><path d="M29.2,11.6a14.4,14.4,0,0,0-2-3.9L25.6,8.9a12.89,12.89,0,0,1,1.7,3.3Z"/><path d="M24.1,4.6a14.4,14.4,0,0,0-3.9-2l-.6,1.9a12.89,12.89,0,0,1,3.3,1.7Z"/><path d="M20.3,29.3l-.6-1.9A11.48,11.48,0,0,1,16,28v2A21.42,21.42,0,0,0,20.3,29.3Z"/>',
23
38
  "close": '<path d="M17.4141 16 24 9.4141 22.5859 8 16 14.5859 9.4143 8 8 9.4141 14.5859 16 8 22.5859 9.4143 24 16 17.4141 22.5859 24 24 22.5859 17.4141 16z"/>',
39
+ "cloud--download": '<path d="M23.5,22H23V20h.5a4.5,4.5,0,0,0,.36-9L23,11l-.1-.82a7,7,0,0,0-13.88,0L9,11,8.14,11a4.5,4.5,0,0,0,.36,9H9v2H8.5A6.5,6.5,0,0,1,7.2,9.14a9,9,0,0,1,17.6,0A6.5,6.5,0,0,1,23.5,22Z"/><path d="M17 26.17 17 14 15 14 15 26.17 12.41 23.59 11 25 16 30 21 25 19.59 23.59 17 26.17z"/>',
40
+ "cloud--upload": '<path d="M11 18 12.41 19.41 15 16.83 15 29 17 29 17 16.83 19.59 19.41 21 18 16 13 11 18z"/><path d="M23.5,22H23V20h.5a4.5,4.5,0,0,0,.36-9L23,11l-.1-.82a7,7,0,0,0-13.88,0L9,11,8.14,11a4.5,4.5,0,0,0,.36,9H9v2H8.5A6.5,6.5,0,0,1,7.2,9.14a9,9,0,0,1,17.6,0A6.5,6.5,0,0,1,23.5,22Z"/>',
24
41
  "color-palette": '<circle cx="10" cy="12" r="2"/><circle cx="16" cy="9" r="2"/><circle cx="22" cy="12" r="2"/><circle cx="23" cy="18" r="2"/><circle cx="19" cy="23" r="2"/><path d="M16.54,2A14,14,0,0,0,2,16a4.82,4.82,0,0,0,6.09,4.65l1.12-.31A3,3,0,0,1,13,23.24V27a3,3,0,0,0,3,3A14,14,0,0,0,30,15.46,14.05,14.05,0,0,0,16.54,2Zm8.11,22.31A11.93,11.93,0,0,1,16,28a1,1,0,0,1-1-1V23.24a5,5,0,0,0-5-5,5.07,5.07,0,0,0-1.33.18l-1.12.31A2.82,2.82,0,0,1,4,16,12,12,0,0,1,16.47,4,12.18,12.18,0,0,1,28,15.53,11.89,11.89,0,0,1,24.65,24.32Z"/>',
25
42
  "copy": '<path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z"/><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z"/>',
43
+ "currency": '<path d="M21,12V10H17V7H15v3H13a2.002,2.002,0,0,0-2,2v3a2.002,2.002,0,0,0,2,2h6v3H11v2h4v3h2V22h2a2.0023,2.0023,0,0,0,2-2V17a2.002,2.002,0,0,0-2-2H13V12Z"/><path d="M16,4A12,12,0,1,1,4,16,12.0353,12.0353,0,0,1,16,4m0-2A14,14,0,1,0,30,16,14.0412,14.0412,0,0,0,16,2Z"/>',
44
+ "currency--dollar": '<path d="M23,20.5151c0-4.6152-3.78-5.1411-6.8171-5.563-3.31-.4609-5.1829-.86-5.1829-3.71C11,8.8491,13.5071,8,15.6538,8a6.7538,6.7538,0,0,1,5.5681,2.6279l1.5562-1.2558A8.6508,8.6508,0,0,0,17,6.0962V3H15V6.022c-3.6152.2192-6,2.26-6,5.22,0,4.73,3.83,5.2627,6.9075,5.69C19.16,17.3848,21,17.7744,21,20.5151,21,23.5474,17.8674,24,16,24c-3.4294,0-4.8782-.9639-6.2219-2.6279L8.2219,22.6279A8.4382,8.4382,0,0,0,15,25.9648V29h2V25.9551C20.7256,25.6509,23,23.6279,23,20.5151Z"/>',
45
+ "currency--euro": '<path d="M17,26c-3.6162,0-6.3328-2.2974-7.4456-6H19V18H9.1321A15.2782,15.2782,0,0,1,9,16c0-.33.01-.6641.0259-1H19V13H9.2371C9.8447,9.3525,11.81,6,17,6c3.8533,0,5.5315,1.6465,7.1282,4.4893l1.7436-.9786C24.2649,6.6484,22.0779,4,17,4,10.6448,4,7,8.374,7,16c0,7.0654,4.1121,12,10,12,5.0779,0,7.2649-2.6484,8.8718-5.5107l-1.7436-.9786C22.5315,24.3535,20.8533,26,17,26Z"/>',
46
+ "data--base": '<path d="M24,3H8A2,2,0,0,0,6,5V27a2,2,0,0,0,2,2H24a2,2,0,0,0,2-2V5A2,2,0,0,0,24,3Zm0,2v6H8V5ZM8,19V13H24v6Zm0,8V21H24v6Z"/><circle cx="11" cy="8" r="1"/><circle cx="11" cy="16" r="1"/><circle cx="11" cy="24" r="1"/>',
47
+ "debug": '<path d="M29.83,20l.34-2L25,17.15V13c0-.08,0-.15,0-.23l5.06-1.36-.51-1.93-4.83,1.29A9,9,0,0,0,20,5V2H18V4.23a8.81,8.81,0,0,0-4,0V2H12V5a9,9,0,0,0-4.71,5.82L2.46,9.48,2,11.41,7,12.77c0,.08,0,.15,0,.23v4.15L1.84,18l.32,2L7,19.18a8.9,8.9,0,0,0,.82,3.57L3.29,27.29l1.42,1.42,4.19-4.2a9,9,0,0,0,14.2,0l4.19,4.2,1.42-1.42-4.54-4.54A8.9,8.9,0,0,0,25,19.18ZM15,25.92A7,7,0,0,1,9,19V13h6ZM9.29,11a7,7,0,0,1,13.42,0ZM23,19a7,7,0,0,1-6,6.92V13h6Z"/>',
48
+ "delivery--parcel": '<path d="M29.4819,8.624l-10-5.5a1,1,0,0,0-.9638,0l-10,5.5a1,1,0,0,0,0,1.752L18,15.5913V26.3086l-3.0362-1.6693L14,26.3912l4.5181,2.4848a.9984.9984,0,0,0,.9638,0l10-5.5A1,1,0,0,0,30,22.5V9.5A1,1,0,0,0,29.4819,8.624ZM19,5.1416,26.9248,9.5,19,13.8584,11.0752,9.5Zm9,16.7671-8,4.4V15.5913l8-4.4Z"/><path d="M2 14H10V16H2z" transform="matrix(-1 0 0 -1 12 30)"/><path d="M4 22H12V24H4z" transform="matrix(-1 0 0 -1 16 46)"/><path d="M6 18H14V20H6z" transform="matrix(-1 0 0 -1 20 38)"/>',
26
49
  "delivery-truck": '<path d="M29.92,16.61l-3-7A1,1,0,0,0,26,9H23V7a1,1,0,0,0-1-1H3A1,1,0,0,0,2,7V24a1,1,0,0,0,1,1H5.14a4,4,0,0,0,7.72,0h6.28a4,4,0,0,0,7.72,0H29a1,1,0,0,0,1-1V17A1,1,0,0,0,29.92,16.61ZM23,11h2.34l2.14,5H23ZM9,26a2,2,0,1,1,2-2A2,2,0,0,1,9,26Zm10.14-3H12.86a4,4,0,0,0-7.72,0H4V8H21V20.56A4,4,0,0,0,19.14,23ZM23,26a2,2,0,1,1,2-2A2,2,0,0,1,23,26Zm5-3H26.86A4,4,0,0,0,23,20V18h5Z"/>',
27
50
  "document": '<path d="M25.7,9.3l-7-7C18.5,2.1,18.3,2,18,2H8C6.9,2,6,2.9,6,4v24c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V10C26,9.7,25.9,9.5,25.7,9.3 z M18,4.4l5.6,5.6H18V4.4z M24,28H8V4h8v6c0,1.1,0.9,2,2,2h6V28z"/><path d="M10 22H22V24H10z"/><path d="M10 16H22V18H10z"/>',
51
+ "document--add": '<path d="M30 24 26 24 26 20 24 20 24 24 20 24 20 26 24 26 24 30 26 30 26 26 30 26 30 24z"/><path d="M16,28H8V4h8v6a2.0058,2.0058,0,0,0,2,2h6v4h2V10a.9092.9092,0,0,0-.3-.7l-7-7A.9087.9087,0,0,0,18,2H8A2.0058,2.0058,0,0,0,6,4V28a2.0058,2.0058,0,0,0,2,2h8ZM18,4.4,23.6,10H18Z"/>',
28
52
  "download": '<path d="M26,24v4H6V24H4v4H4a2,2,0,0,0,2,2H26a2,2,0,0,0,2-2h0V24Z"/><path d="M26 14 24.59 12.59 17 20.17 17 2 15 2 15 20.17 7.41 12.59 6 14 16 24 26 14z"/>',
29
53
  "edit": '<path d="M2 26H30V28H2z"/><path d="M25.4,9c0.8-0.8,0.8-2,0-2.8c0,0,0,0,0,0l-3.6-3.6c-0.8-0.8-2-0.8-2.8,0c0,0,0,0,0,0l-15,15V24h6.4L25.4,9z M20.4,4L24,7.6 l-3,3L17.4,7L20.4,4z M6,22v-3.6l10-10l3.6,3.6l-10,10H6z"/>',
54
+ "email": '<path d="M28,6H4A2,2,0,0,0,2,8V24a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V8A2,2,0,0,0,28,6ZM25.8,8,16,14.78,6.2,8ZM4,24V8.91l11.43,7.91a1,1,0,0,0,1.14,0L28,8.91V24Z"/>',
30
55
  "error--filled": '<path fill="none" d="M14.9 7.2H17.1V24.799H14.9z" data-icon-path="inner-path" transform="rotate(-45 16 16)"/><path d="M16,2A13.914,13.914,0,0,0,2,16,13.914,13.914,0,0,0,16,30,13.914,13.914,0,0,0,30,16,13.914,13.914,0,0,0,16,2Zm5.4449,21L9,10.5557,10.5557,9,23,21.4448Z"/>',
56
+ "events": '<path d="M26,14H24v2h2a3.0033,3.0033,0,0,1,3,3v4h2V19A5.0058,5.0058,0,0,0,26,14Z"/><path d="M24,4a3,3,0,1,1-3,3,3,3,0,0,1,3-3m0-2a5,5,0,1,0,5,5A5,5,0,0,0,24,2Z"/><path d="M23,30H21V28a3.0033,3.0033,0,0,0-3-3H14a3.0033,3.0033,0,0,0-3,3v2H9V28a5.0059,5.0059,0,0,1,5-5h4a5.0059,5.0059,0,0,1,5,5Z"/><path d="M16,13a3,3,0,1,1-3,3,3,3,0,0,1,3-3m0-2a5,5,0,1,0,5,5A5,5,0,0,0,16,11Z"/><path d="M8,14H6a5.0059,5.0059,0,0,0-5,5v4H3V19a3.0033,3.0033,0,0,1,3-3H8Z"/><path d="M8,4A3,3,0,1,1,5,7,3,3,0,0,1,8,4M8,2a5,5,0,1,0,5,5A5,5,0,0,0,8,2Z"/>',
31
57
  "filter": '<path d="M18,28H14a2,2,0,0,1-2-2V18.41L4.59,11A2,2,0,0,1,4,9.59V6A2,2,0,0,1,6,4H26a2,2,0,0,1,2,2V9.59A2,2,0,0,1,27.41,11L20,18.41V26A2,2,0,0,1,18,28ZM6,6V9.59l8,8V26h4V17.59l8-8V6Z"/>',
58
+ "filter--edit": '<path d="M26,6H4V9.17l7.41,7.42.59.58V26h4V24h2v2a2,2,0,0,1-2,2H12a2,2,0,0,1-2-2V18L2.59,10.59A2,2,0,0,1,2,9.17V6A2,2,0,0,1,4,4H26Z"/><path d="M29.71,11.29l-3-3a1,1,0,0,0-1.42,0L16,17.59V22h4.41l9.3-9.29A1,1,0,0,0,29.71,11.29ZM19.59,20H18V18.41l5-5L24.59,15ZM26,13.59,24.41,12,26,10.41,27.59,12Z"/>',
32
59
  "flash": '<path d="M11.61,29.92a1,1,0,0,1-.6-1.07L12.83,17H8a1,1,0,0,1-1-1.23l3-13A1,1,0,0,1,11,2H21a1,1,0,0,1,.78.37,1,1,0,0,1,.2.85L20.25,11H25a1,1,0,0,1,.9.56,1,1,0,0,1-.11,1l-13,17A1,1,0,0,1,12,30,1.09,1.09,0,0,1,11.61,29.92ZM17.75,13l2-9H11.8L9.26,15h5.91L13.58,25.28,23,13Z"/>',
60
+ "flow": '<path d="M27,22.14V17a2,2,0,0,0-2-2H17V9.86a4,4,0,1,0-2,0V15H7a2,2,0,0,0-2,2v5.14a4,4,0,1,0,2,0V17H25v5.14a4,4,0,1,0,2,0ZM8,26a2,2,0,1,1-2-2A2,2,0,0,1,8,26ZM14,6a2,2,0,1,1,2,2A2,2,0,0,1,14,6ZM26,28a2,2,0,1,1,2-2A2,2,0,0,1,26,28Z"/>',
61
+ "folder": '<path d="M11.17,6l3.42,3.41.58.59H28V26H4V6h7.17m0-2H4A2,2,0,0,0,2,6V26a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2H16L12.59,4.59A2,2,0,0,0,11.17,4Z"/>',
62
+ "function": '<path d="M19.6262,29.5256,19.11,27.5935A12.0035,12.0035,0,0,0,25.2312,8.3323l1.5376-1.2788a14.0033,14.0033,0,0,1-7.1426,22.4721Z"/><path d="M10,29H8V25.18l.8037-.1607C10.2617,24.728,12,23.6206,12,20V18.6182l-4-2V14.3818l4-2V12c0-5.4673,3.9253-9,10-9h2V6.82l-.8037.1607C21.7383,7.272,20,8.3794,20,12v.3818l4,2v2.2364l-4,2V20C20,25.4673,16.0747,29,10,29Zm0-2c4.9346,0,8-2.6821,8-7V17.3818L21.7642,15.5,18,13.6182V12c0-4.5781,2.3853-6.1924,4-6.76V5c-4.9346,0-8,2.6821-8,7v1.6182L10.2358,15.5,14,17.3818V20c0,4.5781-2.3853,6.1924-4,6.76Z"/><path d="M5.2312,24.9465A14.0032,14.0032,0,0,1,12.3779,2.4734l.5161,1.9321A12.0035,12.0035,0,0,0,6.7688,23.6677Z"/>',
63
+ "globe": '<path d="M14,4a7,7,0,1,1-7,7,7,7,0,0,1,7-7m0-2a9,9,0,1,0,9,9A9,9,0,0,0,14,2Z"/><path d="M28,11a13.9563,13.9563,0,0,0-4.1051-9.8949L22.4813,2.5187A11.9944,11.9944,0,0,1,5.5568,19.5194l-.0381-.0381L4.1051,20.8949A13.9563,13.9563,0,0,0,14,25v3H10v2H20V28H16V24.84A14.0094,14.0094,0,0,0,28,11Z"/>',
33
64
  "grid": '<path d="M12,4H6A2,2,0,0,0,4,6v6a2,2,0,0,0,2,2h6a2,2,0,0,0,2-2V6A2,2,0,0,0,12,4Zm0,8H6V6h6Z"/><path d="M26,4H20a2,2,0,0,0-2,2v6a2,2,0,0,0,2,2h6a2,2,0,0,0,2-2V6A2,2,0,0,0,26,4Zm0,8H20V6h6Z"/><path d="M12,18H6a2,2,0,0,0-2,2v6a2,2,0,0,0,2,2h6a2,2,0,0,0,2-2V20A2,2,0,0,0,12,18Zm0,8H6V20h6Z"/><path d="M26,18H20a2,2,0,0,0-2,2v6a2,2,0,0,0,2,2h6a2,2,0,0,0,2-2V20A2,2,0,0,0,26,18Zm0,8H20V20h6Z"/>',
34
65
  "hashtag": '<path d="M28,12V10H22V4H20v6H12V4H10v6H4v2h6v8H4v2h6v6h2V22h8v6h2V22h6V20H22V12Zm-8,8H12V12h8Z"/>',
35
66
  "help": '<path d="M16,2A14,14,0,1,0,30,16,14,14,0,0,0,16,2Zm0,26A12,12,0,1,1,28,16,12,12,0,0,1,16,28Z"/><circle cx="16" cy="23.5" r="1.5"/><path d="M17,8H15.5A4.49,4.49,0,0,0,11,12.5V13h2v-.5A2.5,2.5,0,0,1,15.5,10H17a2.5,2.5,0,0,1,0,5H15v4.5h2V17a4.5,4.5,0,0,0,0-9Z"/>',
36
67
  "home": '<path d="M16.6123,2.2138a1.01,1.01,0,0,0-1.2427,0L1,13.4194l1.2427,1.5717L4,13.6209V26a2.0041,2.0041,0,0,0,2,2H26a2.0037,2.0037,0,0,0,2-2V13.63L29.7573,15,31,13.4282ZM18,26H14V18h4Zm2,0V18a2.0023,2.0023,0,0,0-2-2H14a2.002,2.002,0,0,0-2,2v8H6V12.0615l10-7.79,10,7.8005V26Z"/>',
68
+ "idea": '<path d="M11 24H21V26H11z"/><path d="M13 28H19V30H13z"/><path d="M16,2A10,10,0,0,0,6,12a9.19,9.19,0,0,0,3.46,7.62c1,.93,1.54,1.46,1.54,2.38h2c0-1.84-1.11-2.87-2.19-3.86A7.2,7.2,0,0,1,8,12a8,8,0,0,1,16,0,7.2,7.2,0,0,1-2.82,6.14c-1.07,1-2.18,2-2.18,3.86h2c0-.92.53-1.45,1.54-2.39A9.18,9.18,0,0,0,26,12,10,10,0,0,0,16,2Z"/>',
69
+ "identification": '<path d="M28,6V26H4V6H28m0-2H4A2,2,0,0,0,2,6V26a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V6a2,2,0,0,0-2-2Z"/><path d="M6 10H13V12H6z"/><path d="M6 14H10V16H6z"/><path d="M23,18H17a3,3,0,0,0-3,3v2h2V21a1,1,0,0,1,1-1h6a1,1,0,0,1,1,1v2h2V21A3,3,0,0,0,23,18Z"/><path d="M20,17a4,4,0,1,0-4-4A4,4,0,0,0,20,17Zm0-6a2,2,0,1,1-2,2A2,2,0,0,1,20,11Z"/>',
37
70
  "information": '<path d="M17 22 17 14 13 14 13 16 15 16 15 22 12 22 12 24 20 24 20 22 17 22z"/><path d="M16,8a1.5,1.5,0,1,0,1.5,1.5A1.5,1.5,0,0,0,16,8Z"/><path d="M16,30A14,14,0,1,1,30,16,14,14,0,0,1,16,30ZM16,4A12,12,0,1,0,28,16,12,12,0,0,0,16,4Z"/>',
71
+ "information--square": '<path d="M17 22 17 14 13 14 13 16 15 16 15 22 12 22 12 24 20 24 20 22 17 22z"/><path d="M16,8a1.5,1.5,0,1,0,1.5,1.5A1.5,1.5,0,0,0,16,8Z"/><path d="M26,28H6a2.0023,2.0023,0,0,1-2-2V6A2.0023,2.0023,0,0,1,6,4H26a2.0023,2.0023,0,0,1,2,2V26A2.0023,2.0023,0,0,1,26,28ZM6,6V26H26V6Z"/>',
72
+ "inventory-management": '<path d="M19 24H23V28H19z"/><path d="M26 24H30V28H26z"/><path d="M19 17H23V21H19z"/><path d="M26 17H30V21H26z"/><path d="M17,24H4V10H28v5h2V10a2.0023,2.0023,0,0,0-2-2H22V4a2.0023,2.0023,0,0,0-2-2H12a2.002,2.002,0,0,0-2,2V8H4a2.002,2.002,0,0,0-2,2V24a2.0023,2.0023,0,0,0,2,2H17ZM12,4h8V8H12Z"/>',
38
73
  "launch": '<path d="M26,28H6a2.0027,2.0027,0,0,1-2-2V6A2.0027,2.0027,0,0,1,6,4H16V6H6V26H26V16h2V26A2.0027,2.0027,0,0,1,26,28Z"/><path d="M20 2 20 4 26.586 4 18 12.586 19.414 14 28 5.414 28 12 30 12 30 2 20 2z"/>',
39
74
  "layers": '<path d="M16,24a.9967.9967,0,0,1-.4741-.12l-13-7L3.4741,15.12,16,21.8643,28.5259,15.12l.9482,1.7607-13,7A.9967.9967,0,0,1,16,24Z"/><path d="M16,30a.9967.9967,0,0,1-.4741-.12l-13-7L3.4741,21.12,16,27.8643,28.5259,21.12l.9482,1.7607-13,7A.9967.9967,0,0,1,16,30Z"/><path d="M16,18a.9967.9967,0,0,1-.4741-.12l-13-7a1,1,0,0,1,0-1.7607l13-7a.9982.9982,0,0,1,.9482,0l13,7a1,1,0,0,1,0,1.7607l-13,7A.9967.9967,0,0,1,16,18ZM5.1094,10,16,15.8643,26.8906,10,16,4.1358Z"/>',
75
+ "license": '<path d="M10 6H22V8H10z"/><path d="M10 10H22V12H10z"/><path d="M10 24H16V26H10z"/><path d="M10 14H16V16H10z"/><path d="M24,30H8a2.0023,2.0023,0,0,1-2-2V4A2.0023,2.0023,0,0,1,8,2H24a2.0023,2.0023,0,0,1,2,2V28A2.0023,2.0023,0,0,1,24,30ZM8,4V28H24V4Z"/>',
40
76
  "list": '<path d="M10 6H28V8H10z"/><path d="M10 24H28V26H10z"/><path d="M10 15H28V17H10z"/><path d="M4 15H6V17H4z"/><path d="M4 6H6V8H4z"/><path d="M4 24H6V26H4z"/>',
41
77
  "list--boxes": '<path d="M16 8H30V10H16z"/><path d="M16 22H30V24H16z"/><path d="M10,14H4a2.0023,2.0023,0,0,1-2-2V6A2.0023,2.0023,0,0,1,4,4h6a2.0023,2.0023,0,0,1,2,2v6A2.0023,2.0023,0,0,1,10,14ZM4,6v6h6.0012L10,6Z"/><path d="M10,28H4a2.0023,2.0023,0,0,1-2-2V20a2.0023,2.0023,0,0,1,2-2h6a2.0023,2.0023,0,0,1,2,2v6A2.0023,2.0023,0,0,1,10,28ZM4,20v6h6.0012L10,20Z"/>',
42
78
  "list--checked": '<path d="M16 22H30V24H16z"/><path d="M14 19.4 12.6 18 6 24.6 3.4 22 2 23.4 6 27.4z"/><path d="M16 8H30V10H16z"/><path d="M14 5.4 12.6 4 6 10.6 3.4 8 2 9.4 6 13.4z"/>',
43
79
  "location": '<path d="M16,18a5,5,0,1,1,5-5A5.0057,5.0057,0,0,1,16,18Zm0-8a3,3,0,1,0,3,3A3.0033,3.0033,0,0,0,16,10Z"/><path d="M16,30,7.5645,20.0513c-.0479-.0571-.3482-.4515-.3482-.4515A10.8888,10.8888,0,0,1,5,13a11,11,0,0,1,22,0,10.8844,10.8844,0,0,1-2.2148,6.5973l-.0015.0025s-.3.3944-.3447.4474ZM8.8125,18.395c.001.0007.2334.3082.2866.3744L16,26.9079l6.91-8.15c.0439-.0552.2783-.3649.2788-.3657A8.901,8.901,0,0,0,25,13,9,9,0,1,0,7,13a8.9054,8.9054,0,0,0,1.8125,5.395Z"/>',
80
+ "location--company": '<path d="M16,30,7.5645,20.0513c-.0479-.0571-.3482-.4515-.3482-.4515A10.8888,10.8888,0,0,1,5,13a11,11,0,0,1,22,0,10.8844,10.8844,0,0,1-2.2148,6.5973l-.0015.0025s-.3.3944-.3447.4474ZM8.8125,18.395c.001.0007.2334.3082.2866.3744L16,26.9079l6.91-8.15c.0439-.0552.2783-.3649.2788-.3657A8.901,8.901,0,0,0,25,13,9,9,0,0,0,7,13a8.9054,8.9054,0,0,0,1.8125,5.395Z"/><path d="M21,18H19V10H13v8H11V10a2.0021,2.0021,0,0,1,2-2h6a2.0021,2.0021,0,0,1,2,2Z"/><path d="M15 16H17V18H15z"/><path d="M15 12H17V14H15z"/>',
44
81
  "locked": '<path d="M24,14H22V8A6,6,0,0,0,10,8v6H8a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H24a2,2,0,0,0,2-2V16A2,2,0,0,0,24,14ZM12,8a4,4,0,0,1,8,0v6H12ZM24,28H8V16H24Z"/>',
82
+ "login": '<path d="M26,30H14a2,2,0,0,1-2-2V25h2v3H26V4H14V7H12V4a2,2,0,0,1,2-2H26a2,2,0,0,1,2,2V28A2,2,0,0,1,26,30Z"/><path d="M14.59 20.59 18.17 17 4 17 4 15 18.17 15 14.59 11.41 16 10 22 16 16 22 14.59 20.59z"/>',
83
+ "logout": '<path d="M6,30H18a2.0023,2.0023,0,0,0,2-2V25H18v3H6V4H18V7h2V4a2.0023,2.0023,0,0,0-2-2H6A2.0023,2.0023,0,0,0,4,4V28A2.0023,2.0023,0,0,0,6,30Z"/><path d="M20.586 20.586 24.172 17 10 17 10 15 24.172 15 20.586 11.414 22 10 28 16 22 22 20.586 20.586z"/>',
84
+ "maximize": '<path d="M20 2 20 4 26.586 4 18 12.582 19.414 14 28 5.414 28 12 30 12 30 2 20 2z"/><path d="M14 19.416 12.592 18 4 26.586 4 20 2 20 2 30 12 30 12 28 5.414 28 14 19.416z"/>',
45
85
  "menu": '<path d="M4 6H28V8H4z"/><path d="M4 24H28V26H4z"/><path d="M4 12H28V14H4z"/><path d="M4 18H28V20H4z"/>',
46
86
  "minimize": '<path d="M4 18 4 20 10.586 20 2 28.582 3.414 30 12 21.414 12 28 14 28 14 18 4 18z"/><path d="M30 3.416 28.592 2 20 10.586 20 4 18 4 18 14 28 14 28 12 21.414 12 30 3.416z"/>',
47
87
  "misuse": '<path d="M16,2C8.3,2,2,8.3,2,16s6.3,14,14,14s14-6.3,14-14S23.7,2,16,2z M21.4,23L16,17.6L10.6,23L9,21.4l5.4-5.4L9,10.6L10.6,9 l5.4,5.4L21.4,9l1.6,1.6L17.6,16l5.4,5.4L21.4,23z"/><path fill="none" d="M21.4,23L16,17.6L10.6,23L9,21.4l5.4-5.4L9,10.6L10.6,9l5.4,5.4L21.4,9l1.6,1.6L17.6,16 l5.4,5.4L21.4,23z" data-icon-path="inner-path" opacity="0"/>',
88
+ "money": '<path d="M2 22H30V24H2z"/><path d="M2 26H30V28H2z"/><path d="M24,10a2,2,0,1,0,2,2,2,2,0,0,0-2-2Z"/><path d="M16,16a4,4,0,1,1,4-4A4.0045,4.0045,0,0,1,16,16Zm0-6a2,2,0,1,0,2,2A2.002,2.002,0,0,0,16,10Z"/><path d="M8,10a2,2,0,1,0,2,2,2,2,0,0,0-2-2Z"/><path d="M28,20H4a2.0051,2.0051,0,0,1-2-2V6A2.0051,2.0051,0,0,1,4,4H28a2.0051,2.0051,0,0,1,2,2V18A2.0027,2.0027,0,0,1,28,20ZM28,6H4V18H28Z"/>',
89
+ "notebook": '<path d="M19 10H26V12H19z"/><path d="M19 15H26V17H19z"/><path d="M19 20H26V22H19z"/><path d="M28,5H4A2.002,2.002,0,0,0,2,7V25a2.0023,2.0023,0,0,0,2,2H28a2.0027,2.0027,0,0,0,2-2V7A2.0023,2.0023,0,0,0,28,5ZM4,7H15V25H4ZM17,25V7H28l.002,18Z"/>',
48
90
  "notification": '<path d="M28.7071,19.293,26,16.5859V13a10.0136,10.0136,0,0,0-9-9.9492V1H15V3.0508A10.0136,10.0136,0,0,0,6,13v3.5859L3.2929,19.293A1,1,0,0,0,3,20v3a1,1,0,0,0,1,1h7v.7768a5.152,5.152,0,0,0,4.5,5.1987A5.0057,5.0057,0,0,0,21,25V24h7a1,1,0,0,0,1-1V20A1,1,0,0,0,28.7071,19.293ZM19,25a3,3,0,0,1-6,0V24h6Zm8-3H5V20.4141L7.707,17.707A1,1,0,0,0,8,17V13a8,8,0,0,1,16,0v4a1,1,0,0,0,.293.707L27,20.4141Z"/>',
91
+ "overflow-menu--horizontal": '<circle cx="8" cy="16" r="2"/><circle cx="16" cy="16" r="2"/><circle cx="24" cy="16" r="2"/>',
49
92
  "overflow-menu--vertical": '<circle cx="16" cy="8" r="2"/><circle cx="16" cy="16" r="2"/><circle cx="16" cy="24" r="2"/>',
93
+ "partnership": '<path d="M8,9a4,4,0,1,1,4-4A4,4,0,0,1,8,9ZM8,3a2,2,0,1,0,2,2A2,2,0,0,0,8,3Z"/><path d="M24,9a4,4,0,1,1,4-4A4,4,0,0,1,24,9Zm0-6a2,2,0,1,0,2,2A2,2,0,0,0,24,3Z"/><path d="M26,30H22a2,2,0,0,1-2-2V21h2v7h4V19h2V13a1,1,0,0,0-1-1H20.58L16,20l-4.58-8H5a1,1,0,0,0-1,1v6H6v9h4V21h2v7a2,2,0,0,1-2,2H6a2,2,0,0,1-2-2V21a2,2,0,0,1-2-2V13a3,3,0,0,1,3-3h7.58L16,16l3.42-6H27a3,3,0,0,1,3,3v6a2,2,0,0,1-2,2v7A2,2,0,0,1,26,30Z"/>',
94
+ "payment--methods": '<path d="M5,26V15.8281l-3.5859,3.586L0,18l6-6,6,6-1.4141,1.4141-3.5859-3.586v10.1719h12v2H7c-1.104-.0013-1.9987-.896-2-2Z"/><path d="M31,18h-3v-2h-2v2h-1c-1.1046,0-2,.8954-2,2v2c0,1.1046,.8954,2,2,2h4v2h-6s0,2,0,2h3v2h2v-2h1c1.1046,0,2-.8954,2-2v-2c0-1.1046-.8954-2-2-2h-4v-2h6v-2Z"/><path d="M28,12V6c-.0012-1.104-.896-1.9988-2-2H12v2h14v6"/><path d="M2 6H7V8H2z"/><path d="M2 2H10V4H2z"/>',
95
+ "percentage": '<path d="M9,14a5,5,0,1,1,5-5A5.0055,5.0055,0,0,1,9,14ZM9,6a3,3,0,1,0,3,3A3.0033,3.0033,0,0,0,9,6Z"/><path d="M.029 15H31.97V17H.029z" transform="rotate(-45 16 16)"/><path d="M23,28a5,5,0,1,1,5-5A5.0055,5.0055,0,0,1,23,28Zm0-8a3,3,0,1,0,3,3A3.0033,3.0033,0,0,0,23,20Z"/>',
96
+ "phone": '<path d="M26,29h-.17C6.18,27.87,3.39,11.29,3,6.23A3,3,0,0,1,5.76,3h5.51a2,2,0,0,1,1.86,1.26L14.65,8a2,2,0,0,1-.44,2.16l-2.13,2.15a9.37,9.37,0,0,0,7.58,7.6l2.17-2.15A2,2,0,0,1,24,17.35l3.77,1.51A2,2,0,0,1,29,20.72V26A3,3,0,0,1,26,29ZM6,5A1,1,0,0,0,5,6v.08C5.46,12,8.41,26,25.94,27A1,1,0,0,0,27,26.06V20.72l-3.77-1.51-2.87,2.85L19.88,22C11.18,20.91,10,12.21,10,12.12l-.06-.48,2.84-2.87L11.28,5Z"/>',
97
+ "piggy-bank": '<path d="M16.5,14H20V12H18V11H16v1.0508A2.5,2.5,0,0,0,16.5,17h1a.5.5,0,0,1,0,1H14v2h2v1h2V19.9492A2.5,2.5,0,0,0,17.5,15h-1a.5.5,0,0,1,0-1Z"/><path d="M29,13H26.98A5.7789,5.7789,0,0,0,25,8.8525V5a1,1,0,0,0-1.6-.8L19.6665,7H15c-5.5095,0-9.4634,3.2412-9.9485,8H5a1.0009,1.0009,0,0,1-1-1V12H2v2a3.0033,3.0033,0,0,0,3,3h.07A9.1733,9.1733,0,0,0,9,23.5566V27a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V25h3v2a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V23.6372A5.0926,5.0926,0,0,0,26.8188,20H29a1,1,0,0,0,1-1V14A1,1,0,0,0,29,13Zm-1,5H25.124c-.3052,2.7529-.8235,3.4854-3.124,4.3154V26H20V23H13v3H11V22.3779A7.013,7.013,0,0,1,7,16c0-4.8354,4.0181-7,8-7h5.3335L23,7V9.7764c2.4182,1.8593,1.9126,3.186,2.0183,5.2236H28Z"/>',
98
+ "portfolio": '<path d="M28,10H22V6a2,2,0,0,0-2-2H12a2,2,0,0,0-2,2v4H4a2,2,0,0,0-2,2V26a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V12A2,2,0,0,0,28,10ZM12,6h8v4H12ZM4,26V12H28V26Z"/>',
50
99
  "printer": '<path d="M28,9H25V3H7V9H4a2,2,0,0,0-2,2V21a2,2,0,0,0,2,2H7v6H25V23h3a2,2,0,0,0,2-2V11A2,2,0,0,0,28,9ZM9,5H23V9H9ZM23,27H9V17H23Zm5-6H25V15H7v6H4V11H28Z"/>',
100
+ "purchase": '<path d="M28,6H4A2,2,0,0,0,2,8V24a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V8A2,2,0,0,0,28,6Zm0,2v3H4V8ZM4,24V13H28V24Z"/><path d="M6 20H16V22H6z"/>',
51
101
  "qr-code": '<path d="M24 26H26V28H24z" transform="rotate(-90 25 27)"/><path d="M18 22H20V24H18z" transform="rotate(-90 19 23)"/><path d="M18 30 22 30 22 28 20 28 20 26 18 26 18 30z"/><path d="M25 23H29V25H25z" transform="rotate(-90 27 24)"/><path d="M28 26 30 26 30 30 26 30 26 28 28 28 28 26z"/><path d="M26 20 26 18 30 18 30 22 28 22 28 20 26 20z"/><path d="M24 20 22 20 22 24 20 24 20 26 24 26 24 20z"/><path d="M19 17H21V21H19z" transform="rotate(-90 20 19)"/><path d="M6 22H10V26H6z"/><path d="M14,30H2V18H14ZM4,28h8V20H4Z"/><path d="M22 6H26V10H22z"/><path d="M30,14H18V2H30ZM20,12h8V4H20Z"/><path d="M6 6H10V10H6z"/><path d="M14,14H2V2H14ZM4,12h8V4H4Z"/>',
102
+ "receipt": '<path d="M21 16H23V18H21z"/><path d="M9 16H17V18H9z"/><path d="M21 12H23V14H21z"/><path d="M9 12H17V14H9z"/><path d="M9 8H23V10H9z"/><path d="M25,2H7A2.002,2.002,0,0,0,5,4V29a1,1,0,0,0,1,1H7a.9987.9987,0,0,0,.8-.4L10,26.667,12.2,29.6a1.0353,1.0353,0,0,0,1.6,0L16,26.667,18.2,29.6a1.0353,1.0353,0,0,0,1.6,0L22,26.667,24.2,29.6a.9993.9993,0,0,0,.8.4h1a1,1,0,0,0,1-1V4A2.0023,2.0023,0,0,0,25,2Zm0,25.333L22.8,24.4a1.0353,1.0353,0,0,0-1.6,0L19,27.333,16.8,24.4a1.0353,1.0353,0,0,0-1.6,0L13,27.333,10.8,24.4a1.0353,1.0353,0,0,0-1.6,0L7,27.333V4H25Z"/>',
52
103
  "recently-viewed": '<path d="M20.59 22 15 16.41 15 7 17 7 17 15.58 22 20.59 20.59 22z"/><path d="M16,2A13.94,13.94,0,0,0,6,6.23V2H4v8h8V8H7.08A12,12,0,1,1,4,16H2A14,14,0,1,0,16,2Z"/>',
104
+ "redo": '<path d="M12,10H24.1851L20.5977,6.4141,22,5,28,11,22,17l-1.4023-1.4146L24.1821,12H12a6,6,0,0,0,0,12h8v2H12a8,8,0,0,1,0-16Z"/>',
53
105
  "renew": '<path d="M12,10H6.78A11,11,0,0,1,27,16h2A13,13,0,0,0,6,7.68V4H4v8h8Z"/><path d="M20,22h5.22A11,11,0,0,1,5,16H3a13,13,0,0,0,23,8.32V28h2V20H20Z"/>',
106
+ "repeat": '<path d="M6,6H26.1719l-3.586-3.5859L24,1l6,6-6,6-1.4141-1.4141L26.1719,8H6v7H4V8A2.0024,2.0024,0,0,1,6,6Z"/><path d="M9.4141,20.4141,5.8281,24H26V17h2v7a2.0024,2.0024,0,0,1-2,2H5.8281L9.414,29.5859,8,31,2,25l6-6Z"/>',
107
+ "report": '<path d="M10 18H18V20H10z"/><path d="M10 13H22V15H10z"/><path d="M10 23H15V25H10z"/><path d="M25,5H22V4a2,2,0,0,0-2-2H12a2,2,0,0,0-2,2V5H7A2,2,0,0,0,5,7V28a2,2,0,0,0,2,2H25a2,2,0,0,0,2-2V7A2,2,0,0,0,25,5ZM12,4h8V8H12ZM25,28H7V7h3v3H22V7h3Z"/>',
108
+ "request-quote": '<path d="M22,22v6H6V4H16V2H6A2,2,0,0,0,4,4V28a2,2,0,0,0,2,2H22a2,2,0,0,0,2-2V22Z"/><path d="M29.54,5.76l-3.3-3.3a1.6,1.6,0,0,0-2.24,0l-14,14V22h5.53l14-14a1.6,1.6,0,0,0,0-2.24ZM14.7,20H12V17.3l9.44-9.45,2.71,2.71ZM25.56,9.15,22.85,6.44l2.27-2.27,2.71,2.71Z"/>',
109
+ "reset": '<path d="M18,28A12,12,0,1,0,6,16v6.2L2.4,18.6,1,20l6,6,6-6-1.4-1.4L8,22.2V16H8A10,10,0,1,1,18,26Z"/>',
110
+ "rule": '<path d="M10 16H22V18H10z"/><path d="M10 10H22V12H10z"/><path d="M16,30,9.8242,26.7071A10.9815,10.9815,0,0,1,4,17V4A2.0022,2.0022,0,0,1,6,2H26a2.0022,2.0022,0,0,1,2,2V17a10.9815,10.9815,0,0,1-5.8242,9.7069ZM6,4V17a8.9852,8.9852,0,0,0,4.7656,7.9423L16,27.7333l5.2344-2.791A8.9852,8.9852,0,0,0,26,17V4Z"/>',
111
+ "save": '<path d="M27.71,9.29l-5-5A1,1,0,0,0,22,4H6A2,2,0,0,0,4,6V26a2,2,0,0,0,2,2H26a2,2,0,0,0,2-2V10A1,1,0,0,0,27.71,9.29ZM12,6h8v4H12Zm8,20H12V18h8Zm2,0V18a2,2,0,0,0-2-2H12a2,2,0,0,0-2,2v8H6V6h4v4a2,2,0,0,0,2,2h8a2,2,0,0,0,2-2V6.41l4,4V26Z"/>',
112
+ "scales": '<path d="M20,16a5,5,0,0,0,10,0,1,1,0,0,0-.1055-.4473L25.896,7.5562a.8913.8913,0,0,0-.0454-.0816A1,1,0,0,0,25,7H18.8218A3.0155,3.0155,0,0,0,17,5.1841V2H15V5.1841A3.0155,3.0155,0,0,0,13.1782,7H7a1,1,0,0,0-.8945.5527l-4,8A1,1,0,0,0,2,16a5,5,0,0,0,10,0,1,1,0,0,0-.1055-.4473L8.6182,9h4.56A3.0147,3.0147,0,0,0,15,10.8154V28H6v2H26V28H17V10.8159A3.0155,3.0155,0,0,0,18.8218,9h4.56l-3.2763,6.5527A1,1,0,0,0,20,16ZM7,19a2.9958,2.9958,0,0,1-2.8152-2h5.63A2.9956,2.9956,0,0,1,7,19Zm2.3821-4H4.6179L7,10.2363ZM16,9a1,1,0,1,1,1-1A1.0009,1.0009,0,0,1,16,9Zm9,10a2.9958,2.9958,0,0,1-2.8152-2h5.63A2.9956,2.9956,0,0,1,25,19Zm0-8.7637L27.3821,15H22.6179Z"/>',
54
113
  "search": '<path d="M29,27.5859l-7.5521-7.5521a11.0177,11.0177,0,1,0-1.4141,1.4141L27.5859,29ZM4,13a9,9,0,1,1,9,9A9.01,9.01,0,0,1,4,13Z"/>',
114
+ "send": '<path d="M27.45,15.11l-22-11a1,1,0,0,0-1.08.12,1,1,0,0,0-.33,1L7,16,4,26.74A1,1,0,0,0,5,28a1,1,0,0,0,.45-.11l22-11a1,1,0,0,0,0-1.78Zm-20.9,10L8.76,17H18V15H8.76L6.55,6.89,24.76,16Z"/>',
55
115
  "settings": '<path d="M27,16.76c0-.25,0-.5,0-.76s0-.51,0-.77l1.92-1.68A2,2,0,0,0,29.3,11L26.94,7a2,2,0,0,0-1.73-1,2,2,0,0,0-.64.1l-2.43.82a11.35,11.35,0,0,0-1.31-.75l-.51-2.52a2,2,0,0,0-2-1.61H13.64a2,2,0,0,0-2,1.61l-.51,2.52a11.48,11.48,0,0,0-1.32.75L7.43,6.06A2,2,0,0,0,6.79,6,2,2,0,0,0,5.06,7L2.7,11a2,2,0,0,0,.41,2.51L5,15.24c0,.25,0,.5,0,.76s0,.51,0,.77L3.11,18.45A2,2,0,0,0,2.7,21L5.06,25a2,2,0,0,0,1.73,1,2,2,0,0,0,.64-.1l2.43-.82a11.35,11.35,0,0,0,1.31.75l.51,2.52a2,2,0,0,0,2,1.61h4.72a2,2,0,0,0,2-1.61l.51-2.52a11.48,11.48,0,0,0,1.32-.75l2.42.82a2,2,0,0,0,.64.1,2,2,0,0,0,1.73-1L29.3,21a2,2,0,0,0-.41-2.51ZM25.21,24l-3.43-1.16a8.86,8.86,0,0,1-2.71,1.57L18.36,28H13.64l-.71-3.55a9.36,9.36,0,0,1-2.7-1.57L6.79,24,4.43,20l2.72-2.4a8.9,8.9,0,0,1,0-3.13L4.43,12,6.79,8l3.43,1.16a8.86,8.86,0,0,1,2.71-1.57L13.64,4h4.72l.71,3.55a9.36,9.36,0,0,1,2.7,1.57L25.21,8,27.57,12l-2.72,2.4a8.9,8.9,0,0,1,0,3.13L27.57,20Z"/><path d="M16,22a6,6,0,1,1,6-6A5.94,5.94,0,0,1,16,22Zm0-10a3.91,3.91,0,0,0-4,4,3.91,3.91,0,0,0,4,4,3.91,3.91,0,0,0,4-4A3.91,3.91,0,0,0,16,12Z"/>',
56
116
  "settings--adjust": '<path d="M30,8h-4.1c-0.5-2.3-2.5-4-4.9-4s-4.4,1.7-4.9,4H2v2h14.1c0.5,2.3,2.5,4,4.9,4s4.4-1.7,4.9-4H30V8z M21,12c-1.7,0-3-1.3-3-3 s1.3-3,3-3s3,1.3,3,3S22.7,12,21,12z"/><path d="M2,24h4.1c0.5,2.3,2.5,4,4.9,4s4.4-1.7,4.9-4H30v-2H15.9c-0.5-2.3-2.5-4-4.9-4s-4.4,1.7-4.9,4H2V24z M11,20c1.7,0,3,1.3,3,3 s-1.3,3-3,3s-3-1.3-3-3S9.3,20,11,20z"/>',
117
+ "shopping--bag": '<path d="M28.76,11.35A1,1,0,0,0,28,11H22V7a3,3,0,0,0-3-3H13a3,3,0,0,0-3,3v4H4a1,1,0,0,0-1,1.15L4.88,24.3a2,2,0,0,0,2,1.7H25.14a2,2,0,0,0,2-1.7L29,12.15A1,1,0,0,0,28.76,11.35ZM12,7a1,1,0,0,1,1-1h6a1,1,0,0,1,1,1v4H12ZM25.14,24H6.86L5.17,13H26.83Z"/>',
57
118
  "shopping--cart": '<circle cx="10" cy="28" r="2"/><circle cx="24" cy="28" r="2"/><path d="M28,7H5.82L5,2.8A1,1,0,0,0,4,2H0V4H3.18L7,23.2A1,1,0,0,0,8,24H26V22H8.82L8,18H26a1,1,0,0,0,1-.78l2-9A1,1,0,0,0,28,7Zm-2.8,9H7.62L6.22,9H26.75Z"/>',
119
+ "sort--ascending": '<path d="M18 22 19.414 20.586 23 24.172 23 4 25 4 25 24.172 28.586 20.586 30 22 24 28 18 22z"/><path d="M2 18H16V20H2z"/><path d="M6 12H16V14H6z"/><path d="M10 6H16V8H10z"/>',
120
+ "sort--descending": '<path d="M18 22 19.414 20.586 23 24.172 23 4 25 4 25 24.172 28.586 20.586 30 22 24 28 18 22z"/><path d="M2 6H16V8H2z"/><path d="M6 12H16V14H6z"/><path d="M10 18H16V20H10z"/>',
121
+ "star": '<path d="M16,6.52l2.76,5.58.46,1,1,.15,6.16.89L22,18.44l-.75.73.18,1,1.05,6.13-5.51-2.89L16,23l-.93.49L9.56,26.34l1-6.13.18-1L10,18.44,5.58,14.09l6.16-.89,1-.15.46-1L16,6.52M16,2l-4.55,9.22L1.28,12.69l7.36,7.18L6.9,30,16,25.22,25.1,30,23.36,19.87l7.36-7.17L20.55,11.22Z"/>',
122
+ "star--filled": '<path d="M16,2l-4.55,9.22L1.28,12.69l7.36,7.18L6.9,30,16,25.22,25.1,30,23.36,19.87l7.36-7.17L20.55,11.22Z"/>',
58
123
  "subtract": '<path d="M8 15H24V17H8z"/>',
124
+ "table--split": '<path d="M27,3H5A2,2,0,0,0,3,5V27a2,2,0,0,0,2,2H27a2,2,0,0,0,2-2V5A2,2,0,0,0,27,3Zm0,2V9H5V5ZM17,11H27v7H17Zm-2,7H5V11H15ZM5,20H15v7H5Zm12,7V20H27v7Z"/>',
125
+ "tag": '<path d="M10,14a4,4,0,1,1,4-4A4.0045,4.0045,0,0,1,10,14Zm0-6a2,2,0,1,0,1.998,2.0044A2.002,2.002,0,0,0,10,8Z"/><path d="M16.6436,29.4145,2.5858,15.3555A2,2,0,0,1,2,13.9414V4A2,2,0,0,1,4,2h9.9413a2,2,0,0,1,1.4142.5858L29.4144,16.6436a2.0005,2.0005,0,0,1,0,2.8285l-9.9424,9.9425a2.0008,2.0008,0,0,1-2.8285,0ZM4,4v9.9417L18.0578,28,28,18.0579,13.9416,4Z"/>',
126
+ "task": '<path d="M14 20.18 10.41 16.59 9 18 14 23 23 14 21.59 12.58 14 20.18z"/><path d="M25,5H22V4a2,2,0,0,0-2-2H12a2,2,0,0,0-2,2V5H7A2,2,0,0,0,5,7V28a2,2,0,0,0,2,2H25a2,2,0,0,0,2-2V7A2,2,0,0,0,25,5ZM12,4h8V8H12ZM25,28H7V7h3v3H22V7h3Z"/>',
127
+ "task--complete": '<path d="M22 27.18 19.41 24.59 18 26 22 30 30 22 28.59 20.59 22 27.18z"/><path d="M25,5H22V4a2.0058,2.0058,0,0,0-2-2H12a2.0058,2.0058,0,0,0-2,2V5H7A2.0058,2.0058,0,0,0,5,7V28a2.0058,2.0058,0,0,0,2,2h9V28H7V7h3v3H22V7h3V18h2V7A2.0058,2.0058,0,0,0,25,5ZM20,8H12V4h8Z"/>',
59
128
  "text--font": '<path d="M25,12H20v2h5a1.0008,1.0008,0,0,1,1,1v2H22a3.0033,3.0033,0,0,0-3,3v1a3.0033,3.0033,0,0,0,3,3h6V15A3.0033,3.0033,0,0,0,25,12ZM22,22a1.0008,1.0008,0,0,1-1-1V20a1.0008,1.0008,0,0,1,1-1h4v3Z"/><path d="M16,24h2L12,7H10L4,24H6l1.6936-5h6.6135ZM8.3711,17l2.4966-7.3711.2668.0005L13.63,17Z"/>',
60
129
  "time": '<path d="M16,30A14,14,0,1,1,30,16,14,14,0,0,1,16,30ZM16,4A12,12,0,1,0,28,16,12,12,0,0,0,16,4Z"/><path d="M20.59 22 15 16.41 15 7 17 7 17 15.58 22 20.59 20.59 22z"/>',
61
130
  "trash-can": '<path d="M12 12H14V24H12z"/><path d="M18 12H20V24H18z"/><path d="M4,6V8H6V28a2,2,0,0,0,2,2H24a2,2,0,0,0,2-2V8h2V6ZM8,28V8H24V28Z"/><path d="M12 2H20V4H12z"/>',
131
+ "undo": '<path d="M20,10H7.8149l3.5874-3.5859L10,5,4,11,10,17l1.4023-1.4146L7.8179,12H20a6,6,0,0,1,0,12H12v2h8a8,8,0,0,0,0-16Z"/>',
62
132
  "user": '<path d="M16,4a5,5,0,1,1-5,5,5,5,0,0,1,5-5m0-2a7,7,0,1,0,7,7A7,7,0,0,0,16,2Z"/><path d="M26,30H24V25a5,5,0,0,0-5-5H13a5,5,0,0,0-5,5v5H6V25a7,7,0,0,1,7-7h6a7,7,0,0,1,7,7Z"/>',
133
+ "user--admin": '<path d="M12,4A5,5,0,1,1,7,9a5,5,0,0,1,5-5m0-2a7,7,0,1,0,7,7A7,7,0,0,0,12,2Z"/><path d="M22,30H20V25a5,5,0,0,0-5-5H9a5,5,0,0,0-5,5v5H2V25a7,7,0,0,1,7-7h6a7,7,0,0,1,7,7Z"/><path d="M25 16.18 22.41 13.59 21 15 25 19 32 12 30.59 10.59 25 16.18z"/>',
134
+ "user--follow": '<path d="M32 14 28 14 28 10 26 10 26 14 22 14 22 16 26 16 26 20 28 20 28 16 32 16 32 14z"/><path d="M12,4A5,5,0,1,1,7,9a5,5,0,0,1,5-5m0-2a7,7,0,1,0,7,7A7,7,0,0,0,12,2Z"/><path d="M22,30H20V25a5,5,0,0,0-5-5H9a5,5,0,0,0-5,5v5H2V25a7,7,0,0,1,7-7h6a7,7,0,0,1,7,7Z"/>',
135
+ "user--multiple": '<path d="M30,30H28V25a5.0057,5.0057,0,0,0-5-5V18a7.0078,7.0078,0,0,1,7,7Z"/><path d="M22,30H20V25a5.0059,5.0059,0,0,0-5-5H9a5.0059,5.0059,0,0,0-5,5v5H2V25a7.0082,7.0082,0,0,1,7-7h6a7.0082,7.0082,0,0,1,7,7Z"/><path d="M20,2V4a5,5,0,0,1,0,10v2A7,7,0,0,0,20,2Z"/><path d="M12,4A5,5,0,1,1,7,9a5,5,0,0,1,5-5m0-2a7,7,0,1,0,7,7A7,7,0,0,0,12,2Z"/>',
136
+ "user--profile": '<path d="M12,4A5,5,0,1,1,7,9a5,5,0,0,1,5-5m0-2a7,7,0,1,0,7,7A7,7,0,0,0,12,2Z"/><path d="M22,30H20V25a5,5,0,0,0-5-5H9a5,5,0,0,0-5,5v5H2V25a7,7,0,0,1,7-7h6a7,7,0,0,1,7,7Z"/><path d="M22 4H32V6H22z"/><path d="M22 9H32V11H22z"/><path d="M22 14H29V16H22z"/>',
63
137
  "view": '<path d="M30.94,15.66A16.69,16.69,0,0,0,16,5,16.69,16.69,0,0,0,1.06,15.66a1,1,0,0,0,0,.68A16.69,16.69,0,0,0,16,27,16.69,16.69,0,0,0,30.94,16.34,1,1,0,0,0,30.94,15.66ZM16,25c-5.3,0-10.9-3.93-12.93-9C5.1,10.93,10.7,7,16,7s10.9,3.93,12.93,9C26.9,21.07,21.3,25,16,25Z"/><path d="M16,10a6,6,0,1,0,6,6A6,6,0,0,0,16,10Zm0,10a4,4,0,1,1,4-4A4,4,0,0,1,16,20Z"/>',
138
+ "wallet": '<path d="M22 17H24V19H22z"/><path d="M28,8H4V5H26V3H4A2,2,0,0,0,2,5V26a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10A2,2,0,0,0,28,8ZM4,26V10H28v3H20a2,2,0,0,0-2,2v6a2,2,0,0,0,2,2h8v3ZM28,15v6H20V15Z"/>',
64
139
  "warning--alt": '<path d="M16,23a1.5,1.5,0,1,0,1.5,1.5A1.5,1.5,0,0,0,16,23Z"/><path d="M15 12H17V21H15z"/><path d="M29,30H3a1,1,0,0,1-.8872-1.4614l13-25a1,1,0,0,1,1.7744,0l13,25A1,1,0,0,1,29,30ZM4.6507,28H27.3493l.002-.0033L16.002,6.1714h-.004L4.6487,27.9967Z"/>',
65
140
  "warning--filled": '<path d="M16,2C8.3,2,2,8.3,2,16s6.3,14,14,14s14-6.3,14-14C30,8.3,23.7,2,16,2z M14.9,8h2.2v11h-2.2V8z M16,25 c-0.8,0-1.5-0.7-1.5-1.5S15.2,22,16,22c0.8,0,1.5,0.7,1.5,1.5S16.8,25,16,25z"/><path fill="none" d="M17.5,23.5c0,0.8-0.7,1.5-1.5,1.5c-0.8,0-1.5-0.7-1.5-1.5S15.2,22,16,22 C16.8,22,17.5,22.7,17.5,23.5z M17.1,8h-2.2v11h2.2V8z" data-icon-path="inner-path" opacity="0"/>'
66
141
  };
@@ -133,8 +208,96 @@ var CARBON_MAP = {
133
208
  "pencil": "edit",
134
209
  "lock": "locked",
135
210
  "eye": "view",
136
- "minimize-2": "minimize"
211
+ "minimize-2": "minimize",
212
+ /* --- Direction and chrome, completing the sets above --------------------
213
+ `chevron-up` and `arrow-left` were missing while their three siblings shipped, so a collapsible
214
+ that pointed down had nothing to point back up with. */
215
+ "chevron-up": "chevron--up",
216
+ "arrow-left": "arrow--left",
217
+ "more-horizontal": "overflow-menu--horizontal",
218
+ "maximize-2": "maximize",
219
+ "log-out": "logout",
220
+ "log-in": "login",
221
+ "archive": "archive",
222
+ "folder": "folder",
223
+ "book": "book",
224
+ "notebook": "notebook",
225
+ "asterisk": "asterisk",
226
+ "bookmark": "bookmark",
227
+ "star": "star",
228
+ "star-filled": "star--filled",
229
+ "tag": "tag",
230
+ "repeat": "repeat",
231
+ "undo-2": "undo",
232
+ "redo-2": "redo",
233
+ "rotate-ccw": "reset",
234
+ "table": "table--split",
235
+ "database": "data--base",
236
+ "function-square": "function",
237
+ /* --- Money -------------------------------------------------------------
238
+ `credit-card` is here because its absence shipped: it resolved to nothing, rendered an empty
239
+ box, and reached production on the payment notifications. Carbon spells it `payment--methods`,
240
+ which is exactly the kind of mismatch this map exists to absorb. */
241
+ "credit-card": "payment--methods",
242
+ "wallet": "wallet",
243
+ "banknote": "money",
244
+ "coins": "currency",
245
+ "dollar-sign": "currency--dollar",
246
+ "euro": "currency--euro",
247
+ "receipt": "receipt",
248
+ "percent": "percentage",
249
+ "piggy-bank": "piggy-bank",
250
+ "landmark": "bank--vault",
251
+ "scale": "scales",
252
+ "purchase": "purchase",
253
+ /* --- Documents and ERP objects ----------------------------------------- */
254
+ "file-signature": "request-quote",
255
+ "scroll-text": "license",
256
+ "file-plus": "document--add",
257
+ "save": "save",
258
+ "file-bar-chart": "report",
259
+ "list-todo": "task",
260
+ "check-square": "task--complete",
261
+ "gavel": "rule",
262
+ "id-card": "identification",
263
+ "briefcase": "portfolio",
264
+ "handshake": "partnership",
265
+ "lightbulb": "idea",
266
+ "inventory": "inventory-management",
267
+ "package-2": "delivery--parcel",
268
+ "shopping-bag": "shopping--bag",
269
+ "barcode": "barcode",
270
+ "qr-code": "qr-code",
271
+ "git-branch": "flow",
272
+ "bug": "debug",
273
+ /* --- People and contact ------------------------------------------------- */
274
+ "users": "user--multiple",
275
+ "user-plus": "user--follow",
276
+ "user-cog": "user--admin",
277
+ "user-circle": "user--profile",
278
+ "mail": "email",
279
+ "phone": "phone",
280
+ "send": "send",
281
+ "globe": "globe",
282
+ "building": "location--company",
283
+ /* --- Charts and time ---------------------------------------------------- */
284
+ "bar-chart-3": "chart--column",
285
+ "bar-chart-horizontal": "chart--bar",
286
+ "line-chart": "chart--line",
287
+ "pie-chart": "chart--pie",
288
+ "area-chart": "chart--area",
289
+ "calendar-days": "events",
290
+ "calendar-plus": "calendar--add",
291
+ "calendar-heatmap": "calendar--heat-map",
292
+ /* --- Transfer ----------------------------------------------------------- */
293
+ "cloud-upload": "cloud--upload",
294
+ "cloud-download": "cloud--download",
295
+ "filter-x": "filter--edit",
296
+ "arrow-up-narrow-wide": "sort--ascending",
297
+ "arrow-down-wide-narrow": "sort--descending",
298
+ "badge-info": "information--square"
137
299
  };
300
+ var ICON_NAMES = Object.freeze(Object.keys(CARBON_MAP).sort());
138
301
 
139
302
  // src/components/core/Icon.tsx
140
303
  import { jsx } from "react/jsx-runtime";
@@ -187,7 +350,14 @@ function Icon({ name, size = 16, label, pack, style, ...rest }) {
187
350
  "data-icon": name,
188
351
  ...rest,
189
352
  style: { display: "inline-block", flex: "0 0 auto", width: size, height: size, ...style },
190
- children: markup === void 0 ? null : /* @__PURE__ */ jsx(
353
+ children: markup === void 0 ? (
354
+ // A broken icon has to look broken. In development the box gets a dashed outline so the
355
+ // gap is visible on screen instead of only in a console warning that is easy to lose in a
356
+ // busy log — which is how a missing `credit-card` reached production as a blank square.
357
+ // Production still renders nothing at all: a dev diagnostic must never become a user's
358
+ // first sight of a defect. Deliberately not an <svg>, so nothing reads it as a real glyph.
359
+ IS_DEV ? /* @__PURE__ */ jsx("span", { className: "pire-icon-missing", title: `Unknown icon: ${name}` }) : null
360
+ ) : /* @__PURE__ */ jsx(
191
361
  "svg",
192
362
  {
193
363
  viewBox: "0 0 32 32",
@@ -511,25 +681,31 @@ function Separator({
511
681
  );
512
682
  }
513
683
 
684
+ // src/components/core/Kbd.tsx
685
+ import { jsx as jsx14 } from "react/jsx-runtime";
686
+ function Kbd({ children, size = "md", className, ...rest }) {
687
+ return /* @__PURE__ */ jsx14("kbd", { className: cx("pire-kbd", className), "data-size": size, ...rest, children });
688
+ }
689
+
514
690
  // src/components/forms/FormField.tsx
515
- import { jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
691
+ import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
516
692
  function FormField({ label, htmlFor, isRequired, hint, error, layout = "stacked", children, className, ...rest }) {
517
693
  return /* @__PURE__ */ jsxs9("div", { className: cx("pire-field", className), "data-layout": layout, ...rest, children: [
518
694
  /* @__PURE__ */ jsxs9("label", { className: "pire-field-label", htmlFor, children: [
519
695
  label,
520
- isRequired ? /* @__PURE__ */ jsx14("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
696
+ isRequired ? /* @__PURE__ */ jsx15("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
521
697
  ] }),
522
698
  children,
523
699
  error ? /* @__PURE__ */ jsxs9("span", { className: "pire-field-error", role: "alert", children: [
524
- /* @__PURE__ */ jsx14(Icon, { name: "alert-circle", size: 12 }),
700
+ /* @__PURE__ */ jsx15(Icon, { name: "alert-circle", size: 12 }),
525
701
  error
526
- ] }) : hint ? /* @__PURE__ */ jsx14("span", { className: "pire-field-hint", children: hint }) : null
702
+ ] }) : hint ? /* @__PURE__ */ jsx15("span", { className: "pire-field-hint", children: hint }) : null
527
703
  ] });
528
704
  }
529
705
 
530
706
  // src/components/forms/Input.tsx
531
707
  import { TextField, Label, Input as AriaInput, Group, Text as Text2, FieldError } from "react-aria-components";
532
- import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
708
+ import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
533
709
  function Input({
534
710
  label,
535
711
  icon,
@@ -556,7 +732,7 @@ function Input({
556
732
  children: [
557
733
  label ? /* @__PURE__ */ jsxs10(Label, { className: "pire-field-label", children: [
558
734
  label,
559
- rest.isRequired ? /* @__PURE__ */ jsx15("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
735
+ rest.isRequired ? /* @__PURE__ */ jsx16("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
560
736
  ] }) : null,
561
737
  /* @__PURE__ */ jsxs10(
562
738
  Group,
@@ -567,14 +743,14 @@ function Input({
567
743
  "data-invalid": rest.isInvalid ? "true" : void 0,
568
744
  "data-readonly": rest.isReadOnly ? "true" : void 0,
569
745
  children: [
570
- icon ? /* @__PURE__ */ jsx15(Icon, { name: icon, size: 16, className: "pire-leading-icon" }) : null,
571
- /* @__PURE__ */ jsx15(AriaInput, { ref: inputRef, className: "pire-input", "data-numeric": numeric ? "true" : void 0 }),
572
- suffix ? /* @__PURE__ */ jsx15("span", { className: "pire-affix", children: suffix }) : null
746
+ icon ? /* @__PURE__ */ jsx16(Icon, { name: icon, size: 16, className: "pire-leading-icon" }) : null,
747
+ /* @__PURE__ */ jsx16(AriaInput, { ref: inputRef, className: "pire-input", "data-numeric": numeric ? "true" : void 0 }),
748
+ suffix ? /* @__PURE__ */ jsx16("span", { className: "pire-affix", children: suffix }) : null
573
749
  ]
574
750
  }
575
751
  ),
576
- description ? /* @__PURE__ */ jsx15(Text2, { slot: "description", className: "pire-field-hint", children: description }) : null,
577
- /* @__PURE__ */ jsx15(FieldError, { className: "pire-field-error", children: errorMessage })
752
+ description ? /* @__PURE__ */ jsx16(Text2, { slot: "description", className: "pire-field-hint", children: description }) : null,
753
+ /* @__PURE__ */ jsx16(FieldError, { className: "pire-field-error", children: errorMessage })
578
754
  ]
579
755
  }
580
756
  );
@@ -583,7 +759,7 @@ function Input({
583
759
  // src/components/forms/TextArea.tsx
584
760
  import * as React5 from "react";
585
761
  import { TextField as TextField2, Label as Label2, TextArea as AriaTextArea, Group as Group2, Text as Text3, FieldError as FieldError2 } from "react-aria-components";
586
- import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
762
+ import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
587
763
  var useIsomorphicLayoutEffect = typeof document === "undefined" ? React5.useEffect : React5.useLayoutEffect;
588
764
  function TextArea({
589
765
  label,
@@ -635,9 +811,9 @@ function TextArea({
635
811
  children: [
636
812
  label ? /* @__PURE__ */ jsxs11(Label2, { className: "pire-field-label", children: [
637
813
  label,
638
- rest.isRequired ? /* @__PURE__ */ jsx16("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
814
+ rest.isRequired ? /* @__PURE__ */ jsx17("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
639
815
  ] }) : null,
640
- /* @__PURE__ */ jsx16(
816
+ /* @__PURE__ */ jsx17(
641
817
  Group2,
642
818
  {
643
819
  className: "pire-control",
@@ -646,7 +822,7 @@ function TextArea({
646
822
  "data-multiline": "true",
647
823
  "data-invalid": rest.isInvalid ? "true" : void 0,
648
824
  "data-readonly": rest.isReadOnly ? "true" : void 0,
649
- children: /* @__PURE__ */ jsx16(
825
+ children: /* @__PURE__ */ jsx17(
650
826
  AriaTextArea,
651
827
  {
652
828
  ref,
@@ -658,8 +834,8 @@ function TextArea({
658
834
  )
659
835
  }
660
836
  ),
661
- description ? /* @__PURE__ */ jsx16(Text3, { slot: "description", className: "pire-field-hint", children: description }) : null,
662
- /* @__PURE__ */ jsx16(FieldError2, { className: "pire-field-error", children: errorMessage })
837
+ description ? /* @__PURE__ */ jsx17(Text3, { slot: "description", className: "pire-field-hint", children: description }) : null,
838
+ /* @__PURE__ */ jsx17(FieldError2, { className: "pire-field-error", children: errorMessage })
663
839
  ]
664
840
  }
665
841
  );
@@ -703,10 +879,14 @@ var enMessages = {
703
879
  dateRangePresetsLabel: "Date range shortcuts",
704
880
  numberFieldIncrease: "Increase",
705
881
  numberFieldDecrease: "Decrease",
882
+ valueHelpFieldPlaceholder: "Not selected",
706
883
  valueHelpFieldClear: "Clear selection",
707
884
  valueHelpFieldOpenNamed: "Select {label}",
708
885
  valueHelpFieldOpen: "Open value help",
709
886
  valueHelpDialogSearch: "Search records",
887
+ valueHelpDialogTitle: "Select a record",
888
+ valueHelpDialogSearchPlaceholder: "Search by ID or name",
889
+ valueHelpDialogEmpty: "No records found",
710
890
  valueHelpDialogCancel: "Cancel",
711
891
  paginationLabel: "Pagination",
712
892
  paginationRange: "{from}\u2013{to} of {total}",
@@ -719,6 +899,15 @@ var enMessages = {
719
899
  fileUploadRemoveNamed: "Remove {name}",
720
900
  fileUploadUploading: "Uploading",
721
901
  fileDropZonePrompt: "Drag files here, or choose them",
902
+ shellBarUserMenu: "Account menu for {user}",
903
+ commandPaletteLabel: "Command palette",
904
+ commandPaletteSearchLabel: "Search commands and records",
905
+ commandPalettePlaceholder: "Search for a screen, an action or a record\u2026",
906
+ commandPaletteEmpty: "Nothing matches that",
907
+ commandPaletteLoading: "Searching\u2026",
908
+ commandPaletteHintNavigate: "navigate",
909
+ commandPaletteHintSelect: "open",
910
+ commandPaletteHintClose: "close",
722
911
  chartCategoryHeader: "Category",
723
912
  chartNoValue: "No data",
724
913
  chartEmpty: "No data for this period"
@@ -744,10 +933,14 @@ var esMessages = {
744
933
  dateRangePresetsLabel: "Atajos de rango de fechas",
745
934
  numberFieldIncrease: "Aumentar",
746
935
  numberFieldDecrease: "Disminuir",
936
+ valueHelpFieldPlaceholder: "Sin seleccionar",
747
937
  valueHelpFieldClear: "Limpiar selecci\xF3n",
748
938
  valueHelpFieldOpenNamed: "Seleccionar {label}",
749
939
  valueHelpFieldOpen: "Abrir ayuda de valores",
750
940
  valueHelpDialogSearch: "Buscar registros",
941
+ valueHelpDialogTitle: "Seleccionar un registro",
942
+ valueHelpDialogSearchPlaceholder: "Buscar por c\xF3digo o nombre",
943
+ valueHelpDialogEmpty: "No se encontraron registros",
751
944
  valueHelpDialogCancel: "Cancelar",
752
945
  paginationLabel: "Paginaci\xF3n",
753
946
  paginationRange: "{from}\u2013{to} de {total}",
@@ -760,20 +953,29 @@ var esMessages = {
760
953
  fileUploadRemoveNamed: "Quitar {name}",
761
954
  fileUploadUploading: "Subiendo",
762
955
  fileDropZonePrompt: "Arrastr\xE1 archivos ac\xE1, o elegilos",
956
+ shellBarUserMenu: "Men\xFA de cuenta de {user}",
957
+ commandPaletteLabel: "Paleta de comandos",
958
+ commandPaletteSearchLabel: "Buscar comandos y registros",
959
+ commandPalettePlaceholder: "Busc\xE1 una pantalla, una acci\xF3n o un registro\u2026",
960
+ commandPaletteEmpty: "No hay coincidencias",
961
+ commandPaletteLoading: "Buscando\u2026",
962
+ commandPaletteHintNavigate: "navegar",
963
+ commandPaletteHintSelect: "abrir",
964
+ commandPaletteHintClose: "cerrar",
763
965
  chartCategoryHeader: "Categor\xEDa",
764
966
  chartNoValue: "Sin datos",
765
967
  chartEmpty: "Sin datos para este per\xEDodo"
766
968
  };
767
969
 
768
970
  // src/i18n/PireIntlProvider.tsx
769
- import { jsx as jsx17 } from "react/jsx-runtime";
971
+ import { jsx as jsx18 } from "react/jsx-runtime";
770
972
  var MessagesContext = React6.createContext(enMessages);
771
973
  function PireIntlProvider({ messages, children }) {
772
974
  const value = React6.useMemo(
773
975
  () => messages ? { ...enMessages, ...messages } : enMessages,
774
976
  [messages]
775
977
  );
776
- return /* @__PURE__ */ jsx17(MessagesContext.Provider, { value, children });
978
+ return /* @__PURE__ */ jsx18(MessagesContext.Provider, { value, children });
777
979
  }
778
980
  function usePireMessages() {
779
981
  return React6.useContext(MessagesContext);
@@ -784,7 +986,7 @@ function useMessage(key, override) {
784
986
  }
785
987
 
786
988
  // src/components/forms/Select.tsx
787
- import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
989
+ import { jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
788
990
  var norm = (o) => typeof o === "string" ? { value: o, label: o, isDisabled: false } : o;
789
991
  function Select({
790
992
  label,
@@ -819,7 +1021,7 @@ function Select({
819
1021
  children: [
820
1022
  label ? /* @__PURE__ */ jsxs12(Label3, { className: "pire-field-label", children: [
821
1023
  label,
822
- rest.isRequired ? /* @__PURE__ */ jsx18("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1024
+ rest.isRequired ? /* @__PURE__ */ jsx19("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
823
1025
  ] }) : null,
824
1026
  /* @__PURE__ */ jsxs12(
825
1027
  AriaButton4,
@@ -829,20 +1031,20 @@ function Select({
829
1031
  "data-full-width": String(fullWidth),
830
1032
  "data-invalid": rest.isInvalid ? "true" : void 0,
831
1033
  children: [
832
- /* @__PURE__ */ jsx18(SelectValue, { className: "pire-select-value" }),
833
- /* @__PURE__ */ jsx18(Icon, { name: "chevron-down", size: 16, className: "pire-leading-icon" })
1034
+ /* @__PURE__ */ jsx19(SelectValue, { className: "pire-select-value" }),
1035
+ /* @__PURE__ */ jsx19(Icon, { name: "chevron-down", size: 16, className: "pire-leading-icon" })
834
1036
  ]
835
1037
  }
836
1038
  ),
837
- description ? /* @__PURE__ */ jsx18(Text4, { slot: "description", className: "pire-field-hint", children: description }) : null,
838
- /* @__PURE__ */ jsx18(FieldError3, { className: "pire-field-error", children: errorMessage }),
839
- /* @__PURE__ */ jsx18(Popover, { className: "pire-popover", children: /* @__PURE__ */ jsx18(
1039
+ description ? /* @__PURE__ */ jsx19(Text4, { slot: "description", className: "pire-field-hint", children: description }) : null,
1040
+ /* @__PURE__ */ jsx19(FieldError3, { className: "pire-field-error", children: errorMessage }),
1041
+ /* @__PURE__ */ jsx19(Popover, { className: "pire-popover", children: /* @__PURE__ */ jsx19(
840
1042
  ListBox,
841
1043
  {
842
1044
  className: "pire-listbox",
843
1045
  items,
844
- renderEmptyState: () => /* @__PURE__ */ jsx18("div", { className: "pire-listbox-status", role: "status", "aria-live": "polite", children: emptyLabel ?? msg.selectEmpty }),
845
- children: (item) => /* @__PURE__ */ jsx18(ListBoxItem, { className: "pire-option", id: item.value, textValue: item.label, isDisabled: item.isDisabled, children: item.label })
1046
+ renderEmptyState: () => /* @__PURE__ */ jsx19("div", { className: "pire-listbox-status", role: "status", "aria-live": "polite", children: emptyLabel ?? msg.selectEmpty }),
1047
+ children: (item) => /* @__PURE__ */ jsx19(ListBoxItem, { className: "pire-option", id: item.value, textValue: item.label, isDisabled: item.isDisabled, children: item.label })
846
1048
  }
847
1049
  ) })
848
1050
  ]
@@ -852,13 +1054,13 @@ function Select({
852
1054
 
853
1055
  // src/components/forms/Checkbox.tsx
854
1056
  import { Checkbox as AriaCheckbox } from "react-aria-components";
855
- import { Fragment, jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
1057
+ import { Fragment, jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
856
1058
  function Checkbox({ label, hint, children, className, ...rest }) {
857
- return /* @__PURE__ */ jsx19(AriaCheckbox, { className: cx("pire-choice", className), ...rest, children: ({ isSelected, isIndeterminate }) => /* @__PURE__ */ jsxs13(Fragment, { children: [
858
- /* @__PURE__ */ jsx19("span", { className: "pire-choice-box", "aria-hidden": "true", children: isIndeterminate ? /* @__PURE__ */ jsx19(Icon, { name: "minus", size: 12 }) : isSelected ? /* @__PURE__ */ jsx19(Icon, { name: "check", size: 12 }) : null }),
1059
+ return /* @__PURE__ */ jsx20(AriaCheckbox, { className: cx("pire-choice", className), ...rest, children: ({ isSelected, isIndeterminate }) => /* @__PURE__ */ jsxs13(Fragment, { children: [
1060
+ /* @__PURE__ */ jsx20("span", { className: "pire-choice-box", "aria-hidden": "true", children: isIndeterminate ? /* @__PURE__ */ jsx20(Icon, { name: "minus", size: 12 }) : isSelected ? /* @__PURE__ */ jsx20(Icon, { name: "check", size: 12 }) : null }),
859
1061
  /* @__PURE__ */ jsxs13("span", { children: [
860
1062
  label ?? children,
861
- hint ? /* @__PURE__ */ jsx19("span", { className: "pire-choice-hint", children: hint }) : null
1063
+ hint ? /* @__PURE__ */ jsx20("span", { className: "pire-choice-hint", children: hint }) : null
862
1064
  ] })
863
1065
  ] }) });
864
1066
  }
@@ -871,32 +1073,32 @@ import {
871
1073
  Text as Text5,
872
1074
  FieldError as FieldError4
873
1075
  } from "react-aria-components";
874
- import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
1076
+ import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
875
1077
  function RadioGroup({ label, description, errorMessage, children, className, ...rest }) {
876
1078
  return /* @__PURE__ */ jsxs14(AriaRadioGroup, { className: cx("pire-field", className), validationBehavior: "aria", ...rest, children: [
877
- label ? /* @__PURE__ */ jsx20(Label4, { className: "pire-field-label", children: label }) : null,
878
- /* @__PURE__ */ jsx20("div", { className: "pire-radiogroup", children }),
879
- description ? /* @__PURE__ */ jsx20(Text5, { slot: "description", className: "pire-field-hint", children: description }) : null,
880
- /* @__PURE__ */ jsx20(FieldError4, { className: "pire-field-error", children: errorMessage })
1079
+ label ? /* @__PURE__ */ jsx21(Label4, { className: "pire-field-label", children: label }) : null,
1080
+ /* @__PURE__ */ jsx21("div", { className: "pire-radiogroup", children }),
1081
+ description ? /* @__PURE__ */ jsx21(Text5, { slot: "description", className: "pire-field-hint", children: description }) : null,
1082
+ /* @__PURE__ */ jsx21(FieldError4, { className: "pire-field-error", children: errorMessage })
881
1083
  ] });
882
1084
  }
883
1085
  function Radio({ label, hint, children, className, ...rest }) {
884
1086
  return /* @__PURE__ */ jsxs14(AriaRadio, { className: cx("pire-choice", className), ...rest, children: [
885
- /* @__PURE__ */ jsx20("span", { className: "pire-choice-box", "data-radio": "true", "aria-hidden": "true" }),
1087
+ /* @__PURE__ */ jsx21("span", { className: "pire-choice-box", "data-radio": "true", "aria-hidden": "true" }),
886
1088
  /* @__PURE__ */ jsxs14("span", { children: [
887
1089
  label ?? children,
888
- hint ? /* @__PURE__ */ jsx20("span", { className: "pire-choice-hint", children: hint }) : null
1090
+ hint ? /* @__PURE__ */ jsx21("span", { className: "pire-choice-hint", children: hint }) : null
889
1091
  ] })
890
1092
  ] });
891
1093
  }
892
1094
 
893
1095
  // src/components/forms/Switch.tsx
894
1096
  import { Switch as AriaSwitch } from "react-aria-components";
895
- import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
1097
+ import { jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
896
1098
  function Switch({ label, children, className, ...rest }) {
897
1099
  return /* @__PURE__ */ jsxs15(AriaSwitch, { className: cx("pire-choice", className), ...rest, children: [
898
- /* @__PURE__ */ jsx21("span", { className: "pire-switch-track", "aria-hidden": "true", children: /* @__PURE__ */ jsx21("span", { className: "pire-switch-thumb" }) }),
899
- /* @__PURE__ */ jsx21("span", { children: label ?? children })
1100
+ /* @__PURE__ */ jsx22("span", { className: "pire-switch-track", "aria-hidden": "true", children: /* @__PURE__ */ jsx22("span", { className: "pire-switch-thumb" }) }),
1101
+ /* @__PURE__ */ jsx22("span", { children: label ?? children })
900
1102
  ] });
901
1103
  }
902
1104
 
@@ -913,7 +1115,7 @@ import {
913
1115
  Text as Text6,
914
1116
  FieldError as FieldError5
915
1117
  } from "react-aria-components";
916
- import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
1118
+ import { jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
917
1119
  var norm2 = (o) => typeof o === "string" ? { value: o, label: o } : o;
918
1120
  function ComboBox({
919
1121
  label,
@@ -961,7 +1163,7 @@ function ComboBox({
961
1163
  children: [
962
1164
  label ? /* @__PURE__ */ jsxs16(Label5, { className: "pire-field-label", children: [
963
1165
  label,
964
- rest.isRequired ? /* @__PURE__ */ jsx22("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1166
+ rest.isRequired ? /* @__PURE__ */ jsx23("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
965
1167
  ] }) : null,
966
1168
  /* @__PURE__ */ jsxs16(
967
1169
  Group3,
@@ -971,15 +1173,15 @@ function ComboBox({
971
1173
  "data-full-width": String(fullWidth),
972
1174
  "data-invalid": rest.isInvalid ? "true" : void 0,
973
1175
  children: [
974
- /* @__PURE__ */ jsx22(Icon, { name: "search", size: 16, className: "pire-leading-icon" }),
975
- /* @__PURE__ */ jsx22(AriaInput2, { className: "pire-input", placeholder: rest.placeholder }),
976
- /* @__PURE__ */ jsx22(AriaButton5, { className: "pire-iconbtn", "data-size": "sm", "aria-label": msg.comboBoxShowSuggestions, style: { width: 20, height: 20 }, children: /* @__PURE__ */ jsx22(Icon, { name: "chevron-down", size: 16 }) })
1176
+ /* @__PURE__ */ jsx23(Icon, { name: "search", size: 16, className: "pire-leading-icon" }),
1177
+ /* @__PURE__ */ jsx23(AriaInput2, { className: "pire-input", placeholder: rest.placeholder }),
1178
+ /* @__PURE__ */ jsx23(AriaButton5, { className: "pire-iconbtn", "data-size": "sm", "aria-label": msg.comboBoxShowSuggestions, style: { width: 20, height: 20 }, children: /* @__PURE__ */ jsx23(Icon, { name: "chevron-down", size: 16 }) })
977
1179
  ]
978
1180
  }
979
1181
  ),
980
- description ? /* @__PURE__ */ jsx22(Text6, { slot: "description", className: "pire-field-hint", children: description }) : null,
981
- /* @__PURE__ */ jsx22(FieldError5, { className: "pire-field-error", children: errorMessage }),
982
- /* @__PURE__ */ jsx22(Popover2, { className: "pire-popover", children: /* @__PURE__ */ jsx22(
1182
+ description ? /* @__PURE__ */ jsx23(Text6, { slot: "description", className: "pire-field-hint", children: description }) : null,
1183
+ /* @__PURE__ */ jsx23(FieldError5, { className: "pire-field-error", children: errorMessage }),
1184
+ /* @__PURE__ */ jsx23(Popover2, { className: "pire-popover", children: /* @__PURE__ */ jsx23(
983
1185
  ListBox2,
984
1186
  {
985
1187
  className: "pire-listbox",
@@ -987,10 +1189,10 @@ function ComboBox({
987
1189
  const el = e.currentTarget;
988
1190
  if (el.scrollHeight - el.scrollTop - el.clientHeight < 48) onLoadMore();
989
1191
  } : void 0,
990
- renderEmptyState: showsStatus ? () => /* @__PURE__ */ jsx22("div", { className: "pire-listbox-status", role: "status", "aria-live": "polite", children: isLoading ? loadingLabel ?? msg.comboBoxLoading : emptyLabel }) : void 0,
1192
+ renderEmptyState: showsStatus ? () => /* @__PURE__ */ jsx23("div", { className: "pire-listbox-status", role: "status", "aria-live": "polite", children: isLoading ? loadingLabel ?? msg.comboBoxLoading : emptyLabel }) : void 0,
991
1193
  children: (item) => /* @__PURE__ */ jsxs16(ListBoxItem2, { className: "pire-option", id: item.value, textValue: item.label, isDisabled: item.isDisabled, children: [
992
- /* @__PURE__ */ jsx22("span", { className: "pire-option-label", children: item.label }),
993
- item.secondary ? /* @__PURE__ */ jsx22("span", { className: "pire-option-secondary", children: item.secondary }) : null
1194
+ /* @__PURE__ */ jsx23("span", { className: "pire-option-label", children: item.label }),
1195
+ item.secondary ? /* @__PURE__ */ jsx23("span", { className: "pire-option-secondary", children: item.secondary }) : null
994
1196
  ] })
995
1197
  }
996
1198
  ) })
@@ -1015,7 +1217,7 @@ import {
1015
1217
  FieldError as FieldError6,
1016
1218
  VisuallyHidden
1017
1219
  } from "react-aria-components";
1018
- import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
1220
+ import { jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
1019
1221
  var norm3 = (o) => typeof o === "string" ? { value: o, label: o } : o;
1020
1222
  function MultiComboBox({
1021
1223
  label,
@@ -1099,7 +1301,7 @@ function MultiComboBox({
1099
1301
  children: [
1100
1302
  label ? /* @__PURE__ */ jsxs17(Label6, { className: "pire-field-label", children: [
1101
1303
  label,
1102
- rest.isRequired ? /* @__PURE__ */ jsx23("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1304
+ rest.isRequired ? /* @__PURE__ */ jsx24("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1103
1305
  ] }) : null,
1104
1306
  /* @__PURE__ */ jsxs17(
1105
1307
  Group4,
@@ -1111,14 +1313,14 @@ function MultiComboBox({
1111
1313
  "data-invalid": rest.isInvalid ? "true" : void 0,
1112
1314
  "data-readonly": rest.isReadOnly ? "true" : void 0,
1113
1315
  children: [
1114
- /* @__PURE__ */ jsx23(Icon, { name: "search", size: 16, className: "pire-leading-icon" }),
1316
+ /* @__PURE__ */ jsx24(Icon, { name: "search", size: 16, className: "pire-leading-icon" }),
1115
1317
  /* @__PURE__ */ jsxs17("div", { className: "pire-chipfield", children: [
1116
- /* @__PURE__ */ jsx23(ButtonContext.Provider, { value: null, children: values.map((v) => (
1318
+ /* @__PURE__ */ jsx24(ButtonContext.Provider, { value: null, children: values.map((v) => (
1117
1319
  /* Disabled follows the field, not `isEditable`: a read-only field's chips are
1118
1320
  real, current values and should read as such — they simply lose the × . */
1119
- /* @__PURE__ */ jsx23(Tag, { isDisabled: rest.isDisabled, onRemove: isEditable ? () => remove(v) : void 0, children: labelOf(v) }, v)
1321
+ /* @__PURE__ */ jsx24(Tag, { isDisabled: rest.isDisabled, onRemove: isEditable ? () => remove(v) : void 0, children: labelOf(v) }, v)
1120
1322
  )) }),
1121
- /* @__PURE__ */ jsx23(
1323
+ /* @__PURE__ */ jsx24(
1122
1324
  AriaInput3,
1123
1325
  {
1124
1326
  ref: inputRef,
@@ -1128,14 +1330,14 @@ function MultiComboBox({
1128
1330
  }
1129
1331
  )
1130
1332
  ] }),
1131
- /* @__PURE__ */ jsx23(AriaButton6, { className: "pire-iconbtn", "data-size": "sm", "aria-label": msg.comboBoxShowSuggestions, style: { width: 20, height: 20 }, children: /* @__PURE__ */ jsx23(Icon, { name: "chevron-down", size: 16 }) })
1333
+ /* @__PURE__ */ jsx24(AriaButton6, { className: "pire-iconbtn", "data-size": "sm", "aria-label": msg.comboBoxShowSuggestions, style: { width: 20, height: 20 }, children: /* @__PURE__ */ jsx24(Icon, { name: "chevron-down", size: 16 }) })
1132
1334
  ]
1133
1335
  }
1134
1336
  ),
1135
- /* @__PURE__ */ jsx23(VisuallyHidden, { children: /* @__PURE__ */ jsx23("span", { "aria-live": "polite", children: announcement }) }),
1136
- description ? /* @__PURE__ */ jsx23(Text7, { slot: "description", className: "pire-field-hint", children: description }) : null,
1137
- /* @__PURE__ */ jsx23(FieldError6, { className: "pire-field-error", children: errorMessage }),
1138
- /* @__PURE__ */ jsx23(Popover3, { className: "pire-popover", children: /* @__PURE__ */ jsx23(
1337
+ /* @__PURE__ */ jsx24(VisuallyHidden, { children: /* @__PURE__ */ jsx24("span", { "aria-live": "polite", children: announcement }) }),
1338
+ description ? /* @__PURE__ */ jsx24(Text7, { slot: "description", className: "pire-field-hint", children: description }) : null,
1339
+ /* @__PURE__ */ jsx24(FieldError6, { className: "pire-field-error", children: errorMessage }),
1340
+ /* @__PURE__ */ jsx24(Popover3, { className: "pire-popover", children: /* @__PURE__ */ jsx24(
1139
1341
  ListBox3,
1140
1342
  {
1141
1343
  className: "pire-listbox",
@@ -1143,10 +1345,10 @@ function MultiComboBox({
1143
1345
  const el = e.currentTarget;
1144
1346
  if (el.scrollHeight - el.scrollTop - el.clientHeight < 48) onLoadMore();
1145
1347
  } : void 0,
1146
- renderEmptyState: showsStatus ? () => /* @__PURE__ */ jsx23("div", { className: "pire-listbox-status", role: "status", "aria-live": "polite", children: isLoading ? loadingLabel ?? msg.comboBoxLoading : emptyLabel }) : void 0,
1348
+ renderEmptyState: showsStatus ? () => /* @__PURE__ */ jsx24("div", { className: "pire-listbox-status", role: "status", "aria-live": "polite", children: isLoading ? loadingLabel ?? msg.comboBoxLoading : emptyLabel }) : void 0,
1147
1349
  children: (item) => /* @__PURE__ */ jsxs17(ListBoxItem3, { className: "pire-option", id: item.value, textValue: item.label, isDisabled: item.isDisabled, children: [
1148
- /* @__PURE__ */ jsx23("span", { className: "pire-option-label", children: item.label }),
1149
- item.secondary ? /* @__PURE__ */ jsx23("span", { className: "pire-option-secondary", children: item.secondary }) : null
1350
+ /* @__PURE__ */ jsx24("span", { className: "pire-option-label", children: item.label }),
1351
+ item.secondary ? /* @__PURE__ */ jsx24("span", { className: "pire-option-secondary", children: item.secondary }) : null
1150
1352
  ] })
1151
1353
  }
1152
1354
  ) })
@@ -1165,7 +1367,7 @@ import {
1165
1367
  Text as Text8,
1166
1368
  FieldError as FieldError7
1167
1369
  } from "react-aria-components";
1168
- import { jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
1370
+ import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
1169
1371
  function NumberField({
1170
1372
  label,
1171
1373
  suffix,
@@ -1182,7 +1384,7 @@ function NumberField({
1182
1384
  return /* @__PURE__ */ jsxs18(AriaNumberField, { className: cx("pire-field", className), style, validationBehavior: "aria", ...rest, children: [
1183
1385
  label ? /* @__PURE__ */ jsxs18(Label7, { className: "pire-field-label", children: [
1184
1386
  label,
1185
- rest.isRequired ? /* @__PURE__ */ jsx24("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1387
+ rest.isRequired ? /* @__PURE__ */ jsx25("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1186
1388
  ] }) : null,
1187
1389
  /* @__PURE__ */ jsxs18(
1188
1390
  Group5,
@@ -1193,17 +1395,17 @@ function NumberField({
1193
1395
  "data-invalid": rest.isInvalid ? "true" : void 0,
1194
1396
  "data-readonly": rest.isReadOnly ? "true" : void 0,
1195
1397
  children: [
1196
- /* @__PURE__ */ jsx24(AriaInput4, { className: "pire-input", "data-numeric": "true" }),
1197
- suffix ? /* @__PURE__ */ jsx24("span", { className: "pire-affix", children: suffix }) : null,
1398
+ /* @__PURE__ */ jsx25(AriaInput4, { className: "pire-input", "data-numeric": "true" }),
1399
+ suffix ? /* @__PURE__ */ jsx25("span", { className: "pire-affix", children: suffix }) : null,
1198
1400
  hideStepper ? null : /* @__PURE__ */ jsxs18("span", { className: "pire-stepper", children: [
1199
- /* @__PURE__ */ jsx24(AriaButton7, { slot: "increment", className: "pire-stepper-btn", "aria-label": msg.numberFieldIncrease, children: /* @__PURE__ */ jsx24(Icon, { name: "plus", size: 10 }) }),
1200
- /* @__PURE__ */ jsx24(AriaButton7, { slot: "decrement", className: "pire-stepper-btn", "aria-label": msg.numberFieldDecrease, children: /* @__PURE__ */ jsx24(Icon, { name: "minus", size: 10 }) })
1401
+ /* @__PURE__ */ jsx25(AriaButton7, { slot: "increment", className: "pire-stepper-btn", "aria-label": msg.numberFieldIncrease, children: /* @__PURE__ */ jsx25(Icon, { name: "plus", size: 10 }) }),
1402
+ /* @__PURE__ */ jsx25(AriaButton7, { slot: "decrement", className: "pire-stepper-btn", "aria-label": msg.numberFieldDecrease, children: /* @__PURE__ */ jsx25(Icon, { name: "minus", size: 10 }) })
1201
1403
  ] })
1202
1404
  ]
1203
1405
  }
1204
1406
  ),
1205
- description ? /* @__PURE__ */ jsx24(Text8, { slot: "description", className: "pire-field-hint", children: description }) : null,
1206
- /* @__PURE__ */ jsx24(FieldError7, { className: "pire-field-error", children: errorMessage })
1407
+ description ? /* @__PURE__ */ jsx25(Text8, { slot: "description", className: "pire-field-hint", children: description }) : null,
1408
+ /* @__PURE__ */ jsx25(FieldError7, { className: "pire-field-error", children: errorMessage })
1207
1409
  ] });
1208
1410
  }
1209
1411
 
@@ -1227,7 +1429,7 @@ import {
1227
1429
  Text as Text9,
1228
1430
  FieldError as FieldError8
1229
1431
  } from "react-aria-components";
1230
- import { jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
1432
+ import { jsx as jsx26, jsxs as jsxs19 } from "react/jsx-runtime";
1231
1433
  function DatePicker({
1232
1434
  label,
1233
1435
  description,
@@ -1242,7 +1444,7 @@ function DatePicker({
1242
1444
  return /* @__PURE__ */ jsxs19(AriaDatePicker, { className: cx("pire-field", className), style, validationBehavior: "aria", ...rest, children: [
1243
1445
  label ? /* @__PURE__ */ jsxs19(Label8, { className: "pire-field-label", children: [
1244
1446
  label,
1245
- rest.isRequired ? /* @__PURE__ */ jsx25("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1447
+ rest.isRequired ? /* @__PURE__ */ jsx26("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1246
1448
  ] }) : null,
1247
1449
  /* @__PURE__ */ jsxs19(
1248
1450
  Group6,
@@ -1253,22 +1455,22 @@ function DatePicker({
1253
1455
  "data-invalid": rest.isInvalid ? "true" : void 0,
1254
1456
  "data-readonly": rest.isReadOnly ? "true" : void 0,
1255
1457
  children: [
1256
- /* @__PURE__ */ jsx25(DateInput, { className: "pire-datefield", children: (segment) => /* @__PURE__ */ jsx25(DateSegment, { segment, className: "pire-datesegment" }) }),
1257
- /* @__PURE__ */ jsx25(AriaButton8, { className: "pire-iconbtn", "data-size": "sm", "aria-label": msg.datePickerOpenCalendar, style: { width: 24, height: 24 }, children: /* @__PURE__ */ jsx25(Icon, { name: "calendar", size: 16 }) })
1458
+ /* @__PURE__ */ jsx26(DateInput, { className: "pire-datefield", children: (segment) => /* @__PURE__ */ jsx26(DateSegment, { segment, className: "pire-datesegment" }) }),
1459
+ /* @__PURE__ */ jsx26(AriaButton8, { className: "pire-iconbtn", "data-size": "sm", "aria-label": msg.datePickerOpenCalendar, style: { width: 24, height: 24 }, children: /* @__PURE__ */ jsx26(Icon, { name: "calendar", size: 16 }) })
1258
1460
  ]
1259
1461
  }
1260
1462
  ),
1261
- description ? /* @__PURE__ */ jsx25(Text9, { slot: "description", className: "pire-field-hint", children: description }) : null,
1262
- /* @__PURE__ */ jsx25(FieldError8, { className: "pire-field-error", children: errorMessage }),
1263
- /* @__PURE__ */ jsx25(Popover4, { className: "pire-popover", children: /* @__PURE__ */ jsx25(AriaDialog, { children: /* @__PURE__ */ jsxs19(Calendar, { className: "pire-calendar", children: [
1463
+ description ? /* @__PURE__ */ jsx26(Text9, { slot: "description", className: "pire-field-hint", children: description }) : null,
1464
+ /* @__PURE__ */ jsx26(FieldError8, { className: "pire-field-error", children: errorMessage }),
1465
+ /* @__PURE__ */ jsx26(Popover4, { className: "pire-popover", children: /* @__PURE__ */ jsx26(AriaDialog, { children: /* @__PURE__ */ jsxs19(Calendar, { className: "pire-calendar", children: [
1264
1466
  /* @__PURE__ */ jsxs19("header", { className: "pire-calendar-head", children: [
1265
- /* @__PURE__ */ jsx25(AriaButton8, { slot: "previous", className: "pire-iconbtn", "data-size": "sm", "aria-label": msg.datePickerPreviousMonth, children: /* @__PURE__ */ jsx25(Icon, { name: "chevron-left", size: 16 }) }),
1266
- /* @__PURE__ */ jsx25(Heading2, { className: "pire-calendar-title" }),
1267
- /* @__PURE__ */ jsx25(AriaButton8, { slot: "next", className: "pire-iconbtn", "data-size": "sm", "aria-label": msg.datePickerNextMonth, children: /* @__PURE__ */ jsx25(Icon, { name: "chevron-right", size: 16 }) })
1467
+ /* @__PURE__ */ jsx26(AriaButton8, { slot: "previous", className: "pire-iconbtn", "data-size": "sm", "aria-label": msg.datePickerPreviousMonth, children: /* @__PURE__ */ jsx26(Icon, { name: "chevron-left", size: 16 }) }),
1468
+ /* @__PURE__ */ jsx26(Heading2, { className: "pire-calendar-title" }),
1469
+ /* @__PURE__ */ jsx26(AriaButton8, { slot: "next", className: "pire-iconbtn", "data-size": "sm", "aria-label": msg.datePickerNextMonth, children: /* @__PURE__ */ jsx26(Icon, { name: "chevron-right", size: 16 }) })
1268
1470
  ] }),
1269
1471
  /* @__PURE__ */ jsxs19(CalendarGrid, { className: "pire-calendar-grid", children: [
1270
- /* @__PURE__ */ jsx25(CalendarGridHeader, { children: (day) => /* @__PURE__ */ jsx25(CalendarHeaderCell, { children: day }) }),
1271
- /* @__PURE__ */ jsx25(CalendarGridBody, { children: (date) => /* @__PURE__ */ jsx25(CalendarCell, { date, className: "pire-calendar-cell" }) })
1472
+ /* @__PURE__ */ jsx26(CalendarGridHeader, { children: (day) => /* @__PURE__ */ jsx26(CalendarHeaderCell, { children: day }) }),
1473
+ /* @__PURE__ */ jsx26(CalendarGridBody, { children: (date) => /* @__PURE__ */ jsx26(CalendarCell, { date, className: "pire-calendar-cell" }) })
1272
1474
  ] })
1273
1475
  ] }) }) })
1274
1476
  ] });
@@ -1294,7 +1496,7 @@ import {
1294
1496
  Text as Text10,
1295
1497
  FieldError as FieldError9
1296
1498
  } from "react-aria-components";
1297
- import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
1499
+ import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
1298
1500
  function rangeLengthInDays(range) {
1299
1501
  return range.end.toDate("UTC").getTime() / 864e5 - range.start.toDate("UTC").getTime() / 864e5 + 1;
1300
1502
  }
@@ -1328,7 +1530,7 @@ function DateRangePicker({
1328
1530
  children: [
1329
1531
  label ? /* @__PURE__ */ jsxs20(Label9, { className: "pire-field-label", children: [
1330
1532
  label,
1331
- rest.isRequired ? /* @__PURE__ */ jsx26("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1533
+ rest.isRequired ? /* @__PURE__ */ jsx27("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1332
1534
  ] }) : null,
1333
1535
  /* @__PURE__ */ jsxs20(
1334
1536
  Group7,
@@ -1339,29 +1541,29 @@ function DateRangePicker({
1339
1541
  "data-invalid": rest.isInvalid || tooLong ? "true" : void 0,
1340
1542
  "data-readonly": rest.isReadOnly ? "true" : void 0,
1341
1543
  children: [
1342
- /* @__PURE__ */ jsx26(DateInput2, { slot: "start", className: "pire-datefield", children: (segment) => /* @__PURE__ */ jsx26(DateSegment2, { segment, className: "pire-datesegment" }) }),
1343
- /* @__PURE__ */ jsx26("span", { "aria-hidden": "true", className: "pire-daterange-dash", children: "\u2013" }),
1344
- /* @__PURE__ */ jsx26(DateInput2, { slot: "end", className: "pire-datefield", children: (segment) => /* @__PURE__ */ jsx26(DateSegment2, { segment, className: "pire-datesegment" }) }),
1345
- /* @__PURE__ */ jsx26(
1544
+ /* @__PURE__ */ jsx27(DateInput2, { slot: "start", className: "pire-datefield", children: (segment) => /* @__PURE__ */ jsx27(DateSegment2, { segment, className: "pire-datesegment" }) }),
1545
+ /* @__PURE__ */ jsx27("span", { "aria-hidden": "true", className: "pire-daterange-dash", children: "\u2013" }),
1546
+ /* @__PURE__ */ jsx27(DateInput2, { slot: "end", className: "pire-datefield", children: (segment) => /* @__PURE__ */ jsx27(DateSegment2, { segment, className: "pire-datesegment" }) }),
1547
+ /* @__PURE__ */ jsx27(
1346
1548
  AriaButton9,
1347
1549
  {
1348
1550
  className: "pire-iconbtn",
1349
1551
  "data-size": "sm",
1350
1552
  "aria-label": msg.datePickerOpenCalendar,
1351
1553
  style: { width: 24, height: 24 },
1352
- children: /* @__PURE__ */ jsx26(Icon, { name: "calendar", size: 16 })
1554
+ children: /* @__PURE__ */ jsx27(Icon, { name: "calendar", size: 16 })
1353
1555
  }
1354
1556
  )
1355
1557
  ]
1356
1558
  }
1357
1559
  ),
1358
- description ? /* @__PURE__ */ jsx26(Text10, { slot: "description", className: "pire-field-hint", children: description }) : null,
1359
- /* @__PURE__ */ jsx26(FieldError9, { className: "pire-field-error", children: errorMessage }),
1360
- /* @__PURE__ */ jsx26(Popover5, { className: "pire-popover", children: /* @__PURE__ */ jsxs20(AriaDialog2, { className: "pire-daterange-dialog", children: [
1560
+ description ? /* @__PURE__ */ jsx27(Text10, { slot: "description", className: "pire-field-hint", children: description }) : null,
1561
+ /* @__PURE__ */ jsx27(FieldError9, { className: "pire-field-error", children: errorMessage }),
1562
+ /* @__PURE__ */ jsx27(Popover5, { className: "pire-popover", children: /* @__PURE__ */ jsxs20(AriaDialog2, { className: "pire-daterange-dialog", children: [
1361
1563
  presets?.length ? (
1362
1564
  // Before the calendar in the DOM, so keyboard users reach the shortcut without
1363
1565
  // arrowing through a month first.
1364
- /* @__PURE__ */ jsx26("div", { className: "pire-daterange-presets", role: "group", "aria-label": msg.dateRangePresetsLabel, children: presets.map((preset) => /* @__PURE__ */ jsx26(
1566
+ /* @__PURE__ */ jsx27("div", { className: "pire-daterange-presets", role: "group", "aria-label": msg.dateRangePresetsLabel, children: presets.map((preset) => /* @__PURE__ */ jsx27(
1365
1567
  AriaButton9,
1366
1568
  {
1367
1569
  className: "pire-daterange-preset",
@@ -1373,31 +1575,31 @@ function DateRangePicker({
1373
1575
  ) : null,
1374
1576
  /* @__PURE__ */ jsxs20(RangeCalendar, { className: "pire-calendar", children: [
1375
1577
  /* @__PURE__ */ jsxs20("header", { className: "pire-calendar-head", children: [
1376
- /* @__PURE__ */ jsx26(
1578
+ /* @__PURE__ */ jsx27(
1377
1579
  AriaButton9,
1378
1580
  {
1379
1581
  slot: "previous",
1380
1582
  className: "pire-iconbtn",
1381
1583
  "data-size": "sm",
1382
1584
  "aria-label": msg.datePickerPreviousMonth,
1383
- children: /* @__PURE__ */ jsx26(Icon, { name: "chevron-left", size: 16 })
1585
+ children: /* @__PURE__ */ jsx27(Icon, { name: "chevron-left", size: 16 })
1384
1586
  }
1385
1587
  ),
1386
- /* @__PURE__ */ jsx26(Heading3, { className: "pire-calendar-title" }),
1387
- /* @__PURE__ */ jsx26(
1588
+ /* @__PURE__ */ jsx27(Heading3, { className: "pire-calendar-title" }),
1589
+ /* @__PURE__ */ jsx27(
1388
1590
  AriaButton9,
1389
1591
  {
1390
1592
  slot: "next",
1391
1593
  className: "pire-iconbtn",
1392
1594
  "data-size": "sm",
1393
1595
  "aria-label": msg.datePickerNextMonth,
1394
- children: /* @__PURE__ */ jsx26(Icon, { name: "chevron-right", size: 16 })
1596
+ children: /* @__PURE__ */ jsx27(Icon, { name: "chevron-right", size: 16 })
1395
1597
  }
1396
1598
  )
1397
1599
  ] }),
1398
1600
  /* @__PURE__ */ jsxs20(CalendarGrid2, { className: "pire-calendar-grid", children: [
1399
- /* @__PURE__ */ jsx26(CalendarGridHeader2, { children: (day) => /* @__PURE__ */ jsx26(CalendarHeaderCell2, { children: day }) }),
1400
- /* @__PURE__ */ jsx26(CalendarGridBody2, { children: (date) => /* @__PURE__ */ jsx26(CalendarCell2, { date, className: "pire-calendar-cell" }) })
1601
+ /* @__PURE__ */ jsx27(CalendarGridHeader2, { children: (day) => /* @__PURE__ */ jsx27(CalendarHeaderCell2, { children: day }) }),
1602
+ /* @__PURE__ */ jsx27(CalendarGridBody2, { children: (date) => /* @__PURE__ */ jsx27(CalendarCell2, { date, className: "pire-calendar-cell" }) })
1401
1603
  ] })
1402
1604
  ] })
1403
1605
  ] }) })
@@ -1414,7 +1616,7 @@ import * as React8 from "react";
1414
1616
 
1415
1617
  // src/components/feedback/Dialog.tsx
1416
1618
  import { ModalOverlay, Modal, Dialog as AriaDialog3, Heading as Heading4 } from "react-aria-components";
1417
- import { jsx as jsx27, jsxs as jsxs21 } from "react/jsx-runtime";
1619
+ import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
1418
1620
  function Dialog({
1419
1621
  isOpen,
1420
1622
  onOpenChange,
@@ -1434,7 +1636,7 @@ function Dialog({
1434
1636
  onClose?.();
1435
1637
  onOpenChange?.(false);
1436
1638
  };
1437
- return /* @__PURE__ */ jsx27(
1639
+ return /* @__PURE__ */ jsx28(
1438
1640
  ModalOverlay,
1439
1641
  {
1440
1642
  className: "pire-modal-overlay",
@@ -1443,16 +1645,16 @@ function Dialog({
1443
1645
  onOpenChange: (o) => {
1444
1646
  if (!o) close();
1445
1647
  },
1446
- children: /* @__PURE__ */ jsx27(Modal, { className: cx("pire-modal", className), "data-size": size, style, children: /* @__PURE__ */ jsxs21(AriaDialog3, { className: "pire-dialog", children: [
1648
+ children: /* @__PURE__ */ jsx28(Modal, { className: cx("pire-modal", className), "data-size": size, style, children: /* @__PURE__ */ jsxs21(AriaDialog3, { className: "pire-dialog", children: [
1447
1649
  title ? /* @__PURE__ */ jsxs21("header", { className: "pire-dialog-head", children: [
1448
1650
  /* @__PURE__ */ jsxs21("div", { style: { flex: 1, minWidth: 0 }, children: [
1449
- /* @__PURE__ */ jsx27(Heading4, { slot: "title", className: "pire-dialog-title", children: title }),
1450
- subtitle ? /* @__PURE__ */ jsx27("p", { className: "pire-dialog-sub", style: { margin: 0 }, children: subtitle }) : null
1651
+ /* @__PURE__ */ jsx28(Heading4, { slot: "title", className: "pire-dialog-title", children: title }),
1652
+ subtitle ? /* @__PURE__ */ jsx28("p", { className: "pire-dialog-sub", style: { margin: 0 }, children: subtitle }) : null
1451
1653
  ] }),
1452
- showClose ? /* @__PURE__ */ jsx27(IconButton, { icon: "x", label: msg.dialogClose, size: "sm", onPress: close }) : null
1654
+ showClose ? /* @__PURE__ */ jsx28(IconButton, { icon: "x", label: msg.dialogClose, size: "sm", onPress: close }) : null
1453
1655
  ] }) : null,
1454
- children ? /* @__PURE__ */ jsx27("div", { className: "pire-dialog-body", children }) : null,
1455
- footer ? /* @__PURE__ */ jsx27("footer", { className: "pire-dialog-foot", children: footer }) : null
1656
+ children ? /* @__PURE__ */ jsx28("div", { className: "pire-dialog-body", children }) : null,
1657
+ footer ? /* @__PURE__ */ jsx28("footer", { className: "pire-dialog-foot", children: footer }) : null
1456
1658
  ] }) })
1457
1659
  }
1458
1660
  );
@@ -1469,9 +1671,9 @@ import {
1469
1671
  } from "react-aria-components";
1470
1672
 
1471
1673
  // src/components/feedback/Skeleton.tsx
1472
- import { jsx as jsx28 } from "react/jsx-runtime";
1674
+ import { jsx as jsx29 } from "react/jsx-runtime";
1473
1675
  function Skeleton({ shape = "text", width, height, className, style, ...rest }) {
1474
- return /* @__PURE__ */ jsx28(
1676
+ return /* @__PURE__ */ jsx29(
1475
1677
  "div",
1476
1678
  {
1477
1679
  className: cx("pire-skeleton", className),
@@ -1485,7 +1687,7 @@ function Skeleton({ shape = "text", width, height, className, style, ...rest })
1485
1687
  var BAR_WIDTHS = ["72%", "54%", "86%", "63%"];
1486
1688
  function SkeletonTableRow({ columns, density = "regular", className, style, ...rest }) {
1487
1689
  const cells = typeof columns === "number" ? Array.from({ length: columns }, () => ({})) : columns;
1488
- return /* @__PURE__ */ jsx28(
1690
+ return /* @__PURE__ */ jsx29(
1489
1691
  "div",
1490
1692
  {
1491
1693
  className: cx("pire-skeleton-row", className),
@@ -1497,13 +1699,13 @@ function SkeletonTableRow({ columns, density = "regular", className, style, ...r
1497
1699
  const align = c.numeric ? "right" : c.align ?? "left";
1498
1700
  return (
1499
1701
  // biome-ignore lint/suspicious/noArrayIndexKey: columns are positional and never reordered.
1500
- /* @__PURE__ */ jsx28(
1702
+ /* @__PURE__ */ jsx29(
1501
1703
  "div",
1502
1704
  {
1503
1705
  className: "pire-skeleton-cell",
1504
1706
  "data-align": align,
1505
1707
  style: { width: c.width, flex: c.width ? "0 0 auto" : void 0 },
1506
- children: /* @__PURE__ */ jsx28(Skeleton, { width: BAR_WIDTHS[i % BAR_WIDTHS.length] })
1708
+ children: /* @__PURE__ */ jsx29(Skeleton, { width: BAR_WIDTHS[i % BAR_WIDTHS.length] })
1507
1709
  },
1508
1710
  i
1509
1711
  )
@@ -1514,7 +1716,7 @@ function SkeletonTableRow({ columns, density = "regular", className, style, ...r
1514
1716
  }
1515
1717
 
1516
1718
  // src/components/data/DataTable.tsx
1517
- import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
1719
+ import { jsx as jsx30, jsxs as jsxs22 } from "react/jsx-runtime";
1518
1720
  function DataTable({
1519
1721
  columns,
1520
1722
  rows,
@@ -1546,7 +1748,7 @@ function DataTable({
1546
1748
  ...columns.map((c) => ({ width: c.width, align: c.align, numeric: c.numeric }))
1547
1749
  ];
1548
1750
  const body = isLoading ? [] : rows;
1549
- return /* @__PURE__ */ jsx29(
1751
+ return /* @__PURE__ */ jsx30(
1550
1752
  "div",
1551
1753
  {
1552
1754
  className: cx("pire-table-wrap", className),
@@ -1571,8 +1773,8 @@ function DataTable({
1571
1773
  } : void 0,
1572
1774
  children: [
1573
1775
  /* @__PURE__ */ jsxs22(TableHeader, { className: "pire-thead-row", children: [
1574
- selectable ? /* @__PURE__ */ jsx29(Column, { className: "pire-th", width: 44, children: /* @__PURE__ */ jsx29(Checkbox, { slot: "selection", "aria-label": msg.dataTableSelectAll }) }) : null,
1575
- columns.map((c, i) => /* @__PURE__ */ jsx29(
1776
+ selectable ? /* @__PURE__ */ jsx30(Column, { className: "pire-th", width: 44, children: /* @__PURE__ */ jsx30(Checkbox, { slot: "selection", "aria-label": msg.dataTableSelectAll }) }) : null,
1777
+ columns.map((c, i) => /* @__PURE__ */ jsx30(
1576
1778
  Column,
1577
1779
  {
1578
1780
  id: c.key,
@@ -1584,7 +1786,7 @@ function DataTable({
1584
1786
  "data-allows-sorting": c.sortable ? "true" : void 0,
1585
1787
  children: /* @__PURE__ */ jsxs22("span", { className: "pire-th-inner", children: [
1586
1788
  c.label,
1587
- c.sortable ? /* @__PURE__ */ jsx29(
1789
+ c.sortable ? /* @__PURE__ */ jsx30(
1588
1790
  Icon,
1589
1791
  {
1590
1792
  size: 12,
@@ -1597,15 +1799,15 @@ function DataTable({
1597
1799
  c.key
1598
1800
  ))
1599
1801
  ] }),
1600
- /* @__PURE__ */ jsx29(TableBody, { renderEmptyState: () => isLoading ? /* @__PURE__ */ jsxs22("div", { className: "pire-table-loading", role: "status", "aria-live": "polite", children: [
1601
- /* @__PURE__ */ jsx29("span", { className: "pire-sr-only", children: loadingLabel ?? msg.dataTableLoading }),
1802
+ /* @__PURE__ */ jsx30(TableBody, { renderEmptyState: () => isLoading ? /* @__PURE__ */ jsxs22("div", { className: "pire-table-loading", role: "status", "aria-live": "polite", children: [
1803
+ /* @__PURE__ */ jsx30("span", { className: "pire-sr-only", children: loadingLabel ?? msg.dataTableLoading }),
1602
1804
  Array.from({ length: skeletonRows }, (_, i) => (
1603
1805
  // biome-ignore lint/suspicious/noArrayIndexKey: placeholder rows are positional.
1604
- /* @__PURE__ */ jsx29(SkeletonTableRow, { columns: skeletonColumns, density }, i)
1806
+ /* @__PURE__ */ jsx30(SkeletonTableRow, { columns: skeletonColumns, density }, i)
1605
1807
  ))
1606
- ] }) : /* @__PURE__ */ jsx29("div", { className: "pire-table-empty", children: emptyLabel }), children: body.map((row) => /* @__PURE__ */ jsxs22(Row, { id: row.id, className: "pire-tr", "data-pressable": onRowAction ? "true" : void 0, children: [
1607
- selectable ? /* @__PURE__ */ jsx29(Cell, { className: "pire-td", children: /* @__PURE__ */ jsx29(Checkbox, { slot: "selection", "aria-label": msg.dataTableSelectRow }) }) : null,
1608
- columns.map((c) => /* @__PURE__ */ jsx29(
1808
+ ] }) : /* @__PURE__ */ jsx30("div", { className: "pire-table-empty", children: emptyLabel }), children: body.map((row) => /* @__PURE__ */ jsxs22(Row, { id: row.id, className: "pire-tr", "data-pressable": onRowAction ? "true" : void 0, children: [
1809
+ selectable ? /* @__PURE__ */ jsx30(Cell, { className: "pire-td", children: /* @__PURE__ */ jsx30(Checkbox, { slot: "selection", "aria-label": msg.dataTableSelectRow }) }) : null,
1810
+ columns.map((c) => /* @__PURE__ */ jsx30(
1609
1811
  Cell,
1610
1812
  {
1611
1813
  className: "pire-td",
@@ -1624,14 +1826,18 @@ function DataTable({
1624
1826
  }
1625
1827
 
1626
1828
  // src/components/patterns/ValueHelpDialog.tsx
1627
- import { jsx as jsx30, jsxs as jsxs23 } from "react/jsx-runtime";
1829
+ import { jsx as jsx31, jsxs as jsxs23 } from "react/jsx-runtime";
1628
1830
  function ValueHelpDialog({
1629
1831
  isOpen,
1630
- title = "Select a record",
1832
+ title,
1631
1833
  columns = [],
1632
1834
  rows = [],
1633
- searchPlaceholder = "Search by ID or name",
1835
+ searchPlaceholder,
1634
1836
  emptyLabel,
1837
+ onSearch,
1838
+ isFilteredExternally,
1839
+ isLoading,
1840
+ onLoadMore,
1635
1841
  onSelect,
1636
1842
  onClose
1637
1843
  }) {
@@ -1641,52 +1847,61 @@ function ValueHelpDialog({
1641
1847
  if (isOpen) setQuery("");
1642
1848
  }, [isOpen]);
1643
1849
  const filtered = React8.useMemo(() => {
1850
+ if (isFilteredExternally) return rows;
1644
1851
  const q = query.trim().toLowerCase();
1645
1852
  if (!q) return rows;
1646
1853
  return rows.filter((row) => Object.values(row).some((v) => String(v).toLowerCase().includes(q)));
1647
- }, [rows, query]);
1648
- return /* @__PURE__ */ jsx30(
1854
+ }, [rows, query, isFilteredExternally]);
1855
+ const handleSearch = (value) => {
1856
+ setQuery(value);
1857
+ onSearch?.(value);
1858
+ };
1859
+ return /* @__PURE__ */ jsx31(
1649
1860
  Dialog,
1650
1861
  {
1651
1862
  isOpen,
1652
1863
  size: "lg",
1653
- title,
1864
+ title: title ?? msg.valueHelpDialogTitle,
1654
1865
  onClose,
1655
- footer: /* @__PURE__ */ jsx30(Button, { variant: "tertiary", onPress: onClose, children: msg.valueHelpDialogCancel }),
1866
+ footer: /* @__PURE__ */ jsx31(Button, { variant: "tertiary", onPress: onClose, children: msg.valueHelpDialogCancel }),
1656
1867
  children: /* @__PURE__ */ jsxs23("div", { style: { display: "flex", flexDirection: "column", gap: "var(--sp-3)" }, children: [
1657
- /* @__PURE__ */ jsx30(
1868
+ /* @__PURE__ */ jsx31(
1658
1869
  Input,
1659
1870
  {
1660
1871
  "aria-label": msg.valueHelpDialogSearch,
1661
1872
  icon: "search",
1662
1873
  type: "search",
1663
1874
  value: query,
1664
- onChange: setQuery,
1665
- placeholder: searchPlaceholder,
1875
+ onChange: handleSearch,
1876
+ placeholder: searchPlaceholder ?? msg.valueHelpDialogSearchPlaceholder,
1666
1877
  autoFocus: true
1667
1878
  }
1668
1879
  ),
1669
- /* @__PURE__ */ jsx30(
1880
+ /* @__PURE__ */ jsx31("div", { onScroll: onLoadMore ? (event) => {
1881
+ const el = event.currentTarget;
1882
+ if (el.scrollHeight - el.scrollTop - el.clientHeight < 64) onLoadMore();
1883
+ } : void 0, style: { overflow: "auto", maxHeight: "48vh" }, children: /* @__PURE__ */ jsx31(
1670
1884
  DataTable,
1671
1885
  {
1672
- "aria-label": typeof title === "string" ? title : "Records",
1886
+ "aria-label": typeof title === "string" ? title : msg.valueHelpDialogTitle,
1673
1887
  density: "condensed",
1674
1888
  columns,
1675
1889
  rows: filtered,
1676
- emptyLabel: emptyLabel ?? `No records match \u201C${query}\u201D.`,
1890
+ isLoading,
1891
+ emptyLabel: emptyLabel ?? msg.valueHelpDialogEmpty,
1677
1892
  onRowAction: (row) => {
1678
1893
  onSelect?.(row);
1679
1894
  onClose?.();
1680
1895
  }
1681
1896
  }
1682
- )
1897
+ ) })
1683
1898
  ] })
1684
1899
  }
1685
1900
  );
1686
1901
  }
1687
1902
 
1688
1903
  // src/components/forms/ValueHelpField.tsx
1689
- import { jsx as jsx31, jsxs as jsxs24 } from "react/jsx-runtime";
1904
+ import { jsx as jsx32, jsxs as jsxs24 } from "react/jsx-runtime";
1690
1905
  var defaultFormat = (row) => [row.id, row.name ?? row.label ?? row.text].filter(Boolean).join(" \u2014 ");
1691
1906
  function ValueHelpField({
1692
1907
  label,
@@ -1696,7 +1911,12 @@ function ValueHelpField({
1696
1911
  rows = [],
1697
1912
  columns = [],
1698
1913
  dialogTitle,
1699
- placeholder = "Not selected",
1914
+ onSearch,
1915
+ isFilteredExternally,
1916
+ isLoading,
1917
+ onLoadMore,
1918
+ emptyLabel,
1919
+ placeholder,
1700
1920
  description,
1701
1921
  errorMessage,
1702
1922
  isInvalid,
@@ -1709,50 +1929,53 @@ function ValueHelpField({
1709
1929
  const msg = usePireMessages();
1710
1930
  const [open, setOpen] = React9.useState(false);
1711
1931
  return /* @__PURE__ */ jsxs24("div", { className: cx(className), style, children: [
1712
- /* @__PURE__ */ jsxs24("div", { style: { display: "flex", gap: "var(--sp-2)", alignItems: "flex-end" }, children: [
1713
- /* @__PURE__ */ jsx31(
1714
- Input,
1715
- {
1716
- label,
1717
- isReadOnly: true,
1718
- isInvalid,
1719
- isDisabled,
1720
- isRequired,
1721
- value: value ? format(value) : "",
1722
- placeholder,
1723
- description,
1724
- errorMessage
1725
- }
1726
- ),
1727
- allowsClear && value ? /* @__PURE__ */ jsx31(
1728
- IconButton,
1729
- {
1730
- icon: "x",
1731
- label: msg.valueHelpFieldClear,
1732
- variant: "outlined",
1733
- isDisabled,
1734
- onPress: () => onChange?.(null)
1735
- }
1736
- ) : null,
1737
- /* @__PURE__ */ jsx31(
1738
- IconButton,
1739
- {
1740
- icon: "search",
1741
- label: typeof label === "string" ? msg.valueHelpFieldOpenNamed.replace("{label}", label.toLowerCase()) : msg.valueHelpFieldOpen,
1742
- variant: "outlined",
1743
- isDisabled,
1744
- onPress: () => setOpen(true)
1745
- }
1746
- )
1747
- ] }),
1748
- /* @__PURE__ */ jsx31(
1932
+ /* @__PURE__ */ jsx32(
1933
+ Input,
1934
+ {
1935
+ label,
1936
+ isReadOnly: true,
1937
+ isInvalid,
1938
+ isDisabled,
1939
+ isRequired,
1940
+ value: value ? format(value) : "",
1941
+ placeholder: placeholder ?? msg.valueHelpFieldPlaceholder,
1942
+ description,
1943
+ errorMessage,
1944
+ suffix: /* @__PURE__ */ jsxs24("span", { className: "pire-valuehelp-actions", children: [
1945
+ allowsClear && value ? /* @__PURE__ */ jsx32(
1946
+ IconButton,
1947
+ {
1948
+ icon: "x",
1949
+ label: msg.valueHelpFieldClear,
1950
+ isDisabled,
1951
+ onPress: () => onChange?.(null)
1952
+ }
1953
+ ) : null,
1954
+ /* @__PURE__ */ jsx32(
1955
+ IconButton,
1956
+ {
1957
+ icon: "search",
1958
+ label: typeof label === "string" ? msg.valueHelpFieldOpenNamed.replace("{label}", label.toLowerCase()) : msg.valueHelpFieldOpen,
1959
+ isDisabled,
1960
+ onPress: () => setOpen(true)
1961
+ }
1962
+ )
1963
+ ] })
1964
+ }
1965
+ ),
1966
+ /* @__PURE__ */ jsx32(
1749
1967
  ValueHelpDialog,
1750
1968
  {
1751
1969
  isOpen: open,
1752
1970
  onClose: () => setOpen(false),
1753
- title: dialogTitle ?? label ?? "Select a record",
1971
+ title: dialogTitle ?? label,
1754
1972
  columns,
1755
1973
  rows,
1974
+ onSearch,
1975
+ isFilteredExternally,
1976
+ isLoading,
1977
+ onLoadMore,
1978
+ emptyLabel,
1756
1979
  onSelect: (row) => onChange?.(row)
1757
1980
  }
1758
1981
  )
@@ -1765,7 +1988,7 @@ import { FileTrigger, Text as Text11 } from "react-aria-components";
1765
1988
 
1766
1989
  // src/components/feedback/ProgressBar.tsx
1767
1990
  import { ProgressBar as AriaProgressBar, Label as Label10 } from "react-aria-components";
1768
- import { Fragment as Fragment2, jsx as jsx32, jsxs as jsxs25 } from "react/jsx-runtime";
1991
+ import { Fragment as Fragment2, jsx as jsx33, jsxs as jsxs25 } from "react/jsx-runtime";
1769
1992
  function ProgressBar({
1770
1993
  value = 0,
1771
1994
  minValue = 0,
@@ -1778,7 +2001,7 @@ function ProgressBar({
1778
2001
  className,
1779
2002
  style
1780
2003
  }) {
1781
- return /* @__PURE__ */ jsx32(
2004
+ return /* @__PURE__ */ jsx33(
1782
2005
  AriaProgressBar,
1783
2006
  {
1784
2007
  className: cx("pire-progress", className),
@@ -1791,17 +2014,17 @@ function ProgressBar({
1791
2014
  style,
1792
2015
  children: ({ percentage, valueText }) => /* @__PURE__ */ jsxs25(Fragment2, { children: [
1793
2016
  label || showValue ? /* @__PURE__ */ jsxs25("div", { className: "pire-progress-head", children: [
1794
- label ? /* @__PURE__ */ jsx32(Label10, { children: label }) : /* @__PURE__ */ jsx32("span", {}),
1795
- showValue && !isIndeterminate ? /* @__PURE__ */ jsx32("span", { className: "pire-numeric", children: valueText }) : null
2017
+ label ? /* @__PURE__ */ jsx33(Label10, { children: label }) : /* @__PURE__ */ jsx33("span", {}),
2018
+ showValue && !isIndeterminate ? /* @__PURE__ */ jsx33("span", { className: "pire-numeric", children: valueText }) : null
1796
2019
  ] }) : null,
1797
- /* @__PURE__ */ jsx32("div", { className: "pire-progress-track", children: /* @__PURE__ */ jsx32("div", { className: "pire-progress-fill", style: { width: `${isIndeterminate ? 40 : percentage}%` } }) })
2020
+ /* @__PURE__ */ jsx33("div", { className: "pire-progress-track", children: /* @__PURE__ */ jsx33("div", { className: "pire-progress-fill", style: { width: `${isIndeterminate ? 40 : percentage}%` } }) })
1798
2021
  ] })
1799
2022
  }
1800
2023
  );
1801
2024
  }
1802
2025
 
1803
2026
  // src/components/forms/FileUpload.tsx
1804
- import { jsx as jsx33, jsxs as jsxs26 } from "react/jsx-runtime";
2027
+ import { jsx as jsx34, jsxs as jsxs26 } from "react/jsx-runtime";
1805
2028
  var isImage = (file) => file.type.startsWith("image/");
1806
2029
  function formatFileSize(bytes) {
1807
2030
  if (bytes < 1024) return `${bytes} B`;
@@ -1883,22 +2106,22 @@ function FileUpload({
1883
2106
  children: [
1884
2107
  label ? /* @__PURE__ */ jsxs26("span", { className: "pire-field-label", children: [
1885
2108
  label,
1886
- isRequired ? /* @__PURE__ */ jsx33("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
2109
+ isRequired ? /* @__PURE__ */ jsx34("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
1887
2110
  ] }) : null,
1888
- /* @__PURE__ */ jsx33(
2111
+ /* @__PURE__ */ jsx34(
1889
2112
  FileTrigger,
1890
2113
  {
1891
2114
  acceptedFileTypes,
1892
2115
  allowsMultiple,
1893
2116
  onSelect: accept,
1894
- children: /* @__PURE__ */ jsx33(Button, { icon: "paperclip", isDisabled: isDisabled || isReadOnly, children: chooseLabel ?? msg.fileUploadChoose })
2117
+ children: /* @__PURE__ */ jsx34(Button, { icon: "paperclip", isDisabled: isDisabled || isReadOnly, children: chooseLabel ?? msg.fileUploadChoose })
1895
2118
  }
1896
2119
  ),
1897
- files.length ? /* @__PURE__ */ jsx33("ul", { className: "pire-fileupload-list", children: files.map(({ file, previewUrl }) => /* @__PURE__ */ jsxs26("li", { className: "pire-fileupload-item", children: [
1898
- previewUrl ? /* @__PURE__ */ jsx33("img", { className: "pire-fileupload-thumb", src: previewUrl, alt: "" }) : /* @__PURE__ */ jsx33(Icon, { name: "file-text", size: 16, className: "pire-fileupload-icon" }),
1899
- /* @__PURE__ */ jsx33("span", { className: "pire-fileupload-name", children: file.name }),
1900
- /* @__PURE__ */ jsx33("span", { className: "pire-fileupload-size", children: formatFileSize(file.size) }),
1901
- isDisabled || isReadOnly ? null : /* @__PURE__ */ jsx33(
2120
+ files.length ? /* @__PURE__ */ jsx34("ul", { className: "pire-fileupload-list", children: files.map(({ file, previewUrl }) => /* @__PURE__ */ jsxs26("li", { className: "pire-fileupload-item", children: [
2121
+ previewUrl ? /* @__PURE__ */ jsx34("img", { className: "pire-fileupload-thumb", src: previewUrl, alt: "" }) : /* @__PURE__ */ jsx34(Icon, { name: "file-text", size: 16, className: "pire-fileupload-icon" }),
2122
+ /* @__PURE__ */ jsx34("span", { className: "pire-fileupload-name", children: file.name }),
2123
+ /* @__PURE__ */ jsx34("span", { className: "pire-fileupload-size", children: formatFileSize(file.size) }),
2124
+ isDisabled || isReadOnly ? null : /* @__PURE__ */ jsx34(
1902
2125
  IconButton,
1903
2126
  {
1904
2127
  icon: "x",
@@ -1908,16 +2131,17 @@ function FileUpload({
1908
2131
  }
1909
2132
  )
1910
2133
  ] }, `${file.name}-${file.size}-${file.lastModified}`)) }) : null,
1911
- uploadProgress != null ? /* @__PURE__ */ jsx33(ProgressBar, { value: uploadProgress, label: msg.fileUploadUploading }) : null,
1912
- description ? /* @__PURE__ */ jsx33(Text11, { slot: "description", className: "pire-field-hint", children: description }) : null,
1913
- isInvalid && errorMessage ? /* @__PURE__ */ jsx33("span", { className: "pire-field-error", children: errorMessage }) : null
2134
+ uploadProgress != null ? /* @__PURE__ */ jsx34(ProgressBar, { value: uploadProgress, label: msg.fileUploadUploading }) : null,
2135
+ description ? /* @__PURE__ */ jsx34(Text11, { slot: "description", className: "pire-field-hint", children: description }) : null,
2136
+ isInvalid && errorMessage ? /* @__PURE__ */ jsx34("span", { className: "pire-field-error", children: errorMessage }) : null
1914
2137
  ]
1915
2138
  }
1916
2139
  );
1917
2140
  }
1918
2141
 
1919
2142
  // src/components/navigation/ShellBar.tsx
1920
- import { jsx as jsx34, jsxs as jsxs27 } from "react/jsx-runtime";
2143
+ import { MenuTrigger, Button as AriaButton10, Popover as Popover6 } from "react-aria-components";
2144
+ import { jsx as jsx35, jsxs as jsxs27 } from "react/jsx-runtime";
1921
2145
  var initials2 = (name) => name.trim().split(/\s+/).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
1922
2146
  function ShellBar({
1923
2147
  product,
@@ -1929,30 +2153,48 @@ function ShellBar({
1929
2153
  searchLabel = "Search",
1930
2154
  actions,
1931
2155
  user,
2156
+ userMenu,
2157
+ userMenuLabel,
1932
2158
  className,
1933
2159
  ...rest
1934
2160
  }) {
2161
+ const msg = usePireMessages();
1935
2162
  return /* @__PURE__ */ jsxs27("header", { className: cx("pire-shellbar", className), ...rest, children: [
1936
- onMenu ? /* @__PURE__ */ jsx34(IconButton, { icon: "menu", label: menuLabel, variant: "inverse", size: "sm", onPress: onMenu }) : null,
1937
- monogram ? /* @__PURE__ */ jsx34("span", { className: "pire-shellbar-mono", "aria-hidden": "true", children: monogram }) : null,
1938
- product ? /* @__PURE__ */ jsx34("span", { className: "pire-shellbar-product", children: product }) : null,
1939
- title ? /* @__PURE__ */ jsx34("span", { className: "pire-shellbar-title", children: title }) : null,
1940
- /* @__PURE__ */ jsx34("span", { className: "pire-shellbar-spacer" }),
1941
- onSearch ? /* @__PURE__ */ jsx34(IconButton, { icon: "search", label: searchLabel, variant: "inverse", size: "sm", onPress: onSearch }) : null,
2163
+ onMenu ? /* @__PURE__ */ jsx35(IconButton, { icon: "menu", label: menuLabel, variant: "inverse", size: "sm", onPress: onMenu }) : null,
2164
+ monogram ? /* @__PURE__ */ jsx35("span", { className: "pire-shellbar-mono", "aria-hidden": "true", children: monogram }) : null,
2165
+ product ? /* @__PURE__ */ jsx35("span", { className: "pire-shellbar-product", children: product }) : null,
2166
+ title ? /* @__PURE__ */ jsx35("span", { className: "pire-shellbar-title", children: title }) : null,
2167
+ /* @__PURE__ */ jsx35("span", { className: "pire-shellbar-spacer" }),
2168
+ onSearch ? /* @__PURE__ */ jsx35(IconButton, { icon: "search", label: searchLabel, variant: "inverse", size: "sm", onPress: onSearch }) : null,
1942
2169
  actions,
1943
- user ? /* @__PURE__ */ jsx34("span", { className: "pire-avatar", title: user, "aria-label": user, role: "img", children: initials2(user) }) : null
2170
+ user && userMenu ? (
2171
+ // A real button, not the img-role span: the avatar is where "my profile", "switch company"
2172
+ // and "sign out" live in any ERP, and a span accepts neither focus nor onPress. Popover is
2173
+ // rendered here rather than expected from the consumer so the panel keeps shell placement.
2174
+ /* @__PURE__ */ jsxs27(MenuTrigger, { children: [
2175
+ /* @__PURE__ */ jsx35(
2176
+ AriaButton10,
2177
+ {
2178
+ className: "pire-avatar pire-avatar-trigger",
2179
+ "aria-label": (userMenuLabel ?? msg.shellBarUserMenu).replace("{user}", user),
2180
+ children: initials2(user)
2181
+ }
2182
+ ),
2183
+ /* @__PURE__ */ jsx35(Popover6, { className: "pire-popover", children: userMenu })
2184
+ ] })
2185
+ ) : user ? /* @__PURE__ */ jsx35("span", { className: "pire-avatar", title: user, "aria-label": user, role: "img", children: initials2(user) }) : null
1944
2186
  ] });
1945
2187
  }
1946
2188
 
1947
2189
  // src/components/navigation/SideNav.tsx
1948
2190
  import * as React11 from "react";
1949
2191
  import {
1950
- Button as AriaButton10,
2192
+ Button as AriaButton11,
1951
2193
  Disclosure,
1952
2194
  DisclosureGroup,
1953
2195
  DisclosurePanel,
1954
- MenuTrigger,
1955
- Popover as Popover6
2196
+ MenuTrigger as MenuTrigger2,
2197
+ Popover as Popover7
1956
2198
  } from "react-aria-components";
1957
2199
 
1958
2200
  // src/components/navigation/Menu.tsx
@@ -1963,11 +2205,11 @@ import {
1963
2205
  Separator as AriaSeparator2,
1964
2206
  Header
1965
2207
  } from "react-aria-components";
1966
- import { jsx as jsx35, jsxs as jsxs28 } from "react/jsx-runtime";
2208
+ import { jsx as jsx36, jsxs as jsxs28 } from "react/jsx-runtime";
1967
2209
  function Menu({ minWidth, className, style, ...rest }) {
1968
2210
  const width = typeof minWidth === "number" ? `${minWidth}px` : minWidth;
1969
2211
  const menuStyle = width == null ? style : { ["--pire-menu-min-w"]: width, ...style };
1970
- return /* @__PURE__ */ jsx35(
2212
+ return /* @__PURE__ */ jsx36(
1971
2213
  AriaMenu,
1972
2214
  {
1973
2215
  className: cx("pire-menu", className),
@@ -1976,6 +2218,11 @@ function Menu({ minWidth, className, style, ...rest }) {
1976
2218
  }
1977
2219
  );
1978
2220
  }
2221
+ var shortcutKeys = (shortcut) => {
2222
+ if (shortcut == null) return [];
2223
+ const parts = Array.isArray(shortcut) ? shortcut : shortcut.split(/[+\s]+/);
2224
+ return parts.map((part) => part.trim()).filter(Boolean);
2225
+ };
1979
2226
  function MenuItem({
1980
2227
  children,
1981
2228
  icon,
@@ -1985,6 +2232,7 @@ function MenuItem({
1985
2232
  className,
1986
2233
  ...rest
1987
2234
  }) {
2235
+ const keys = shortcutKeys(shortcut);
1988
2236
  return /* @__PURE__ */ jsxs28(
1989
2237
  AriaMenuItem,
1990
2238
  {
@@ -1992,28 +2240,28 @@ function MenuItem({
1992
2240
  "data-tone": tone === "danger" ? "danger" : void 0,
1993
2241
  ...rest,
1994
2242
  children: [
1995
- icon ? /* @__PURE__ */ jsx35(Icon, { name: icon, size: 16, className: "pire-menu-item-icon" }) : null,
2243
+ icon ? /* @__PURE__ */ jsx36(Icon, { name: icon, size: 16, className: "pire-menu-item-icon" }) : null,
1996
2244
  /* @__PURE__ */ jsxs28("span", { className: "pire-menu-item-body", children: [
1997
- /* @__PURE__ */ jsx35("span", { className: "pire-menu-item-label", children }),
1998
- description ? /* @__PURE__ */ jsx35("span", { className: "pire-menu-item-desc", children: description }) : null
2245
+ /* @__PURE__ */ jsx36("span", { className: "pire-menu-item-label", children }),
2246
+ description ? /* @__PURE__ */ jsx36("span", { className: "pire-menu-item-desc", children: description }) : null
1999
2247
  ] }),
2000
- shortcut ? /* @__PURE__ */ jsx35("kbd", { className: "pire-menu-item-shortcut", children: shortcut }) : null
2248
+ keys.length ? /* @__PURE__ */ jsx36("span", { className: "pire-menu-item-shortcut", children: keys.map((cap, index) => /* @__PURE__ */ jsx36(Kbd, { size: "sm", children: cap }, `${cap}-${index}`)) }) : null
2001
2249
  ]
2002
2250
  }
2003
2251
  );
2004
2252
  }
2005
2253
  function MenuSection({ title, children, className, ...rest }) {
2006
2254
  return /* @__PURE__ */ jsxs28(AriaMenuSection, { className: cx("pire-menu-section", className), ...rest, children: [
2007
- title ? /* @__PURE__ */ jsx35(Header, { className: "pire-menu-section-title", children: title }) : null,
2255
+ title ? /* @__PURE__ */ jsx36(Header, { className: "pire-menu-section-title", children: title }) : null,
2008
2256
  children
2009
2257
  ] });
2010
2258
  }
2011
2259
  function MenuSeparator({ className }) {
2012
- return /* @__PURE__ */ jsx35(AriaSeparator2, { className: cx("pire-menu-separator", className) });
2260
+ return /* @__PURE__ */ jsx36(AriaSeparator2, { className: cx("pire-menu-separator", className) });
2013
2261
  }
2014
2262
 
2015
2263
  // src/components/navigation/SideNav.tsx
2016
- import { jsx as jsx36, jsxs as jsxs29 } from "react/jsx-runtime";
2264
+ import { jsx as jsx37, jsxs as jsxs29 } from "react/jsx-runtime";
2017
2265
  function findActiveParent(groups, value) {
2018
2266
  if (value == null) return void 0;
2019
2267
  for (const group of groups) {
@@ -2063,7 +2311,7 @@ function SideNav({
2063
2311
  const renderRow = (item, onPress, isGroup) => {
2064
2312
  const selected = !isGroup && item.id === value;
2065
2313
  const button = /* @__PURE__ */ jsxs29(
2066
- AriaButton10,
2314
+ AriaButton11,
2067
2315
  {
2068
2316
  className: "pire-sidenav-item",
2069
2317
  "data-selected": selected ? "true" : void 0,
@@ -2072,63 +2320,63 @@ function SideNav({
2072
2320
  "aria-label": collapsed ? item.label : void 0,
2073
2321
  onPress,
2074
2322
  children: [
2075
- item.icon ? /* @__PURE__ */ jsx36(Icon, { name: item.icon, size: 16 }) : null,
2076
- collapsed ? null : /* @__PURE__ */ jsx36("span", { children: item.label }),
2077
- item.count != null && !collapsed ? /* @__PURE__ */ jsx36("span", { className: "pire-sidenav-count", children: item.count }) : null
2323
+ item.icon ? /* @__PURE__ */ jsx37(Icon, { name: item.icon, size: 16 }) : null,
2324
+ collapsed ? null : /* @__PURE__ */ jsx37("span", { children: item.label }),
2325
+ item.count != null && !collapsed ? /* @__PURE__ */ jsx37("span", { className: "pire-sidenav-count", children: item.count }) : null
2078
2326
  ]
2079
2327
  },
2080
2328
  item.id
2081
2329
  );
2082
- return collapsed ? /* @__PURE__ */ jsx36(Tooltip, { label: item.label, placement: "right", children: button }, item.id) : button;
2330
+ return collapsed ? /* @__PURE__ */ jsx37(Tooltip, { label: item.label, placement: "right", children: button }, item.id) : button;
2083
2331
  };
2084
- const renderRailFlyout = (item) => /* @__PURE__ */ jsxs29(MenuTrigger, { children: [
2085
- /* @__PURE__ */ jsx36(
2086
- AriaButton10,
2332
+ const renderRailFlyout = (item) => /* @__PURE__ */ jsxs29(MenuTrigger2, { children: [
2333
+ /* @__PURE__ */ jsx37(
2334
+ AriaButton11,
2087
2335
  {
2088
2336
  className: "pire-sidenav-item",
2089
2337
  "aria-label": item.label,
2090
2338
  "data-active-child": item.id === activeParent ? "true" : void 0,
2091
- children: item.icon ? /* @__PURE__ */ jsx36(Icon, { name: item.icon, size: 16 }) : null
2339
+ children: item.icon ? /* @__PURE__ */ jsx37(Icon, { name: item.icon, size: 16 }) : null
2092
2340
  }
2093
2341
  ),
2094
- /* @__PURE__ */ jsx36(Popover6, { className: "pire-popover", placement: "right top", offset: 4, children: /* @__PURE__ */ jsx36(
2342
+ /* @__PURE__ */ jsx37(Popover7, { className: "pire-popover", placement: "right top", offset: 4, children: /* @__PURE__ */ jsx37(
2095
2343
  Menu,
2096
2344
  {
2097
2345
  "aria-label": item.label,
2098
2346
  className: "pire-sidenav-flyout",
2099
2347
  onAction: (key) => onChange?.(String(key)),
2100
- children: (item.items ?? []).map((child) => /* @__PURE__ */ jsx36(MenuItem, { id: child.id, children: child.label }, child.id))
2348
+ children: (item.items ?? []).map((child) => /* @__PURE__ */ jsx37(MenuItem, { id: child.id, children: child.label }, child.id))
2101
2349
  }
2102
2350
  ) })
2103
2351
  ] }, item.id);
2104
2352
  const renderSection = (item) => /* @__PURE__ */ jsxs29(Disclosure, { id: item.id, className: "pire-sidenav-section", children: [
2105
2353
  /* @__PURE__ */ jsxs29(
2106
- AriaButton10,
2354
+ AriaButton11,
2107
2355
  {
2108
2356
  slot: "trigger",
2109
2357
  className: "pire-sidenav-item",
2110
2358
  "data-kind": "group",
2111
2359
  "data-active-child": item.id === activeParent ? "true" : void 0,
2112
2360
  children: [
2113
- item.icon ? /* @__PURE__ */ jsx36(Icon, { name: item.icon, size: 16 }) : null,
2114
- /* @__PURE__ */ jsx36("span", { children: item.label }),
2115
- item.count != null ? /* @__PURE__ */ jsx36("span", { className: "pire-sidenav-count", children: item.count }) : null,
2116
- /* @__PURE__ */ jsx36(Icon, { name: "chevron-down", size: 16, className: "pire-sidenav-chevron" })
2361
+ item.icon ? /* @__PURE__ */ jsx37(Icon, { name: item.icon, size: 16 }) : null,
2362
+ /* @__PURE__ */ jsx37("span", { children: item.label }),
2363
+ item.count != null ? /* @__PURE__ */ jsx37("span", { className: "pire-sidenav-count", children: item.count }) : null,
2364
+ /* @__PURE__ */ jsx37(Icon, { name: "chevron-down", size: 16, className: "pire-sidenav-chevron" })
2117
2365
  ]
2118
2366
  }
2119
2367
  ),
2120
- /* @__PURE__ */ jsx36(DisclosurePanel, { className: "pire-sidenav-subnav", children: item.items?.map((child) => {
2368
+ /* @__PURE__ */ jsx37(DisclosurePanel, { className: "pire-sidenav-subnav", children: item.items?.map((child) => {
2121
2369
  const selected = child.id === value;
2122
2370
  return /* @__PURE__ */ jsxs29(
2123
- AriaButton10,
2371
+ AriaButton11,
2124
2372
  {
2125
2373
  className: "pire-sidenav-item pire-sidenav-subitem",
2126
2374
  "data-selected": selected ? "true" : void 0,
2127
2375
  "aria-current": selected ? "page" : void 0,
2128
2376
  onPress: () => onChange?.(child.id),
2129
2377
  children: [
2130
- /* @__PURE__ */ jsx36("span", { children: child.label }),
2131
- child.count != null ? /* @__PURE__ */ jsx36("span", { className: "pire-sidenav-count", children: child.count }) : null
2378
+ /* @__PURE__ */ jsx37("span", { children: child.label }),
2379
+ child.count != null ? /* @__PURE__ */ jsx37("span", { className: "pire-sidenav-count", children: child.count }) : null
2132
2380
  ]
2133
2381
  },
2134
2382
  child.id
@@ -2152,8 +2400,8 @@ function SideNav({
2152
2400
  return renderRow(item, () => isGroup ? toggleExpanded(item.id) : onChange?.(item.id), isGroup);
2153
2401
  });
2154
2402
  return /* @__PURE__ */ jsxs29("div", { className: "pire-sidenav-group", children: [
2155
- group.label && !collapsed ? /* @__PURE__ */ jsx36("div", { className: "pire-sidenav-label", children: group.label }) : null,
2156
- hasSections ? /* @__PURE__ */ jsx36(
2403
+ group.label && !collapsed ? /* @__PURE__ */ jsx37("div", { className: "pire-sidenav-label", children: group.label }) : null,
2404
+ hasSections ? /* @__PURE__ */ jsx37(
2157
2405
  DisclosureGroup,
2158
2406
  {
2159
2407
  className: "pire-sidenav-tree",
@@ -2165,7 +2413,7 @@ function SideNav({
2165
2413
  ) : rows
2166
2414
  ] }, group.label ?? gi);
2167
2415
  }),
2168
- footer ? /* @__PURE__ */ jsx36("div", { className: "pire-sidenav-footer", children: footer }) : null
2416
+ footer ? /* @__PURE__ */ jsx37("div", { className: "pire-sidenav-footer", children: footer }) : null
2169
2417
  ]
2170
2418
  }
2171
2419
  );
@@ -2173,7 +2421,7 @@ function SideNav({
2173
2421
 
2174
2422
  // src/components/navigation/Tabs.tsx
2175
2423
  import { Tabs as AriaTabs, TabList, Tab as AriaTab, TabPanel } from "react-aria-components";
2176
- import { jsx as jsx37, jsxs as jsxs30 } from "react/jsx-runtime";
2424
+ import { jsx as jsx38, jsxs as jsxs30 } from "react/jsx-runtime";
2177
2425
  function Tabs({ items, value, defaultValue, onChange, panels, className, style, ...rest }) {
2178
2426
  return /* @__PURE__ */ jsxs30(
2179
2427
  AriaTabs,
@@ -2184,12 +2432,12 @@ function Tabs({ items, value, defaultValue, onChange, panels, className, style,
2184
2432
  defaultSelectedKey: defaultValue,
2185
2433
  onSelectionChange: (k) => onChange?.(String(k)),
2186
2434
  children: [
2187
- /* @__PURE__ */ jsx37(TabList, { className: "pire-tablist", items, "aria-label": rest["aria-label"] ?? "Views", children: (item) => /* @__PURE__ */ jsxs30(AriaTab, { className: cx("pire-tab"), id: item.id, isDisabled: item.isDisabled, children: [
2188
- item.icon ? /* @__PURE__ */ jsx37(Icon, { name: item.icon, size: 16 }) : null,
2435
+ /* @__PURE__ */ jsx38(TabList, { className: "pire-tablist", items, "aria-label": rest["aria-label"] ?? "Views", children: (item) => /* @__PURE__ */ jsxs30(AriaTab, { className: cx("pire-tab"), id: item.id, isDisabled: item.isDisabled, children: [
2436
+ item.icon ? /* @__PURE__ */ jsx38(Icon, { name: item.icon, size: 16 }) : null,
2189
2437
  item.label,
2190
- item.count != null ? /* @__PURE__ */ jsx37("span", { className: "pire-tab-count", children: item.count }) : null
2438
+ item.count != null ? /* @__PURE__ */ jsx38("span", { className: "pire-tab-count", children: item.count }) : null
2191
2439
  ] }) }),
2192
- items.map((item) => /* @__PURE__ */ jsx37(TabPanel, { id: item.id, className: panels ? "pire-tabpanel" : void 0, children: panels?.[item.id] }, item.id))
2440
+ items.map((item) => /* @__PURE__ */ jsx38(TabPanel, { id: item.id, className: panels ? "pire-tabpanel" : void 0, children: panels?.[item.id] }, item.id))
2193
2441
  ]
2194
2442
  }
2195
2443
  );
@@ -2197,9 +2445,9 @@ function Tabs({ items, value, defaultValue, onChange, panels, className, style,
2197
2445
 
2198
2446
  // src/components/navigation/Breadcrumb.tsx
2199
2447
  import { Breadcrumbs as AriaBreadcrumbs, Breadcrumb as AriaBreadcrumb, Link as Link2 } from "react-aria-components";
2200
- import { jsx as jsx38, jsxs as jsxs31 } from "react/jsx-runtime";
2448
+ import { jsx as jsx39, jsxs as jsxs31 } from "react/jsx-runtime";
2201
2449
  function Breadcrumb({ items, onNavigate, className, style }) {
2202
- return /* @__PURE__ */ jsx38(
2450
+ return /* @__PURE__ */ jsx39(
2203
2451
  AriaBreadcrumbs,
2204
2452
  {
2205
2453
  className: cx("pire-breadcrumbs", className),
@@ -2209,8 +2457,8 @@ function Breadcrumb({ items, onNavigate, className, style }) {
2209
2457
  children: (item) => {
2210
2458
  const last = items[items.length - 1] === item;
2211
2459
  return /* @__PURE__ */ jsxs31(AriaBreadcrumb, { className: "pire-breadcrumb", id: item.id ?? item.label, children: [
2212
- last ? item.label : /* @__PURE__ */ jsx38(Link2, { href: item.href, children: item.label }),
2213
- last ? null : /* @__PURE__ */ jsx38(Icon, { name: "chevron-right", size: 12, style: { color: "var(--text-tertiary)" } })
2460
+ last ? item.label : /* @__PURE__ */ jsx39(Link2, { href: item.href, children: item.label }),
2461
+ last ? null : /* @__PURE__ */ jsx39(Icon, { name: "chevron-right", size: 12, style: { color: "var(--text-tertiary)" } })
2214
2462
  ] });
2215
2463
  }
2216
2464
  }
@@ -2218,7 +2466,7 @@ function Breadcrumb({ items, onNavigate, className, style }) {
2218
2466
  }
2219
2467
 
2220
2468
  // src/components/navigation/Pagination.tsx
2221
- import { jsx as jsx39, jsxs as jsxs32 } from "react/jsx-runtime";
2469
+ import { jsx as jsx40, jsxs as jsxs32 } from "react/jsx-runtime";
2222
2470
  function Pagination({
2223
2471
  page = 1,
2224
2472
  pageSize = 25,
@@ -2234,8 +2482,8 @@ function Pagination({
2234
2482
  const from = total === 0 ? 0 : (page - 1) * pageSize + 1;
2235
2483
  const to = Math.min(total, page * pageSize);
2236
2484
  return /* @__PURE__ */ jsxs32("nav", { className: cx("pire-pagination", className), style, "aria-label": msg.paginationLabel, children: [
2237
- /* @__PURE__ */ jsx39("span", { className: "pire-pagination-count", children: msg.paginationRange.replace("{from}", from.toLocaleString()).replace("{to}", to.toLocaleString()).replace("{total}", total.toLocaleString()) }),
2238
- /* @__PURE__ */ jsx39(
2485
+ /* @__PURE__ */ jsx40("span", { className: "pire-pagination-count", children: msg.paginationRange.replace("{from}", from.toLocaleString()).replace("{to}", to.toLocaleString()).replace("{total}", total.toLocaleString()) }),
2486
+ /* @__PURE__ */ jsx40(
2239
2487
  IconButton,
2240
2488
  {
2241
2489
  icon: "chevron-left",
@@ -2246,8 +2494,8 @@ function Pagination({
2246
2494
  onPress: () => onPageChange?.(page - 1)
2247
2495
  }
2248
2496
  ),
2249
- /* @__PURE__ */ jsx39("span", { className: "pire-pagination-count", "aria-live": "polite", children: msg.paginationPageOf.replace("{page}", String(page)).replace("{pages}", String(pages)) }),
2250
- /* @__PURE__ */ jsx39(
2497
+ /* @__PURE__ */ jsx40("span", { className: "pire-pagination-count", "aria-live": "polite", children: msg.paginationPageOf.replace("{page}", String(page)).replace("{pages}", String(pages)) }),
2498
+ /* @__PURE__ */ jsx40(
2251
2499
  IconButton,
2252
2500
  {
2253
2501
  icon: "chevron-right",
@@ -2258,7 +2506,7 @@ function Pagination({
2258
2506
  onPress: () => onPageChange?.(page + 1)
2259
2507
  }
2260
2508
  ),
2261
- onPageSizeChange ? /* @__PURE__ */ jsx39(
2509
+ onPageSizeChange ? /* @__PURE__ */ jsx40(
2262
2510
  Select,
2263
2511
  {
2264
2512
  "aria-label": msg.paginationRowsPerPage,
@@ -2274,7 +2522,7 @@ function Pagination({
2274
2522
  }
2275
2523
 
2276
2524
  // src/components/feedback/InlineMessage.tsx
2277
- import { jsx as jsx40, jsxs as jsxs33 } from "react/jsx-runtime";
2525
+ import { jsx as jsx41, jsxs as jsxs33 } from "react/jsx-runtime";
2278
2526
  var KIND_ICON = {
2279
2527
  info: "info",
2280
2528
  success: "check-circle-2",
@@ -2293,13 +2541,13 @@ function InlineMessage({ kind = "info", title, action, onClose, children, classN
2293
2541
  "aria-live": assertive ? "assertive" : "polite",
2294
2542
  ...rest,
2295
2543
  children: [
2296
- /* @__PURE__ */ jsx40(Icon, { name: KIND_ICON[kind], size: 16, style: { marginTop: 2 } }),
2544
+ /* @__PURE__ */ jsx41(Icon, { name: KIND_ICON[kind], size: 16, style: { marginTop: 2 } }),
2297
2545
  /* @__PURE__ */ jsxs33("div", { style: { flex: 1, display: "flex", flexDirection: "column", gap: "var(--sp-1)" }, children: [
2298
- title ? /* @__PURE__ */ jsx40("span", { className: "pire-msg-title", children: title }) : null,
2299
- children ? /* @__PURE__ */ jsx40("span", { className: "pire-msg-body", children }) : null,
2546
+ title ? /* @__PURE__ */ jsx41("span", { className: "pire-msg-title", children: title }) : null,
2547
+ children ? /* @__PURE__ */ jsx41("span", { className: "pire-msg-body", children }) : null,
2300
2548
  action
2301
2549
  ] }),
2302
- onClose ? /* @__PURE__ */ jsx40(IconButton, { icon: "x", label: msg.inlineMessageDismiss, size: "sm", onPress: onClose }) : null
2550
+ onClose ? /* @__PURE__ */ jsx41(IconButton, { icon: "x", label: msg.inlineMessageDismiss, size: "sm", onPress: onClose }) : null
2303
2551
  ]
2304
2552
  }
2305
2553
  );
@@ -2307,7 +2555,7 @@ function InlineMessage({ kind = "info", title, action, onClose, children, classN
2307
2555
 
2308
2556
  // src/components/feedback/Toast.tsx
2309
2557
  import * as React12 from "react";
2310
- import { jsx as jsx41, jsxs as jsxs34 } from "react/jsx-runtime";
2558
+ import { jsx as jsx42, jsxs as jsxs34 } from "react/jsx-runtime";
2311
2559
  var KIND_ICON2 = {
2312
2560
  info: "info",
2313
2561
  success: "check-circle-2",
@@ -2325,9 +2573,9 @@ function Toast({ kind = "success", onClose, position = "bottom-center", children
2325
2573
  "aria-live": kind === "error" ? "assertive" : "polite",
2326
2574
  ...rest,
2327
2575
  children: [
2328
- /* @__PURE__ */ jsx41(Icon, { name: KIND_ICON2[kind], size: 16 }),
2329
- /* @__PURE__ */ jsx41("span", { style: { flex: 1 }, children }),
2330
- onClose ? /* @__PURE__ */ jsx41(IconButton, { icon: "x", label: msg.toastDismiss, size: "sm", variant: "inverse", onPress: onClose }) : null
2576
+ /* @__PURE__ */ jsx42(Icon, { name: KIND_ICON2[kind], size: 16 }),
2577
+ /* @__PURE__ */ jsx42("span", { style: { flex: 1 }, children }),
2578
+ onClose ? /* @__PURE__ */ jsx42(IconButton, { icon: "x", label: msg.toastDismiss, size: "sm", variant: "inverse", onPress: onClose }) : null
2331
2579
  ]
2332
2580
  }
2333
2581
  );
@@ -2347,7 +2595,7 @@ function ToastProvider({ children, timeout = 6e3 }) {
2347
2595
  const value = React12.useMemo(() => ({ add, close }), [add, close]);
2348
2596
  return /* @__PURE__ */ jsxs34(ToastContext.Provider, { value, children: [
2349
2597
  children,
2350
- /* @__PURE__ */ jsx41("div", { className: "pire-toast-region", role: "region", "aria-label": msg.toastRegionLabel, children: toasts.map((t) => /* @__PURE__ */ jsx41(Toast, { kind: t.kind, onClose: () => close(t.id), style: { position: "static", transform: "none" }, children: t.message }, t.id)) })
2598
+ /* @__PURE__ */ jsx42("div", { className: "pire-toast-region", role: "region", "aria-label": msg.toastRegionLabel, children: toasts.map((t) => /* @__PURE__ */ jsx42(Toast, { kind: t.kind, onClose: () => close(t.id), style: { position: "static", transform: "none" }, children: t.message }, t.id)) })
2351
2599
  ] });
2352
2600
  }
2353
2601
  function useToast() {
@@ -2357,8 +2605,8 @@ function useToast() {
2357
2605
  }
2358
2606
 
2359
2607
  // src/components/data/KpiTile.tsx
2360
- import { Button as AriaButton11 } from "react-aria-components";
2361
- import { Fragment as Fragment3, jsx as jsx42, jsxs as jsxs35 } from "react/jsx-runtime";
2608
+ import { Button as AriaButton12 } from "react-aria-components";
2609
+ import { Fragment as Fragment3, jsx as jsx43, jsxs as jsxs35 } from "react/jsx-runtime";
2362
2610
  function KpiTile({
2363
2611
  label,
2364
2612
  value,
@@ -2376,48 +2624,48 @@ function KpiTile({
2376
2624
  const tone = deltaTone ?? (deltaDirection === "down" ? "negative" : "positive");
2377
2625
  const body = /* @__PURE__ */ jsxs35(Fragment3, { children: [
2378
2626
  /* @__PURE__ */ jsxs35("span", { className: "pire-kpi-label", children: [
2379
- icon ? /* @__PURE__ */ jsx42(Icon, { name: icon, size: 16 }) : null,
2627
+ icon ? /* @__PURE__ */ jsx43(Icon, { name: icon, size: 16 }) : null,
2380
2628
  label
2381
2629
  ] }),
2382
2630
  /* @__PURE__ */ jsxs35("span", { className: "pire-kpi-value", children: [
2383
2631
  value,
2384
- unit ? /* @__PURE__ */ jsx42("span", { className: "pire-kpi-unit", children: unit }) : null
2632
+ unit ? /* @__PURE__ */ jsx43("span", { className: "pire-kpi-unit", children: unit }) : null
2385
2633
  ] }),
2386
2634
  delta ? /* @__PURE__ */ jsxs35("span", { className: "pire-kpi-delta", "data-tone": tone, children: [
2387
- deltaDirection ? /* @__PURE__ */ jsx42(Icon, { name: deltaDirection === "up" ? "trending-up" : "trending-down", size: 12 }) : null,
2635
+ deltaDirection ? /* @__PURE__ */ jsx43(Icon, { name: deltaDirection === "up" ? "trending-up" : "trending-down", size: 12 }) : null,
2388
2636
  delta
2389
2637
  ] }) : null,
2390
- footnote ? /* @__PURE__ */ jsx42("span", { className: "pire-kpi-foot", children: footnote }) : null
2638
+ footnote ? /* @__PURE__ */ jsx43("span", { className: "pire-kpi-foot", children: footnote }) : null
2391
2639
  ] });
2392
2640
  const props = { className: cx("pire-kpi", className), "data-status": status, style };
2393
- return onPress ? /* @__PURE__ */ jsx42(AriaButton11, { ...props, "data-pressable": "true", onPress, children: body }) : /* @__PURE__ */ jsx42("div", { ...props, children: body });
2641
+ return onPress ? /* @__PURE__ */ jsx43(AriaButton12, { ...props, "data-pressable": "true", onPress, children: body }) : /* @__PURE__ */ jsx43("div", { ...props, children: body });
2394
2642
  }
2395
2643
 
2396
2644
  // src/components/data/ObjectHeader.tsx
2397
- import { jsx as jsx43, jsxs as jsxs36 } from "react/jsx-runtime";
2645
+ import { jsx as jsx44, jsxs as jsxs36 } from "react/jsx-runtime";
2398
2646
  function ObjectHeader({ title, subtitle, id, breadcrumb, badge, facts, actions, className, ...rest }) {
2399
2647
  return /* @__PURE__ */ jsxs36("header", { className: cx("pire-objheader", className), ...rest, children: [
2400
2648
  breadcrumb,
2401
2649
  /* @__PURE__ */ jsxs36("div", { className: "pire-objheader-row", children: [
2402
2650
  /* @__PURE__ */ jsxs36("div", { style: { minWidth: 0 }, children: [
2403
- /* @__PURE__ */ jsx43("h1", { className: "pire-objheader-title", children: title }),
2651
+ /* @__PURE__ */ jsx44("h1", { className: "pire-objheader-title", children: title }),
2404
2652
  subtitle || id ? /* @__PURE__ */ jsxs36("div", { className: "pire-objheader-sub", children: [
2405
2653
  subtitle,
2406
- id ? /* @__PURE__ */ jsx43("span", { className: "pire-objheader-id", children: id }) : null
2654
+ id ? /* @__PURE__ */ jsx44("span", { className: "pire-objheader-id", children: id }) : null
2407
2655
  ] }) : null
2408
2656
  ] }),
2409
2657
  badge,
2410
- actions ? /* @__PURE__ */ jsx43("div", { className: "pire-objheader-actions", children: actions }) : null
2658
+ actions ? /* @__PURE__ */ jsx44("div", { className: "pire-objheader-actions", children: actions }) : null
2411
2659
  ] }),
2412
- facts?.length ? /* @__PURE__ */ jsx43("dl", { className: "pire-facts", style: { margin: 0 }, children: facts.map((fact) => /* @__PURE__ */ jsxs36("div", { children: [
2413
- /* @__PURE__ */ jsx43("dt", { className: "pire-fact-label", children: fact.label }),
2414
- /* @__PURE__ */ jsx43("dd", { className: "pire-fact-value", "data-numeric": fact.numeric ? "true" : void 0, style: { margin: 0 }, children: fact.value })
2660
+ facts?.length ? /* @__PURE__ */ jsx44("dl", { className: "pire-facts", style: { margin: 0 }, children: facts.map((fact) => /* @__PURE__ */ jsxs36("div", { children: [
2661
+ /* @__PURE__ */ jsx44("dt", { className: "pire-fact-label", children: fact.label }),
2662
+ /* @__PURE__ */ jsx44("dd", { className: "pire-fact-value", "data-numeric": fact.numeric ? "true" : void 0, style: { margin: 0 }, children: fact.value })
2415
2663
  ] }, fact.label)) }) : null
2416
2664
  ] });
2417
2665
  }
2418
2666
 
2419
2667
  // src/components/data/FilterBar.tsx
2420
- import { jsx as jsx44, jsxs as jsxs37 } from "react/jsx-runtime";
2668
+ import { jsx as jsx45, jsxs as jsxs37 } from "react/jsx-runtime";
2421
2669
  function FilterBar({
2422
2670
  children,
2423
2671
  activeFilters = [],
@@ -2437,21 +2685,21 @@ function FilterBar({
2437
2685
  return /* @__PURE__ */ jsxs37("section", { className: cx("pire-filterbar", className), ...rest, "aria-label": label, children: [
2438
2686
  /* @__PURE__ */ jsxs37("div", { className: "pire-filterbar-controls", children: [
2439
2687
  children,
2440
- onGo ? /* @__PURE__ */ jsx44(Button, { variant: "primary", onPress: onGo, children: go }) : null
2688
+ onGo ? /* @__PURE__ */ jsx45(Button, { variant: "primary", onPress: onGo, children: go }) : null
2441
2689
  ] }),
2442
2690
  activeFilters.length || resultLabel || actions ? /* @__PURE__ */ jsxs37("div", { className: "pire-filterbar-foot", children: [
2443
- activeFilters.map((filter) => /* @__PURE__ */ jsx44(Tag, { onRemove: onRemoveFilter ? () => onRemoveFilter(filter.id) : void 0, children: filter.label }, filter.id)),
2444
- activeFilters.length && onClear ? /* @__PURE__ */ jsx44(Button, { variant: "tertiary", size: "sm", onPress: onClear, children: clearAll }) : null,
2445
- resultLabel ? /* @__PURE__ */ jsx44("span", { className: "pire-filterbar-result", "aria-live": "polite", children: resultLabel }) : null,
2446
- actions ? /* @__PURE__ */ jsx44("div", { className: "pire-filterbar-actions", children: actions }) : null
2691
+ activeFilters.map((filter) => /* @__PURE__ */ jsx45(Tag, { onRemove: onRemoveFilter ? () => onRemoveFilter(filter.id) : void 0, children: filter.label }, filter.id)),
2692
+ activeFilters.length && onClear ? /* @__PURE__ */ jsx45(Button, { variant: "tertiary", size: "sm", onPress: onClear, children: clearAll }) : null,
2693
+ resultLabel ? /* @__PURE__ */ jsx45("span", { className: "pire-filterbar-result", "aria-live": "polite", children: resultLabel }) : null,
2694
+ actions ? /* @__PURE__ */ jsx45("div", { className: "pire-filterbar-actions", children: actions }) : null
2447
2695
  ] }) : null
2448
2696
  ] });
2449
2697
  }
2450
2698
 
2451
2699
  // src/components/data/DescriptionList.tsx
2452
- import { jsx as jsx45, jsxs as jsxs38 } from "react/jsx-runtime";
2700
+ import { jsx as jsx46, jsxs as jsxs38 } from "react/jsx-runtime";
2453
2701
  function DescriptionList({ items, layout = "rows", columns = 3, className, style, ...rest }) {
2454
- return /* @__PURE__ */ jsx45(
2702
+ return /* @__PURE__ */ jsx46(
2455
2703
  "dl",
2456
2704
  {
2457
2705
  className: cx("pire-dl", className),
@@ -2463,20 +2711,20 @@ function DescriptionList({ items, layout = "rows", columns = 3, className, style
2463
2711
  item.label,
2464
2712
  item.hint
2465
2713
  ] }),
2466
- /* @__PURE__ */ jsx45("dd", { className: "pire-dl-value", "data-numeric": item.numeric ? "true" : void 0, children: item.value })
2714
+ /* @__PURE__ */ jsx46("dd", { className: "pire-dl-value", "data-numeric": item.numeric ? "true" : void 0, children: item.value })
2467
2715
  ] }, i))
2468
2716
  }
2469
2717
  );
2470
2718
  }
2471
2719
 
2472
2720
  // src/components/data/Timeline.tsx
2473
- import { jsx as jsx46, jsxs as jsxs39 } from "react/jsx-runtime";
2721
+ import { jsx as jsx47, jsxs as jsxs39 } from "react/jsx-runtime";
2474
2722
  function Timeline({ entries, reverse = false, className, ...rest }) {
2475
2723
  const list = reverse ? [...entries].reverse() : entries;
2476
- return /* @__PURE__ */ jsx46("ol", { className: cx("pire-timeline", className), ...rest, children: list.map((entry, i) => /* @__PURE__ */ jsxs39("li", { className: "pire-timeline-item", children: [
2477
- /* @__PURE__ */ jsx46("span", { className: "pire-timeline-time", children: entry.time }),
2478
- /* @__PURE__ */ jsx46("span", { className: "pire-timeline-text", children: entry.event }),
2479
- entry.actor ? /* @__PURE__ */ jsx46("span", { className: "pire-timeline-actor", children: entry.actor }) : null
2724
+ return /* @__PURE__ */ jsx47("ol", { className: cx("pire-timeline", className), ...rest, children: list.map((entry, i) => /* @__PURE__ */ jsxs39("li", { className: "pire-timeline-item", children: [
2725
+ /* @__PURE__ */ jsx47("span", { className: "pire-timeline-time", children: entry.time }),
2726
+ /* @__PURE__ */ jsx47("span", { className: "pire-timeline-text", children: entry.event }),
2727
+ entry.actor ? /* @__PURE__ */ jsx47("span", { className: "pire-timeline-actor", children: entry.actor }) : null
2480
2728
  ] }, entry.id ?? i)) });
2481
2729
  }
2482
2730
 
@@ -2559,7 +2807,7 @@ function alignToCategories(series, categoryCount) {
2559
2807
  }
2560
2808
 
2561
2809
  // src/components/data/ChartFrame.tsx
2562
- import { jsx as jsx47, jsxs as jsxs40 } from "react/jsx-runtime";
2810
+ import { jsx as jsx48, jsxs as jsxs40 } from "react/jsx-runtime";
2563
2811
  function seriesLegend(series) {
2564
2812
  return series.map((one, index) => ({
2565
2813
  key: one.id,
@@ -2584,27 +2832,27 @@ function ChartFrame({
2584
2832
  const msg = usePireMessages();
2585
2833
  return /* @__PURE__ */ jsxs40("figure", { className: cx("pire-chart", className), style, children: [
2586
2834
  title || description ? /* @__PURE__ */ jsxs40("figcaption", { className: "pire-chart-head", children: [
2587
- title ? /* @__PURE__ */ jsx47("span", { className: "pire-chart-title", children: title }) : null,
2588
- description ? /* @__PURE__ */ jsx47("span", { className: "pire-chart-desc", children: description }) : null
2835
+ title ? /* @__PURE__ */ jsx48("span", { className: "pire-chart-title", children: title }) : null,
2836
+ description ? /* @__PURE__ */ jsx48("span", { className: "pire-chart-desc", children: description }) : null
2589
2837
  ] }) : null,
2590
- legend && legend.length > 1 ? /* @__PURE__ */ jsx47("ul", { className: "pire-chart-legend", children: legend.map((item) => /* @__PURE__ */ jsxs40("li", { className: "pire-chart-legend-item", children: [
2591
- /* @__PURE__ */ jsx47("span", { className: "pire-chart-swatch", style: { background: item.color } }),
2838
+ legend && legend.length > 1 ? /* @__PURE__ */ jsx48("ul", { className: "pire-chart-legend", children: legend.map((item) => /* @__PURE__ */ jsxs40("li", { className: "pire-chart-legend-item", children: [
2839
+ /* @__PURE__ */ jsx48("span", { className: "pire-chart-swatch", style: { background: item.color } }),
2592
2840
  item.label
2593
2841
  ] }, item.key)) }) : null,
2594
- /* @__PURE__ */ jsx47("div", { className: "pire-chart-plot", "aria-hidden": "true", children }),
2595
- /* @__PURE__ */ jsx47("div", { className: showDataTable ? "pire-chart-table" : "pire-sr-only", children: /* @__PURE__ */ jsxs40("table", { children: [
2596
- /* @__PURE__ */ jsx47("caption", { children: label }),
2597
- /* @__PURE__ */ jsx47("thead", { children: /* @__PURE__ */ jsxs40("tr", { children: [
2598
- /* @__PURE__ */ jsx47("th", { scope: "col", children: msg.chartCategoryHeader }),
2599
- series.map((one) => /* @__PURE__ */ jsx47("th", { scope: "col", children: one.label }, one.id))
2842
+ /* @__PURE__ */ jsx48("div", { className: "pire-chart-plot", "aria-hidden": "true", children }),
2843
+ /* @__PURE__ */ jsx48("div", { className: showDataTable ? "pire-chart-table" : "pire-sr-only", children: /* @__PURE__ */ jsxs40("table", { children: [
2844
+ /* @__PURE__ */ jsx48("caption", { children: label }),
2845
+ /* @__PURE__ */ jsx48("thead", { children: /* @__PURE__ */ jsxs40("tr", { children: [
2846
+ /* @__PURE__ */ jsx48("th", { scope: "col", children: msg.chartCategoryHeader }),
2847
+ series.map((one) => /* @__PURE__ */ jsx48("th", { scope: "col", children: one.label }, one.id))
2600
2848
  ] }) }),
2601
- /* @__PURE__ */ jsx47("tbody", { children: categories.map((category, categoryIndex) => (
2849
+ /* @__PURE__ */ jsx48("tbody", { children: categories.map((category, categoryIndex) => (
2602
2850
  // biome-ignore lint/suspicious/noArrayIndexKey: categories are positional and repeat legitimately (two quarters both labelled "Q1").
2603
2851
  /* @__PURE__ */ jsxs40("tr", { children: [
2604
- /* @__PURE__ */ jsx47("th", { scope: "row", children: category }),
2852
+ /* @__PURE__ */ jsx48("th", { scope: "row", children: category }),
2605
2853
  series.map((one) => {
2606
2854
  const value = one.values[categoryIndex];
2607
- return /* @__PURE__ */ jsx47("td", { children: value == null ? msg.chartNoValue : formatValue(value) }, one.id);
2855
+ return /* @__PURE__ */ jsx48("td", { children: value == null ? msg.chartNoValue : formatValue(value) }, one.id);
2608
2856
  })
2609
2857
  ] }, categoryIndex)
2610
2858
  )) })
@@ -2613,7 +2861,7 @@ function ChartFrame({
2613
2861
  }
2614
2862
 
2615
2863
  // src/components/data/BarChart.tsx
2616
- import { jsx as jsx48, jsxs as jsxs41 } from "react/jsx-runtime";
2864
+ import { jsx as jsx49, jsxs as jsxs41 } from "react/jsx-runtime";
2617
2865
  function BarChart({
2618
2866
  categories,
2619
2867
  series: rawSeries,
@@ -2645,7 +2893,7 @@ function BarChart({
2645
2893
  const value = series[0].values[categoryIndex];
2646
2894
  return value == null ? msg.chartNoValue : formatValue(value);
2647
2895
  };
2648
- return /* @__PURE__ */ jsx48(
2896
+ return /* @__PURE__ */ jsx49(
2649
2897
  ChartFrame,
2650
2898
  {
2651
2899
  label,
@@ -2658,7 +2906,7 @@ function BarChart({
2658
2906
  showDataTable,
2659
2907
  className,
2660
2908
  style,
2661
- children: !hasData ? /* @__PURE__ */ jsx48("div", { className: "pire-chart-empty", children: emptyState ?? msg.chartEmpty }) : /* @__PURE__ */ jsx48(
2909
+ children: !hasData ? /* @__PURE__ */ jsx49("div", { className: "pire-chart-empty", children: emptyState ?? msg.chartEmpty }) : /* @__PURE__ */ jsx49(
2662
2910
  "div",
2663
2911
  {
2664
2912
  className: "pire-chart-bars",
@@ -2668,8 +2916,8 @@ function BarChart({
2668
2916
  children: categories.map((category, categoryIndex) => (
2669
2917
  // biome-ignore lint/suspicious/noArrayIndexKey: categories are positional and repeat legitimately (two quarters both labelled "Q1").
2670
2918
  /* @__PURE__ */ jsxs41("div", { className: "pire-chart-group", children: [
2671
- /* @__PURE__ */ jsx48("span", { className: "pire-chart-cat", children: category }),
2672
- /* @__PURE__ */ jsx48("div", { className: "pire-chart-track", children: series.map((one, seriesIndex) => {
2919
+ /* @__PURE__ */ jsx49("span", { className: "pire-chart-cat", children: category }),
2920
+ /* @__PURE__ */ jsx49("div", { className: "pire-chart-track", children: series.map((one, seriesIndex) => {
2673
2921
  const value = one.values[categoryIndex];
2674
2922
  if (value == null) return null;
2675
2923
  return /* @__PURE__ */ jsxs41(
@@ -2681,7 +2929,7 @@ function BarChart({
2681
2929
  "--pire-bar-color": seriesColor(one, seriesIndex)
2682
2930
  },
2683
2931
  children: [
2684
- withValues && orientation === "vertical" ? /* @__PURE__ */ jsx48("span", { className: "pire-chart-barval", children: formatValue(value) }) : null,
2932
+ withValues && orientation === "vertical" ? /* @__PURE__ */ jsx49("span", { className: "pire-chart-barval", children: formatValue(value) }) : null,
2685
2933
  /* @__PURE__ */ jsxs41("span", { className: "pire-chart-tip", role: "presentation", children: [
2686
2934
  series.length > 1 ? `${one.label}: ` : "",
2687
2935
  formatValue(value)
@@ -2691,7 +2939,7 @@ function BarChart({
2691
2939
  one.id
2692
2940
  );
2693
2941
  }) }),
2694
- withValues && orientation === "horizontal" ? /* @__PURE__ */ jsx48("span", { className: "pire-chart-val", children: horizontalLabelFor(categoryIndex) }) : null
2942
+ withValues && orientation === "horizontal" ? /* @__PURE__ */ jsx49("span", { className: "pire-chart-val", children: horizontalLabelFor(categoryIndex) }) : null
2695
2943
  ] }, categoryIndex)
2696
2944
  ))
2697
2945
  }
@@ -2702,7 +2950,7 @@ function BarChart({
2702
2950
 
2703
2951
  // src/components/data/LineChart.tsx
2704
2952
  import * as React13 from "react";
2705
- import { jsx as jsx49, jsxs as jsxs42 } from "react/jsx-runtime";
2953
+ import { jsx as jsx50, jsxs as jsxs42 } from "react/jsx-runtime";
2706
2954
  var PLOT_INSET = { top: 10, right: 14, bottom: 24, left: 58 };
2707
2955
  var MARKER_LIMIT = 20;
2708
2956
  var useIsomorphicLayoutEffect2 = typeof window === "undefined" ? React13.useEffect : React13.useLayoutEffect;
@@ -2769,7 +3017,7 @@ function LineChart({
2769
3017
  return `M${xAt(present[0].index)} ${baseline} L${line} L${xAt(last.index)} ${baseline} Z`;
2770
3018
  };
2771
3019
  const labelEvery = Math.max(1, Math.ceil(categories.length / Math.max(2, Math.floor(innerWidth / 64))));
2772
- return /* @__PURE__ */ jsx49(
3020
+ return /* @__PURE__ */ jsx50(
2773
3021
  ChartFrame,
2774
3022
  {
2775
3023
  label,
@@ -2782,7 +3030,7 @@ function LineChart({
2782
3030
  showDataTable,
2783
3031
  className,
2784
3032
  style,
2785
- children: !hasData ? /* @__PURE__ */ jsx49("div", { className: "pire-chart-empty", children: emptyState ?? msg.chartEmpty }) : /* @__PURE__ */ jsxs42("div", { className: "pire-chart-lines", ref: plotRef, style: { height }, children: [
3033
+ children: !hasData ? /* @__PURE__ */ jsx50("div", { className: "pire-chart-empty", children: emptyState ?? msg.chartEmpty }) : /* @__PURE__ */ jsxs42("div", { className: "pire-chart-lines", ref: plotRef, style: { height }, children: [
2786
3034
  width > 0 ? /* @__PURE__ */ jsxs42(
2787
3035
  "svg",
2788
3036
  {
@@ -2792,7 +3040,7 @@ function LineChart({
2792
3040
  "aria-hidden": "true",
2793
3041
  focusable: "false",
2794
3042
  children: [
2795
- /* @__PURE__ */ jsx49("g", { className: "pire-chart-grid", children: scale.ticks.map((tick) => /* @__PURE__ */ jsx49(
3043
+ /* @__PURE__ */ jsx50("g", { className: "pire-chart-grid", children: scale.ticks.map((tick) => /* @__PURE__ */ jsx50(
2796
3044
  "line",
2797
3045
  {
2798
3046
  x1: PLOT_INSET.left,
@@ -2803,7 +3051,7 @@ function LineChart({
2803
3051
  tick
2804
3052
  )) }),
2805
3053
  /* @__PURE__ */ jsxs42("g", { className: "pire-chart-tick", children: [
2806
- scale.ticks.map((tick) => /* @__PURE__ */ jsx49(
3054
+ scale.ticks.map((tick) => /* @__PURE__ */ jsx50(
2807
3055
  "text",
2808
3056
  {
2809
3057
  x: PLOT_INSET.left - 8,
@@ -2816,10 +3064,10 @@ function LineChart({
2816
3064
  )),
2817
3065
  categories.map((category, index) => index % labelEvery === 0 ? (
2818
3066
  // biome-ignore lint/suspicious/noArrayIndexKey: categories are positional and repeat legitimately (two quarters both labelled "Q1").
2819
- /* @__PURE__ */ jsx49("text", { x: xAt(index), y: height - 6, textAnchor: "middle", children: category }, index)
3067
+ /* @__PURE__ */ jsx50("text", { x: xAt(index), y: height - 6, textAnchor: "middle", children: category }, index)
2820
3068
  ) : null)
2821
3069
  ] }),
2822
- showArea && series[0] ? /* @__PURE__ */ jsx49(
3070
+ showArea && series[0] ? /* @__PURE__ */ jsx50(
2823
3071
  "path",
2824
3072
  {
2825
3073
  d: areaFor(series[0].values),
@@ -2827,10 +3075,10 @@ function LineChart({
2827
3075
  style: { fill: seriesColor(series[0], 0) }
2828
3076
  }
2829
3077
  ) : null,
2830
- /* @__PURE__ */ jsx49("g", { className: "pire-chart-line", fill: "none", children: series.map((one, index) => /* @__PURE__ */ jsx49("path", { d: pathFor(one.values), stroke: seriesColor(one, index) }, one.id)) }),
2831
- withMarkers ? /* @__PURE__ */ jsx49("g", { className: "pire-chart-marker", children: series.map((one, seriesIndex) => one.values.map((value, index) => value == null ? null : (
3078
+ /* @__PURE__ */ jsx50("g", { className: "pire-chart-line", fill: "none", children: series.map((one, index) => /* @__PURE__ */ jsx50("path", { d: pathFor(one.values), stroke: seriesColor(one, index) }, one.id)) }),
3079
+ withMarkers ? /* @__PURE__ */ jsx50("g", { className: "pire-chart-marker", children: series.map((one, seriesIndex) => one.values.map((value, index) => value == null ? null : (
2832
3080
  // biome-ignore lint/suspicious/noArrayIndexKey: a series is positional — the index is the point's identity, and category labels repeat.
2833
- /* @__PURE__ */ jsx49(
3081
+ /* @__PURE__ */ jsx50(
2834
3082
  "circle",
2835
3083
  {
2836
3084
  cx: xAt(index),
@@ -2844,15 +3092,15 @@ function LineChart({
2844
3092
  ]
2845
3093
  }
2846
3094
  ) : null,
2847
- /* @__PURE__ */ jsx49(
3095
+ /* @__PURE__ */ jsx50(
2848
3096
  "div",
2849
3097
  {
2850
3098
  className: "pire-chart-hover",
2851
3099
  style: { inset: `${PLOT_INSET.top}px ${PLOT_INSET.right}px ${PLOT_INSET.bottom}px ${PLOT_INSET.left}px` },
2852
3100
  children: categories.map((category, categoryIndex) => (
2853
3101
  // biome-ignore lint/suspicious/noArrayIndexKey: categories are positional and repeat legitimately (two quarters both labelled "Q1").
2854
- /* @__PURE__ */ jsx49("div", { className: "pire-chart-band", children: /* @__PURE__ */ jsxs42("span", { className: "pire-chart-tip", role: "presentation", children: [
2855
- /* @__PURE__ */ jsx49("strong", { children: category }),
3102
+ /* @__PURE__ */ jsx50("div", { className: "pire-chart-band", children: /* @__PURE__ */ jsxs42("span", { className: "pire-chart-tip", role: "presentation", children: [
3103
+ /* @__PURE__ */ jsx50("strong", { children: category }),
2856
3104
  series.map((one) => {
2857
3105
  const value = one.values[categoryIndex];
2858
3106
  return /* @__PURE__ */ jsxs42("span", { className: "pire-chart-tip-row", children: [
@@ -2872,7 +3120,7 @@ function LineChart({
2872
3120
 
2873
3121
  // src/components/data/DonutChart.tsx
2874
3122
  import * as React14 from "react";
2875
- import { jsx as jsx50, jsxs as jsxs43 } from "react/jsx-runtime";
3123
+ import { jsx as jsx51, jsxs as jsxs43 } from "react/jsx-runtime";
2876
3124
  var SEGMENT_GAP_DEGREES = 1.5;
2877
3125
  function DonutChart({
2878
3126
  categories,
@@ -2909,7 +3157,7 @@ function DonutChart({
2909
3157
  }));
2910
3158
  const hovered = hoveredIndex == null ? null : segments.find((segment) => segment.index === hoveredIndex) ?? null;
2911
3159
  let arcStart = 0;
2912
- return /* @__PURE__ */ jsx50(
3160
+ return /* @__PURE__ */ jsx51(
2913
3161
  ChartFrame,
2914
3162
  {
2915
3163
  label,
@@ -2922,8 +3170,8 @@ function DonutChart({
2922
3170
  showDataTable,
2923
3171
  className,
2924
3172
  style,
2925
- children: !hasData ? /* @__PURE__ */ jsx50("div", { className: "pire-chart-empty", children: emptyState ?? msg.chartEmpty }) : /* @__PURE__ */ jsxs43("div", { className: "pire-chart-donut", style: { height: size }, children: [
2926
- /* @__PURE__ */ jsx50(
3173
+ children: !hasData ? /* @__PURE__ */ jsx51("div", { className: "pire-chart-empty", children: emptyState ?? msg.chartEmpty }) : /* @__PURE__ */ jsxs43("div", { className: "pire-chart-donut", style: { height: size }, children: [
3174
+ /* @__PURE__ */ jsx51(
2927
3175
  "svg",
2928
3176
  {
2929
3177
  width: size,
@@ -2931,13 +3179,13 @@ function DonutChart({
2931
3179
  "aria-hidden": "true",
2932
3180
  focusable: "false",
2933
3181
  onMouseLeave: () => setHoveredIndex(null),
2934
- children: /* @__PURE__ */ jsx50("g", { transform: `rotate(-90 ${size / 2} ${size / 2})`, children: segments.map((segment) => {
3182
+ children: /* @__PURE__ */ jsx51("g", { transform: `rotate(-90 ${size / 2} ${size / 2})`, children: segments.map((segment) => {
2935
3183
  const arcLength = segment.value / total * circumference;
2936
3184
  const offset = arcStart;
2937
3185
  arcStart += arcLength;
2938
3186
  return (
2939
3187
  // biome-ignore lint/a11y/noStaticElementInteractions: pointer-only enhancement inside an aria-hidden plot — the arcs carry nothing the data table does not, so there is nothing here for a keyboard to reach.
2940
- /* @__PURE__ */ jsx50(
3188
+ /* @__PURE__ */ jsx51(
2941
3189
  "circle",
2942
3190
  {
2943
3191
  className: "pire-chart-arc",
@@ -2958,8 +3206,8 @@ function DonutChart({
2958
3206
  }
2959
3207
  ),
2960
3208
  /* @__PURE__ */ jsxs43("div", { className: "pire-chart-donut-center", style: { width: size - thickness * 2 - 8 }, children: [
2961
- /* @__PURE__ */ jsx50("span", { className: "pire-chart-donut-value", children: hovered ? formatValue(hovered.value) : centerLabel ?? formatValue(total) }),
2962
- /* @__PURE__ */ jsx50("span", { className: "pire-chart-donut-caption", children: hovered ? hovered.category : centerCaption })
3209
+ /* @__PURE__ */ jsx51("span", { className: "pire-chart-donut-value", children: hovered ? formatValue(hovered.value) : centerLabel ?? formatValue(total) }),
3210
+ /* @__PURE__ */ jsx51("span", { className: "pire-chart-donut-caption", children: hovered ? hovered.category : centerCaption })
2963
3211
  ] })
2964
3212
  ] })
2965
3213
  }
@@ -2970,15 +3218,15 @@ function colorForSegment(index) {
2970
3218
  }
2971
3219
 
2972
3220
  // src/components/data/LinkList.tsx
2973
- import { Button as AriaButton12 } from "react-aria-components";
2974
- import { jsx as jsx51, jsxs as jsxs44 } from "react/jsx-runtime";
3221
+ import { Button as AriaButton13 } from "react-aria-components";
3222
+ import { jsx as jsx52, jsxs as jsxs44 } from "react/jsx-runtime";
2975
3223
  function LinkList({ items, onSelect, emphasis = "key", className, ...rest }) {
2976
- return /* @__PURE__ */ jsx51("div", { className: cx("pire-linklist", className), role: "list", "data-emphasis": emphasis, ...rest, children: items.map((item) => {
2977
- const keySlot = item.key ? /* @__PURE__ */ jsx51("span", { className: "pire-linklist-key", children: item.key }) : null;
2978
- const textSlot = item.text ? /* @__PURE__ */ jsx51("span", { className: "pire-linklist-text", children: item.text }) : null;
3224
+ return /* @__PURE__ */ jsx52("div", { className: cx("pire-linklist", className), role: "list", "data-emphasis": emphasis, ...rest, children: items.map((item) => {
3225
+ const keySlot = item.key ? /* @__PURE__ */ jsx52("span", { className: "pire-linklist-key", children: item.key }) : null;
3226
+ const textSlot = item.text ? /* @__PURE__ */ jsx52("span", { className: "pire-linklist-text", children: item.text }) : null;
2979
3227
  const [first, second] = emphasis === "text" ? [textSlot, keySlot] : [keySlot, textSlot];
2980
- return /* @__PURE__ */ jsx51("div", { role: "listitem", className: "pire-linklist-row", children: /* @__PURE__ */ jsxs44(AriaButton12, { className: "pire-linklist-item", onPress: () => onSelect?.(item.id), children: [
2981
- item.icon ? /* @__PURE__ */ jsx51(Icon, { name: item.icon, size: 16, style: { color: "var(--text-secondary)" } }) : null,
3228
+ return /* @__PURE__ */ jsx52("div", { role: "listitem", className: "pire-linklist-row", children: /* @__PURE__ */ jsxs44(AriaButton13, { className: "pire-linklist-item", onPress: () => onSelect?.(item.id), children: [
3229
+ item.icon ? /* @__PURE__ */ jsx52(Icon, { name: item.icon, size: 16, style: { color: "var(--text-secondary)" } }) : null,
2982
3230
  first,
2983
3231
  second,
2984
3232
  item.trailing
@@ -2987,7 +3235,7 @@ function LinkList({ items, onSelect, emphasis = "key", className, ...rest }) {
2987
3235
  }
2988
3236
 
2989
3237
  // src/components/layout/PageBand.tsx
2990
- import { jsx as jsx52 } from "react/jsx-runtime";
3238
+ import { jsx as jsx53 } from "react/jsx-runtime";
2991
3239
  function PageBand({
2992
3240
  surface = "card",
2993
3241
  hasBorder = true,
@@ -2995,7 +3243,7 @@ function PageBand({
2995
3243
  className,
2996
3244
  ...rest
2997
3245
  }) {
2998
- return /* @__PURE__ */ jsx52(
3246
+ return /* @__PURE__ */ jsx53(
2999
3247
  "div",
3000
3248
  {
3001
3249
  className: cx("pire-pageband", className),
@@ -3008,29 +3256,29 @@ function PageBand({
3008
3256
  }
3009
3257
 
3010
3258
  // src/components/layout/PageHeader.tsx
3011
- import { jsx as jsx53, jsxs as jsxs45 } from "react/jsx-runtime";
3259
+ import { jsx as jsx54, jsxs as jsxs45 } from "react/jsx-runtime";
3012
3260
  function PageHeader({ title, subtitle, actions, className, ...rest }) {
3013
3261
  return /* @__PURE__ */ jsxs45("header", { className: cx("pire-pageheader", className), ...rest, children: [
3014
3262
  /* @__PURE__ */ jsxs45("div", { style: { minWidth: 0 }, children: [
3015
- /* @__PURE__ */ jsx53("h1", { className: "pire-pageheader-title", children: title }),
3016
- subtitle ? /* @__PURE__ */ jsx53("p", { className: "pire-pageheader-sub", children: subtitle }) : null
3263
+ /* @__PURE__ */ jsx54("h1", { className: "pire-pageheader-title", children: title }),
3264
+ subtitle ? /* @__PURE__ */ jsx54("p", { className: "pire-pageheader-sub", children: subtitle }) : null
3017
3265
  ] }),
3018
- actions ? /* @__PURE__ */ jsx53("div", { className: "pire-pageheader-actions", children: actions }) : null
3266
+ actions ? /* @__PURE__ */ jsx54("div", { className: "pire-pageheader-actions", children: actions }) : null
3019
3267
  ] });
3020
3268
  }
3021
3269
 
3022
3270
  // src/components/layout/SectionHeader.tsx
3023
- import { jsx as jsx54, jsxs as jsxs46 } from "react/jsx-runtime";
3271
+ import { jsx as jsx55, jsxs as jsxs46 } from "react/jsx-runtime";
3024
3272
  function SectionHeader({ title, meta, actions, className, ...rest }) {
3025
3273
  return /* @__PURE__ */ jsxs46("div", { className: cx("pire-sectionhead", className), ...rest, children: [
3026
- /* @__PURE__ */ jsx54("span", { className: "pire-eyebrow", children: title }),
3027
- meta ? /* @__PURE__ */ jsx54("span", { style: { font: "var(--type-caption)", color: "var(--text-tertiary)" }, children: meta }) : null,
3028
- actions ? /* @__PURE__ */ jsx54("div", { className: "pire-sectionhead-actions", children: actions }) : null
3274
+ /* @__PURE__ */ jsx55("span", { className: "pire-eyebrow", children: title }),
3275
+ meta ? /* @__PURE__ */ jsx55("span", { style: { font: "var(--type-caption)", color: "var(--text-tertiary)" }, children: meta }) : null,
3276
+ actions ? /* @__PURE__ */ jsx55("div", { className: "pire-sectionhead-actions", children: actions }) : null
3029
3277
  ] });
3030
3278
  }
3031
3279
 
3032
3280
  // src/components/layout/SelectionBar.tsx
3033
- import { jsx as jsx55, jsxs as jsxs47 } from "react/jsx-runtime";
3281
+ import { jsx as jsx56, jsxs as jsxs47 } from "react/jsx-runtime";
3034
3282
  function SelectionBar({ count, noun = "record", children, actions, className, ...rest }) {
3035
3283
  if (!count) return null;
3036
3284
  return /* @__PURE__ */ jsxs47("div", { className: cx("pire-selectionbar", className), role: "status", "aria-live": "polite", ...rest, children: [
@@ -3041,23 +3289,23 @@ function SelectionBar({ count, noun = "record", children, actions, className, ..
3041
3289
  count === 1 ? "" : "s",
3042
3290
  " selected"
3043
3291
  ] }),
3044
- children ? /* @__PURE__ */ jsx55("span", { style: { color: "var(--text-secondary)", font: "var(--type-caption)" }, children }) : null,
3045
- actions ? /* @__PURE__ */ jsx55("div", { className: "pire-selectionbar-actions", children: actions }) : null
3292
+ children ? /* @__PURE__ */ jsx56("span", { style: { color: "var(--text-secondary)", font: "var(--type-caption)" }, children }) : null,
3293
+ actions ? /* @__PURE__ */ jsx56("div", { className: "pire-selectionbar-actions", children: actions }) : null
3046
3294
  ] });
3047
3295
  }
3048
3296
 
3049
3297
  // src/components/layout/FooterBar.tsx
3050
- import { jsx as jsx56, jsxs as jsxs48 } from "react/jsx-runtime";
3298
+ import { jsx as jsx57, jsxs as jsxs48 } from "react/jsx-runtime";
3051
3299
  function FooterBar({ note, actions, children, className, ...rest }) {
3052
3300
  return /* @__PURE__ */ jsxs48("footer", { className: cx("pire-footerbar", className), ...rest, children: [
3053
- note ? /* @__PURE__ */ jsx56("span", { className: "pire-footerbar-note", children: note }) : null,
3301
+ note ? /* @__PURE__ */ jsx57("span", { className: "pire-footerbar-note", children: note }) : null,
3054
3302
  children,
3055
- actions ? /* @__PURE__ */ jsx56("div", { className: "pire-footerbar-actions", children: actions }) : null
3303
+ actions ? /* @__PURE__ */ jsx57("div", { className: "pire-footerbar-actions", children: actions }) : null
3056
3304
  ] });
3057
3305
  }
3058
3306
 
3059
3307
  // src/components/patterns/ConfirmDialog.tsx
3060
- import { Fragment as Fragment4, jsx as jsx57, jsxs as jsxs49 } from "react/jsx-runtime";
3308
+ import { Fragment as Fragment4, jsx as jsx58, jsxs as jsxs49 } from "react/jsx-runtime";
3061
3309
  function ConfirmDialog({
3062
3310
  isOpen,
3063
3311
  title,
@@ -3082,24 +3330,167 @@ function ConfirmDialog({
3082
3330
  isDismissable: !isBusy,
3083
3331
  showClose: false,
3084
3332
  footer: /* @__PURE__ */ jsxs49(Fragment4, { children: [
3085
- /* @__PURE__ */ jsx57(Button, { variant: "tertiary", isDisabled: isBusy, onPress: onCancel, children: cancelLabel }),
3086
- /* @__PURE__ */ jsx57(Button, { variant: tone === "danger" ? "danger" : "primary", isDisabled: isBusy, onPress: onConfirm, children: isBusy ? "Working\u2026" : confirmLabel })
3333
+ /* @__PURE__ */ jsx58(Button, { variant: "tertiary", isDisabled: isBusy, onPress: onCancel, children: cancelLabel }),
3334
+ /* @__PURE__ */ jsx58(Button, { variant: tone === "danger" ? "danger" : "primary", isDisabled: isBusy, onPress: onConfirm, children: isBusy ? "Working\u2026" : confirmLabel })
3087
3335
  ] }),
3088
3336
  children: [
3089
- consequence ? /* @__PURE__ */ jsx57(InlineMessage, { kind: tone === "danger" ? "error" : "warning", style: { marginBottom: children ? "var(--sp-3)" : 0 }, children: consequence }) : null,
3337
+ consequence ? /* @__PURE__ */ jsx58(InlineMessage, { kind: tone === "danger" ? "error" : "warning", style: { marginBottom: children ? "var(--sp-3)" : 0 }, children: consequence }) : null,
3090
3338
  children
3091
3339
  ]
3092
3340
  }
3093
3341
  );
3094
3342
  }
3095
3343
 
3344
+ // src/components/patterns/CommandPalette.tsx
3345
+ import * as React15 from "react";
3346
+ import {
3347
+ Autocomplete,
3348
+ ModalOverlay as ModalOverlay2,
3349
+ Modal as Modal2,
3350
+ Dialog as AriaDialog4,
3351
+ SearchField,
3352
+ Input as AriaInput5,
3353
+ Menu as AriaMenu2,
3354
+ MenuSection as AriaMenuSection2,
3355
+ Header as Header2,
3356
+ useFilter
3357
+ } from "react-aria-components";
3358
+ import { Fragment as Fragment5, jsx as jsx59, jsxs as jsxs50 } from "react/jsx-runtime";
3359
+ var RESULTS_SECTION_KEY = "__pire_results__";
3360
+ var searchableText = (item) => [item.label, item.description, item.keywords].filter(Boolean).join(" ");
3361
+ function CommandPalette({
3362
+ isOpen,
3363
+ onOpenChange,
3364
+ groups = [],
3365
+ resultsGroup,
3366
+ onAction,
3367
+ onSearch,
3368
+ isLoading,
3369
+ emptyLabel,
3370
+ loadingLabel,
3371
+ placeholder,
3372
+ footer,
3373
+ showFooter = true,
3374
+ "aria-label": ariaLabel,
3375
+ className,
3376
+ style
3377
+ }) {
3378
+ const msg = usePireMessages();
3379
+ const [query, setQuery] = React15.useState("");
3380
+ const { contains } = useFilter({ sensitivity: "base" });
3381
+ React15.useEffect(() => {
3382
+ if (isOpen) setQuery("");
3383
+ }, [isOpen]);
3384
+ const searchableById = React15.useMemo(() => {
3385
+ const byId = /* @__PURE__ */ new Map();
3386
+ for (const group of groups) for (const item of group.items) byId.set(item.id, searchableText(item));
3387
+ return byId;
3388
+ }, [groups]);
3389
+ const filter = React15.useCallback((textValue, inputValue, node) => {
3390
+ if (node.parentKey === RESULTS_SECTION_KEY) return true;
3391
+ return contains(searchableById.get(String(node.key)) ?? textValue, inputValue);
3392
+ }, [contains, searchableById]);
3393
+ const handleInputChange = (value) => {
3394
+ setQuery(value);
3395
+ onSearch?.(value);
3396
+ };
3397
+ const sections = [...groups, ...resultsGroup ? [{ ...resultsGroup, id: RESULTS_SECTION_KEY }] : []];
3398
+ const status = isLoading ? loadingLabel ?? msg.commandPaletteLoading : emptyLabel ?? msg.commandPaletteEmpty;
3399
+ return /* @__PURE__ */ jsx59(
3400
+ ModalOverlay2,
3401
+ {
3402
+ className: "pire-cp-overlay",
3403
+ isOpen,
3404
+ isDismissable: true,
3405
+ onOpenChange: (open) => {
3406
+ if (!open) onOpenChange?.(false);
3407
+ },
3408
+ children: /* @__PURE__ */ jsx59(Modal2, { className: cx("pire-cp-modal", className), style, children: /* @__PURE__ */ jsxs50(AriaDialog4, { className: "pire-cp-dialog", "aria-label": ariaLabel ?? msg.commandPaletteLabel, children: [
3409
+ /* @__PURE__ */ jsxs50(Autocomplete, { filter, inputValue: query, onInputChange: handleInputChange, children: [
3410
+ /* @__PURE__ */ jsxs50(SearchField, { className: "pire-cp-search", "aria-label": msg.commandPaletteSearchLabel, children: [
3411
+ /* @__PURE__ */ jsx59(Icon, { name: "search", size: 18, className: "pire-cp-search-icon" }),
3412
+ /* @__PURE__ */ jsx59(
3413
+ AriaInput5,
3414
+ {
3415
+ className: "pire-cp-input",
3416
+ autoFocus: true,
3417
+ placeholder: placeholder ?? msg.commandPalettePlaceholder
3418
+ }
3419
+ )
3420
+ ] }),
3421
+ isLoading ? /* @__PURE__ */ jsx59("div", { className: "pire-cp-loading", role: "status", "aria-live": "polite", children: loadingLabel ?? msg.commandPaletteLoading }) : null,
3422
+ /* @__PURE__ */ jsx59(
3423
+ AriaMenu2,
3424
+ {
3425
+ className: "pire-cp-list",
3426
+ onAction: (key) => onAction?.(String(key)),
3427
+ renderEmptyState: () => /* @__PURE__ */ jsx59("div", { className: "pire-cp-status", children: status }),
3428
+ children: sections.map((section) => /* @__PURE__ */ jsxs50(AriaMenuSection2, { id: section.id, className: "pire-cp-section", children: [
3429
+ section.label ? /* @__PURE__ */ jsx59(Header2, { className: "pire-cp-section-title", children: section.label }) : null,
3430
+ section.items.map((item) => /* @__PURE__ */ jsx59(
3431
+ MenuItem,
3432
+ {
3433
+ id: item.id,
3434
+ textValue: item.label,
3435
+ icon: item.icon,
3436
+ description: item.description,
3437
+ shortcut: item.shortcut,
3438
+ isDisabled: item.isDisabled,
3439
+ children: item.label
3440
+ },
3441
+ item.id
3442
+ ))
3443
+ ] }, section.id))
3444
+ }
3445
+ )
3446
+ ] }),
3447
+ showFooter ? (
3448
+ // aria-hidden: the glyphs are a sighted affordance for discovering the keys. A screen
3449
+ // reader already announces the listbox semantics that make those keys work, so reading
3450
+ // "up arrow down arrow navigate" out loud is noise on every open.
3451
+ /* @__PURE__ */ jsx59("div", { className: "pire-cp-foot", "aria-hidden": "true", children: footer ?? /* @__PURE__ */ jsxs50(Fragment5, { children: [
3452
+ /* @__PURE__ */ jsxs50("span", { className: "pire-cp-hint", children: [
3453
+ /* @__PURE__ */ jsx59(Kbd, { children: "\u2191" }),
3454
+ /* @__PURE__ */ jsx59(Kbd, { children: "\u2193" }),
3455
+ msg.commandPaletteHintNavigate
3456
+ ] }),
3457
+ /* @__PURE__ */ jsxs50("span", { className: "pire-cp-hint", children: [
3458
+ /* @__PURE__ */ jsx59(Kbd, { children: "\u21B5" }),
3459
+ msg.commandPaletteHintSelect
3460
+ ] }),
3461
+ /* @__PURE__ */ jsxs50("span", { className: "pire-cp-hint", children: [
3462
+ /* @__PURE__ */ jsx59(Kbd, { children: "esc" }),
3463
+ msg.commandPaletteHintClose
3464
+ ] })
3465
+ ] }) })
3466
+ ) : null
3467
+ ] }) })
3468
+ }
3469
+ );
3470
+ }
3471
+ function useCommandPaletteShortcut(onTrigger, { key = "k", isDisabled } = {}) {
3472
+ const handler = React15.useRef(onTrigger);
3473
+ handler.current = onTrigger;
3474
+ React15.useEffect(() => {
3475
+ if (isDisabled) return;
3476
+ const onKeyDown = (event) => {
3477
+ if (!(event.metaKey || event.ctrlKey) || event.altKey) return;
3478
+ if (event.key.toLowerCase() !== key.toLowerCase()) return;
3479
+ event.preventDefault();
3480
+ handler.current();
3481
+ };
3482
+ document.addEventListener("keydown", onKeyDown);
3483
+ return () => document.removeEventListener("keydown", onKeyDown);
3484
+ }, [key, isDisabled]);
3485
+ }
3486
+
3096
3487
  // src/components/patterns/SidePanel.tsx
3097
- import { ModalOverlay as ModalOverlay2, Modal as Modal2, Dialog as AriaDialog4, Heading as Heading5 } from "react-aria-components";
3098
- import { jsx as jsx58, jsxs as jsxs50 } from "react/jsx-runtime";
3488
+ import { ModalOverlay as ModalOverlay3, Modal as Modal3, Dialog as AriaDialog5, Heading as Heading5 } from "react-aria-components";
3489
+ import { jsx as jsx60, jsxs as jsxs51 } from "react/jsx-runtime";
3099
3490
  function SidePanel({ isOpen, title, subtitle, width = 400, children, footer, onClose, className }) {
3100
3491
  const msg = usePireMessages();
3101
- return /* @__PURE__ */ jsx58(
3102
- ModalOverlay2,
3492
+ return /* @__PURE__ */ jsx60(
3493
+ ModalOverlay3,
3103
3494
  {
3104
3495
  className: "pire-sidepanel-overlay",
3105
3496
  isOpen,
@@ -3107,36 +3498,36 @@ function SidePanel({ isOpen, title, subtitle, width = 400, children, footer, onC
3107
3498
  onOpenChange: (o) => {
3108
3499
  if (!o) onClose?.();
3109
3500
  },
3110
- children: /* @__PURE__ */ jsx58(Modal2, { className: cx("pire-sidepanel", className), style: { width }, children: /* @__PURE__ */ jsxs50(AriaDialog4, { className: "pire-dialog", style: { height: "100%" }, children: [
3111
- /* @__PURE__ */ jsxs50("header", { className: "pire-dialog-head", children: [
3112
- /* @__PURE__ */ jsxs50("div", { style: { flex: 1, minWidth: 0 }, children: [
3113
- /* @__PURE__ */ jsx58(Heading5, { slot: "title", className: "pire-dialog-title", children: title }),
3114
- subtitle ? /* @__PURE__ */ jsx58("p", { className: "pire-dialog-sub", style: { margin: 0 }, children: subtitle }) : null
3501
+ children: /* @__PURE__ */ jsx60(Modal3, { className: cx("pire-sidepanel", className), style: { width }, children: /* @__PURE__ */ jsxs51(AriaDialog5, { className: "pire-dialog", style: { height: "100%" }, children: [
3502
+ /* @__PURE__ */ jsxs51("header", { className: "pire-dialog-head", children: [
3503
+ /* @__PURE__ */ jsxs51("div", { style: { flex: 1, minWidth: 0 }, children: [
3504
+ /* @__PURE__ */ jsx60(Heading5, { slot: "title", className: "pire-dialog-title", children: title }),
3505
+ subtitle ? /* @__PURE__ */ jsx60("p", { className: "pire-dialog-sub", style: { margin: 0 }, children: subtitle }) : null
3115
3506
  ] }),
3116
- /* @__PURE__ */ jsx58(IconButton, { icon: "x", label: msg.sidePanelClose, size: "sm", onPress: onClose })
3507
+ /* @__PURE__ */ jsx60(IconButton, { icon: "x", label: msg.sidePanelClose, size: "sm", onPress: onClose })
3117
3508
  ] }),
3118
- /* @__PURE__ */ jsx58("div", { className: "pire-dialog-body", style: { flex: 1 }, children }),
3119
- footer ? /* @__PURE__ */ jsx58("footer", { className: "pire-dialog-foot", children: footer }) : null
3509
+ /* @__PURE__ */ jsx60("div", { className: "pire-dialog-body", style: { flex: 1 }, children }),
3510
+ footer ? /* @__PURE__ */ jsx60("footer", { className: "pire-dialog-foot", children: footer }) : null
3120
3511
  ] }) })
3121
3512
  }
3122
3513
  );
3123
3514
  }
3124
3515
 
3125
3516
  // src/components/patterns/EmptyState.tsx
3126
- import { jsx as jsx59, jsxs as jsxs51 } from "react/jsx-runtime";
3517
+ import { jsx as jsx61, jsxs as jsxs52 } from "react/jsx-runtime";
3127
3518
  function EmptyState({ icon = "file-text", title, action, compact, children, className, ...rest }) {
3128
- return /* @__PURE__ */ jsxs51("div", { className: cx("pire-empty", className), "data-compact": compact ? "true" : void 0, ...rest, children: [
3129
- /* @__PURE__ */ jsx59(Icon, { name: icon, size: 24, className: "pire-empty-icon" }),
3130
- title ? /* @__PURE__ */ jsx59("p", { className: "pire-empty-title", style: { margin: 0 }, children: title }) : null,
3131
- children ? /* @__PURE__ */ jsx59("p", { className: "pire-empty-body", style: { margin: 0 }, children }) : null,
3519
+ return /* @__PURE__ */ jsxs52("div", { className: cx("pire-empty", className), "data-compact": compact ? "true" : void 0, ...rest, children: [
3520
+ /* @__PURE__ */ jsx61(Icon, { name: icon, size: 24, className: "pire-empty-icon" }),
3521
+ title ? /* @__PURE__ */ jsx61("p", { className: "pire-empty-title", style: { margin: 0 }, children: title }) : null,
3522
+ children ? /* @__PURE__ */ jsx61("p", { className: "pire-empty-body", style: { margin: 0 }, children }) : null,
3132
3523
  action
3133
3524
  ] });
3134
3525
  }
3135
3526
 
3136
3527
  // src/components/patterns/FileDropZone.tsx
3137
- import * as React15 from "react";
3528
+ import * as React16 from "react";
3138
3529
  import { DropZone, FileTrigger as FileTrigger2, isFileDropItem } from "react-aria-components";
3139
- import { jsx as jsx60, jsxs as jsxs52 } from "react/jsx-runtime";
3530
+ import { jsx as jsx62, jsxs as jsxs53 } from "react/jsx-runtime";
3140
3531
  var isImage2 = (file) => file.type.startsWith("image/");
3141
3532
  function FileDropZone({
3142
3533
  label,
@@ -3162,10 +3553,10 @@ function FileDropZone({
3162
3553
  style
3163
3554
  }) {
3164
3555
  const msg = usePireMessages();
3165
- const [uncontrolled, setUncontrolled] = React15.useState(defaultValue ?? []);
3556
+ const [uncontrolled, setUncontrolled] = React16.useState(defaultValue ?? []);
3166
3557
  const files = value ?? uncontrolled;
3167
- const created = React15.useRef([]);
3168
- React15.useEffect(() => () => {
3558
+ const created = React16.useRef([]);
3559
+ React16.useEffect(() => () => {
3169
3560
  for (const url of created.current) URL.revokeObjectURL(url);
3170
3561
  }, []);
3171
3562
  const commit = (next) => {
@@ -3185,12 +3576,12 @@ function FileDropZone({
3185
3576
  commit(allowsMultiple ? [...files, ...wrapped] : wrapped.slice(0, 1));
3186
3577
  };
3187
3578
  const remove = (target) => commit(files.filter((f) => f.file !== target));
3188
- return /* @__PURE__ */ jsxs52("div", { className: cx("pire-field", className), style, "data-full-width": String(fullWidth), children: [
3189
- label ? /* @__PURE__ */ jsxs52("span", { className: "pire-field-label", children: [
3579
+ return /* @__PURE__ */ jsxs53("div", { className: cx("pire-field", className), style, "data-full-width": String(fullWidth), children: [
3580
+ label ? /* @__PURE__ */ jsxs53("span", { className: "pire-field-label", children: [
3190
3581
  label,
3191
- isRequired ? /* @__PURE__ */ jsx60("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
3582
+ isRequired ? /* @__PURE__ */ jsx62("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
3192
3583
  ] }) : null,
3193
- /* @__PURE__ */ jsxs52(
3584
+ /* @__PURE__ */ jsxs53(
3194
3585
  DropZone,
3195
3586
  {
3196
3587
  className: "pire-dropzone",
@@ -3203,25 +3594,25 @@ function FileDropZone({
3203
3594
  accept(dropped);
3204
3595
  },
3205
3596
  children: [
3206
- /* @__PURE__ */ jsx60(Icon, { name: "download", size: 24, className: "pire-dropzone-icon" }),
3207
- /* @__PURE__ */ jsx60("span", { className: "pire-dropzone-prompt", children: promptLabel ?? msg.fileDropZonePrompt }),
3208
- /* @__PURE__ */ jsx60(
3597
+ /* @__PURE__ */ jsx62(Icon, { name: "download", size: 24, className: "pire-dropzone-icon" }),
3598
+ /* @__PURE__ */ jsx62("span", { className: "pire-dropzone-prompt", children: promptLabel ?? msg.fileDropZonePrompt }),
3599
+ /* @__PURE__ */ jsx62(
3209
3600
  FileTrigger2,
3210
3601
  {
3211
3602
  acceptedFileTypes,
3212
3603
  allowsMultiple,
3213
3604
  onSelect: (list) => accept(list ? [...list] : []),
3214
- children: /* @__PURE__ */ jsx60(Button, { variant: "secondary", isDisabled: isDisabled || isReadOnly, children: msg.fileUploadChoose })
3605
+ children: /* @__PURE__ */ jsx62(Button, { variant: "secondary", isDisabled: isDisabled || isReadOnly, children: msg.fileUploadChoose })
3215
3606
  }
3216
3607
  )
3217
3608
  ]
3218
3609
  }
3219
3610
  ),
3220
- files.length ? /* @__PURE__ */ jsx60("ul", { className: "pire-fileupload-list", children: files.map(({ file, previewUrl }) => /* @__PURE__ */ jsxs52("li", { className: "pire-fileupload-item", children: [
3221
- previewUrl ? /* @__PURE__ */ jsx60("img", { className: "pire-fileupload-thumb", src: previewUrl, alt: "" }) : /* @__PURE__ */ jsx60(Icon, { name: "file-text", size: 16, className: "pire-fileupload-icon" }),
3222
- /* @__PURE__ */ jsx60("span", { className: "pire-fileupload-name", children: file.name }),
3223
- /* @__PURE__ */ jsx60("span", { className: "pire-fileupload-size", children: formatFileSize(file.size) }),
3224
- isDisabled || isReadOnly ? null : /* @__PURE__ */ jsx60(
3611
+ files.length ? /* @__PURE__ */ jsx62("ul", { className: "pire-fileupload-list", children: files.map(({ file, previewUrl }) => /* @__PURE__ */ jsxs53("li", { className: "pire-fileupload-item", children: [
3612
+ previewUrl ? /* @__PURE__ */ jsx62("img", { className: "pire-fileupload-thumb", src: previewUrl, alt: "" }) : /* @__PURE__ */ jsx62(Icon, { name: "file-text", size: 16, className: "pire-fileupload-icon" }),
3613
+ /* @__PURE__ */ jsx62("span", { className: "pire-fileupload-name", children: file.name }),
3614
+ /* @__PURE__ */ jsx62("span", { className: "pire-fileupload-size", children: formatFileSize(file.size) }),
3615
+ isDisabled || isReadOnly ? null : /* @__PURE__ */ jsx62(
3225
3616
  IconButton,
3226
3617
  {
3227
3618
  icon: "x",
@@ -3231,14 +3622,14 @@ function FileDropZone({
3231
3622
  }
3232
3623
  )
3233
3624
  ] }, `${file.name}-${file.size}-${file.lastModified}`)) }) : null,
3234
- uploadProgress != null ? /* @__PURE__ */ jsx60(ProgressBar, { value: uploadProgress, label: msg.fileUploadUploading }) : null,
3235
- description ? /* @__PURE__ */ jsx60("span", { className: "pire-field-hint", children: description }) : null,
3236
- isInvalid && errorMessage ? /* @__PURE__ */ jsx60("span", { className: "pire-field-error", children: errorMessage }) : null
3625
+ uploadProgress != null ? /* @__PURE__ */ jsx62(ProgressBar, { value: uploadProgress, label: msg.fileUploadUploading }) : null,
3626
+ description ? /* @__PURE__ */ jsx62("span", { className: "pire-field-hint", children: description }) : null,
3627
+ isInvalid && errorMessage ? /* @__PURE__ */ jsx62("span", { className: "pire-field-error", children: errorMessage }) : null
3237
3628
  ] });
3238
3629
  }
3239
3630
 
3240
3631
  // src/index.ts
3241
- import { DialogTrigger, MenuTrigger as MenuTrigger2, SubmenuTrigger, Popover as Popover7, RouterProvider, I18nProvider } from "react-aria-components";
3632
+ import { DialogTrigger, MenuTrigger as MenuTrigger3, SubmenuTrigger, Popover as Popover8, RouterProvider, I18nProvider } from "react-aria-components";
3242
3633
  export {
3243
3634
  Avatar,
3244
3635
  Badge,
@@ -3248,6 +3639,7 @@ export {
3248
3639
  Card,
3249
3640
  Checkbox,
3250
3641
  ComboBox,
3642
+ CommandPalette,
3251
3643
  ConfirmDialog,
3252
3644
  DataTable,
3253
3645
  DatePicker,
@@ -3264,10 +3656,12 @@ export {
3264
3656
  FormField,
3265
3657
  Heading,
3266
3658
  I18nProvider,
3659
+ ICON_NAMES,
3267
3660
  Icon,
3268
3661
  IconButton,
3269
3662
  InlineMessage,
3270
3663
  Input,
3664
+ Kbd,
3271
3665
  KpiTile,
3272
3666
  LineChart,
3273
3667
  Link,
@@ -3276,7 +3670,7 @@ export {
3276
3670
  MenuItem,
3277
3671
  MenuSection,
3278
3672
  MenuSeparator,
3279
- MenuTrigger2 as MenuTrigger,
3673
+ MenuTrigger3 as MenuTrigger,
3280
3674
  MultiComboBox,
3281
3675
  NumberField,
3282
3676
  ObjectHeader,
@@ -3284,7 +3678,7 @@ export {
3284
3678
  PageHeader,
3285
3679
  Pagination,
3286
3680
  PireIntlProvider,
3287
- Popover7 as Popover,
3681
+ Popover8 as Popover,
3288
3682
  ProgressBar,
3289
3683
  Radio,
3290
3684
  RadioGroup,
@@ -3318,6 +3712,7 @@ export {
3318
3712
  esMessages,
3319
3713
  formatFileSize,
3320
3714
  rangeLengthInDays,
3715
+ useCommandPaletteShortcut,
3321
3716
  usePireMessages,
3322
3717
  useToast
3323
3718
  };