@ankhorage/surface 0.1.0 → 0.1.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.
- package/CHANGELOG.md +12 -0
- package/README.md +119 -113
- package/dist/components/badge/types.d.ts +1 -1
- package/dist/components/badge/types.d.ts.map +1 -1
- package/dist/components/button/types.d.ts +2 -2
- package/dist/components/button/types.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.js +9 -4
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/field/Field.d.ts.map +1 -1
- package/dist/components/field/Field.js +6 -9
- package/dist/components/field/Field.js.map +1 -1
- package/dist/components/helper-text/HelperText.d.ts.map +1 -1
- package/dist/components/helper-text/HelperText.js +1 -3
- package/dist/components/helper-text/HelperText.js.map +1 -1
- package/dist/components/helper-text/types.d.ts +2 -1
- package/dist/components/helper-text/types.d.ts.map +1 -1
- package/dist/components/icon-button/types.d.ts +2 -2
- package/dist/components/icon-button/types.d.ts.map +1 -1
- package/dist/components/label/Label.d.ts.map +1 -1
- package/dist/components/label/Label.js +2 -4
- package/dist/components/label/Label.js.map +1 -1
- package/dist/components/label/types.d.ts +2 -1
- package/dist/components/label/types.d.ts.map +1 -1
- package/dist/components/menu/Menu.d.ts.map +1 -1
- package/dist/components/menu/Menu.js +5 -5
- package/dist/components/menu/Menu.js.map +1 -1
- package/dist/components/radio/Radio.d.ts.map +1 -1
- package/dist/components/radio/Radio.js +9 -4
- package/dist/components/radio/Radio.js.map +1 -1
- package/dist/components/switch/Switch.d.ts.map +1 -1
- package/dist/components/switch/Switch.js +9 -4
- package/dist/components/switch/Switch.js.map +1 -1
- package/dist/components/tabs/Tab.d.ts.map +1 -1
- package/dist/components/tabs/Tab.js +4 -2
- package/dist/components/tabs/Tab.js.map +1 -1
- package/dist/components/tabs/TabList.d.ts.map +1 -1
- package/dist/components/tabs/TabList.js +1 -1
- package/dist/components/tabs/TabList.js.map +1 -1
- package/dist/components/tabs/TabPanel.d.ts.map +1 -1
- package/dist/components/tabs/TabPanel.js +5 -2
- package/dist/components/tabs/TabPanel.js.map +1 -1
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.js +4 -1
- package/dist/components/tabs/Tabs.js.map +1 -1
- package/dist/components/tabs/a11y.d.ts +3 -0
- package/dist/components/tabs/a11y.d.ts.map +1 -0
- package/dist/components/tabs/a11y.js +13 -0
- package/dist/components/tabs/a11y.js.map +1 -0
- package/dist/components/tabs/context.d.ts +2 -0
- package/dist/components/tabs/context.d.ts.map +1 -1
- package/dist/components/tabs/context.js.map +1 -1
- package/dist/examples/DocsExamples.d.ts +5 -0
- package/dist/examples/DocsExamples.d.ts.map +1 -0
- package/dist/examples/DocsExamples.js +81 -0
- package/dist/examples/DocsExamples.js.map +1 -0
- package/dist/internal/focus/useFocusManager.d.ts +8 -0
- package/dist/internal/focus/useFocusManager.d.ts.map +1 -1
- package/dist/internal/focus/useFocusManager.js +19 -2
- package/dist/internal/focus/useFocusManager.js.map +1 -1
- package/dist/internal/resolvers/index.d.ts +2 -0
- package/dist/internal/resolvers/index.d.ts.map +1 -1
- package/dist/internal/resolvers/index.js +2 -0
- package/dist/internal/resolvers/index.js.map +1 -1
- package/dist/internal/resolvers/resolveFieldPresentation.d.ts +10 -0
- package/dist/internal/resolvers/resolveFieldPresentation.d.ts.map +1 -0
- package/dist/internal/resolvers/resolveFieldPresentation.js +19 -0
- package/dist/internal/resolvers/resolveFieldPresentation.js.map +1 -0
- package/dist/internal/resolvers/resolveSelectionControlBehavior.d.ts +8 -0
- package/dist/internal/resolvers/resolveSelectionControlBehavior.d.ts.map +1 -0
- package/dist/internal/resolvers/resolveSelectionControlBehavior.js +10 -0
- package/dist/internal/resolvers/resolveSelectionControlBehavior.js.map +1 -0
- package/dist/internal/resolvers/resolveTextColor.d.ts +1 -1
- package/dist/internal/resolvers/resolveTextColor.d.ts.map +1 -1
- package/dist/internal/resolvers/resolveTextColor.js +6 -0
- package/dist/internal/resolvers/resolveTextColor.js.map +1 -1
- package/dist/layout/Box.d.ts +5 -1
- package/dist/layout/Box.d.ts.map +1 -1
- package/dist/layout/Box.js +2 -2
- package/dist/layout/Box.js.map +1 -1
- package/dist/primitives/icon/resolveExpoIconComponent.d.ts.map +1 -1
- package/dist/primitives/icon/resolveExpoIconComponent.js +13 -4
- package/dist/primitives/icon/resolveExpoIconComponent.js.map +1 -1
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @ankhorage/surface
|
|
2
2
|
|
|
3
|
+
## 0.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Fix Expo Web icon loading by removing the `import.meta`-based runtime require path so Metro can bundle the package correctly.
|
|
8
|
+
|
|
9
|
+
## 0.1.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 5aea65c: Stabilize the public package surface for Phase 4 by rewriting the adoption docs, broadening shared tone and variant coverage, tightening read-only control semantics, hardening menu and tab accessibility behavior, and adding regression tests for exports and state contracts.
|
|
14
|
+
|
|
3
15
|
## 0.1.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -1,39 +1,34 @@
|
|
|
1
1
|
# @ankhorage/surface
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Stable UI foundation for React Native and React Native Web.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- layout primitives
|
|
7
|
-
- design tokens & theming
|
|
8
|
-
- responsive helpers
|
|
9
|
-
- accessible components
|
|
10
|
-
- overlay + interaction systems
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Why use this?
|
|
15
|
-
|
|
16
|
-
React Native gives you primitives.
|
|
17
|
-
Surface gives you **a system**.
|
|
5
|
+
Surface gives application packages a consistent layer for layout, typography, theming, forms, and overlays without turning the foundation into a full product UI kit. It is intended to be the reusable base beneath ZORA and other RN/RN-web packages.
|
|
18
6
|
|
|
19
|
-
|
|
20
|
-
- unified interaction states (hover, press, focus)
|
|
21
|
-
- works across native + web
|
|
22
|
-
- no design-system setup required
|
|
23
|
-
- no runtime / no-code abstractions
|
|
7
|
+
## Why Surface?
|
|
24
8
|
|
|
25
|
-
|
|
9
|
+
- Cross-platform primitives and components with one API for React Native and React Native Web.
|
|
10
|
+
- Semantic theming instead of ad hoc component colors.
|
|
11
|
+
- Shared interaction, field-state, and overlay patterns.
|
|
12
|
+
- Small but complete foundation layer: enough to build on, not a product-pattern kit.
|
|
26
13
|
|
|
27
|
-
##
|
|
14
|
+
## Install
|
|
28
15
|
|
|
29
16
|
```bash
|
|
30
17
|
bun add @ankhorage/surface @ankhorage/contracts
|
|
31
18
|
```
|
|
32
19
|
|
|
33
|
-
|
|
20
|
+
Peer dependencies:
|
|
21
|
+
|
|
22
|
+
- `react`
|
|
23
|
+
- `react-native`
|
|
24
|
+
- `@expo/vector-icons` for icon rendering
|
|
25
|
+
- `expo-font` when using runtime font registration
|
|
26
|
+
|
|
27
|
+
## Quick Start
|
|
34
28
|
|
|
35
29
|
```tsx
|
|
36
|
-
import
|
|
30
|
+
import React from 'react';
|
|
31
|
+
import { Button, Stack, Text, ThemeProvider } from '@ankhorage/surface';
|
|
37
32
|
|
|
38
33
|
const themeConfig = {
|
|
39
34
|
id: 'app',
|
|
@@ -48,142 +43,153 @@ const themeConfig = {
|
|
|
48
43
|
harmony: 'monochromatic',
|
|
49
44
|
systemTone: 'neutral',
|
|
50
45
|
},
|
|
51
|
-
}
|
|
46
|
+
};
|
|
52
47
|
|
|
53
|
-
export
|
|
48
|
+
export function App() {
|
|
54
49
|
return (
|
|
55
50
|
<ThemeProvider initialConfig={themeConfig}>
|
|
56
|
-
<
|
|
51
|
+
<Stack gap="m" p="l">
|
|
52
|
+
<Text variant="body">Surface is ready.</Text>
|
|
53
|
+
<Button>Continue</Button>
|
|
54
|
+
</Stack>
|
|
57
55
|
</ThemeProvider>
|
|
58
|
-
)
|
|
56
|
+
);
|
|
59
57
|
}
|
|
60
58
|
```
|
|
61
59
|
|
|
62
|
-
|
|
60
|
+
## Real-World Example
|
|
63
61
|
|
|
64
62
|
```tsx
|
|
65
|
-
import
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
import React from 'react';
|
|
64
|
+
import {
|
|
65
|
+
Button,
|
|
66
|
+
Field,
|
|
67
|
+
HelperText,
|
|
68
|
+
Modal,
|
|
69
|
+
Stack,
|
|
70
|
+
Text,
|
|
71
|
+
TextInput,
|
|
72
|
+
ThemeProvider,
|
|
73
|
+
} from '@ankhorage/surface';
|
|
74
|
+
|
|
75
|
+
export function SignInCard() {
|
|
68
76
|
return (
|
|
69
|
-
<
|
|
70
|
-
<
|
|
77
|
+
<ThemeProvider initialConfig={themeConfig}>
|
|
78
|
+
<Stack gap="m" p="l">
|
|
79
|
+
<Field helperText="We only use this for sign-in." label="Email">
|
|
80
|
+
<TextInput autoCapitalize="none" keyboardType="email-address" />
|
|
81
|
+
</Field>
|
|
71
82
|
|
|
72
|
-
|
|
83
|
+
<Field errorText="Password is required." invalid label="Password">
|
|
84
|
+
<TextInput secureTextEntry />
|
|
85
|
+
</Field>
|
|
73
86
|
|
|
74
|
-
|
|
87
|
+
<Button fullWidth>Sign in</Button>
|
|
75
88
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
89
|
+
<Modal visible={false}>
|
|
90
|
+
<Text variant="body">Overlay content uses the same theme + spacing system.</Text>
|
|
91
|
+
</Modal>
|
|
92
|
+
|
|
93
|
+
<HelperText tone="muted">
|
|
94
|
+
Forms, controls, and overlays are meant to compose without extra glue code.
|
|
95
|
+
</HelperText>
|
|
96
|
+
</Stack>
|
|
97
|
+
</ThemeProvider>
|
|
98
|
+
);
|
|
81
99
|
}
|
|
82
100
|
```
|
|
83
101
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
## What you get
|
|
87
|
-
|
|
88
|
-
### Layout
|
|
89
|
-
- `Box`, `Stack`, `Inline`, `Grid`, `Container`
|
|
90
|
-
- `Spacer`, `Divider`, `Center`, `Surface`
|
|
91
|
-
|
|
92
|
-
### Typography
|
|
93
|
-
- `Text`, `Heading`
|
|
94
|
-
|
|
95
|
-
### Actions
|
|
96
|
-
- `Button`, `IconButton`
|
|
97
|
-
|
|
98
|
-
### Data / display
|
|
99
|
-
- `Card`, `Badge`, `ListItem`
|
|
100
|
-
|
|
101
|
-
### Forms
|
|
102
|
-
- `TextInput`, `Textarea`
|
|
103
|
-
- `Field`, `Label`, `HelperText`
|
|
104
|
-
- `Checkbox`, `Radio`, `Switch`
|
|
102
|
+
## Included APIs
|
|
105
103
|
|
|
106
|
-
###
|
|
107
|
-
- `Modal`, `Drawer`
|
|
108
|
-
- `Tabs`, `Toast`
|
|
109
|
-
- `Tooltip`, `Menu`
|
|
104
|
+
### Providers and theme
|
|
110
105
|
|
|
111
|
-
|
|
106
|
+
- `ThemeProvider`, `useTheme`, `useThemeConfig`, `useThemeMode`
|
|
107
|
+
- `FontProvider`, `useFontContext`
|
|
108
|
+
- `TranslationProvider`, `useTranslationContext`
|
|
109
|
+
- `createTheme`, `resolveToken`
|
|
112
110
|
|
|
113
|
-
|
|
111
|
+
### Responsive helpers
|
|
114
112
|
|
|
115
|
-
|
|
116
|
-
|
|
113
|
+
- `ResponsiveProvider`, `useResponsiveRuntime`, `useBreakpoint`
|
|
114
|
+
- `BREAKPOINTS`, `BREAKPOINT_ORDER`, `getBreakpointFromWidth`, `resolveResponsive`
|
|
117
115
|
|
|
118
|
-
|
|
119
|
-
<Button tone="primary" variant="solid" />
|
|
120
|
-
```
|
|
116
|
+
### Layout
|
|
121
117
|
|
|
122
|
-
|
|
118
|
+
- `Box`, `Surface`
|
|
119
|
+
- `Stack`, `Inline`, `Grid`, `Template`
|
|
120
|
+
- `Container`, `Center`, `Divider`, `Spacer`, `Show`
|
|
123
121
|
|
|
124
|
-
|
|
122
|
+
### Typography and primitives
|
|
125
123
|
|
|
126
|
-
|
|
124
|
+
- `Text`, `Heading`, `Icon`, `ButtonBase`
|
|
127
125
|
|
|
128
|
-
|
|
126
|
+
### Actions and display
|
|
129
127
|
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
- focus-visible
|
|
133
|
-
- disabled
|
|
128
|
+
- `Button`, `IconButton`
|
|
129
|
+
- `Card`, `Badge`, `ListItem`
|
|
134
130
|
|
|
135
|
-
|
|
131
|
+
### Forms and controls
|
|
136
132
|
|
|
137
|
-
|
|
133
|
+
- `Field`, `Label`, `HelperText`
|
|
134
|
+
- `TextInput`, `Textarea`
|
|
135
|
+
- `Checkbox`, `Radio`, `Switch`
|
|
138
136
|
|
|
139
|
-
###
|
|
137
|
+
### Overlays and navigation
|
|
140
138
|
|
|
141
|
-
|
|
139
|
+
- `Modal`, `Drawer`, `Tooltip`, `Menu`
|
|
140
|
+
- `Tabs`, `TabList`, `Tab`, `TabPanel`
|
|
141
|
+
- `ToastProvider`, `Toast`, `useToast`
|
|
142
142
|
|
|
143
|
-
|
|
144
|
-
<Field label="Email">
|
|
145
|
-
<TextInput />
|
|
146
|
-
</Field>
|
|
147
|
-
```
|
|
143
|
+
### Utilities
|
|
148
144
|
|
|
149
|
-
|
|
145
|
+
- `deepMerge`, `isDeepEqual`
|
|
150
146
|
|
|
151
|
-
|
|
147
|
+
## Docs-Lite Examples
|
|
152
148
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
- React Native Web
|
|
149
|
+
Small usage references live in
|
|
150
|
+
[docs/examples.md](https://github.com/ankhorage/surface/blob/main/docs/examples.md):
|
|
156
151
|
|
|
157
|
-
|
|
152
|
+
- provider shell
|
|
153
|
+
- form composition
|
|
154
|
+
- modal and drawer composition
|
|
155
|
+
- tabs and menu usage
|
|
156
|
+
- checkbox, radio, and switch usage
|
|
157
|
+
- theme override example
|
|
158
158
|
|
|
159
|
-
|
|
159
|
+
## Scope Boundary
|
|
160
160
|
|
|
161
|
-
|
|
161
|
+
Surface is for reusable foundation concerns:
|
|
162
162
|
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
166
|
-
-
|
|
163
|
+
- layout primitives
|
|
164
|
+
- text and icon primitives
|
|
165
|
+
- semantic tokens and theming
|
|
166
|
+
- responsive helpers
|
|
167
|
+
- interaction primitives
|
|
168
|
+
- form controls
|
|
169
|
+
- overlays and navigation primitives
|
|
167
170
|
|
|
168
|
-
|
|
171
|
+
Surface is not for ready-made product patterns:
|
|
169
172
|
|
|
170
|
-
|
|
173
|
+
- auth flows
|
|
174
|
+
- app shells and dashboards
|
|
175
|
+
- data tables and charts
|
|
176
|
+
- settings panels
|
|
177
|
+
- product-specific dialogs and layouts
|
|
171
178
|
|
|
172
|
-
|
|
179
|
+
Those belong in ZORA.
|
|
173
180
|
|
|
174
|
-
|
|
175
|
-
- consistent UI without reinventing components
|
|
176
|
-
- a scalable design foundation
|
|
181
|
+
## Status
|
|
177
182
|
|
|
178
|
-
|
|
183
|
+
Surface is in the stabilization phase: the goal is to keep the public API deliberate, typed, and dependency-ready for downstream packages.
|
|
179
184
|
|
|
180
|
-
|
|
185
|
+
- Foundation work stays in Surface when it is broadly reusable across RN and RN Web.
|
|
186
|
+
- Product-like patterns should move to ZORA instead of expanding Surface into a UI kit.
|
|
187
|
+
- Release and freeze expectations are tracked in
|
|
188
|
+
[docs/release-checklist.md](https://github.com/ankhorage/surface/blob/main/docs/release-checklist.md).
|
|
181
189
|
|
|
182
|
-
|
|
183
|
-
- Phase 2: form + control layer ✅
|
|
184
|
-
- Phase 3: overlays + navigation ✅
|
|
190
|
+
## Changelog
|
|
185
191
|
|
|
186
|
-
|
|
192
|
+
Version history is maintained in [CHANGELOG.md](./CHANGELOG.md). New release notes should flow through Changesets so the published changelog matches the package surface.
|
|
187
193
|
|
|
188
194
|
## License
|
|
189
195
|
|
|
@@ -5,7 +5,7 @@ import type { ComponentTone } from '../../internal/resolvers/resolveTone';
|
|
|
5
5
|
export interface BadgeProps {
|
|
6
6
|
content?: React.ReactNode;
|
|
7
7
|
variant?: Extract<ButtonVariant, 'solid' | 'soft' | 'outline'>;
|
|
8
|
-
tone?: Extract<ComponentTone, 'primary' | 'neutral' | 'danger' | 'success'>;
|
|
8
|
+
tone?: Extract<ComponentTone, 'primary' | 'neutral' | 'danger' | 'success' | 'warning'>;
|
|
9
9
|
size?: ControlSize;
|
|
10
10
|
testID?: string;
|
|
11
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/badge/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/badge/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/D,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;IACxF,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -10,8 +10,8 @@ export interface ButtonIconSpec {
|
|
|
10
10
|
}
|
|
11
11
|
export interface ButtonProps extends Omit<ButtonBaseProps, 'accessibilityLabel' | 'children' | 'style'> {
|
|
12
12
|
children?: React.ReactNode;
|
|
13
|
-
variant?:
|
|
14
|
-
tone?:
|
|
13
|
+
variant?: ButtonVariant;
|
|
14
|
+
tone?: ComponentTone;
|
|
15
15
|
size?: ControlSize;
|
|
16
16
|
loading?: boolean;
|
|
17
17
|
leadingIcon?: ButtonIconSpec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/button/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CACvC,eAAe,EACf,oBAAoB,GAAG,UAAU,GAAG,OAAO,CAC5C;IACC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/button/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,WAAY,SAAQ,IAAI,CACvC,eAAe,EACf,oBAAoB,GAAG,UAAU,GAAG,OAAO,CAC5C;IACC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,OAAO,EACP,cAAsB,EACtB,eAAe,EACf,IAAgB,EAChB,IAAU,EACV,QAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,kBAAkB,EAClB,MAAM,EACN,GAAG,KAAK,EACT,EAAE,aAAa,qBAkFf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { resolveFieldState, resolveIndicatorSize, resolveSelectionControlColors, } from '../../internal/resolvers';
|
|
2
|
+
import { resolveFieldState, resolveIndicatorSize, resolveSelectionControlColors, resolveSelectionControlNextChecked, } from '../../internal/resolvers';
|
|
3
3
|
import { useControllableState } from '../../internal/useControllableState';
|
|
4
4
|
import { Box } from '../../layout';
|
|
5
5
|
import { ButtonBase } from '../../primitives/button-base';
|
|
@@ -7,17 +7,22 @@ import { Text } from '../../primitives/text';
|
|
|
7
7
|
import { useTheme } from '../../theme/ThemeContext';
|
|
8
8
|
export function Checkbox({ children, checked, defaultChecked = false, onCheckedChange, tone = 'primary', size = 'm', disabled = false, invalid = false, readOnly = false, accessibilityLabel, testID, ...props }) {
|
|
9
9
|
const { theme } = useTheme();
|
|
10
|
-
const isDisabled = disabled || readOnly;
|
|
11
10
|
const [isChecked, setChecked] = useControllableState({
|
|
12
11
|
value: checked,
|
|
13
12
|
defaultValue: defaultChecked,
|
|
14
13
|
onChange: onCheckedChange,
|
|
15
14
|
});
|
|
16
15
|
const indicatorSize = resolveIndicatorSize(size);
|
|
17
|
-
|
|
16
|
+
const nextChecked = resolveSelectionControlNextChecked({
|
|
17
|
+
checked: isChecked,
|
|
18
|
+
disabled,
|
|
19
|
+
kind: 'checkbox',
|
|
20
|
+
readOnly,
|
|
21
|
+
});
|
|
22
|
+
return (<ButtonBase {...props} accessibilityLabel={accessibilityLabel} accessibilityRole="checkbox" accessibilityState={{ checked: isChecked }} disabled={disabled} onPress={nextChecked === null
|
|
18
23
|
? undefined
|
|
19
24
|
: () => {
|
|
20
|
-
setChecked(
|
|
25
|
+
setChecked(nextChecked);
|
|
21
26
|
}} testID={testID}>
|
|
22
27
|
{(interactionState) => {
|
|
23
28
|
const fieldState = resolveFieldState({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,6BAA6B,
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../../src/components/checkbox/Checkbox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/components/field/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,EACT,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,MAAM,GACP,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/components/field/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wBAAgB,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,EACT,QAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,MAAM,GACP,EAAE,UAAU,qBAwBZ"}
|
|
@@ -1,25 +1,22 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { resolveFieldState } from '../../internal/resolvers';
|
|
2
|
+
import { resolveFieldPresentation, resolveFieldState } from '../../internal/resolvers';
|
|
3
3
|
import { Box, Stack } from '../../layout';
|
|
4
4
|
import { HelperText } from '../helper-text';
|
|
5
5
|
import { Label } from '../label';
|
|
6
6
|
export function Field({ children, label, helperText, errorText, required = false, disabled = false, invalid = false, readOnly = false, testID, }) {
|
|
7
|
+
const hasErrorText = Boolean(errorText);
|
|
7
8
|
const fieldState = resolveFieldState({
|
|
8
9
|
disabled,
|
|
9
|
-
invalid,
|
|
10
|
+
invalid: invalid || hasErrorText,
|
|
10
11
|
readOnly,
|
|
11
12
|
});
|
|
12
|
-
const
|
|
13
|
-
? 'danger'
|
|
14
|
-
: fieldState.disabled || fieldState.readOnly
|
|
15
|
-
? 'muted'
|
|
16
|
-
: 'default';
|
|
13
|
+
const presentation = resolveFieldPresentation(fieldState);
|
|
17
14
|
return (<Stack gap="xs" testID={testID}>
|
|
18
|
-
{label ? (<Label required={required} tone={labelTone}>
|
|
15
|
+
{label ? (<Label required={required} tone={presentation.labelTone}>
|
|
19
16
|
{label}
|
|
20
17
|
</Label>) : null}
|
|
21
18
|
<Box>{children}</Box>
|
|
22
|
-
{
|
|
19
|
+
{hasErrorText ? (<HelperText tone={presentation.helperTone}>{errorText}</HelperText>) : helperText ? (<HelperText tone={presentation.helperTone}>{helperText}</HelperText>) : null}
|
|
23
20
|
</Stack>);
|
|
24
21
|
}
|
|
25
22
|
//# sourceMappingURL=Field.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Field.js","sourceRoot":"","sources":["../../../src/components/field/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"Field.js","sourceRoot":"","sources":["../../../src/components/field/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,MAAM,UAAU,KAAK,CAAC,EACpB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,MAAM,GACK;IACX,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,iBAAiB,CAAC;QACnC,QAAQ;QACR,OAAO,EAAE,OAAO,IAAI,YAAY;QAChC,QAAQ;KACT,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;IAE1D,OAAO,CACL,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAC7B;MAAA,CAAC,KAAK,CAAC,CAAC,CAAC,CACP,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CACtD;UAAA,CAAC,KAAK,CACR;QAAA,EAAE,KAAK,CAAC,CACT,CAAC,CAAC,CAAC,IAAI,CACR;MAAA,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CACpB;MAAA,CAAC,YAAY,CAAC,CAAC,CAAC,CACd,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,CACpE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CACf,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CACrE,CAAC,CAAC,CAAC,IAAI,CACV;IAAA,EAAE,KAAK,CAAC,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelperText.d.ts","sourceRoot":"","sources":["../../../src/components/helper-text/HelperText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"HelperText.d.ts","sourceRoot":"","sources":["../../../src/components/helper-text/HelperText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAc,EAAE,MAAM,EAAE,EAAE,eAAe,qBAM/E"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Text } from '../../primitives/text';
|
|
3
|
-
import { useTheme } from '../../theme/ThemeContext';
|
|
4
3
|
export function HelperText({ children, tone = 'muted', testID }) {
|
|
5
|
-
|
|
6
|
-
return (<Text color={tone === 'danger' ? theme.semantics.danger.base : undefined} testID={testID} tone={tone === 'danger' ? 'default' : tone} variant="caption">
|
|
4
|
+
return (<Text testID={testID} tone={tone} variant="caption">
|
|
7
5
|
{children}
|
|
8
6
|
</Text>);
|
|
9
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelperText.js","sourceRoot":"","sources":["../../../src/components/helper-text/HelperText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"HelperText.js","sourceRoot":"","sources":["../../../src/components/helper-text/HelperText.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAG7C,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,GAAG,OAAO,EAAE,MAAM,EAAmB;IAC9E,OAAO,CACL,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,CACjD;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import type { TextTone } from '../../internal/resolvers/resolveTextColor';
|
|
2
3
|
export interface HelperTextProps {
|
|
3
4
|
children?: React.ReactNode;
|
|
4
|
-
tone?: 'default' | 'muted' | 'danger'
|
|
5
|
+
tone?: Extract<TextTone, 'default' | 'muted' | 'danger'>;
|
|
5
6
|
testID?: string;
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/helper-text/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/helper-text/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -9,8 +9,8 @@ export interface IconButtonProps extends Omit<ButtonBaseProps, 'children' | 'sty
|
|
|
9
9
|
provider?: IconProps['provider'];
|
|
10
10
|
};
|
|
11
11
|
accessibilityLabel: string;
|
|
12
|
-
variant?:
|
|
13
|
-
tone?:
|
|
12
|
+
variant?: ButtonVariant;
|
|
13
|
+
tone?: ComponentTone;
|
|
14
14
|
size?: ControlSize;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/icon-button/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,eAAe,EACf,UAAU,GAAG,OAAO,GAAG,oBAAoB,CAC5C;IACC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,QAAQ,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;KAClC,CAAC;IACF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/icon-button/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mDAAmD,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,eAAe,EACf,UAAU,GAAG,OAAO,GAAG,oBAAoB,CAC5C;IACC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,QAAQ,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;KAClC,CAAC;IACF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../../src/components/label/Label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Label.d.ts","sourceRoot":"","sources":["../../../src/components/label/Label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wBAAgB,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAgB,EAAE,IAAgB,EAAE,MAAM,EAAE,EAAE,UAAU,qBAWzF"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Text } from '../../primitives/text';
|
|
3
|
-
import { useTheme } from '../../theme/ThemeContext';
|
|
4
3
|
export function Label({ children, required = false, tone = 'default', testID }) {
|
|
5
|
-
|
|
6
|
-
return (<Text color={tone === 'danger' ? theme.semantics.danger.base : undefined} testID={testID} tone={tone === 'danger' ? 'default' : tone} variant="label" weight="medium">
|
|
4
|
+
return (<Text testID={testID} tone={tone} variant="label" weight="medium">
|
|
7
5
|
{children}
|
|
8
|
-
{required ? (<Text
|
|
6
|
+
{required ? (<Text tone="danger" variant="label" weight="medium">
|
|
9
7
|
{' *'}
|
|
10
8
|
</Text>) : null}
|
|
11
9
|
</Text>);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Label.js","sourceRoot":"","sources":["../../../src/components/label/Label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Label.js","sourceRoot":"","sources":["../../../src/components/label/Label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAG7C,MAAM,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAE,IAAI,GAAG,SAAS,EAAE,MAAM,EAAc;IACxF,OAAO,CACL,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAC/D;MAAA,CAAC,QAAQ,CACT;MAAA,CAAC,QAAQ,CAAC,CAAC,CAAC,CACV,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CACjD;UAAA,CAAC,IAAI,CACP;QAAA,EAAE,IAAI,CAAC,CACR,CAAC,CAAC,CAAC,IAAI,CACV;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
|
+
import type { TextTone } from '../../internal/resolvers/resolveTextColor';
|
|
2
3
|
export interface LabelProps {
|
|
3
4
|
children?: React.ReactNode;
|
|
4
5
|
required?: boolean;
|
|
5
|
-
tone?: 'default' | 'muted' | 'danger'
|
|
6
|
+
tone?: Extract<TextTone, 'default' | 'muted' | 'danger'>;
|
|
6
7
|
testID?: string;
|
|
7
8
|
}
|
|
8
9
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/label/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/label/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../src/components/menu/Menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAezC,wBAAgB,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAoB,EAAE,MAAM,EAAE,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../src/components/menu/Menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAezC,wBAAgB,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAoB,EAAE,MAAM,EAAE,EAAE,SAAS,qBAwJ1F"}
|
|
@@ -84,7 +84,7 @@ export function Menu({ trigger, items, onDismiss, closeOnSelect = true, testID }
|
|
|
84
84
|
position: 'absolute',
|
|
85
85
|
top: (layout?.y ?? 0) + (layout?.height ?? 0) + animation.offset,
|
|
86
86
|
}}>
|
|
87
|
-
<Surface p="xs" style={{
|
|
87
|
+
<Surface accessibilityRole="menu" p="xs" style={{
|
|
88
88
|
minWidth: Math.max(layout?.width ?? 0, 180),
|
|
89
89
|
shadowOpacity: 0.12,
|
|
90
90
|
shadowRadius: 12,
|
|
@@ -92,7 +92,7 @@ export function Menu({ trigger, items, onDismiss, closeOnSelect = true, testID }
|
|
|
92
92
|
}} testID={testID} variant="raised">
|
|
93
93
|
{items.map((item, index) => {
|
|
94
94
|
const selected = index === activeIndex;
|
|
95
|
-
return (<Pressable accessibilityRole="menuitem" disabled={item.disabled} key={item.id} onPress={() => {
|
|
95
|
+
return (<Pressable accessibilityRole="menuitem" accessibilityState={{ disabled: item.disabled, selected }} disabled={item.disabled} key={item.id} onPress={() => {
|
|
96
96
|
if (item.disabled) {
|
|
97
97
|
return;
|
|
98
98
|
}
|
|
@@ -103,12 +103,12 @@ export function Menu({ trigger, items, onDismiss, closeOnSelect = true, testID }
|
|
|
103
103
|
}}>
|
|
104
104
|
<Box px="m" py="s" style={{
|
|
105
105
|
backgroundColor: selected
|
|
106
|
-
? theme.semantics.action.
|
|
106
|
+
? theme.semantics.action.neutral.softBg
|
|
107
107
|
: 'transparent',
|
|
108
108
|
opacity: item.disabled ? 0.56 : 1,
|
|
109
|
-
}}>
|
|
109
|
+
}} testID={testID ? `${testID}-item-${item.id}` : undefined}>
|
|
110
110
|
<Text color={selected
|
|
111
|
-
? theme.semantics.action.
|
|
111
|
+
? theme.semantics.action.neutral.base
|
|
112
112
|
: theme.semantics.content.default} variant="bodySmall">
|
|
113
113
|
{item.label}
|
|
114
114
|
</Text>
|