@orianatech/pire 0.2.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -5
- package/dist/components/core/Icon.d.cts +22 -7
- package/dist/components/core/Icon.d.ts +22 -7
- package/dist/components/core/Icon.d.ts.map +1 -1
- package/dist/components/core/icon-data.generated.d.cts +1 -0
- package/dist/components/core/icon-data.generated.d.ts +2 -0
- package/dist/components/core/icon-data.generated.d.ts.map +1 -0
- package/dist/components/core/icon-map.d.cts +13 -0
- package/dist/components/core/icon-map.d.ts +14 -0
- package/dist/components/core/icon-map.d.ts.map +1 -0
- package/dist/components/feedback/Skeleton.d.cts +43 -0
- package/dist/components/feedback/Skeleton.d.ts +44 -0
- package/dist/components/feedback/Skeleton.d.ts.map +1 -0
- package/dist/components/forms/MultiComboBox.d.cts +58 -0
- package/dist/components/forms/MultiComboBox.d.ts +59 -0
- package/dist/components/forms/MultiComboBox.d.ts.map +1 -0
- package/dist/components/forms/TextArea.d.cts +42 -0
- package/dist/components/forms/TextArea.d.ts +43 -0
- package/dist/components/forms/TextArea.d.ts.map +1 -0
- package/dist/components/navigation/ShellBar.d.cts +8 -1
- package/dist/components/navigation/ShellBar.d.ts +8 -1
- package/dist/components/navigation/ShellBar.d.ts.map +1 -1
- package/dist/components/navigation/SideNav.d.cts +56 -4
- package/dist/components/navigation/SideNav.d.ts +56 -4
- package/dist/components/navigation/SideNav.d.ts.map +1 -1
- package/dist/components.css +73 -1
- package/dist/index.cjs +806 -353
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +809 -347
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
package/dist/index.js
CHANGED
|
@@ -1,6 +1,71 @@
|
|
|
1
|
-
// src/components/core/
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
// src/components/core/icon-data.generated.ts
|
|
2
|
+
var ICON_MARKUP = {
|
|
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
|
+
"apps": '<path d="M8,4V8H4V4Zm2-2H2v8h8Zm8,2V8H14V4Zm2-2H12v8h8Zm8,2V8H24V4Zm2-2H22v8h8ZM8,14v4H4V14Zm2-2H2v8h8Zm8,2v4H14V14Zm2-2H12v8h8Zm8,2v4H24V14Zm2-2H22v8h8ZM8,24v4H4V24Zm2-2H2v8h8Zm8,2v4H14V24Zm2-2H12v8h8Zm8,2v4H24V24Zm2-2H22v8h8Z"/>',
|
|
5
|
+
"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"/>',
|
|
6
|
+
"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
|
+
"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
|
+
"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"/>',
|
|
9
|
+
"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"/>',
|
|
10
|
+
"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
|
+
"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
|
+
"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
|
+
"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
|
+
"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"/>',
|
|
15
|
+
"checkmark": '<path d="M13 24 4 15 5.414 13.586 13 21.171 26.586 7.586 28 9 13 24z"/>',
|
|
16
|
+
"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
|
+
"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"/>',
|
|
18
|
+
"chevron--down": '<path d="M16 22 6 12 7.4 10.6 16 19.2 24.6 10.6 26 12z"/>',
|
|
19
|
+
"chevron--left": '<path d="M10 16 20 6 21.4 7.4 12.8 16 21.4 24.6 20 26z"/>',
|
|
20
|
+
"chevron--right": '<path d="M22 16 12 26 10.6 24.6 19.2 16 10.6 7.4 12 6z"/>',
|
|
21
|
+
"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"/>',
|
|
22
|
+
"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
|
+
"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"/>',
|
|
24
|
+
"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
|
+
"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"/>',
|
|
26
|
+
"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
|
+
"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"/>',
|
|
28
|
+
"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
|
+
"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"/>',
|
|
30
|
+
"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"/>',
|
|
31
|
+
"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"/>',
|
|
32
|
+
"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"/>',
|
|
33
|
+
"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
|
+
"hashtag": '<path d="M28,12V10H22V4H20v6H12V4H10v6H4v2h6v8H4v2h6v6h2V22h8v6h2V22h6V20H22V12Zm-8,8H12V12h8Z"/>',
|
|
35
|
+
"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
|
+
"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"/>',
|
|
37
|
+
"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"/>',
|
|
38
|
+
"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
|
+
"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"/>',
|
|
40
|
+
"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
|
+
"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
|
+
"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
|
+
"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"/>',
|
|
44
|
+
"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"/>',
|
|
45
|
+
"menu": '<path d="M4 6H28V8H4z"/><path d="M4 24H28V26H4z"/><path d="M4 12H28V14H4z"/><path d="M4 18H28V20H4z"/>',
|
|
46
|
+
"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
|
+
"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"/>',
|
|
48
|
+
"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"/>',
|
|
49
|
+
"overflow-menu--vertical": '<circle cx="16" cy="8" r="2"/><circle cx="16" cy="16" r="2"/><circle cx="16" cy="24" r="2"/>',
|
|
50
|
+
"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"/>',
|
|
51
|
+
"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"/>',
|
|
52
|
+
"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"/>',
|
|
53
|
+
"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"/>',
|
|
54
|
+
"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"/>',
|
|
55
|
+
"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
|
+
"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"/>',
|
|
57
|
+
"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"/>',
|
|
58
|
+
"subtract": '<path d="M8 15H24V17H8z"/>',
|
|
59
|
+
"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
|
+
"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
|
+
"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"/>',
|
|
62
|
+
"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"/>',
|
|
63
|
+
"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"/>',
|
|
64
|
+
"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
|
+
"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
|
+
};
|
|
67
|
+
|
|
68
|
+
// src/components/core/icon-map.ts
|
|
4
69
|
var CARBON_MAP = {
|
|
5
70
|
"menu": "menu",
|
|
6
71
|
"search": "search",
|
|
@@ -70,21 +135,49 @@ var CARBON_MAP = {
|
|
|
70
135
|
"eye": "view",
|
|
71
136
|
"minimize-2": "minimize"
|
|
72
137
|
};
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
138
|
+
|
|
139
|
+
// src/components/core/Icon.tsx
|
|
140
|
+
import { jsx } from "react/jsx-runtime";
|
|
141
|
+
var IS_DEV = process.env.NODE_ENV !== "production";
|
|
142
|
+
var warned = /* @__PURE__ */ new Set();
|
|
143
|
+
function warnOnce(key, message) {
|
|
144
|
+
if (warned.has(key)) return;
|
|
145
|
+
warned.add(key);
|
|
146
|
+
console.warn(`[pire] ${message}`);
|
|
147
|
+
}
|
|
77
148
|
var config = {};
|
|
78
149
|
function configureIcons(next) {
|
|
79
150
|
config = { ...config, ...next };
|
|
151
|
+
if (!IS_DEV) return;
|
|
152
|
+
if (next.base !== void 0) {
|
|
153
|
+
warnOnce(
|
|
154
|
+
"config:base",
|
|
155
|
+
"configureIcons({ base }) is ignored: glyphs are inlined in the bundle and no longer fetched over the network. Remove the call, and the self-hosted SVGs it pointed at."
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
if (next.pack !== void 0) {
|
|
159
|
+
warnOnce(
|
|
160
|
+
"config:pack",
|
|
161
|
+
"configureIcons({ pack }) is ignored: the bundled Carbon pack is the only pack. Use configureIcons({ resolve }) to supply a glyph Pire does not ship."
|
|
162
|
+
);
|
|
163
|
+
}
|
|
80
164
|
}
|
|
81
165
|
function Icon({ name, size = 16, label, pack, style, ...rest }) {
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
166
|
+
const markup = config.resolve?.(name) ?? ICON_MARKUP[CARBON_MAP[name] ?? name];
|
|
167
|
+
if (IS_DEV) {
|
|
168
|
+
if (pack !== void 0) {
|
|
169
|
+
warnOnce(
|
|
170
|
+
"prop:pack",
|
|
171
|
+
"The Icon `pack` prop is ignored: the bundled Carbon pack is the only pack. Drop the prop."
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
if (markup === void 0) {
|
|
175
|
+
warnOnce(
|
|
176
|
+
`missing:${name}`,
|
|
177
|
+
`Unknown icon name "${name}" \u2014 nothing will render. Add it to CARBON_MAP in src/components/core/icon-map.ts and rebuild, or register it with configureIcons({ resolve }).`
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
88
181
|
return /* @__PURE__ */ jsx(
|
|
89
182
|
"span",
|
|
90
183
|
{
|
|
@@ -93,26 +186,18 @@ function Icon({ name, size = 16, label, pack, style, ...rest }) {
|
|
|
93
186
|
"aria-hidden": label ? void 0 : true,
|
|
94
187
|
"data-icon": name,
|
|
95
188
|
...rest,
|
|
96
|
-
style: {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
flex: "0 0 auto",
|
|
100
|
-
width: size,
|
|
101
|
-
height: size,
|
|
102
|
-
backgroundColor: failed ? "transparent" : "currentColor",
|
|
103
|
-
WebkitMaskImage: failed ? void 0 : `url("${url}")`,
|
|
104
|
-
WebkitMask: failed ? void 0 : mask,
|
|
105
|
-
mask: failed ? void 0 : mask,
|
|
106
|
-
...style
|
|
107
|
-
},
|
|
108
|
-
children: /* @__PURE__ */ jsx(
|
|
109
|
-
"img",
|
|
189
|
+
style: { display: "inline-block", flex: "0 0 auto", width: size, height: size, ...style },
|
|
190
|
+
children: markup === void 0 ? null : /* @__PURE__ */ jsx(
|
|
191
|
+
"svg",
|
|
110
192
|
{
|
|
111
|
-
|
|
112
|
-
|
|
193
|
+
viewBox: "0 0 32 32",
|
|
194
|
+
width: size,
|
|
195
|
+
height: size,
|
|
196
|
+
fill: "currentColor",
|
|
197
|
+
focusable: "false",
|
|
113
198
|
"aria-hidden": "true",
|
|
114
|
-
|
|
115
|
-
|
|
199
|
+
style: { display: "block" },
|
|
200
|
+
dangerouslySetInnerHTML: { __html: markup }
|
|
116
201
|
}
|
|
117
202
|
)
|
|
118
203
|
}
|
|
@@ -120,7 +205,7 @@ function Icon({ name, size = 16, label, pack, style, ...rest }) {
|
|
|
120
205
|
}
|
|
121
206
|
|
|
122
207
|
// src/components/core/Button.tsx
|
|
123
|
-
import * as
|
|
208
|
+
import * as React from "react";
|
|
124
209
|
import { Button as AriaButton } from "react-aria-components";
|
|
125
210
|
|
|
126
211
|
// src/components/utils/cx.ts
|
|
@@ -130,7 +215,7 @@ function cx(...parts) {
|
|
|
130
215
|
|
|
131
216
|
// src/components/core/Button.tsx
|
|
132
217
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
133
|
-
var Button =
|
|
218
|
+
var Button = React.forwardRef(function Button2({ children, variant = "secondary", size = "md", icon, iconEnd, fullWidth, className, ...rest }, ref) {
|
|
134
219
|
return /* @__PURE__ */ jsxs(
|
|
135
220
|
AriaButton,
|
|
136
221
|
{
|
|
@@ -150,7 +235,7 @@ var Button = React2.forwardRef(function Button2({ children, variant = "secondary
|
|
|
150
235
|
});
|
|
151
236
|
|
|
152
237
|
// src/components/core/IconButton.tsx
|
|
153
|
-
import * as
|
|
238
|
+
import * as React2 from "react";
|
|
154
239
|
import { Button as AriaButton2 } from "react-aria-components";
|
|
155
240
|
|
|
156
241
|
// src/components/feedback/Tooltip.tsx
|
|
@@ -168,7 +253,7 @@ function Tooltip({ label, placement = "top", delay = 500, children }) {
|
|
|
168
253
|
|
|
169
254
|
// src/components/core/IconButton.tsx
|
|
170
255
|
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
171
|
-
var IconButton =
|
|
256
|
+
var IconButton = React2.forwardRef(function IconButton2({ icon, label, size = "md", variant = "tertiary", selected, hideTooltip, className, ...rest }, ref) {
|
|
172
257
|
const button = /* @__PURE__ */ jsx4(
|
|
173
258
|
AriaButton2,
|
|
174
259
|
{
|
|
@@ -239,11 +324,11 @@ function Card({ title, subtitle, icon, actions, footer, interactive, children, c
|
|
|
239
324
|
}
|
|
240
325
|
|
|
241
326
|
// src/components/core/Avatar.tsx
|
|
242
|
-
import * as
|
|
327
|
+
import * as React3 from "react";
|
|
243
328
|
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
244
329
|
var initials = (name) => name.trim().split(/\s+/).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
|
|
245
330
|
function Avatar({ name, size = "md", src, className, ...rest }) {
|
|
246
|
-
const [failed, setFailed] =
|
|
331
|
+
const [failed, setFailed] = React3.useState(false);
|
|
247
332
|
return /* @__PURE__ */ jsx8("span", { className: cx("pire-avatar", className), "data-size": size, role: "img", "aria-label": name, ...rest, children: src && !failed ? /* @__PURE__ */ jsx8(
|
|
248
333
|
"img",
|
|
249
334
|
{
|
|
@@ -256,7 +341,7 @@ function Avatar({ name, size = "md", src, className, ...rest }) {
|
|
|
256
341
|
}
|
|
257
342
|
|
|
258
343
|
// src/components/core/SegmentedControl.tsx
|
|
259
|
-
import * as
|
|
344
|
+
import * as React4 from "react";
|
|
260
345
|
import { ToggleButtonGroup, ToggleButton } from "react-aria-components";
|
|
261
346
|
import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
262
347
|
function SegmentedControl({
|
|
@@ -270,7 +355,7 @@ function SegmentedControl({
|
|
|
270
355
|
style,
|
|
271
356
|
...rest
|
|
272
357
|
}) {
|
|
273
|
-
const selected =
|
|
358
|
+
const selected = React4.useMemo(() => new Set(value ? [value] : defaultValue ? [defaultValue] : []), [value, defaultValue]);
|
|
274
359
|
return /* @__PURE__ */ jsx9(
|
|
275
360
|
ToggleButtonGroup,
|
|
276
361
|
{
|
|
@@ -372,19 +457,104 @@ function Input({
|
|
|
372
457
|
);
|
|
373
458
|
}
|
|
374
459
|
|
|
460
|
+
// src/components/forms/TextArea.tsx
|
|
461
|
+
import * as React5 from "react";
|
|
462
|
+
import { TextField as TextField2, Label as Label2, TextArea as AriaTextArea, Group as Group2, Text as Text2, FieldError as FieldError2 } from "react-aria-components";
|
|
463
|
+
import { jsx as jsx12, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
464
|
+
var useIsomorphicLayoutEffect = typeof document === "undefined" ? React5.useEffect : React5.useLayoutEffect;
|
|
465
|
+
function TextArea({
|
|
466
|
+
label,
|
|
467
|
+
description,
|
|
468
|
+
errorMessage,
|
|
469
|
+
size = "md",
|
|
470
|
+
rows = 3,
|
|
471
|
+
autoGrow,
|
|
472
|
+
maxRows,
|
|
473
|
+
fullWidth = true,
|
|
474
|
+
className,
|
|
475
|
+
style,
|
|
476
|
+
textAreaRef,
|
|
477
|
+
onChange,
|
|
478
|
+
...rest
|
|
479
|
+
}) {
|
|
480
|
+
const innerRef = React5.useRef(null);
|
|
481
|
+
const ref = React5.useCallback((node) => {
|
|
482
|
+
innerRef.current = node;
|
|
483
|
+
if (typeof textAreaRef === "function") textAreaRef(node);
|
|
484
|
+
else if (textAreaRef) textAreaRef.current = node;
|
|
485
|
+
}, [textAreaRef]);
|
|
486
|
+
const grow = React5.useCallback(() => {
|
|
487
|
+
const el = innerRef.current;
|
|
488
|
+
if (!el || !autoGrow) return;
|
|
489
|
+
const styles = getComputedStyle(el);
|
|
490
|
+
const lineHeight = Number.parseFloat(styles.lineHeight) || Number.parseFloat(styles.fontSize) * 1.5;
|
|
491
|
+
const chrome = el.offsetHeight - el.clientHeight;
|
|
492
|
+
el.style.height = "auto";
|
|
493
|
+
const wanted = maxRows ? Math.min(el.scrollHeight, Math.ceil(lineHeight * maxRows)) : el.scrollHeight;
|
|
494
|
+
const next = `${wanted + chrome}px`;
|
|
495
|
+
if (el.style.height !== next) el.style.height = next;
|
|
496
|
+
}, [autoGrow, maxRows]);
|
|
497
|
+
useIsomorphicLayoutEffect(() => {
|
|
498
|
+
if (!autoGrow) {
|
|
499
|
+
if (innerRef.current) innerRef.current.style.height = "";
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
502
|
+
grow();
|
|
503
|
+
}, [autoGrow, grow, rest.value]);
|
|
504
|
+
return /* @__PURE__ */ jsxs9(
|
|
505
|
+
TextField2,
|
|
506
|
+
{
|
|
507
|
+
className: cx("pire-field", className),
|
|
508
|
+
style,
|
|
509
|
+
onChange,
|
|
510
|
+
validationBehavior: "aria",
|
|
511
|
+
...rest,
|
|
512
|
+
children: [
|
|
513
|
+
label ? /* @__PURE__ */ jsxs9(Label2, { className: "pire-field-label", children: [
|
|
514
|
+
label,
|
|
515
|
+
rest.isRequired ? /* @__PURE__ */ jsx12("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
|
|
516
|
+
] }) : null,
|
|
517
|
+
/* @__PURE__ */ jsx12(
|
|
518
|
+
Group2,
|
|
519
|
+
{
|
|
520
|
+
className: "pire-control",
|
|
521
|
+
"data-size": size,
|
|
522
|
+
"data-full-width": String(fullWidth),
|
|
523
|
+
"data-multiline": "true",
|
|
524
|
+
"data-invalid": rest.isInvalid ? "true" : void 0,
|
|
525
|
+
"data-readonly": rest.isReadOnly ? "true" : void 0,
|
|
526
|
+
children: /* @__PURE__ */ jsx12(
|
|
527
|
+
AriaTextArea,
|
|
528
|
+
{
|
|
529
|
+
ref,
|
|
530
|
+
rows,
|
|
531
|
+
onInput: autoGrow ? grow : void 0,
|
|
532
|
+
className: cx("pire-input", "pire-textarea"),
|
|
533
|
+
"data-auto-grow": autoGrow ? "true" : void 0
|
|
534
|
+
}
|
|
535
|
+
)
|
|
536
|
+
}
|
|
537
|
+
),
|
|
538
|
+
description ? /* @__PURE__ */ jsx12(Text2, { slot: "description", className: "pire-field-hint", children: description }) : null,
|
|
539
|
+
/* @__PURE__ */ jsx12(FieldError2, { className: "pire-field-error", children: errorMessage })
|
|
540
|
+
]
|
|
541
|
+
}
|
|
542
|
+
);
|
|
543
|
+
}
|
|
544
|
+
|
|
375
545
|
// src/components/forms/Select.tsx
|
|
376
546
|
import {
|
|
377
547
|
Select as AriaSelect,
|
|
378
|
-
Label as
|
|
548
|
+
Label as Label3,
|
|
379
549
|
Button as AriaButton4,
|
|
380
550
|
SelectValue,
|
|
381
551
|
Popover,
|
|
382
552
|
ListBox,
|
|
383
553
|
ListBoxItem,
|
|
384
|
-
Text as
|
|
385
|
-
FieldError as
|
|
554
|
+
Text as Text3,
|
|
555
|
+
FieldError as FieldError3
|
|
386
556
|
} from "react-aria-components";
|
|
387
|
-
import { jsx as
|
|
557
|
+
import { jsx as jsx13, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
388
558
|
var norm = (o) => typeof o === "string" ? { value: o, label: o, isDisabled: false } : o;
|
|
389
559
|
function Select({
|
|
390
560
|
label,
|
|
@@ -402,7 +572,7 @@ function Select({
|
|
|
402
572
|
...rest
|
|
403
573
|
}) {
|
|
404
574
|
const items = options.map(norm);
|
|
405
|
-
return /* @__PURE__ */
|
|
575
|
+
return /* @__PURE__ */ jsxs10(
|
|
406
576
|
AriaSelect,
|
|
407
577
|
{
|
|
408
578
|
className: cx("pire-field", className),
|
|
@@ -414,11 +584,11 @@ function Select({
|
|
|
414
584
|
validationBehavior: "aria",
|
|
415
585
|
...rest,
|
|
416
586
|
children: [
|
|
417
|
-
label ? /* @__PURE__ */
|
|
587
|
+
label ? /* @__PURE__ */ jsxs10(Label3, { className: "pire-field-label", children: [
|
|
418
588
|
label,
|
|
419
|
-
rest.isRequired ? /* @__PURE__ */
|
|
589
|
+
rest.isRequired ? /* @__PURE__ */ jsx13("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
|
|
420
590
|
] }) : null,
|
|
421
|
-
/* @__PURE__ */
|
|
591
|
+
/* @__PURE__ */ jsxs10(
|
|
422
592
|
AriaButton4,
|
|
423
593
|
{
|
|
424
594
|
className: "pire-control",
|
|
@@ -426,14 +596,14 @@ function Select({
|
|
|
426
596
|
"data-full-width": String(fullWidth),
|
|
427
597
|
"data-invalid": rest.isInvalid ? "true" : void 0,
|
|
428
598
|
children: [
|
|
429
|
-
/* @__PURE__ */
|
|
430
|
-
/* @__PURE__ */
|
|
599
|
+
/* @__PURE__ */ jsx13(SelectValue, { className: "pire-select-value" }),
|
|
600
|
+
/* @__PURE__ */ jsx13(Icon, { name: "chevron-down", size: 16, className: "pire-leading-icon" })
|
|
431
601
|
]
|
|
432
602
|
}
|
|
433
603
|
),
|
|
434
|
-
description ? /* @__PURE__ */
|
|
435
|
-
/* @__PURE__ */
|
|
436
|
-
/* @__PURE__ */
|
|
604
|
+
description ? /* @__PURE__ */ jsx13(Text3, { slot: "description", className: "pire-field-hint", children: description }) : null,
|
|
605
|
+
/* @__PURE__ */ jsx13(FieldError3, { className: "pire-field-error", children: errorMessage }),
|
|
606
|
+
/* @__PURE__ */ jsx13(Popover, { className: "pire-popover", children: /* @__PURE__ */ jsx13(ListBox, { className: "pire-listbox", items, children: (item) => /* @__PURE__ */ jsx13(ListBoxItem, { className: "pire-option", id: item.value, textValue: item.label, isDisabled: item.isDisabled, children: item.label }) }) })
|
|
437
607
|
]
|
|
438
608
|
}
|
|
439
609
|
);
|
|
@@ -441,13 +611,13 @@ function Select({
|
|
|
441
611
|
|
|
442
612
|
// src/components/forms/Checkbox.tsx
|
|
443
613
|
import { Checkbox as AriaCheckbox } from "react-aria-components";
|
|
444
|
-
import { Fragment, jsx as
|
|
614
|
+
import { Fragment, jsx as jsx14, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
445
615
|
function Checkbox({ label, hint, children, className, ...rest }) {
|
|
446
|
-
return /* @__PURE__ */
|
|
447
|
-
/* @__PURE__ */
|
|
448
|
-
/* @__PURE__ */
|
|
616
|
+
return /* @__PURE__ */ jsx14(AriaCheckbox, { className: cx("pire-choice", className), ...rest, children: ({ isSelected, isIndeterminate }) => /* @__PURE__ */ jsxs11(Fragment, { children: [
|
|
617
|
+
/* @__PURE__ */ jsx14("span", { className: "pire-choice-box", "aria-hidden": "true", children: isIndeterminate ? /* @__PURE__ */ jsx14(Icon, { name: "minus", size: 12 }) : isSelected ? /* @__PURE__ */ jsx14(Icon, { name: "check", size: 12 }) : null }),
|
|
618
|
+
/* @__PURE__ */ jsxs11("span", { children: [
|
|
449
619
|
label ?? children,
|
|
450
|
-
hint ? /* @__PURE__ */
|
|
620
|
+
hint ? /* @__PURE__ */ jsx14("span", { className: "pire-choice-hint", children: hint }) : null
|
|
451
621
|
] })
|
|
452
622
|
] }) });
|
|
453
623
|
}
|
|
@@ -456,53 +626,53 @@ function Checkbox({ label, hint, children, className, ...rest }) {
|
|
|
456
626
|
import {
|
|
457
627
|
RadioGroup as AriaRadioGroup,
|
|
458
628
|
Radio as AriaRadio,
|
|
459
|
-
Label as
|
|
460
|
-
Text as
|
|
461
|
-
FieldError as
|
|
629
|
+
Label as Label4,
|
|
630
|
+
Text as Text4,
|
|
631
|
+
FieldError as FieldError4
|
|
462
632
|
} from "react-aria-components";
|
|
463
|
-
import { jsx as
|
|
633
|
+
import { jsx as jsx15, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
464
634
|
function RadioGroup({ label, description, errorMessage, children, className, ...rest }) {
|
|
465
|
-
return /* @__PURE__ */
|
|
466
|
-
label ? /* @__PURE__ */
|
|
467
|
-
/* @__PURE__ */
|
|
468
|
-
description ? /* @__PURE__ */
|
|
469
|
-
/* @__PURE__ */
|
|
635
|
+
return /* @__PURE__ */ jsxs12(AriaRadioGroup, { className: cx("pire-field", className), validationBehavior: "aria", ...rest, children: [
|
|
636
|
+
label ? /* @__PURE__ */ jsx15(Label4, { className: "pire-field-label", children: label }) : null,
|
|
637
|
+
/* @__PURE__ */ jsx15("div", { className: "pire-radiogroup", children }),
|
|
638
|
+
description ? /* @__PURE__ */ jsx15(Text4, { slot: "description", className: "pire-field-hint", children: description }) : null,
|
|
639
|
+
/* @__PURE__ */ jsx15(FieldError4, { className: "pire-field-error", children: errorMessage })
|
|
470
640
|
] });
|
|
471
641
|
}
|
|
472
642
|
function Radio({ label, hint, children, className, ...rest }) {
|
|
473
|
-
return /* @__PURE__ */
|
|
474
|
-
/* @__PURE__ */
|
|
475
|
-
/* @__PURE__ */
|
|
643
|
+
return /* @__PURE__ */ jsxs12(AriaRadio, { className: cx("pire-choice", className), ...rest, children: [
|
|
644
|
+
/* @__PURE__ */ jsx15("span", { className: "pire-choice-box", "data-radio": "true", "aria-hidden": "true" }),
|
|
645
|
+
/* @__PURE__ */ jsxs12("span", { children: [
|
|
476
646
|
label ?? children,
|
|
477
|
-
hint ? /* @__PURE__ */
|
|
647
|
+
hint ? /* @__PURE__ */ jsx15("span", { className: "pire-choice-hint", children: hint }) : null
|
|
478
648
|
] })
|
|
479
649
|
] });
|
|
480
650
|
}
|
|
481
651
|
|
|
482
652
|
// src/components/forms/Switch.tsx
|
|
483
653
|
import { Switch as AriaSwitch } from "react-aria-components";
|
|
484
|
-
import { jsx as
|
|
654
|
+
import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
485
655
|
function Switch({ label, children, className, ...rest }) {
|
|
486
|
-
return /* @__PURE__ */
|
|
487
|
-
/* @__PURE__ */
|
|
488
|
-
/* @__PURE__ */
|
|
656
|
+
return /* @__PURE__ */ jsxs13(AriaSwitch, { className: cx("pire-choice", className), ...rest, children: [
|
|
657
|
+
/* @__PURE__ */ jsx16("span", { className: "pire-switch-track", "aria-hidden": "true", children: /* @__PURE__ */ jsx16("span", { className: "pire-switch-thumb" }) }),
|
|
658
|
+
/* @__PURE__ */ jsx16("span", { children: label ?? children })
|
|
489
659
|
] });
|
|
490
660
|
}
|
|
491
661
|
|
|
492
662
|
// src/components/forms/ComboBox.tsx
|
|
493
663
|
import {
|
|
494
664
|
ComboBox as AriaComboBox,
|
|
495
|
-
Label as
|
|
665
|
+
Label as Label5,
|
|
496
666
|
Input as AriaInput2,
|
|
497
667
|
Button as AriaButton5,
|
|
498
|
-
Group as
|
|
668
|
+
Group as Group3,
|
|
499
669
|
Popover as Popover2,
|
|
500
670
|
ListBox as ListBox2,
|
|
501
671
|
ListBoxItem as ListBoxItem2,
|
|
502
|
-
Text as
|
|
503
|
-
FieldError as
|
|
672
|
+
Text as Text5,
|
|
673
|
+
FieldError as FieldError5
|
|
504
674
|
} from "react-aria-components";
|
|
505
|
-
import { jsx as
|
|
675
|
+
import { jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
506
676
|
var norm2 = (o) => typeof o === "string" ? { value: o, label: o } : o;
|
|
507
677
|
function ComboBox({
|
|
508
678
|
label,
|
|
@@ -520,7 +690,7 @@ function ComboBox({
|
|
|
520
690
|
...rest
|
|
521
691
|
}) {
|
|
522
692
|
const items = options.map(norm2);
|
|
523
|
-
return /* @__PURE__ */
|
|
693
|
+
return /* @__PURE__ */ jsxs14(
|
|
524
694
|
AriaComboBox,
|
|
525
695
|
{
|
|
526
696
|
className: cx("pire-field", className),
|
|
@@ -534,46 +704,180 @@ function ComboBox({
|
|
|
534
704
|
validationBehavior: "aria",
|
|
535
705
|
...rest,
|
|
536
706
|
children: [
|
|
537
|
-
label ? /* @__PURE__ */
|
|
707
|
+
label ? /* @__PURE__ */ jsxs14(Label5, { className: "pire-field-label", children: [
|
|
538
708
|
label,
|
|
539
|
-
rest.isRequired ? /* @__PURE__ */
|
|
709
|
+
rest.isRequired ? /* @__PURE__ */ jsx17("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
|
|
540
710
|
] }) : null,
|
|
541
|
-
/* @__PURE__ */
|
|
542
|
-
|
|
711
|
+
/* @__PURE__ */ jsxs14(
|
|
712
|
+
Group3,
|
|
543
713
|
{
|
|
544
714
|
className: "pire-control",
|
|
545
715
|
"data-size": size,
|
|
546
716
|
"data-full-width": String(fullWidth),
|
|
547
717
|
"data-invalid": rest.isInvalid ? "true" : void 0,
|
|
548
718
|
children: [
|
|
549
|
-
/* @__PURE__ */
|
|
550
|
-
/* @__PURE__ */
|
|
551
|
-
/* @__PURE__ */
|
|
719
|
+
/* @__PURE__ */ jsx17(Icon, { name: "search", size: 16, className: "pire-leading-icon" }),
|
|
720
|
+
/* @__PURE__ */ jsx17(AriaInput2, { className: "pire-input", placeholder: rest.placeholder }),
|
|
721
|
+
/* @__PURE__ */ jsx17(AriaButton5, { className: "pire-iconbtn", "data-size": "sm", "aria-label": "Show suggestions", style: { width: 20, height: 20 }, children: /* @__PURE__ */ jsx17(Icon, { name: "chevron-down", size: 16 }) })
|
|
552
722
|
]
|
|
553
723
|
}
|
|
554
724
|
),
|
|
555
|
-
description ? /* @__PURE__ */
|
|
556
|
-
/* @__PURE__ */
|
|
557
|
-
/* @__PURE__ */
|
|
558
|
-
/* @__PURE__ */
|
|
559
|
-
item.secondary ? /* @__PURE__ */
|
|
725
|
+
description ? /* @__PURE__ */ jsx17(Text5, { slot: "description", className: "pire-field-hint", children: description }) : null,
|
|
726
|
+
/* @__PURE__ */ jsx17(FieldError5, { className: "pire-field-error", children: errorMessage }),
|
|
727
|
+
/* @__PURE__ */ jsx17(Popover2, { className: "pire-popover", children: /* @__PURE__ */ jsx17(ListBox2, { className: "pire-listbox", children: (item) => /* @__PURE__ */ jsxs14(ListBoxItem2, { className: "pire-option", id: item.value, textValue: item.label, isDisabled: item.isDisabled, children: [
|
|
728
|
+
/* @__PURE__ */ jsx17("span", { style: { flex: 1 }, children: item.label }),
|
|
729
|
+
item.secondary ? /* @__PURE__ */ jsx17("span", { style: { font: "var(--type-code)", color: "var(--text-tertiary)" }, children: item.secondary }) : null
|
|
560
730
|
] }) }) })
|
|
561
731
|
]
|
|
562
732
|
}
|
|
563
733
|
);
|
|
564
734
|
}
|
|
565
735
|
|
|
566
|
-
// src/components/forms/
|
|
736
|
+
// src/components/forms/MultiComboBox.tsx
|
|
737
|
+
import * as React6 from "react";
|
|
567
738
|
import {
|
|
568
|
-
|
|
569
|
-
Label as
|
|
739
|
+
ComboBox as AriaComboBox2,
|
|
740
|
+
Label as Label6,
|
|
570
741
|
Input as AriaInput3,
|
|
571
|
-
Group as Group3,
|
|
572
742
|
Button as AriaButton6,
|
|
573
|
-
|
|
574
|
-
|
|
743
|
+
ButtonContext,
|
|
744
|
+
Group as Group4,
|
|
745
|
+
Popover as Popover3,
|
|
746
|
+
ListBox as ListBox3,
|
|
747
|
+
ListBoxItem as ListBoxItem3,
|
|
748
|
+
Text as Text6,
|
|
749
|
+
FieldError as FieldError6,
|
|
750
|
+
VisuallyHidden
|
|
575
751
|
} from "react-aria-components";
|
|
576
|
-
import { jsx as
|
|
752
|
+
import { jsx as jsx18, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
753
|
+
var norm3 = (o) => typeof o === "string" ? { value: o, label: o } : o;
|
|
754
|
+
function MultiComboBox({
|
|
755
|
+
label,
|
|
756
|
+
value,
|
|
757
|
+
defaultValue,
|
|
758
|
+
onChange,
|
|
759
|
+
onInputChange,
|
|
760
|
+
options = [],
|
|
761
|
+
description,
|
|
762
|
+
errorMessage,
|
|
763
|
+
allowsCustomValue,
|
|
764
|
+
size = "md",
|
|
765
|
+
fullWidth = true,
|
|
766
|
+
className,
|
|
767
|
+
style,
|
|
768
|
+
...rest
|
|
769
|
+
}) {
|
|
770
|
+
const items = React6.useMemo(() => options.map(norm3), [options]);
|
|
771
|
+
const [uncontrolled, setUncontrolled] = React6.useState(defaultValue ?? []);
|
|
772
|
+
const [announcement, setAnnouncement] = React6.useState("");
|
|
773
|
+
const inputRef = React6.useRef(null);
|
|
774
|
+
const raw = value ?? uncontrolled;
|
|
775
|
+
const contentKey = raw.join("\0");
|
|
776
|
+
const values = React6.useMemo(() => raw, [contentKey]);
|
|
777
|
+
const labelOf = (v) => items.find((o) => o.value === v)?.label ?? v;
|
|
778
|
+
const isEditable = !rest.isDisabled && !rest.isReadOnly;
|
|
779
|
+
const commit = (next) => {
|
|
780
|
+
const added = next.find((v) => !values.includes(v));
|
|
781
|
+
const removed = values.find((v) => !next.includes(v));
|
|
782
|
+
if (added) setAnnouncement(`${labelOf(added)} added. ${next.length} selected.`);
|
|
783
|
+
else if (removed) setAnnouncement(`${labelOf(removed)} removed. ${next.length} selected.`);
|
|
784
|
+
if (value === void 0) setUncontrolled(next);
|
|
785
|
+
onChange?.(next);
|
|
786
|
+
};
|
|
787
|
+
const remove = (v) => {
|
|
788
|
+
commit(values.filter((x) => x !== v));
|
|
789
|
+
inputRef.current?.focus();
|
|
790
|
+
};
|
|
791
|
+
const onKeyDownCapture = (e) => {
|
|
792
|
+
const el = e.currentTarget;
|
|
793
|
+
if (!isEditable) return;
|
|
794
|
+
if (e.key === "Backspace" && el.value === "" && values.length > 0) {
|
|
795
|
+
e.preventDefault();
|
|
796
|
+
e.stopPropagation();
|
|
797
|
+
commit(values.slice(0, -1));
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
800
|
+
if (e.key !== "Enter" || !allowsCustomValue) return;
|
|
801
|
+
const text = el.value.trim();
|
|
802
|
+
if (text === "" || el.getAttribute("aria-activedescendant")) return;
|
|
803
|
+
const match = items.find((o) => o.label.toLowerCase() === text.toLowerCase());
|
|
804
|
+
const next = match ? match.value : text;
|
|
805
|
+
e.preventDefault();
|
|
806
|
+
e.stopPropagation();
|
|
807
|
+
if (!values.includes(next)) commit([...values, next]);
|
|
808
|
+
};
|
|
809
|
+
return /* @__PURE__ */ jsxs15(
|
|
810
|
+
AriaComboBox2,
|
|
811
|
+
{
|
|
812
|
+
className: cx("pire-field", className),
|
|
813
|
+
style,
|
|
814
|
+
selectionMode: "multiple",
|
|
815
|
+
value: values,
|
|
816
|
+
onChange: (keys) => commit(keys.map(String)),
|
|
817
|
+
onInputChange,
|
|
818
|
+
defaultItems: items,
|
|
819
|
+
menuTrigger: "input",
|
|
820
|
+
validationBehavior: "aria",
|
|
821
|
+
...rest,
|
|
822
|
+
children: [
|
|
823
|
+
label ? /* @__PURE__ */ jsxs15(Label6, { className: "pire-field-label", children: [
|
|
824
|
+
label,
|
|
825
|
+
rest.isRequired ? /* @__PURE__ */ jsx18("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
|
|
826
|
+
] }) : null,
|
|
827
|
+
/* @__PURE__ */ jsxs15(
|
|
828
|
+
Group4,
|
|
829
|
+
{
|
|
830
|
+
className: "pire-control",
|
|
831
|
+
"data-size": size,
|
|
832
|
+
"data-full-width": String(fullWidth),
|
|
833
|
+
"data-multiline": "true",
|
|
834
|
+
"data-invalid": rest.isInvalid ? "true" : void 0,
|
|
835
|
+
"data-readonly": rest.isReadOnly ? "true" : void 0,
|
|
836
|
+
children: [
|
|
837
|
+
/* @__PURE__ */ jsx18(Icon, { name: "search", size: 16, className: "pire-leading-icon" }),
|
|
838
|
+
/* @__PURE__ */ jsxs15("div", { className: "pire-chipfield", children: [
|
|
839
|
+
/* @__PURE__ */ jsx18(ButtonContext.Provider, { value: null, children: values.map((v) => (
|
|
840
|
+
/* Disabled follows the field, not `isEditable`: a read-only field's chips are
|
|
841
|
+
real, current values and should read as such — they simply lose the × . */
|
|
842
|
+
/* @__PURE__ */ jsx18(Tag, { isDisabled: rest.isDisabled, onRemove: isEditable ? () => remove(v) : void 0, children: labelOf(v) }, v)
|
|
843
|
+
)) }),
|
|
844
|
+
/* @__PURE__ */ jsx18(
|
|
845
|
+
AriaInput3,
|
|
846
|
+
{
|
|
847
|
+
ref: inputRef,
|
|
848
|
+
className: cx("pire-input", "pire-chipinput"),
|
|
849
|
+
placeholder: rest.placeholder,
|
|
850
|
+
onKeyDownCapture
|
|
851
|
+
}
|
|
852
|
+
)
|
|
853
|
+
] }),
|
|
854
|
+
/* @__PURE__ */ jsx18(AriaButton6, { className: "pire-iconbtn", "data-size": "sm", "aria-label": "Show suggestions", style: { width: 20, height: 20 }, children: /* @__PURE__ */ jsx18(Icon, { name: "chevron-down", size: 16 }) })
|
|
855
|
+
]
|
|
856
|
+
}
|
|
857
|
+
),
|
|
858
|
+
/* @__PURE__ */ jsx18(VisuallyHidden, { children: /* @__PURE__ */ jsx18("span", { "aria-live": "polite", children: announcement }) }),
|
|
859
|
+
description ? /* @__PURE__ */ jsx18(Text6, { slot: "description", className: "pire-field-hint", children: description }) : null,
|
|
860
|
+
/* @__PURE__ */ jsx18(FieldError6, { className: "pire-field-error", children: errorMessage }),
|
|
861
|
+
/* @__PURE__ */ jsx18(Popover3, { className: "pire-popover", children: /* @__PURE__ */ jsx18(ListBox3, { className: "pire-listbox", children: (item) => /* @__PURE__ */ jsxs15(ListBoxItem3, { className: "pire-option", id: item.value, textValue: item.label, isDisabled: item.isDisabled, children: [
|
|
862
|
+
/* @__PURE__ */ jsx18("span", { style: { flex: 1 }, children: item.label }),
|
|
863
|
+
item.secondary ? /* @__PURE__ */ jsx18("span", { style: { font: "var(--type-code)", color: "var(--text-tertiary)" }, children: item.secondary }) : null
|
|
864
|
+
] }) }) })
|
|
865
|
+
]
|
|
866
|
+
}
|
|
867
|
+
);
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
// src/components/forms/NumberField.tsx
|
|
871
|
+
import {
|
|
872
|
+
NumberField as AriaNumberField,
|
|
873
|
+
Label as Label7,
|
|
874
|
+
Input as AriaInput4,
|
|
875
|
+
Group as Group5,
|
|
876
|
+
Button as AriaButton7,
|
|
877
|
+
Text as Text7,
|
|
878
|
+
FieldError as FieldError7
|
|
879
|
+
} from "react-aria-components";
|
|
880
|
+
import { jsx as jsx19, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
577
881
|
function NumberField({
|
|
578
882
|
label,
|
|
579
883
|
suffix,
|
|
@@ -586,13 +890,13 @@ function NumberField({
|
|
|
586
890
|
style,
|
|
587
891
|
...rest
|
|
588
892
|
}) {
|
|
589
|
-
return /* @__PURE__ */
|
|
590
|
-
label ? /* @__PURE__ */
|
|
893
|
+
return /* @__PURE__ */ jsxs16(AriaNumberField, { className: cx("pire-field", className), style, validationBehavior: "aria", ...rest, children: [
|
|
894
|
+
label ? /* @__PURE__ */ jsxs16(Label7, { className: "pire-field-label", children: [
|
|
591
895
|
label,
|
|
592
|
-
rest.isRequired ? /* @__PURE__ */
|
|
896
|
+
rest.isRequired ? /* @__PURE__ */ jsx19("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
|
|
593
897
|
] }) : null,
|
|
594
|
-
/* @__PURE__ */
|
|
595
|
-
|
|
898
|
+
/* @__PURE__ */ jsxs16(
|
|
899
|
+
Group5,
|
|
596
900
|
{
|
|
597
901
|
className: "pire-control",
|
|
598
902
|
"data-size": size,
|
|
@@ -600,29 +904,29 @@ function NumberField({
|
|
|
600
904
|
"data-invalid": rest.isInvalid ? "true" : void 0,
|
|
601
905
|
"data-readonly": rest.isReadOnly ? "true" : void 0,
|
|
602
906
|
children: [
|
|
603
|
-
/* @__PURE__ */
|
|
604
|
-
suffix ? /* @__PURE__ */
|
|
605
|
-
hideStepper ? null : /* @__PURE__ */
|
|
606
|
-
/* @__PURE__ */
|
|
607
|
-
/* @__PURE__ */
|
|
907
|
+
/* @__PURE__ */ jsx19(AriaInput4, { className: "pire-input", "data-numeric": "true" }),
|
|
908
|
+
suffix ? /* @__PURE__ */ jsx19("span", { className: "pire-affix", children: suffix }) : null,
|
|
909
|
+
hideStepper ? null : /* @__PURE__ */ jsxs16("span", { className: "pire-stepper", children: [
|
|
910
|
+
/* @__PURE__ */ jsx19(AriaButton7, { slot: "increment", className: "pire-stepper-btn", "aria-label": "Increase", children: /* @__PURE__ */ jsx19(Icon, { name: "plus", size: 10 }) }),
|
|
911
|
+
/* @__PURE__ */ jsx19(AriaButton7, { slot: "decrement", className: "pire-stepper-btn", "aria-label": "Decrease", children: /* @__PURE__ */ jsx19(Icon, { name: "minus", size: 10 }) })
|
|
608
912
|
] })
|
|
609
913
|
]
|
|
610
914
|
}
|
|
611
915
|
),
|
|
612
|
-
description ? /* @__PURE__ */
|
|
613
|
-
/* @__PURE__ */
|
|
916
|
+
description ? /* @__PURE__ */ jsx19(Text7, { slot: "description", className: "pire-field-hint", children: description }) : null,
|
|
917
|
+
/* @__PURE__ */ jsx19(FieldError7, { className: "pire-field-error", children: errorMessage })
|
|
614
918
|
] });
|
|
615
919
|
}
|
|
616
920
|
|
|
617
921
|
// src/components/forms/DatePicker.tsx
|
|
618
922
|
import {
|
|
619
923
|
DatePicker as AriaDatePicker,
|
|
620
|
-
Label as
|
|
621
|
-
Group as
|
|
924
|
+
Label as Label8,
|
|
925
|
+
Group as Group6,
|
|
622
926
|
DateInput,
|
|
623
927
|
DateSegment,
|
|
624
|
-
Button as
|
|
625
|
-
Popover as
|
|
928
|
+
Button as AriaButton8,
|
|
929
|
+
Popover as Popover4,
|
|
626
930
|
Dialog as AriaDialog,
|
|
627
931
|
Calendar,
|
|
628
932
|
CalendarGrid,
|
|
@@ -631,10 +935,10 @@ import {
|
|
|
631
935
|
CalendarGridBody,
|
|
632
936
|
CalendarCell,
|
|
633
937
|
Heading,
|
|
634
|
-
Text as
|
|
635
|
-
FieldError as
|
|
938
|
+
Text as Text8,
|
|
939
|
+
FieldError as FieldError8
|
|
636
940
|
} from "react-aria-components";
|
|
637
|
-
import { jsx as
|
|
941
|
+
import { jsx as jsx20, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
638
942
|
function DatePicker({
|
|
639
943
|
label,
|
|
640
944
|
description,
|
|
@@ -645,13 +949,13 @@ function DatePicker({
|
|
|
645
949
|
style,
|
|
646
950
|
...rest
|
|
647
951
|
}) {
|
|
648
|
-
return /* @__PURE__ */
|
|
649
|
-
label ? /* @__PURE__ */
|
|
952
|
+
return /* @__PURE__ */ jsxs17(AriaDatePicker, { className: cx("pire-field", className), style, validationBehavior: "aria", ...rest, children: [
|
|
953
|
+
label ? /* @__PURE__ */ jsxs17(Label8, { className: "pire-field-label", children: [
|
|
650
954
|
label,
|
|
651
|
-
rest.isRequired ? /* @__PURE__ */
|
|
955
|
+
rest.isRequired ? /* @__PURE__ */ jsx20("span", { className: "pire-field-req", "aria-hidden": "true", children: "*" }) : null
|
|
652
956
|
] }) : null,
|
|
653
|
-
/* @__PURE__ */
|
|
654
|
-
|
|
957
|
+
/* @__PURE__ */ jsxs17(
|
|
958
|
+
Group6,
|
|
655
959
|
{
|
|
656
960
|
className: "pire-control",
|
|
657
961
|
"data-size": size,
|
|
@@ -659,36 +963,36 @@ function DatePicker({
|
|
|
659
963
|
"data-invalid": rest.isInvalid ? "true" : void 0,
|
|
660
964
|
"data-readonly": rest.isReadOnly ? "true" : void 0,
|
|
661
965
|
children: [
|
|
662
|
-
/* @__PURE__ */
|
|
663
|
-
/* @__PURE__ */
|
|
966
|
+
/* @__PURE__ */ jsx20(DateInput, { className: "pire-datefield", children: (segment) => /* @__PURE__ */ jsx20(DateSegment, { segment, className: "pire-datesegment" }) }),
|
|
967
|
+
/* @__PURE__ */ jsx20(AriaButton8, { className: "pire-iconbtn", "data-size": "sm", "aria-label": "Open calendar", style: { width: 24, height: 24 }, children: /* @__PURE__ */ jsx20(Icon, { name: "calendar", size: 16 }) })
|
|
664
968
|
]
|
|
665
969
|
}
|
|
666
970
|
),
|
|
667
|
-
description ? /* @__PURE__ */
|
|
668
|
-
/* @__PURE__ */
|
|
669
|
-
/* @__PURE__ */
|
|
670
|
-
/* @__PURE__ */
|
|
671
|
-
/* @__PURE__ */
|
|
672
|
-
/* @__PURE__ */
|
|
673
|
-
/* @__PURE__ */
|
|
971
|
+
description ? /* @__PURE__ */ jsx20(Text8, { slot: "description", className: "pire-field-hint", children: description }) : null,
|
|
972
|
+
/* @__PURE__ */ jsx20(FieldError8, { className: "pire-field-error", children: errorMessage }),
|
|
973
|
+
/* @__PURE__ */ jsx20(Popover4, { className: "pire-popover", children: /* @__PURE__ */ jsx20(AriaDialog, { children: /* @__PURE__ */ jsxs17(Calendar, { className: "pire-calendar", children: [
|
|
974
|
+
/* @__PURE__ */ jsxs17("header", { className: "pire-calendar-head", children: [
|
|
975
|
+
/* @__PURE__ */ jsx20(AriaButton8, { slot: "previous", className: "pire-iconbtn", "data-size": "sm", "aria-label": "Previous month", children: /* @__PURE__ */ jsx20(Icon, { name: "chevron-left", size: 16 }) }),
|
|
976
|
+
/* @__PURE__ */ jsx20(Heading, { className: "pire-calendar-title" }),
|
|
977
|
+
/* @__PURE__ */ jsx20(AriaButton8, { slot: "next", className: "pire-iconbtn", "data-size": "sm", "aria-label": "Next month", children: /* @__PURE__ */ jsx20(Icon, { name: "chevron-right", size: 16 }) })
|
|
674
978
|
] }),
|
|
675
|
-
/* @__PURE__ */
|
|
676
|
-
/* @__PURE__ */
|
|
677
|
-
/* @__PURE__ */
|
|
979
|
+
/* @__PURE__ */ jsxs17(CalendarGrid, { className: "pire-calendar-grid", children: [
|
|
980
|
+
/* @__PURE__ */ jsx20(CalendarGridHeader, { children: (day) => /* @__PURE__ */ jsx20(CalendarHeaderCell, { children: day }) }),
|
|
981
|
+
/* @__PURE__ */ jsx20(CalendarGridBody, { children: (date) => /* @__PURE__ */ jsx20(CalendarCell, { date, className: "pire-calendar-cell" }) })
|
|
678
982
|
] })
|
|
679
983
|
] }) }) })
|
|
680
984
|
] });
|
|
681
985
|
}
|
|
682
986
|
|
|
683
987
|
// src/components/forms/ValueHelpField.tsx
|
|
684
|
-
import * as
|
|
988
|
+
import * as React8 from "react";
|
|
685
989
|
|
|
686
990
|
// src/components/patterns/ValueHelpDialog.tsx
|
|
687
|
-
import * as
|
|
991
|
+
import * as React7 from "react";
|
|
688
992
|
|
|
689
993
|
// src/components/feedback/Dialog.tsx
|
|
690
994
|
import { ModalOverlay, Modal, Dialog as AriaDialog2, Heading as Heading2 } from "react-aria-components";
|
|
691
|
-
import { jsx as
|
|
995
|
+
import { jsx as jsx21, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
692
996
|
function Dialog({
|
|
693
997
|
isOpen,
|
|
694
998
|
onOpenChange,
|
|
@@ -707,7 +1011,7 @@ function Dialog({
|
|
|
707
1011
|
onClose?.();
|
|
708
1012
|
onOpenChange?.(false);
|
|
709
1013
|
};
|
|
710
|
-
return /* @__PURE__ */
|
|
1014
|
+
return /* @__PURE__ */ jsx21(
|
|
711
1015
|
ModalOverlay,
|
|
712
1016
|
{
|
|
713
1017
|
className: "pire-modal-overlay",
|
|
@@ -716,16 +1020,16 @@ function Dialog({
|
|
|
716
1020
|
onOpenChange: (o) => {
|
|
717
1021
|
if (!o) close();
|
|
718
1022
|
},
|
|
719
|
-
children: /* @__PURE__ */
|
|
720
|
-
title ? /* @__PURE__ */
|
|
721
|
-
/* @__PURE__ */
|
|
722
|
-
/* @__PURE__ */
|
|
723
|
-
subtitle ? /* @__PURE__ */
|
|
1023
|
+
children: /* @__PURE__ */ jsx21(Modal, { className: cx("pire-modal", className), "data-size": size, style, children: /* @__PURE__ */ jsxs18(AriaDialog2, { className: "pire-dialog", children: [
|
|
1024
|
+
title ? /* @__PURE__ */ jsxs18("header", { className: "pire-dialog-head", children: [
|
|
1025
|
+
/* @__PURE__ */ jsxs18("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
1026
|
+
/* @__PURE__ */ jsx21(Heading2, { slot: "title", className: "pire-dialog-title", children: title }),
|
|
1027
|
+
subtitle ? /* @__PURE__ */ jsx21("p", { className: "pire-dialog-sub", style: { margin: 0 }, children: subtitle }) : null
|
|
724
1028
|
] }),
|
|
725
|
-
showClose ? /* @__PURE__ */
|
|
1029
|
+
showClose ? /* @__PURE__ */ jsx21(IconButton, { icon: "x", label: "Close", size: "sm", onPress: close }) : null
|
|
726
1030
|
] }) : null,
|
|
727
|
-
/* @__PURE__ */
|
|
728
|
-
footer ? /* @__PURE__ */
|
|
1031
|
+
/* @__PURE__ */ jsx21("div", { className: "pire-dialog-body", children }),
|
|
1032
|
+
footer ? /* @__PURE__ */ jsx21("footer", { className: "pire-dialog-foot", children: footer }) : null
|
|
729
1033
|
] }) })
|
|
730
1034
|
}
|
|
731
1035
|
);
|
|
@@ -740,7 +1044,7 @@ import {
|
|
|
740
1044
|
Row,
|
|
741
1045
|
Cell
|
|
742
1046
|
} from "react-aria-components";
|
|
743
|
-
import { jsx as
|
|
1047
|
+
import { jsx as jsx22, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
744
1048
|
function DataTable({
|
|
745
1049
|
columns,
|
|
746
1050
|
rows,
|
|
@@ -762,7 +1066,7 @@ function DataTable({
|
|
|
762
1066
|
if (keys === "all") return onSelectionChange?.(rows.map((r) => r.id));
|
|
763
1067
|
onSelectionChange?.([...keys]);
|
|
764
1068
|
};
|
|
765
|
-
return /* @__PURE__ */
|
|
1069
|
+
return /* @__PURE__ */ jsx22("div", { className: cx("pire-table-wrap", className), style, children: /* @__PURE__ */ jsxs19(
|
|
766
1070
|
Table,
|
|
767
1071
|
{
|
|
768
1072
|
className: "pire-table",
|
|
@@ -779,9 +1083,9 @@ function DataTable({
|
|
|
779
1083
|
if (row) onRowAction(row);
|
|
780
1084
|
} : void 0,
|
|
781
1085
|
children: [
|
|
782
|
-
/* @__PURE__ */
|
|
783
|
-
selectable ? /* @__PURE__ */
|
|
784
|
-
columns.map((c, i) => /* @__PURE__ */
|
|
1086
|
+
/* @__PURE__ */ jsxs19(TableHeader, { className: "pire-thead-row", children: [
|
|
1087
|
+
selectable ? /* @__PURE__ */ jsx22(Column, { className: "pire-th", width: 44, children: /* @__PURE__ */ jsx22(Checkbox, { slot: "selection", "aria-label": "Select all rows" }) }) : null,
|
|
1088
|
+
columns.map((c, i) => /* @__PURE__ */ jsx22(
|
|
785
1089
|
Column,
|
|
786
1090
|
{
|
|
787
1091
|
id: c.key,
|
|
@@ -791,9 +1095,9 @@ function DataTable({
|
|
|
791
1095
|
width: c.width,
|
|
792
1096
|
"data-align": c.numeric || c.align === "right" ? "right" : c.align,
|
|
793
1097
|
"data-allows-sorting": c.sortable ? "true" : void 0,
|
|
794
|
-
children: /* @__PURE__ */
|
|
1098
|
+
children: /* @__PURE__ */ jsxs19("span", { className: "pire-th-inner", children: [
|
|
795
1099
|
c.label,
|
|
796
|
-
c.sortable ? /* @__PURE__ */
|
|
1100
|
+
c.sortable ? /* @__PURE__ */ jsx22(
|
|
797
1101
|
Icon,
|
|
798
1102
|
{
|
|
799
1103
|
size: 12,
|
|
@@ -806,9 +1110,9 @@ function DataTable({
|
|
|
806
1110
|
c.key
|
|
807
1111
|
))
|
|
808
1112
|
] }),
|
|
809
|
-
/* @__PURE__ */
|
|
810
|
-
selectable ? /* @__PURE__ */
|
|
811
|
-
columns.map((c) => /* @__PURE__ */
|
|
1113
|
+
/* @__PURE__ */ jsx22(TableBody, { renderEmptyState: () => /* @__PURE__ */ jsx22("div", { className: "pire-table-empty", children: emptyLabel }), children: rows.map((row) => /* @__PURE__ */ jsxs19(Row, { id: row.id, className: "pire-tr", "data-pressable": onRowAction ? "true" : void 0, children: [
|
|
1114
|
+
selectable ? /* @__PURE__ */ jsx22(Cell, { className: "pire-td", children: /* @__PURE__ */ jsx22(Checkbox, { slot: "selection", "aria-label": "Select row" }) }) : null,
|
|
1115
|
+
columns.map((c) => /* @__PURE__ */ jsx22(
|
|
812
1116
|
Cell,
|
|
813
1117
|
{
|
|
814
1118
|
className: "pire-td",
|
|
@@ -825,7 +1129,7 @@ function DataTable({
|
|
|
825
1129
|
}
|
|
826
1130
|
|
|
827
1131
|
// src/components/patterns/ValueHelpDialog.tsx
|
|
828
|
-
import { jsx as
|
|
1132
|
+
import { jsx as jsx23, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
829
1133
|
function ValueHelpDialog({
|
|
830
1134
|
isOpen,
|
|
831
1135
|
title = "Select a record",
|
|
@@ -836,25 +1140,25 @@ function ValueHelpDialog({
|
|
|
836
1140
|
onSelect,
|
|
837
1141
|
onClose
|
|
838
1142
|
}) {
|
|
839
|
-
const [query, setQuery] =
|
|
840
|
-
|
|
1143
|
+
const [query, setQuery] = React7.useState("");
|
|
1144
|
+
React7.useEffect(() => {
|
|
841
1145
|
if (isOpen) setQuery("");
|
|
842
1146
|
}, [isOpen]);
|
|
843
|
-
const filtered =
|
|
1147
|
+
const filtered = React7.useMemo(() => {
|
|
844
1148
|
const q = query.trim().toLowerCase();
|
|
845
1149
|
if (!q) return rows;
|
|
846
1150
|
return rows.filter((row) => Object.values(row).some((v) => String(v).toLowerCase().includes(q)));
|
|
847
1151
|
}, [rows, query]);
|
|
848
|
-
return /* @__PURE__ */
|
|
1152
|
+
return /* @__PURE__ */ jsx23(
|
|
849
1153
|
Dialog,
|
|
850
1154
|
{
|
|
851
1155
|
isOpen,
|
|
852
1156
|
size: "lg",
|
|
853
1157
|
title,
|
|
854
1158
|
onClose,
|
|
855
|
-
footer: /* @__PURE__ */
|
|
856
|
-
children: /* @__PURE__ */
|
|
857
|
-
/* @__PURE__ */
|
|
1159
|
+
footer: /* @__PURE__ */ jsx23(Button, { variant: "tertiary", onPress: onClose, children: "Cancel" }),
|
|
1160
|
+
children: /* @__PURE__ */ jsxs20("div", { style: { display: "flex", flexDirection: "column", gap: "var(--sp-3)" }, children: [
|
|
1161
|
+
/* @__PURE__ */ jsx23(
|
|
858
1162
|
Input,
|
|
859
1163
|
{
|
|
860
1164
|
"aria-label": "Search records",
|
|
@@ -866,7 +1170,7 @@ function ValueHelpDialog({
|
|
|
866
1170
|
autoFocus: true
|
|
867
1171
|
}
|
|
868
1172
|
),
|
|
869
|
-
/* @__PURE__ */
|
|
1173
|
+
/* @__PURE__ */ jsx23(
|
|
870
1174
|
DataTable,
|
|
871
1175
|
{
|
|
872
1176
|
"aria-label": typeof title === "string" ? title : "Records",
|
|
@@ -886,7 +1190,7 @@ function ValueHelpDialog({
|
|
|
886
1190
|
}
|
|
887
1191
|
|
|
888
1192
|
// src/components/forms/ValueHelpField.tsx
|
|
889
|
-
import { jsx as
|
|
1193
|
+
import { jsx as jsx24, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
890
1194
|
var defaultFormat = (row) => [row.id, row.name ?? row.label ?? row.text].filter(Boolean).join(" \u2014 ");
|
|
891
1195
|
function ValueHelpField({
|
|
892
1196
|
label,
|
|
@@ -906,10 +1210,10 @@ function ValueHelpField({
|
|
|
906
1210
|
className,
|
|
907
1211
|
style
|
|
908
1212
|
}) {
|
|
909
|
-
const [open, setOpen] =
|
|
910
|
-
return /* @__PURE__ */
|
|
911
|
-
/* @__PURE__ */
|
|
912
|
-
/* @__PURE__ */
|
|
1213
|
+
const [open, setOpen] = React8.useState(false);
|
|
1214
|
+
return /* @__PURE__ */ jsxs21("div", { className: cx(className), style, children: [
|
|
1215
|
+
/* @__PURE__ */ jsxs21("div", { style: { display: "flex", gap: "var(--sp-2)", alignItems: "flex-end" }, children: [
|
|
1216
|
+
/* @__PURE__ */ jsx24(
|
|
913
1217
|
Input,
|
|
914
1218
|
{
|
|
915
1219
|
label,
|
|
@@ -923,7 +1227,7 @@ function ValueHelpField({
|
|
|
923
1227
|
errorMessage
|
|
924
1228
|
}
|
|
925
1229
|
),
|
|
926
|
-
allowsClear && value ? /* @__PURE__ */
|
|
1230
|
+
allowsClear && value ? /* @__PURE__ */ jsx24(
|
|
927
1231
|
IconButton,
|
|
928
1232
|
{
|
|
929
1233
|
icon: "x",
|
|
@@ -933,7 +1237,7 @@ function ValueHelpField({
|
|
|
933
1237
|
onPress: () => onChange?.(null)
|
|
934
1238
|
}
|
|
935
1239
|
) : null,
|
|
936
|
-
/* @__PURE__ */
|
|
1240
|
+
/* @__PURE__ */ jsx24(
|
|
937
1241
|
IconButton,
|
|
938
1242
|
{
|
|
939
1243
|
icon: "search",
|
|
@@ -944,7 +1248,7 @@ function ValueHelpField({
|
|
|
944
1248
|
}
|
|
945
1249
|
)
|
|
946
1250
|
] }),
|
|
947
|
-
/* @__PURE__ */
|
|
1251
|
+
/* @__PURE__ */ jsx24(
|
|
948
1252
|
ValueHelpDialog,
|
|
949
1253
|
{
|
|
950
1254
|
isOpen: open,
|
|
@@ -959,26 +1263,136 @@ function ValueHelpField({
|
|
|
959
1263
|
}
|
|
960
1264
|
|
|
961
1265
|
// src/components/navigation/ShellBar.tsx
|
|
962
|
-
import { jsx as
|
|
1266
|
+
import { jsx as jsx25, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
963
1267
|
var initials2 = (name) => name.trim().split(/\s+/).slice(0, 2).map((p) => p[0]).join("").toUpperCase();
|
|
964
|
-
function ShellBar({
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
1268
|
+
function ShellBar({
|
|
1269
|
+
product,
|
|
1270
|
+
monogram,
|
|
1271
|
+
title,
|
|
1272
|
+
onMenu,
|
|
1273
|
+
onSearch,
|
|
1274
|
+
menuLabel = "Open navigation",
|
|
1275
|
+
searchLabel = "Search",
|
|
1276
|
+
actions,
|
|
1277
|
+
user,
|
|
1278
|
+
className,
|
|
1279
|
+
...rest
|
|
1280
|
+
}) {
|
|
1281
|
+
return /* @__PURE__ */ jsxs22("header", { className: cx("pire-shellbar", className), ...rest, children: [
|
|
1282
|
+
onMenu ? /* @__PURE__ */ jsx25(IconButton, { icon: "menu", label: menuLabel, variant: "inverse", size: "sm", onPress: onMenu }) : null,
|
|
1283
|
+
monogram ? /* @__PURE__ */ jsx25("span", { className: "pire-shellbar-mono", "aria-hidden": "true", children: monogram }) : null,
|
|
1284
|
+
product ? /* @__PURE__ */ jsx25("span", { className: "pire-shellbar-product", children: product }) : null,
|
|
1285
|
+
title ? /* @__PURE__ */ jsx25("span", { className: "pire-shellbar-title", children: title }) : null,
|
|
1286
|
+
/* @__PURE__ */ jsx25("span", { className: "pire-shellbar-spacer" }),
|
|
1287
|
+
onSearch ? /* @__PURE__ */ jsx25(IconButton, { icon: "search", label: searchLabel, variant: "inverse", size: "sm", onPress: onSearch }) : null,
|
|
972
1288
|
actions,
|
|
973
|
-
user ? /* @__PURE__ */
|
|
1289
|
+
user ? /* @__PURE__ */ jsx25("span", { className: "pire-avatar", title: user, "aria-label": user, role: "img", children: initials2(user) }) : null
|
|
974
1290
|
] });
|
|
975
1291
|
}
|
|
976
1292
|
|
|
977
1293
|
// src/components/navigation/SideNav.tsx
|
|
978
|
-
import
|
|
979
|
-
import {
|
|
980
|
-
|
|
981
|
-
|
|
1294
|
+
import * as React9 from "react";
|
|
1295
|
+
import { Button as AriaButton9, Disclosure, DisclosureGroup, DisclosurePanel } from "react-aria-components";
|
|
1296
|
+
import { jsx as jsx26, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1297
|
+
function findActiveParent(groups, value) {
|
|
1298
|
+
if (value == null) return void 0;
|
|
1299
|
+
for (const group of groups) {
|
|
1300
|
+
for (const item of group.items) {
|
|
1301
|
+
if (item.items?.some((child) => child.id === value)) return item.id;
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
return void 0;
|
|
1305
|
+
}
|
|
1306
|
+
function SideNav({
|
|
1307
|
+
groups,
|
|
1308
|
+
value,
|
|
1309
|
+
onChange,
|
|
1310
|
+
expandedIds,
|
|
1311
|
+
defaultExpandedIds,
|
|
1312
|
+
onExpandedChange,
|
|
1313
|
+
collapsed,
|
|
1314
|
+
footer,
|
|
1315
|
+
className,
|
|
1316
|
+
...rest
|
|
1317
|
+
}) {
|
|
1318
|
+
const activeParent = findActiveParent(groups, value);
|
|
1319
|
+
const isControlled = expandedIds != null;
|
|
1320
|
+
const [ownExpanded, setOwnExpanded] = React9.useState(
|
|
1321
|
+
() => new Set(defaultExpandedIds ?? (activeParent ? [activeParent] : []))
|
|
1322
|
+
);
|
|
1323
|
+
const [lastValue, setLastValue] = React9.useState(value);
|
|
1324
|
+
if (value !== lastValue) {
|
|
1325
|
+
setLastValue(value);
|
|
1326
|
+
if (!isControlled && activeParent && !ownExpanded.has(activeParent)) {
|
|
1327
|
+
setOwnExpanded(new Set(ownExpanded).add(activeParent));
|
|
1328
|
+
}
|
|
1329
|
+
}
|
|
1330
|
+
const expanded = isControlled ? new Set(expandedIds) : ownExpanded;
|
|
1331
|
+
const commitExpanded = (next) => {
|
|
1332
|
+
if (!isControlled) setOwnExpanded(next);
|
|
1333
|
+
onExpandedChange?.([...next]);
|
|
1334
|
+
};
|
|
1335
|
+
const handleExpandedChange = (keys) => commitExpanded(new Set([...keys].map(String)));
|
|
1336
|
+
const toggleExpanded = (id) => {
|
|
1337
|
+
const next = new Set(expanded);
|
|
1338
|
+
if (!next.delete(id)) next.add(id);
|
|
1339
|
+
commitExpanded(next);
|
|
1340
|
+
};
|
|
1341
|
+
const renderRow = (item, onPress, isGroup) => {
|
|
1342
|
+
const selected = !isGroup && item.id === value;
|
|
1343
|
+
const button = /* @__PURE__ */ jsxs23(
|
|
1344
|
+
AriaButton9,
|
|
1345
|
+
{
|
|
1346
|
+
className: "pire-sidenav-item",
|
|
1347
|
+
"data-selected": selected ? "true" : void 0,
|
|
1348
|
+
"data-active-child": isGroup && item.id === activeParent ? "true" : void 0,
|
|
1349
|
+
"aria-current": selected ? "page" : void 0,
|
|
1350
|
+
onPress,
|
|
1351
|
+
children: [
|
|
1352
|
+
item.icon ? /* @__PURE__ */ jsx26(Icon, { name: item.icon, size: 16 }) : null,
|
|
1353
|
+
collapsed ? null : /* @__PURE__ */ jsx26("span", { children: item.label }),
|
|
1354
|
+
item.count != null && !collapsed ? /* @__PURE__ */ jsx26("span", { className: "pire-sidenav-count", children: item.count }) : null
|
|
1355
|
+
]
|
|
1356
|
+
},
|
|
1357
|
+
item.id
|
|
1358
|
+
);
|
|
1359
|
+
return collapsed ? /* @__PURE__ */ jsx26(Tooltip, { label: item.label, placement: "right", children: button }, item.id) : button;
|
|
1360
|
+
};
|
|
1361
|
+
const renderSection = (item) => /* @__PURE__ */ jsxs23(Disclosure, { id: item.id, className: "pire-sidenav-section", children: [
|
|
1362
|
+
/* @__PURE__ */ jsxs23(
|
|
1363
|
+
AriaButton9,
|
|
1364
|
+
{
|
|
1365
|
+
slot: "trigger",
|
|
1366
|
+
className: "pire-sidenav-item",
|
|
1367
|
+
"data-kind": "group",
|
|
1368
|
+
"data-active-child": item.id === activeParent ? "true" : void 0,
|
|
1369
|
+
children: [
|
|
1370
|
+
item.icon ? /* @__PURE__ */ jsx26(Icon, { name: item.icon, size: 16 }) : null,
|
|
1371
|
+
/* @__PURE__ */ jsx26("span", { children: item.label }),
|
|
1372
|
+
item.count != null ? /* @__PURE__ */ jsx26("span", { className: "pire-sidenav-count", children: item.count }) : null,
|
|
1373
|
+
/* @__PURE__ */ jsx26(Icon, { name: "chevron-down", size: 16, className: "pire-sidenav-chevron" })
|
|
1374
|
+
]
|
|
1375
|
+
}
|
|
1376
|
+
),
|
|
1377
|
+
/* @__PURE__ */ jsx26(DisclosurePanel, { className: "pire-sidenav-subnav", children: item.items?.map((child) => {
|
|
1378
|
+
const selected = child.id === value;
|
|
1379
|
+
return /* @__PURE__ */ jsxs23(
|
|
1380
|
+
AriaButton9,
|
|
1381
|
+
{
|
|
1382
|
+
className: "pire-sidenav-item pire-sidenav-subitem",
|
|
1383
|
+
"data-selected": selected ? "true" : void 0,
|
|
1384
|
+
"aria-current": selected ? "page" : void 0,
|
|
1385
|
+
onPress: () => onChange?.(child.id),
|
|
1386
|
+
children: [
|
|
1387
|
+
/* @__PURE__ */ jsx26("span", { children: child.label }),
|
|
1388
|
+
child.count != null ? /* @__PURE__ */ jsx26("span", { className: "pire-sidenav-count", children: child.count }) : null
|
|
1389
|
+
]
|
|
1390
|
+
},
|
|
1391
|
+
child.id
|
|
1392
|
+
);
|
|
1393
|
+
}) })
|
|
1394
|
+
] }, item.id);
|
|
1395
|
+
return /* @__PURE__ */ jsxs23(
|
|
982
1396
|
"nav",
|
|
983
1397
|
{
|
|
984
1398
|
className: cx("pire-sidenav", className),
|
|
@@ -986,29 +1400,28 @@ function SideNav({ groups, value, onChange, collapsed, footer, className, ...res
|
|
|
986
1400
|
"aria-label": "Main navigation",
|
|
987
1401
|
...rest,
|
|
988
1402
|
children: [
|
|
989
|
-
groups.map((group, gi) =>
|
|
990
|
-
|
|
991
|
-
group.items.map((item) => {
|
|
992
|
-
const
|
|
993
|
-
|
|
994
|
-
|
|
1403
|
+
groups.map((group, gi) => {
|
|
1404
|
+
const hasSections = !collapsed && group.items.some((item) => item.items?.length);
|
|
1405
|
+
const rows = group.items.map((item) => {
|
|
1406
|
+
const isGroup = Boolean(item.items?.length);
|
|
1407
|
+
if (isGroup && !collapsed) return renderSection(item);
|
|
1408
|
+
return renderRow(item, () => isGroup ? toggleExpanded(item.id) : onChange?.(item.id), isGroup);
|
|
1409
|
+
});
|
|
1410
|
+
return /* @__PURE__ */ jsxs23("div", { className: "pire-sidenav-group", children: [
|
|
1411
|
+
group.label && !collapsed ? /* @__PURE__ */ jsx26("div", { className: "pire-sidenav-label", children: group.label }) : null,
|
|
1412
|
+
hasSections ? /* @__PURE__ */ jsx26(
|
|
1413
|
+
DisclosureGroup,
|
|
995
1414
|
{
|
|
996
|
-
className: "pire-sidenav-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
children:
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
item.id
|
|
1007
|
-
);
|
|
1008
|
-
return collapsed ? /* @__PURE__ */ jsx24(Tooltip, { label: item.label, placement: "right", children: button }, item.id) : button;
|
|
1009
|
-
})
|
|
1010
|
-
] }, group.label ?? gi)),
|
|
1011
|
-
footer ? /* @__PURE__ */ jsx24("div", { className: "pire-sidenav-footer", children: footer }) : null
|
|
1415
|
+
className: "pire-sidenav-tree",
|
|
1416
|
+
allowsMultipleExpanded: true,
|
|
1417
|
+
expandedKeys: expanded,
|
|
1418
|
+
onExpandedChange: handleExpandedChange,
|
|
1419
|
+
children: rows
|
|
1420
|
+
}
|
|
1421
|
+
) : rows
|
|
1422
|
+
] }, group.label ?? gi);
|
|
1423
|
+
}),
|
|
1424
|
+
footer ? /* @__PURE__ */ jsx26("div", { className: "pire-sidenav-footer", children: footer }) : null
|
|
1012
1425
|
]
|
|
1013
1426
|
}
|
|
1014
1427
|
);
|
|
@@ -1016,9 +1429,9 @@ function SideNav({ groups, value, onChange, collapsed, footer, className, ...res
|
|
|
1016
1429
|
|
|
1017
1430
|
// src/components/navigation/Tabs.tsx
|
|
1018
1431
|
import { Tabs as AriaTabs, TabList, Tab as AriaTab, TabPanel } from "react-aria-components";
|
|
1019
|
-
import { jsx as
|
|
1432
|
+
import { jsx as jsx27, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1020
1433
|
function Tabs({ items, value, defaultValue, onChange, panels, className, style, ...rest }) {
|
|
1021
|
-
return /* @__PURE__ */
|
|
1434
|
+
return /* @__PURE__ */ jsxs24(
|
|
1022
1435
|
AriaTabs,
|
|
1023
1436
|
{
|
|
1024
1437
|
className,
|
|
@@ -1027,12 +1440,12 @@ function Tabs({ items, value, defaultValue, onChange, panels, className, style,
|
|
|
1027
1440
|
defaultSelectedKey: defaultValue,
|
|
1028
1441
|
onSelectionChange: (k) => onChange?.(String(k)),
|
|
1029
1442
|
children: [
|
|
1030
|
-
/* @__PURE__ */
|
|
1031
|
-
item.icon ? /* @__PURE__ */
|
|
1443
|
+
/* @__PURE__ */ jsx27(TabList, { className: "pire-tablist", items, "aria-label": rest["aria-label"] ?? "Views", children: (item) => /* @__PURE__ */ jsxs24(AriaTab, { className: cx("pire-tab"), id: item.id, isDisabled: item.isDisabled, children: [
|
|
1444
|
+
item.icon ? /* @__PURE__ */ jsx27(Icon, { name: item.icon, size: 16 }) : null,
|
|
1032
1445
|
item.label,
|
|
1033
|
-
item.count != null ? /* @__PURE__ */
|
|
1446
|
+
item.count != null ? /* @__PURE__ */ jsx27("span", { className: "pire-tab-count", children: item.count }) : null
|
|
1034
1447
|
] }) }),
|
|
1035
|
-
items.map((item) => /* @__PURE__ */
|
|
1448
|
+
items.map((item) => /* @__PURE__ */ jsx27(TabPanel, { id: item.id, className: panels ? "pire-tabpanel" : void 0, children: panels?.[item.id] }, item.id))
|
|
1036
1449
|
]
|
|
1037
1450
|
}
|
|
1038
1451
|
);
|
|
@@ -1040,9 +1453,9 @@ function Tabs({ items, value, defaultValue, onChange, panels, className, style,
|
|
|
1040
1453
|
|
|
1041
1454
|
// src/components/navigation/Breadcrumb.tsx
|
|
1042
1455
|
import { Breadcrumbs as AriaBreadcrumbs, Breadcrumb as AriaBreadcrumb, Link } from "react-aria-components";
|
|
1043
|
-
import { jsx as
|
|
1456
|
+
import { jsx as jsx28, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
1044
1457
|
function Breadcrumb({ items, onNavigate, className, style }) {
|
|
1045
|
-
return /* @__PURE__ */
|
|
1458
|
+
return /* @__PURE__ */ jsx28(
|
|
1046
1459
|
AriaBreadcrumbs,
|
|
1047
1460
|
{
|
|
1048
1461
|
className: cx("pire-breadcrumbs", className),
|
|
@@ -1051,9 +1464,9 @@ function Breadcrumb({ items, onNavigate, className, style }) {
|
|
|
1051
1464
|
onAction: (key) => onNavigate?.(String(key)),
|
|
1052
1465
|
children: (item) => {
|
|
1053
1466
|
const last = items[items.length - 1] === item;
|
|
1054
|
-
return /* @__PURE__ */
|
|
1055
|
-
last ? item.label : /* @__PURE__ */
|
|
1056
|
-
last ? null : /* @__PURE__ */
|
|
1467
|
+
return /* @__PURE__ */ jsxs25(AriaBreadcrumb, { className: "pire-breadcrumb", id: item.id ?? item.label, children: [
|
|
1468
|
+
last ? item.label : /* @__PURE__ */ jsx28(Link, { href: item.href, children: item.label }),
|
|
1469
|
+
last ? null : /* @__PURE__ */ jsx28(Icon, { name: "chevron-right", size: 12, style: { color: "var(--text-tertiary)" } })
|
|
1057
1470
|
] });
|
|
1058
1471
|
}
|
|
1059
1472
|
}
|
|
@@ -1061,7 +1474,7 @@ function Breadcrumb({ items, onNavigate, className, style }) {
|
|
|
1061
1474
|
}
|
|
1062
1475
|
|
|
1063
1476
|
// src/components/navigation/Pagination.tsx
|
|
1064
|
-
import { jsx as
|
|
1477
|
+
import { jsx as jsx29, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
1065
1478
|
function Pagination({
|
|
1066
1479
|
page = 1,
|
|
1067
1480
|
pageSize = 25,
|
|
@@ -1075,15 +1488,15 @@ function Pagination({
|
|
|
1075
1488
|
const pages = Math.max(1, Math.ceil(total / pageSize));
|
|
1076
1489
|
const from = total === 0 ? 0 : (page - 1) * pageSize + 1;
|
|
1077
1490
|
const to = Math.min(total, page * pageSize);
|
|
1078
|
-
return /* @__PURE__ */
|
|
1079
|
-
/* @__PURE__ */
|
|
1491
|
+
return /* @__PURE__ */ jsxs26("nav", { className: cx("pire-pagination", className), style, "aria-label": "Pagination", children: [
|
|
1492
|
+
/* @__PURE__ */ jsxs26("span", { className: "pire-pagination-count", children: [
|
|
1080
1493
|
from.toLocaleString(),
|
|
1081
1494
|
"\u2013",
|
|
1082
1495
|
to.toLocaleString(),
|
|
1083
1496
|
" of ",
|
|
1084
1497
|
total.toLocaleString()
|
|
1085
1498
|
] }),
|
|
1086
|
-
/* @__PURE__ */
|
|
1499
|
+
/* @__PURE__ */ jsx29(
|
|
1087
1500
|
IconButton,
|
|
1088
1501
|
{
|
|
1089
1502
|
icon: "chevron-left",
|
|
@@ -1094,13 +1507,13 @@ function Pagination({
|
|
|
1094
1507
|
onPress: () => onPageChange?.(page - 1)
|
|
1095
1508
|
}
|
|
1096
1509
|
),
|
|
1097
|
-
/* @__PURE__ */
|
|
1510
|
+
/* @__PURE__ */ jsxs26("span", { className: "pire-pagination-count", "aria-live": "polite", children: [
|
|
1098
1511
|
"Page ",
|
|
1099
1512
|
page,
|
|
1100
1513
|
" of ",
|
|
1101
1514
|
pages
|
|
1102
1515
|
] }),
|
|
1103
|
-
/* @__PURE__ */
|
|
1516
|
+
/* @__PURE__ */ jsx29(
|
|
1104
1517
|
IconButton,
|
|
1105
1518
|
{
|
|
1106
1519
|
icon: "chevron-right",
|
|
@@ -1111,7 +1524,7 @@ function Pagination({
|
|
|
1111
1524
|
onPress: () => onPageChange?.(page + 1)
|
|
1112
1525
|
}
|
|
1113
1526
|
),
|
|
1114
|
-
onPageSizeChange ? /* @__PURE__ */
|
|
1527
|
+
onPageSizeChange ? /* @__PURE__ */ jsx29(
|
|
1115
1528
|
Select,
|
|
1116
1529
|
{
|
|
1117
1530
|
"aria-label": "Rows per page",
|
|
@@ -1127,7 +1540,7 @@ function Pagination({
|
|
|
1127
1540
|
}
|
|
1128
1541
|
|
|
1129
1542
|
// src/components/feedback/InlineMessage.tsx
|
|
1130
|
-
import { jsx as
|
|
1543
|
+
import { jsx as jsx30, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
1131
1544
|
var KIND_ICON = {
|
|
1132
1545
|
info: "info",
|
|
1133
1546
|
success: "check-circle-2",
|
|
@@ -1136,7 +1549,7 @@ var KIND_ICON = {
|
|
|
1136
1549
|
};
|
|
1137
1550
|
function InlineMessage({ kind = "info", title, action, onClose, children, className, ...rest }) {
|
|
1138
1551
|
const assertive = kind === "error" || kind === "warning";
|
|
1139
|
-
return /* @__PURE__ */
|
|
1552
|
+
return /* @__PURE__ */ jsxs27(
|
|
1140
1553
|
"div",
|
|
1141
1554
|
{
|
|
1142
1555
|
className: cx("pire-msg", className),
|
|
@@ -1145,21 +1558,21 @@ function InlineMessage({ kind = "info", title, action, onClose, children, classN
|
|
|
1145
1558
|
"aria-live": assertive ? "assertive" : "polite",
|
|
1146
1559
|
...rest,
|
|
1147
1560
|
children: [
|
|
1148
|
-
/* @__PURE__ */
|
|
1149
|
-
/* @__PURE__ */
|
|
1150
|
-
title ? /* @__PURE__ */
|
|
1151
|
-
children ? /* @__PURE__ */
|
|
1561
|
+
/* @__PURE__ */ jsx30(Icon, { name: KIND_ICON[kind], size: 16, style: { marginTop: 2 } }),
|
|
1562
|
+
/* @__PURE__ */ jsxs27("div", { style: { flex: 1, display: "flex", flexDirection: "column", gap: "var(--sp-1)" }, children: [
|
|
1563
|
+
title ? /* @__PURE__ */ jsx30("span", { className: "pire-msg-title", children: title }) : null,
|
|
1564
|
+
children ? /* @__PURE__ */ jsx30("span", { className: "pire-msg-body", children }) : null,
|
|
1152
1565
|
action
|
|
1153
1566
|
] }),
|
|
1154
|
-
onClose ? /* @__PURE__ */
|
|
1567
|
+
onClose ? /* @__PURE__ */ jsx30(IconButton, { icon: "x", label: "Dismiss message", size: "sm", onPress: onClose }) : null
|
|
1155
1568
|
]
|
|
1156
1569
|
}
|
|
1157
1570
|
);
|
|
1158
1571
|
}
|
|
1159
1572
|
|
|
1160
1573
|
// src/components/feedback/ProgressBar.tsx
|
|
1161
|
-
import { ProgressBar as AriaProgressBar, Label as
|
|
1162
|
-
import { Fragment as Fragment2, jsx as
|
|
1574
|
+
import { ProgressBar as AriaProgressBar, Label as Label9 } from "react-aria-components";
|
|
1575
|
+
import { Fragment as Fragment2, jsx as jsx31, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
1163
1576
|
function ProgressBar({
|
|
1164
1577
|
value = 0,
|
|
1165
1578
|
minValue = 0,
|
|
@@ -1172,7 +1585,7 @@ function ProgressBar({
|
|
|
1172
1585
|
className,
|
|
1173
1586
|
style
|
|
1174
1587
|
}) {
|
|
1175
|
-
return /* @__PURE__ */
|
|
1588
|
+
return /* @__PURE__ */ jsx31(
|
|
1176
1589
|
AriaProgressBar,
|
|
1177
1590
|
{
|
|
1178
1591
|
className: cx("pire-progress", className),
|
|
@@ -1183,20 +1596,20 @@ function ProgressBar({
|
|
|
1183
1596
|
maxValue,
|
|
1184
1597
|
isIndeterminate,
|
|
1185
1598
|
style,
|
|
1186
|
-
children: ({ percentage, valueText }) => /* @__PURE__ */
|
|
1187
|
-
label || showValue ? /* @__PURE__ */
|
|
1188
|
-
label ? /* @__PURE__ */
|
|
1189
|
-
showValue && !isIndeterminate ? /* @__PURE__ */
|
|
1599
|
+
children: ({ percentage, valueText }) => /* @__PURE__ */ jsxs28(Fragment2, { children: [
|
|
1600
|
+
label || showValue ? /* @__PURE__ */ jsxs28("div", { className: "pire-progress-head", children: [
|
|
1601
|
+
label ? /* @__PURE__ */ jsx31(Label9, { children: label }) : /* @__PURE__ */ jsx31("span", {}),
|
|
1602
|
+
showValue && !isIndeterminate ? /* @__PURE__ */ jsx31("span", { className: "pire-numeric", children: valueText }) : null
|
|
1190
1603
|
] }) : null,
|
|
1191
|
-
/* @__PURE__ */
|
|
1604
|
+
/* @__PURE__ */ jsx31("div", { className: "pire-progress-track", children: /* @__PURE__ */ jsx31("div", { className: "pire-progress-fill", style: { width: `${isIndeterminate ? 40 : percentage}%` } }) })
|
|
1192
1605
|
] })
|
|
1193
1606
|
}
|
|
1194
1607
|
);
|
|
1195
1608
|
}
|
|
1196
1609
|
|
|
1197
1610
|
// src/components/feedback/Toast.tsx
|
|
1198
|
-
import * as
|
|
1199
|
-
import { jsx as
|
|
1611
|
+
import * as React10 from "react";
|
|
1612
|
+
import { jsx as jsx32, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
1200
1613
|
var KIND_ICON2 = {
|
|
1201
1614
|
info: "info",
|
|
1202
1615
|
success: "check-circle-2",
|
|
@@ -1204,7 +1617,7 @@ var KIND_ICON2 = {
|
|
|
1204
1617
|
error: "alert-octagon"
|
|
1205
1618
|
};
|
|
1206
1619
|
function Toast({ kind = "success", onClose, position = "bottom-center", children, className, ...rest }) {
|
|
1207
|
-
return /* @__PURE__ */
|
|
1620
|
+
return /* @__PURE__ */ jsxs29(
|
|
1208
1621
|
"div",
|
|
1209
1622
|
{
|
|
1210
1623
|
className: cx("pire-toast", className),
|
|
@@ -1213,39 +1626,84 @@ function Toast({ kind = "success", onClose, position = "bottom-center", children
|
|
|
1213
1626
|
"aria-live": kind === "error" ? "assertive" : "polite",
|
|
1214
1627
|
...rest,
|
|
1215
1628
|
children: [
|
|
1216
|
-
/* @__PURE__ */
|
|
1217
|
-
/* @__PURE__ */
|
|
1218
|
-
onClose ? /* @__PURE__ */
|
|
1629
|
+
/* @__PURE__ */ jsx32(Icon, { name: KIND_ICON2[kind], size: 16 }),
|
|
1630
|
+
/* @__PURE__ */ jsx32("span", { style: { flex: 1 }, children }),
|
|
1631
|
+
onClose ? /* @__PURE__ */ jsx32(IconButton, { icon: "x", label: "Dismiss", size: "sm", variant: "inverse", onPress: onClose }) : null
|
|
1219
1632
|
]
|
|
1220
1633
|
}
|
|
1221
1634
|
);
|
|
1222
1635
|
}
|
|
1223
|
-
var ToastContext =
|
|
1636
|
+
var ToastContext = React10.createContext(null);
|
|
1224
1637
|
function ToastProvider({ children, timeout = 6e3 }) {
|
|
1225
|
-
const [toasts, setToasts] =
|
|
1226
|
-
const close =
|
|
1227
|
-
const add =
|
|
1638
|
+
const [toasts, setToasts] = React10.useState([]);
|
|
1639
|
+
const close = React10.useCallback((id) => setToasts((t) => t.filter((x) => x.id !== id)), []);
|
|
1640
|
+
const add = React10.useCallback((toast) => {
|
|
1228
1641
|
const id = Math.random().toString(36).slice(2);
|
|
1229
1642
|
setToasts((t) => [...t, { ...toast, id }]);
|
|
1230
1643
|
const ms = toast.timeout ?? timeout;
|
|
1231
1644
|
if (ms > 0) setTimeout(() => close(id), ms);
|
|
1232
1645
|
return id;
|
|
1233
1646
|
}, [close, timeout]);
|
|
1234
|
-
const value =
|
|
1235
|
-
return /* @__PURE__ */
|
|
1647
|
+
const value = React10.useMemo(() => ({ add, close }), [add, close]);
|
|
1648
|
+
return /* @__PURE__ */ jsxs29(ToastContext.Provider, { value, children: [
|
|
1236
1649
|
children,
|
|
1237
|
-
/* @__PURE__ */
|
|
1650
|
+
/* @__PURE__ */ jsx32("div", { className: "pire-toast-region", role: "region", "aria-label": "Notifications", children: toasts.map((t) => /* @__PURE__ */ jsx32(Toast, { kind: t.kind, onClose: () => close(t.id), style: { position: "static", transform: "none" }, children: t.message }, t.id)) })
|
|
1238
1651
|
] });
|
|
1239
1652
|
}
|
|
1240
1653
|
function useToast() {
|
|
1241
|
-
const ctx =
|
|
1654
|
+
const ctx = React10.useContext(ToastContext);
|
|
1242
1655
|
if (!ctx) throw new Error("useToast must be used inside <ToastProvider>");
|
|
1243
1656
|
return ctx;
|
|
1244
1657
|
}
|
|
1245
1658
|
|
|
1659
|
+
// src/components/feedback/Skeleton.tsx
|
|
1660
|
+
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
1661
|
+
function Skeleton({ shape = "text", width, height, className, style, ...rest }) {
|
|
1662
|
+
return /* @__PURE__ */ jsx33(
|
|
1663
|
+
"div",
|
|
1664
|
+
{
|
|
1665
|
+
className: cx("pire-skeleton", className),
|
|
1666
|
+
"data-shape": shape,
|
|
1667
|
+
"aria-hidden": "true",
|
|
1668
|
+
style: { width, height, ...style },
|
|
1669
|
+
...rest
|
|
1670
|
+
}
|
|
1671
|
+
);
|
|
1672
|
+
}
|
|
1673
|
+
var BAR_WIDTHS = ["72%", "54%", "86%", "63%"];
|
|
1674
|
+
function SkeletonTableRow({ columns, density = "regular", className, style, ...rest }) {
|
|
1675
|
+
const cells = typeof columns === "number" ? Array.from({ length: columns }, () => ({})) : columns;
|
|
1676
|
+
return /* @__PURE__ */ jsx33(
|
|
1677
|
+
"div",
|
|
1678
|
+
{
|
|
1679
|
+
className: cx("pire-skeleton-row", className),
|
|
1680
|
+
"data-density": density,
|
|
1681
|
+
"aria-hidden": "true",
|
|
1682
|
+
style,
|
|
1683
|
+
...rest,
|
|
1684
|
+
children: cells.map((c, i) => {
|
|
1685
|
+
const align = c.numeric ? "right" : c.align ?? "left";
|
|
1686
|
+
return (
|
|
1687
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: columns are positional and never reordered.
|
|
1688
|
+
/* @__PURE__ */ jsx33(
|
|
1689
|
+
"div",
|
|
1690
|
+
{
|
|
1691
|
+
className: "pire-skeleton-cell",
|
|
1692
|
+
"data-align": align,
|
|
1693
|
+
style: { width: c.width, flex: c.width ? "0 0 auto" : void 0 },
|
|
1694
|
+
children: /* @__PURE__ */ jsx33(Skeleton, { width: BAR_WIDTHS[i % BAR_WIDTHS.length] })
|
|
1695
|
+
},
|
|
1696
|
+
i
|
|
1697
|
+
)
|
|
1698
|
+
);
|
|
1699
|
+
})
|
|
1700
|
+
}
|
|
1701
|
+
);
|
|
1702
|
+
}
|
|
1703
|
+
|
|
1246
1704
|
// src/components/data/KpiTile.tsx
|
|
1247
|
-
import { Button as
|
|
1248
|
-
import { Fragment as Fragment3, jsx as
|
|
1705
|
+
import { Button as AriaButton10 } from "react-aria-components";
|
|
1706
|
+
import { Fragment as Fragment3, jsx as jsx34, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
1249
1707
|
function KpiTile({
|
|
1250
1708
|
label,
|
|
1251
1709
|
value,
|
|
@@ -1261,50 +1719,50 @@ function KpiTile({
|
|
|
1261
1719
|
style
|
|
1262
1720
|
}) {
|
|
1263
1721
|
const tone = deltaTone ?? (deltaDirection === "down" ? "negative" : "positive");
|
|
1264
|
-
const body = /* @__PURE__ */
|
|
1265
|
-
/* @__PURE__ */
|
|
1266
|
-
icon ? /* @__PURE__ */
|
|
1722
|
+
const body = /* @__PURE__ */ jsxs30(Fragment3, { children: [
|
|
1723
|
+
/* @__PURE__ */ jsxs30("span", { className: "pire-kpi-label", children: [
|
|
1724
|
+
icon ? /* @__PURE__ */ jsx34(Icon, { name: icon, size: 16 }) : null,
|
|
1267
1725
|
label
|
|
1268
1726
|
] }),
|
|
1269
|
-
/* @__PURE__ */
|
|
1727
|
+
/* @__PURE__ */ jsxs30("span", { className: "pire-kpi-value", children: [
|
|
1270
1728
|
value,
|
|
1271
|
-
unit ? /* @__PURE__ */
|
|
1729
|
+
unit ? /* @__PURE__ */ jsx34("span", { className: "pire-kpi-unit", children: unit }) : null
|
|
1272
1730
|
] }),
|
|
1273
|
-
delta ? /* @__PURE__ */
|
|
1274
|
-
deltaDirection ? /* @__PURE__ */
|
|
1731
|
+
delta ? /* @__PURE__ */ jsxs30("span", { className: "pire-kpi-delta", "data-tone": tone, children: [
|
|
1732
|
+
deltaDirection ? /* @__PURE__ */ jsx34(Icon, { name: deltaDirection === "up" ? "trending-up" : "trending-down", size: 12 }) : null,
|
|
1275
1733
|
delta
|
|
1276
1734
|
] }) : null,
|
|
1277
|
-
footnote ? /* @__PURE__ */
|
|
1735
|
+
footnote ? /* @__PURE__ */ jsx34("span", { className: "pire-kpi-foot", children: footnote }) : null
|
|
1278
1736
|
] });
|
|
1279
1737
|
const props = { className: cx("pire-kpi", className), "data-status": status, style };
|
|
1280
|
-
return onPress ? /* @__PURE__ */
|
|
1738
|
+
return onPress ? /* @__PURE__ */ jsx34(AriaButton10, { ...props, "data-pressable": "true", onPress, children: body }) : /* @__PURE__ */ jsx34("div", { ...props, children: body });
|
|
1281
1739
|
}
|
|
1282
1740
|
|
|
1283
1741
|
// src/components/data/ObjectHeader.tsx
|
|
1284
|
-
import { jsx as
|
|
1742
|
+
import { jsx as jsx35, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
1285
1743
|
function ObjectHeader({ title, subtitle, id, breadcrumb, badge, facts, actions, className, ...rest }) {
|
|
1286
|
-
return /* @__PURE__ */
|
|
1744
|
+
return /* @__PURE__ */ jsxs31("header", { className: cx("pire-objheader", className), ...rest, children: [
|
|
1287
1745
|
breadcrumb,
|
|
1288
|
-
/* @__PURE__ */
|
|
1289
|
-
/* @__PURE__ */
|
|
1290
|
-
/* @__PURE__ */
|
|
1291
|
-
subtitle || id ? /* @__PURE__ */
|
|
1746
|
+
/* @__PURE__ */ jsxs31("div", { className: "pire-objheader-row", children: [
|
|
1747
|
+
/* @__PURE__ */ jsxs31("div", { style: { minWidth: 0 }, children: [
|
|
1748
|
+
/* @__PURE__ */ jsx35("h1", { className: "pire-objheader-title", children: title }),
|
|
1749
|
+
subtitle || id ? /* @__PURE__ */ jsxs31("div", { className: "pire-objheader-sub", children: [
|
|
1292
1750
|
subtitle,
|
|
1293
|
-
id ? /* @__PURE__ */
|
|
1751
|
+
id ? /* @__PURE__ */ jsx35("span", { className: "pire-objheader-id", children: id }) : null
|
|
1294
1752
|
] }) : null
|
|
1295
1753
|
] }),
|
|
1296
1754
|
badge,
|
|
1297
|
-
actions ? /* @__PURE__ */
|
|
1755
|
+
actions ? /* @__PURE__ */ jsx35("div", { className: "pire-objheader-actions", children: actions }) : null
|
|
1298
1756
|
] }),
|
|
1299
|
-
facts?.length ? /* @__PURE__ */
|
|
1300
|
-
/* @__PURE__ */
|
|
1301
|
-
/* @__PURE__ */
|
|
1757
|
+
facts?.length ? /* @__PURE__ */ jsx35("dl", { className: "pire-facts", style: { margin: 0 }, children: facts.map((fact) => /* @__PURE__ */ jsxs31("div", { children: [
|
|
1758
|
+
/* @__PURE__ */ jsx35("dt", { className: "pire-fact-label", children: fact.label }),
|
|
1759
|
+
/* @__PURE__ */ jsx35("dd", { className: "pire-fact-value", "data-numeric": fact.numeric ? "true" : void 0, style: { margin: 0 }, children: fact.value })
|
|
1302
1760
|
] }, fact.label)) }) : null
|
|
1303
1761
|
] });
|
|
1304
1762
|
}
|
|
1305
1763
|
|
|
1306
1764
|
// src/components/data/FilterBar.tsx
|
|
1307
|
-
import { jsx as
|
|
1765
|
+
import { jsx as jsx36, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
1308
1766
|
function FilterBar({
|
|
1309
1767
|
children,
|
|
1310
1768
|
activeFilters = [],
|
|
@@ -1316,115 +1774,115 @@ function FilterBar({
|
|
|
1316
1774
|
className,
|
|
1317
1775
|
...rest
|
|
1318
1776
|
}) {
|
|
1319
|
-
return /* @__PURE__ */
|
|
1320
|
-
/* @__PURE__ */
|
|
1777
|
+
return /* @__PURE__ */ jsxs32("section", { className: cx("pire-filterbar", className), "aria-label": "Filters", ...rest, children: [
|
|
1778
|
+
/* @__PURE__ */ jsxs32("div", { className: "pire-filterbar-controls", children: [
|
|
1321
1779
|
children,
|
|
1322
|
-
onGo ? /* @__PURE__ */
|
|
1780
|
+
onGo ? /* @__PURE__ */ jsx36(Button, { variant: "primary", onPress: onGo, children: "Go" }) : null
|
|
1323
1781
|
] }),
|
|
1324
|
-
activeFilters.length || resultLabel || actions ? /* @__PURE__ */
|
|
1325
|
-
activeFilters.map((filter) => /* @__PURE__ */
|
|
1326
|
-
activeFilters.length && onClear ? /* @__PURE__ */
|
|
1327
|
-
resultLabel ? /* @__PURE__ */
|
|
1328
|
-
actions ? /* @__PURE__ */
|
|
1782
|
+
activeFilters.length || resultLabel || actions ? /* @__PURE__ */ jsxs32("div", { className: "pire-filterbar-foot", children: [
|
|
1783
|
+
activeFilters.map((filter) => /* @__PURE__ */ jsx36(Tag, { onRemove: onRemoveFilter ? () => onRemoveFilter(filter.id) : void 0, children: filter.label }, filter.id)),
|
|
1784
|
+
activeFilters.length && onClear ? /* @__PURE__ */ jsx36(Button, { variant: "tertiary", size: "sm", onPress: onClear, children: "Clear all" }) : null,
|
|
1785
|
+
resultLabel ? /* @__PURE__ */ jsx36("span", { className: "pire-filterbar-result", "aria-live": "polite", children: resultLabel }) : null,
|
|
1786
|
+
actions ? /* @__PURE__ */ jsx36("div", { className: "pire-filterbar-actions", children: actions }) : null
|
|
1329
1787
|
] }) : null
|
|
1330
1788
|
] });
|
|
1331
1789
|
}
|
|
1332
1790
|
|
|
1333
1791
|
// src/components/data/DescriptionList.tsx
|
|
1334
|
-
import { jsx as
|
|
1792
|
+
import { jsx as jsx37, jsxs as jsxs33 } from "react/jsx-runtime";
|
|
1335
1793
|
function DescriptionList({ items, layout = "rows", columns = 3, className, style, ...rest }) {
|
|
1336
|
-
return /* @__PURE__ */
|
|
1794
|
+
return /* @__PURE__ */ jsx37(
|
|
1337
1795
|
"dl",
|
|
1338
1796
|
{
|
|
1339
1797
|
className: cx("pire-dl", className),
|
|
1340
1798
|
"data-layout": layout,
|
|
1341
1799
|
style: { ...layout === "grid" ? { "--pire-dl-cols": columns } : null, ...style },
|
|
1342
1800
|
...rest,
|
|
1343
|
-
children: items.map((item, i) => /* @__PURE__ */
|
|
1344
|
-
/* @__PURE__ */
|
|
1801
|
+
children: items.map((item, i) => /* @__PURE__ */ jsxs33("div", { className: "pire-dl-row", "data-emphasis": item.emphasis ? "true" : void 0, children: [
|
|
1802
|
+
/* @__PURE__ */ jsxs33("dt", { className: "pire-dl-term", children: [
|
|
1345
1803
|
item.label,
|
|
1346
1804
|
item.hint
|
|
1347
1805
|
] }),
|
|
1348
|
-
/* @__PURE__ */
|
|
1806
|
+
/* @__PURE__ */ jsx37("dd", { className: "pire-dl-value", "data-numeric": item.numeric ? "true" : void 0, children: item.value })
|
|
1349
1807
|
] }, i))
|
|
1350
1808
|
}
|
|
1351
1809
|
);
|
|
1352
1810
|
}
|
|
1353
1811
|
|
|
1354
1812
|
// src/components/data/Timeline.tsx
|
|
1355
|
-
import { jsx as
|
|
1813
|
+
import { jsx as jsx38, jsxs as jsxs34 } from "react/jsx-runtime";
|
|
1356
1814
|
function Timeline({ entries, reverse = false, className, ...rest }) {
|
|
1357
1815
|
const list = reverse ? [...entries].reverse() : entries;
|
|
1358
|
-
return /* @__PURE__ */
|
|
1359
|
-
/* @__PURE__ */
|
|
1360
|
-
/* @__PURE__ */
|
|
1361
|
-
entry.actor ? /* @__PURE__ */
|
|
1816
|
+
return /* @__PURE__ */ jsx38("ol", { className: cx("pire-timeline", className), ...rest, children: list.map((entry, i) => /* @__PURE__ */ jsxs34("li", { className: "pire-timeline-item", children: [
|
|
1817
|
+
/* @__PURE__ */ jsx38("span", { className: "pire-timeline-time", children: entry.time }),
|
|
1818
|
+
/* @__PURE__ */ jsx38("span", { className: "pire-timeline-text", children: entry.event }),
|
|
1819
|
+
entry.actor ? /* @__PURE__ */ jsx38("span", { className: "pire-timeline-actor", children: entry.actor }) : null
|
|
1362
1820
|
] }, entry.id ?? i)) });
|
|
1363
1821
|
}
|
|
1364
1822
|
|
|
1365
1823
|
// src/components/data/LinkList.tsx
|
|
1366
|
-
import { Button as
|
|
1367
|
-
import { jsx as
|
|
1824
|
+
import { Button as AriaButton11 } from "react-aria-components";
|
|
1825
|
+
import { jsx as jsx39, jsxs as jsxs35 } from "react/jsx-runtime";
|
|
1368
1826
|
function LinkList({ items, onSelect, className, ...rest }) {
|
|
1369
|
-
return /* @__PURE__ */
|
|
1370
|
-
item.icon ? /* @__PURE__ */
|
|
1371
|
-
item.key ? /* @__PURE__ */
|
|
1372
|
-
item.text ? /* @__PURE__ */
|
|
1827
|
+
return /* @__PURE__ */ jsx39("div", { className: cx("pire-linklist", className), role: "list", ...rest, children: items.map((item) => /* @__PURE__ */ jsxs35(AriaButton11, { className: "pire-linklist-item", onPress: () => onSelect?.(item.id), children: [
|
|
1828
|
+
item.icon ? /* @__PURE__ */ jsx39(Icon, { name: item.icon, size: 16, style: { color: "var(--text-secondary)" } }) : null,
|
|
1829
|
+
item.key ? /* @__PURE__ */ jsx39("span", { className: "pire-linklist-key", children: item.key }) : null,
|
|
1830
|
+
item.text ? /* @__PURE__ */ jsx39("span", { className: "pire-linklist-text", children: item.text }) : null,
|
|
1373
1831
|
item.trailing
|
|
1374
1832
|
] }, item.id)) });
|
|
1375
1833
|
}
|
|
1376
1834
|
|
|
1377
1835
|
// src/components/layout/PageHeader.tsx
|
|
1378
|
-
import { jsx as
|
|
1836
|
+
import { jsx as jsx40, jsxs as jsxs36 } from "react/jsx-runtime";
|
|
1379
1837
|
function PageHeader({ title, subtitle, actions, className, ...rest }) {
|
|
1380
|
-
return /* @__PURE__ */
|
|
1381
|
-
/* @__PURE__ */
|
|
1382
|
-
/* @__PURE__ */
|
|
1383
|
-
subtitle ? /* @__PURE__ */
|
|
1838
|
+
return /* @__PURE__ */ jsxs36("header", { className: cx("pire-pageheader", className), ...rest, children: [
|
|
1839
|
+
/* @__PURE__ */ jsxs36("div", { style: { minWidth: 0 }, children: [
|
|
1840
|
+
/* @__PURE__ */ jsx40("h1", { className: "pire-pageheader-title", children: title }),
|
|
1841
|
+
subtitle ? /* @__PURE__ */ jsx40("p", { className: "pire-pageheader-sub", children: subtitle }) : null
|
|
1384
1842
|
] }),
|
|
1385
|
-
actions ? /* @__PURE__ */
|
|
1843
|
+
actions ? /* @__PURE__ */ jsx40("div", { className: "pire-pageheader-actions", children: actions }) : null
|
|
1386
1844
|
] });
|
|
1387
1845
|
}
|
|
1388
1846
|
|
|
1389
1847
|
// src/components/layout/SectionHeader.tsx
|
|
1390
|
-
import { jsx as
|
|
1848
|
+
import { jsx as jsx41, jsxs as jsxs37 } from "react/jsx-runtime";
|
|
1391
1849
|
function SectionHeader({ title, meta, actions, className, ...rest }) {
|
|
1392
|
-
return /* @__PURE__ */
|
|
1393
|
-
/* @__PURE__ */
|
|
1394
|
-
meta ? /* @__PURE__ */
|
|
1395
|
-
actions ? /* @__PURE__ */
|
|
1850
|
+
return /* @__PURE__ */ jsxs37("div", { className: cx("pire-sectionhead", className), ...rest, children: [
|
|
1851
|
+
/* @__PURE__ */ jsx41("span", { className: "pire-eyebrow", children: title }),
|
|
1852
|
+
meta ? /* @__PURE__ */ jsx41("span", { style: { font: "var(--type-caption)", color: "var(--text-tertiary)" }, children: meta }) : null,
|
|
1853
|
+
actions ? /* @__PURE__ */ jsx41("div", { className: "pire-sectionhead-actions", children: actions }) : null
|
|
1396
1854
|
] });
|
|
1397
1855
|
}
|
|
1398
1856
|
|
|
1399
1857
|
// src/components/layout/SelectionBar.tsx
|
|
1400
|
-
import { jsx as
|
|
1858
|
+
import { jsx as jsx42, jsxs as jsxs38 } from "react/jsx-runtime";
|
|
1401
1859
|
function SelectionBar({ count, noun = "record", children, actions, className, ...rest }) {
|
|
1402
1860
|
if (!count) return null;
|
|
1403
|
-
return /* @__PURE__ */
|
|
1404
|
-
/* @__PURE__ */
|
|
1861
|
+
return /* @__PURE__ */ jsxs38("div", { className: cx("pire-selectionbar", className), role: "status", "aria-live": "polite", ...rest, children: [
|
|
1862
|
+
/* @__PURE__ */ jsxs38("span", { className: "pire-selectionbar-count", children: [
|
|
1405
1863
|
count.toLocaleString(),
|
|
1406
1864
|
" ",
|
|
1407
1865
|
noun,
|
|
1408
1866
|
count === 1 ? "" : "s",
|
|
1409
1867
|
" selected"
|
|
1410
1868
|
] }),
|
|
1411
|
-
children ? /* @__PURE__ */
|
|
1412
|
-
actions ? /* @__PURE__ */
|
|
1869
|
+
children ? /* @__PURE__ */ jsx42("span", { style: { color: "var(--text-secondary)", font: "var(--type-caption)" }, children }) : null,
|
|
1870
|
+
actions ? /* @__PURE__ */ jsx42("div", { className: "pire-selectionbar-actions", children: actions }) : null
|
|
1413
1871
|
] });
|
|
1414
1872
|
}
|
|
1415
1873
|
|
|
1416
1874
|
// src/components/layout/FooterBar.tsx
|
|
1417
|
-
import { jsx as
|
|
1875
|
+
import { jsx as jsx43, jsxs as jsxs39 } from "react/jsx-runtime";
|
|
1418
1876
|
function FooterBar({ note, actions, children, className, ...rest }) {
|
|
1419
|
-
return /* @__PURE__ */
|
|
1420
|
-
note ? /* @__PURE__ */
|
|
1877
|
+
return /* @__PURE__ */ jsxs39("footer", { className: cx("pire-footerbar", className), ...rest, children: [
|
|
1878
|
+
note ? /* @__PURE__ */ jsx43("span", { className: "pire-footerbar-note", children: note }) : null,
|
|
1421
1879
|
children,
|
|
1422
|
-
actions ? /* @__PURE__ */
|
|
1880
|
+
actions ? /* @__PURE__ */ jsx43("div", { className: "pire-footerbar-actions", children: actions }) : null
|
|
1423
1881
|
] });
|
|
1424
1882
|
}
|
|
1425
1883
|
|
|
1426
1884
|
// src/components/patterns/ConfirmDialog.tsx
|
|
1427
|
-
import { Fragment as Fragment4, jsx as
|
|
1885
|
+
import { Fragment as Fragment4, jsx as jsx44, jsxs as jsxs40 } from "react/jsx-runtime";
|
|
1428
1886
|
function ConfirmDialog({
|
|
1429
1887
|
isOpen,
|
|
1430
1888
|
title,
|
|
@@ -1438,7 +1896,7 @@ function ConfirmDialog({
|
|
|
1438
1896
|
onConfirm,
|
|
1439
1897
|
onCancel
|
|
1440
1898
|
}) {
|
|
1441
|
-
return /* @__PURE__ */
|
|
1899
|
+
return /* @__PURE__ */ jsxs40(
|
|
1442
1900
|
Dialog,
|
|
1443
1901
|
{
|
|
1444
1902
|
isOpen,
|
|
@@ -1448,12 +1906,12 @@ function ConfirmDialog({
|
|
|
1448
1906
|
onClose: onCancel,
|
|
1449
1907
|
isDismissable: !isBusy,
|
|
1450
1908
|
showClose: false,
|
|
1451
|
-
footer: /* @__PURE__ */
|
|
1452
|
-
/* @__PURE__ */
|
|
1453
|
-
/* @__PURE__ */
|
|
1909
|
+
footer: /* @__PURE__ */ jsxs40(Fragment4, { children: [
|
|
1910
|
+
/* @__PURE__ */ jsx44(Button, { variant: "tertiary", isDisabled: isBusy, onPress: onCancel, children: cancelLabel }),
|
|
1911
|
+
/* @__PURE__ */ jsx44(Button, { variant: tone === "danger" ? "danger" : "primary", isDisabled: isBusy, onPress: onConfirm, children: isBusy ? "Working\u2026" : confirmLabel })
|
|
1454
1912
|
] }),
|
|
1455
1913
|
children: [
|
|
1456
|
-
consequence ? /* @__PURE__ */
|
|
1914
|
+
consequence ? /* @__PURE__ */ jsx44(InlineMessage, { kind: tone === "danger" ? "error" : "warning", style: { marginBottom: children ? "var(--sp-3)" : 0 }, children: consequence }) : null,
|
|
1457
1915
|
children
|
|
1458
1916
|
]
|
|
1459
1917
|
}
|
|
@@ -1462,9 +1920,9 @@ function ConfirmDialog({
|
|
|
1462
1920
|
|
|
1463
1921
|
// src/components/patterns/SidePanel.tsx
|
|
1464
1922
|
import { ModalOverlay as ModalOverlay2, Modal as Modal2, Dialog as AriaDialog3, Heading as Heading3 } from "react-aria-components";
|
|
1465
|
-
import { jsx as
|
|
1923
|
+
import { jsx as jsx45, jsxs as jsxs41 } from "react/jsx-runtime";
|
|
1466
1924
|
function SidePanel({ isOpen, title, subtitle, width = 400, children, footer, onClose, className }) {
|
|
1467
|
-
return /* @__PURE__ */
|
|
1925
|
+
return /* @__PURE__ */ jsx45(
|
|
1468
1926
|
ModalOverlay2,
|
|
1469
1927
|
{
|
|
1470
1928
|
className: "pire-sidepanel-overlay",
|
|
@@ -1473,34 +1931,34 @@ function SidePanel({ isOpen, title, subtitle, width = 400, children, footer, onC
|
|
|
1473
1931
|
onOpenChange: (o) => {
|
|
1474
1932
|
if (!o) onClose?.();
|
|
1475
1933
|
},
|
|
1476
|
-
children: /* @__PURE__ */
|
|
1477
|
-
/* @__PURE__ */
|
|
1478
|
-
/* @__PURE__ */
|
|
1479
|
-
/* @__PURE__ */
|
|
1480
|
-
subtitle ? /* @__PURE__ */
|
|
1934
|
+
children: /* @__PURE__ */ jsx45(Modal2, { className: cx("pire-sidepanel", className), style: { width }, children: /* @__PURE__ */ jsxs41(AriaDialog3, { className: "pire-dialog", style: { height: "100%" }, children: [
|
|
1935
|
+
/* @__PURE__ */ jsxs41("header", { className: "pire-dialog-head", children: [
|
|
1936
|
+
/* @__PURE__ */ jsxs41("div", { style: { flex: 1, minWidth: 0 }, children: [
|
|
1937
|
+
/* @__PURE__ */ jsx45(Heading3, { slot: "title", className: "pire-dialog-title", children: title }),
|
|
1938
|
+
subtitle ? /* @__PURE__ */ jsx45("p", { className: "pire-dialog-sub", style: { margin: 0 }, children: subtitle }) : null
|
|
1481
1939
|
] }),
|
|
1482
|
-
/* @__PURE__ */
|
|
1940
|
+
/* @__PURE__ */ jsx45(IconButton, { icon: "x", label: "Close panel", size: "sm", onPress: onClose })
|
|
1483
1941
|
] }),
|
|
1484
|
-
/* @__PURE__ */
|
|
1485
|
-
footer ? /* @__PURE__ */
|
|
1942
|
+
/* @__PURE__ */ jsx45("div", { className: "pire-dialog-body", style: { flex: 1 }, children }),
|
|
1943
|
+
footer ? /* @__PURE__ */ jsx45("footer", { className: "pire-dialog-foot", children: footer }) : null
|
|
1486
1944
|
] }) })
|
|
1487
1945
|
}
|
|
1488
1946
|
);
|
|
1489
1947
|
}
|
|
1490
1948
|
|
|
1491
1949
|
// src/components/patterns/EmptyState.tsx
|
|
1492
|
-
import { jsx as
|
|
1950
|
+
import { jsx as jsx46, jsxs as jsxs42 } from "react/jsx-runtime";
|
|
1493
1951
|
function EmptyState({ icon = "file-text", title, action, compact, children, className, ...rest }) {
|
|
1494
|
-
return /* @__PURE__ */
|
|
1495
|
-
/* @__PURE__ */
|
|
1496
|
-
title ? /* @__PURE__ */
|
|
1497
|
-
children ? /* @__PURE__ */
|
|
1952
|
+
return /* @__PURE__ */ jsxs42("div", { className: cx("pire-empty", className), "data-compact": compact ? "true" : void 0, ...rest, children: [
|
|
1953
|
+
/* @__PURE__ */ jsx46(Icon, { name: icon, size: 24, className: "pire-empty-icon" }),
|
|
1954
|
+
title ? /* @__PURE__ */ jsx46("p", { className: "pire-empty-title", style: { margin: 0 }, children: title }) : null,
|
|
1955
|
+
children ? /* @__PURE__ */ jsx46("p", { className: "pire-empty-body", style: { margin: 0 }, children }) : null,
|
|
1498
1956
|
action
|
|
1499
1957
|
] });
|
|
1500
1958
|
}
|
|
1501
1959
|
|
|
1502
1960
|
// src/index.ts
|
|
1503
|
-
import { DialogTrigger, MenuTrigger, Menu, MenuItem, Popover as
|
|
1961
|
+
import { DialogTrigger, MenuTrigger, Menu, MenuItem, Popover as Popover5, Separator, I18nProvider } from "react-aria-components";
|
|
1504
1962
|
export {
|
|
1505
1963
|
Avatar,
|
|
1506
1964
|
Badge,
|
|
@@ -1529,11 +1987,12 @@ export {
|
|
|
1529
1987
|
Menu,
|
|
1530
1988
|
MenuItem,
|
|
1531
1989
|
MenuTrigger,
|
|
1990
|
+
MultiComboBox,
|
|
1532
1991
|
NumberField,
|
|
1533
1992
|
ObjectHeader,
|
|
1534
1993
|
PageHeader,
|
|
1535
1994
|
Pagination,
|
|
1536
|
-
|
|
1995
|
+
Popover5 as Popover,
|
|
1537
1996
|
ProgressBar,
|
|
1538
1997
|
Radio,
|
|
1539
1998
|
RadioGroup,
|
|
@@ -1545,9 +2004,12 @@ export {
|
|
|
1545
2004
|
ShellBar,
|
|
1546
2005
|
SideNav,
|
|
1547
2006
|
SidePanel,
|
|
2007
|
+
Skeleton,
|
|
2008
|
+
SkeletonTableRow,
|
|
1548
2009
|
Switch,
|
|
1549
2010
|
Tabs,
|
|
1550
2011
|
Tag,
|
|
2012
|
+
TextArea,
|
|
1551
2013
|
Timeline,
|
|
1552
2014
|
Toast,
|
|
1553
2015
|
ToastProvider,
|