@btndprojects/loam-ui-native 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +55 -2
- package/dist/accordion/index.js +3 -0
- package/dist/adaptive/index.js +2 -0
- package/dist/alert/index.js +3 -0
- package/dist/analyzer/index.js +6 -0
- package/dist/announcement/index.js +6 -0
- package/dist/audio-player/index.js +3 -0
- package/dist/avatar/index.js +3 -0
- package/dist/avatar-group/index.js +3 -0
- package/dist/badge/index.js +5 -0
- package/dist/banner/index.js +2 -0
- package/dist/board/index.js +7 -0
- package/dist/button/index.js +5 -0
- package/dist/camera-permission/index.js +13 -0
- package/dist/capture-result/index.js +18 -0
- package/dist/card/index.js +4 -0
- package/dist/card-form/index.js +10 -0
- package/dist/carousel/index.js +2 -0
- package/dist/chart/index.js +6 -0
- package/dist/charts/index.js +7 -0
- package/dist/checkbox/index.js +7 -0
- package/dist/checklist/index.js +10 -0
- package/dist/checkout/index.js +13 -0
- package/dist/chip/index.js +7 -0
- package/dist/chunk-223Q2T2Q.js +229 -0
- package/dist/chunk-2A5NIQAK.js +254 -0
- package/dist/chunk-2GK6PHGE.js +363 -0
- package/dist/chunk-2WUTXHMU.js +1 -0
- package/dist/chunk-2ZZ7TDJ4.js +324 -0
- package/dist/chunk-35OFI3JG.js +499 -0
- package/dist/chunk-3ARE4TES.js +195 -0
- package/dist/chunk-3ECPOSKO.js +1 -0
- package/dist/chunk-3ENTMPQY.js +229 -0
- package/dist/chunk-3HJH6FF4.js +98 -0
- package/dist/chunk-3NMD74ZU.js +4 -0
- package/dist/chunk-3WPW4KUN.js +182 -0
- package/dist/chunk-423B7SPN.js +993 -0
- package/dist/chunk-47FWHGUN.js +394 -0
- package/dist/chunk-4BXMXBJO.js +141 -0
- package/dist/chunk-4DS5ZWVC.js +83 -0
- package/dist/chunk-4GBOGOTV.js +295 -0
- package/dist/chunk-4SZYY6AN.js +99 -0
- package/dist/chunk-4YIP3CWS.js +237 -0
- package/dist/chunk-4YQOR7JM.js +204 -0
- package/dist/chunk-4ZAHCY44.js +177 -0
- package/dist/chunk-52X2VYTD.js +228 -0
- package/dist/chunk-5P26LBDL.js +1 -0
- package/dist/chunk-5XLRYDAX.js +1 -0
- package/dist/chunk-5YNTNN5A.js +177 -0
- package/dist/chunk-6HT2LP62.js +504 -0
- package/dist/chunk-6N33LFQA.js +35 -0
- package/dist/chunk-6X6PQ443.js +432 -0
- package/dist/chunk-7CFF4HXS.js +126 -0
- package/dist/chunk-7O2FMUPT.js +755 -0
- package/dist/chunk-AI4DWZCD.js +162 -0
- package/dist/chunk-AWJOCGFZ.js +213 -0
- package/dist/chunk-AZRX6SAC.js +285 -0
- package/dist/chunk-B54QE2FN.js +1 -0
- package/dist/chunk-BC475SJH.js +1 -0
- package/dist/chunk-BEDBFJND.js +202 -0
- package/dist/chunk-BTTFCMKG.js +166 -0
- package/dist/chunk-BV3B2HYZ.js +1635 -0
- package/dist/chunk-C2NTXVWM.js +98 -0
- package/dist/chunk-CDRZHT42.js +424 -0
- package/dist/chunk-CJ5EOYZE.js +62 -0
- package/dist/chunk-CUMUNPXY.js +128 -0
- package/dist/chunk-CUS3ZSCU.js +1 -0
- package/dist/chunk-CYRBHQQZ.js +411 -0
- package/dist/chunk-DHWADYZX.js +144 -0
- package/dist/chunk-DKCSPATL.js +1 -0
- package/dist/chunk-DM5QUKKO.js +326 -0
- package/dist/chunk-DYBH2I6W.js +1 -0
- package/dist/chunk-DZ255O2F.js +1 -0
- package/dist/chunk-E35BPSGW.js +1 -0
- package/dist/chunk-EJBDRVIH.js +166 -0
- package/dist/chunk-F43NP42L.js +1 -0
- package/dist/chunk-F5XNPWS7.js +1024 -0
- package/dist/chunk-FMYDDECK.js +1521 -0
- package/dist/chunk-G3HOYSF7.js +1 -0
- package/dist/chunk-GDKZTW34.js +395 -0
- package/dist/chunk-GL7B2DOW.js +134 -0
- package/dist/chunk-GNNJ4GCC.js +471 -0
- package/dist/chunk-GNZ56EUI.js +1 -0
- package/dist/chunk-H6NIOQHK.js +346 -0
- package/dist/chunk-H6PC7RDA.js +1 -0
- package/dist/chunk-HET4LLMX.js +129 -0
- package/dist/chunk-HPPW424V.js +334 -0
- package/dist/chunk-HQOQIBJI.js +1 -0
- package/dist/chunk-HU2EQNRZ.js +44 -0
- package/dist/chunk-HZ6CNMAF.js +870 -0
- package/dist/chunk-IIQTAY3J.js +715 -0
- package/dist/chunk-ITTYJZWX.js +271 -0
- package/dist/chunk-IVNRBPGC.js +1018 -0
- package/dist/chunk-J4KLDGI4.js +1 -0
- package/dist/chunk-J7Q7VCVC.js +254 -0
- package/dist/chunk-JDEOITQ2.js +1 -0
- package/dist/chunk-JNH2TYIN.js +96 -0
- package/dist/chunk-JNY4ZHAR.js +634 -0
- package/dist/chunk-JRLTGLN4.js +1 -0
- package/dist/chunk-JTRJJLKL.js +1 -0
- package/dist/chunk-JUAMLEHX.js +379 -0
- package/dist/chunk-JXJB2X6M.js +131 -0
- package/dist/chunk-KMI5ML5I.js +262 -0
- package/dist/chunk-KTAC4MGE.js +4 -0
- package/dist/chunk-LAECSR4H.js +178 -0
- package/dist/chunk-LK4BCSGX.js +1 -0
- package/dist/chunk-LOE5YNN3.js +470 -0
- package/dist/chunk-LRJNDEIA.js +302 -0
- package/dist/chunk-LSS54GLJ.js +116 -0
- package/dist/chunk-LZLHELAG.js +137 -0
- package/dist/chunk-M2LUXGKZ.js +1 -0
- package/dist/chunk-MOUJOP55.js +425 -0
- package/dist/chunk-N32RGOA5.js +159 -0
- package/dist/chunk-N5ZNE2YE.js +1 -0
- package/dist/chunk-NBNCBML6.js +1 -0
- package/dist/chunk-NKB7BZYK.js +167 -0
- package/dist/chunk-NQYBUO3K.js +1795 -0
- package/dist/chunk-NY2U3PBI.js +59 -0
- package/dist/chunk-O4AEHWII.js +464 -0
- package/dist/chunk-O7AE6DAF.js +146 -0
- package/dist/chunk-OETCUXQP.js +134 -0
- package/dist/chunk-OOPPQH27.js +179 -0
- package/dist/chunk-OPXFZ4Y5.js +204 -0
- package/dist/chunk-P23EQNRQ.js +338 -0
- package/dist/chunk-PJXUJYS6.js +248 -0
- package/dist/chunk-PNWUWOBF.js +1 -0
- package/dist/chunk-PUPM2YGF.js +376 -0
- package/dist/chunk-PZXZJBMP.js +620 -0
- package/dist/chunk-Q72LJOVE.js +169 -0
- package/dist/chunk-QCDXZBC5.js +247 -0
- package/dist/chunk-QDYDBCFP.js +197 -0
- package/dist/chunk-QJJ6MADV.js +274 -0
- package/dist/chunk-QKXCPTFS.js +349 -0
- package/dist/chunk-QWCMU5B2.js +860 -0
- package/dist/chunk-RIBDXGUG.js +108 -0
- package/dist/chunk-RJQOOHT2.js +214 -0
- package/dist/chunk-RNGLIHFA.js +191 -0
- package/dist/chunk-RQ3HASCC.js +6 -0
- package/dist/chunk-RSOJT5YW.js +124 -0
- package/dist/chunk-RTIKSY6A.js +1 -0
- package/dist/chunk-RUZHTGKB.js +237 -0
- package/dist/chunk-RW6ZL2FQ.js +284 -0
- package/dist/chunk-S7F6XLTK.js +540 -0
- package/dist/chunk-SBMNWWBV.js +155 -0
- package/dist/chunk-SDTQPRRB.js +1 -0
- package/dist/chunk-SYNOJOQO.js +377 -0
- package/dist/chunk-T753XT36.js +1 -0
- package/dist/chunk-TKQYWZ5V.js +196 -0
- package/dist/chunk-TKVFVF5D.js +95 -0
- package/dist/chunk-TOXAGRDQ.js +144 -0
- package/dist/chunk-TUTI5HOZ.js +112 -0
- package/dist/chunk-U7TFM2JA.js +140 -0
- package/dist/chunk-UC2WGUP3.js +627 -0
- package/dist/chunk-UWFLYMAR.js +1126 -0
- package/dist/chunk-UWSZB7BJ.js +1 -0
- package/dist/chunk-UYG5L34B.js +87 -0
- package/dist/chunk-VBOXAEPI.js +336 -0
- package/dist/chunk-VCDBXW5H.js +188 -0
- package/dist/chunk-VCXPHHDS.js +1 -0
- package/dist/chunk-VEAYTRPX.js +414 -0
- package/dist/chunk-VFCUIDRT.js +1 -0
- package/dist/chunk-VQHPQEUH.js +273 -0
- package/dist/chunk-VXDZFJGP.js +874 -0
- package/dist/chunk-WS56BL3D.js +1 -0
- package/dist/chunk-WSW6ZFAQ.js +98 -0
- package/dist/chunk-XNUVB5OL.js +375 -0
- package/dist/chunk-XOSCY2CW.js +242 -0
- package/dist/chunk-XXXEFXY5.js +99 -0
- package/dist/chunk-Y5CSSPV4.js +1 -0
- package/dist/chunk-Y6DU4J47.js +1 -0
- package/dist/chunk-YC6WORFL.js +535 -0
- package/dist/chunk-YDGVJETP.js +60 -0
- package/dist/chunk-YF4NSSMT.js +366 -0
- package/dist/chunk-YG3ZJHGU.js +223 -0
- package/dist/chunk-YIJ55TBC.js +1 -0
- package/dist/chunk-YKZ4RZZF.js +1 -0
- package/dist/chunk-YLLCXTMC.js +37 -0
- package/dist/chunk-YTA74UZR.js +1 -0
- package/dist/chunk-YTFKPRUK.js +845 -0
- package/dist/chunk-Z7H7VSFZ.js +323 -0
- package/dist/chunk-ZK2H4O5P.js +1 -0
- package/dist/chunk-ZVFE5QGU.js +524 -0
- package/dist/coachmark/index.js +4 -0
- package/dist/code-block/index.js +4 -0
- package/dist/color-field/index.js +7 -0
- package/dist/commerce/index.js +20 -0
- package/dist/connectivity/index.js +2 -0
- package/dist/context-menu/index.js +5 -0
- package/dist/copy-button/index.js +3 -0
- package/dist/data-grid/index.js +24 -0
- package/dist/date-range-picker/index.js +13 -0
- package/dist/description-list/index.js +2 -0
- package/dist/dialog/index.js +3 -0
- package/dist/empty-state/index.js +3 -0
- package/dist/error-summary/index.js +3 -0
- package/dist/fab/index.js +2 -0
- package/dist/file-upload/index.js +9 -0
- package/dist/filter-bar/index.js +8 -0
- package/dist/flow-run/index.js +14 -0
- package/dist/form/index.js +3 -0
- package/dist/gallery/index.js +2 -0
- package/dist/header/index.js +5 -0
- package/dist/hold-to-confirm/index.js +4 -0
- package/dist/index.d.ts +22883 -0
- package/dist/index.js +158 -0
- package/dist/infinite-list/index.js +2 -0
- package/dist/inline-edit/index.js +5 -0
- package/dist/input/index.js +5 -0
- package/dist/interactions/index.js +2 -0
- package/dist/invoice/index.js +10 -0
- package/dist/kbd/index.js +1 -0
- package/dist/keyboard/index.js +3 -0
- package/dist/list-row/index.js +7 -0
- package/dist/log-viewer/index.js +2 -0
- package/dist/map-view/index.js +3 -0
- package/dist/markdown/index.js +6 -0
- package/dist/metric/index.js +4 -0
- package/dist/money/index.js +3 -0
- package/dist/nav-drawer/index.js +2 -0
- package/dist/navigation/index.js +2 -0
- package/dist/notification-center/index.js +16 -0
- package/dist/number-roll/index.js +3 -0
- package/dist/one-handed/index.js +5 -0
- package/dist/os-surfaces/index.js +3 -0
- package/dist/otp/index.js +7 -0
- package/dist/page-header/index.js +1 -0
- package/dist/payment-method/index.js +12 -0
- package/dist/payment-status/index.js +16 -0
- package/dist/permission/index.js +2 -0
- package/dist/picker/index.js +7 -0
- package/dist/progress/index.js +5 -0
- package/dist/pull-to-refresh/index.js +4 -0
- package/dist/radio-group/index.js +6 -0
- package/dist/rating/index.js +2 -0
- package/dist/receivables/index.js +20 -0
- package/dist/refund/index.js +16 -0
- package/dist/save-status/index.js +3 -0
- package/dist/scroll-area/index.js +1 -0
- package/dist/search-bar/index.js +5 -0
- package/dist/segmented-control/index.js +5 -0
- package/dist/sheet/index.js +4 -0
- package/dist/skeleton/index.js +2 -0
- package/dist/slider/index.js +5 -0
- package/dist/spinner/index.js +2 -0
- package/dist/split-button/index.js +7 -0
- package/dist/spotlight/index.js +2 -0
- package/dist/stage-timeline/index.js +4 -0
- package/dist/status-dot/index.js +2 -0
- package/dist/stepper/index.js +6 -0
- package/dist/streaming-text/index.js +3 -0
- package/dist/survey/index.js +19 -0
- package/dist/switch/index.js +5 -0
- package/dist/system-state/index.js +4 -0
- package/dist/tab-bar/index.js +2 -0
- package/dist/tabs/index.js +2 -0
- package/dist/textarea/index.js +6 -0
- package/dist/thinking/index.js +2 -0
- package/dist/timeline/index.js +4 -0
- package/dist/toast/index.js +2 -0
- package/dist/toolbar/index.js +2 -0
- package/dist/tour/index.js +11 -0
- package/dist/truncation-notice/index.js +2 -0
- package/dist/update-notice/index.js +11 -0
- package/dist/video-player/index.js +2 -0
- package/dist/viewfinder/index.js +5 -0
- package/dist/widget/index.js +4 -0
- package/dist/wizard/index.js +6 -0
- package/package.json +76 -3
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nuszpl Botond
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,56 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://loam.btndprojects.com"><img src="https://loam.btndprojects.com/apple-touch-icon.png" width="64" height="64" alt="Loam"></a>
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
<h1 align="center">@btndprojects/loam-ui-native</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">The Loam React Native component library — native primitives themed with Unistyles from the same tokens as the web.</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://www.npmjs.com/package/@btndprojects/loam-ui-native"><img src="https://img.shields.io/npm/v/@btndprojects/loam-ui-native?color=c0563a&label=npm" alt="npm version"></a>
|
|
11
|
+
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-3d7a48" alt="MIT license"></a>
|
|
12
|
+
<a href="https://loam.btndprojects.com"><img src="https://img.shields.io/badge/docs-loam.btndprojects.com-8c3a25" alt="Documentation"></a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
The same component vocabulary as [`@btndprojects/loam-ui-web`](https://www.npmjs.com/package/@btndprojects/loam-ui-web), built for phones: platform-aware metrics on iOS and Android, native gestures, safe areas, haptics and dynamic type.
|
|
16
|
+
|
|
17
|
+
## Install
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
npm install @btndprojects/loam-ui-native @btndprojects/loam-theme-native @btndprojects/loam-tokens
|
|
21
|
+
npm install react-native-unistyles react-native-svg
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
Wrap the app in `LoamProvider`, then use the components:
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
import { LoamProvider } from '@btndprojects/loam-theme-native';
|
|
30
|
+
import { Button, Card, ListRow } from '@btndprojects/loam-ui-native';
|
|
31
|
+
|
|
32
|
+
export default function App() {
|
|
33
|
+
return (
|
|
34
|
+
<LoamProvider preset="aurora" mode="Dark">
|
|
35
|
+
<Card>
|
|
36
|
+
<ListRow title="Notifications" subtitle="Push, email and SMS alerts" />
|
|
37
|
+
<Button onPress={() => {}}>Save</Button>
|
|
38
|
+
</Card>
|
|
39
|
+
</LoamProvider>
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Documentation
|
|
45
|
+
|
|
46
|
+
Guides, live examples and the full API are on **[loam.btndprojects.com](https://loam.btndprojects.com)** — start with [Components (switch the platform to iOS or Android)](https://loam.btndprojects.com/#/components/button).
|
|
47
|
+
|
|
48
|
+
## Related packages
|
|
49
|
+
|
|
50
|
+
- [`@btndprojects/loam-theme-native`](https://www.npmjs.com/package/@btndprojects/loam-theme-native) — the Unistyles theme provider
|
|
51
|
+
- [`@btndprojects/loam-tokens`](https://www.npmjs.com/package/@btndprojects/loam-tokens) — the design tokens and presets
|
|
52
|
+
- [`@btndprojects/loam-ui-web`](https://www.npmjs.com/package/@btndprojects/loam-ui-web) — the same components for the web
|
|
53
|
+
|
|
54
|
+
## License
|
|
55
|
+
|
|
56
|
+
MIT © Nuszpl Botond
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Analyzer, CameraSurface, CaptureFlash, PreviewSlot, QueueBadge } from '../chunk-S7F6XLTK.js';
|
|
2
|
+
import '../chunk-BV3B2HYZ.js';
|
|
3
|
+
export { PLACEHOLDER_LABEL, PlaceholderFeed, SubjectPlate } from '../chunk-LAECSR4H.js';
|
|
4
|
+
import '../chunk-RW6ZL2FQ.js';
|
|
5
|
+
import '../chunk-6N33LFQA.js';
|
|
6
|
+
import '../chunk-TKVFVF5D.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { CameraDenied, PermissionPrimer as CameraPermissionPrimer, CameraPermissionScreen, CameraUnavailable, CaptureDone } from '../chunk-2A5NIQAK.js';
|
|
2
|
+
import '../chunk-N32RGOA5.js';
|
|
3
|
+
import '../chunk-SBMNWWBV.js';
|
|
4
|
+
import '../chunk-CUMUNPXY.js';
|
|
5
|
+
import '../chunk-KMI5ML5I.js';
|
|
6
|
+
import '../chunk-O7AE6DAF.js';
|
|
7
|
+
import '../chunk-RIBDXGUG.js';
|
|
8
|
+
import '../chunk-RW6ZL2FQ.js';
|
|
9
|
+
import '../chunk-3ARE4TES.js';
|
|
10
|
+
import '../chunk-AWJOCGFZ.js';
|
|
11
|
+
import '../chunk-NY2U3PBI.js';
|
|
12
|
+
import '../chunk-6N33LFQA.js';
|
|
13
|
+
import '../chunk-TKVFVF5D.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { AnalysisProgress, CapturePreview, CodeResult, FROZEN_PHASES, FailureCard, FieldsResult, PanelsResult, ResultCard, ResultSheet, RetakeBar, ScanSweep, SpeciesResult, StageBadge, StageRow, VerdictResult } from '../chunk-423B7SPN.js';
|
|
2
|
+
import '../chunk-VQHPQEUH.js';
|
|
3
|
+
import '../chunk-TUTI5HOZ.js';
|
|
4
|
+
import '../chunk-ITTYJZWX.js';
|
|
5
|
+
import '../chunk-3NMD74ZU.js';
|
|
6
|
+
export { ConfidenceBadge, PhaseAnnouncement } from '../chunk-N32RGOA5.js';
|
|
7
|
+
import '../chunk-SBMNWWBV.js';
|
|
8
|
+
import '../chunk-CUMUNPXY.js';
|
|
9
|
+
import '../chunk-KMI5ML5I.js';
|
|
10
|
+
import '../chunk-O7AE6DAF.js';
|
|
11
|
+
import '../chunk-RIBDXGUG.js';
|
|
12
|
+
import '../chunk-LAECSR4H.js';
|
|
13
|
+
import '../chunk-RW6ZL2FQ.js';
|
|
14
|
+
import '../chunk-3ARE4TES.js';
|
|
15
|
+
import '../chunk-AWJOCGFZ.js';
|
|
16
|
+
import '../chunk-NY2U3PBI.js';
|
|
17
|
+
import '../chunk-6N33LFQA.js';
|
|
18
|
+
import '../chunk-TKVFVF5D.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { CardForm, CardNumberField, CvcField, ExpiryField, ExpiryHint, validateCard } from '../chunk-O4AEHWII.js';
|
|
2
|
+
import '../chunk-PUPM2YGF.js';
|
|
3
|
+
import '../chunk-JXJB2X6M.js';
|
|
4
|
+
import '../chunk-ITTYJZWX.js';
|
|
5
|
+
import '../chunk-3NMD74ZU.js';
|
|
6
|
+
import '../chunk-SBMNWWBV.js';
|
|
7
|
+
import '../chunk-CUMUNPXY.js';
|
|
8
|
+
import '../chunk-NY2U3PBI.js';
|
|
9
|
+
import '../chunk-6N33LFQA.js';
|
|
10
|
+
import '../chunk-TKVFVF5D.js';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { Chart, ChartDataTable, SceneDefsNodes, SceneNodes, nativeChartPalette } from '../chunk-7O2FMUPT.js';
|
|
2
|
+
import '../chunk-RIBDXGUG.js';
|
|
3
|
+
import '../chunk-3ARE4TES.js';
|
|
4
|
+
import '../chunk-AWJOCGFZ.js';
|
|
5
|
+
import '../chunk-NY2U3PBI.js';
|
|
6
|
+
import '../chunk-TKVFVF5D.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { BarChart, ChartFrame, Donut, RingChart, Sparkline, StackedBar, StatCard } from '../chunk-IIQTAY3J.js';
|
|
2
|
+
import '../chunk-RIBDXGUG.js';
|
|
3
|
+
import '../chunk-3ARE4TES.js';
|
|
4
|
+
import '../chunk-AWJOCGFZ.js';
|
|
5
|
+
import '../chunk-NY2U3PBI.js';
|
|
6
|
+
import '../chunk-6N33LFQA.js';
|
|
7
|
+
import '../chunk-TKVFVF5D.js';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { Checklist, ChecklistLauncher, ChecklistProgress, ChecklistRow } from '../chunk-LRJNDEIA.js';
|
|
2
|
+
import '../chunk-JUAMLEHX.js';
|
|
3
|
+
import '../chunk-2ZZ7TDJ4.js';
|
|
4
|
+
import '../chunk-YLLCXTMC.js';
|
|
5
|
+
import '../chunk-CUMUNPXY.js';
|
|
6
|
+
import '../chunk-3ARE4TES.js';
|
|
7
|
+
import '../chunk-AWJOCGFZ.js';
|
|
8
|
+
import '../chunk-NY2U3PBI.js';
|
|
9
|
+
import '../chunk-6N33LFQA.js';
|
|
10
|
+
import '../chunk-TKVFVF5D.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { CheckoutSheet, CollapsedSummaryBar, OrderSummary, PayButton, summaryIcon } from '../chunk-GDKZTW34.js';
|
|
2
|
+
export { MandateNotice, SecurePayLabel, TRUST_INLINE, TRUST_ROW, TrustRow } from '../chunk-7CFF4HXS.js';
|
|
3
|
+
import '../chunk-VBOXAEPI.js';
|
|
4
|
+
import '../chunk-ZVFE5QGU.js';
|
|
5
|
+
import '../chunk-ITTYJZWX.js';
|
|
6
|
+
import '../chunk-3NMD74ZU.js';
|
|
7
|
+
import '../chunk-RQ3HASCC.js';
|
|
8
|
+
import '../chunk-OPXFZ4Y5.js';
|
|
9
|
+
import '../chunk-3ARE4TES.js';
|
|
10
|
+
import '../chunk-AWJOCGFZ.js';
|
|
11
|
+
import '../chunk-NY2U3PBI.js';
|
|
12
|
+
import '../chunk-6N33LFQA.js';
|
|
13
|
+
import '../chunk-TKVFVF5D.js';
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { isConnectorTraversed, resolveStepState, NODE_STATE_ICON } from './chunk-YLLCXTMC.js';
|
|
2
|
+
import { Button } from './chunk-3ARE4TES.js';
|
|
3
|
+
import { Icon } from './chunk-TKVFVF5D.js';
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
import { Animated, View, Text } from 'react-native';
|
|
6
|
+
import { createStyleSheet, useStyles, useLoamTheme } from '@btndprojects/loam-theme-native';
|
|
7
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
8
|
+
|
|
9
|
+
function clamp(n, lo, hi) {
|
|
10
|
+
return Math.min(hi, Math.max(lo, n));
|
|
11
|
+
}
|
|
12
|
+
function useDotForeground(done, active) {
|
|
13
|
+
const theme = useLoamTheme();
|
|
14
|
+
if (done) return theme.color.goodInk;
|
|
15
|
+
if (active) return theme.color.accentOnSoft;
|
|
16
|
+
return theme.color.text3;
|
|
17
|
+
}
|
|
18
|
+
function StepDot({
|
|
19
|
+
index,
|
|
20
|
+
current,
|
|
21
|
+
title
|
|
22
|
+
}) {
|
|
23
|
+
const stepState = resolveStepState(index, current);
|
|
24
|
+
const done = stepState === "done";
|
|
25
|
+
const active = stepState === "working";
|
|
26
|
+
const { styles } = useStyles(sheet, { state: done ? "done" : active ? "active" : "upcoming" });
|
|
27
|
+
const theme = useLoamTheme();
|
|
28
|
+
const fg = useDotForeground(done, active);
|
|
29
|
+
const currentAttr = active ? { "aria-current": "step" } : {};
|
|
30
|
+
return /* @__PURE__ */ jsxs(View, { style: styles.dotCol, children: [
|
|
31
|
+
/* @__PURE__ */ jsx(View, { style: styles.dot, ...currentAttr, children: done ? /* @__PURE__ */ jsx(Icon, { name: NODE_STATE_ICON.done, size: theme.icon.sm, color: fg }) : /* @__PURE__ */ jsx(Text, { style: [styles.dotNum, { color: fg }], children: index + 1 }) }),
|
|
32
|
+
title ? /* @__PURE__ */ jsx(Text, { numberOfLines: 2, style: [styles.dotLabel, { color: index <= current ? void 0 : fg }], children: title }) : null
|
|
33
|
+
] });
|
|
34
|
+
}
|
|
35
|
+
function Wizard({
|
|
36
|
+
steps,
|
|
37
|
+
step,
|
|
38
|
+
defaultStep = 0,
|
|
39
|
+
onStepChange,
|
|
40
|
+
onFinish,
|
|
41
|
+
backLabel = "Back",
|
|
42
|
+
nextLabel = "Next",
|
|
43
|
+
finishLabel = "Finish",
|
|
44
|
+
motion = "full"
|
|
45
|
+
}) {
|
|
46
|
+
const isControlled = step !== void 0;
|
|
47
|
+
const last = Math.max(0, steps.length - 1);
|
|
48
|
+
const [internal, setInternal] = React.useState(() => clamp(defaultStep, 0, last));
|
|
49
|
+
const current = clamp(isControlled ? step : internal, 0, last);
|
|
50
|
+
const { styles } = useStyles(sheet);
|
|
51
|
+
const theme = useLoamTheme();
|
|
52
|
+
const activeStep = steps[current];
|
|
53
|
+
const isFirst = current <= 0;
|
|
54
|
+
const isLast = current >= last;
|
|
55
|
+
const prev = React.useRef(current);
|
|
56
|
+
const opacity = React.useRef(new Animated.Value(1)).current;
|
|
57
|
+
const translateX = React.useRef(new Animated.Value(0)).current;
|
|
58
|
+
React.useEffect(() => {
|
|
59
|
+
if (motion === "none") {
|
|
60
|
+
prev.current = current;
|
|
61
|
+
opacity.setValue(1);
|
|
62
|
+
translateX.setValue(0);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const reduced = motion === "reduced" || theme.reduceMotion;
|
|
66
|
+
const direction = current >= prev.current ? 1 : -1;
|
|
67
|
+
prev.current = current;
|
|
68
|
+
opacity.setValue(0);
|
|
69
|
+
translateX.setValue(reduced ? 0 : direction * theme.space.s4);
|
|
70
|
+
Animated.parallel([
|
|
71
|
+
Animated.timing(opacity, {
|
|
72
|
+
toValue: 1,
|
|
73
|
+
duration: theme.duration.base,
|
|
74
|
+
useNativeDriver: true
|
|
75
|
+
}),
|
|
76
|
+
// The slide is travel — dropped under reduced motion, kept at `full`.
|
|
77
|
+
...reduced ? [] : [
|
|
78
|
+
Animated.spring(translateX, {
|
|
79
|
+
toValue: 0,
|
|
80
|
+
useNativeDriver: true,
|
|
81
|
+
speed: 18,
|
|
82
|
+
bounciness: 6
|
|
83
|
+
})
|
|
84
|
+
]
|
|
85
|
+
]).start();
|
|
86
|
+
}, [current, motion, opacity, translateX, theme.reduceMotion, theme.duration.base, theme.space.s4]);
|
|
87
|
+
const goTo = (next) => {
|
|
88
|
+
const clamped = clamp(next, 0, last);
|
|
89
|
+
if (clamped === current) return;
|
|
90
|
+
if (!isControlled) setInternal(clamped);
|
|
91
|
+
onStepChange?.(clamped);
|
|
92
|
+
};
|
|
93
|
+
const onNext = () => {
|
|
94
|
+
if (isLast) onFinish?.();
|
|
95
|
+
else goTo(current + 1);
|
|
96
|
+
};
|
|
97
|
+
return /* @__PURE__ */ jsxs(View, { style: styles.container, children: [
|
|
98
|
+
/* @__PURE__ */ jsx(
|
|
99
|
+
View,
|
|
100
|
+
{
|
|
101
|
+
style: styles.rail,
|
|
102
|
+
accessibilityRole: "progressbar",
|
|
103
|
+
accessibilityLabel: `Step ${current + 1} of ${steps.length}${activeStep?.title ? `: ${activeStep.title}` : ""}`,
|
|
104
|
+
accessibilityValue: { min: 1, max: steps.length, now: current + 1 },
|
|
105
|
+
"aria-valuemin": 1,
|
|
106
|
+
"aria-valuemax": steps.length,
|
|
107
|
+
"aria-valuenow": current + 1,
|
|
108
|
+
children: steps.map((s, i) => /* @__PURE__ */ jsxs(React.Fragment, { children: [
|
|
109
|
+
i > 0 ? (
|
|
110
|
+
// The connector carries the state: solid in the done tone once the
|
|
111
|
+
// step it leaves has been traversed, muted otherwise — the shared
|
|
112
|
+
// rule, and the same green the completed dots now use.
|
|
113
|
+
/* @__PURE__ */ jsx(
|
|
114
|
+
View,
|
|
115
|
+
{
|
|
116
|
+
style: [
|
|
117
|
+
styles.line,
|
|
118
|
+
{
|
|
119
|
+
backgroundColor: isConnectorTraversed(resolveStepState(i - 1, current)) ? theme.color.good : theme.color.surface3
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
)
|
|
124
|
+
) : null,
|
|
125
|
+
/* @__PURE__ */ jsx(StepDot, { index: i, current, title: s.title })
|
|
126
|
+
] }, s.key))
|
|
127
|
+
}
|
|
128
|
+
),
|
|
129
|
+
/* @__PURE__ */ jsx(Animated.View, { style: [styles.content, { opacity, transform: [{ translateX }] }], children: activeStep?.content }),
|
|
130
|
+
/* @__PURE__ */ jsxs(View, { style: styles.footer, children: [
|
|
131
|
+
/* @__PURE__ */ jsx(
|
|
132
|
+
Button,
|
|
133
|
+
{
|
|
134
|
+
variant: "outline",
|
|
135
|
+
leadingIcon: "arrow-left",
|
|
136
|
+
disabled: isFirst,
|
|
137
|
+
onPress: () => goTo(current - 1),
|
|
138
|
+
children: backLabel
|
|
139
|
+
}
|
|
140
|
+
),
|
|
141
|
+
/* @__PURE__ */ jsx(Button, { variant: "primary", trailingIcon: isLast ? "check" : "arrow-right", onPress: onNext, children: isLast ? finishLabel : nextLabel })
|
|
142
|
+
] })
|
|
143
|
+
] });
|
|
144
|
+
}
|
|
145
|
+
var sheet = createStyleSheet((theme) => ({
|
|
146
|
+
// The wizard owns its own gutter: it is a whole flow, not a control dropped
|
|
147
|
+
// into someone else's padded box, and without one the footer buttons sat flush
|
|
148
|
+
// against whatever container it was placed in.
|
|
149
|
+
container: {
|
|
150
|
+
padding: theme.space.s4,
|
|
151
|
+
gap: theme.space.s4
|
|
152
|
+
},
|
|
153
|
+
// Step titles sit *in flow* under their dot rather than absolutely positioned:
|
|
154
|
+
// an absolute label is measured against the 32pt dot, so it either overflowed
|
|
155
|
+
// into its neighbours or (once clamped) truncated to "Acc…". The connecting
|
|
156
|
+
// lines stay level with the dot centres by being offset to that centre
|
|
157
|
+
// themselves, which is why the rail aligns to `flex-start`.
|
|
158
|
+
rail: {
|
|
159
|
+
flexDirection: "row",
|
|
160
|
+
alignItems: "flex-start"
|
|
161
|
+
},
|
|
162
|
+
line: {
|
|
163
|
+
flex: 1,
|
|
164
|
+
height: theme.borderWidth.thick,
|
|
165
|
+
borderRadius: theme.radius.full,
|
|
166
|
+
marginHorizontal: theme.space.s1,
|
|
167
|
+
marginTop: theme.space.s6 / 2 - theme.borderWidth.thick / 2
|
|
168
|
+
},
|
|
169
|
+
dotCol: { alignItems: "center", flexShrink: 0, gap: theme.space.s1 },
|
|
170
|
+
dot: {
|
|
171
|
+
width: theme.space.s6,
|
|
172
|
+
height: theme.space.s6,
|
|
173
|
+
borderRadius: theme.radius.full,
|
|
174
|
+
alignItems: "center",
|
|
175
|
+
justifyContent: "center",
|
|
176
|
+
variants: {
|
|
177
|
+
state: {
|
|
178
|
+
// `done` uses the family's done tone (`status.done` === `good`), so a
|
|
179
|
+
// completed wizard step is the same green as a `done` Timeline/Stage node
|
|
180
|
+
// and matches the web wizard — the native wizard previously diverged to
|
|
181
|
+
// `accent` (blue) here, the one inconsistency this unification resolves.
|
|
182
|
+
done: {
|
|
183
|
+
backgroundColor: theme.status.done,
|
|
184
|
+
borderWidth: theme.borderWidth.thick,
|
|
185
|
+
borderColor: theme.status.done
|
|
186
|
+
},
|
|
187
|
+
// The active step's edge is `focus.ringColor` — the only mark of "you
|
|
188
|
+
// are here" once high contrast drops the `accentSoft` fill, so it owes
|
|
189
|
+
// SC 1.4.11's 3:1, which the raw accent misses in four palettes.
|
|
190
|
+
active: {
|
|
191
|
+
backgroundColor: theme.color.accentSoft,
|
|
192
|
+
borderWidth: theme.borderWidth.thick,
|
|
193
|
+
borderColor: theme.focus.ringColor
|
|
194
|
+
},
|
|
195
|
+
upcoming: {
|
|
196
|
+
backgroundColor: theme.color.surface3,
|
|
197
|
+
borderWidth: theme.borderWidth.thick,
|
|
198
|
+
borderColor: theme.color.surface3
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
dotNum: {
|
|
204
|
+
fontFamily: theme.font.sans,
|
|
205
|
+
fontWeight: theme.fontWeight.bold,
|
|
206
|
+
fontSize: theme.type.footnote.fontSize,
|
|
207
|
+
lineHeight: theme.type.footnote.lineHeight
|
|
208
|
+
},
|
|
209
|
+
dotLabel: {
|
|
210
|
+
// Wide enough for a real step name, capped so a long one wraps instead of
|
|
211
|
+
// shouldering the next step out of the rail.
|
|
212
|
+
maxWidth: theme.space.s8 + theme.space.s4,
|
|
213
|
+
textAlign: "center",
|
|
214
|
+
fontFamily: theme.font.sans,
|
|
215
|
+
fontWeight: theme.fontWeight.semibold,
|
|
216
|
+
fontSize: theme.type.caption1.fontSize,
|
|
217
|
+
lineHeight: theme.type.caption1.lineHeight,
|
|
218
|
+
color: theme.color.text
|
|
219
|
+
},
|
|
220
|
+
content: { gap: theme.space.s3 },
|
|
221
|
+
footer: {
|
|
222
|
+
flexDirection: "row",
|
|
223
|
+
alignItems: "center",
|
|
224
|
+
justifyContent: "space-between",
|
|
225
|
+
gap: theme.space.s3
|
|
226
|
+
}
|
|
227
|
+
}));
|
|
228
|
+
|
|
229
|
+
export { Wizard };
|