@burdenoff/fe-libs 2026.819.5 → 2026.823.2

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 (240) hide show
  1. package/README.md +66 -0
  2. package/dist/button/Button.d.ts +1 -1
  3. package/dist/chrome/AppShellLayout.d.ts +14 -0
  4. package/dist/chrome/AppShellLayout.d.ts.map +1 -1
  5. package/dist/chrome/AppShellLayout.js +13 -10
  6. package/dist/chrome/DynamicFooter.d.ts +6 -1
  7. package/dist/chrome/DynamicFooter.d.ts.map +1 -1
  8. package/dist/chrome/DynamicFooter.js +21 -20
  9. package/dist/chrome/Footer.d.ts +6 -0
  10. package/dist/chrome/Footer.d.ts.map +1 -1
  11. package/dist/chrome/Footer.js +46 -45
  12. package/dist/chrome/FooterBar.d.ts +6 -1
  13. package/dist/chrome/FooterBar.d.ts.map +1 -1
  14. package/dist/chrome/FooterBar.js +28 -26
  15. package/dist/chrome/HeaderBar.d.ts.map +1 -1
  16. package/dist/chrome/HeaderBar.js +3 -0
  17. package/dist/chrome/MobileTabBar.d.ts +26 -0
  18. package/dist/chrome/MobileTabBar.d.ts.map +1 -0
  19. package/dist/chrome/MobileTabBar.js +194 -0
  20. package/dist/chrome/NativePageTransition.d.ts +10 -0
  21. package/dist/chrome/NativePageTransition.d.ts.map +1 -0
  22. package/dist/chrome/NativePageTransition.js +19 -0
  23. package/dist/chrome/NativeTopBar.d.ts +21 -0
  24. package/dist/chrome/NativeTopBar.d.ts.map +1 -0
  25. package/dist/chrome/NativeTopBar.js +72 -0
  26. package/dist/chrome/NotificationCenter.d.ts.map +1 -1
  27. package/dist/chrome/NotificationCenter.js +70 -65
  28. package/dist/chrome/ProductSideNav.d.ts.map +1 -1
  29. package/dist/chrome/ProductSideNav.js +44 -74
  30. package/dist/chrome/SwipeNavigation.d.ts +36 -0
  31. package/dist/chrome/SwipeNavigation.d.ts.map +1 -0
  32. package/dist/chrome/SwipeNavigation.js +111 -0
  33. package/dist/chrome/index.d.ts +14 -7
  34. package/dist/chrome/index.d.ts.map +1 -1
  35. package/dist/chrome/mobileTabBar/selectTabs.d.ts +45 -0
  36. package/dist/chrome/mobileTabBar/selectTabs.d.ts.map +1 -0
  37. package/dist/chrome/mobileTabBar/selectTabs.js +28 -0
  38. package/dist/chrome/mobileTabBar/useMobileTabBarVisible.d.ts +18 -0
  39. package/dist/chrome/mobileTabBar/useMobileTabBarVisible.d.ts.map +1 -0
  40. package/dist/chrome/mobileTabBar/useMobileTabBarVisible.js +16 -0
  41. package/dist/chrome/mobileTabBar/useVisibleNavItems.d.ts +18 -0
  42. package/dist/chrome/mobileTabBar/useVisibleNavItems.d.ts.map +1 -0
  43. package/dist/chrome/mobileTabBar/useVisibleNavItems.js +41 -0
  44. package/dist/chrome/nativeTopBarTitle.d.ts +15 -0
  45. package/dist/chrome/nativeTopBarTitle.d.ts.map +1 -0
  46. package/dist/chrome/nativeTopBarTitle.js +22 -0
  47. package/dist/chrome/swipe/swipeMath.d.ts +25 -0
  48. package/dist/chrome/swipe/swipeMath.d.ts.map +1 -0
  49. package/dist/chrome/swipe/swipeMath.js +14 -0
  50. package/dist/chrome/swipe/swipeState.d.ts +10 -0
  51. package/dist/chrome/swipe/swipeState.d.ts.map +1 -0
  52. package/dist/chrome/swipe/swipeState.js +11 -0
  53. package/dist/chrome.js +8 -1
  54. package/dist/shared/components/DesktopUpdateToast.d.ts +9 -0
  55. package/dist/shared/components/DesktopUpdateToast.d.ts.map +1 -0
  56. package/dist/shared/components/DesktopUpdateToast.js +39 -0
  57. package/dist/shared/components/PWAInstallBanner.js +1 -1
  58. package/dist/shared/components/SSORedirectGuard.d.ts.map +1 -1
  59. package/dist/shared/components/SSORedirectGuard.js +41 -45
  60. package/dist/shared/components/index.d.ts +2 -0
  61. package/dist/shared/components/index.d.ts.map +1 -1
  62. package/dist/shared/config/authBridgeUrls.d.ts +10 -0
  63. package/dist/shared/config/authBridgeUrls.d.ts.map +1 -1
  64. package/dist/shared/config/authBridgeUrls.js +16 -12
  65. package/dist/shared/config/gatewayUrls.d.ts.map +1 -1
  66. package/dist/shared/config/gatewayUrls.js +22 -19
  67. package/dist/shared/config/index.d.ts +1 -1
  68. package/dist/shared/config/index.d.ts.map +1 -1
  69. package/dist/shared/hooks/shell/useNavRegistry.d.ts +7 -0
  70. package/dist/shared/hooks/shell/useNavRegistry.d.ts.map +1 -1
  71. package/dist/shared/hooks/usePWA.d.ts.map +1 -1
  72. package/dist/shared/hooks/usePWA.js +34 -30
  73. package/dist/shared/native/consumers.d.ts +15 -1
  74. package/dist/shared/native/consumers.d.ts.map +1 -1
  75. package/dist/shared/native/consumers.js +26 -7
  76. package/dist/shared/native/desktop.d.ts +123 -0
  77. package/dist/shared/native/desktop.d.ts.map +1 -0
  78. package/dist/shared/native/desktop.js +280 -0
  79. package/dist/shared/native/entry.d.ts +39 -0
  80. package/dist/shared/native/entry.d.ts.map +1 -0
  81. package/dist/shared/native/entry.js +13 -0
  82. package/dist/shared/native/hooks/index.d.ts +10 -0
  83. package/dist/shared/native/hooks/index.d.ts.map +1 -1
  84. package/dist/shared/native/hooks/index.js +6 -0
  85. package/dist/shared/native/hooks/useActionSheet.d.ts +63 -0
  86. package/dist/shared/native/hooks/useActionSheet.d.ts.map +1 -0
  87. package/dist/shared/native/hooks/useActionSheet.js +45 -0
  88. package/dist/shared/native/hooks/useDesktop.d.ts +15 -0
  89. package/dist/shared/native/hooks/useDesktop.d.ts.map +1 -0
  90. package/dist/shared/native/hooks/useDesktop.js +18 -0
  91. package/dist/shared/native/hooks/useDesktopUpdateState.d.ts +7 -0
  92. package/dist/shared/native/hooks/useDesktopUpdateState.d.ts.map +1 -0
  93. package/dist/shared/native/hooks/useDesktopUpdateState.js +20 -0
  94. package/dist/shared/native/hooks/useDesktopWindowState.d.ts +7 -0
  95. package/dist/shared/native/hooks/useDesktopWindowState.d.ts.map +1 -0
  96. package/dist/shared/native/hooks/useDesktopWindowState.js +9 -0
  97. package/dist/shared/native/hooks/useHaptics.d.ts +1 -0
  98. package/dist/shared/native/hooks/useHaptics.d.ts.map +1 -1
  99. package/dist/shared/native/hooks/useHaptics.js +6 -6
  100. package/dist/shared/native/hooks/useNetworkStatus.d.ts +23 -0
  101. package/dist/shared/native/hooks/useNetworkStatus.d.ts.map +1 -0
  102. package/dist/shared/native/hooks/useNetworkStatus.js +29 -0
  103. package/dist/shared/native/hooks/usePullToRefresh.d.ts +62 -0
  104. package/dist/shared/native/hooks/usePullToRefresh.d.ts.map +1 -0
  105. package/dist/shared/native/hooks/usePullToRefresh.js +84 -0
  106. package/dist/shared/native/index.d.ts +6 -1
  107. package/dist/shared/native/index.d.ts.map +1 -1
  108. package/dist/shared/native/platform.d.ts.map +1 -1
  109. package/dist/shared/native/platform.js +2 -1
  110. package/dist/shared/native/purchases.d.ts +7 -1
  111. package/dist/shared/native/purchases.d.ts.map +1 -1
  112. package/dist/shared/native/purchases.js +3 -3
  113. package/dist/shared/native/types.d.ts +136 -0
  114. package/dist/shared/native/types.d.ts.map +1 -1
  115. package/dist/shared/providers/AppShellProvider.d.ts.map +1 -1
  116. package/dist/shared/providers/AppShellProvider.js +117 -115
  117. package/dist/shared/providers/shell/ThemeProvider.d.ts.map +1 -1
  118. package/dist/shared/providers/shell/ThemeProvider.js +64 -51
  119. package/dist/shared/providers/shell/authProvider/useSsoDepositBootGuard.d.ts.map +1 -1
  120. package/dist/shared/providers/shell/authProvider/useSsoDepositBootGuard.js +25 -29
  121. package/dist/shared/utils/gatewayFetchRewrite.d.ts.map +1 -1
  122. package/dist/shared/utils/gatewayFetchRewrite.js +87 -84
  123. package/dist/shared-components.js +2 -1
  124. package/dist/shared-config.js +10 -10
  125. package/dist/shared-native.js +21 -13
  126. package/dist/shared.js +120 -111
  127. package/dist/shell-native/actionSheet.d.ts +7 -0
  128. package/dist/shell-native/actionSheet.d.ts.map +1 -0
  129. package/dist/shell-native/actionSheet.js +26 -0
  130. package/dist/shell-native/app-lifecycle.d.ts +4 -0
  131. package/dist/shell-native/app-lifecycle.d.ts.map +1 -0
  132. package/dist/shell-native/app-lifecycle.js +12 -0
  133. package/dist/shell-native/auth-navigation.d.ts +4 -0
  134. package/dist/shell-native/auth-navigation.d.ts.map +1 -0
  135. package/dist/shell-native/auth-navigation.js +95 -0
  136. package/dist/shell-native/back-button.d.ts +8 -0
  137. package/dist/shell-native/back-button.d.ts.map +1 -0
  138. package/dist/shell-native/back-button.js +49 -0
  139. package/dist/shell-native/boot.d.ts +10 -0
  140. package/dist/shell-native/boot.d.ts.map +1 -0
  141. package/dist/shell-native/boot.js +65 -0
  142. package/dist/shell-native/bridge.d.ts +7 -0
  143. package/dist/shell-native/bridge.d.ts.map +1 -0
  144. package/dist/shell-native/bridge.js +30 -0
  145. package/dist/shell-native/browser.d.ts +12 -0
  146. package/dist/shell-native/browser.d.ts.map +1 -0
  147. package/dist/shell-native/browser.js +45 -0
  148. package/dist/shell-native/capacitor-config.d.ts +21 -0
  149. package/dist/shell-native/capacitor-config.d.ts.map +1 -0
  150. package/dist/shell-native/capacitor-config.js +102 -0
  151. package/dist/shell-native/clipboard.d.ts +3 -0
  152. package/dist/shell-native/clipboard.d.ts.map +1 -0
  153. package/dist/shell-native/clipboard.js +26 -0
  154. package/dist/shell-native/deep-link.d.ts +19 -0
  155. package/dist/shell-native/deep-link.d.ts.map +1 -0
  156. package/dist/shell-native/deep-link.js +53 -0
  157. package/dist/shell-native/desktop-bridge.d.ts +14 -0
  158. package/dist/shell-native/desktop-bridge.d.ts.map +1 -0
  159. package/dist/shell-native/desktop-bridge.js +17 -0
  160. package/dist/shell-native/device.d.ts +4 -0
  161. package/dist/shell-native/device.d.ts.map +1 -0
  162. package/dist/shell-native/device.js +27 -0
  163. package/dist/shell-native/dialog.d.ts +4 -0
  164. package/dist/shell-native/dialog.d.ts.map +1 -0
  165. package/dist/shell-native/dialog.js +13 -0
  166. package/dist/shell-native/feedback.d.ts +6 -0
  167. package/dist/shell-native/feedback.d.ts.map +1 -0
  168. package/dist/shell-native/feedback.js +29 -0
  169. package/dist/shell-native/index.d.ts +54 -0
  170. package/dist/shell-native/index.d.ts.map +1 -0
  171. package/dist/shell-native/keyboard.d.ts +15 -0
  172. package/dist/shell-native/keyboard.d.ts.map +1 -0
  173. package/dist/shell-native/keyboard.js +42 -0
  174. package/dist/shell-native/network.d.ts +9 -0
  175. package/dist/shell-native/network.d.ts.map +1 -0
  176. package/dist/shell-native/network.js +40 -0
  177. package/dist/shell-native/ota.d.ts +3 -0
  178. package/dist/shell-native/ota.d.ts.map +1 -0
  179. package/dist/shell-native/ota.js +21 -0
  180. package/dist/shell-native/platform.d.ts +21 -0
  181. package/dist/shell-native/platform.d.ts.map +1 -0
  182. package/dist/shell-native/platform.js +51 -0
  183. package/dist/shell-native/preview.d.ts +18 -0
  184. package/dist/shell-native/preview.d.ts.map +1 -0
  185. package/dist/shell-native/preview.js +124 -0
  186. package/dist/shell-native/push.d.ts +14 -0
  187. package/dist/shell-native/push.d.ts.map +1 -0
  188. package/dist/shell-native/push.js +62 -0
  189. package/dist/shell-native/pwa.d.ts +14 -0
  190. package/dist/shell-native/pwa.d.ts.map +1 -0
  191. package/dist/shell-native/pwa.js +49 -0
  192. package/dist/shell-native/service-worker.d.ts +5 -0
  193. package/dist/shell-native/service-worker.d.ts.map +1 -0
  194. package/dist/shell-native/service-worker.js +144 -0
  195. package/dist/shell-native/share.d.ts +4 -0
  196. package/dist/shell-native/share.d.ts.map +1 -0
  197. package/dist/shell-native/share.js +19 -0
  198. package/dist/shell-native/splash.d.ts +16 -0
  199. package/dist/shell-native/splash.d.ts.map +1 -0
  200. package/dist/shell-native/splash.js +25 -0
  201. package/dist/shell-native/system-bars.d.ts +24 -0
  202. package/dist/shell-native/system-bars.d.ts.map +1 -0
  203. package/dist/shell-native/system-bars.js +49 -0
  204. package/dist/shell-native/toast.d.ts +4 -0
  205. package/dist/shell-native/toast.d.ts.map +1 -0
  206. package/dist/shell-native/toast.js +16 -0
  207. package/dist/shell-native/types.d.ts +292 -0
  208. package/dist/shell-native/types.d.ts.map +1 -0
  209. package/dist/shell-native/web-manifest.d.ts +36 -0
  210. package/dist/shell-native/web-manifest.d.ts.map +1 -0
  211. package/dist/shell-native/web-manifest.js +55 -0
  212. package/dist/shell-native.d.ts +2 -0
  213. package/dist/shell-native.js +29 -0
  214. package/dist/ui/action-sheet.d.ts +29 -0
  215. package/dist/ui/action-sheet.d.ts.map +1 -0
  216. package/dist/ui/action-sheet.js +53 -0
  217. package/dist/ui/badge.d.ts +1 -1
  218. package/dist/ui/button.d.ts +1 -1
  219. package/dist/ui/index.d.ts +6 -0
  220. package/dist/ui/index.d.ts.map +1 -1
  221. package/dist/ui/native-welcome.d.ts +61 -0
  222. package/dist/ui/native-welcome.d.ts.map +1 -0
  223. package/dist/ui/native-welcome.js +152 -0
  224. package/dist/ui/offline-banner.d.ts +22 -0
  225. package/dist/ui/offline-banner.d.ts.map +1 -0
  226. package/dist/ui/offline-banner.js +34 -0
  227. package/dist/ui/pull-to-refresh.d.ts +29 -0
  228. package/dist/ui/pull-to-refresh.d.ts.map +1 -0
  229. package/dist/ui/pull-to-refresh.js +44 -0
  230. package/dist/ui/pwa-update-toast.d.ts +34 -0
  231. package/dist/ui/pwa-update-toast.d.ts.map +1 -0
  232. package/dist/ui/pwa-update-toast.js +43 -0
  233. package/dist/ui/select.d.ts +38 -0
  234. package/dist/ui/select.d.ts.map +1 -1
  235. package/dist/ui/select.js +162 -61
  236. package/dist/ui.js +40 -35
  237. package/package.json +93 -4
  238. package/src/shared/styles/app-shell.css +3 -0
  239. package/src/shared/styles/native.css +577 -0
  240. package/dist/node_modules/@capacitor/core/dist/index.js +0 -268
@@ -0,0 +1,43 @@
1
+ import { cn as e } from "../shared-utils.js";
2
+ import { Button as t } from "./button.js";
3
+ import { useEffect as n, useState as r } from "react";
4
+ import { RefreshCw as i } from "lucide-react";
5
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
6
+ //#region src/ui/pwa-update-toast.tsx
7
+ var s = "burdenoff:pwaUpdateReady";
8
+ function c({ hasUpdate: c, message: l = "A new version is ready.", actionLabel: u = "Reload", onReload: d, className: f }) {
9
+ let [p, m] = r(!1);
10
+ return n(() => {
11
+ if (c !== void 0) return;
12
+ let e = () => m(!0);
13
+ return window.addEventListener(s, e), () => window.removeEventListener(s, e);
14
+ }, [c]), c ?? p ? /* @__PURE__ */ o("div", {
15
+ "data-pwa-update-toast": "",
16
+ role: "status",
17
+ "aria-live": "polite",
18
+ className: e("fixed inset-x-4 z-[140] mx-auto flex max-w-md items-center gap-3 rounded-card border border-border-subtle bg-bg-elevated px-4 py-3 shadow-elevation-3", f),
19
+ children: [
20
+ /* @__PURE__ */ a(i, {
21
+ className: "size-4 shrink-0 text-text-secondary",
22
+ "aria-hidden": "true"
23
+ }),
24
+ /* @__PURE__ */ a("span", {
25
+ className: "flex-1 text-sm text-text-primary",
26
+ children: l
27
+ }),
28
+ /* @__PURE__ */ a(t, {
29
+ size: "sm",
30
+ onClick: () => {
31
+ if (d) {
32
+ d();
33
+ return;
34
+ }
35
+ window.location.reload();
36
+ },
37
+ children: u
38
+ })
39
+ ]
40
+ }) : null;
41
+ }
42
+ //#endregion
43
+ export { c as PWAUpdateToast };
@@ -45,5 +45,43 @@ declare function SelectSeparator({ ref, className, ...props }: ComponentPropsWit
45
45
  declare namespace SelectSeparator {
46
46
  var displayName: string | undefined;
47
47
  }
48
+ export interface NativeSelectOption {
49
+ value: string;
50
+ label: string;
51
+ disabled?: boolean;
52
+ }
53
+ export interface NativeSelectProps {
54
+ options: NativeSelectOption[];
55
+ value?: string;
56
+ defaultValue?: string;
57
+ onValueChange?: (value: string) => void;
58
+ placeholder?: string;
59
+ /** Heading for the native bottom sheet (defaults to the placeholder). */
60
+ title?: string;
61
+ disabled?: boolean;
62
+ /**
63
+ * Use the bottom-sheet picker on native phones. Default true — set false to
64
+ * always use the Radix popover.
65
+ */
66
+ nativeSheet?: boolean;
67
+ className?: string;
68
+ 'aria-label'?: string;
69
+ id?: string;
70
+ name?: string;
71
+ }
72
+ /**
73
+ * NativeSelect — a drop-in, options-driven select built on the shared `Select`
74
+ * primitives, which switches to a `BottomSheet` picker inside installed native
75
+ * apps on phone widths (spec §5.7: bottom sheets replace popovers on mobile;
76
+ * `selection()` haptic on value change).
77
+ *
78
+ * The compound `Select*` primitives are untouched and remain the API for
79
+ * custom/grouped content; use `NativeSelect` when the options are a flat list
80
+ * and you want the platform-correct picker for free.
81
+ *
82
+ * DOM contract: `[data-native-select-trigger]` on the sheet trigger,
83
+ * `[data-native-select-option]` on each 48px sheet row.
84
+ */
85
+ export declare function NativeSelect({ options, value, defaultValue, onValueChange, placeholder, title, disabled, nativeSheet, className, id, name, 'aria-label': ariaLabel, }: NativeSelectProps): import("react/jsx-runtime").JSX.Element;
48
86
  export { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, };
49
87
  //# sourceMappingURL=select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/ui/select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,KAAK,wBAAwB,EAAE,KAAK,UAAU,EAAE,MAAM,OAAO,CAAC;AAIvE,QAAA,MAAM,MAAM,iDAAuB,CAAC;AAEpC,QAAA,MAAM,WAAW,6HAAwB,CAAC;AAE1C,QAAA,MAAM,WAAW,8HAAwB,CAAC;AAE1C,iBAAS,aAAa,CAAC,EACrB,GAAG,EACH,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IAC5D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;CAC7D,2CAgBA;kBAvBQ,aAAa;;;AA0BtB,iBAAS,oBAAoB,CAAC,EAC5B,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,wBAAwB,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,GAAG;IACnE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC;CACpE,2CAUA;kBAhBQ,oBAAoB;;;AAmB7B,iBAAS,sBAAsB,CAAC,EAC9B,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,wBAAwB,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,GAAG;IACrE,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,gBAAgB,CAAC,CAAC,CAAC;CACtE,2CAUA;kBAhBQ,sBAAsB;;;AAmB/B,iBAAS,aAAa,CAAC,EACrB,GAAG,EACH,SAAS,EACT,QAAQ,EACR,QAAmB,EACnB,GAAG,KAAK,EACT,EAAE,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,GAAG;IAC5D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;CAC7D,2CA4BA;kBApCQ,aAAa;;;AAuCtB,iBAAS,WAAW,CAAC,EACnB,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,wBAAwB,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,GAAG;IAC1D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;CAC3D,2CAWA;kBAjBQ,WAAW;;;AAoBpB,iBAAS,UAAU,CAAC,EAClB,GAAG,EACH,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,wBAAwB,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG;IACzD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;CAC1D,2CAmBA;kBA1BQ,UAAU;;;AA6BnB,iBAAS,eAAe,CAAC,EACvB,GAAG,EACH,SAAS,EACT,GAAG,KAAK,EACT,EAAE,wBAAwB,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,GAAG;IAC9D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;CAC/D,2CAQA;kBAdQ,eAAe;;;AAiBxB,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAC"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/ui/select.tsx"],"names":[],"mappings":"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"}
package/dist/ui/select.js CHANGED
@@ -1,83 +1,184 @@
1
- import { cn as e } from "../shared-utils.js";
2
- import { Check as t, ChevronDown as n, ChevronUp as r } from "lucide-react";
3
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
- import * as o from "@radix-ui/react-select";
1
+ import { BottomSheet as e, BottomSheetContent as t, BottomSheetHeader as n, BottomSheetTitle as r } from "./bottom-sheet.js";
2
+ import { isNative as i } from "../shared/native/platform.js";
3
+ import { cn as a } from "../shared-utils.js";
4
+ import { nativeSelection as o } from "../shared/native/consumers.js";
5
+ import { useEffect as s, useState as c } from "react";
6
+ import { Check as l, ChevronDown as u, ChevronUp as d } from "lucide-react";
7
+ import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
8
+ import * as h from "@radix-ui/react-select";
5
9
  //#region src/ui/select.tsx
6
- var s = o.Root, c = o.Group, l = o.Value;
7
- function u({ ref: t, className: r, children: s, ...c }) {
8
- return /* @__PURE__ */ a(o.Trigger, {
9
- ref: t,
10
- className: e("flex h-10 w-full items-center justify-between rounded-input border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary transition-colors duration-200 data-[placeholder]:text-text-placeholder focus:border-border-focus focus:outline-none focus:shadow-[var(--shadow-focus)] focus:ring-1 focus:ring-[var(--color-focus-ring)] disabled:cursor-not-allowed disabled:opacity-50 aria-[invalid=true]:border-status-error-border [&>span]:line-clamp-1", r),
11
- ...c,
12
- children: [s, /* @__PURE__ */ i(o.Icon, {
10
+ var g = h.Root, _ = h.Group, v = h.Value;
11
+ function y({ ref: e, className: t, children: n, ...r }) {
12
+ return /* @__PURE__ */ m(h.Trigger, {
13
+ ref: e,
14
+ className: a("flex h-10 w-full items-center justify-between rounded-input border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary transition-colors duration-200 data-[placeholder]:text-text-placeholder focus:border-border-focus focus:outline-none focus:shadow-[var(--shadow-focus)] focus:ring-1 focus:ring-[var(--color-focus-ring)] disabled:cursor-not-allowed disabled:opacity-50 aria-[invalid=true]:border-status-error-border [&>span]:line-clamp-1", t),
15
+ ...r,
16
+ children: [n, /* @__PURE__ */ p(h.Icon, {
13
17
  asChild: !0,
14
- children: /* @__PURE__ */ i(n, { className: "size-4 text-text-muted" })
18
+ children: /* @__PURE__ */ p(u, { className: "size-4 text-text-muted" })
15
19
  })]
16
20
  });
17
21
  }
18
- u.displayName = o.Trigger.displayName;
19
- function d({ ref: t, className: n, ...a }) {
20
- return /* @__PURE__ */ i(o.ScrollUpButton, {
21
- ref: t,
22
- className: e("flex cursor-default items-center justify-center py-1", n),
23
- ...a,
24
- children: /* @__PURE__ */ i(r, { className: "size-4" })
22
+ y.displayName = h.Trigger.displayName;
23
+ function b({ ref: e, className: t, ...n }) {
24
+ return /* @__PURE__ */ p(h.ScrollUpButton, {
25
+ ref: e,
26
+ className: a("flex cursor-default items-center justify-center py-1", t),
27
+ ...n,
28
+ children: /* @__PURE__ */ p(d, { className: "size-4" })
25
29
  });
26
30
  }
27
- d.displayName = o.ScrollUpButton.displayName;
28
- function f({ ref: t, className: r, ...a }) {
29
- return /* @__PURE__ */ i(o.ScrollDownButton, {
30
- ref: t,
31
- className: e("flex cursor-default items-center justify-center py-1", r),
32
- ...a,
33
- children: /* @__PURE__ */ i(n, { className: "size-4" })
31
+ b.displayName = h.ScrollUpButton.displayName;
32
+ function x({ ref: e, className: t, ...n }) {
33
+ return /* @__PURE__ */ p(h.ScrollDownButton, {
34
+ ref: e,
35
+ className: a("flex cursor-default items-center justify-center py-1", t),
36
+ ...n,
37
+ children: /* @__PURE__ */ p(u, { className: "size-4" })
34
38
  });
35
39
  }
36
- f.displayName = o.ScrollDownButton.displayName;
37
- function p({ ref: t, className: n, children: r, position: s = "popper", ...c }) {
38
- return /* @__PURE__ */ i(o.Portal, { children: /* @__PURE__ */ a(o.Content, {
39
- ref: t,
40
- className: e("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-card border border-border-subtle bg-bg-elevated text-text-primary shadow-elevation-3 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", s === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", n),
41
- position: s,
42
- ...c,
40
+ x.displayName = h.ScrollDownButton.displayName;
41
+ function S({ ref: e, className: t, children: n, position: r = "popper", ...i }) {
42
+ return /* @__PURE__ */ p(h.Portal, { children: /* @__PURE__ */ m(h.Content, {
43
+ ref: e,
44
+ className: a("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-card border border-border-subtle bg-bg-elevated text-text-primary shadow-elevation-3 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", r === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", t),
45
+ position: r,
46
+ ...i,
43
47
  children: [
44
- /* @__PURE__ */ i(d, {}),
45
- /* @__PURE__ */ i(o.Viewport, {
46
- className: e("p-1", s === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),
47
- children: r
48
+ /* @__PURE__ */ p(b, {}),
49
+ /* @__PURE__ */ p(h.Viewport, {
50
+ className: a("p-1", r === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),
51
+ children: n
48
52
  }),
49
- /* @__PURE__ */ i(f, {})
53
+ /* @__PURE__ */ p(x, {})
50
54
  ]
51
55
  }) });
52
56
  }
53
- p.displayName = o.Content.displayName;
54
- function m({ ref: t, className: n, ...r }) {
55
- return /* @__PURE__ */ i(o.Label, {
56
- ref: t,
57
- className: e("py-1.5 pl-8 pr-2 text-xs font-medium uppercase tracking-wide text-text-muted", n),
58
- ...r
57
+ S.displayName = h.Content.displayName;
58
+ function C({ ref: e, className: t, ...n }) {
59
+ return /* @__PURE__ */ p(h.Label, {
60
+ ref: e,
61
+ className: a("py-1.5 pl-8 pr-2 text-xs font-medium uppercase tracking-wide text-text-muted", t),
62
+ ...n
59
63
  });
60
64
  }
61
- m.displayName = o.Label.displayName;
62
- function h({ ref: n, className: r, children: s, ...c }) {
63
- return /* @__PURE__ */ a(o.Item, {
64
- ref: n,
65
- className: e("relative flex w-full cursor-default select-none items-center rounded-button py-1.5 pl-8 pr-2 text-sm text-text-primary outline-none transition-colors focus:bg-[var(--color-accent-soft)] focus:text-text-primary data-[state=checked]:bg-[var(--color-accent-soft)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50", r),
66
- ...c,
67
- children: [/* @__PURE__ */ i("span", {
65
+ C.displayName = h.Label.displayName;
66
+ function w({ ref: e, className: t, children: n, ...r }) {
67
+ return /* @__PURE__ */ m(h.Item, {
68
+ ref: e,
69
+ className: a("relative flex w-full cursor-default select-none items-center rounded-button py-1.5 pl-8 pr-2 text-sm text-text-primary outline-none transition-colors focus:bg-[var(--color-accent-soft)] focus:text-text-primary data-[state=checked]:bg-[var(--color-accent-soft)] data-[disabled]:pointer-events-none data-[disabled]:opacity-50", t),
70
+ ...r,
71
+ children: [/* @__PURE__ */ p("span", {
68
72
  className: "absolute left-2 flex size-3.5 items-center justify-center",
69
- children: /* @__PURE__ */ i(o.ItemIndicator, { children: /* @__PURE__ */ i(t, { className: "size-4" }) })
70
- }), /* @__PURE__ */ i(o.ItemText, { children: s })]
73
+ children: /* @__PURE__ */ p(h.ItemIndicator, { children: /* @__PURE__ */ p(l, { className: "size-4" }) })
74
+ }), /* @__PURE__ */ p(h.ItemText, { children: n })]
71
75
  });
72
76
  }
73
- h.displayName = o.Item.displayName;
74
- function g({ ref: t, className: n, ...r }) {
75
- return /* @__PURE__ */ i(o.Separator, {
76
- ref: t,
77
- className: e("-mx-1 my-1 h-px bg-border-subtle", n),
78
- ...r
77
+ w.displayName = h.Item.displayName;
78
+ function T({ ref: e, className: t, ...n }) {
79
+ return /* @__PURE__ */ p(h.Separator, {
80
+ ref: e,
81
+ className: a("-mx-1 my-1 h-px bg-border-subtle", t),
82
+ ...n
79
83
  });
80
84
  }
81
- g.displayName = o.Separator.displayName;
85
+ T.displayName = h.Separator.displayName;
86
+ var E = "(max-width: 767px)";
87
+ function D(e) {
88
+ let [t, n] = c(!1);
89
+ return s(() => {
90
+ if (!e || typeof window > "u" || !window.matchMedia) {
91
+ n(!1);
92
+ return;
93
+ }
94
+ if (!i()) {
95
+ n(!1);
96
+ return;
97
+ }
98
+ let t = window.matchMedia(E);
99
+ n(t.matches);
100
+ let r = (e) => n(e.matches);
101
+ return t.addEventListener("change", r), () => t.removeEventListener("change", r);
102
+ }, [e]), t;
103
+ }
104
+ function O({ options: i, value: s, defaultValue: d, onValueChange: h, placeholder: _ = "Select…", title: b, disabled: x = !1, nativeSheet: C = !0, className: T, id: E, name: O, "aria-label": k }) {
105
+ let A = D(C), [j, M] = c(d), [N, P] = c(!1), F = s ?? j, I = (e) => {
106
+ s === void 0 && M(e), h?.(e);
107
+ };
108
+ if (!A) return /* @__PURE__ */ m(g, {
109
+ value: s,
110
+ defaultValue: d,
111
+ onValueChange: I,
112
+ disabled: x,
113
+ name: O,
114
+ children: [/* @__PURE__ */ p(y, {
115
+ id: E,
116
+ "aria-label": k,
117
+ className: T,
118
+ children: /* @__PURE__ */ p(v, { placeholder: _ })
119
+ }), /* @__PURE__ */ p(S, { children: i.map((e) => /* @__PURE__ */ p(w, {
120
+ value: e.value,
121
+ disabled: e.disabled,
122
+ children: e.label
123
+ }, e.value)) })]
124
+ });
125
+ let L = i.find((e) => e.value === F);
126
+ return /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ m("button", {
127
+ type: "button",
128
+ id: E,
129
+ "data-native-select-trigger": "",
130
+ "aria-label": k,
131
+ "aria-haspopup": "listbox",
132
+ "aria-expanded": N,
133
+ disabled: x,
134
+ onClick: () => P(!0),
135
+ className: a("flex h-10 w-full items-center justify-between rounded-input border border-border-default bg-bg-surface px-3 py-2 text-sm text-text-primary transition-colors duration-200 focus:border-border-focus focus:outline-none focus:shadow-[var(--shadow-focus)] focus:ring-1 focus:ring-[var(--color-focus-ring)] disabled:cursor-not-allowed disabled:opacity-50", !L && "text-text-placeholder", T),
136
+ children: [/* @__PURE__ */ p("span", {
137
+ className: "line-clamp-1 text-left",
138
+ children: L?.label ?? _
139
+ }), /* @__PURE__ */ p(u, {
140
+ className: "size-4 text-text-muted",
141
+ "aria-hidden": "true"
142
+ })]
143
+ }), /* @__PURE__ */ p(e, {
144
+ open: N,
145
+ onOpenChange: P,
146
+ children: /* @__PURE__ */ m(t, {
147
+ showCloseButton: !1,
148
+ children: [/* @__PURE__ */ p(n, {
149
+ className: "px-1 text-center",
150
+ children: /* @__PURE__ */ p(r, {
151
+ className: "text-base",
152
+ children: b ?? _
153
+ })
154
+ }), /* @__PURE__ */ p("div", {
155
+ role: "listbox",
156
+ "aria-label": k ?? b ?? _,
157
+ className: "flex flex-col pb-2",
158
+ children: i.map((e) => {
159
+ let t = e.value === F;
160
+ return /* @__PURE__ */ m("button", {
161
+ type: "button",
162
+ role: "option",
163
+ "data-native-select-option": "",
164
+ "aria-selected": t,
165
+ disabled: e.disabled,
166
+ onClick: () => {
167
+ o(), I(e.value), P(!1);
168
+ },
169
+ className: a("flex h-12 w-full items-center justify-between rounded-button px-4 text-base text-text-primary transition-colors hover:bg-action-ghost-bgHover focus-visible:outline-none focus-visible:shadow-[var(--shadow-focus)] focus-visible:ring-1 focus-visible:ring-[var(--color-focus-ring)] disabled:pointer-events-none disabled:opacity-50", t && "bg-[var(--color-accent-soft)] font-medium"),
170
+ children: [/* @__PURE__ */ p("span", {
171
+ className: "text-left",
172
+ children: e.label
173
+ }), t && /* @__PURE__ */ p(l, {
174
+ className: "size-4",
175
+ "aria-hidden": "true"
176
+ })]
177
+ }, e.value);
178
+ })
179
+ })]
180
+ })
181
+ })] });
182
+ }
82
183
  //#endregion
83
- export { s as Select, p as SelectContent, c as SelectGroup, h as SelectItem, m as SelectLabel, f as SelectScrollDownButton, d as SelectScrollUpButton, g as SelectSeparator, u as SelectTrigger, l as SelectValue };
184
+ export { O as NativeSelect, g as Select, S as SelectContent, _ as SelectGroup, w as SelectItem, C as SelectLabel, x as SelectScrollDownButton, b as SelectScrollUpButton, T as SelectSeparator, y as SelectTrigger, v as SelectValue };
package/dist/ui.js CHANGED
@@ -8,38 +8,43 @@ import { BrandedSplash as N } from "./ui/branded-splash.js";
8
8
  import { Table as P, TableBody as F, TableCaption as I, TableCell as L, TableFooter as R, TableHead as z, TableHeader as B, TableRow as V } from "./ui/table.js";
9
9
  import { ResponsiveTable as H } from "./ui/responsive-table.js";
10
10
  import { Button as U, buttonVariants as W } from "./ui/button.js";
11
- import { Select as G, SelectContent as K, SelectGroup as q, SelectItem as J, SelectLabel as Y, SelectScrollDownButton as X, SelectScrollUpButton as Z, SelectSeparator as Q, SelectTrigger as $, SelectValue as ee } from "./ui/select.js";
12
- import { Pagination as te } from "./ui/pagination.js";
13
- import { Stepper as ne } from "./ui/stepper.js";
14
- import { ResponsiveStack as re } from "./ui/responsive-stack.js";
15
- import { EmptyState as ie } from "./ui/empty-state.js";
16
- import { AlertDialog as ae, AlertDialogAction as oe, AlertDialogCancel as se, AlertDialogContent as ce, AlertDialogDescription as le, AlertDialogFooter as ue, AlertDialogHeader as de, AlertDialogOverlay as fe, AlertDialogPortal as pe, AlertDialogTitle as me, AlertDialogTrigger as he } from "./ui/alert-dialog.js";
17
- import { Badge as ge, badgeVariants as _e } from "./ui/badge.js";
18
- import { Card as ve, CardContent as ye, CardDescription as be, CardFooter as xe, CardHeader as Se, CardTitle as Ce } from "./ui/card.js";
19
- import { Checkbox as we } from "./ui/checkbox.js";
20
- import { Command as Te, CommandDialog as Ee, CommandEmpty as De, CommandGroup as Oe, CommandInput as ke, CommandItem as Ae, CommandList as je, CommandSeparator as Me, CommandShortcut as Ne } from "./ui/command.js";
21
- import { DropdownMenu as Pe, DropdownMenuCheckboxItem as Fe, DropdownMenuContent as Ie, DropdownMenuGroup as Le, DropdownMenuItem as Re, DropdownMenuLabel as ze, DropdownMenuPortal as Be, DropdownMenuRadioGroup as Ve, DropdownMenuRadioItem as He, DropdownMenuSeparator as Ue, DropdownMenuShortcut as We, DropdownMenuSub as Ge, DropdownMenuSubContent as Ke, DropdownMenuSubTrigger as qe, DropdownMenuTrigger as Je } from "./ui/dropdown-menu.js";
22
- import { Input as Ye } from "./ui/input.js";
23
- import { Label as Xe } from "./ui/label.js";
24
- import { Popover as Ze, PopoverAnchor as Qe, PopoverContent as $e, PopoverTrigger as et } from "./ui/popover.js";
25
- import { ScrollArea as tt, ScrollBar as nt } from "./ui/scroll-area.js";
26
- import { Separator as rt } from "./ui/separator.js";
27
- import { Sheet as it, SheetClose as at, SheetContent as ot, SheetDescription as st, SheetFooter as ct, SheetHeader as lt, SheetTitle as ut, SheetTrigger as dt } from "./ui/sheet.js";
28
- import { Skeleton as ft } from "./ui/skeleton.js";
29
- import { Toaster as pt } from "./ui/sonner.js";
30
- import { Spinner as mt } from "./ui/spinner.js";
31
- import { Switch as ht } from "./ui/switch.js";
32
- import { Tabs as gt, TabsContent as _t, TabsList as vt, TabsTrigger as yt } from "./ui/tabs.js";
33
- import { Textarea as bt } from "./ui/textarea.js";
34
- import { Tooltip as xt, TooltipContent as St, TooltipProvider as Ct, TooltipTrigger as wt } from "./ui/tooltip.js";
35
- import { PageContainer as Tt } from "./ui/page-container.js";
36
- import { GlassCard as Et, glassCardVariants as Dt } from "./ui/glass-card.js";
37
- import { EmphasisPanel as Ot } from "./ui/emphasis-panel.js";
38
- import { ShowMore as kt } from "./ui/show-more.js";
39
- import { CTAOverflowMenu as At } from "./ui/cta-overflow-menu.js";
40
- import { ModernLanding as jt } from "./ui/modern-landing.js";
41
- import { AuroraBackground as Mt } from "./ui/aurora-background.js";
42
- import { IllustratedEmptyState as Nt, Illustration as Pt } from "./ui/illustration.js";
43
- import { GradientText as Ft } from "./ui/gradient-text.js";
44
- import { NextSteps as It, PagePurpose as Lt } from "./ui/guidance.js";
45
- export { e as Accordion, t as AccordionContent, n as AccordionItem, r as AccordionTrigger, ae as AlertDialog, oe as AlertDialogAction, se as AlertDialogCancel, ce as AlertDialogContent, le as AlertDialogDescription, ue as AlertDialogFooter, de as AlertDialogHeader, fe as AlertDialogOverlay, pe as AlertDialogPortal, me as AlertDialogTitle, he as AlertDialogTrigger, Mt as AuroraBackground, ge as Badge, _ as BottomSheet, v as BottomSheetClose, y as BottomSheetContent, b as BottomSheetDescription, x as BottomSheetFooter, S as BottomSheetHeader, C as BottomSheetTitle, w as BottomSheetTrigger, N as BrandedSplash, U as Button, At as CTAOverflowMenu, ve as Card, ye as CardContent, be as CardDescription, xe as CardFooter, Se as CardHeader, Ce as CardTitle, we as Checkbox, Te as Command, Ee as CommandDialog, De as CommandEmpty, Oe as CommandGroup, ke as CommandInput, Ae as CommandItem, je as CommandList, Me as CommandSeparator, Ne as CommandShortcut, i as Dialog, a as DialogClose, o as DialogContent, s as DialogDescription, c as DialogFooter, l as DialogHeader, u as DialogOverlay, d as DialogPortal, f as DialogTitle, p as DialogTrigger, Pe as DropdownMenu, Fe as DropdownMenuCheckboxItem, Ie as DropdownMenuContent, Le as DropdownMenuGroup, Re as DropdownMenuItem, ze as DropdownMenuLabel, Be as DropdownMenuPortal, Ve as DropdownMenuRadioGroup, He as DropdownMenuRadioItem, Ue as DropdownMenuSeparator, We as DropdownMenuShortcut, Ge as DropdownMenuSub, Ke as DropdownMenuSubContent, qe as DropdownMenuSubTrigger, Je as DropdownMenuTrigger, Ot as EmphasisPanel, ie as EmptyState, m as EntityIdModal, Et as GlassCard, Ft as GradientText, Nt as IllustratedEmptyState, Pt as Illustration, Ye as Input, Xe as Label, jt as ModernLanding, It as NextSteps, g as OptionalFields, Tt as PageContainer, Lt as PagePurpose, te as Pagination, Ze as Popover, Qe as PopoverAnchor, $e as PopoverContent, et as PopoverTrigger, T as ResponsiveDialog, E as ResponsiveDialogClose, D as ResponsiveDialogContent, O as ResponsiveDialogDescription, k as ResponsiveDialogFooter, A as ResponsiveDialogHeader, j as ResponsiveDialogTitle, M as ResponsiveDialogTrigger, re as ResponsiveStack, H as ResponsiveTable, tt as ScrollArea, nt as ScrollBar, G as Select, K as SelectContent, q as SelectGroup, J as SelectItem, Y as SelectLabel, X as SelectScrollDownButton, Z as SelectScrollUpButton, Q as SelectSeparator, $ as SelectTrigger, ee as SelectValue, rt as Separator, it as Sheet, at as SheetClose, ot as SheetContent, st as SheetDescription, ct as SheetFooter, lt as SheetHeader, ut as SheetTitle, dt as SheetTrigger, kt as ShowMore, ft as Skeleton, mt as Spinner, ne as Stepper, ht as Switch, P as Table, F as TableBody, I as TableCaption, L as TableCell, R as TableFooter, z as TableHead, B as TableHeader, V as TableRow, gt as Tabs, _t as TabsContent, vt as TabsList, yt as TabsTrigger, bt as Textarea, pt as Toaster, xt as Tooltip, St as TooltipContent, Ct as TooltipProvider, wt as TooltipTrigger, _e as badgeVariants, W as buttonVariants, Dt as glassCardVariants, h as useEntityIdModal };
11
+ import { NativeSelect as G, Select as K, SelectContent as q, SelectGroup as J, SelectItem as Y, SelectLabel as X, SelectScrollDownButton as Z, SelectScrollUpButton as Q, SelectSeparator as $, SelectTrigger as ee, SelectValue as te } from "./ui/select.js";
12
+ import { Pagination as ne } from "./ui/pagination.js";
13
+ import { Stepper as re } from "./ui/stepper.js";
14
+ import { ResponsiveStack as ie } from "./ui/responsive-stack.js";
15
+ import { EmptyState as ae } from "./ui/empty-state.js";
16
+ import { AlertDialog as oe, AlertDialogAction as se, AlertDialogCancel as ce, AlertDialogContent as le, AlertDialogDescription as ue, AlertDialogFooter as de, AlertDialogHeader as fe, AlertDialogOverlay as pe, AlertDialogPortal as me, AlertDialogTitle as he, AlertDialogTrigger as ge } from "./ui/alert-dialog.js";
17
+ import { Badge as _e, badgeVariants as ve } from "./ui/badge.js";
18
+ import { Card as ye, CardContent as be, CardDescription as xe, CardFooter as Se, CardHeader as Ce, CardTitle as we } from "./ui/card.js";
19
+ import { Checkbox as Te } from "./ui/checkbox.js";
20
+ import { Command as Ee, CommandDialog as De, CommandEmpty as Oe, CommandGroup as ke, CommandInput as Ae, CommandItem as je, CommandList as Me, CommandSeparator as Ne, CommandShortcut as Pe } from "./ui/command.js";
21
+ import { DropdownMenu as Fe, DropdownMenuCheckboxItem as Ie, DropdownMenuContent as Le, DropdownMenuGroup as Re, DropdownMenuItem as ze, DropdownMenuLabel as Be, DropdownMenuPortal as Ve, DropdownMenuRadioGroup as He, DropdownMenuRadioItem as Ue, DropdownMenuSeparator as We, DropdownMenuShortcut as Ge, DropdownMenuSub as Ke, DropdownMenuSubContent as qe, DropdownMenuSubTrigger as Je, DropdownMenuTrigger as Ye } from "./ui/dropdown-menu.js";
22
+ import { Input as Xe } from "./ui/input.js";
23
+ import { Label as Ze } from "./ui/label.js";
24
+ import { Popover as Qe, PopoverAnchor as $e, PopoverContent as et, PopoverTrigger as tt } from "./ui/popover.js";
25
+ import { ScrollArea as nt, ScrollBar as rt } from "./ui/scroll-area.js";
26
+ import { Separator as it } from "./ui/separator.js";
27
+ import { Sheet as at, SheetClose as ot, SheetContent as st, SheetDescription as ct, SheetFooter as lt, SheetHeader as ut, SheetTitle as dt, SheetTrigger as ft } from "./ui/sheet.js";
28
+ import { Skeleton as pt } from "./ui/skeleton.js";
29
+ import { Toaster as mt } from "./ui/sonner.js";
30
+ import { Spinner as ht } from "./ui/spinner.js";
31
+ import { Switch as gt } from "./ui/switch.js";
32
+ import { Tabs as _t, TabsContent as vt, TabsList as yt, TabsTrigger as bt } from "./ui/tabs.js";
33
+ import { Textarea as xt } from "./ui/textarea.js";
34
+ import { Tooltip as St, TooltipContent as Ct, TooltipProvider as wt, TooltipTrigger as Tt } from "./ui/tooltip.js";
35
+ import { PageContainer as Et } from "./ui/page-container.js";
36
+ import { GlassCard as Dt, glassCardVariants as Ot } from "./ui/glass-card.js";
37
+ import { EmphasisPanel as kt } from "./ui/emphasis-panel.js";
38
+ import { ShowMore as At } from "./ui/show-more.js";
39
+ import { CTAOverflowMenu as jt } from "./ui/cta-overflow-menu.js";
40
+ import { ModernLanding as Mt } from "./ui/modern-landing.js";
41
+ import { AuroraBackground as Nt } from "./ui/aurora-background.js";
42
+ import { IllustratedEmptyState as Pt, Illustration as Ft } from "./ui/illustration.js";
43
+ import { GradientText as It } from "./ui/gradient-text.js";
44
+ import { NextSteps as Lt, PagePurpose as Rt } from "./ui/guidance.js";
45
+ import { NativeWelcome as zt } from "./ui/native-welcome.js";
46
+ import { ActionSheet as Bt } from "./ui/action-sheet.js";
47
+ import { OfflineBanner as Vt } from "./ui/offline-banner.js";
48
+ import { PullToRefresh as Ht } from "./ui/pull-to-refresh.js";
49
+ import { PWAUpdateToast as Ut } from "./ui/pwa-update-toast.js";
50
+ export { e as Accordion, t as AccordionContent, n as AccordionItem, r as AccordionTrigger, Bt as ActionSheet, oe as AlertDialog, se as AlertDialogAction, ce as AlertDialogCancel, le as AlertDialogContent, ue as AlertDialogDescription, de as AlertDialogFooter, fe as AlertDialogHeader, pe as AlertDialogOverlay, me as AlertDialogPortal, he as AlertDialogTitle, ge as AlertDialogTrigger, Nt as AuroraBackground, _e as Badge, _ as BottomSheet, v as BottomSheetClose, y as BottomSheetContent, b as BottomSheetDescription, x as BottomSheetFooter, S as BottomSheetHeader, C as BottomSheetTitle, w as BottomSheetTrigger, N as BrandedSplash, U as Button, jt as CTAOverflowMenu, ye as Card, be as CardContent, xe as CardDescription, Se as CardFooter, Ce as CardHeader, we as CardTitle, Te as Checkbox, Ee as Command, De as CommandDialog, Oe as CommandEmpty, ke as CommandGroup, Ae as CommandInput, je as CommandItem, Me as CommandList, Ne as CommandSeparator, Pe as CommandShortcut, i as Dialog, a as DialogClose, o as DialogContent, s as DialogDescription, c as DialogFooter, l as DialogHeader, u as DialogOverlay, d as DialogPortal, f as DialogTitle, p as DialogTrigger, Fe as DropdownMenu, Ie as DropdownMenuCheckboxItem, Le as DropdownMenuContent, Re as DropdownMenuGroup, ze as DropdownMenuItem, Be as DropdownMenuLabel, Ve as DropdownMenuPortal, He as DropdownMenuRadioGroup, Ue as DropdownMenuRadioItem, We as DropdownMenuSeparator, Ge as DropdownMenuShortcut, Ke as DropdownMenuSub, qe as DropdownMenuSubContent, Je as DropdownMenuSubTrigger, Ye as DropdownMenuTrigger, kt as EmphasisPanel, ae as EmptyState, m as EntityIdModal, Dt as GlassCard, It as GradientText, Pt as IllustratedEmptyState, Ft as Illustration, Xe as Input, Ze as Label, Mt as ModernLanding, G as NativeSelect, zt as NativeWelcome, Lt as NextSteps, Vt as OfflineBanner, g as OptionalFields, Ut as PWAUpdateToast, Et as PageContainer, Rt as PagePurpose, ne as Pagination, Qe as Popover, $e as PopoverAnchor, et as PopoverContent, tt as PopoverTrigger, Ht as PullToRefresh, T as ResponsiveDialog, E as ResponsiveDialogClose, D as ResponsiveDialogContent, O as ResponsiveDialogDescription, k as ResponsiveDialogFooter, A as ResponsiveDialogHeader, j as ResponsiveDialogTitle, M as ResponsiveDialogTrigger, ie as ResponsiveStack, H as ResponsiveTable, nt as ScrollArea, rt as ScrollBar, K as Select, q as SelectContent, J as SelectGroup, Y as SelectItem, X as SelectLabel, Z as SelectScrollDownButton, Q as SelectScrollUpButton, $ as SelectSeparator, ee as SelectTrigger, te as SelectValue, it as Separator, at as Sheet, ot as SheetClose, st as SheetContent, ct as SheetDescription, lt as SheetFooter, ut as SheetHeader, dt as SheetTitle, ft as SheetTrigger, At as ShowMore, pt as Skeleton, ht as Spinner, re as Stepper, gt as Switch, P as Table, F as TableBody, I as TableCaption, L as TableCell, R as TableFooter, z as TableHead, B as TableHeader, V as TableRow, _t as Tabs, vt as TabsContent, yt as TabsList, bt as TabsTrigger, xt as Textarea, mt as Toaster, St as Tooltip, Ct as TooltipContent, wt as TooltipProvider, Tt as TooltipTrigger, ve as badgeVariants, W as buttonVariants, Ot as glassCardVariants, h as useEntityIdModal };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.819.5",
3
+ "version": "2026.823.2",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {
@@ -220,6 +220,7 @@
220
220
  "default": "./dist/shared/shims/*.js"
221
221
  },
222
222
  "./shared/styles/app-shell.css": "./src/shared/styles/app-shell.css",
223
+ "./shared/styles/native.css": "./src/shared/styles/native.css",
223
224
  "./shared/utils/lazyWithRetry": {
224
225
  "types": "./dist/shared/utils/lazyWithRetry.d.ts",
225
226
  "import": "./dist/shared/utils/lazyWithRetry.js"
@@ -263,6 +264,14 @@
263
264
  "./shared/native/*": {
264
265
  "types": "./dist/shared/native/*.d.ts",
265
266
  "import": "./dist/shared/native/*.js"
267
+ },
268
+ "./shell-native": {
269
+ "types": "./dist/shell-native/index.d.ts",
270
+ "import": "./dist/shell-native.js"
271
+ },
272
+ "./shell-native/*": {
273
+ "types": "./dist/shell-native/*.d.ts",
274
+ "import": "./dist/shell-native/*.js"
266
275
  }
267
276
  },
268
277
  "files": [
@@ -284,7 +293,7 @@
284
293
  "lint:sanity": "if [ \"${CI:-}\" = \"true\" ]; then bun run lint; else bun run lint -- --cache --cache-location .eslintcache; fi",
285
294
  "format": "prettier --config shared/config/prettier.config.mjs --write \"src/**/*.{ts,tsx}\" \"!src/config/*.config.ts\"",
286
295
  "type:check": "bash scripts/build-limits.sh tsc --noEmit",
287
- "test": "bun test scripts/graphql-schema-drift/__tests__ src/credentials src/storage src/shared/assistant src/shared/providers/AppShellProvider.test.ts src/shared/events/sinks/RybbitSink.test.ts",
296
+ "test": "bun test scripts/graphql-schema-drift/__tests__ src/credentials src/storage src/shared/assistant src/shared/providers/AppShellProvider.test.ts src/shared/events/sinks/RybbitSink.test.ts src/shell-native src/shared/native src/chrome/__tests__ src/ui/__tests__",
288
297
  "sanity": "bash scripts/build-limits.sh --gate bash -c 'bun run lint:sanity && bun run format && bun run type:check && bun run test && bun run build'",
289
298
  "switch:status": "bun scripts/deps-mode.ts status",
290
299
  "switch:remote": "bun scripts/deps-mode.ts remote",
@@ -350,7 +359,23 @@
350
359
  "typescript": "^5.9.0",
351
360
  "typescript-eslint": "^8.50.1",
352
361
  "vite": "8.0.10",
353
- "vite-plugin-dts": "4.5.4"
362
+ "vite-plugin-dts": "4.5.4",
363
+ "@capacitor/app": "^8.1.0",
364
+ "@capacitor/action-sheet": "^8.1.1",
365
+ "@capacitor/browser": "^8.0.3",
366
+ "@capacitor/clipboard": "^8.0.1",
367
+ "@capacitor/device": "^8.0.2",
368
+ "@capacitor/dialog": "^8.0.1",
369
+ "@capacitor/haptics": "^8.0.2",
370
+ "@capacitor/keyboard": "^8.0.3",
371
+ "@capacitor/network": "^8.0.1",
372
+ "@capacitor/preferences": "^8.0.1",
373
+ "@capacitor/share": "^8.0.1",
374
+ "@capacitor/splash-screen": "^8.0.1",
375
+ "@capacitor/status-bar": "^8.0.2",
376
+ "@capacitor/toast": "^8.0.1",
377
+ "@capacitor/push-notifications": "^8.0.3",
378
+ "@capgo/capacitor-updater": "^8.47.5"
354
379
  },
355
380
  "peerDependencies": {
356
381
  "@apollo/client": "^4.0.9",
@@ -363,7 +388,23 @@
363
388
  "react-dom": "^19.0.0",
364
389
  "react-router": "^8.3.0",
365
390
  "zustand": "^5.0.5",
366
- "framer-motion": "^12.0.0"
391
+ "framer-motion": "^12.0.0",
392
+ "@capacitor/app": "^8.1.0",
393
+ "@capacitor/action-sheet": "^8.1.1",
394
+ "@capacitor/browser": "^8.0.3",
395
+ "@capacitor/clipboard": "^8.0.1",
396
+ "@capacitor/device": "^8.0.2",
397
+ "@capacitor/dialog": "^8.0.1",
398
+ "@capacitor/haptics": "^8.0.2",
399
+ "@capacitor/keyboard": "^8.0.3",
400
+ "@capacitor/network": "^8.0.1",
401
+ "@capacitor/preferences": "^8.0.1",
402
+ "@capacitor/share": "^8.0.1",
403
+ "@capacitor/splash-screen": "^8.0.1",
404
+ "@capacitor/status-bar": "^8.0.2",
405
+ "@capacitor/toast": "^8.0.1",
406
+ "@capacitor/push-notifications": "^8.0.3",
407
+ "@capgo/capacitor-updater": "^8.47.5"
367
408
  },
368
409
  "overrides": {
369
410
  "lodash": "4.18.1",
@@ -398,6 +439,54 @@
398
439
  },
399
440
  "framer-motion": {
400
441
  "optional": true
442
+ },
443
+ "@capacitor/app": {
444
+ "optional": true
445
+ },
446
+ "@capacitor/action-sheet": {
447
+ "optional": true
448
+ },
449
+ "@capacitor/browser": {
450
+ "optional": true
451
+ },
452
+ "@capacitor/clipboard": {
453
+ "optional": true
454
+ },
455
+ "@capacitor/device": {
456
+ "optional": true
457
+ },
458
+ "@capacitor/dialog": {
459
+ "optional": true
460
+ },
461
+ "@capacitor/haptics": {
462
+ "optional": true
463
+ },
464
+ "@capacitor/keyboard": {
465
+ "optional": true
466
+ },
467
+ "@capacitor/network": {
468
+ "optional": true
469
+ },
470
+ "@capacitor/preferences": {
471
+ "optional": true
472
+ },
473
+ "@capacitor/share": {
474
+ "optional": true
475
+ },
476
+ "@capacitor/splash-screen": {
477
+ "optional": true
478
+ },
479
+ "@capacitor/status-bar": {
480
+ "optional": true
481
+ },
482
+ "@capacitor/toast": {
483
+ "optional": true
484
+ },
485
+ "@capacitor/push-notifications": {
486
+ "optional": true
487
+ },
488
+ "@capgo/capacitor-updater": {
489
+ "optional": true
401
490
  }
402
491
  },
403
492
  "engines": {
@@ -10,6 +10,9 @@
10
10
  * Then add product-specific overrides below.
11
11
  */
12
12
 
13
+ /* Installed-app (Capacitor / PWA / Electron) look & feel rules. */
14
+ @import './native.css';
15
+
13
16
  /* ============================================
14
17
  * @theme — Tailwind v4 theme configuration
15
18
  * Maps fe-libs design tokens to Tailwind utilities