@duro-app/ui 5.13.0 → 5.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -0
- package/dist/{Table-Bms2ftt3.js → Table-DnaoH-h5.js} +747 -635
- package/dist/Table-DnaoH-h5.js.map +1 -0
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/ColorMode/ColorMode.d.ts +2 -1
- package/dist/components/ColorMode/ColorMode.d.ts.map +1 -1
- package/dist/components/ColorMode/storage.d.ts +4 -0
- package/dist/components/ColorMode/storage.d.ts.map +1 -0
- package/dist/components/ColorMode/styles.css.d.ts +4 -0
- package/dist/components/ColorMode/styles.css.d.ts.map +1 -1
- package/dist/components/ColorMode/useSystemScheme.d.ts +7 -0
- package/dist/components/ColorMode/useSystemScheme.d.ts.map +1 -0
- package/dist/components/Combobox/Combobox.d.ts +7 -2
- package/dist/components/Combobox/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox/comboboxState.d.ts +29 -0
- package/dist/components/Combobox/comboboxState.d.ts.map +1 -0
- package/dist/components/Combobox/native.css.d.ts +27 -0
- package/dist/components/Combobox/native.css.d.ts.map +1 -0
- package/dist/components/Combobox/useComboboxRoot.d.ts +6 -10
- package/dist/components/Combobox/useComboboxRoot.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.d.ts +5 -2
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/DrawerSnap.stories.d.ts +2 -0
- package/dist/components/Drawer/DrawerSnap.stories.d.ts.map +1 -1
- package/dist/components/Drawer/native.css.d.ts +4 -0
- package/dist/components/Drawer/native.css.d.ts.map +1 -1
- package/dist/components/Drawer/styles.css.d.ts +4 -0
- package/dist/components/Drawer/styles.css.d.ts.map +1 -1
- package/dist/components/Form/FormSubmitContext.d.ts +8 -0
- package/dist/components/Form/FormSubmitContext.d.ts.map +1 -0
- package/dist/components/Listbox/native.css.d.ts +84 -0
- package/dist/components/Listbox/native.css.d.ts.map +1 -0
- package/dist/components/Select/Select.d.ts +9 -2
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/Select.stories.d.ts +11 -0
- package/dist/components/Select/Select.stories.d.ts.map +1 -1
- package/dist/components/Select/native.css.d.ts +11 -0
- package/dist/components/Select/native.css.d.ts.map +1 -0
- package/dist/components/Select/selectState.d.ts +21 -0
- package/dist/components/Select/selectState.d.ts.map +1 -0
- package/dist/components/Select/styles.css.d.ts +10 -0
- package/dist/components/Select/styles.css.d.ts.map +1 -1
- package/dist/components/Select/useSelectRoot.d.ts +6 -8
- package/dist/components/Select/useSelectRoot.d.ts.map +1 -1
- package/dist/components/ThemeProvider/ThemeOverrides.stories.d.ts +13 -0
- package/dist/components/ThemeProvider/ThemeOverrides.stories.d.ts.map +1 -0
- package/dist/components/ThemeProvider/ThemeProvider.d.ts +9 -2
- package/dist/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/components/ThemeProvider/overrideRule.d.ts +7 -0
- package/dist/components/ThemeProvider/overrideRule.d.ts.map +1 -0
- package/dist/components/ThemeProvider/overrides.d.ts +16 -0
- package/dist/components/ThemeProvider/overrides.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3302 -3268
- package/dist/index.js.map +1 -1
- package/dist/shared/textOf.d.ts +7 -0
- package/dist/shared/textOf.d.ts.map +1 -0
- package/dist/table.js +1 -1
- package/package.json +3 -2
- package/src/components/Button/Button.tsx +12 -1
- package/src/components/ColorMode/ColorMode.meta.ts +1 -1
- package/src/components/ColorMode/ColorMode.tsx +16 -37
- package/src/components/ColorMode/storage.native.ts +8 -0
- package/src/components/ColorMode/storage.ts +19 -0
- package/src/components/ColorMode/styles.css.ts +6 -0
- package/src/components/ColorMode/useSystemScheme.native.ts +6 -0
- package/src/components/ColorMode/useSystemScheme.ts +19 -0
- package/src/components/Combobox/Combobox.meta.ts +1 -1
- package/src/components/Combobox/Combobox.native.tsx +295 -0
- package/src/components/Combobox/Combobox.tsx +14 -8
- package/src/components/Combobox/comboboxState.ts +107 -0
- package/src/components/Combobox/native.css.ts +33 -0
- package/src/components/Combobox/useComboboxRoot.ts +17 -91
- package/src/components/Drawer/Drawer.meta.ts +1 -1
- package/src/components/Drawer/Drawer.native.tsx +29 -7
- package/src/components/Drawer/Drawer.tsx +11 -2
- package/src/components/Drawer/DrawerSnap.stories.tsx +22 -2
- package/src/components/Drawer/native.css.ts +4 -0
- package/src/components/Drawer/styles.css.ts +4 -0
- package/src/components/Form/Form.meta.ts +1 -1
- package/src/components/Form/Form.native.tsx +120 -0
- package/src/components/Form/FormSubmitContext.ts +12 -0
- package/src/components/Listbox/Listbox.meta.ts +1 -1
- package/src/components/Listbox/Listbox.native.tsx +153 -0
- package/src/components/Listbox/native.css.ts +91 -0
- package/src/components/ScrollArea/ScrollArea.meta.ts +1 -1
- package/src/components/ScrollArea/ScrollArea.native.tsx +61 -0
- package/src/components/Select/Select.meta.ts +1 -1
- package/src/components/Select/Select.native.tsx +224 -0
- package/src/components/Select/Select.stories.tsx +49 -1
- package/src/components/Select/Select.tsx +20 -3
- package/src/components/Select/native.css.ts +13 -0
- package/src/components/Select/selectState.ts +36 -0
- package/src/components/Select/styles.css.ts +11 -0
- package/src/components/Select/useSelectRoot.ts +9 -30
- package/src/components/ThemeProvider/ThemeOverrides.stories.tsx +113 -0
- package/src/components/ThemeProvider/ThemeProvider.meta.ts +1 -1
- package/src/components/ThemeProvider/ThemeProvider.native.tsx +36 -7
- package/src/components/ThemeProvider/ThemeProvider.tsx +42 -6
- package/src/components/ThemeProvider/overrideRule.ts +39 -0
- package/src/components/ThemeProvider/overrides.ts +27 -0
- package/src/form.native.ts +7 -0
- package/src/index.native.ts +15 -0
- package/src/index.ts +1 -0
- package/src/shared/focusInput.native.ts +18 -0
- package/src/shared/textOf.ts +13 -0
- package/dist/Table-Bms2ftt3.js.map +0 -1
package/README.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# @duro-app/ui
|
|
2
|
+
|
|
3
|
+
Duro's components, written with [react-strict-dom](https://github.com/facebook/react-strict-dom):
|
|
4
|
+
one source for the web and for React Native. Component docs, props and
|
|
5
|
+
recipes: `npx @duro-app/cli <Name>`, or the repository's `CLAUDE.md`.
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
pnpm add @duro-app/ui @duro-app/tokens react-strict-dom react-hook-form
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## React Native
|
|
12
|
+
|
|
13
|
+
Metro resolves the package's `react-native` export condition to
|
|
14
|
+
`src/index.native.ts`, a barrel of the components that have a native
|
|
15
|
+
variant (`npx @duro-app/cli <Name>` says `native: true`); `@duro-app/ui/form`
|
|
16
|
+
resolves to `src/form.native.ts`. babel-preset-expo compiles the source.
|
|
17
|
+
|
|
18
|
+
**Peers.** Metro does not tree-shake, so on native every one of these is
|
|
19
|
+
required, though npm lists them as optional (they are the web build's
|
|
20
|
+
optional peers):
|
|
21
|
+
|
|
22
|
+
| Peer | For |
|
|
23
|
+
| -------------------------------------------------------------- | ------------------------------------------------------- |
|
|
24
|
+
| `react-native` ≥ 0.81 | the platform |
|
|
25
|
+
| `react-native-gesture-handler` ^2.28 | sheet drags, Toast swipe |
|
|
26
|
+
| `react-native-reanimated` ≥ 4.1, `react-native-worklets` ≥ 0.5 | gestures and Spinner on the UI thread |
|
|
27
|
+
| `react-native-safe-area-context` ^5.6 | insets (mount its `SafeAreaProvider`; expo-router does) |
|
|
28
|
+
| `react-native-svg` ^15.12 | Icon and the glyphs |
|
|
29
|
+
| `react-hook-form` ^7.55 | Field binding (a required peer on both platforms) |
|
|
30
|
+
| `@hookform/resolvers` ^5, `effect` ^3 | only for `@duro-app/ui/form` |
|
|
31
|
+
|
|
32
|
+
**One copy of each.** Resolve `react`, `react-native`, the native peers,
|
|
33
|
+
`react-strict-dom`, `react-hook-form`, `@hookform/resolvers`, `effect` and
|
|
34
|
+
`@duro-app/*` from the app, so the bundle has one React renderer and one
|
|
35
|
+
react-strict-dom. With a linked or workspace copy of Duro, a Metro
|
|
36
|
+
`resolveRequest` that resolves those names from the app's `package.json`
|
|
37
|
+
does it; `examples/native/metro.config.mjs` in this repository is one.
|
|
38
|
+
|
|
39
|
+
**What differs on native.**
|
|
40
|
+
|
|
41
|
+
- Dialog, Drawer, Menu, Popover and the Select and Combobox sheets render in
|
|
42
|
+
an RN `Modal`; Toast draws through a portal host. Mount `PortalHost` inside a
|
|
43
|
+
natively presented route so toasts draw above it.
|
|
44
|
+
- Select and Combobox open a bottom sheet; Tooltip draws nothing and gives its
|
|
45
|
+
text to the trigger as an accessibility hint.
|
|
46
|
+
- A `type="submit"` Button inside `Form` submits it (there is no DOM submit
|
|
47
|
+
event).
|
|
48
|
+
- There are no arrow keys: keyboard navigation is the web's; native gets the
|
|
49
|
+
screen-reader roles and states.
|