@a-type/ui 3.0.25 → 3.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/dist/cjs/colors.stories.js +1 -8
  2. package/dist/cjs/colors.stories.js.map +1 -1
  3. package/dist/cjs/components/button/Button.js +3 -3
  4. package/dist/cjs/components/button/Button.js.map +1 -1
  5. package/dist/cjs/components/dialog/Dialog.js +30 -5
  6. package/dist/cjs/components/dialog/Dialog.js.map +1 -1
  7. package/dist/cjs/components/dialog/Dialog.stories.js +1 -1
  8. package/dist/cjs/components/dialog/Dialog.stories.js.map +1 -1
  9. package/dist/cjs/components/icon/Icon.d.ts +2 -1
  10. package/dist/cjs/components/icon/Icon.js +4 -3
  11. package/dist/cjs/components/icon/Icon.js.map +1 -1
  12. package/dist/cjs/components/index.d.ts +2 -0
  13. package/dist/cjs/components/index.js +2 -0
  14. package/dist/cjs/components/index.js.map +1 -1
  15. package/dist/cjs/components/lightbox/Lightbox.d.ts +25 -0
  16. package/dist/cjs/components/lightbox/Lightbox.js +71 -0
  17. package/dist/cjs/components/lightbox/Lightbox.js.map +1 -0
  18. package/dist/cjs/components/lightbox/Lightbox.stories.d.ts +24 -0
  19. package/dist/cjs/components/lightbox/Lightbox.stories.js +21 -0
  20. package/dist/cjs/components/lightbox/Lightbox.stories.js.map +1 -0
  21. package/dist/cjs/components/lists/lists.d.ts +6 -0
  22. package/dist/cjs/components/lists/lists.js +16 -0
  23. package/dist/cjs/components/lists/lists.js.map +1 -0
  24. package/dist/cjs/components/lists/lists.stories.d.ts +14 -0
  25. package/dist/cjs/components/lists/lists.stories.js +25 -0
  26. package/dist/cjs/components/lists/lists.stories.js.map +1 -0
  27. package/dist/cjs/components/provider/Provider.d.ts +1 -4
  28. package/dist/cjs/components/provider/Provider.js +3 -3
  29. package/dist/cjs/components/provider/Provider.js.map +1 -1
  30. package/dist/cjs/components/pwaInstall/PlatformIcons.d.ts +5 -0
  31. package/dist/cjs/components/pwaInstall/PlatformIcons.js +25 -0
  32. package/dist/cjs/components/pwaInstall/PlatformIcons.js.map +1 -0
  33. package/dist/cjs/components/pwaInstall/PwaInstallTrigger.d.ts +5 -0
  34. package/dist/cjs/components/pwaInstall/PwaInstallTrigger.js +74 -0
  35. package/dist/cjs/components/pwaInstall/PwaInstallTrigger.js.map +1 -0
  36. package/dist/cjs/components/pwaInstall/PwaInstallTrigger.stories.d.ts +15 -0
  37. package/dist/cjs/components/pwaInstall/PwaInstallTrigger.stories.js +23 -0
  38. package/dist/cjs/components/pwaInstall/PwaInstallTrigger.stories.js.map +1 -0
  39. package/dist/cjs/components/pwaInstall/index.d.ts +3 -0
  40. package/dist/cjs/components/pwaInstall/index.js +21 -0
  41. package/dist/cjs/components/pwaInstall/index.js.map +1 -0
  42. package/dist/cjs/components/pwaInstall/useIsInstallReady.d.ts +3 -0
  43. package/dist/cjs/components/pwaInstall/useIsInstallReady.js +58 -0
  44. package/dist/cjs/components/pwaInstall/useIsInstallReady.js.map +1 -0
  45. package/dist/cjs/components/pwaInstall/useWebManifest.d.ts +2 -0
  46. package/dist/cjs/components/pwaInstall/useWebManifest.js +45 -0
  47. package/dist/cjs/components/pwaInstall/useWebManifest.js.map +1 -0
  48. package/dist/cjs/components/toasts/toasts.d.ts +4 -1
  49. package/dist/cjs/components/toasts/toasts.js +35 -1
  50. package/dist/cjs/components/toasts/toasts.js.map +1 -1
  51. package/dist/cjs/components/toasts/toasts.stories.d.ts +13 -0
  52. package/dist/cjs/components/toasts/toasts.stories.js +47 -0
  53. package/dist/cjs/components/toasts/toasts.stories.js.map +1 -0
  54. package/dist/cjs/platform.d.ts +11 -0
  55. package/dist/cjs/platform.js +95 -0
  56. package/dist/cjs/platform.js.map +1 -0
  57. package/dist/cjs/uno/logic/color.d.ts +0 -12
  58. package/dist/cjs/uno/logic/color.js +0 -35
  59. package/dist/cjs/uno/logic/color.js.map +1 -1
  60. package/dist/cjs/uno/logic/color.test.js +0 -12
  61. package/dist/cjs/uno/logic/color.test.js.map +1 -1
  62. package/dist/cjs/uno/theme/index.js +8 -0
  63. package/dist/cjs/uno/theme/index.js.map +1 -1
  64. package/dist/css/main.css +6 -5
  65. package/dist/esm/colors.stories.js +1 -8
  66. package/dist/esm/colors.stories.js.map +1 -1
  67. package/dist/esm/components/button/Button.js +3 -3
  68. package/dist/esm/components/button/Button.js.map +1 -1
  69. package/dist/esm/components/dialog/Dialog.js +30 -5
  70. package/dist/esm/components/dialog/Dialog.js.map +1 -1
  71. package/dist/esm/components/dialog/Dialog.stories.js +1 -1
  72. package/dist/esm/components/dialog/Dialog.stories.js.map +1 -1
  73. package/dist/esm/components/icon/Icon.d.ts +2 -1
  74. package/dist/esm/components/icon/Icon.js +4 -3
  75. package/dist/esm/components/icon/Icon.js.map +1 -1
  76. package/dist/esm/components/index.d.ts +2 -0
  77. package/dist/esm/components/index.js +2 -0
  78. package/dist/esm/components/index.js.map +1 -1
  79. package/dist/esm/components/lightbox/Lightbox.d.ts +25 -0
  80. package/dist/esm/components/lightbox/Lightbox.js +32 -0
  81. package/dist/esm/components/lightbox/Lightbox.js.map +1 -0
  82. package/dist/esm/components/lightbox/Lightbox.stories.d.ts +24 -0
  83. package/dist/esm/components/lightbox/Lightbox.stories.js +18 -0
  84. package/dist/esm/components/lightbox/Lightbox.stories.js.map +1 -0
  85. package/dist/esm/components/lists/lists.d.ts +6 -0
  86. package/dist/esm/components/lists/lists.js +13 -0
  87. package/dist/esm/components/lists/lists.js.map +1 -0
  88. package/dist/esm/components/lists/lists.stories.d.ts +14 -0
  89. package/dist/esm/components/lists/lists.stories.js +22 -0
  90. package/dist/esm/components/lists/lists.stories.js.map +1 -0
  91. package/dist/esm/components/provider/Provider.d.ts +1 -4
  92. package/dist/esm/components/provider/Provider.js +3 -3
  93. package/dist/esm/components/provider/Provider.js.map +1 -1
  94. package/dist/esm/components/pwaInstall/PlatformIcons.d.ts +5 -0
  95. package/dist/esm/components/pwaInstall/PlatformIcons.js +18 -0
  96. package/dist/esm/components/pwaInstall/PlatformIcons.js.map +1 -0
  97. package/dist/esm/components/pwaInstall/PwaInstallTrigger.d.ts +5 -0
  98. package/dist/esm/components/pwaInstall/PwaInstallTrigger.js +71 -0
  99. package/dist/esm/components/pwaInstall/PwaInstallTrigger.js.map +1 -0
  100. package/dist/esm/components/pwaInstall/PwaInstallTrigger.stories.d.ts +15 -0
  101. package/dist/esm/components/pwaInstall/PwaInstallTrigger.stories.js +20 -0
  102. package/dist/esm/components/pwaInstall/PwaInstallTrigger.stories.js.map +1 -0
  103. package/dist/esm/components/pwaInstall/index.d.ts +3 -0
  104. package/dist/esm/components/pwaInstall/index.js +5 -0
  105. package/dist/esm/components/pwaInstall/index.js.map +1 -0
  106. package/dist/esm/components/pwaInstall/useIsInstallReady.d.ts +3 -0
  107. package/dist/esm/components/pwaInstall/useIsInstallReady.js +53 -0
  108. package/dist/esm/components/pwaInstall/useIsInstallReady.js.map +1 -0
  109. package/dist/esm/components/pwaInstall/useWebManifest.d.ts +2 -0
  110. package/dist/esm/components/pwaInstall/useWebManifest.js +42 -0
  111. package/dist/esm/components/pwaInstall/useWebManifest.js.map +1 -0
  112. package/dist/esm/components/toasts/toasts.d.ts +4 -1
  113. package/dist/esm/components/toasts/toasts.js +32 -1
  114. package/dist/esm/components/toasts/toasts.js.map +1 -1
  115. package/dist/esm/components/toasts/toasts.stories.d.ts +13 -0
  116. package/dist/esm/components/toasts/toasts.stories.js +44 -0
  117. package/dist/esm/components/toasts/toasts.stories.js.map +1 -0
  118. package/dist/esm/platform.d.ts +11 -0
  119. package/dist/esm/platform.js +84 -0
  120. package/dist/esm/platform.js.map +1 -0
  121. package/dist/esm/uno/logic/color.d.ts +0 -12
  122. package/dist/esm/uno/logic/color.js +0 -35
  123. package/dist/esm/uno/logic/color.js.map +1 -1
  124. package/dist/esm/uno/logic/color.test.js +0 -12
  125. package/dist/esm/uno/logic/color.test.js.map +1 -1
  126. package/dist/esm/uno/theme/index.js +8 -0
  127. package/dist/esm/uno/theme/index.js.map +1 -1
  128. package/package.json +5 -7
  129. package/src/colors.stories.tsx +0 -12
  130. package/src/components/button/Button.tsx +7 -4
  131. package/src/components/dialog/Dialog.stories.tsx +20 -6
  132. package/src/components/dialog/Dialog.tsx +49 -4
  133. package/src/components/icon/Icon.tsx +10 -2
  134. package/src/components/index.ts +2 -0
  135. package/src/components/lightbox/Lightbox.stories.tsx +28 -0
  136. package/src/components/lightbox/Lightbox.tsx +87 -0
  137. package/src/components/lists/lists.stories.tsx +38 -0
  138. package/src/components/lists/lists.tsx +21 -0
  139. package/src/components/provider/Provider.tsx +2 -9
  140. package/src/components/pwaInstall/PlatformIcons.tsx +75 -0
  141. package/src/components/pwaInstall/PwaInstallTrigger.stories.tsx +29 -0
  142. package/src/components/pwaInstall/PwaInstallTrigger.tsx +227 -0
  143. package/src/components/pwaInstall/index.ts +3 -0
  144. package/src/components/pwaInstall/useIsInstallReady.ts +56 -0
  145. package/src/components/pwaInstall/useWebManifest.ts +55 -0
  146. package/src/components/toasts/toasts.stories.tsx +83 -0
  147. package/src/components/toasts/toasts.tsx +72 -1
  148. package/src/platform.ts +103 -0
  149. package/src/uno/logic/color.test.ts +0 -27
  150. package/src/uno/logic/color.ts +0 -56
  151. package/src/uno/theme/index.ts +8 -0
  152. package/dist/cjs/uno/logic/oklch.d.ts +0 -3
  153. package/dist/cjs/uno/logic/oklch.js +0 -96
  154. package/dist/cjs/uno/logic/oklch.js.map +0 -1
  155. package/dist/esm/uno/logic/oklch.d.ts +0 -3
  156. package/dist/esm/uno/logic/oklch.js +0 -90
  157. package/dist/esm/uno/logic/oklch.js.map +0 -1
  158. package/src/uno/logic/oklch.ts +0 -120
@@ -0,0 +1,18 @@
1
+ // @unocss-include
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ export function SafariShareIcon() {
4
+ return (_jsx("svg", { id: "pwa-share", width: "24", height: "24", viewBox: "0 0 17.695 26.475", className: "v-middle", children: _jsxs("g", { fill: "currentColor", children: [_jsx("path", { d: "M17.334 10.762v9.746c0 2.012-1.025 3.027-3.066 3.027H3.066C1.026 23.535 0 22.52 0 20.508v-9.746C0 8.75 1.025 7.734 3.066 7.734h2.94v1.573h-2.92c-.977 0-1.514.527-1.514 1.543v9.57c0 1.015.537 1.543 1.514 1.543h11.152c.967 0 1.524-.527 1.524-1.543v-9.57c0-1.016-.557-1.543-1.524-1.543h-2.91V7.734h2.94c2.04 0 3.066 1.016 3.066 3.028Z" }), _jsx("path", { d: "M8.662 15.889c.42 0 .781-.352.781-.762V5.097l-.058-1.464.654.693 1.484 1.582a.698.698 0 0 0 .528.235c.4 0 .713-.293.713-.694 0-.205-.088-.361-.235-.508l-3.3-3.183c-.196-.196-.362-.264-.567-.264-.195 0-.361.069-.566.264L4.795 4.94a.681.681 0 0 0-.225.508c0 .4.293.694.703.694.186 0 .4-.079.538-.235l1.474-1.582.664-.693-.058 1.465v10.029c0 .41.351.762.771.762Z" })] }) }));
5
+ }
6
+ export function SafariIcon() {
7
+ return (_jsx("svg", { id: "pwa-safari", viewBox: "0 0 20.283 19.932", width: "25", height: "25", className: "v-middle", children: _jsxs("g", { fill: "currentColor", children: [_jsx("path", { d: "M9.96 19.922c5.45 0 9.962-4.522 9.962-9.961C19.922 4.51 15.4 0 9.952 0 4.511 0 0 4.512 0 9.96c0 5.44 4.521 9.962 9.96 9.962Zm0-1.66A8.26 8.26 0 0 1 1.67 9.96c0-4.61 3.672-8.3 8.281-8.3 4.61 0 8.31 3.69 8.31 8.3 0 4.61-3.69 8.3-8.3 8.3Z" }), _jsx("path", { d: "m5.87 14.883 5.605-2.735a1.47 1.47 0 0 0 .683-.673l2.725-5.596c.312-.664-.166-1.182-.85-.84L8.447 7.764c-.302.136-.508.341-.674.673L5.03 14.043c-.312.645.196 1.152.84.84Zm4.09-3.72A1.19 1.19 0 0 1 8.77 9.97c0-.664.527-1.201 1.19-1.201a1.2 1.2 0 0 1 1.202 1.2c0 .655-.537 1.192-1.201 1.192Z" })] }) }));
8
+ }
9
+ export function SafariPlusSquareIcon() {
10
+ return (_jsx("svg", { id: "pwa-add", width: "24", height: "24", viewBox: "-4 -4 33 33", fill: "currentColor", className: "v-middle", children: _jsx("g", { children: _jsx("path", { d: "m23.40492,1.60784c-1.32504,-1.32504 -3.19052,-1.56912 -5.59644,-1.56912l-10.65243,0c-2.33622,0 -4.2017,0.24408 -5.5267,1.56912c-1.32504,1.34243 -1.56911,3.17306 -1.56911,5.50924l0,10.5827c0,2.40596 0.22665,4.254 1.55165,5.57902c1.34246,1.32501 3.19052,1.5691 5.59647,1.5691l10.60013,0c2.40592,0 4.2714,-0.24408 5.59644,-1.5691c1.325,-1.34245 1.55166,-3.17306 1.55166,-5.57902l0,-10.51293c0,-2.40596 -0.22666,-4.25401 -1.55166,-5.57901zm-0.38355,5.21289l0,11.24518c0,1.51681 -0.20924,2.94643 -1.02865,3.78327c-0.83683,0.83685 -2.30134,1.0635 -3.81815,1.0635l-11.33234,0c-1.51681,0 -2.96386,-0.22665 -3.80073,-1.0635c-0.83683,-0.83684 -1.04607,-2.26646 -1.04607,-3.78327l0,-11.19288c0,-1.5517 0.20924,-3.01617 1.02865,-3.85304c0.83687,-0.83683 2.31876,-1.04607 3.87042,-1.04607l11.28007,0c1.51681,0 2.98132,0.22666 3.81815,1.06353c0.81941,0.81941 1.02865,2.26645 1.02865,3.78327zm-10.53039,12.08205c0.64506,0 1.02861,-0.43586 1.02861,-1.13326l0,-4.34117l4.53294,0c0.66252,0 1.13326,-0.36613 1.13326,-0.99376c0,-0.64506 -0.43586,-1.02861 -1.13326,-1.02861l-4.53294,0l0,-4.53294c0,-0.6974 -0.38355,-1.13326 -1.02861,-1.13326c-0.62763,0 -0.99376,0.45332 -0.99376,1.13326l0,4.53294l-4.51552,0c-0.69737,0 -1.15069,0.38355 -1.15069,1.02861c0,0.62763 0.48817,0.99376 1.15069,0.99376l4.51552,0l0,4.34117c0,0.66252 0.36613,1.13326 0.99376,1.13326z" }) }) }));
11
+ }
12
+ export function SafariAddToDockIcon() {
13
+ return (_jsx("svg", { id: "pwa-add", viewBox: "0 0 23.389 17.979", width: "24", height: "24", className: "v-middle", children: _jsxs("g", { fill: "currentColor", children: [_jsx("path", { d: "M1.045 3.291v1.377h20.937V3.291Zm2.021 14.688h16.895c2.05 0 3.066-1.006 3.066-3.018V3.027C23.027 1.016 22.012 0 19.961 0H3.066C1.026 0 0 1.016 0 3.027v11.934c0 2.012 1.025 3.018 3.066 3.018Zm.02-1.573c-.977 0-1.514-.517-1.514-1.533V3.115c0-1.015.537-1.543 1.514-1.543H19.94c.967 0 1.514.528 1.514 1.543v11.758c0 1.016-.547 1.533-1.514 1.533Z" }), _jsx("path", { d: "M4.2 14.014c0 .508.35.85.868.85h12.92c.518 0 .87-.343.87-.85v-1.465c0-.508-.352-.85-.87-.85H5.068c-.517 0-.869.342-.869.85Z" })] }) }));
14
+ }
15
+ export function AndroidAddToHomeIcon() {
16
+ return (_jsx("svg", { height: "24", viewBox: "0 -960 960 960", width: "24", className: "v-middle", children: _jsx("path", { d: "M320-40q-33 0-56.5-23.5T240-120v-160h80v40h400v-480H320v40h-80v-160q0-33 23.5-56.5T320-920h400q33 0 56.5 23.5T800-840v720q0 33-23.5 56.5T720-40H320Zm0-120v40h400v-40H320ZM176-280l-56-56 224-224H200v-80h280v280h-80v-144L176-280Zm144-520h400v-40H320v40Zm0 0v-40 40Zm0 640v40-40Z" }) }));
17
+ }
18
+ //# sourceMappingURL=PlatformIcons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlatformIcons.js","sourceRoot":"","sources":["../../../../src/components/pwaInstall/PlatformIcons.tsx"],"names":[],"mappings":";AAAA,MAAM,UAAU,eAAe;IAC9B,OAAO,CACN,cACC,EAAE,EAAC,WAAW,EACd,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,mBAAmB,EAC3B,SAAS,EAAC,UAAU,YAEpB,aAAG,IAAI,EAAC,cAAc,aACrB,eAAM,CAAC,EAAC,6UAA6U,GAAG,EACxV,eAAM,CAAC,EAAC,yWAAyW,GAAG,IACjX,GACC,CACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACzB,OAAO,CACN,cACC,EAAE,EAAC,YAAY,EACf,OAAO,EAAC,mBAAmB,EAC3B,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,SAAS,EAAC,UAAU,YAEpB,aAAG,IAAI,EAAC,cAAc,aACrB,eAAM,CAAC,EAAC,6OAA6O,GAAG,EACxP,eAAM,CAAC,EAAC,mSAAmS,GAAG,IAC3S,GACC,CACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB;IACnC,OAAO,CACN,cACC,EAAE,EAAC,SAAS,EACZ,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,aAAa,EACrB,IAAI,EAAC,cAAc,EACnB,SAAS,EAAC,UAAU,YAEpB,sBACC,eAAM,CAAC,EAAC,0zCAA0zC,GAAG,GACl0C,GACC,CACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IAClC,OAAO,CACN,cACC,EAAE,EAAC,SAAS,EACZ,OAAO,EAAC,mBAAmB,EAC3B,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,SAAS,EAAC,UAAU,YAEpB,aAAG,IAAI,EAAC,cAAc,aACrB,eAAM,CAAC,EAAC,uVAAuV,GAAG,EAClW,eAAM,CAAC,EAAC,6HAA6H,GAAG,IACrI,GACC,CACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB;IACnC,OAAO,CACN,cAAK,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,gBAAgB,EAAC,KAAK,EAAC,IAAI,EAAC,SAAS,EAAC,UAAU,YACxE,eAAM,CAAC,EAAC,sRAAsR,GAAG,GAC5R,CACN,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { DialogTriggerProps } from '@radix-ui/react-dialog';
2
+ export interface PwaInstallTriggerProps extends DialogTriggerProps {
3
+ manifestPath?: string;
4
+ }
5
+ export declare function PwaInstallTrigger({ children, manifestPath, asChild: _, ...rest }: PwaInstallTriggerProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,71 @@
1
+ // @unocss-include
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
14
+ import { useState } from 'react';
15
+ import { getIsSafari, getOS, getSupportsPWAInstallPrompt, } from '../../platform.js';
16
+ import { Box } from '../box/Box.js';
17
+ import { Button } from '../button/Button.js';
18
+ import { Dialog } from '../dialog/Dialog.js';
19
+ import { Icon } from '../icon/Icon.js';
20
+ import { Lightbox } from '../lightbox/Lightbox.js';
21
+ import { Ol } from '../lists/lists.js';
22
+ import { P } from '../typography/typography.js';
23
+ import { AndroidAddToHomeIcon, SafariAddToDockIcon, SafariIcon, SafariPlusSquareIcon, SafariShareIcon, } from './PlatformIcons.js';
24
+ import { triggerDeferredInstall, useIsInstalled, useIsInstallReady, } from './useIsInstallReady.js';
25
+ import { useWebManifest } from './useWebManifest.js';
26
+ export function PwaInstallTrigger(_a) {
27
+ var _b, _c, _d, _e, _f, _g;
28
+ var { children, manifestPath, asChild: _ } = _a, rest = __rest(_a, ["children", "manifestPath", "asChild"]);
29
+ const installed = useIsInstalled();
30
+ const manifest = useWebManifest(manifestPath);
31
+ const [showInstructions, setShowInstructions] = useState(false);
32
+ if (installed) {
33
+ return null;
34
+ }
35
+ const primaryIcon = (_b = manifest === null || manifest === void 0 ? void 0 : manifest.icons) === null || _b === void 0 ? void 0 : _b[0];
36
+ return (_jsxs(Dialog, { children: [_jsx(Dialog.Trigger, Object.assign({}, rest, { asChild: true, children: children !== null && children !== void 0 ? children : (_jsxs(Button, { color: "primary", emphasis: "light", children: [_jsx(Icon, { name: "star" }), " Install"] })) })), _jsxs(Dialog.Content, { className: "flex flex-col gap-xs", children: [_jsxs(Dialog.Title, { className: "flex flex-row gap-md items-center", children: [primaryIcon && (_jsx("img", { src: primaryIcon.src, alt: (_e = (_d = (_c = primaryIcon.label) !== null && _c !== void 0 ? _c : manifest === null || manifest === void 0 ? void 0 : manifest.short_name) !== null && _d !== void 0 ? _d : manifest === null || manifest === void 0 ? void 0 : manifest.name) !== null && _e !== void 0 ? _e : 'App Icon', className: "inline-block w-1em h-1em rounded" })), "Install ", (_g = (_f = manifest === null || manifest === void 0 ? void 0 : manifest.short_name) !== null && _f !== void 0 ? _f : manifest === null || manifest === void 0 ? void 0 : manifest.name) !== null && _g !== void 0 ? _g : 'App'] }), showInstructions ? (_jsxs(_Fragment, { children: [_jsx(Dialog.Description, { children: "Follow the instructions below to install this app on your device." }), _jsx(InstallInstructions, {}), _jsxs(Dialog.Actions, { children: [_jsx(Dialog.Close, { asChild: true, children: _jsx(Button, { emphasis: "ghost", children: "Close" }) }), _jsxs(Button, { onClick: () => setShowInstructions(false), children: [_jsx(Icon, { name: "arrowLeft" }), " Back"] })] })] })) : (_jsxs(_Fragment, { children: [_jsx(Dialog.Description, { children: "This site is also an app. You can install it right now for easier access and more features." }), (manifest === null || manifest === void 0 ? void 0 : manifest.description) && (_jsx(P, { className: "mb-sm", children: manifest.description })), _jsx(ManifestImageGallery, { manifestPath: manifestPath }), _jsxs(Dialog.Actions, { children: [_jsx(Dialog.Close, { asChild: true, children: _jsx(Button, { emphasis: "ghost", children: "Close" }) }), _jsx(InstallDeviceActions, { showInstructions: () => setShowInstructions(true) })] })] }))] })] }));
37
+ }
38
+ const supportsDirectInstall = getSupportsPWAInstallPrompt();
39
+ function InstallInstructions() {
40
+ const os = getOS();
41
+ if (os === 'iOS' || os === 'Mac OS') {
42
+ if (getIsSafari()) {
43
+ if (os === 'iOS') {
44
+ return (_jsxs(Ol, { children: [_jsxs(Ol.Item, { children: [_jsx(SafariShareIcon, {}), " Tap the Share button in the toolbar."] }), _jsxs(Ol.Item, { children: [_jsx(SafariPlusSquareIcon, {}), " Scroll down and tap \"Add to Home Screen\"."] })] }));
45
+ }
46
+ else {
47
+ return (_jsxs(Ol, { children: [_jsxs(Ol.Item, { children: [_jsx(SafariShareIcon, {}), " Tap the Share button in the toolbar."] }), _jsxs(Ol.Item, { children: [_jsx(SafariAddToDockIcon, {}), " Tap \"Add to Dock\"."] })] }));
48
+ }
49
+ }
50
+ else {
51
+ return (_jsxs(_Fragment, { children: [_jsx(Ol, { children: _jsxs(Ol.Item, { children: [_jsx(SafariIcon, {}), " Open this site in Safari to continue."] }) }), _jsx(Box, { surface: true, p: true, children: "Apple does not allow non-Safari browsers to install web apps." })] }));
52
+ }
53
+ }
54
+ return (_jsxs(Ol, { children: [_jsxs(Ol.Item, { children: [_jsx(Icon, { name: "dots", className: "rotate-90" }), " Tap the menu button in the toolbar."] }), _jsxs(Ol.Item, { children: [_jsx(AndroidAddToHomeIcon, {}), " Tap \"Add to Home Screen.\""] })] }));
55
+ }
56
+ function ManifestImageGallery({ manifestPath }) {
57
+ var _a, _b;
58
+ const manifest = useWebManifest(manifestPath);
59
+ if (!((_a = manifest === null || manifest === void 0 ? void 0 : manifest.screenshots) === null || _a === void 0 ? void 0 : _a.length)) {
60
+ return null;
61
+ }
62
+ return (_jsx(Box, { overflow: "auto-x", p: "sm", gap: true, className: "h-240px", children: (_b = manifest.screenshots) === null || _b === void 0 ? void 0 : _b.map((screenshot, index) => (_jsxs(Lightbox.Root, { children: [_jsx(Lightbox.Trigger, { asChild: true, children: _jsx(Lightbox.Image, { tabIndex: 0, src: screenshot.src, alt: screenshot.label || `Screenshot ${index + 1}`, className: "border border-default rounded-xs" }, index) }), _jsxs(Lightbox.Portal, { children: [_jsx(Lightbox.Overlay, { className: "z-10000" }), _jsx(Lightbox.Content, { className: "z-10001", children: _jsx(Lightbox.Image, { src: screenshot.src, alt: screenshot.label || `Screenshot ${index + 1}` }) })] })] }, screenshot.src))) }));
63
+ }
64
+ function InstallDeviceActions({ showInstructions, }) {
65
+ const ready = useIsInstallReady();
66
+ if (supportsDirectInstall && ready) {
67
+ return (_jsxs(Button, { onClick: () => triggerDeferredInstall(), emphasis: "primary", children: [_jsx(Icon, { name: "download" }), " Install now"] }));
68
+ }
69
+ return (_jsxs(Button, { onClick: () => showInstructions(), emphasis: "primary", children: [_jsx(Icon, { name: "arrowRight" }), " Add to Home"] }));
70
+ }
71
+ //# sourceMappingURL=PwaInstallTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PwaInstallTrigger.js","sourceRoot":"","sources":["../../../../src/components/pwaInstall/PwaInstallTrigger.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { StoryObj } from '@storybook/react';
2
+ import { PwaInstallTrigger } from './PwaInstallTrigger.js';
3
+ declare const meta: {
4
+ title: string;
5
+ component: typeof PwaInstallTrigger;
6
+ argTypes: {};
7
+ parameters: {
8
+ controls: {
9
+ expanded: boolean;
10
+ };
11
+ };
12
+ };
13
+ export default meta;
14
+ type Story = StoryObj<typeof PwaInstallTrigger>;
15
+ export declare const Default: Story;
@@ -0,0 +1,20 @@
1
+ // @unocss-include
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Button } from '../button/Button.js';
4
+ import { Icon } from '../icon/Icon.js';
5
+ import { PwaInstallTrigger } from './PwaInstallTrigger.js';
6
+ const meta = {
7
+ title: 'Components/PwaInstallTrigger',
8
+ component: PwaInstallTrigger,
9
+ argTypes: {},
10
+ parameters: {
11
+ controls: { expanded: true },
12
+ },
13
+ };
14
+ export default meta;
15
+ export const Default = {
16
+ render(args) {
17
+ return (_jsx(PwaInstallTrigger, Object.assign({}, args, { asChild: true, children: _jsxs(Button, { color: "primary", emphasis: "light", children: [_jsx(Icon, { name: "star" }), " Install"] }) })));
18
+ },
19
+ };
20
+ //# sourceMappingURL=PwaInstallTrigger.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PwaInstallTrigger.stories.js","sourceRoot":"","sources":["../../../../src/components/pwaInstall/PwaInstallTrigger.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,IAAI,GAAG;IACZ,KAAK,EAAE,8BAA8B;IACrC,SAAS,EAAE,iBAAiB;IAC5B,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE;QACX,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5B;CACwC,CAAC;AAE3C,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC7B,MAAM,CAAC,IAAI;QACV,OAAO,CACN,KAAC,iBAAiB,oBAAK,IAAI,IAAE,OAAO,kBACnC,MAAC,MAAM,IAAC,KAAK,EAAC,SAAS,EAAC,QAAQ,EAAC,OAAO,aACvC,KAAC,IAAI,IAAC,IAAI,EAAC,MAAM,GAAG,gBACZ,IACU,CACpB,CAAC;IACH,CAAC;CACD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './PwaInstallTrigger.js';
2
+ export * from './useIsInstallReady.js';
3
+ export * from './useWebManifest.js';
@@ -0,0 +1,5 @@
1
+ // @unocss-include
2
+ export * from './PwaInstallTrigger.js';
3
+ export * from './useIsInstallReady.js';
4
+ export * from './useWebManifest.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/pwaInstall/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function useIsInstallReady(): boolean;
2
+ export declare function useIsInstalled(): boolean;
3
+ export declare function triggerDeferredInstall(): boolean;
@@ -0,0 +1,53 @@
1
+ // @unocss-include
2
+ import { proxy, useSnapshot } from 'valtio';
3
+ import { getIsPWAInstalled, PRETEND_INSTALLABLE } from '../../platform.js';
4
+ let deferredPrompt = null;
5
+ const installState = proxy({
6
+ installReady: false,
7
+ installed: getIsPWAInstalled(),
8
+ });
9
+ if (typeof window !== 'undefined') {
10
+ window.addEventListener('beforeinstallprompt', (e) => {
11
+ // Prevent the mini-infobar from appearing on mobile
12
+ e.preventDefault();
13
+ e.stopImmediatePropagation();
14
+ e.stopPropagation();
15
+ // Stash the event so it can be triggered later.
16
+ deferredPrompt = e;
17
+ // Update UI notify the user they can install the PWA
18
+ installState.installReady = true;
19
+ // Optionally, send analytics event that PWA install promo was shown.
20
+ console.log(`Ready to show custom install prompt`);
21
+ });
22
+ }
23
+ if (PRETEND_INSTALLABLE) {
24
+ installState.installReady = true;
25
+ }
26
+ export function useIsInstallReady() {
27
+ return useSnapshot(installState).installReady;
28
+ }
29
+ export function useIsInstalled() {
30
+ return useSnapshot(installState).installed;
31
+ }
32
+ export function triggerDeferredInstall() {
33
+ if (!deferredPrompt) {
34
+ return false;
35
+ }
36
+ // Show the install prompt
37
+ deferredPrompt.prompt();
38
+ // Wait for the user to respond to the prompt
39
+ deferredPrompt.userChoice.then((choiceResult) => {
40
+ if (choiceResult.outcome === 'accepted') {
41
+ console.log('User accepted the install prompt');
42
+ installState.installed = true;
43
+ }
44
+ else {
45
+ console.log('User dismissed the install prompt');
46
+ }
47
+ // Clear the deferredPrompt so it can only be used once.
48
+ deferredPrompt = null;
49
+ installState.installReady = false;
50
+ });
51
+ return true;
52
+ }
53
+ //# sourceMappingURL=useIsInstallReady.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIsInstallReady.js","sourceRoot":"","sources":["../../../../src/components/pwaInstall/useIsInstallReady.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE3E,IAAI,cAAc,GAAoC,IAAI,CAAC;AAC3D,MAAM,YAAY,GAAG,KAAK,CAAC;IAC1B,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,iBAAiB,EAAE;CAC9B,CAAC,CAAC;AAEH,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACnC,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,EAAE;QACpD,oDAAoD;QACpD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,wBAAwB,EAAE,CAAC;QAC7B,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,gDAAgD;QAChD,cAAc,GAAG,CAAC,CAAC;QACnB,qDAAqD;QACrD,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;QACjC,qEAAqE;QACrE,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,IAAI,mBAAmB,EAAE,CAAC;IACzB,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAChC,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,YAAY,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,cAAc;IAC7B,OAAO,WAAW,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,sBAAsB;IACrC,IAAI,CAAC,cAAc,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,0BAA0B;IAC1B,cAAc,CAAC,MAAM,EAAE,CAAC;IACxB,6CAA6C;IAC7C,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;QAC/C,IAAI,YAAY,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAChD,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;QAC/B,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QAClD,CAAC;QACD,wDAAwD;QACxD,cAAc,GAAG,IAAI,CAAC;QACtB,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { WebAppManifest } from 'web-app-manifest';
2
+ export declare function useWebManifest(manifestPath?: string): WebAppManifest;
@@ -0,0 +1,42 @@
1
+ // @unocss-include
2
+ import { useEffect } from 'react';
3
+ import { proxy, useSnapshot } from 'valtio';
4
+ async function fetchManifest(manifestPath = '/manifest.json', controller) {
5
+ const response = await fetch(manifestPath, {
6
+ signal: controller === null || controller === void 0 ? void 0 : controller.signal,
7
+ });
8
+ if (!response.ok) {
9
+ console.error(`Failed to fetch web manifest: ${response.status} ${response.statusText}`);
10
+ return {};
11
+ }
12
+ const manifest = await response.json();
13
+ return manifest;
14
+ }
15
+ function abortableManifestSync(manifestPath) {
16
+ const controller = new AbortController();
17
+ fetchManifest(manifestPath, controller).then((manifest) => {
18
+ if (manifest) {
19
+ manifestState.value = manifest;
20
+ }
21
+ });
22
+ return controller;
23
+ }
24
+ const manifestState = proxy({
25
+ value: {},
26
+ });
27
+ let abortController = null;
28
+ export function useWebManifest(manifestPath = '/manifest.json') {
29
+ useEffect(() => {
30
+ if (abortController) {
31
+ abortController.abort();
32
+ }
33
+ abortController = abortableManifestSync(manifestPath);
34
+ return () => {
35
+ if (abortController) {
36
+ abortController.abort();
37
+ }
38
+ };
39
+ }, [manifestPath]);
40
+ return useSnapshot(manifestState).value;
41
+ }
42
+ //# sourceMappingURL=useWebManifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWebManifest.js","sourceRoot":"","sources":["../../../../src/components/pwaInstall/useWebManifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG5C,KAAK,UAAU,aAAa,CAC3B,eAAuB,gBAAgB,EACvC,UAA4B;IAE5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE;QAC1C,MAAM,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM;KAC1B,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CACZ,iCAAiC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CACzE,CAAC;QACF,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAoB;IAClD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACzD,IAAI,QAAQ,EAAE,CAAC;YACd,aAAa,CAAC,KAAK,GAAG,QAAQ,CAAC;QAChC,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACnB,CAAC;AAED,MAAM,aAAa,GAAG,KAAK,CAAC;IAC3B,KAAK,EAAE,EAAoB;CAC3B,CAAC,CAAC;AACH,IAAI,eAAe,GAA2B,IAAI,CAAC;AAEnD,MAAM,UAAU,cAAc,CAC7B,YAAY,GAAG,gBAAgB;IAE/B,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,eAAe,EAAE,CAAC;YACrB,eAAe,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QACD,eAAe,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAEtD,OAAO,GAAG,EAAE;YACX,IAAI,eAAe,EAAE,CAAC;gBACrB,eAAe,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;QACF,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,WAAW,CAAC,aAAa,CAAC,CAAC,KAAuB,CAAC;AAC3D,CAAC"}
@@ -1,2 +1,5 @@
1
1
  export type * from 'react-hot-toast';
2
- export { toast, Toaster } from 'react-hot-toast';
2
+ export { toast } from 'react-hot-toast';
3
+ export declare const Toaster: (props: {
4
+ className?: string;
5
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,34 @@
1
1
  // @unocss-include
2
- export { toast, Toaster } from 'react-hot-toast';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ export { toast } from 'react-hot-toast';
4
+ import clsx from 'clsx';
5
+ import { AnimatePresence, motion } from 'motion/react';
6
+ import { useToaster } from 'react-hot-toast';
7
+ import { useResolvedColorMode } from '../../colorMode.js';
8
+ import { Icon } from '../icon/Icon.js';
9
+ const toastOptions = {};
10
+ export const Toaster = (props) => {
11
+ const mode = useResolvedColorMode();
12
+ const { toasts, handlers } = useToaster(toastOptions);
13
+ const { startPause, endPause } = handlers;
14
+ const visibleToasts = toasts.filter((t) => t.visible);
15
+ return (_jsx("div", { className: clsx('fixed z-toast flex flex-col items-center gap-xs left-1/2 center-x top-sm max-w-400px', mode === 'dark' ? 'override-light' : 'override-dark', props.className), onMouseEnter: startPause, onMouseLeave: endPause, children: _jsx(AnimatePresence, { children: visibleToasts.map((toast) => {
16
+ const message = typeof toast.message === 'function'
17
+ ? toast.message(toast)
18
+ : toast.message;
19
+ return (_jsxs(motion.div, Object.assign({ className: clsx({
20
+ 'palette-success': toast.type === 'success',
21
+ 'palette-attention': toast.type === 'error',
22
+ 'palette-info': toast.type === 'blank',
23
+ }, 'bg-main-wash color-black rounded-md shadow-md px-md py-sm', 'flex flex-row gap-sm') }, toast.ariaProps, { initial: { scale: 0.8, opacity: 0, y: -20 }, exit: { scale: 0.8, opacity: 0, y: -20 }, animate: {
24
+ scale: 1,
25
+ opacity: 1,
26
+ y: 0,
27
+ }, layout: true, children: [_jsx(Icon, { className: "mt-2px", loading: toast.type === 'loading', name: toast.type === 'success'
28
+ ? 'check'
29
+ : toast.type === 'error'
30
+ ? 'warning'
31
+ : 'info' }), message] }), toast.id));
32
+ }) }) }));
33
+ };
3
34
  //# sourceMappingURL=toasts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toasts.js","sourceRoot":"","sources":["../../../../src/components/toasts/toasts.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"toasts.js","sourceRoot":"","sources":["../../../../src/components/toasts/toasts.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAuB,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEvC,MAAM,YAAY,GAAwB,EAAE,CAAC;AAE7C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAA6B,EAAE,EAAE;IACxD,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC1C,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAEtD,OAAO,CACN,cACC,SAAS,EAAE,IAAI,CACd,sFAAsF,EACtF,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,EACpD,KAAK,CAAC,SAAS,CACf,EACD,YAAY,EAAE,UAAU,EACxB,YAAY,EAAE,QAAQ,YAEtB,KAAC,eAAe,cACd,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC5B,MAAM,OAAO,GACZ,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU;oBAClC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBACtB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;gBAClB,OAAO,CACN,MAAC,MAAM,CAAC,GAAG,kBAEV,SAAS,EAAE,IAAI,CACd;wBACC,iBAAiB,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS;wBAC3C,mBAAmB,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO;wBAC3C,cAAc,EAAE,KAAK,CAAC,IAAI,KAAK,OAAO;qBACtC,EACD,2DAA2D,EAC3D,sBAAsB,CACtB,IACG,KAAK,CAAC,SAAS,IACnB,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAC3C,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EACxC,OAAO,EAAE;wBACR,KAAK,EAAE,CAAC;wBACR,OAAO,EAAE,CAAC;wBACV,CAAC,EAAE,CAAC;qBACJ,EACD,MAAM,mBAEN,KAAC,IAAI,IACJ,SAAS,EAAC,QAAQ,EAClB,OAAO,EAAE,KAAK,CAAC,IAAI,KAAK,SAAS,EACjC,IAAI,EACH,KAAK,CAAC,IAAI,KAAK,SAAS;gCACvB,CAAC,CAAC,OAAO;gCACT,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO;oCACxB,CAAC,CAAC,SAAS;oCACX,CAAC,CAAC,MAAM,GAET,EACD,OAAO,MA/BH,KAAK,CAAC,EAAE,CAgCD,CACb,CAAC;YACH,CAAC,CAAC,GACe,GACb,CACN,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { StoryObj } from '@storybook/react';
2
+ declare const meta: {
3
+ title: string;
4
+ argTypes: {};
5
+ parameters: {
6
+ controls: {
7
+ expanded: boolean;
8
+ };
9
+ };
10
+ };
11
+ export default meta;
12
+ type Story = StoryObj;
13
+ export declare const Default: Story;
@@ -0,0 +1,44 @@
1
+ // @unocss-include
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { toast } from 'react-hot-toast';
4
+ import { Box } from '../box/Box.js';
5
+ import { Button } from '../button/Button.js';
6
+ const meta = {
7
+ title: 'Components/toasts',
8
+ argTypes: {},
9
+ parameters: {
10
+ controls: { expanded: true },
11
+ },
12
+ };
13
+ export default meta;
14
+ export const Default = {
15
+ render(args) {
16
+ return (_jsxs(Box, { col: true, gap: true, children: [_jsx(Button, { onClick: () => {
17
+ toast('This is a default toast! With a lot of text. Enough to wrap around.', {
18
+ duration: 10000,
19
+ });
20
+ }, children: "Show Default Toast" }), _jsx(Button, { color: "success", onClick: () => {
21
+ toast.success('This is a success toast!', {
22
+ duration: 10000,
23
+ });
24
+ }, children: "Show Success Toast" }), _jsx(Button, { color: "attention", onClick: () => {
25
+ toast.error('This is an error toast!', {
26
+ duration: 10000,
27
+ });
28
+ }, children: "Show Error Toast" }), _jsx(Button, { onClick: () => {
29
+ const id = toast.loading('This is a loading toast!');
30
+ setTimeout(() => {
31
+ toast.success('Loading complete!', { id, duration: 5000 });
32
+ }, 3000);
33
+ }, children: "Show Loading Toast" }), _jsx(Button, { onClick: () => {
34
+ toast.promise((async () => {
35
+ await new Promise((resolve) => setTimeout(resolve, 3000));
36
+ })(), {
37
+ loading: 'Promise is loading...',
38
+ success: 'Promise resolved!',
39
+ error: 'Promise rejected.',
40
+ });
41
+ }, children: "Show Promise Toast" })] }));
42
+ },
43
+ };
44
+ //# sourceMappingURL=toasts.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toasts.stories.js","sourceRoot":"","sources":["../../../../src/components/toasts/toasts.stories.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,IAAI,GAAG;IACZ,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE;QACX,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KAC5B;CACc,CAAC;AAEjB,eAAe,IAAI,CAAC;AAIpB,MAAM,CAAC,MAAM,OAAO,GAAU;IAC7B,MAAM,CAAC,IAAI;QACV,OAAO,CACN,MAAC,GAAG,IAAC,GAAG,QAAC,GAAG,mBACX,KAAC,MAAM,IACN,OAAO,EAAE,GAAG,EAAE;wBACb,KAAK,CACJ,qEAAqE,EACrE;4BACC,QAAQ,EAAE,KAAM;yBAChB,CACD,CAAC;oBACH,CAAC,mCAGO,EACT,KAAC,MAAM,IACN,KAAK,EAAC,SAAS,EACf,OAAO,EAAE,GAAG,EAAE;wBACb,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE;4BACzC,QAAQ,EAAE,KAAM;yBAChB,CAAC,CAAC;oBACJ,CAAC,mCAGO,EACT,KAAC,MAAM,IACN,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,GAAG,EAAE;wBACb,KAAK,CAAC,KAAK,CAAC,yBAAyB,EAAE;4BACtC,QAAQ,EAAE,KAAM;yBAChB,CAAC,CAAC;oBACJ,CAAC,iCAGO,EACT,KAAC,MAAM,IACN,OAAO,EAAE,GAAG,EAAE;wBACb,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;wBACrD,UAAU,CAAC,GAAG,EAAE;4BACf,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC5D,CAAC,EAAE,IAAI,CAAC,CAAC;oBACV,CAAC,mCAGO,EACT,KAAC,MAAM,IACN,OAAO,EAAE,GAAG,EAAE;wBACb,KAAK,CAAC,OAAO,CACZ,CAAC,KAAK,IAAI,EAAE;4BACX,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;wBAC3D,CAAC,CAAC,EAAE,EACJ;4BACC,OAAO,EAAE,uBAAuB;4BAChC,OAAO,EAAE,mBAAmB;4BAC5B,KAAK,EAAE,mBAAmB;yBAC1B,CACD,CAAC;oBACH,CAAC,mCAGO,IACJ,CACN,CAAC;IACH,CAAC;CACD,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const PRETEND_PWA: boolean;
2
+ export declare const PRETEND_INSTALLABLE: boolean;
3
+ export declare const PRETEND_OS: string | null;
4
+ export declare function getIsPWAInstalled(): boolean;
5
+ export declare function getOS(): string;
6
+ export declare function getIsSafari(): boolean;
7
+ export declare function getIsFirefox(): boolean;
8
+ export declare function getIsEdge(): boolean;
9
+ export declare function getIsMobile(): boolean;
10
+ export declare function getSupportsPWAInstallPrompt(): boolean;
11
+ export declare function getIsTouch(): boolean;
@@ -0,0 +1,84 @@
1
+ // @unocss-include
2
+ export const PRETEND_PWA = (typeof localStorage !== 'undefined' &&
3
+ localStorage.getItem('pretendPWA')) === 'true';
4
+ export const PRETEND_INSTALLABLE = typeof localStorage !== 'undefined' &&
5
+ localStorage.getItem('pretendInstallable') === 'true';
6
+ export const PRETEND_OS = (typeof localStorage !== 'undefined' && localStorage.getItem('pretendOS')) ||
7
+ null;
8
+ export function getIsPWAInstalled() {
9
+ return ((typeof window !== 'undefined' && PRETEND_PWA) ||
10
+ window.matchMedia('(display-mode: standalone)').matches);
11
+ }
12
+ export function getOS() {
13
+ if (PRETEND_OS) {
14
+ return PRETEND_OS;
15
+ }
16
+ if (typeof window === 'undefined') {
17
+ return 'Server';
18
+ }
19
+ const userAgent = window.navigator.userAgent;
20
+ const platform = window.navigator.platform;
21
+ const macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'];
22
+ const windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'];
23
+ const iosPlatforms = ['iPhone', 'iPad', 'iPod'];
24
+ if (macosPlatforms.indexOf(platform) !== -1) {
25
+ return 'Mac OS';
26
+ }
27
+ else if (iosPlatforms.indexOf(platform) !== -1) {
28
+ return 'iOS';
29
+ }
30
+ else if (windowsPlatforms.indexOf(platform) !== -1) {
31
+ return 'Windows';
32
+ }
33
+ else if (/Android/.test(userAgent)) {
34
+ return 'Android';
35
+ }
36
+ else if (!platform && /Linux/.test(userAgent)) {
37
+ return 'Linux';
38
+ }
39
+ return 'Other';
40
+ }
41
+ export function getIsSafari() {
42
+ if (typeof window === 'undefined') {
43
+ return false;
44
+ }
45
+ const ua = navigator.userAgent.toLowerCase();
46
+ return !!ua.match(/WebKit/i) && !ua.match(/CriOS/i);
47
+ }
48
+ export function getIsFirefox() {
49
+ if (typeof window === 'undefined') {
50
+ return false;
51
+ }
52
+ const ua = navigator.userAgent.toLowerCase();
53
+ return !!ua.match(/Firefox/i);
54
+ }
55
+ export function getIsEdge() {
56
+ if (typeof window === 'undefined') {
57
+ return false;
58
+ }
59
+ const ua = navigator.userAgent.toLowerCase();
60
+ return !!ua.match(/Edge/i);
61
+ }
62
+ export function getIsMobile() {
63
+ return (typeof window !== 'undefined' &&
64
+ (/Mobi/.test(navigator.userAgent) ||
65
+ /Android/i.test(navigator.userAgent) ||
66
+ /iPhone/i.test(navigator.userAgent) ||
67
+ /iPad/i.test(navigator.userAgent)));
68
+ }
69
+ export function getSupportsPWAInstallPrompt() {
70
+ if (PRETEND_INSTALLABLE) {
71
+ return true;
72
+ }
73
+ return typeof window !== 'undefined' && 'BeforeInstallPromptEvent' in window;
74
+ }
75
+ let isUsingTouch = false;
76
+ if (typeof window !== 'undefined') {
77
+ window.addEventListener('touchstart', () => {
78
+ isUsingTouch = true;
79
+ });
80
+ }
81
+ export function getIsTouch() {
82
+ return isUsingTouch;
83
+ }
84
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GACvB,CAAC,OAAO,YAAY,KAAK,WAAW;IACnC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,KAAK,MAAM,CAAC;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAC/B,OAAO,YAAY,KAAK,WAAW;IACnC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,KAAK,MAAM,CAAC;AAEvD,MAAM,CAAC,MAAM,UAAU,GACtB,CAAC,OAAO,YAAY,KAAK,WAAW,IAAI,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1E,IAAI,CAAC;AAEN,MAAM,UAAU,iBAAiB;IAChC,OAAO,CACN,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,WAAW,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC,OAAO,CACvD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,KAAK;IACpB,IAAI,UAAU,EAAE,CAAC;QAChB,OAAO,UAAU,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC3C,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhD,IAAI,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC7C,OAAO,QAAQ,CAAC;IACjB,CAAC;SAAM,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACd,CAAC;SAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,SAAS,CAAC;IAClB,CAAC;SAAM,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,OAAO,SAAS,CAAC;IAClB,CAAC;SAAM,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACjD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,WAAW;IAC1B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,YAAY;IAC3B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,SAAS;IACxB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAC7C,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,WAAW;IAC1B,OAAO,CACN,OAAO,MAAM,KAAK,WAAW;QAC7B,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAChC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACpC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B;IAC1C,IAAI,mBAAmB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,0BAA0B,IAAI,MAAM,CAAC;AAC9E,CAAC;AAED,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACnC,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1C,YAAY,GAAG,IAAI,CAAC;IACrB,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IACzB,OAAO,YAAY,CAAC;AACrB,CAAC"}
@@ -39,18 +39,6 @@ export interface OklchColorEquation {
39
39
  * OKLCH color string with calculations and references resolved.
40
40
  */
41
41
  computeOklch(context: ColorEvaluationContext): string;
42
- /**
43
- * Uses the equation and provided context to compute a static
44
- * sRGB color string with calculations and references resolved.
45
- * This is not as accurate as computeOklch, as it converts to sRGB gamut.
46
- */
47
- computeSrgb(context: ColorEvaluationContext): string;
48
- /**
49
- * Uses the equation and provided context to compute a static
50
- * HEX color string with calculations and references resolved.
51
- * This is not as accurate as computeOklch, as it converts to sRGB gamut.
52
- */
53
- computeHex(context: ColorEvaluationContext): string;
54
42
  /**
55
43
  * Returns the raw computed L, C, H values as numbers with units.
56
44
  */
@@ -1,7 +1,4 @@
1
1
  // @unocss-include
2
- import { ColorSpace, to as convert, OKLCH, serialize, sRGB, toGamut, } from 'colorjs.io/fn';
3
- ColorSpace.register(sRGB);
4
- ColorSpace.register(OKLCH);
5
2
  export function lighten(base, level) {
6
3
  return mod(base, level, 1);
7
4
  }
@@ -223,38 +220,6 @@ export function oklchBuilder(impl) {
223
220
  const h = printEquation(equations.h, context);
224
221
  return `oklch(calc(${l}) calc(${c}) calc(${h}))`;
225
222
  },
226
- computeSrgb(context) {
227
- const l = computeEquation(equations.l, context);
228
- const c = computeEquation(equations.c, context);
229
- const h = computeEquation(equations.h, context);
230
- const asColor = {
231
- space: OKLCH,
232
- alpha: 1,
233
- coords: [
234
- resolveComputationResult(l, [0, 1]),
235
- resolveComputationResult(c, [0, 0.4]),
236
- resolveComputationResult(h, [0, 360]),
237
- ],
238
- };
239
- return serialize(toGamut(convert(asColor, 'srgb'), {}));
240
- },
241
- computeHex(context) {
242
- const l = computeEquation(equations.l, context);
243
- const c = computeEquation(equations.c, context);
244
- const h = computeEquation(equations.h, context);
245
- const asColor = {
246
- space: OKLCH,
247
- alpha: 1,
248
- coords: [
249
- resolveComputationResult(l, [0, 1]),
250
- resolveComputationResult(c, [0, 0.4]),
251
- resolveComputationResult(h, [0, 360]),
252
- ],
253
- };
254
- return serialize(toGamut(convert(asColor, 'srgb')), {
255
- format: 'hex',
256
- });
257
- },
258
223
  computeOklch(context) {
259
224
  const l = computeEquation(equations.l, context);
260
225
  const c = computeEquation(equations.c, context);